From 67eb68d26a43ce65ba8d7ff698a88b45ee84db4c Mon Sep 17 00:00:00 2001 From: Bart Date: Sun, 1 Oct 2023 12:33:41 +0200 Subject: [PATCH 001/100] add initial interfaces, init turborepo --- package.json | 40 +- packages/api/package.json | 17 + packages/api/src/capabilities.ts | 15 + packages/api/src/index.ts | 2 + packages/api/src/resources.ts | 125 + packages/api/tsconfig.json | 3 + packages/config/package.json | 8 + packages/config/tsconfig.json | 25 + turbo.json | 19 + yarn.lock | 18459 +---------------------------- 10 files changed, 620 insertions(+), 18093 deletions(-) create mode 100644 packages/api/package.json create mode 100644 packages/api/src/capabilities.ts create mode 100644 packages/api/src/index.ts create mode 100644 packages/api/src/resources.ts create mode 100644 packages/api/tsconfig.json create mode 100644 packages/config/package.json create mode 100644 packages/config/tsconfig.json create mode 100644 turbo.json diff --git a/package.json b/package.json index 71c4dadc3..23b90ce82 100644 --- a/package.json +++ b/package.json @@ -2,25 +2,15 @@ "name": "flowser", "private": true, "description": "Easily inspect and debug Flow blockchain ⛓", - "main": "index.js", "directories": { "doc": "docs" }, "scripts": { - "start:desktop:prod:macos-arm": "yarn run build:desktop && ./app/release/build/mac-arm64/Flowser.app/Contents/MacOS/Flowser", - "start:desktop": "lerna run build --scope @flowser/backend && cd frontend && yarn run electron:serve", - "build:desktop": "yarn run build && cd app/scripts && node setup.js && sh build.sh", - "build:desktop:win": "yarn run build:desktop win", - "build:desktop:mac": "yarn run build:desktop mac", - "build:desktop:linux": "yarn run build:desktop linux", - "build:desktop:all": "yarn run build:desktop all", - "start": "lerna run start --parallel", - "cleanup": "lerna run cleanup --parallel && rm -rf node_modules app/node_modules app/build app/release flowdb", - "build": "lerna run build --scope @flowser/backend --scope @flowser/shared && lerna run build --scope @flowser/frontend", - "bootstrap": "yarn install && yarn run lerna:bootstrap && husky install", - "lerna:bootstrap": "lerna bootstrap", - "build:libs": " npx lerna run build --scope @flowser/types --scope @flowser/frontend", - "format-all": "npx prettier --write \"{backend,frontend}/src/**/*.{ts,tsx,js}\"" + "build": "turbo run build", + "dev": "turbo run dev --parallel", + "compile": "turbo run compile", + "lint": "turbo run lint", + "format": "prettier --write \"**/*.{ts,tsx,md}\"" }, "repository": { "type": "git", @@ -40,14 +30,16 @@ "homepage": "https://github.com/onflowser/flowser#readme", "devDependencies": { "husky": "^8.0.1", - "lerna": "^4.0.0", - "lint-staged": "^12.4.2" + "lint-staged": "^12.4.2", + "prettier": "^2.5.1", + "turbo": "1.10.4" }, - "workspaces": { - "packages": [ - "./backend", - "./frontend", - "./shared" - ] - } + "engines": { + "npm": ">=7.0.0", + "node": ">=14.0.0" + }, + "packageManager": "npm@8.5.5", + "workspaces": [ + "packages/*" + ] } diff --git a/packages/api/package.json b/packages/api/package.json new file mode 100644 index 000000000..a7c06baf2 --- /dev/null +++ b/packages/api/package.json @@ -0,0 +1,17 @@ +{ + "name": "api", + "version": "1.0.0", + "description": "", + "main": "./src/index.ts", + "types": "./src/index.ts", + "scripts": {}, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "config": "*" + }, + "devDependencies": { + "typescript": "^4.3.5" + } +} diff --git a/packages/api/src/capabilities.ts b/packages/api/src/capabilities.ts new file mode 100644 index 000000000..19169d2c5 --- /dev/null +++ b/packages/api/src/capabilities.ts @@ -0,0 +1,15 @@ +export interface IResourceIndexReader { + fetchAll(): Promise; + search(): Promise; +} + +export interface IResourceIndexWriter { + add(resource: Resource): Promise; + update(resource: Resource): Promise; + delete(resource: Resource): Promise; +} + +// TODO: Consider defining resource-specific interfaces for fetchers +export interface IResourceFetcher { + fetchById(id: string): Promise; +} diff --git a/packages/api/src/index.ts b/packages/api/src/index.ts new file mode 100644 index 000000000..dadbfa5bf --- /dev/null +++ b/packages/api/src/index.ts @@ -0,0 +1,2 @@ +export * from "./capabilities"; +export * from "./resources"; diff --git a/packages/api/src/resources.ts b/packages/api/src/resources.ts new file mode 100644 index 000000000..75266490a --- /dev/null +++ b/packages/api/src/resources.ts @@ -0,0 +1,125 @@ +import { + CollectionGuarantee, + HashAlgorithm, + SignatureAlgorithm, +} from "@flowser/shared"; + +export interface PollingResource { + createdAt: Date; + updatedAt: Date; + deletedAt: Date | undefined; +} + +export interface IdentifiableResource { + id: string; +} + +export interface BlockScopedResource { + blockId: string; +} + +export interface FlowAccount { + address: string; + blockId: string; + balance: number; + code: string; + isDefaultAccount: boolean; +} + +export interface FlowAccountKey { + index: number; + accountAddress: string; + blockId: string; + publicKey: string; + privateKey: string; + signAlgo: SignatureAlgorithm; + hashAlgo: HashAlgorithm; + weight: number; + sequenceNumber: number; + revoked: boolean; +} + +export interface FlowContract { + address: string; + name: string; + blockId: string; + code: string; +} + +export interface FlowAccountCapability { + address: string; + path: string; + type: unknown; + targetPath: string; +} + +export interface FlowAccountStorage { + address: string; + path: string; + type: unknown; +} + +export interface FlowBlock { + blockId: string; + parentId: string; + blockHeight: number; + timestamp: Date; + collectionGuarantees: CollectionGuarantee[]; + blockSeals: any[]; + signatures: string[]; +} + +export interface FlowTransaction { + transactionId: string; + blockId: string; + eventIndex: number; + type: string; + transactionIndex: number; + data: object; +} + +export interface FlowStateSnapshot { + id: string; + description: string; + blockId: string; + projectId: string; +} + +export interface ManagedProcess { + id: string; + name: string; + command: CommandOptions | undefined; + state: ManagedProcessState; + output: ManagedProcessOutput[]; + createdAt: string; + updatedAt: string; +} + +export enum ManagedProcessState { + MANAGED_PROCESS_STATE_UNSPECIFIED = 0, + MANAGED_PROCESS_STATE_NOT_RUNNING = 1, + MANAGED_PROCESS_STATE_RUNNING = 2, + MANAGED_PROCESS_STATE_ERROR = 3, + UNRECOGNIZED = -1, +} + +export interface CommandOptions { + name: string; + args: string[]; +} + +export interface ManagedProcessOutput { + id: string; + processId: string; + data: string; + source: ProcessOutputSource; + createdAt: string; + updatedAt: string; +} + +export enum ProcessOutputSource { + OUTPUT_SOURCE_UNSPECIFIED = 0, + OUTPUT_SOURCE_STDOUT = 1, + OUTPUT_SOURCE_STDERR = 2, + UNRECOGNIZED = -1, +} diff --git a/packages/api/tsconfig.json b/packages/api/tsconfig.json new file mode 100644 index 000000000..65e818d95 --- /dev/null +++ b/packages/api/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "config/tsconfig.json" +} diff --git a/packages/config/package.json b/packages/config/package.json new file mode 100644 index 000000000..e4689f351 --- /dev/null +++ b/packages/config/package.json @@ -0,0 +1,8 @@ +{ + "name": "config", + "version": "0.0.0", + "private": true, + "files": [ + "tsconfig.json" + ] +} diff --git a/packages/config/tsconfig.json b/packages/config/tsconfig.json new file mode 100644 index 000000000..39d8145ab --- /dev/null +++ b/packages/config/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "strict": true, + "module": "commonjs", + "declaration": true, + "removeComments": true, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "allowSyntheticDefaultImports": true, + "target": "es2017", + "types": ["node", "jest"], + "sourceMap": true, + "outDir": "./dist", + "baseUrl": "./", + "incremental": true, + "skipLibCheck": true, + "strictNullChecks": true, + "noImplicitAny": true, + "strictBindCallApply": true, + "forceConsistentCasingInFileNames": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src"], + "exclude": ["dist", "build", "node_modules"] +} diff --git a/turbo.json b/turbo.json new file mode 100644 index 000000000..53211c8a6 --- /dev/null +++ b/turbo.json @@ -0,0 +1,19 @@ +{ + "npmClient": "npm", + "pipeline": { + "build": { + "dependsOn": ["^build"], + "outputs": ["dist/**", ".next/**"] + }, + "compile": { + "dependsOn": ["^build", "^compile"], + "outputs": ["dist/**", ".next/**"] + }, + "lint": { + "outputs": [] + }, + "dev": { + "cache": false + } + } +} diff --git a/yarn.lock b/yarn.lock index 2cc5454ec..4629650de 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,17941 +2,511 @@ # yarn lockfile v1 -"@aashutoshrathi/word-wrap@^1.2.3": - "integrity" "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==" - "resolved" "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz" - "version" "1.2.6" - -"@alloc/quick-lru@^5.2.0": - "integrity" "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==" - "resolved" "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz" - "version" "5.2.0" - -"@ampproject/remapping@^2.1.0": - "integrity" "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==" - "resolved" "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz" - "version" "2.2.0" - dependencies: - "@jridgewell/gen-mapping" "^0.1.0" - "@jridgewell/trace-mapping" "^0.3.9" - -"@angular-devkit/core@13.3.5": - "integrity" "sha512-w7vzK4VoYP9rLgxJ2SwEfrkpKybdD+QgQZlsDBzT0C6Ebp7b4gkNcNVFo8EiZvfDl6Yplw2IAP7g7fs3STn0hQ==" - "resolved" "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.5.tgz" - "version" "13.3.5" - 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" - -"@angular-devkit/core@13.3.6": - "integrity" "sha512-ZmD586B+RnM2CG5+jbXh2NVfIydTc/yKSjppYDDOv4I530YBm6vpfZMwClpiNk6XLbMv7KqX4Tlr4wfxlPYYbA==" - "resolved" "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.6.tgz" - "version" "13.3.6" - 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" - -"@angular-devkit/schematics-cli@13.3.6": - "integrity" "sha512-5tTuu9gbXM0bMk0sin4phmWA3U1Qz53zT/rpEfzQ/+c/s8CoqZ5N1qOnYtemRct3Jxsz1kn4TBpHeriR4r5hHg==" - "resolved" "https://registry.npmjs.org/@angular-devkit/schematics-cli/-/schematics-cli-13.3.6.tgz" - "version" "13.3.6" - dependencies: - "@angular-devkit/core" "13.3.6" - "@angular-devkit/schematics" "13.3.6" - "ansi-colors" "4.1.1" - "inquirer" "8.2.0" - "minimist" "1.2.6" - "symbol-observable" "4.0.0" - -"@angular-devkit/schematics@13.3.5": - "integrity" "sha512-0N/kL/Vfx0yVAEwa3HYxNx9wYb+G9r1JrLjJQQzDp+z9LtcojNf7j3oey6NXrDUs1WjVZOa/AIdRl3/DuaoG5w==" - "resolved" "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.3.5.tgz" - "version" "13.3.5" - dependencies: - "@angular-devkit/core" "13.3.5" - "jsonc-parser" "3.0.0" - "magic-string" "0.25.7" - "ora" "5.4.1" - "rxjs" "6.6.7" - -"@angular-devkit/schematics@13.3.6": - "integrity" "sha512-yLh5xc92C/FiaAp27coPiKWpSUmwoXF7vMxbJYJTyOXlt0mUITAEAwtrZQNr4yAxW/yvgTdyg7PhXaveQNTUuQ==" - "resolved" "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.3.6.tgz" - "version" "13.3.6" - dependencies: - "@angular-devkit/core" "13.3.6" - "jsonc-parser" "3.0.0" - "magic-string" "0.25.7" - "ora" "5.4.1" - "rxjs" "6.6.7" - -"@apideck/better-ajv-errors@^0.3.1": - "integrity" "sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==" - "resolved" "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz" - "version" "0.3.6" - dependencies: - "json-schema" "^0.4.0" - "jsonpointer" "^5.0.0" - "leven" "^3.1.0" - -"@babel/code-frame@^7.0.0": - "integrity" "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==" - "resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz" - "version" "7.16.0" - dependencies: - "@babel/highlight" "^7.16.0" - -"@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.8.3": - "integrity" "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==" - "resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/highlight" "^7.18.6" - -"@babel/code-frame@7.12.11": - "integrity" "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==" - "resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz" - "version" "7.12.11" - dependencies: - "@babel/highlight" "^7.10.4" - -"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.18.8": - "integrity" "sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==" - "resolved" "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.8.tgz" - "version" "7.18.8" - -"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.1.0", "@babel/core@^7.11.0", "@babel/core@^7.11.1", "@babel/core@^7.12.0", "@babel/core@^7.12.3", "@babel/core@^7.13.0", "@babel/core@^7.16.0", "@babel/core@^7.4.0-0", "@babel/core@^7.7.2", "@babel/core@^7.8.0", "@babel/core@>=7.0.0-beta.0 <8": - "integrity" "sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw==" - "resolved" "https://registry.npmjs.org/@babel/core/-/core-7.18.10.tgz" - "version" "7.18.10" - dependencies: - "@ampproject/remapping" "^2.1.0" - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.18.10" - "@babel/helper-compilation-targets" "^7.18.9" - "@babel/helper-module-transforms" "^7.18.9" - "@babel/helpers" "^7.18.9" - "@babel/parser" "^7.18.10" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.18.10" - "@babel/types" "^7.18.10" - "convert-source-map" "^1.7.0" - "debug" "^4.1.0" - "gensync" "^1.0.0-beta.2" - "json5" "^2.2.1" - "semver" "^6.3.0" - -"@babel/eslint-parser@^7.16.3": - "integrity" "sha512-yc8OOBIQk1EcRrpizuARSQS0TWAcOMpEJ1aafhNznaeYkeL+OhqnDObGFylB8ka8VFF/sZc+S4RzHyO+3LjQxg==" - "resolved" "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.22.15.tgz" - "version" "7.22.15" - dependencies: - "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" - "eslint-visitor-keys" "^2.1.0" - "semver" "^6.3.1" - -"@babel/generator@^7.18.10", "@babel/generator@^7.7.2": - "integrity" "sha512-0+sW7e3HjQbiHbj1NeU/vN8ornohYlacAfZIaXhdoGweQqgcNy69COVciYYqEXJ/v+9OBA7Frxm4CVAuNqKeNA==" - "resolved" "https://registry.npmjs.org/@babel/generator/-/generator-7.18.10.tgz" - "version" "7.18.10" - dependencies: - "@babel/types" "^7.18.10" - "@jridgewell/gen-mapping" "^0.3.2" - "jsesc" "^2.5.1" - -"@babel/helper-annotate-as-pure@^7.18.6": - "integrity" "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==" - "resolved" "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6": - "integrity" "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==" - "resolved" "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-explode-assignable-expression" "^7.18.6" - "@babel/types" "^7.18.9" - -"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9": - "integrity" "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==" - "resolved" "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/compat-data" "^7.18.8" - "@babel/helper-validator-option" "^7.18.6" - "browserslist" "^4.20.2" - "semver" "^6.3.0" - -"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.18.9": - "integrity" "sha512-WvypNAYaVh23QcjpMR24CwZY2Nz6hqdOcFdPbNpV56hL5H6KiFheO7Xm1aPdlLQ7d5emYZX7VZwPp9x3z+2opw==" - "resolved" "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.18.9" - "@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" - -"@babel/helper-create-regexp-features-plugin@^7.18.6": - "integrity" "sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A==" - "resolved" "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "regexpu-core" "^5.1.0" - -"@babel/helper-define-polyfill-provider@^0.3.2": - "integrity" "sha512-r9QJJ+uDWrd+94BSPcP6/de67ygLtvVy6cK4luE6MOuDsZIdoaPBnfSpbO/+LTifjPckbKXRuI9BB/Z2/y3iTg==" - "resolved" "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.2.tgz" - "version" "0.3.2" - 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" - -"@babel/helper-environment-visitor@^7.18.9": - "integrity" "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==" - "resolved" "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz" - "version" "7.18.9" - -"@babel/helper-explode-assignable-expression@^7.18.6": - "integrity" "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==" - "resolved" "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-function-name@^7.18.9": - "integrity" "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==" - "resolved" "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/template" "^7.18.6" - "@babel/types" "^7.18.9" - -"@babel/helper-hoist-variables@^7.18.6": - "integrity" "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==" - "resolved" "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-member-expression-to-functions@^7.18.9": - "integrity" "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==" - "resolved" "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/types" "^7.18.9" - -"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.18.6": - "integrity" "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==" - "resolved" "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.18.9": - "integrity" "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==" - "resolved" "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz" - "version" "7.18.9" - 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.6" - "@babel/traverse" "^7.18.9" - "@babel/types" "^7.18.9" - -"@babel/helper-optimise-call-expression@^7.18.6": - "integrity" "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==" - "resolved" "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - "integrity" "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==" - "resolved" "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz" - "version" "7.18.9" - -"@babel/helper-remap-async-to-generator@^7.18.6", "@babel/helper-remap-async-to-generator@^7.18.9": - "integrity" "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==" - "resolved" "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz" - "version" "7.18.9" - 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" - -"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.18.9": - "integrity" "sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ==" - "resolved" "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz" - "version" "7.18.9" - 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.18.9" - "@babel/types" "^7.18.9" - -"@babel/helper-simple-access@^7.18.6": - "integrity" "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==" - "resolved" "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-skip-transparent-expression-wrappers@^7.18.9": - "integrity" "sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==" - "resolved" "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/types" "^7.18.9" - -"@babel/helper-split-export-declaration@^7.18.6": - "integrity" "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==" - "resolved" "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-string-parser@^7.18.10": - "integrity" "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==" - "resolved" "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz" - "version" "7.18.10" - -"@babel/helper-validator-identifier@^7.15.7": - "integrity" "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==" - "resolved" "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz" - "version" "7.15.7" - -"@babel/helper-validator-identifier@^7.18.6": - "integrity" "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==" - "resolved" "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz" - "version" "7.18.6" - -"@babel/helper-validator-option@^7.18.6": - "integrity" "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==" - "resolved" "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz" - "version" "7.18.6" - -"@babel/helper-wrap-function@^7.18.9": - "integrity" "sha512-95NLBP59VWdfK2lyLKe6eTMq9xg+yWKzxzxbJ1wcYNi1Auz200+83fMDADjRxBvc2QQor5zja2yTQzXGhk2GtQ==" - "resolved" "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.18.10.tgz" - "version" "7.18.10" - dependencies: - "@babel/helper-function-name" "^7.18.9" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.18.10" - "@babel/types" "^7.18.10" - -"@babel/helpers@^7.18.9": - "integrity" "sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==" - "resolved" "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/template" "^7.18.6" - "@babel/traverse" "^7.18.9" - "@babel/types" "^7.18.9" - -"@babel/highlight@^7.10.4", "@babel/highlight@^7.18.6": - "integrity" "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==" - "resolved" "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-validator-identifier" "^7.18.6" - "chalk" "^2.0.0" - "js-tokens" "^4.0.0" - -"@babel/highlight@^7.16.0": - "integrity" "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==" - "resolved" "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz" - "version" "7.16.0" - dependencies: - "@babel/helper-validator-identifier" "^7.15.7" - "chalk" "^2.0.0" - "js-tokens" "^4.0.0" - -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.10": - "integrity" "sha512-TYk3OA0HKL6qNryUayb5UUEhM/rkOQozIBEA5ITXh5DWrSp0TlUQXMyZmnWxG/DizSWBeeQ0Zbc5z8UGaaqoeg==" - "resolved" "https://registry.npmjs.org/@babel/parser/-/parser-7.18.10.tgz" - "version" "7.18.10" - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": - "integrity" "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==" - "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" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.9": - "integrity" "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==" - "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" - "version" "7.18.9" - 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" - -"@babel/plugin-proposal-async-generator-functions@^7.18.10": - "integrity" "sha512-1mFuY2TOsR1hxbjCo4QL+qlIjV07p4H4EUYw2J/WCqsvFV6V9X9z9YhXbWndc/4fw+hYGlDT7egYxliMp5O6Ew==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.10.tgz" - "version" "7.18.10" - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-remap-async-to-generator" "^7.18.9" - "@babel/plugin-syntax-async-generators" "^7.8.4" - -"@babel/plugin-proposal-class-properties@^7.16.0", "@babel/plugin-proposal-class-properties@^7.18.6": - "integrity" "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-proposal-class-static-block@^7.18.6": - "integrity" "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz" - "version" "7.18.6" - 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" - -"@babel/plugin-proposal-decorators@^7.16.4": - "integrity" "sha512-wdGTwWF5QtpTY/gbBtQLAiCnoxfD4qMbN87NYZle1dOZ9Os8Y6zXcKrIaOU8W+TIvFUWVGG9tUgNww3CjXRVVw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.18.10.tgz" - "version" "7.18.10" - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-replace-supers" "^7.18.9" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/plugin-syntax-decorators" "^7.18.6" - -"@babel/plugin-proposal-dynamic-import@^7.18.6": - "integrity" "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - -"@babel/plugin-proposal-export-namespace-from@^7.18.9": - "integrity" "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - -"@babel/plugin-proposal-json-strings@^7.18.6": - "integrity" "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-json-strings" "^7.8.3" - -"@babel/plugin-proposal-logical-assignment-operators@^7.18.9": - "integrity" "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - -"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.0", "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": - "integrity" "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - -"@babel/plugin-proposal-numeric-separator@^7.16.0", "@babel/plugin-proposal-numeric-separator@^7.18.6": - "integrity" "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - -"@babel/plugin-proposal-object-rest-spread@^7.18.9": - "integrity" "sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/compat-data" "^7.18.8" - "@babel/helper-compilation-targets" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.18.8" - -"@babel/plugin-proposal-optional-catch-binding@^7.18.6": - "integrity" "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - -"@babel/plugin-proposal-optional-chaining@^7.16.0", "@babel/plugin-proposal-optional-chaining@^7.18.9": - "integrity" "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz" - "version" "7.18.9" - 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" - -"@babel/plugin-proposal-private-methods@^7.16.0", "@babel/plugin-proposal-private-methods@^7.18.6": - "integrity" "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-proposal-private-property-in-object@^7.18.6": - "integrity" "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - -"@babel/plugin-proposal-unicode-property-regex@^7.18.6", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - "integrity" "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-syntax-async-generators@^7.8.4": - "integrity" "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" - "version" "7.8.4" - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-bigint@^7.8.3": - "integrity" "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz" - "version" "7.8.3" - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": - "integrity" "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz" - "version" "7.12.13" - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-class-static-block@^7.14.5": - "integrity" "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz" - "version" "7.14.5" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-decorators@^7.18.6": - "integrity" "sha512-fqyLgjcxf/1yhyZ6A+yo1u9gJ7eleFQod2lkaUsF9DQ7sbbY3Ligym3L0+I2c0WmqNKDpoD9UTb1AKP3qRMOAQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-syntax-dynamic-import@^7.8.3": - "integrity" "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz" - "version" "7.8.3" - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-export-namespace-from@^7.8.3": - "integrity" "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz" - "version" "7.8.3" - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-flow@^7.14.5", "@babel/plugin-syntax-flow@^7.18.6": - "integrity" "sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-syntax-import-assertions@^7.18.6": - "integrity" "sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-syntax-import-meta@^7.8.3": - "integrity" "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz" - "version" "7.10.4" - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-json-strings@^7.8.3": - "integrity" "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz" - "version" "7.8.3" - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-jsx@^7.18.6": - "integrity" "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": - "integrity" "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" - "version" "7.10.4" - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - "integrity" "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" - "version" "7.8.3" - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": - "integrity" "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz" - "version" "7.10.4" - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-object-rest-spread@^7.8.3": - "integrity" "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz" - "version" "7.8.3" - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - "integrity" "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz" - "version" "7.8.3" - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.3": - "integrity" "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" - "version" "7.8.3" - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-private-property-in-object@^7.14.5": - "integrity" "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz" - "version" "7.14.5" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": - "integrity" "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz" - "version" "7.14.5" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-typescript@^7.18.6", "@babel/plugin-syntax-typescript@^7.7.2": - "integrity" "sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-arrow-functions@^7.18.6": - "integrity" "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-async-to-generator@^7.18.6": - "integrity" "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-remap-async-to-generator" "^7.18.6" - -"@babel/plugin-transform-block-scoped-functions@^7.18.6": - "integrity" "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-block-scoping@^7.18.9": - "integrity" "sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-classes@^7.18.9": - "integrity" "sha512-EkRQxsxoytpTlKJmSPYrsOMjCILacAjtSVkd4gChEe2kXjFCun3yohhW5I7plXJhCemM0gKsaGMcO8tinvCA5g==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.18.9" - "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-replace-supers" "^7.18.9" - "@babel/helper-split-export-declaration" "^7.18.6" - "globals" "^11.1.0" - -"@babel/plugin-transform-computed-properties@^7.18.9": - "integrity" "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-destructuring@^7.18.9": - "integrity" "sha512-p5VCYNddPLkZTq4XymQIaIfZNJwT9YsjkPOhkVEqt6QIpQFZVM9IltqqYpOEkJoN1DPznmxUDyZ5CTZs/ZCuHA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.4.4": - "integrity" "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-duplicate-keys@^7.18.9": - "integrity" "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-exponentiation-operator@^7.18.6": - "integrity" "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-flow-strip-types@^7.16.0": - "integrity" "sha512-+G6rp2zRuOAInY5wcggsx4+QVao1qPM0osC9fTUVlAV3zOrzTCnrMAFVnR6+a3T8wz1wFIH7KhYMcMB3u1n80A==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-syntax-flow" "^7.18.6" - -"@babel/plugin-transform-for-of@^7.18.8": - "integrity" "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz" - "version" "7.18.8" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-function-name@^7.18.9": - "integrity" "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@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@^7.18.9": - "integrity" "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-member-expression-literals@^7.18.6": - "integrity" "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-modules-amd@^7.18.6": - "integrity" "sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@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@^7.18.6": - "integrity" "sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz" - "version" "7.18.6" - 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" - -"@babel/plugin-transform-modules-systemjs@^7.18.9": - "integrity" "sha512-zY/VSIbbqtoRoJKo2cDTewL364jSlZGvn0LKOf9ntbfxOvjfmyrdtEEOAdswOswhZEb8UH3jDkCKHd1sPgsS0A==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-module-transforms" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-validator-identifier" "^7.18.6" - "babel-plugin-dynamic-import-node" "^2.3.3" - -"@babel/plugin-transform-modules-umd@^7.18.6": - "integrity" "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-module-transforms" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.18.6": - "integrity" "sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-new-target@^7.18.6": - "integrity" "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-object-super@^7.18.6": - "integrity" "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-replace-supers" "^7.18.6" - -"@babel/plugin-transform-parameters@^7.18.8": - "integrity" "sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz" - "version" "7.18.8" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-property-literals@^7.18.6": - "integrity" "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-react-constant-elements@^7.12.1": - "integrity" "sha512-IrTYh1I3YCEL1trjknnlLKTp5JggjzhKl/d3ibzPc97JhpFcDTr38Jdek/oX4cFbS6By0bXJcOkpRvJ5ZHK2wQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-react-display-name@^7.16.0", "@babel/plugin-transform-react-display-name@^7.18.6": - "integrity" "sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-react-jsx-development@^7.18.6": - "integrity" "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/plugin-transform-react-jsx" "^7.18.6" - -"@babel/plugin-transform-react-jsx@^7.14.9", "@babel/plugin-transform-react-jsx@^7.18.6": - "integrity" "sha512-gCy7Iikrpu3IZjYZolFE4M1Sm+nrh1/6za2Ewj77Z+XirT4TsbJcvOFOyF+fRPwU6AKKK136CZxx6L8AbSFG6A==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.18.10.tgz" - "version" "7.18.10" - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-syntax-jsx" "^7.18.6" - "@babel/types" "^7.18.10" - -"@babel/plugin-transform-react-pure-annotations@^7.18.6": - "integrity" "sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-regenerator@^7.18.6": - "integrity" "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "regenerator-transform" "^0.15.0" - -"@babel/plugin-transform-reserved-words@^7.18.6": - "integrity" "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-runtime@^7.16.4": - "integrity" "sha512-q5mMeYAdfEbpBAgzl7tBre/la3LeCxmDO1+wMXRdPWbcoMjR3GiXlCLk7JBZVVye0bqTGNMbt0yYVXX1B1jEWQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.10.tgz" - "version" "7.18.10" - dependencies: - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.9" - "babel-plugin-polyfill-corejs2" "^0.3.2" - "babel-plugin-polyfill-corejs3" "^0.5.3" - "babel-plugin-polyfill-regenerator" "^0.4.0" - "semver" "^6.3.0" - -"@babel/plugin-transform-shorthand-properties@^7.18.6": - "integrity" "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-spread@^7.18.9": - "integrity" "sha512-39Q814wyoOPtIB/qGopNIL9xDChOE1pNU0ZY5dO0owhiVt/5kFm4li+/bBtwc7QotG0u5EPzqhZdjMtmqBqyQA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" - -"@babel/plugin-transform-sticky-regex@^7.18.6": - "integrity" "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-template-literals@^7.18.9": - "integrity" "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-typeof-symbol@^7.18.9": - "integrity" "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-typescript@^7.18.6": - "integrity" "sha512-j2HQCJuMbi88QftIb5zlRu3c7PU+sXNnscqsrjqegoGiCgXR569pEdben9vly5QHKL2ilYkfnSwu64zsZo/VYQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.18.10.tgz" - "version" "7.18.10" - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-syntax-typescript" "^7.18.6" - -"@babel/plugin-transform-unicode-escapes@^7.18.10": - "integrity" "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz" - "version" "7.18.10" - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-unicode-regex@^7.18.6": - "integrity" "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/preset-env@^7.11.0", "@babel/preset-env@^7.12.1", "@babel/preset-env@^7.16.4": - "integrity" "sha512-wVxs1yjFdW3Z/XkNfXKoblxoHgbtUF7/l3PvvP4m02Qz9TZ6uZGxRVYjSQeR87oQmHco9zWitW5J82DJ7sCjvA==" - "resolved" "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.10.tgz" - "version" "7.18.10" - dependencies: - "@babel/compat-data" "^7.18.8" - "@babel/helper-compilation-targets" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-validator-option" "^7.18.6" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.9" - "@babel/plugin-proposal-async-generator-functions" "^7.18.10" - "@babel/plugin-proposal-class-properties" "^7.18.6" - "@babel/plugin-proposal-class-static-block" "^7.18.6" - "@babel/plugin-proposal-dynamic-import" "^7.18.6" - "@babel/plugin-proposal-export-namespace-from" "^7.18.9" - "@babel/plugin-proposal-json-strings" "^7.18.6" - "@babel/plugin-proposal-logical-assignment-operators" "^7.18.9" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6" - "@babel/plugin-proposal-numeric-separator" "^7.18.6" - "@babel/plugin-proposal-object-rest-spread" "^7.18.9" - "@babel/plugin-proposal-optional-catch-binding" "^7.18.6" - "@babel/plugin-proposal-optional-chaining" "^7.18.9" - "@babel/plugin-proposal-private-methods" "^7.18.6" - "@babel/plugin-proposal-private-property-in-object" "^7.18.6" - "@babel/plugin-proposal-unicode-property-regex" "^7.18.6" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-import-assertions" "^7.18.6" - "@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.18.6" - "@babel/plugin-transform-async-to-generator" "^7.18.6" - "@babel/plugin-transform-block-scoped-functions" "^7.18.6" - "@babel/plugin-transform-block-scoping" "^7.18.9" - "@babel/plugin-transform-classes" "^7.18.9" - "@babel/plugin-transform-computed-properties" "^7.18.9" - "@babel/plugin-transform-destructuring" "^7.18.9" - "@babel/plugin-transform-dotall-regex" "^7.18.6" - "@babel/plugin-transform-duplicate-keys" "^7.18.9" - "@babel/plugin-transform-exponentiation-operator" "^7.18.6" - "@babel/plugin-transform-for-of" "^7.18.8" - "@babel/plugin-transform-function-name" "^7.18.9" - "@babel/plugin-transform-literals" "^7.18.9" - "@babel/plugin-transform-member-expression-literals" "^7.18.6" - "@babel/plugin-transform-modules-amd" "^7.18.6" - "@babel/plugin-transform-modules-commonjs" "^7.18.6" - "@babel/plugin-transform-modules-systemjs" "^7.18.9" - "@babel/plugin-transform-modules-umd" "^7.18.6" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.18.6" - "@babel/plugin-transform-new-target" "^7.18.6" - "@babel/plugin-transform-object-super" "^7.18.6" - "@babel/plugin-transform-parameters" "^7.18.8" - "@babel/plugin-transform-property-literals" "^7.18.6" - "@babel/plugin-transform-regenerator" "^7.18.6" - "@babel/plugin-transform-reserved-words" "^7.18.6" - "@babel/plugin-transform-shorthand-properties" "^7.18.6" - "@babel/plugin-transform-spread" "^7.18.9" - "@babel/plugin-transform-sticky-regex" "^7.18.6" - "@babel/plugin-transform-template-literals" "^7.18.9" - "@babel/plugin-transform-typeof-symbol" "^7.18.9" - "@babel/plugin-transform-unicode-escapes" "^7.18.10" - "@babel/plugin-transform-unicode-regex" "^7.18.6" - "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.18.10" - "babel-plugin-polyfill-corejs2" "^0.3.2" - "babel-plugin-polyfill-corejs3" "^0.5.3" - "babel-plugin-polyfill-regenerator" "^0.4.0" - "core-js-compat" "^3.22.1" - "semver" "^6.3.0" - -"@babel/preset-modules@^0.1.5": - "integrity" "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==" - "resolved" "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz" - "version" "0.1.5" - 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" - -"@babel/preset-react@^7.12.5", "@babel/preset-react@^7.16.0": - "integrity" "sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==" - "resolved" "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-validator-option" "^7.18.6" - "@babel/plugin-transform-react-display-name" "^7.18.6" - "@babel/plugin-transform-react-jsx" "^7.18.6" - "@babel/plugin-transform-react-jsx-development" "^7.18.6" - "@babel/plugin-transform-react-pure-annotations" "^7.18.6" - -"@babel/preset-typescript@^7.16.0": - "integrity" "sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==" - "resolved" "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-validator-option" "^7.18.6" - "@babel/plugin-transform-typescript" "^7.18.6" - -"@babel/runtime-corejs3@^7.10.2": - "integrity" "sha512-qZEWeccZCrHA2Au4/X05QW5CMdm4VjUDCrGq5gf1ZDcM4hRqreKrtwAn7yci9zfgAS9apvnsFXiGBHBAxZdK9A==" - "resolved" "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "core-js-pure" "^3.20.2" - "regenerator-runtime" "^0.13.4" - -"@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.6", "@babel/runtime@^7.20.7", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": - "integrity" "sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==" - "resolved" "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.15.tgz" - "version" "7.22.15" - dependencies: - "regenerator-runtime" "^0.14.0" - -"@babel/template@^7.18.10", "@babel/template@^7.18.6", "@babel/template@^7.3.3": - "integrity" "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==" - "resolved" "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz" - "version" "7.18.10" - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/parser" "^7.18.10" - "@babel/types" "^7.18.10" - -"@babel/traverse@^7.18.10", "@babel/traverse@^7.18.9", "@babel/traverse@^7.7.2": - "integrity" "sha512-J7ycxg0/K9XCtLyHf0cz2DqDihonJeIo+z+HEdRe9YuT8TY4A66i+Ab2/xZCEW7Ro60bPCBBfqqboHSamoV3+g==" - "resolved" "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.10.tgz" - "version" "7.18.10" - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.18.10" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.18.9" - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.18.10" - "@babel/types" "^7.18.10" - "debug" "^4.1.0" - "globals" "^11.1.0" - -"@babel/types@^7.0.0", "@babel/types@^7.12.6", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - "integrity" "sha512-MJvnbEiiNkpjo+LknnmRrqbY1GPUUggjv+wQVjetM/AONoupqRALB7I6jGqNUAZsKcRIEu2J6FRFvsczljjsaQ==" - "resolved" "https://registry.npmjs.org/@babel/types/-/types-7.18.10.tgz" - "version" "7.18.10" - dependencies: - "@babel/helper-string-parser" "^7.18.10" - "@babel/helper-validator-identifier" "^7.18.6" - "to-fast-properties" "^2.0.0" - -"@bcoe/v8-coverage@^0.2.3": - "integrity" "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==" - "resolved" "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz" - "version" "0.2.3" - -"@codemirror/autocomplete@^6.0.0": - "integrity" "sha512-4jEvh3AjJZTDKazd10J6ZsCIqaYxDMCeua5ouQxY8hlFIml+nr7le0SgBhT3SIytFBmdzPK3AUhXGuW3T79nVg==" - "resolved" "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.3.0.tgz" - "version" "6.3.0" - dependencies: - "@codemirror/language" "^6.0.0" - "@codemirror/state" "^6.0.0" - "@codemirror/view" "^6.0.0" - "@lezer/common" "^1.0.0" - -"@codemirror/commands@^6.0.0", "@codemirror/commands@^6.1.0": - "integrity" "sha512-sO3jdX1s0pam6lIdeSJLMN3DQ6mPEbM4yLvyKkdqtmd/UDwhXA5+AwFJ89rRXm6vTeOXBsE5cAmlos/t7MJdgg==" - "resolved" "https://registry.npmjs.org/@codemirror/commands/-/commands-6.1.2.tgz" - "version" "6.1.2" - dependencies: - "@codemirror/language" "^6.0.0" - "@codemirror/state" "^6.0.0" - "@codemirror/view" "^6.0.0" - "@lezer/common" "^1.0.0" - -"@codemirror/language@^6.0.0": - "integrity" "sha512-MC3svxuvIj0MRpFlGHxLS6vPyIdbTr2KKPEW46kCoCXw2ktb4NTkpkPBI/lSP/FoNXLCBJ0mrnUi1OoZxtpW1Q==" - "resolved" "https://registry.npmjs.org/@codemirror/language/-/language-6.2.1.tgz" - "version" "6.2.1" - dependencies: - "@codemirror/state" "^6.0.0" - "@codemirror/view" "^6.0.0" - "@lezer/common" "^1.0.0" - "@lezer/highlight" "^1.0.0" - "@lezer/lr" "^1.0.0" - "style-mod" "^4.0.0" - -"@codemirror/legacy-modes@^6.1.0": - "integrity" "sha512-V/PgGpndkZeTn3Hdlg/gd8MLFdyvTCIX+iwJzjUw5iNziWiNsAY8X0jvf7m3gSfxnKkNzmid6l0g4rYSpiDaCw==" - "resolved" "https://registry.npmjs.org/@codemirror/legacy-modes/-/legacy-modes-6.1.0.tgz" - "version" "6.1.0" - dependencies: - "@codemirror/language" "^6.0.0" - -"@codemirror/lint@^6.0.0": - "integrity" "sha512-nUUXcJW1Xp54kNs+a1ToPLK8MadO0rMTnJB8Zk4Z8gBdrN0kqV7uvUraU/T2yqg+grDNR38Vmy/MrhQN/RgwiA==" - "resolved" "https://registry.npmjs.org/@codemirror/lint/-/lint-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "@codemirror/state" "^6.0.0" - "@codemirror/view" "^6.0.0" - "crelt" "^1.0.5" - -"@codemirror/search@^6.0.0": - "integrity" "sha512-Q1JgUSBjQZRPIddlXzad/AVDigdhriLxQNFyP0gfrDTq6LDHNhr95U/tW3bpVssGenkaLzujtu/7XoK4kyvL3g==" - "resolved" "https://registry.npmjs.org/@codemirror/search/-/search-6.2.1.tgz" - "version" "6.2.1" - dependencies: - "@codemirror/state" "^6.0.0" - "@codemirror/view" "^6.0.0" - "crelt" "^1.0.5" - -"@codemirror/state@^6.0.0", "@codemirror/state@^6.1.1": - "integrity" "sha512-Mxff85Hp5va+zuj+H748KbubXjrinX/k28lj43H14T2D0+4kuvEFIEIO7hCEcvBT8ubZyIelt9yGOjj2MWOEQA==" - "resolved" "https://registry.npmjs.org/@codemirror/state/-/state-6.1.2.tgz" - "version" "6.1.2" - -"@codemirror/theme-one-dark@^6.0.0": - "integrity" "sha512-AiTHtFRu8+vWT9wWUWDM+cog6ZwgivJogB1Tm/g40NIpLwph7AnmxrSzWfvJN5fBVufsuwBxecQCNmdcR5D7Aw==" - "resolved" "https://registry.npmjs.org/@codemirror/theme-one-dark/-/theme-one-dark-6.1.0.tgz" - "version" "6.1.0" - dependencies: - "@codemirror/language" "^6.0.0" - "@codemirror/state" "^6.0.0" - "@codemirror/view" "^6.0.0" - "@lezer/highlight" "^1.0.0" - -"@codemirror/view@^6.0.0", "@codemirror/view@>=6.0.0": - "integrity" "sha512-NKPBphoV9W2Q6tKXk+ge4q5EhMOOC0rpwdGS80/slNSfsVqkN4gwXIEqSprXJFlf9aUKZU7WhPvqRBMNH+hJkQ==" - "resolved" "https://registry.npmjs.org/@codemirror/view/-/view-6.3.1.tgz" - "version" "6.3.1" - dependencies: - "@codemirror/state" "^6.0.0" - "style-mod" "^4.0.0" - "w3c-keyname" "^2.2.4" - -"@colors/colors@1.5.0": - "integrity" "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==" - "resolved" "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz" - "version" "1.5.0" - -"@cspotcode/source-map-support@^0.8.0": - "integrity" "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==" - "resolved" "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz" - "version" "0.8.1" - dependencies: - "@jridgewell/trace-mapping" "0.3.9" - -"@csstools/normalize.css@*": - "integrity" "sha512-M0qqxAcwCsIVfpFQSlGN5XjXWu8l5JDZN+fPt1LeW5SZexQTgnaEvgXAY+CeygRw0EeppWHi12JxESWiWrB0Sg==" - "resolved" "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-12.0.0.tgz" - "version" "12.0.0" - -"@csstools/postcss-cascade-layers@^1.1.1": - "integrity" "sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA==" - "resolved" "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz" - "version" "1.1.1" - dependencies: - "@csstools/selector-specificity" "^2.0.2" - "postcss-selector-parser" "^6.0.10" - -"@csstools/postcss-color-function@^1.1.1": - "integrity" "sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==" - "resolved" "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz" - "version" "1.1.1" - dependencies: - "@csstools/postcss-progressive-custom-properties" "^1.1.0" - "postcss-value-parser" "^4.2.0" - -"@csstools/postcss-font-format-keywords@^1.0.1": - "integrity" "sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==" - "resolved" "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "postcss-value-parser" "^4.2.0" - -"@csstools/postcss-hwb-function@^1.0.2": - "integrity" "sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==" - "resolved" "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "postcss-value-parser" "^4.2.0" - -"@csstools/postcss-ic-unit@^1.0.1": - "integrity" "sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==" - "resolved" "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "@csstools/postcss-progressive-custom-properties" "^1.1.0" - "postcss-value-parser" "^4.2.0" - -"@csstools/postcss-is-pseudo-class@^2.0.7": - "integrity" "sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==" - "resolved" "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz" - "version" "2.0.7" - dependencies: - "@csstools/selector-specificity" "^2.0.0" - "postcss-selector-parser" "^6.0.10" - -"@csstools/postcss-nested-calc@^1.0.0": - "integrity" "sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ==" - "resolved" "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "postcss-value-parser" "^4.2.0" - -"@csstools/postcss-normalize-display-values@^1.0.1": - "integrity" "sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==" - "resolved" "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "postcss-value-parser" "^4.2.0" - -"@csstools/postcss-oklab-function@^1.1.1": - "integrity" "sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==" - "resolved" "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz" - "version" "1.1.1" - dependencies: - "@csstools/postcss-progressive-custom-properties" "^1.1.0" - "postcss-value-parser" "^4.2.0" - -"@csstools/postcss-progressive-custom-properties@^1.1.0", "@csstools/postcss-progressive-custom-properties@^1.3.0": - "integrity" "sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==" - "resolved" "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz" - "version" "1.3.0" - dependencies: - "postcss-value-parser" "^4.2.0" - -"@csstools/postcss-stepped-value-functions@^1.0.1": - "integrity" "sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==" - "resolved" "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "postcss-value-parser" "^4.2.0" - -"@csstools/postcss-text-decoration-shorthand@^1.0.0": - "integrity" "sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw==" - "resolved" "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "postcss-value-parser" "^4.2.0" - -"@csstools/postcss-trigonometric-functions@^1.0.2": - "integrity" "sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og==" - "resolved" "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "postcss-value-parser" "^4.2.0" - -"@csstools/postcss-unset-value@^1.0.2": - "integrity" "sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==" - "resolved" "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz" - "version" "1.0.2" - -"@csstools/selector-specificity@^2.0.0", "@csstools/selector-specificity@^2.0.2": - "integrity" "sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==" - "resolved" "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz" - "version" "2.2.0" - -"@develar/schema-utils@~2.6.5": - "integrity" "sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==" - "resolved" "https://registry.npmjs.org/@develar/schema-utils/-/schema-utils-2.6.5.tgz" - "version" "2.6.5" - dependencies: - "ajv" "^6.12.0" - "ajv-keywords" "^3.4.1" - -"@electron/get@^1.14.1": - "integrity" "sha512-BrZYyL/6m0ZXz/lDxy/nlVhQz+WF+iPS6qXolEU8atw7h6v1aYkjwJZ63m+bJMBTxDE66X+r2tPS4a/8C82sZw==" - "resolved" "https://registry.npmjs.org/@electron/get/-/get-1.14.1.tgz" - "version" "1.14.1" - dependencies: - "debug" "^4.1.1" - "env-paths" "^2.2.0" - "fs-extra" "^8.1.0" - "got" "^9.6.0" - "progress" "^2.0.3" - "semver" "^6.2.0" - "sumchecker" "^3.0.1" - optionalDependencies: - "global-agent" "^3.0.0" - "global-tunnel-ng" "^2.7.1" - -"@electron/universal@1.2.1": - "integrity" "sha512-7323HyMh7KBAl/nPDppdLsC87G6RwRU02dy5FPeGB1eS7rUePh55+WNWiDPLhFQqqVPHzh77M69uhmoT8XnwMQ==" - "resolved" "https://registry.npmjs.org/@electron/universal/-/universal-1.2.1.tgz" - "version" "1.2.1" - dependencies: - "@malept/cross-spawn-promise" "^1.1.0" - "asar" "^3.1.0" - "debug" "^4.3.1" - "dir-compare" "^2.4.0" - "fs-extra" "^9.0.1" - "minimatch" "^3.0.4" - "plist" "^3.0.4" - -"@es-joy/jsdoccomment@~0.37.0": - "integrity" "sha512-5vxWJ1gEkEF0yRd0O+uK6dHJf7adrxwQSX8PuRiPfFSAbNLnY0ZJfXaZucoz14Jj2N11xn2DnlEPwWRpYpvRjg==" - "resolved" "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.37.1.tgz" - "version" "0.37.1" - dependencies: - "comment-parser" "1.3.1" - "esquery" "^1.5.0" - "jsdoc-type-pratt-parser" "~4.0.0" - -"@eslint-community/eslint-utils@^4.2.0": - "integrity" "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==" - "resolved" "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz" - "version" "4.4.0" - dependencies: - "eslint-visitor-keys" "^3.3.0" - -"@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1": - "integrity" "sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==" - "resolved" "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.0.tgz" - "version" "4.8.0" - -"@eslint/eslintrc@^0.4.3": - "integrity" "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==" - "resolved" "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz" - "version" "0.4.3" - dependencies: - "ajv" "^6.12.4" - "debug" "^4.1.1" - "espree" "^7.3.0" - "globals" "^13.9.0" - "ignore" "^4.0.6" - "import-fresh" "^3.2.1" - "js-yaml" "^3.13.1" - "minimatch" "^3.0.4" - "strip-json-comments" "^3.1.1" - -"@eslint/eslintrc@^2.1.2": - "integrity" "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==" - "resolved" "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz" - "version" "2.1.2" - dependencies: - "ajv" "^6.12.4" - "debug" "^4.3.2" - "espree" "^9.6.0" - "globals" "^13.19.0" - "ignore" "^5.2.0" - "import-fresh" "^3.2.1" - "js-yaml" "^4.1.0" - "minimatch" "^3.1.2" - "strip-json-comments" "^3.1.1" - -"@eslint/js@8.48.0": - "integrity" "sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==" - "resolved" "https://registry.npmjs.org/@eslint/js/-/js-8.48.0.tgz" - "version" "8.48.0" - -"@fingerprintjs/fingerprintjs@^3.3.6": - "integrity" "sha512-Inh0OoFVzO2PLvrUF8RZhY9NVDdg9DJHQ5YlvXhrGtQxSPzy2smS3TWzLAi+zlHSJNHSvi+1zYayLen2lGxjdA==" - "resolved" "https://registry.npmjs.org/@fingerprintjs/fingerprintjs/-/fingerprintjs-3.3.6.tgz" - "version" "3.3.6" - dependencies: - "tslib" "^2.0.1" - -"@flowser/backend@0.0.1", "@flowser/backend@file:/Users/bartkozorog/Projects/flowser/backend": - "resolved" "file:backend" - "version" "0.0.1" - dependencies: - "@flowser/shared" "^0.0.1" - "@nestjs/cli" "^8.1.1" - "@nestjs/common" "^8.0.0" - "@nestjs/config" "^2.1.0" - "@nestjs/core" "^8.0.0" - "@nestjs/mapped-types" "*" - "@nestjs/platform-express" "^8.0.0" - "@nestjs/schedule" "^2.0.1" - "@nestjs/serve-static" "^3.0.0" - "@nestjs/swagger" "^5.1.1" - "@nestjs/typeorm" "^8.1.0" - "@onflow/fcl" "^1.6.0" - "@onflow/types" "^1.0.3" - "axios" "^0.21.4" - "class-transformer" "0.4.0" - "class-validator" "^0.13.1" - "command-exists" "^1.2.9" - "elliptic" "^6.5.4" - "envalid" "^7.3.1" - "node-abort-controller" "^3.0.1" - "reflect-metadata" "^0.1.13" - "rimraf" "^3.0.2" - "rxjs" "^7.2.0" - "semver" "^7.3.7" - "swagger-ui-express" "^4.1.6" - "typeorm" "^0.3.6" - -"@flowser/frontend@file:/Users/bartkozorog/Projects/flowser/frontend": - "resolved" "file:frontend" - "version" "0.0.1" - dependencies: - "@codemirror/legacy-modes" "^6.1.0" - "@fingerprintjs/fingerprintjs" "^3.3.6" - "@flowser/backend" "0.0.1" - "@flowser/shared" "0.0.1" - "@onflow/fcl" "^1.6.0" - "@onflow/types" "^1.0.3" - "@sentry/electron" "^4.0.2" - "@szhsin/react-menu" "4.0.3" - "@tanstack/react-table" "^8.5.11" - "@testing-library/jest-dom" "^5.14.1" - "@testing-library/react" "^11.2.7" - "@testing-library/user-event" "^12.8.3" - "@types/dateformat" "^3.0.1" - "@types/jest" "^26.0.24" - "@types/joi" "^17.2.3" - "@types/node" "^12.20.27" - "@types/react" "^17.0.24" - "@types/react-dom" "^17.0.9" - "@types/react-timeago" "^4.1.3" - "@uiw/codemirror-extensions-basic-setup" "^4.12.4" - "@uiw/codemirror-theme-github" "^4.12.4" - "@uiw/react-codemirror" "^4.12.4" - "ansi-to-html" "^0.7.2" - "axios" "^0.21.4" - "classnames" "^2.3.1" - "concurrently" "^7.3.0" - "copy-to-clipboard" "^3.3.1" - "cross-env" "^7.0.3" - "dateformat" "^5.0.1" - "electron-is-dev" "^2.0.0" - "electron-log" "^4.4.8" - "electron-updater" "^5.3.0" - "fix-path" "3.0.0" - "formik" "^2.2.9" - "husky" "^7.0.2" - "joi" "^17.4.2" - "mixpanel-browser" "^2.45.0" - "prismjs" "^1.25.0" - "react" "^17.0.2" - "react-dom" "^17.0.2" - "react-helmet" "^6.1.0" - "react-hot-toast" "^2.1.1" - "react-icons" "^4.11.0" - "react-json-view" "^1.21.3" - "react-modern-drawer" "^1.1.2" - "react-pro-sidebar" "^0.7.1" - "react-query" "^3.24.4" - "react-router-dom" "6.15.0" - "react-scripts" "5.0.0" - "react-timeago" "^6.2.1" - "reactjs-popup" "2.0.5" - "sqlite3" "^5.0.11" - "typescript" "^4.4.3" - "usehooks-ts" "^2.9.1" - "wait-on" "^6.0.1" - "web-vitals" "^1.1.2" - "yup" "^0.32.11" - -"@flowser/shared@^0.0.1", "@flowser/shared@0.0.1", "@flowser/shared@file:/Users/bartkozorog/Projects/flowser/shared": - "resolved" "file:shared" - "version" "0.0.1" - dependencies: - "chokidar-cli" "^3.0.0" - "protobufjs" "^7.0.0" - "ts-proto" "^1.121.1" - "ts-protoc-gen" "^0.15.0" - -"@gar/promisify@^1.0.1": - "integrity" "sha512-82cpyJyKRoQoRi+14ibCeGPu0CwypgtBAdBhq1WfvagpCZNKqwXbKwXllYSMG91DhmG4jt9gN8eP6lGOtozuaw==" - "resolved" "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.2.tgz" - "version" "1.1.2" - -"@hapi/hoek@^9.0.0": - "integrity" "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" - "resolved" "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz" - "version" "9.3.0" - -"@hapi/topo@^5.0.0": - "integrity" "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==" - "resolved" "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz" - "version" "5.1.0" - dependencies: - "@hapi/hoek" "^9.0.0" - -"@humanwhocodes/config-array@^0.11.10": - "integrity" "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==" - "resolved" "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz" - "version" "0.11.11" - dependencies: - "@humanwhocodes/object-schema" "^1.2.1" - "debug" "^4.1.1" - "minimatch" "^3.0.5" - -"@humanwhocodes/config-array@^0.5.0": - "integrity" "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==" - "resolved" "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz" - "version" "0.5.0" - dependencies: - "@humanwhocodes/object-schema" "^1.2.0" - "debug" "^4.1.1" - "minimatch" "^3.0.4" - -"@humanwhocodes/module-importer@^1.0.1": - "integrity" "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==" - "resolved" "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" - "version" "1.0.1" - -"@humanwhocodes/object-schema@^1.2.0", "@humanwhocodes/object-schema@^1.2.1": - "integrity" "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" - "resolved" "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz" - "version" "1.2.1" - -"@hutson/parse-repository-url@^3.0.0": - "integrity" "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==" - "resolved" "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz" - "version" "3.0.2" - -"@istanbuljs/load-nyc-config@^1.0.0": - "integrity" "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==" - "resolved" "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz" - "version" "1.1.0" - 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" - -"@istanbuljs/schema@^0.1.2": - "integrity" "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==" - "resolved" "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz" - "version" "0.1.3" - -"@jest/console@^27.5.1": - "integrity" "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==" - "resolved" "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@jest/types" "^27.5.1" - "@types/node" "*" - "chalk" "^4.0.0" - "jest-message-util" "^27.5.1" - "jest-util" "^27.5.1" - "slash" "^3.0.0" - -"@jest/console@^28.1.3": - "integrity" "sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==" - "resolved" "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz" - "version" "28.1.3" - dependencies: - "@jest/types" "^28.1.3" - "@types/node" "*" - "chalk" "^4.0.0" - "jest-message-util" "^28.1.3" - "jest-util" "^28.1.3" - "slash" "^3.0.0" - -"@jest/core@^27.5.1": - "integrity" "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==" - "resolved" "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@jest/console" "^27.5.1" - "@jest/reporters" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - "ansi-escapes" "^4.2.1" - "chalk" "^4.0.0" - "emittery" "^0.8.1" - "exit" "^0.1.2" - "graceful-fs" "^4.2.9" - "jest-changed-files" "^27.5.1" - "jest-config" "^27.5.1" - "jest-haste-map" "^27.5.1" - "jest-message-util" "^27.5.1" - "jest-regex-util" "^27.5.1" - "jest-resolve" "^27.5.1" - "jest-resolve-dependencies" "^27.5.1" - "jest-runner" "^27.5.1" - "jest-runtime" "^27.5.1" - "jest-snapshot" "^27.5.1" - "jest-util" "^27.5.1" - "jest-validate" "^27.5.1" - "jest-watcher" "^27.5.1" - "micromatch" "^4.0.4" - "rimraf" "^3.0.0" - "slash" "^3.0.0" - "strip-ansi" "^6.0.0" - -"@jest/environment@^27.5.1": - "integrity" "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==" - "resolved" "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@jest/fake-timers" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - "jest-mock" "^27.5.1" - -"@jest/fake-timers@^27.5.1": - "integrity" "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==" - "resolved" "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@jest/types" "^27.5.1" - "@sinonjs/fake-timers" "^8.0.1" - "@types/node" "*" - "jest-message-util" "^27.5.1" - "jest-mock" "^27.5.1" - "jest-util" "^27.5.1" - -"@jest/globals@^27.5.1": - "integrity" "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==" - "resolved" "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@jest/environment" "^27.5.1" - "@jest/types" "^27.5.1" - "expect" "^27.5.1" - -"@jest/reporters@^27.5.1": - "integrity" "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==" - "resolved" "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - "chalk" "^4.0.0" - "collect-v8-coverage" "^1.0.0" - "exit" "^0.1.2" - "glob" "^7.1.2" - "graceful-fs" "^4.2.9" - "istanbul-lib-coverage" "^3.0.0" - "istanbul-lib-instrument" "^5.1.0" - "istanbul-lib-report" "^3.0.0" - "istanbul-lib-source-maps" "^4.0.0" - "istanbul-reports" "^3.1.3" - "jest-haste-map" "^27.5.1" - "jest-resolve" "^27.5.1" - "jest-util" "^27.5.1" - "jest-worker" "^27.5.1" - "slash" "^3.0.0" - "source-map" "^0.6.0" - "string-length" "^4.0.1" - "terminal-link" "^2.0.0" - "v8-to-istanbul" "^8.1.0" - -"@jest/schemas@^28.1.3": - "integrity" "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==" - "resolved" "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz" - "version" "28.1.3" - dependencies: - "@sinclair/typebox" "^0.24.1" - -"@jest/source-map@^27.5.1": - "integrity" "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==" - "resolved" "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "callsites" "^3.0.0" - "graceful-fs" "^4.2.9" - "source-map" "^0.6.0" - -"@jest/test-result@^27.5.1": - "integrity" "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==" - "resolved" "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@jest/console" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/istanbul-lib-coverage" "^2.0.0" - "collect-v8-coverage" "^1.0.0" - -"@jest/test-result@^28.1.3": - "integrity" "sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==" - "resolved" "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz" - "version" "28.1.3" - dependencies: - "@jest/console" "^28.1.3" - "@jest/types" "^28.1.3" - "@types/istanbul-lib-coverage" "^2.0.0" - "collect-v8-coverage" "^1.0.0" - -"@jest/test-sequencer@^27.5.1": - "integrity" "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==" - "resolved" "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@jest/test-result" "^27.5.1" - "graceful-fs" "^4.2.9" - "jest-haste-map" "^27.5.1" - "jest-runtime" "^27.5.1" - -"@jest/transform@^27.5.1": - "integrity" "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==" - "resolved" "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@babel/core" "^7.1.0" - "@jest/types" "^27.5.1" - "babel-plugin-istanbul" "^6.1.1" - "chalk" "^4.0.0" - "convert-source-map" "^1.4.0" - "fast-json-stable-stringify" "^2.0.0" - "graceful-fs" "^4.2.9" - "jest-haste-map" "^27.5.1" - "jest-regex-util" "^27.5.1" - "jest-util" "^27.5.1" - "micromatch" "^4.0.4" - "pirates" "^4.0.4" - "slash" "^3.0.0" - "source-map" "^0.6.1" - "write-file-atomic" "^3.0.0" - -"@jest/types@^26.6.2": - "integrity" "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==" - "resolved" "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz" - "version" "26.6.2" - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^15.0.0" - "chalk" "^4.0.0" - -"@jest/types@^27.5.1": - "integrity" "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==" - "resolved" "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^16.0.0" - "chalk" "^4.0.0" - -"@jest/types@^28.1.3": - "integrity" "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==" - "resolved" "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz" - "version" "28.1.3" - dependencies: - "@jest/schemas" "^28.1.3" - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^17.0.8" - "chalk" "^4.0.0" - -"@jridgewell/gen-mapping@^0.1.0": - "integrity" "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==" - "resolved" "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz" - "version" "0.1.1" - dependencies: - "@jridgewell/set-array" "^1.0.0" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": - "integrity" "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==" - "resolved" "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz" - "version" "0.3.2" - dependencies: - "@jridgewell/set-array" "^1.0.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0": - "integrity" "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==" - "resolved" "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz" - "version" "3.1.0" - -"@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": - "integrity" "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" - "resolved" "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" - "version" "1.1.2" - -"@jridgewell/source-map@^0.3.3": - "integrity" "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==" - "resolved" "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz" - "version" "0.3.5" - dependencies: - "@jridgewell/gen-mapping" "^0.3.0" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": - "integrity" "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" - "resolved" "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz" - "version" "1.4.14" - -"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": - "integrity" "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==" - "resolved" "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz" - "version" "0.3.19" - dependencies: - "@jridgewell/resolve-uri" "^3.1.0" - "@jridgewell/sourcemap-codec" "^1.4.14" - -"@jridgewell/trace-mapping@0.3.9": - "integrity" "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==" - "resolved" "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz" - "version" "0.3.9" - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@leichtgewicht/ip-codec@^2.0.1": - "integrity" "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==" - "resolved" "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz" - "version" "2.0.4" - -"@lerna/add@4.0.0": - "integrity" "sha512-cpmAH1iS3k8JBxNvnMqrGTTjbY/ZAiKa1ChJzFevMYY3eeqbvhsBKnBcxjRXtdrJ6bd3dCQM+ZtK+0i682Fhng==" - "resolved" "https://registry.npmjs.org/@lerna/add/-/add-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "@lerna/bootstrap" "4.0.0" - "@lerna/command" "4.0.0" - "@lerna/filter-options" "4.0.0" - "@lerna/npm-conf" "4.0.0" - "@lerna/validation-error" "4.0.0" - "dedent" "^0.7.0" - "npm-package-arg" "^8.1.0" - "p-map" "^4.0.0" - "pacote" "^11.2.6" - "semver" "^7.3.4" - -"@lerna/bootstrap@4.0.0": - "integrity" "sha512-RkS7UbeM2vu+kJnHzxNRCLvoOP9yGNgkzRdy4UV2hNalD7EP41bLvRVOwRYQ7fhc2QcbhnKNdOBihYRL0LcKtw==" - "resolved" "https://registry.npmjs.org/@lerna/bootstrap/-/bootstrap-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "@lerna/command" "4.0.0" - "@lerna/filter-options" "4.0.0" - "@lerna/has-npm-version" "4.0.0" - "@lerna/npm-install" "4.0.0" - "@lerna/package-graph" "4.0.0" - "@lerna/pulse-till-done" "4.0.0" - "@lerna/rimraf-dir" "4.0.0" - "@lerna/run-lifecycle" "4.0.0" - "@lerna/run-topologically" "4.0.0" - "@lerna/symlink-binary" "4.0.0" - "@lerna/symlink-dependencies" "4.0.0" - "@lerna/validation-error" "4.0.0" - "dedent" "^0.7.0" - "get-port" "^5.1.1" - "multimatch" "^5.0.0" - "npm-package-arg" "^8.1.0" - "npmlog" "^4.1.2" - "p-map" "^4.0.0" - "p-map-series" "^2.1.0" - "p-waterfall" "^2.1.1" - "read-package-tree" "^5.3.1" - "semver" "^7.3.4" - -"@lerna/changed@4.0.0": - "integrity" "sha512-cD+KuPRp6qiPOD+BO6S6SN5cARspIaWSOqGBpGnYzLb4uWT8Vk4JzKyYtc8ym1DIwyoFXHosXt8+GDAgR8QrgQ==" - "resolved" "https://registry.npmjs.org/@lerna/changed/-/changed-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "@lerna/collect-updates" "4.0.0" - "@lerna/command" "4.0.0" - "@lerna/listable" "4.0.0" - "@lerna/output" "4.0.0" - -"@lerna/check-working-tree@4.0.0": - "integrity" "sha512-/++bxM43jYJCshBiKP5cRlCTwSJdRSxVmcDAXM+1oUewlZJVSVlnks5eO0uLxokVFvLhHlC5kHMc7gbVFPHv6Q==" - "resolved" "https://registry.npmjs.org/@lerna/check-working-tree/-/check-working-tree-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "@lerna/collect-uncommitted" "4.0.0" - "@lerna/describe-ref" "4.0.0" - "@lerna/validation-error" "4.0.0" - -"@lerna/child-process@4.0.0": - "integrity" "sha512-XtCnmCT9eyVsUUHx6y/CTBYdV9g2Cr/VxyseTWBgfIur92/YKClfEtJTbOh94jRT62hlKLqSvux/UhxXVh613Q==" - "resolved" "https://registry.npmjs.org/@lerna/child-process/-/child-process-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "chalk" "^4.1.0" - "execa" "^5.0.0" - "strong-log-transformer" "^2.1.0" - -"@lerna/clean@4.0.0": - "integrity" "sha512-uugG2iN9k45ITx2jtd8nEOoAtca8hNlDCUM0N3lFgU/b1mEQYAPRkqr1qs4FLRl/Y50ZJ41wUz1eazS+d/0osA==" - "resolved" "https://registry.npmjs.org/@lerna/clean/-/clean-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "@lerna/command" "4.0.0" - "@lerna/filter-options" "4.0.0" - "@lerna/prompt" "4.0.0" - "@lerna/pulse-till-done" "4.0.0" - "@lerna/rimraf-dir" "4.0.0" - "p-map" "^4.0.0" - "p-map-series" "^2.1.0" - "p-waterfall" "^2.1.1" - -"@lerna/cli@4.0.0": - "integrity" "sha512-Neaw3GzFrwZiRZv2g7g6NwFjs3er1vhraIniEs0jjVLPMNC4eata0na3GfE5yibkM/9d3gZdmihhZdZ3EBdvYA==" - "resolved" "https://registry.npmjs.org/@lerna/cli/-/cli-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "@lerna/global-options" "4.0.0" - "dedent" "^0.7.0" - "npmlog" "^4.1.2" - "yargs" "^16.2.0" - -"@lerna/collect-uncommitted@4.0.0": - "integrity" "sha512-ufSTfHZzbx69YNj7KXQ3o66V4RC76ffOjwLX0q/ab//61bObJ41n03SiQEhSlmpP+gmFbTJ3/7pTe04AHX9m/g==" - "resolved" "https://registry.npmjs.org/@lerna/collect-uncommitted/-/collect-uncommitted-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "@lerna/child-process" "4.0.0" - "chalk" "^4.1.0" - "npmlog" "^4.1.2" - -"@lerna/collect-updates@4.0.0": - "integrity" "sha512-bnNGpaj4zuxsEkyaCZLka9s7nMs58uZoxrRIPJ+nrmrZYp1V5rrd+7/NYTuunOhY2ug1sTBvTAxj3NZQ+JKnOw==" - "resolved" "https://registry.npmjs.org/@lerna/collect-updates/-/collect-updates-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/describe-ref" "4.0.0" - "minimatch" "^3.0.4" - "npmlog" "^4.1.2" - "slash" "^3.0.0" - -"@lerna/command@4.0.0": - "integrity" "sha512-LM9g3rt5FsPNFqIHUeRwWXLNHJ5NKzOwmVKZ8anSp4e1SPrv2HNc1V02/9QyDDZK/w+5POXH5lxZUI1CHaOK/A==" - "resolved" "https://registry.npmjs.org/@lerna/command/-/command-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/package-graph" "4.0.0" - "@lerna/project" "4.0.0" - "@lerna/validation-error" "4.0.0" - "@lerna/write-log-file" "4.0.0" - "clone-deep" "^4.0.1" - "dedent" "^0.7.0" - "execa" "^5.0.0" - "is-ci" "^2.0.0" - "npmlog" "^4.1.2" - -"@lerna/conventional-commits@4.0.0": - "integrity" "sha512-CSUQRjJHFrH8eBn7+wegZLV3OrNc0Y1FehYfYGhjLE2SIfpCL4bmfu/ViYuHh9YjwHaA+4SX6d3hR+xkeseKmw==" - "resolved" "https://registry.npmjs.org/@lerna/conventional-commits/-/conventional-commits-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "@lerna/validation-error" "4.0.0" - "conventional-changelog-angular" "^5.0.12" - "conventional-changelog-core" "^4.2.2" - "conventional-recommended-bump" "^6.1.0" - "fs-extra" "^9.1.0" - "get-stream" "^6.0.0" - "lodash.template" "^4.5.0" - "npm-package-arg" "^8.1.0" - "npmlog" "^4.1.2" - "pify" "^5.0.0" - "semver" "^7.3.4" - -"@lerna/create-symlink@4.0.0": - "integrity" "sha512-I0phtKJJdafUiDwm7BBlEUOtogmu8+taxq6PtIrxZbllV9hWg59qkpuIsiFp+no7nfRVuaasNYHwNUhDAVQBig==" - "resolved" "https://registry.npmjs.org/@lerna/create-symlink/-/create-symlink-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "cmd-shim" "^4.1.0" - "fs-extra" "^9.1.0" - "npmlog" "^4.1.2" - -"@lerna/create@4.0.0": - "integrity" "sha512-mVOB1niKByEUfxlbKTM1UNECWAjwUdiioIbRQZEeEabtjCL69r9rscIsjlGyhGWCfsdAG5wfq4t47nlDXdLLag==" - "resolved" "https://registry.npmjs.org/@lerna/create/-/create-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/command" "4.0.0" - "@lerna/npm-conf" "4.0.0" - "@lerna/validation-error" "4.0.0" - "dedent" "^0.7.0" - "fs-extra" "^9.1.0" - "globby" "^11.0.2" - "init-package-json" "^2.0.2" - "npm-package-arg" "^8.1.0" - "p-reduce" "^2.1.0" - "pacote" "^11.2.6" - "pify" "^5.0.0" - "semver" "^7.3.4" - "slash" "^3.0.0" - "validate-npm-package-license" "^3.0.4" - "validate-npm-package-name" "^3.0.0" - "whatwg-url" "^8.4.0" - "yargs-parser" "20.2.4" - -"@lerna/describe-ref@4.0.0": - "integrity" "sha512-eTU5+xC4C5Gcgz+Ey4Qiw9nV2B4JJbMulsYJMW8QjGcGh8zudib7Sduj6urgZXUYNyhYpRs+teci9M2J8u+UvQ==" - "resolved" "https://registry.npmjs.org/@lerna/describe-ref/-/describe-ref-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "@lerna/child-process" "4.0.0" - "npmlog" "^4.1.2" - -"@lerna/diff@4.0.0": - "integrity" "sha512-jYPKprQVg41+MUMxx6cwtqsNm0Yxx9GDEwdiPLwcUTFx+/qKCEwifKNJ1oGIPBxyEHX2PFCOjkK39lHoj2qiag==" - "resolved" "https://registry.npmjs.org/@lerna/diff/-/diff-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/command" "4.0.0" - "@lerna/validation-error" "4.0.0" - "npmlog" "^4.1.2" - -"@lerna/exec@4.0.0": - "integrity" "sha512-VGXtL/b/JfY84NB98VWZpIExfhLOzy0ozm/0XaS4a2SmkAJc5CeUfrhvHxxkxiTBLkU+iVQUyYEoAT0ulQ8PCw==" - "resolved" "https://registry.npmjs.org/@lerna/exec/-/exec-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/command" "4.0.0" - "@lerna/filter-options" "4.0.0" - "@lerna/profiler" "4.0.0" - "@lerna/run-topologically" "4.0.0" - "@lerna/validation-error" "4.0.0" - "p-map" "^4.0.0" - -"@lerna/filter-options@4.0.0": - "integrity" "sha512-vV2ANOeZhOqM0rzXnYcFFCJ/kBWy/3OA58irXih9AMTAlQLymWAK0akWybl++sUJ4HB9Hx12TOqaXbYS2NM5uw==" - "resolved" "https://registry.npmjs.org/@lerna/filter-options/-/filter-options-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "@lerna/collect-updates" "4.0.0" - "@lerna/filter-packages" "4.0.0" - "dedent" "^0.7.0" - "npmlog" "^4.1.2" - -"@lerna/filter-packages@4.0.0": - "integrity" "sha512-+4AJIkK7iIiOaqCiVTYJxh/I9qikk4XjNQLhE3kixaqgMuHl1NQ99qXRR0OZqAWB9mh8Z1HA9bM5K1HZLBTOqA==" - "resolved" "https://registry.npmjs.org/@lerna/filter-packages/-/filter-packages-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "@lerna/validation-error" "4.0.0" - "multimatch" "^5.0.0" - "npmlog" "^4.1.2" - -"@lerna/get-npm-exec-opts@4.0.0": - "integrity" "sha512-yvmkerU31CTWS2c7DvmAWmZVeclPBqI7gPVr5VATUKNWJ/zmVcU4PqbYoLu92I9Qc4gY1TuUplMNdNuZTSL7IQ==" - "resolved" "https://registry.npmjs.org/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "npmlog" "^4.1.2" - -"@lerna/get-packed@4.0.0": - "integrity" "sha512-rfWONRsEIGyPJTxFzC8ECb3ZbsDXJbfqWYyeeQQDrJRPnEJErlltRLPLgC2QWbxFgFPsoDLeQmFHJnf0iDfd8w==" - "resolved" "https://registry.npmjs.org/@lerna/get-packed/-/get-packed-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "fs-extra" "^9.1.0" - "ssri" "^8.0.1" - "tar" "^6.1.0" - -"@lerna/github-client@4.0.0": - "integrity" "sha512-2jhsldZtTKXYUBnOm23Lb0Fx8G4qfSXF9y7UpyUgWUj+YZYd+cFxSuorwQIgk5P4XXrtVhsUesIsli+BYSThiw==" - "resolved" "https://registry.npmjs.org/@lerna/github-client/-/github-client-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "@lerna/child-process" "4.0.0" - "@octokit/plugin-enterprise-rest" "^6.0.1" - "@octokit/rest" "^18.1.0" - "git-url-parse" "^11.4.4" - "npmlog" "^4.1.2" - -"@lerna/gitlab-client@4.0.0": - "integrity" "sha512-OMUpGSkeDWFf7BxGHlkbb35T7YHqVFCwBPSIR6wRsszY8PAzCYahtH3IaJzEJyUg6vmZsNl0FSr3pdA2skhxqA==" - "resolved" "https://registry.npmjs.org/@lerna/gitlab-client/-/gitlab-client-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "node-fetch" "^2.6.1" - "npmlog" "^4.1.2" - "whatwg-url" "^8.4.0" - -"@lerna/global-options@4.0.0": - "integrity" "sha512-TRMR8afAHxuYBHK7F++Ogop2a82xQjoGna1dvPOY6ltj/pEx59pdgcJfYcynYqMkFIk8bhLJJN9/ndIfX29FTQ==" - "resolved" "https://registry.npmjs.org/@lerna/global-options/-/global-options-4.0.0.tgz" - "version" "4.0.0" - -"@lerna/has-npm-version@4.0.0": - "integrity" "sha512-LQ3U6XFH8ZmLCsvsgq1zNDqka0Xzjq5ibVN+igAI5ccRWNaUsE/OcmsyMr50xAtNQMYMzmpw5GVLAivT2/YzCg==" - "resolved" "https://registry.npmjs.org/@lerna/has-npm-version/-/has-npm-version-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "@lerna/child-process" "4.0.0" - "semver" "^7.3.4" - -"@lerna/import@4.0.0": - "integrity" "sha512-FaIhd+4aiBousKNqC7TX1Uhe97eNKf5/SC7c5WZANVWtC7aBWdmswwDt3usrzCNpj6/Wwr9EtEbYROzxKH8ffg==" - "resolved" "https://registry.npmjs.org/@lerna/import/-/import-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/command" "4.0.0" - "@lerna/prompt" "4.0.0" - "@lerna/pulse-till-done" "4.0.0" - "@lerna/validation-error" "4.0.0" - "dedent" "^0.7.0" - "fs-extra" "^9.1.0" - "p-map-series" "^2.1.0" - -"@lerna/info@4.0.0": - "integrity" "sha512-8Uboa12kaCSZEn4XRfPz5KU9XXoexSPS4oeYGj76s2UQb1O1GdnEyfjyNWoUl1KlJ2i/8nxUskpXIftoFYH0/Q==" - "resolved" "https://registry.npmjs.org/@lerna/info/-/info-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "@lerna/command" "4.0.0" - "@lerna/output" "4.0.0" - "envinfo" "^7.7.4" - -"@lerna/init@4.0.0": - "integrity" "sha512-wY6kygop0BCXupzWj5eLvTUqdR7vIAm0OgyV9WHpMYQGfs1V22jhztt8mtjCloD/O0nEe4tJhdG62XU5aYmPNQ==" - "resolved" "https://registry.npmjs.org/@lerna/init/-/init-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/command" "4.0.0" - "fs-extra" "^9.1.0" - "p-map" "^4.0.0" - "write-json-file" "^4.3.0" - -"@lerna/link@4.0.0": - "integrity" "sha512-KlvPi7XTAcVOByfaLlOeYOfkkDcd+bejpHMCd1KcArcFTwijOwXOVi24DYomIeHvy6HsX/IUquJ4PPUJIeB4+w==" - "resolved" "https://registry.npmjs.org/@lerna/link/-/link-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "@lerna/command" "4.0.0" - "@lerna/package-graph" "4.0.0" - "@lerna/symlink-dependencies" "4.0.0" - "p-map" "^4.0.0" - "slash" "^3.0.0" - -"@lerna/list@4.0.0": - "integrity" "sha512-L2B5m3P+U4Bif5PultR4TI+KtW+SArwq1i75QZ78mRYxPc0U/piau1DbLOmwrdqr99wzM49t0Dlvl6twd7GHFg==" - "resolved" "https://registry.npmjs.org/@lerna/list/-/list-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "@lerna/command" "4.0.0" - "@lerna/filter-options" "4.0.0" - "@lerna/listable" "4.0.0" - "@lerna/output" "4.0.0" - -"@lerna/listable@4.0.0": - "integrity" "sha512-/rPOSDKsOHs5/PBLINZOkRIX1joOXUXEtyUs5DHLM8q6/RP668x/1lFhw6Dx7/U+L0+tbkpGtZ1Yt0LewCLgeQ==" - "resolved" "https://registry.npmjs.org/@lerna/listable/-/listable-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "@lerna/query-graph" "4.0.0" - "chalk" "^4.1.0" - "columnify" "^1.5.4" - -"@lerna/log-packed@4.0.0": - "integrity" "sha512-+dpCiWbdzgMAtpajLToy9PO713IHoE6GV/aizXycAyA07QlqnkpaBNZ8DW84gHdM1j79TWockGJo9PybVhrrZQ==" - "resolved" "https://registry.npmjs.org/@lerna/log-packed/-/log-packed-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "byte-size" "^7.0.0" - "columnify" "^1.5.4" - "has-unicode" "^2.0.1" - "npmlog" "^4.1.2" - -"@lerna/npm-conf@4.0.0": - "integrity" "sha512-uS7H02yQNq3oejgjxAxqq/jhwGEE0W0ntr8vM3EfpCW1F/wZruwQw+7bleJQ9vUBjmdXST//tk8mXzr5+JXCfw==" - "resolved" "https://registry.npmjs.org/@lerna/npm-conf/-/npm-conf-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "config-chain" "^1.1.12" - "pify" "^5.0.0" - -"@lerna/npm-dist-tag@4.0.0": - "integrity" "sha512-F20sg28FMYTgXqEQihgoqSfwmq+Id3zT23CnOwD+XQMPSy9IzyLf1fFVH319vXIw6NF6Pgs4JZN2Qty6/CQXGw==" - "resolved" "https://registry.npmjs.org/@lerna/npm-dist-tag/-/npm-dist-tag-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "@lerna/otplease" "4.0.0" - "npm-package-arg" "^8.1.0" - "npm-registry-fetch" "^9.0.0" - "npmlog" "^4.1.2" - -"@lerna/npm-install@4.0.0": - "integrity" "sha512-aKNxq2j3bCH3eXl3Fmu4D54s/YLL9WSwV8W7X2O25r98wzrO38AUN6AB9EtmAx+LV/SP15et7Yueg9vSaanRWg==" - "resolved" "https://registry.npmjs.org/@lerna/npm-install/-/npm-install-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/get-npm-exec-opts" "4.0.0" - "fs-extra" "^9.1.0" - "npm-package-arg" "^8.1.0" - "npmlog" "^4.1.2" - "signal-exit" "^3.0.3" - "write-pkg" "^4.0.0" - -"@lerna/npm-publish@4.0.0": - "integrity" "sha512-vQb7yAPRo5G5r77DRjHITc9piR9gvEKWrmfCH7wkfBnGWEqu7n8/4bFQ7lhnkujvc8RXOsYpvbMQkNfkYibD/w==" - "resolved" "https://registry.npmjs.org/@lerna/npm-publish/-/npm-publish-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "@lerna/otplease" "4.0.0" - "@lerna/run-lifecycle" "4.0.0" - "fs-extra" "^9.1.0" - "libnpmpublish" "^4.0.0" - "npm-package-arg" "^8.1.0" - "npmlog" "^4.1.2" - "pify" "^5.0.0" - "read-package-json" "^3.0.0" - -"@lerna/npm-run-script@4.0.0": - "integrity" "sha512-Jmyh9/IwXJjOXqKfIgtxi0bxi1pUeKe5bD3S81tkcy+kyng/GNj9WSqD5ZggoNP2NP//s4CLDAtUYLdP7CU9rA==" - "resolved" "https://registry.npmjs.org/@lerna/npm-run-script/-/npm-run-script-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/get-npm-exec-opts" "4.0.0" - "npmlog" "^4.1.2" - -"@lerna/otplease@4.0.0": - "integrity" "sha512-Sgzbqdk1GH4psNiT6hk+BhjOfIr/5KhGBk86CEfHNJTk9BK4aZYyJD4lpDbDdMjIV4g03G7pYoqHzH765T4fxw==" - "resolved" "https://registry.npmjs.org/@lerna/otplease/-/otplease-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "@lerna/prompt" "4.0.0" - -"@lerna/output@4.0.0": - "integrity" "sha512-Un1sHtO1AD7buDQrpnaYTi2EG6sLF+KOPEAMxeUYG5qG3khTs2Zgzq5WE3dt2N/bKh7naESt20JjIW6tBELP0w==" - "resolved" "https://registry.npmjs.org/@lerna/output/-/output-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "npmlog" "^4.1.2" - -"@lerna/pack-directory@4.0.0": - "integrity" "sha512-NJrmZNmBHS+5aM+T8N6FVbaKFScVqKlQFJNY2k7nsJ/uklNKsLLl6VhTQBPwMTbf6Tf7l6bcKzpy7aePuq9UiQ==" - "resolved" "https://registry.npmjs.org/@lerna/pack-directory/-/pack-directory-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "@lerna/get-packed" "4.0.0" - "@lerna/package" "4.0.0" - "@lerna/run-lifecycle" "4.0.0" - "npm-packlist" "^2.1.4" - "npmlog" "^4.1.2" - "tar" "^6.1.0" - "temp-write" "^4.0.0" - -"@lerna/package-graph@4.0.0": - "integrity" "sha512-QED2ZCTkfXMKFoTGoccwUzjHtZMSf3UKX14A4/kYyBms9xfFsesCZ6SLI5YeySEgcul8iuIWfQFZqRw+Qrjraw==" - "resolved" "https://registry.npmjs.org/@lerna/package-graph/-/package-graph-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "@lerna/prerelease-id-from-version" "4.0.0" - "@lerna/validation-error" "4.0.0" - "npm-package-arg" "^8.1.0" - "npmlog" "^4.1.2" - "semver" "^7.3.4" - -"@lerna/package@4.0.0": - "integrity" "sha512-l0M/izok6FlyyitxiQKr+gZLVFnvxRQdNhzmQ6nRnN9dvBJWn+IxxpM+cLqGACatTnyo9LDzNTOj2Db3+s0s8Q==" - "resolved" "https://registry.npmjs.org/@lerna/package/-/package-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "load-json-file" "^6.2.0" - "npm-package-arg" "^8.1.0" - "write-pkg" "^4.0.0" - -"@lerna/prerelease-id-from-version@4.0.0": - "integrity" "sha512-GQqguzETdsYRxOSmdFZ6zDBXDErIETWOqomLERRY54f4p+tk4aJjoVdd9xKwehC9TBfIFvlRbL1V9uQGHh1opg==" - "resolved" "https://registry.npmjs.org/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "semver" "^7.3.4" - -"@lerna/profiler@4.0.0": - "integrity" "sha512-/BaEbqnVh1LgW/+qz8wCuI+obzi5/vRE8nlhjPzdEzdmWmZXuCKyWSEzAyHOJWw1ntwMiww5dZHhFQABuoFz9Q==" - "resolved" "https://registry.npmjs.org/@lerna/profiler/-/profiler-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "fs-extra" "^9.1.0" - "npmlog" "^4.1.2" - "upath" "^2.0.1" - -"@lerna/project@4.0.0": - "integrity" "sha512-o0MlVbDkD5qRPkFKlBZsXZjoNTWPyuL58564nSfZJ6JYNmgAptnWPB2dQlAc7HWRZkmnC2fCkEdoU+jioPavbg==" - "resolved" "https://registry.npmjs.org/@lerna/project/-/project-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "@lerna/package" "4.0.0" - "@lerna/validation-error" "4.0.0" - "cosmiconfig" "^7.0.0" - "dedent" "^0.7.0" - "dot-prop" "^6.0.1" - "glob-parent" "^5.1.1" - "globby" "^11.0.2" - "load-json-file" "^6.2.0" - "npmlog" "^4.1.2" - "p-map" "^4.0.0" - "resolve-from" "^5.0.0" - "write-json-file" "^4.3.0" - -"@lerna/prompt@4.0.0": - "integrity" "sha512-4Ig46oCH1TH5M7YyTt53fT6TuaKMgqUUaqdgxvp6HP6jtdak6+amcsqB8YGz2eQnw/sdxunx84DfI9XpoLj4bQ==" - "resolved" "https://registry.npmjs.org/@lerna/prompt/-/prompt-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "inquirer" "^7.3.3" - "npmlog" "^4.1.2" - -"@lerna/publish@4.0.0": - "integrity" "sha512-K8jpqjHrChH22qtkytA5GRKIVFEtqBF6JWj1I8dWZtHs4Jywn8yB1jQ3BAMLhqmDJjWJtRck0KXhQQKzDK2UPg==" - "resolved" "https://registry.npmjs.org/@lerna/publish/-/publish-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "@lerna/check-working-tree" "4.0.0" - "@lerna/child-process" "4.0.0" - "@lerna/collect-updates" "4.0.0" - "@lerna/command" "4.0.0" - "@lerna/describe-ref" "4.0.0" - "@lerna/log-packed" "4.0.0" - "@lerna/npm-conf" "4.0.0" - "@lerna/npm-dist-tag" "4.0.0" - "@lerna/npm-publish" "4.0.0" - "@lerna/otplease" "4.0.0" - "@lerna/output" "4.0.0" - "@lerna/pack-directory" "4.0.0" - "@lerna/prerelease-id-from-version" "4.0.0" - "@lerna/prompt" "4.0.0" - "@lerna/pulse-till-done" "4.0.0" - "@lerna/run-lifecycle" "4.0.0" - "@lerna/run-topologically" "4.0.0" - "@lerna/validation-error" "4.0.0" - "@lerna/version" "4.0.0" - "fs-extra" "^9.1.0" - "libnpmaccess" "^4.0.1" - "npm-package-arg" "^8.1.0" - "npm-registry-fetch" "^9.0.0" - "npmlog" "^4.1.2" - "p-map" "^4.0.0" - "p-pipe" "^3.1.0" - "pacote" "^11.2.6" - "semver" "^7.3.4" - -"@lerna/pulse-till-done@4.0.0": - "integrity" "sha512-Frb4F7QGckaybRhbF7aosLsJ5e9WuH7h0KUkjlzSByVycxY91UZgaEIVjS2oN9wQLrheLMHl6SiFY0/Pvo0Cxg==" - "resolved" "https://registry.npmjs.org/@lerna/pulse-till-done/-/pulse-till-done-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "npmlog" "^4.1.2" - -"@lerna/query-graph@4.0.0": - "integrity" "sha512-YlP6yI3tM4WbBmL9GCmNDoeQyzcyg1e4W96y/PKMZa5GbyUvkS2+Jc2kwPD+5KcXou3wQZxSPzR3Te5OenaDdg==" - "resolved" "https://registry.npmjs.org/@lerna/query-graph/-/query-graph-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "@lerna/package-graph" "4.0.0" - -"@lerna/resolve-symlink@4.0.0": - "integrity" "sha512-RtX8VEUzqT+uLSCohx8zgmjc6zjyRlh6i/helxtZTMmc4+6O4FS9q5LJas2uGO2wKvBlhcD6siibGt7dIC3xZA==" - "resolved" "https://registry.npmjs.org/@lerna/resolve-symlink/-/resolve-symlink-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "fs-extra" "^9.1.0" - "npmlog" "^4.1.2" - "read-cmd-shim" "^2.0.0" - -"@lerna/rimraf-dir@4.0.0": - "integrity" "sha512-QNH9ABWk9mcMJh2/muD9iYWBk1oQd40y6oH+f3wwmVGKYU5YJD//+zMiBI13jxZRtwBx0vmBZzkBkK1dR11cBg==" - "resolved" "https://registry.npmjs.org/@lerna/rimraf-dir/-/rimraf-dir-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "@lerna/child-process" "4.0.0" - "npmlog" "^4.1.2" - "path-exists" "^4.0.0" - "rimraf" "^3.0.2" - -"@lerna/run-lifecycle@4.0.0": - "integrity" "sha512-IwxxsajjCQQEJAeAaxF8QdEixfI7eLKNm4GHhXHrgBu185JcwScFZrj9Bs+PFKxwb+gNLR4iI5rpUdY8Y0UdGQ==" - "resolved" "https://registry.npmjs.org/@lerna/run-lifecycle/-/run-lifecycle-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "@lerna/npm-conf" "4.0.0" - "npm-lifecycle" "^3.1.5" - "npmlog" "^4.1.2" - -"@lerna/run-topologically@4.0.0": - "integrity" "sha512-EVZw9hGwo+5yp+VL94+NXRYisqgAlj0jWKWtAIynDCpghRxCE5GMO3xrQLmQgqkpUl9ZxQFpICgYv5DW4DksQA==" - "resolved" "https://registry.npmjs.org/@lerna/run-topologically/-/run-topologically-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "@lerna/query-graph" "4.0.0" - "p-queue" "^6.6.2" - -"@lerna/run@4.0.0": - "integrity" "sha512-9giulCOzlMPzcZS/6Eov6pxE9gNTyaXk0Man+iCIdGJNMrCnW7Dme0Z229WWP/UoxDKg71F2tMsVVGDiRd8fFQ==" - "resolved" "https://registry.npmjs.org/@lerna/run/-/run-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "@lerna/command" "4.0.0" - "@lerna/filter-options" "4.0.0" - "@lerna/npm-run-script" "4.0.0" - "@lerna/output" "4.0.0" - "@lerna/profiler" "4.0.0" - "@lerna/run-topologically" "4.0.0" - "@lerna/timer" "4.0.0" - "@lerna/validation-error" "4.0.0" - "p-map" "^4.0.0" - -"@lerna/symlink-binary@4.0.0": - "integrity" "sha512-zualodWC4q1QQc1pkz969hcFeWXOsVYZC5AWVtAPTDfLl+TwM7eG/O6oP+Rr3fFowspxo6b1TQ6sYfDV6HXNWA==" - "resolved" "https://registry.npmjs.org/@lerna/symlink-binary/-/symlink-binary-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "@lerna/create-symlink" "4.0.0" - "@lerna/package" "4.0.0" - "fs-extra" "^9.1.0" - "p-map" "^4.0.0" - -"@lerna/symlink-dependencies@4.0.0": - "integrity" "sha512-BABo0MjeUHNAe2FNGty1eantWp8u83BHSeIMPDxNq0MuW2K3CiQRaeWT3EGPAzXpGt0+hVzBrA6+OT0GPn7Yuw==" - "resolved" "https://registry.npmjs.org/@lerna/symlink-dependencies/-/symlink-dependencies-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "@lerna/create-symlink" "4.0.0" - "@lerna/resolve-symlink" "4.0.0" - "@lerna/symlink-binary" "4.0.0" - "fs-extra" "^9.1.0" - "p-map" "^4.0.0" - "p-map-series" "^2.1.0" - -"@lerna/timer@4.0.0": - "integrity" "sha512-WFsnlaE7SdOvjuyd05oKt8Leg3ENHICnvX3uYKKdByA+S3g+TCz38JsNs7OUZVt+ba63nC2nbXDlUnuT2Xbsfg==" - "resolved" "https://registry.npmjs.org/@lerna/timer/-/timer-4.0.0.tgz" - "version" "4.0.0" - -"@lerna/validation-error@4.0.0": - "integrity" "sha512-1rBOM5/koiVWlRi3V6dB863E1YzJS8v41UtsHgMr6gB2ncJ2LsQtMKlJpi3voqcgh41H8UsPXR58RrrpPpufyw==" - "resolved" "https://registry.npmjs.org/@lerna/validation-error/-/validation-error-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "npmlog" "^4.1.2" - -"@lerna/version@4.0.0": - "integrity" "sha512-otUgiqs5W9zGWJZSCCMRV/2Zm2A9q9JwSDS7s/tlKq4mWCYriWo7+wsHEA/nPTMDyYyBO5oyZDj+3X50KDUzeA==" - "resolved" "https://registry.npmjs.org/@lerna/version/-/version-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "@lerna/check-working-tree" "4.0.0" - "@lerna/child-process" "4.0.0" - "@lerna/collect-updates" "4.0.0" - "@lerna/command" "4.0.0" - "@lerna/conventional-commits" "4.0.0" - "@lerna/github-client" "4.0.0" - "@lerna/gitlab-client" "4.0.0" - "@lerna/output" "4.0.0" - "@lerna/prerelease-id-from-version" "4.0.0" - "@lerna/prompt" "4.0.0" - "@lerna/run-lifecycle" "4.0.0" - "@lerna/run-topologically" "4.0.0" - "@lerna/validation-error" "4.0.0" - "chalk" "^4.1.0" - "dedent" "^0.7.0" - "load-json-file" "^6.2.0" - "minimatch" "^3.0.4" - "npmlog" "^4.1.2" - "p-map" "^4.0.0" - "p-pipe" "^3.1.0" - "p-reduce" "^2.1.0" - "p-waterfall" "^2.1.1" - "semver" "^7.3.4" - "slash" "^3.0.0" - "temp-write" "^4.0.0" - "write-json-file" "^4.3.0" - -"@lerna/write-log-file@4.0.0": - "integrity" "sha512-XRG5BloiArpXRakcnPHmEHJp+4AtnhRtpDIHSghmXD5EichI1uD73J7FgPp30mm2pDRq3FdqB0NbwSEsJ9xFQg==" - "resolved" "https://registry.npmjs.org/@lerna/write-log-file/-/write-log-file-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "npmlog" "^4.1.2" - "write-file-atomic" "^3.0.3" - -"@lezer/common@^0.15.0", "@lezer/common@^0.15.7": - "integrity" "sha512-edfwCxNLnzq5pBA/yaIhwJ3U3Kz8VAUOTRg0hhxaizaI1N+qxV7EXDv/kLCkLeq2RzSFvxexlaj5Mzfn2kY0Ig==" - "resolved" "https://registry.npmjs.org/@lezer/common/-/common-0.15.12.tgz" - "version" "0.15.12" - -"@lezer/common@^1.0.0": - "integrity" "sha512-8TR5++Q/F//tpDsLd5zkrvEX5xxeemafEaek7mUp7Y+bI8cKQXdSqhzTOBaOogETcMOVr0pT3BBPXp13477ciw==" - "resolved" "https://registry.npmjs.org/@lezer/common/-/common-1.0.1.tgz" - "version" "1.0.1" - -"@lezer/highlight@^1.0.0": - "integrity" "sha512-duv9D23O9ghEDnnUDmxu+L8pJy4nYo4AbCOHIudUhscrLSazqeJeK1V50EU6ZufWF1zv0KJwu/frFRyZWXxHBQ==" - "resolved" "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.1.1.tgz" - "version" "1.1.1" - dependencies: - "@lezer/common" "^1.0.0" - -"@lezer/lr@^0.15.4": - "integrity" "sha512-bM6oE6VQZ6hIFxDNKk8bKPa14hqFrV07J/vHGOeiAbJReIaQXmkVb6xQu4MR+JBTLa5arGRyAAjJe1qaQt3Uvg==" - "resolved" "https://registry.npmjs.org/@lezer/lr/-/lr-0.15.8.tgz" - "version" "0.15.8" - dependencies: - "@lezer/common" "^0.15.0" - -"@lezer/lr@^1.0.0": - "integrity" "sha512-qpB7rBzH8f6Mzjv2AVZRahcm+2Cf7nbIH++uXbvVOL1yIRvVWQ3HAM/saeBLCyz/togB7LGo76qdJYL1uKQlqA==" - "resolved" "https://registry.npmjs.org/@lezer/lr/-/lr-1.2.3.tgz" - "version" "1.2.3" - dependencies: - "@lezer/common" "^1.0.0" - -"@malept/cross-spawn-promise@^1.1.0": - "integrity" "sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==" - "resolved" "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz" - "version" "1.1.1" - dependencies: - "cross-spawn" "^7.0.1" - -"@malept/flatpak-bundler@^0.4.0": - "integrity" "sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q==" - "resolved" "https://registry.npmjs.org/@malept/flatpak-bundler/-/flatpak-bundler-0.4.0.tgz" - "version" "0.4.0" - dependencies: - "debug" "^4.1.1" - "fs-extra" "^9.0.0" - "lodash" "^4.17.15" - "tmp-promise" "^3.0.2" - -"@mapbox/node-pre-gyp@^1.0.0": - "integrity" "sha512-aDF3S3rK9Q2gey/WAttUlISduDItz5BU3306M9Eyv6/oS40aMprnopshtlKTykxRNIBEZuRMaZAnbrQ4QtKGyw==" - "resolved" "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.9.tgz" - "version" "1.0.9" - dependencies: - "detect-libc" "^2.0.0" - "https-proxy-agent" "^5.0.0" - "make-dir" "^3.1.0" - "node-fetch" "^2.6.7" - "nopt" "^5.0.0" - "npmlog" "^5.0.1" - "rimraf" "^3.0.2" - "semver" "^7.3.5" - "tar" "^6.1.11" - -"@mischnic/json-sourcemap@^0.1.0": - "integrity" "sha512-dQb3QnfNqmQNYA4nFSN/uLaByIic58gOXq4Y4XqLOWmOrw73KmJPt/HLyG0wvn1bnR6mBKs/Uwvkh+Hns1T0XA==" - "resolved" "https://registry.npmjs.org/@mischnic/json-sourcemap/-/json-sourcemap-0.1.0.tgz" - "version" "0.1.0" - dependencies: - "@lezer/common" "^0.15.7" - "@lezer/lr" "^0.15.4" - "json5" "^2.2.1" - -"@nestjs/cli@^8.1.1": - "integrity" "sha512-y5Imcw1EY0OxD3POAM7SLUB1rFdn5FjbfSsyJrokjKmXY+i6KcBdbRrv3Ox7aeJ4W7wXuckIXZEUlK6lC52dnA==" - "resolved" "https://registry.npmjs.org/@nestjs/cli/-/cli-8.2.8.tgz" - "version" "8.2.8" - dependencies: - "@angular-devkit/core" "13.3.6" - "@angular-devkit/schematics" "13.3.6" - "@angular-devkit/schematics-cli" "13.3.6" - "@nestjs/schematics" "^8.0.3" - "chalk" "3.0.0" - "chokidar" "3.5.3" - "cli-table3" "0.6.2" - "commander" "4.1.1" - "fork-ts-checker-webpack-plugin" "7.2.11" - "inquirer" "7.3.3" - "node-emoji" "1.11.0" - "ora" "5.4.1" - "os-name" "4.0.1" - "rimraf" "3.0.2" - "shelljs" "0.8.5" - "source-map-support" "0.5.21" - "tree-kill" "1.2.2" - "tsconfig-paths" "3.14.1" - "tsconfig-paths-webpack-plugin" "3.5.2" - "typescript" "4.7.4" - "webpack" "5.73.0" - "webpack-node-externals" "3.0.0" - -"@nestjs/common@^7.0.0 || ^8.0.0 || ^9.0.0", "@nestjs/common@^7.0.8 || ^8.0.0", "@nestjs/common@^7.0.8 || ^8.0.0 || ^9.0.0", "@nestjs/common@^8.0.0", "@nestjs/common@^9.0.0": - "integrity" "sha512-m/YsbcBal+gA5CFrDpqXqsSfylo+DIQrkFY3qhVIltsYRfu8ct8J9pqsTO6OPf3mvqdOpFGrV5sBjoyAzOBvsw==" - "resolved" "https://registry.npmjs.org/@nestjs/common/-/common-8.4.7.tgz" - "version" "8.4.7" - dependencies: - "axios" "0.27.2" - "iterare" "1.2.1" - "tslib" "2.4.0" - "uuid" "8.3.2" - -"@nestjs/config@^2.1.0": - "integrity" "sha512-78Eg6oMbCy3D/YvqeiGBTOWei1Jwi3f2pSIZcZ1QxY67kYsJzTRTkwRT8Iv30DbK0sGKc1mcloDLD5UXgZAZtg==" - "resolved" "https://registry.npmjs.org/@nestjs/config/-/config-2.2.0.tgz" - "version" "2.2.0" - dependencies: - "dotenv" "16.0.1" - "dotenv-expand" "8.0.3" - "lodash" "4.17.21" - "uuid" "8.3.2" - -"@nestjs/core@^7.0.0 || ^8.0.0 || ^9.0.0", "@nestjs/core@^8.0.0", "@nestjs/core@^9.0.0": - "integrity" "sha512-XB9uexHqzr2xkPo6QSiQWJJttyYYLmvQ5My64cFvWFi7Wk2NIus0/xUNInwX3kmFWB6pF1ab5Y2ZBvWdPwGBhw==" - "resolved" "https://registry.npmjs.org/@nestjs/core/-/core-8.4.7.tgz" - "version" "8.4.7" - dependencies: - "@nuxtjs/opencollective" "0.3.2" - "fast-safe-stringify" "2.1.1" - "iterare" "1.2.1" - "object-hash" "3.0.0" - "path-to-regexp" "3.2.0" - "tslib" "2.4.0" - "uuid" "8.3.2" - -"@nestjs/mapped-types@*": - "integrity" "sha512-+2kSly4P1QI+9eGt+/uGyPdEG1hVz7nbpqPHWZVYgoqz8eOHljpXPag+UCVRw9zo2XCu4sgNUIGe8Uk0+OvUQg==" - "resolved" "https://registry.npmjs.org/@nestjs/mapped-types/-/mapped-types-1.1.0.tgz" - "version" "1.1.0" - -"@nestjs/mapped-types@1.0.1": - "integrity" "sha512-NFvofzSinp00j5rzUd4tf+xi9od6383iY0JP7o0Bnu1fuItAUkWBgc4EKuIQ3D+c2QI3i9pG1kDWAeY27EMGtg==" - "resolved" "https://registry.npmjs.org/@nestjs/mapped-types/-/mapped-types-1.0.1.tgz" - "version" "1.0.1" - -"@nestjs/platform-express@^8.0.0": - "integrity" "sha512-lPE5Ltg2NbQGRQIwXWY+4cNrXhJdycbxFDQ8mNxSIuv+LbrJBIdEB/NONk+LLn9N/8d2+I2LsIETGQrPvsejBg==" - "resolved" "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-8.4.7.tgz" - "version" "8.4.7" - dependencies: - "body-parser" "1.20.0" - "cors" "2.8.5" - "express" "4.18.1" - "multer" "1.4.4-lts.1" - "tslib" "2.4.0" - -"@nestjs/schedule@^2.0.1": - "integrity" "sha512-4Xaw56WiW3VsxEPPnj/iDtfjcO+sUZyYAeRxD0gnF5havncxjAnv52Iw7UH3DuzzUA784xPGgGje3Fq0Gu925g==" - "resolved" "https://registry.npmjs.org/@nestjs/schedule/-/schedule-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "cron" "2.0.0" - "uuid" "8.3.2" - -"@nestjs/schematics@^8.0.0", "@nestjs/schematics@^8.0.3": - "integrity" "sha512-W/WzaxgH5aE01AiIErE9QrQJ73VR/M/8p8pq0LZmjmNcjZqU5kQyOWUxZg13WYfSpJdOa62t6TZRtFDmgZPoIg==" - "resolved" "https://registry.npmjs.org/@nestjs/schematics/-/schematics-8.0.11.tgz" - "version" "8.0.11" - dependencies: - "@angular-devkit/core" "13.3.5" - "@angular-devkit/schematics" "13.3.5" - "fs-extra" "10.1.0" - "jsonc-parser" "3.0.0" - "pluralize" "8.0.0" - -"@nestjs/serve-static@^3.0.0": - "integrity" "sha512-TpXjgs4136dQqWUjEcONqppqXDsrJhRkmKWzuBMOUAnP4HjHpNmlycvkHnDnWSoG2YD4a7Enh4ViYGWqCfHStA==" - "resolved" "https://registry.npmjs.org/@nestjs/serve-static/-/serve-static-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "path-to-regexp" "0.2.5" - -"@nestjs/swagger@^5.1.1": - "integrity" "sha512-7dNa08WCnTsW/oAk3Ujde+z64JMfNm19DhpXasFR8oJp/9pggYAbYU927HpA+GJsSFJX6adjIRZsCKUqaGWznw==" - "resolved" "https://registry.npmjs.org/@nestjs/swagger/-/swagger-5.2.1.tgz" - "version" "5.2.1" - dependencies: - "@nestjs/mapped-types" "1.0.1" - "lodash" "4.17.21" - "path-to-regexp" "3.2.0" - -"@nestjs/testing@^8.0.0": - "integrity" "sha512-aedpeJFicTBeiTCvJWUG45WMMS53f5eu8t2fXsfjsU1t+WdDJqYcZyrlCzA4dL1B7MfbqaTURdvuVVHTmJO8ag==" - "resolved" "https://registry.npmjs.org/@nestjs/testing/-/testing-8.4.7.tgz" - "version" "8.4.7" - dependencies: - "tslib" "2.4.0" - -"@nestjs/typeorm@^8.1.0": - "integrity" "sha512-hKv0Y9PG7YkHQfjsrNqM1s/VajlT7Mla8gaoblmuLzgMKsOQFsZXSHlXNxXZ8CA4aCPeDUiXtvqc4zocadGiIQ==" - "resolved" "https://registry.npmjs.org/@nestjs/typeorm/-/typeorm-8.1.4.tgz" - "version" "8.1.4" - dependencies: - "uuid" "8.3.2" - -"@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": - "integrity" "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==" - "resolved" "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz" - "version" "5.1.1-v1" - dependencies: - "eslint-scope" "5.1.1" - -"@nodelib/fs.scandir@2.1.5": - "integrity" "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==" - "resolved" "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" - "version" "2.1.5" - dependencies: - "@nodelib/fs.stat" "2.0.5" - "run-parallel" "^1.1.9" - -"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": - "integrity" "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" - "resolved" "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" - "version" "2.0.5" - -"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": - "integrity" "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==" - "resolved" "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" - "version" "1.2.8" - dependencies: - "@nodelib/fs.scandir" "2.1.5" - "fastq" "^1.6.0" - -"@npmcli/ci-detect@^1.0.0": - "integrity" "sha512-3BGrt6FLjqM6br5AhWRKTr3u5GIVkjRYeAFrMp3HjnfICrg4xOrVRwFavKT6tsp++bq5dluL5t8ME/Nha/6c1Q==" - "resolved" "https://registry.npmjs.org/@npmcli/ci-detect/-/ci-detect-1.4.0.tgz" - "version" "1.4.0" - -"@npmcli/fs@^1.0.0": - "integrity" "sha512-8ltnOpRR/oJbOp8vaGUnipOi3bqkcW+sLHFlyXIr08OGHmVJLB1Hn7QtGXbYcpVtH1gAYZTlmDXtE4YV0+AMMQ==" - "resolved" "https://registry.npmjs.org/@npmcli/fs/-/fs-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "@gar/promisify" "^1.0.1" - "semver" "^7.3.5" - -"@npmcli/git@^2.1.0": - "integrity" "sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw==" - "resolved" "https://registry.npmjs.org/@npmcli/git/-/git-2.1.0.tgz" - "version" "2.1.0" - 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" - -"@npmcli/installed-package-contents@^1.0.6": - "integrity" "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==" - "resolved" "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz" - "version" "1.0.7" - dependencies: - "npm-bundled" "^1.1.1" - "npm-normalize-package-bin" "^1.0.1" - -"@npmcli/move-file@^1.0.1": - "integrity" "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==" - "resolved" "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz" - "version" "1.1.2" - dependencies: - "mkdirp" "^1.0.4" - "rimraf" "^3.0.2" - -"@npmcli/node-gyp@^1.0.2": - "integrity" "sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA==" - "resolved" "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz" - "version" "1.0.3" - -"@npmcli/promise-spawn@^1.2.0", "@npmcli/promise-spawn@^1.3.2": - "integrity" "sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg==" - "resolved" "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz" - "version" "1.3.2" - dependencies: - "infer-owner" "^1.0.4" - -"@npmcli/run-script@^1.8.2": - "integrity" "sha512-e42bVZnC6VluBZBAFEr3YrdqSspG3bgilyg4nSLBJ7TRGNCzxHa92XAHxQBLYg0BmgwO4b2mf3h/l5EkEWRn3g==" - "resolved" "https://registry.npmjs.org/@npmcli/run-script/-/run-script-1.8.6.tgz" - "version" "1.8.6" - dependencies: - "@npmcli/node-gyp" "^1.0.2" - "@npmcli/promise-spawn" "^1.3.2" - "node-gyp" "^7.1.0" - "read-package-json-fast" "^2.0.1" - -"@nuxtjs/opencollective@0.3.2": - "integrity" "sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA==" - "resolved" "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.3.2.tgz" - "version" "0.3.2" - dependencies: - "chalk" "^4.1.0" - "consola" "^2.15.0" - "node-fetch" "^2.6.1" - -"@octokit/auth-token@^2.4.4": - "integrity" "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==" - "resolved" "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz" - "version" "2.5.0" - dependencies: - "@octokit/types" "^6.0.3" - -"@octokit/core@^3.5.1", "@octokit/core@>=2", "@octokit/core@>=3": - "integrity" "sha512-omncwpLVxMP+GLpLPgeGJBF6IWJFjXDS5flY5VbppePYX9XehevbDykRH9PdCdvqt9TS5AOTiDide7h0qrkHjw==" - "resolved" "https://registry.npmjs.org/@octokit/core/-/core-3.5.1.tgz" - "version" "3.5.1" - dependencies: - "@octokit/auth-token" "^2.4.4" - "@octokit/graphql" "^4.5.8" - "@octokit/request" "^5.6.0" - "@octokit/request-error" "^2.0.5" - "@octokit/types" "^6.0.3" - "before-after-hook" "^2.2.0" - "universal-user-agent" "^6.0.0" - -"@octokit/endpoint@^6.0.1": - "integrity" "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==" - "resolved" "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz" - "version" "6.0.12" - dependencies: - "@octokit/types" "^6.0.3" - "is-plain-object" "^5.0.0" - "universal-user-agent" "^6.0.0" - -"@octokit/graphql@^4.5.8": - "integrity" "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==" - "resolved" "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz" - "version" "4.8.0" - dependencies: - "@octokit/request" "^5.6.0" - "@octokit/types" "^6.0.3" - "universal-user-agent" "^6.0.0" - -"@octokit/openapi-types@^11.2.0": - "integrity" "sha512-PBsVO+15KSlGmiI8QAzaqvsNlZlrDlyAJYcrXBCvVUxCp7VnXjkwPoFHgjEJXx3WF9BAwkA6nfCUA7i9sODzKA==" - "resolved" "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-11.2.0.tgz" - "version" "11.2.0" - -"@octokit/plugin-enterprise-rest@^6.0.1": - "integrity" "sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw==" - "resolved" "https://registry.npmjs.org/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz" - "version" "6.0.1" - -"@octokit/plugin-paginate-rest@^2.16.8": - "integrity" "sha512-tzMbrbnam2Mt4AhuyCHvpRkS0oZ5MvwwcQPYGtMv4tUa5kkzG58SVB0fcsLulOZQeRnOgdkZWkRUiyBlh0Bkyw==" - "resolved" "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.17.0.tgz" - "version" "2.17.0" - dependencies: - "@octokit/types" "^6.34.0" - -"@octokit/plugin-request-log@^1.0.4": - "integrity" "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==" - "resolved" "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz" - "version" "1.0.4" - -"@octokit/plugin-rest-endpoint-methods@^5.12.0": - "integrity" "sha512-uJjMTkN1KaOIgNtUPMtIXDOjx6dGYysdIFhgA52x4xSadQCz3b/zJexvITDVpANnfKPW/+E0xkOvLntqMYpviA==" - "resolved" "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.13.0.tgz" - "version" "5.13.0" - dependencies: - "@octokit/types" "^6.34.0" - "deprecation" "^2.3.1" - -"@octokit/request-error@^2.0.5", "@octokit/request-error@^2.1.0": - "integrity" "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==" - "resolved" "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "@octokit/types" "^6.0.3" - "deprecation" "^2.0.0" - "once" "^1.4.0" - -"@octokit/request@^5.6.0": - "integrity" "sha512-je66CvSEVf0jCpRISxkUcCa0UkxmFs6eGDRSbfJtAVwbLH5ceqF+YEyC8lj8ystKyZTy8adWr0qmkY52EfOeLA==" - "resolved" "https://registry.npmjs.org/@octokit/request/-/request-5.6.2.tgz" - "version" "5.6.2" - dependencies: - "@octokit/endpoint" "^6.0.1" - "@octokit/request-error" "^2.1.0" - "@octokit/types" "^6.16.1" - "is-plain-object" "^5.0.0" - "node-fetch" "^2.6.1" - "universal-user-agent" "^6.0.0" - -"@octokit/rest@^18.1.0": - "integrity" "sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q==" - "resolved" "https://registry.npmjs.org/@octokit/rest/-/rest-18.12.0.tgz" - "version" "18.12.0" - dependencies: - "@octokit/core" "^3.5.1" - "@octokit/plugin-paginate-rest" "^2.16.8" - "@octokit/plugin-request-log" "^1.0.4" - "@octokit/plugin-rest-endpoint-methods" "^5.12.0" - -"@octokit/types@^6.0.3", "@octokit/types@^6.16.1", "@octokit/types@^6.34.0": - "integrity" "sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw==" - "resolved" "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz" - "version" "6.34.0" - dependencies: - "@octokit/openapi-types" "^11.2.0" - -"@onflow/config@^1.1.1", "@onflow/config@^1.1.2": - "integrity" "sha512-Jnorp86YkGFJLpCE4ufY8wva5vW8MJxkPzLRITW+aqUDVH9FQvYuTCLHsujy/Mrr9+WgrClf6MQrA2bUCE2zEg==" - "resolved" "https://registry.npmjs.org/@onflow/config/-/config-1.1.2.tgz" - "version" "1.1.2" - dependencies: - "@babel/runtime" "^7.18.6" - "@onflow/util-actor" "^1.2.0" - "eslint" "^8.34.0" - "eslint-plugin-jsdoc" "^40.0.0" - -"@onflow/fcl@^1.6.0": - "integrity" "sha512-ksZFzf0JRtSYDNgCJKeuOt1R39DfBs62uym+GVPW9B5ahWjShoD2D9KYHVZiDbvMX19wUmB9vkgkiUvYfYEobw==" - "resolved" "https://registry.npmjs.org/@onflow/fcl/-/fcl-1.6.0.tgz" - "version" "1.6.0" - dependencies: - "@babel/runtime" "^7.18.6" - "@onflow/config" "^1.1.2" - "@onflow/interaction" "0.0.11" - "@onflow/rlp" "^1.1.0" - "@onflow/sdk" "^1.2.2" - "@onflow/types" "^1.1.0" - "@onflow/util-actor" "^1.2.0" - "@onflow/util-address" "^1.1.0" - "@onflow/util-invariant" "^1.1.0" - "@onflow/util-logger" "^1.2.2" - "@onflow/util-template" "^1.1.0" - "@onflow/util-uid" "^1.1.0" - "cross-fetch" "^3.1.6" - -"@onflow/interaction@0.0.11": - "integrity" "sha512-Xuq1Mmx6Wyba/F/L+QLQs0yJeQDsIDwy5SKk5vrCuVgIj0yD8k506g5L8ODrbM1LWll8i0tQsoOi0F85vNl5sA==" - "resolved" "https://registry.npmjs.org/@onflow/interaction/-/interaction-0.0.11.tgz" - "version" "0.0.11" - -"@onflow/rlp@^1.1.0": - "integrity" "sha512-JJj4dZpKaWmCOXnado+D3RU5xYAXui9kHOmCVfdLReYHIsYBgxwHCDO/hDiQjrbmfLpiybbJKTaIldu+xkCU3Q==" - "resolved" "https://registry.npmjs.org/@onflow/rlp/-/rlp-1.1.0.tgz" - "version" "1.1.0" - dependencies: - "@babel/runtime" "^7.18.6" - "buffer" "^6.0.3" - -"@onflow/sdk@^1.2.2": - "integrity" "sha512-OGwp98C7iP7KUGFoBxgnEr52hnr7vxBTCu/TI/w1giF8USPgjgQXNxJdHVauY54Yu/ruoT6XfdSMAS4PACCB/w==" - "resolved" "https://registry.npmjs.org/@onflow/sdk/-/sdk-1.2.2.tgz" - "version" "1.2.2" - dependencies: - "@babel/runtime" "^7.18.6" - "@onflow/config" "^1.1.1" - "@onflow/rlp" "^1.1.0" - "@onflow/transport-http" "^1.7.1" - "@onflow/util-actor" "^1.2.0" - "@onflow/util-address" "^1.1.0" - "@onflow/util-invariant" "^1.1.0" - "@onflow/util-logger" "^1.2.1" - "@onflow/util-template" "^1.1.0" - "deepmerge" "^4.2.2" - "sha3" "^2.1.4" - -"@onflow/transport-http@^1.7.1": - "integrity" "sha512-enSKRDf2OMIH61ltyZe5pxLB8KifdRdVpWwE0MU2S0Vq5DmNN3FfwUZVh1nrK2aJZkLdryJrNJtvv7ot2NPrYA==" - "resolved" "https://registry.npmjs.org/@onflow/transport-http/-/transport-http-1.7.1.tgz" - "version" "1.7.1" - dependencies: - "@babel/runtime" "^7.18.6" - "@onflow/util-address" "^1.1.0" - "@onflow/util-invariant" "^1.1.0" - "@onflow/util-logger" "^1.2.1" - "@onflow/util-template" "^1.1.0" - "abort-controller" "^3.0.0" - "cross-fetch" "^3.1.6" - -"@onflow/types@^1.0.3", "@onflow/types@^1.1.0": - "integrity" "sha512-UUd2ZAFqdd8BHW//uTg+YRlh3EIH9Na+UYJ9qXpt6y87qjW0Lf4Zkhn6H5IqvhIJsjK17QYnXLFpoXItD/+ToQ==" - "resolved" "https://registry.npmjs.org/@onflow/types/-/types-1.1.0.tgz" - "version" "1.1.0" - dependencies: - "@babel/runtime" "^7.18.6" - -"@onflow/util-actor@^1.2.0": - "integrity" "sha512-voyHXE3qYNC+P75vzv55pGDDwpxxWKWH0aToR/3g9Bq8nKGcGoszxaMJkVy+fKX1akfdT0yKr/GxXRkjCS9SBg==" - "resolved" "https://registry.npmjs.org/@onflow/util-actor/-/util-actor-1.2.0.tgz" - "version" "1.2.0" - dependencies: - "@babel/runtime" "^7.18.6" - "queue-microtask" "1.2.3" - -"@onflow/util-address@^1.1.0": - "integrity" "sha512-HhJOIfNaYAoeYuTNUe85jt4fqnJhFmSbYqyufiJBrplwd3eKmNsan0NYvVYO4U1ecu3KyuY4D9R/NtjGpHjMlA==" - "resolved" "https://registry.npmjs.org/@onflow/util-address/-/util-address-1.1.0.tgz" - "version" "1.1.0" - dependencies: - "@babel/runtime" "^7.18.6" - -"@onflow/util-invariant@^1.1.0": - "integrity" "sha512-5uxweKl5tqeqB1QLzs3dWWLtpNo7H4PgcmgnRIcC2oItAkELcnVCybDdlfYjKB4n/dlg3rIym8cJQE2tBeOpZQ==" - "resolved" "https://registry.npmjs.org/@onflow/util-invariant/-/util-invariant-1.1.0.tgz" - "version" "1.1.0" - dependencies: - "@babel/runtime" "^7.18.6" - -"@onflow/util-logger@^1.2.1", "@onflow/util-logger@^1.2.2": - "integrity" "sha512-qgOZFfp4NvGuIwZ6zMPiskt/xBNo6wG+L4k/nt3v4/eVzNZeUR5OZ7XlcA0fjtr2a3W9CNt83bmFSq/11ZGgCw==" - "resolved" "https://registry.npmjs.org/@onflow/util-logger/-/util-logger-1.2.2.tgz" - "version" "1.2.2" - dependencies: - "@babel/runtime" "^7.18.6" - -"@onflow/util-template@^1.1.0": - "integrity" "sha512-gGqJJH5OTPPRmHk6YxMw4t5Ecy7iHnj00ZlCE7lnlOnpGUNdHrNNfoeE//hO8TBGNNVpOkEQERWiLDph+/oIxg==" - "resolved" "https://registry.npmjs.org/@onflow/util-template/-/util-template-1.1.0.tgz" - "version" "1.1.0" - dependencies: - "@babel/runtime" "^7.18.6" - -"@onflow/util-uid@^1.1.0": - "integrity" "sha512-HmWfKCOXoz1/TIu7fRx6iR7Nfhq6q5Tmn4YWc868SIfFeWv/inpvVJyrKX0nORf87csSnRSqdDzrJGBowgcXVA==" - "resolved" "https://registry.npmjs.org/@onflow/util-uid/-/util-uid-1.1.0.tgz" - "version" "1.1.0" - dependencies: - "@babel/runtime" "^7.18.6" - -"@parcel/bundler-default@2.7.0": - "integrity" "sha512-PU5MtWWhc+dYI9x8mguYnm9yiG6TkI7niRpxgJgtqAyGHuEyNXVBQQ0X+qyOF4D9LdankBf8uNN18g31IET2Zg==" - "resolved" "https://registry.npmjs.org/@parcel/bundler-default/-/bundler-default-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "@parcel/diagnostic" "2.7.0" - "@parcel/hash" "2.7.0" - "@parcel/plugin" "2.7.0" - "@parcel/utils" "2.7.0" - "nullthrows" "^1.1.1" - -"@parcel/cache@2.7.0": - "integrity" "sha512-JlXNoZXcWzLKdDlfeF3dIj5Vtel5T9vtdBN72PJ+cjC4qNHk4Uwvc5sfOBELuibGN0bVu2bwY9nUgSwCiB1iIA==" - "resolved" "https://registry.npmjs.org/@parcel/cache/-/cache-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "@parcel/fs" "2.7.0" - "@parcel/logger" "2.7.0" - "@parcel/utils" "2.7.0" - "lmdb" "2.5.2" - -"@parcel/codeframe@2.7.0": - "integrity" "sha512-UTKx0jejJmmO1dwTHSJuRgrO8N6PMlkxRT6sew8N6NC3Bgv6pu0EbO+RtlWt/jCvzcdLOPdIoTzj4MMZvgcMYg==" - "resolved" "https://registry.npmjs.org/@parcel/codeframe/-/codeframe-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "chalk" "^4.1.0" - -"@parcel/compressor-raw@2.7.0": - "integrity" "sha512-SCXwnOOQT6EmpusBsYWNQ/RFri+2JnKuE0gMSf2dROl2xbererX45FYzeDplWALCKAdjMNDpFwU+FyMYoVZSCQ==" - "resolved" "https://registry.npmjs.org/@parcel/compressor-raw/-/compressor-raw-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "@parcel/plugin" "2.7.0" - -"@parcel/config-default@2.7.0": - "integrity" "sha512-ZzsLr97AYrz8c9k6qn3DlqPzifi3vbP7q3ynUrAFxmt0L4+K0H9N508ZkORYmCgaFjLIQ8Y3eWpwCJ0AewPNIg==" - "resolved" "https://registry.npmjs.org/@parcel/config-default/-/config-default-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "@parcel/bundler-default" "2.7.0" - "@parcel/compressor-raw" "2.7.0" - "@parcel/namer-default" "2.7.0" - "@parcel/optimizer-css" "2.7.0" - "@parcel/optimizer-htmlnano" "2.7.0" - "@parcel/optimizer-image" "2.7.0" - "@parcel/optimizer-svgo" "2.7.0" - "@parcel/optimizer-terser" "2.7.0" - "@parcel/packager-css" "2.7.0" - "@parcel/packager-html" "2.7.0" - "@parcel/packager-js" "2.7.0" - "@parcel/packager-raw" "2.7.0" - "@parcel/packager-svg" "2.7.0" - "@parcel/reporter-dev-server" "2.7.0" - "@parcel/resolver-default" "2.7.0" - "@parcel/runtime-browser-hmr" "2.7.0" - "@parcel/runtime-js" "2.7.0" - "@parcel/runtime-react-refresh" "2.7.0" - "@parcel/runtime-service-worker" "2.7.0" - "@parcel/transformer-babel" "2.7.0" - "@parcel/transformer-css" "2.7.0" - "@parcel/transformer-html" "2.7.0" - "@parcel/transformer-image" "2.7.0" - "@parcel/transformer-js" "2.7.0" - "@parcel/transformer-json" "2.7.0" - "@parcel/transformer-postcss" "2.7.0" - "@parcel/transformer-posthtml" "2.7.0" - "@parcel/transformer-raw" "2.7.0" - "@parcel/transformer-react-refresh-wrap" "2.7.0" - "@parcel/transformer-svg" "2.7.0" - -"@parcel/core@^2.7.0", "@parcel/core@2.7.0": - "integrity" "sha512-7yKZUdh314Q/kU/9+27ZYTfcnXS6VYHuG+iiUlIohnvUUybxLqVJhdMU9Q+z2QcPka1IdJWz4K4Xx0y6/4goyg==" - "resolved" "https://registry.npmjs.org/@parcel/core/-/core-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "@mischnic/json-sourcemap" "^0.1.0" - "@parcel/cache" "2.7.0" - "@parcel/diagnostic" "2.7.0" - "@parcel/events" "2.7.0" - "@parcel/fs" "2.7.0" - "@parcel/graph" "2.7.0" - "@parcel/hash" "2.7.0" - "@parcel/logger" "2.7.0" - "@parcel/package-manager" "2.7.0" - "@parcel/plugin" "2.7.0" - "@parcel/source-map" "^2.0.0" - "@parcel/types" "2.7.0" - "@parcel/utils" "2.7.0" - "@parcel/workers" "2.7.0" - "abortcontroller-polyfill" "^1.1.9" - "base-x" "^3.0.8" - "browserslist" "^4.6.6" - "clone" "^2.1.1" - "dotenv" "^7.0.0" - "dotenv-expand" "^5.1.0" - "json5" "^2.2.0" - "msgpackr" "^1.5.4" - "nullthrows" "^1.1.1" - "semver" "^5.7.1" - -"@parcel/css@^1.12.2": - "integrity" "sha512-S4QD4Jd+j8QzU5ZZpfg+1cdmEXeJ71wabbV6ff3DJB/05gXWj9Qf/ZZUVtwH3V255Oif6/jcEmcWY4AmFXTyLw==" - "resolved" "https://registry.npmjs.org/@parcel/css/-/css-1.13.0.tgz" - "version" "1.13.0" - dependencies: - "detect-libc" "^1.0.3" - optionalDependencies: - "@parcel/css-darwin-arm64" "1.13.0" - "@parcel/css-darwin-x64" "1.13.0" - "@parcel/css-linux-arm-gnueabihf" "1.13.0" - "@parcel/css-linux-arm64-gnu" "1.13.0" - "@parcel/css-linux-arm64-musl" "1.13.0" - "@parcel/css-linux-x64-gnu" "1.13.0" - "@parcel/css-linux-x64-musl" "1.13.0" - "@parcel/css-win32-x64-msvc" "1.13.0" - -"@parcel/diagnostic@2.7.0": - "integrity" "sha512-pdq/cTwVoL0n8yuDCRXFRSQHVWdmmIXPt3R3iT4KtYDYvOrMT2dLPT79IMqQkhYPANW8GuL15n/WxRngfRdkug==" - "resolved" "https://registry.npmjs.org/@parcel/diagnostic/-/diagnostic-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "@mischnic/json-sourcemap" "^0.1.0" - "nullthrows" "^1.1.1" - -"@parcel/events@2.7.0": - "integrity" "sha512-kQDwMKgZ1U4M/G17qeDYF6bW5kybluN6ajYPc7mZcrWg+trEI/oXi81GMFaMX0BSUhwhbiN5+/Vb2wiG/Sn6ig==" - "resolved" "https://registry.npmjs.org/@parcel/events/-/events-2.7.0.tgz" - "version" "2.7.0" - -"@parcel/fs-search@2.7.0": - "integrity" "sha512-K1Hv25bnRpwQVA15RvcRuB8ZhfclnCHA8N8L6w7Ul1ncSJDxCIkIAc5hAubYNNYW3kWjCC2SOaEgFKnbvMllEQ==" - "resolved" "https://registry.npmjs.org/@parcel/fs-search/-/fs-search-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "detect-libc" "^1.0.3" - -"@parcel/fs@2.7.0": - "integrity" "sha512-PU5fo4Hh8y03LZgemgVREttc0wyHQUNmsJCybxTB7EjJie2CqJRumo+DFppArlvdchLwJdc9em03yQV/GNWrEg==" - "resolved" "https://registry.npmjs.org/@parcel/fs/-/fs-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "@parcel/fs-search" "2.7.0" - "@parcel/types" "2.7.0" - "@parcel/utils" "2.7.0" - "@parcel/watcher" "^2.0.0" - "@parcel/workers" "2.7.0" - -"@parcel/graph@2.7.0": - "integrity" "sha512-Q6E94GS6q45PtsZh+m+gvFRp/N1Qopxhu2sxjcWsGs5iBd6IWn2oYLWOH5iVzEjWuYpW2HkB08lH6J50O63uOA==" - "resolved" "https://registry.npmjs.org/@parcel/graph/-/graph-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "@parcel/utils" "2.7.0" - "nullthrows" "^1.1.1" - -"@parcel/hash@2.7.0": - "integrity" "sha512-k6bSKnIlPJMPU3yjQzfgfvF9zuJZGOAlJgzpL4BbWvdbE8BTdjzLcFn0Ujrtud94EgIkiXd22sC2HpCUWoHGdA==" - "resolved" "https://registry.npmjs.org/@parcel/hash/-/hash-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "detect-libc" "^1.0.3" - "xxhash-wasm" "^0.4.2" - -"@parcel/logger@2.7.0": - "integrity" "sha512-qjMY/bYo38+o+OiIrTRldU9CwL1E7J72t+xkTP8QIcUxLWz5LYR0YbynZUVulmBSfqsykjjxCy4a+8siVr+lPw==" - "resolved" "https://registry.npmjs.org/@parcel/logger/-/logger-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "@parcel/diagnostic" "2.7.0" - "@parcel/events" "2.7.0" - -"@parcel/markdown-ansi@2.7.0": - "integrity" "sha512-ipOX0D6FVZFEXeb/z8MnTMq2RQEIuaILY90olVIuHEFLHHfOPEn+RK3u13HA1ChF5/9E3cMD79tu6x9JL9Kqag==" - "resolved" "https://registry.npmjs.org/@parcel/markdown-ansi/-/markdown-ansi-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "chalk" "^4.1.0" - -"@parcel/namer-default@2.7.0": - "integrity" "sha512-lIKMdsmi//7fepecNDYmJYzBlL91HifPsX03lJCdu1dC6q5fBs+gG0XjKKG7yPnSCw1qH/4m7drzt9+dRZYAHQ==" - "resolved" "https://registry.npmjs.org/@parcel/namer-default/-/namer-default-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "@parcel/diagnostic" "2.7.0" - "@parcel/plugin" "2.7.0" - "nullthrows" "^1.1.1" - -"@parcel/node-resolver-core@2.7.0": - "integrity" "sha512-5UJQHalqMxdhJIs2hhqQzFfQpF7+NAowsRq064lYtiRvcD8wMr3OOQ9wd1iazGpFSl4JKdT7BwDU9/miDJmanQ==" - "resolved" "https://registry.npmjs.org/@parcel/node-resolver-core/-/node-resolver-core-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "@parcel/diagnostic" "2.7.0" - "@parcel/utils" "2.7.0" - "nullthrows" "^1.1.1" - "semver" "^5.7.1" - -"@parcel/optimizer-css@2.7.0": - "integrity" "sha512-IfnOMACqhcAclKyOW9X9JpsknB6OShk9OVvb8EvbDTKHJhQHNNmzE88OkSI/pS3ZVZP9Zj+nWcVHguV+kvDeiQ==" - "resolved" "https://registry.npmjs.org/@parcel/optimizer-css/-/optimizer-css-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "@parcel/css" "^1.12.2" - "@parcel/diagnostic" "2.7.0" - "@parcel/plugin" "2.7.0" - "@parcel/source-map" "^2.0.0" - "@parcel/utils" "2.7.0" - "browserslist" "^4.6.6" - "nullthrows" "^1.1.1" - -"@parcel/optimizer-htmlnano@2.7.0": - "integrity" "sha512-5QrGdWS5Hi4VXE3nQNrGqugmSXt68YIsWwKRAdarOxzyULSJS3gbCiQOXqIPRJobfZjnSIcdtkyxSiCUe1inIA==" - "resolved" "https://registry.npmjs.org/@parcel/optimizer-htmlnano/-/optimizer-htmlnano-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "@parcel/plugin" "2.7.0" - "htmlnano" "^2.0.0" - "nullthrows" "^1.1.1" - "posthtml" "^0.16.5" - "svgo" "^2.4.0" - -"@parcel/optimizer-image@2.7.0": - "integrity" "sha512-EnaXz5UjR67FUu0BEcqZTT9LsbB/iFAkkghCotbnbOuC5QQsloq6tw54TKU3y+R3qsjgUoMtGxPcGfVoXxZXYw==" - "resolved" "https://registry.npmjs.org/@parcel/optimizer-image/-/optimizer-image-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "@parcel/diagnostic" "2.7.0" - "@parcel/plugin" "2.7.0" - "@parcel/utils" "2.7.0" - "@parcel/workers" "2.7.0" - "detect-libc" "^1.0.3" - -"@parcel/optimizer-svgo@2.7.0": - "integrity" "sha512-IO1JV4NpfP3V7FrhsqCcV8pDQIHraFi1/ZvEJyssITxjH49Im/txKlwMiQuZZryAPn8Xb8g395Muawuk6AK6sg==" - "resolved" "https://registry.npmjs.org/@parcel/optimizer-svgo/-/optimizer-svgo-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "@parcel/diagnostic" "2.7.0" - "@parcel/plugin" "2.7.0" - "@parcel/utils" "2.7.0" - "svgo" "^2.4.0" - -"@parcel/optimizer-terser@2.7.0": - "integrity" "sha512-07VZjIO8xsl2/WmS/qHI8lI/cpu47iS9eRpqwfZEEsdk1cfz50jhWkmFudHBxiHGMfcZ//1+DdaPg9RDBWZtZA==" - "resolved" "https://registry.npmjs.org/@parcel/optimizer-terser/-/optimizer-terser-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "@parcel/diagnostic" "2.7.0" - "@parcel/plugin" "2.7.0" - "@parcel/source-map" "^2.0.0" - "@parcel/utils" "2.7.0" - "nullthrows" "^1.1.1" - "terser" "^5.2.0" - -"@parcel/package-manager@2.7.0": - "integrity" "sha512-wmfSX1mRrTi8MeA4KrnPk/x7zGUsILCQmTo6lA4gygzAxDbM1pGuyFN8/Kt0y0SFO2lbljARtD/4an5qdotH+Q==" - "resolved" "https://registry.npmjs.org/@parcel/package-manager/-/package-manager-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "@parcel/diagnostic" "2.7.0" - "@parcel/fs" "2.7.0" - "@parcel/logger" "2.7.0" - "@parcel/types" "2.7.0" - "@parcel/utils" "2.7.0" - "@parcel/workers" "2.7.0" - "semver" "^5.7.1" - -"@parcel/packager-css@2.7.0": - "integrity" "sha512-44nzZwu+ssGuiFmYM6cf/Y4iChiUZ4DUzzpegnGlhXtKJKe4NHntxThJynuRZWKN2AAf48avApDpimg2jW0KDw==" - "resolved" "https://registry.npmjs.org/@parcel/packager-css/-/packager-css-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "@parcel/plugin" "2.7.0" - "@parcel/source-map" "^2.0.0" - "@parcel/utils" "2.7.0" - "nullthrows" "^1.1.1" - -"@parcel/packager-html@2.7.0": - "integrity" "sha512-Zgqd7sdcY/UnR370GR0q2ilmEohUDXsO8A1F28QCJzIsR1iCB6KRUT74+pawfQ1IhXZLaaFLLYe0UWcfm0JeXg==" - "resolved" "https://registry.npmjs.org/@parcel/packager-html/-/packager-html-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "@parcel/plugin" "2.7.0" - "@parcel/types" "2.7.0" - "@parcel/utils" "2.7.0" - "nullthrows" "^1.1.1" - "posthtml" "^0.16.5" - -"@parcel/packager-js@2.7.0": - "integrity" "sha512-wTRdM81PgRVDzWGXdWmqLwguWnTYWzhEDdjXpW2n8uMOu/CjHhMtogk65aaYk3GOnq6OBL/NsrmBiV/zKPj1vA==" - "resolved" "https://registry.npmjs.org/@parcel/packager-js/-/packager-js-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "@parcel/diagnostic" "2.7.0" - "@parcel/hash" "2.7.0" - "@parcel/plugin" "2.7.0" - "@parcel/source-map" "^2.0.0" - "@parcel/utils" "2.7.0" - "globals" "^13.2.0" - "nullthrows" "^1.1.1" - -"@parcel/packager-raw@2.7.0": - "integrity" "sha512-jg2Zp8dI5VpIQlaeahXDCfrPN9m/DKht1NkR9P2CylMAwqCcc1Xc1RRiF0wfwcPZpPMpq1265n+4qnB7rjGBlA==" - "resolved" "https://registry.npmjs.org/@parcel/packager-raw/-/packager-raw-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "@parcel/plugin" "2.7.0" - -"@parcel/packager-svg@2.7.0": - "integrity" "sha512-EmJg3HpD6/xxKBjir/CdCKJZwI24iVfBuxRS9LUp3xHAIebOzVh1z6IN+i2Di5+NyRwfOFaLliL4uMa1zwbyCA==" - "resolved" "https://registry.npmjs.org/@parcel/packager-svg/-/packager-svg-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "@parcel/plugin" "2.7.0" - "@parcel/types" "2.7.0" - "@parcel/utils" "2.7.0" - "posthtml" "^0.16.4" - -"@parcel/plugin@2.7.0": - "integrity" "sha512-qqgx+nnMn6/0lRc4lKbLGmhNtBiT93S2gFNB4Eb4Pfz/SxVYoW+fmml+KdfOSiZffWOAH5L6NwhyD7N8aSikzw==" - "resolved" "https://registry.npmjs.org/@parcel/plugin/-/plugin-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "@parcel/types" "2.7.0" - -"@parcel/reporter-cli@2.7.0": - "integrity" "sha512-80gEODg8cnAmnxGVuaSVDo8JJ54P9AA2bHwSs1cIkHWlJ3BjDQb83H31bBHncJ5Kn5kQ/j+7WjlqHpTCiOR9PA==" - "resolved" "https://registry.npmjs.org/@parcel/reporter-cli/-/reporter-cli-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "@parcel/plugin" "2.7.0" - "@parcel/types" "2.7.0" - "@parcel/utils" "2.7.0" - "chalk" "^4.1.0" - "term-size" "^2.2.1" - -"@parcel/reporter-dev-server@2.7.0": - "integrity" "sha512-ySuou5addK8fGue8aXzo536BaEjMujDrEc1xkp4TasInXHVcA98b+SYX5NAZTGob5CxKvZQ5ylhg77zW30B+iA==" - "resolved" "https://registry.npmjs.org/@parcel/reporter-dev-server/-/reporter-dev-server-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "@parcel/plugin" "2.7.0" - "@parcel/utils" "2.7.0" - -"@parcel/resolver-default@2.7.0": - "integrity" "sha512-v8TvWsbLK7/q7n4gv6OrYNbW18xUx4zKbVMGZb1u4yMhzEH4HFr1D9OeoTq3jk+ximAigds8B6triQbL5exF7A==" - "resolved" "https://registry.npmjs.org/@parcel/resolver-default/-/resolver-default-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "@parcel/node-resolver-core" "2.7.0" - "@parcel/plugin" "2.7.0" - -"@parcel/runtime-browser-hmr@2.7.0": - "integrity" "sha512-PLbMLdclQeYsi2LkilZVGFV1n3y55G1jaBvby4ekedUZjMw3SWdMY2tDxgSDdFWfLCnYHJXdGUQSzGGi1kPzjA==" - "resolved" "https://registry.npmjs.org/@parcel/runtime-browser-hmr/-/runtime-browser-hmr-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "@parcel/plugin" "2.7.0" - "@parcel/utils" "2.7.0" - -"@parcel/runtime-js@2.7.0": - "integrity" "sha512-9/YUZTBNrSN2H6rbz/o1EOM0O7I3ZR/x9IDzxjJBD6Mi+0uCgCD02aedare/SNr1qgnbZZWmhpOzC+YgREcfLA==" - "resolved" "https://registry.npmjs.org/@parcel/runtime-js/-/runtime-js-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "@parcel/plugin" "2.7.0" - "@parcel/utils" "2.7.0" - "nullthrows" "^1.1.1" - -"@parcel/runtime-react-refresh@2.7.0": - "integrity" "sha512-vDKO0rWqRzEpmvoZ4kkYUiSsTxT5NnH904BFPFxKI0wJCl6yEmPuEifmATo73OuYhP6jIP3Qfl1R4TtiDFPJ1Q==" - "resolved" "https://registry.npmjs.org/@parcel/runtime-react-refresh/-/runtime-react-refresh-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "@parcel/plugin" "2.7.0" - "@parcel/utils" "2.7.0" - "react-error-overlay" "6.0.9" - "react-refresh" "^0.9.0" - -"@parcel/runtime-service-worker@2.7.0": - "integrity" "sha512-uD2pAV0yV6+e7JaWH4KVPbG+zRCrxr/OACyS9tIh+Q/R1vRmh8zGM3yhdrcoiZ7tFOnM72vd6xY11eTrUsSVig==" - "resolved" "https://registry.npmjs.org/@parcel/runtime-service-worker/-/runtime-service-worker-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "@parcel/plugin" "2.7.0" - "@parcel/utils" "2.7.0" - "nullthrows" "^1.1.1" - -"@parcel/source-map@^2.0.0": - "integrity" "sha512-E7UOEIof2o89LrKk1agSLmwakjigmEdDp1ZaEdsLVEvq63R/bul4Ij5CT+0ZDcijGpl5tnTbQADY9EyYGtjYgQ==" - "resolved" "https://registry.npmjs.org/@parcel/source-map/-/source-map-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "detect-libc" "^1.0.3" - -"@parcel/transformer-babel@2.7.0": - "integrity" "sha512-7iklDXXnKH1530+QbI+e4kIJ+Q1puA1ulRS10db3aUJMj5GnvXGDFwhSZ7+T1ps66QHO7cVO29VlbqiRDarH1Q==" - "resolved" "https://registry.npmjs.org/@parcel/transformer-babel/-/transformer-babel-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "@parcel/diagnostic" "2.7.0" - "@parcel/plugin" "2.7.0" - "@parcel/source-map" "^2.0.0" - "@parcel/utils" "2.7.0" - "browserslist" "^4.6.6" - "json5" "^2.2.0" - "nullthrows" "^1.1.1" - "semver" "^5.7.0" - -"@parcel/transformer-css@2.7.0": - "integrity" "sha512-J4EpWK9spQpXyNCmKK8Xnane0xW/1B/EAmfp7Fiv7g+5yUjY4ODf4KUugvE+Eb2gekPkhOKNHermO2KrX0/PFA==" - "resolved" "https://registry.npmjs.org/@parcel/transformer-css/-/transformer-css-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "@parcel/css" "^1.12.2" - "@parcel/diagnostic" "2.7.0" - "@parcel/plugin" "2.7.0" - "@parcel/source-map" "^2.0.0" - "@parcel/utils" "2.7.0" - "browserslist" "^4.6.6" - "nullthrows" "^1.1.1" - -"@parcel/transformer-html@2.7.0": - "integrity" "sha512-wYJl5rn81W+Rlk9oQwDJcjoVsWVDKyeri84FzmlGXOsg0EYgnqOiG+3MDM8GeZjfuGe5fuoum4eqZeS0WdUHXw==" - "resolved" "https://registry.npmjs.org/@parcel/transformer-html/-/transformer-html-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "@parcel/diagnostic" "2.7.0" - "@parcel/hash" "2.7.0" - "@parcel/plugin" "2.7.0" - "nullthrows" "^1.1.1" - "posthtml" "^0.16.5" - "posthtml-parser" "^0.10.1" - "posthtml-render" "^3.0.0" - "semver" "^5.7.1" - -"@parcel/transformer-image@2.7.0": - "integrity" "sha512-mhi9/R5/ULhCkL2COVIKhNFoLDiZwQgprdaTJr5fnODggVxEX5o7ebFV6KNLMTEkwZUJWoB1hL0ziI0++DtoFA==" - "resolved" "https://registry.npmjs.org/@parcel/transformer-image/-/transformer-image-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "@parcel/plugin" "2.7.0" - "@parcel/utils" "2.7.0" - "@parcel/workers" "2.7.0" - "nullthrows" "^1.1.1" - -"@parcel/transformer-js@2.7.0": - "integrity" "sha512-mzerR+D4rDomUSIk5RSTa2w+DXBdXUeQrpDO74WCDdpDi1lIl8ppFpqtmU7O6y6p8QsgkmS9b0g/vhcry6CJTA==" - "resolved" "https://registry.npmjs.org/@parcel/transformer-js/-/transformer-js-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "@parcel/diagnostic" "2.7.0" - "@parcel/plugin" "2.7.0" - "@parcel/source-map" "^2.0.0" - "@parcel/utils" "2.7.0" - "@parcel/workers" "2.7.0" - "@swc/helpers" "^0.4.2" - "browserslist" "^4.6.6" - "detect-libc" "^1.0.3" - "nullthrows" "^1.1.1" - "regenerator-runtime" "^0.13.7" - "semver" "^5.7.1" - -"@parcel/transformer-json@2.7.0": - "integrity" "sha512-RQjuxBpYOch+kr4a0zi77KJtOLTPYRM7iq4NN80zKnA0r0dwDUCxZBtaj2l0O0o3R4MMJnm+ncP+cB7XR7dZYA==" - "resolved" "https://registry.npmjs.org/@parcel/transformer-json/-/transformer-json-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "@parcel/plugin" "2.7.0" - "json5" "^2.2.0" - -"@parcel/transformer-postcss@2.7.0": - "integrity" "sha512-b6RskXBWf0MjpC9qjR2dQ1ZdRnlOiKYseG5CEovWCqM218RtdydFKz7jS+5Gxkb6qBtOG7zGPONXdPe+gTILcA==" - "resolved" "https://registry.npmjs.org/@parcel/transformer-postcss/-/transformer-postcss-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "@parcel/diagnostic" "2.7.0" - "@parcel/hash" "2.7.0" - "@parcel/plugin" "2.7.0" - "@parcel/utils" "2.7.0" - "clone" "^2.1.1" - "nullthrows" "^1.1.1" - "postcss-value-parser" "^4.2.0" - "semver" "^5.7.1" - -"@parcel/transformer-posthtml@2.7.0": - "integrity" "sha512-cP8YOiSynWJ1ycmBlhnnHeuQb2cwmklZ+BNyLUktj5p78kDy2de7VjX+dRNRHoW4H9OgEcSF4UEfDVVz5RYIhw==" - "resolved" "https://registry.npmjs.org/@parcel/transformer-posthtml/-/transformer-posthtml-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "@parcel/plugin" "2.7.0" - "@parcel/utils" "2.7.0" - "nullthrows" "^1.1.1" - "posthtml" "^0.16.5" - "posthtml-parser" "^0.10.1" - "posthtml-render" "^3.0.0" - "semver" "^5.7.1" - -"@parcel/transformer-raw@2.7.0": - "integrity" "sha512-sDnItWCFSDez0izK1i5cgv+kXzZTbcJh4rNpVIgmE1kBLvAz608sqgcCkavb2wVJIvLesxYM+5G4p1CwkDlZ1g==" - "resolved" "https://registry.npmjs.org/@parcel/transformer-raw/-/transformer-raw-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "@parcel/plugin" "2.7.0" - -"@parcel/transformer-react-refresh-wrap@2.7.0": - "integrity" "sha512-1vRmIJzyBA1nIiXTAU6tZExq2FvJj/2F0ft6KDw8GYPv0KjmdiPo/PmaZ7JeSVOM6SdXQIQCbTmp1vkMP7DtkA==" - "resolved" "https://registry.npmjs.org/@parcel/transformer-react-refresh-wrap/-/transformer-react-refresh-wrap-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "@parcel/plugin" "2.7.0" - "@parcel/utils" "2.7.0" - "react-refresh" "^0.9.0" - -"@parcel/transformer-svg@2.7.0": - "integrity" "sha512-ioER37zceuuE+K6ZrnjCyMUWEnv+63hIAFResc1OXxRhyt+7kzMz9ZqK0Mt6QMLwl1dxhkLmrU41n9IxzKZuSQ==" - "resolved" "https://registry.npmjs.org/@parcel/transformer-svg/-/transformer-svg-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "@parcel/diagnostic" "2.7.0" - "@parcel/hash" "2.7.0" - "@parcel/plugin" "2.7.0" - "nullthrows" "^1.1.1" - "posthtml" "^0.16.5" - "posthtml-parser" "^0.10.1" - "posthtml-render" "^3.0.0" - "semver" "^5.7.1" - -"@parcel/types@2.7.0": - "integrity" "sha512-+dhXVUnseTCpJvBTGMp0V6X13z6O/A/+CUtwEpMGZ8XSmZ4Gk44GvaTiBOp0bJpWG4fvCKp+UmC8PYbrDiiziw==" - "resolved" "https://registry.npmjs.org/@parcel/types/-/types-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "@parcel/cache" "2.7.0" - "@parcel/diagnostic" "2.7.0" - "@parcel/fs" "2.7.0" - "@parcel/package-manager" "2.7.0" - "@parcel/source-map" "^2.0.0" - "@parcel/workers" "2.7.0" - "utility-types" "^3.10.0" - -"@parcel/utils@2.7.0": - "integrity" "sha512-jNZ5bIGg1r1RDRKi562o4kuVwnz+XJ2Ie3b0Zwrqwvgfj6AbRFIKzDd+h85dWWmcDYzKUbHp11u6VJl1u8Vapg==" - "resolved" "https://registry.npmjs.org/@parcel/utils/-/utils-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "@parcel/codeframe" "2.7.0" - "@parcel/diagnostic" "2.7.0" - "@parcel/hash" "2.7.0" - "@parcel/logger" "2.7.0" - "@parcel/markdown-ansi" "2.7.0" - "@parcel/source-map" "^2.0.0" - "chalk" "^4.1.0" - -"@parcel/watcher@^2.0.0": - "integrity" "sha512-x0hUbjv891omnkcHD7ZOhiyyUqUUR6MNjq89JhEI3BxppeKWAm6NPQsqqRrAkCJBogdT/o/My21sXtTI9rJIsw==" - "resolved" "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.0.5.tgz" - "version" "2.0.5" - dependencies: - "node-addon-api" "^3.2.1" - "node-gyp-build" "^4.3.0" - -"@parcel/workers@2.7.0": - "integrity" "sha512-99VfaOX+89+RaoTSyH9ZQtkMBFZBFMvJmVJ/GeJT6QCd2wtKBStTHlaSnQOkLD/iRjJCNwV2xpZmm8YkTwV+hg==" - "resolved" "https://registry.npmjs.org/@parcel/workers/-/workers-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "@parcel/diagnostic" "2.7.0" - "@parcel/logger" "2.7.0" - "@parcel/types" "2.7.0" - "@parcel/utils" "2.7.0" - "chrome-trace-event" "^1.0.2" - "nullthrows" "^1.1.1" - -"@pmmmwh/react-refresh-webpack-plugin@^0.5.3": - "integrity" "sha512-7j/6vdTym0+qZ6u4XbSAxrWBGYSdCfTzySkj7WAFgDLmSyWlOrWvpyzxlFh5jtw9dn0oL/jtW+06XfFiisN3JQ==" - "resolved" "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.11.tgz" - "version" "0.5.11" - dependencies: - "ansi-html-community" "^0.0.8" - "common-path-prefix" "^3.0.0" - "core-js-pure" "^3.23.3" - "error-stack-parser" "^2.0.6" - "find-up" "^5.0.0" - "html-entities" "^2.1.0" - "loader-utils" "^2.0.4" - "schema-utils" "^3.0.0" - "source-map" "^0.7.3" - -"@popperjs/core@^2.4.0": - "integrity" "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==" - "resolved" "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz" - "version" "2.11.6" - -"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": - "integrity" "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" - "resolved" "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz" - "version" "1.1.2" - -"@protobufjs/base64@^1.1.2": - "integrity" "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" - "resolved" "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz" - "version" "1.1.2" - -"@protobufjs/codegen@^2.0.4": - "integrity" "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" - "resolved" "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz" - "version" "2.0.4" - -"@protobufjs/eventemitter@^1.1.0": - "integrity" "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" - "resolved" "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz" - "version" "1.1.0" - -"@protobufjs/fetch@^1.1.0": - "integrity" "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==" - "resolved" "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz" - "version" "1.1.0" - dependencies: - "@protobufjs/aspromise" "^1.1.1" - "@protobufjs/inquire" "^1.1.0" - -"@protobufjs/float@^1.0.2": - "integrity" "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" - "resolved" "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz" - "version" "1.0.2" - -"@protobufjs/inquire@^1.1.0": - "integrity" "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" - "resolved" "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz" - "version" "1.1.0" - -"@protobufjs/path@^1.1.2": - "integrity" "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" - "resolved" "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz" - "version" "1.1.2" - -"@protobufjs/pool@^1.1.0": - "integrity" "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" - "resolved" "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz" - "version" "1.1.0" - -"@protobufjs/utf8@^1.1.0": - "integrity" "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" - "resolved" "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz" - "version" "1.1.0" - -"@remix-run/router@1.8.0": - "integrity" "sha512-mrfKqIHnSZRyIzBcanNJmVQELTnX+qagEDlcKO90RgRBVOZGSGvZKeDihTRfWcqoDn5N/NkUcwWTccnpN18Tfg==" - "resolved" "https://registry.npmjs.org/@remix-run/router/-/router-1.8.0.tgz" - "version" "1.8.0" - -"@rollup/plugin-babel@^5.2.0": - "integrity" "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==" - "resolved" "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz" - "version" "5.3.1" - dependencies: - "@babel/helper-module-imports" "^7.10.4" - "@rollup/pluginutils" "^3.1.0" - -"@rollup/plugin-node-resolve@^11.2.1": - "integrity" "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==" - "resolved" "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz" - "version" "11.2.1" - dependencies: - "@rollup/pluginutils" "^3.1.0" - "@types/resolve" "1.17.1" - "builtin-modules" "^3.1.0" - "deepmerge" "^4.2.2" - "is-module" "^1.0.0" - "resolve" "^1.19.0" - -"@rollup/plugin-replace@^2.4.1": - "integrity" "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==" - "resolved" "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz" - "version" "2.4.2" - dependencies: - "@rollup/pluginutils" "^3.1.0" - "magic-string" "^0.25.7" - -"@rollup/pluginutils@^3.1.0": - "integrity" "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==" - "resolved" "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "@types/estree" "0.0.39" - "estree-walker" "^1.0.1" - "picomatch" "^2.2.2" - -"@rushstack/eslint-patch@^1.1.0": - "integrity" "sha512-0xd7qez0AQ+MbHatZTlI1gu5vkG8r7MYRUJAHPAHJBmGLs16zpkrpAVLvjQKQOqaXPDUBwOiJzNc00znHSCVBw==" - "resolved" "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.3.3.tgz" - "version" "1.3.3" - -"@sentry/browser@7.15.0": - "integrity" "sha512-vZYr8L2JmniV8cns4yGOpX32moazz6tsllB1uv7XmmELW98sIuuugVFX0k6cBi89R8pyhdqULFCf9CL8CRguRg==" - "resolved" "https://registry.npmjs.org/@sentry/browser/-/browser-7.15.0.tgz" - "version" "7.15.0" - dependencies: - "@sentry/core" "7.15.0" - "@sentry/types" "7.15.0" - "@sentry/utils" "7.15.0" - "tslib" "^1.9.3" - -"@sentry/core@7.15.0": - "integrity" "sha512-W8d44g04GShBn4Z9VBTUhf1T9LTMfzUnETEx237zzUucv0kkyj3LsWQsJapWchMbmwr1V/CdnNDN+lGDm8iXQA==" - "resolved" "https://registry.npmjs.org/@sentry/core/-/core-7.15.0.tgz" - "version" "7.15.0" - dependencies: - "@sentry/types" "7.15.0" - "@sentry/utils" "7.15.0" - "tslib" "^1.9.3" - -"@sentry/electron@^4.0.2": - "integrity" "sha512-ITjfzB0cOpiKVvoXrDEw4uvqbmrARJXRzcJV0KU0KQH5oL6lGGKS+6GPA8JH+6NdeHALx9h9yVx9yg047ew6/Q==" - "resolved" "https://registry.npmjs.org/@sentry/electron/-/electron-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "@sentry/browser" "7.15.0" - "@sentry/core" "7.15.0" - "@sentry/node" "7.15.0" - "@sentry/types" "7.15.0" - "@sentry/utils" "7.15.0" - "deepmerge" "4.2.2" - "tslib" "^2.3.1" - -"@sentry/node@7.15.0": - "integrity" "sha512-gfyo6YTo4Sw5pdKWCzs7trqZpBm5D/ArR4vylQrQayfImiYyNY6yaOK1R7g4rM34MXUu91pfVJLUpXvjk/NsHw==" - "resolved" "https://registry.npmjs.org/@sentry/node/-/node-7.15.0.tgz" - "version" "7.15.0" - dependencies: - "@sentry/core" "7.15.0" - "@sentry/types" "7.15.0" - "@sentry/utils" "7.15.0" - "cookie" "^0.4.1" - "https-proxy-agent" "^5.0.0" - "lru_map" "^0.3.3" - "tslib" "^1.9.3" - -"@sentry/types@7.15.0": - "integrity" "sha512-MN9haDRh9ZOsTotoDTHu2BT3sT8Vs1F0alhizUpDyjN2YgBCqR6JV+AbAE1XNHwS2+5zbppch1PwJUVeE58URQ==" - "resolved" "https://registry.npmjs.org/@sentry/types/-/types-7.15.0.tgz" - "version" "7.15.0" - -"@sentry/utils@7.15.0": - "integrity" "sha512-akic22/6xa/RG5Mj7UN6pLc23VnX9zQlKM53L/q3yIr0juckSVthJiiFNdgdqrX03S1tHYlBgPeShKFFTHpkjA==" - "resolved" "https://registry.npmjs.org/@sentry/utils/-/utils-7.15.0.tgz" - "version" "7.15.0" - dependencies: - "@sentry/types" "7.15.0" - "tslib" "^1.9.3" - -"@sideway/address@^4.1.3": - "integrity" "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==" - "resolved" "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz" - "version" "4.1.4" - dependencies: - "@hapi/hoek" "^9.0.0" - -"@sideway/formula@^3.0.0": - "integrity" "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==" - "resolved" "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz" - "version" "3.0.0" - -"@sideway/pinpoint@^2.0.0": - "integrity" "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" - "resolved" "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz" - "version" "2.0.0" - -"@sinclair/typebox@^0.24.1": - "integrity" "sha512-1ZVIyyS1NXDRVT8GjWD5jULjhDyM3IsIHef2VGUMdnWOlX2tkPjyEX/7K0TGSH2S8EaPhp1ylFdjSjUGQ+gecg==" - "resolved" "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.26.tgz" - "version" "0.24.26" - -"@sindresorhus/is@^0.14.0": - "integrity" "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" - "resolved" "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz" - "version" "0.14.0" - -"@sinonjs/commons@^1.7.0": - "integrity" "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==" - "resolved" "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz" - "version" "1.8.6" - dependencies: - "type-detect" "4.0.8" - -"@sinonjs/fake-timers@^8.0.1": - "integrity" "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==" - "resolved" "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz" - "version" "8.1.0" - dependencies: - "@sinonjs/commons" "^1.7.0" - -"@sqltools/formatter@^1.2.2": - "integrity" "sha512-O3uyB/JbkAEMZaP3YqyHH7TMnex7tWyCbCI4EfJdOCoN6HIhqdJBWTM6aCCiWQ/5f5wxjgU735QAIpJbjDvmzg==" - "resolved" "https://registry.npmjs.org/@sqltools/formatter/-/formatter-1.2.3.tgz" - "version" "1.2.3" - -"@surma/rollup-plugin-off-main-thread@^2.2.3": - "integrity" "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==" - "resolved" "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz" - "version" "2.2.3" - dependencies: - "ejs" "^3.1.6" - "json5" "^2.2.0" - "magic-string" "^0.25.0" - "string.prototype.matchall" "^4.0.6" - -"@svgr/babel-plugin-add-jsx-attribute@^5.4.0": - "integrity" "sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==" - "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz" - "version" "5.4.0" - -"@svgr/babel-plugin-remove-jsx-attribute@^5.4.0": - "integrity" "sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==" - "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz" - "version" "5.4.0" - -"@svgr/babel-plugin-remove-jsx-empty-expression@^5.0.1": - "integrity" "sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==" - "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz" - "version" "5.0.1" - -"@svgr/babel-plugin-replace-jsx-attribute-value@^5.0.1": - "integrity" "sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==" - "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz" - "version" "5.0.1" - -"@svgr/babel-plugin-svg-dynamic-title@^5.4.0": - "integrity" "sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==" - "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz" - "version" "5.4.0" - -"@svgr/babel-plugin-svg-em-dimensions@^5.4.0": - "integrity" "sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==" - "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz" - "version" "5.4.0" - -"@svgr/babel-plugin-transform-react-native-svg@^5.4.0": - "integrity" "sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==" - "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz" - "version" "5.4.0" - -"@svgr/babel-plugin-transform-svg-component@^5.5.0": - "integrity" "sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==" - "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz" - "version" "5.5.0" - -"@svgr/babel-preset@^5.5.0": - "integrity" "sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig==" - "resolved" "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-5.5.0.tgz" - "version" "5.5.0" - dependencies: - "@svgr/babel-plugin-add-jsx-attribute" "^5.4.0" - "@svgr/babel-plugin-remove-jsx-attribute" "^5.4.0" - "@svgr/babel-plugin-remove-jsx-empty-expression" "^5.0.1" - "@svgr/babel-plugin-replace-jsx-attribute-value" "^5.0.1" - "@svgr/babel-plugin-svg-dynamic-title" "^5.4.0" - "@svgr/babel-plugin-svg-em-dimensions" "^5.4.0" - "@svgr/babel-plugin-transform-react-native-svg" "^5.4.0" - "@svgr/babel-plugin-transform-svg-component" "^5.5.0" - -"@svgr/core@^5.5.0": - "integrity" "sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==" - "resolved" "https://registry.npmjs.org/@svgr/core/-/core-5.5.0.tgz" - "version" "5.5.0" - dependencies: - "@svgr/plugin-jsx" "^5.5.0" - "camelcase" "^6.2.0" - "cosmiconfig" "^7.0.0" - -"@svgr/hast-util-to-babel-ast@^5.5.0": - "integrity" "sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==" - "resolved" "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz" - "version" "5.5.0" - dependencies: - "@babel/types" "^7.12.6" - -"@svgr/plugin-jsx@^5.5.0": - "integrity" "sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==" - "resolved" "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz" - "version" "5.5.0" - dependencies: - "@babel/core" "^7.12.3" - "@svgr/babel-preset" "^5.5.0" - "@svgr/hast-util-to-babel-ast" "^5.5.0" - "svg-parser" "^2.0.2" - -"@svgr/plugin-svgo@^5.5.0": - "integrity" "sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ==" - "resolved" "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz" - "version" "5.5.0" - dependencies: - "cosmiconfig" "^7.0.0" - "deepmerge" "^4.2.2" - "svgo" "^1.2.2" - -"@svgr/webpack@^5.5.0": - "integrity" "sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==" - "resolved" "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.5.0.tgz" - "version" "5.5.0" - dependencies: - "@babel/core" "^7.12.3" - "@babel/plugin-transform-react-constant-elements" "^7.12.1" - "@babel/preset-env" "^7.12.1" - "@babel/preset-react" "^7.12.5" - "@svgr/core" "^5.5.0" - "@svgr/plugin-jsx" "^5.5.0" - "@svgr/plugin-svgo" "^5.5.0" - "loader-utils" "^2.0.0" - -"@swc/helpers@^0.4.2": - "integrity" "sha512-rEUrBSGIoSFuYxwBYtlUFMlE2CwGhmW+w9355/5oduSw8e5h2+Tj4UrAGNNgP9915++wj5vkQo0UuOBqOAq4nw==" - "resolved" "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.11.tgz" - "version" "0.4.11" - dependencies: - "tslib" "^2.4.0" - -"@szhsin/react-menu@4.0.3": - "integrity" "sha512-TPsOKLEkesE79802evnLt2Mbv/+zwRJdX8776/vxK5ST9SK8SO0A8kRrus6JuxijLxZxFpmY/3VMdoyeCWQHKA==" - "resolved" "https://registry.npmjs.org/@szhsin/react-menu/-/react-menu-4.0.3.tgz" - "version" "4.0.3" - dependencies: - "prop-types" "^15.7.2" - "react-transition-state" "^2.1.0" - -"@szmarczak/http-timer@^1.1.2": - "integrity" "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==" - "resolved" "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz" - "version" "1.1.2" - dependencies: - "defer-to-connect" "^1.0.1" - -"@tanstack/react-table@^8.5.11": - "integrity" "sha512-bIegBJ3VPUX3Z7rMnFEnTRCRgPccTsciilQA1ib/pA6M7Qq1boTNPjNjSbEHmBKytaxPrPfcUfzkZLogYtvu3g==" - "resolved" "https://registry.npmjs.org/@tanstack/react-table/-/react-table-8.5.11.tgz" - "version" "8.5.11" - dependencies: - "@tanstack/table-core" "8.5.11" - -"@tanstack/table-core@8.5.11": - "integrity" "sha512-ZN61ockLaIAiiPbZfMKT2S03nbWx28OHg/nAiDnNfmN4QmAMcdwVajPn2QQwnNVGAr4jS4nbhbYzCcjq8livXQ==" - "resolved" "https://registry.npmjs.org/@tanstack/table-core/-/table-core-8.5.11.tgz" - "version" "8.5.11" - -"@testing-library/dom@^7.28.1", "@testing-library/dom@>=7.21.4": - "integrity" "sha512-3UqjCpey6HiTZT92vODYLPxTBWlM8ZOOjr3LX5F37/VRipW2M1kX6I/Cm4VXzteZqfGfagg8yXywpcOgQBlNsQ==" - "resolved" "https://registry.npmjs.org/@testing-library/dom/-/dom-7.31.2.tgz" - "version" "7.31.2" - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/runtime" "^7.12.5" - "@types/aria-query" "^4.2.0" - "aria-query" "^4.2.2" - "chalk" "^4.1.0" - "dom-accessibility-api" "^0.5.6" - "lz-string" "^1.4.4" - "pretty-format" "^26.6.2" - -"@testing-library/jest-dom@^5.14.1": - "integrity" "sha512-Gy+IoFutbMQcky0k+bqqumXZ1cTGswLsFqmNLzNdSKkU9KGV2u9oXhukCbbJ9/LRPKiqwxEE8VpV/+YZlfkPUA==" - "resolved" "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.16.4.tgz" - "version" "5.16.4" - dependencies: - "@babel/runtime" "^7.9.2" - "@types/testing-library__jest-dom" "^5.9.1" - "aria-query" "^5.0.0" - "chalk" "^3.0.0" - "css" "^3.0.0" - "css.escape" "^1.5.1" - "dom-accessibility-api" "^0.5.6" - "lodash" "^4.17.15" - "redent" "^3.0.0" - -"@testing-library/react@^11.2.7": - "integrity" "sha512-tzRNp7pzd5QmbtXNG/mhdcl7Awfu/Iz1RaVHY75zTdOkmHCuzMhRL83gWHSgOAcjS3CCbyfwUHMZgRJb4kAfpA==" - "resolved" "https://registry.npmjs.org/@testing-library/react/-/react-11.2.7.tgz" - "version" "11.2.7" - dependencies: - "@babel/runtime" "^7.12.5" - "@testing-library/dom" "^7.28.1" - -"@testing-library/user-event@^12.8.3": - "integrity" "sha512-IR0iWbFkgd56Bu5ZI/ej8yQwrkCv8Qydx6RzwbKz9faXazR/+5tvYKsZQgyXJiwgpcva127YO6JcWy7YlCfofQ==" - "resolved" "https://registry.npmjs.org/@testing-library/user-event/-/user-event-12.8.3.tgz" - "version" "12.8.3" - dependencies: - "@babel/runtime" "^7.12.5" - -"@tootallnate/once@1": - "integrity" "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==" - "resolved" "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz" - "version" "1.1.2" - -"@tootallnate/once@2": - "integrity" "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==" - "resolved" "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz" - "version" "2.0.0" - -"@trysound/sax@0.2.0": - "integrity" "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==" - "resolved" "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz" - "version" "0.2.0" - -"@tsconfig/node10@^1.0.7": - "integrity" "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==" - "resolved" "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz" - "version" "1.0.9" - -"@tsconfig/node12@^1.0.7": - "integrity" "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==" - "resolved" "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz" - "version" "1.0.11" - -"@tsconfig/node14@^1.0.0": - "integrity" "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==" - "resolved" "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz" - "version" "1.0.3" - -"@tsconfig/node16@^1.0.2": - "integrity" "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==" - "resolved" "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz" - "version" "1.0.3" - -"@types/aria-query@^4.2.0": - "integrity" "sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==" - "resolved" "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz" - "version" "4.2.2" - -"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14", "@types/babel__core@^7.1.9": - "integrity" "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==" - "resolved" "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz" - "version" "7.1.19" - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__generator@*": - "integrity" "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==" - "resolved" "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz" - "version" "7.6.4" - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - "integrity" "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==" - "resolved" "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz" - "version" "7.4.1" - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": - "integrity" "sha512-kVzjari1s2YVi77D3w1yuvohV2idweYXMCDzqBiVNN63TcDWrIlTVOYpqVrvbbyOE/IyzBoTKF0fdnLPEORFxA==" - "resolved" "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.17.1.tgz" - "version" "7.17.1" - dependencies: - "@babel/types" "^7.3.0" - -"@types/bn.js@*": - "integrity" "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==" - "resolved" "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz" - "version" "5.1.1" - dependencies: - "@types/node" "*" - -"@types/body-parser@*": - "integrity" "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==" - "resolved" "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz" - "version" "1.19.2" - dependencies: - "@types/connect" "*" - "@types/node" "*" - -"@types/bonjour@^3.5.9": - "integrity" "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==" - "resolved" "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz" - "version" "3.5.10" - dependencies: - "@types/node" "*" - -"@types/connect-history-api-fallback@^1.3.5": - "integrity" "sha512-iaQslNbARe8fctL5Lk+DsmgWOM83lM+7FzP0eQUJs1jd3kBE8NWqBTIT2S8SqQOJjxvt2eyIjpOuYeRXq2AdMw==" - "resolved" "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.1.tgz" - "version" "1.5.1" - dependencies: - "@types/express-serve-static-core" "*" - "@types/node" "*" - -"@types/connect@*": - "integrity" "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==" - "resolved" "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz" - "version" "3.4.35" - dependencies: - "@types/node" "*" - -"@types/cookiejar@*": - "integrity" "sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog==" - "resolved" "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.2.tgz" - "version" "2.1.2" - -"@types/cron@^1.7.3": - "integrity" "sha512-iPmUXyIJG1Js+ldPYhOQcYU3kCAQ2FWrSkm1FJPoii2eYSn6wEW6onPukNTT0bfiflexNSRPl6KWmAIqS+36YA==" - "resolved" "https://registry.npmjs.org/@types/cron/-/cron-1.7.3.tgz" - "version" "1.7.3" - dependencies: - "@types/node" "*" - "moment" ">=2.14.0" - -"@types/dateformat@^3.0.1": - "integrity" "sha512-KlPPdikagvL6ELjWsljbyDIPzNCeliYkqRpI+zea99vBBbCIA5JNshZAwQKTON139c87y9qvTFVgkFd14rtS4g==" - "resolved" "https://registry.npmjs.org/@types/dateformat/-/dateformat-3.0.1.tgz" - "version" "3.0.1" - -"@types/debug@^4.1.6": - "integrity" "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==" - "resolved" "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz" - "version" "4.1.7" - dependencies: - "@types/ms" "*" - -"@types/elliptic@^6.4.14": - "integrity" "sha512-z4OBcDAU0GVwDTuwJzQCiL6188QvZMkvoERgcVjq0/mPM8jCfdwZ3x5zQEVoL9WCAru3aG5wl3Z5Ww5wBWn7ZQ==" - "resolved" "https://registry.npmjs.org/@types/elliptic/-/elliptic-6.4.14.tgz" - "version" "6.4.14" - dependencies: - "@types/bn.js" "*" - -"@types/eslint-scope@^3.7.3": - "integrity" "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==" - "resolved" "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz" - "version" "3.7.4" - dependencies: - "@types/eslint" "*" - "@types/estree" "*" - -"@types/eslint@*", "@types/eslint@^7.29.0 || ^8.4.1": - "integrity" "sha512-sdPRb9K6iL5XZOmBubg8yiFp5yS/JdUDQsq5e6h95km91MCYMuvp7mh1fjPEYUhvHepKpZOjnEaMBR4PxjWDzg==" - "resolved" "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.2.tgz" - "version" "8.44.2" - dependencies: - "@types/estree" "*" - "@types/json-schema" "*" - -"@types/estree@*", "@types/estree@^1.0.0": - "integrity" "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==" - "resolved" "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz" - "version" "1.0.0" - -"@types/estree@^0.0.51": - "integrity" "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==" - "resolved" "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz" - "version" "0.0.51" - -"@types/estree@0.0.39": - "integrity" "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==" - "resolved" "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz" - "version" "0.0.39" - -"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.18": - "integrity" "sha512-gstzbTWro2/nFed1WXtf+TtrpwxH7Ggs4RLYTLbeVgIkUQOI3WG/JKjgeOU1zXDvezllupjrf8OPIdvTbIaVOQ==" - "resolved" "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.30.tgz" - "version" "4.17.30" - dependencies: - "@types/node" "*" - "@types/qs" "*" - "@types/range-parser" "*" - -"@types/express@*", "@types/express@^4.17.13": - "integrity" "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==" - "resolved" "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz" - "version" "4.17.13" - dependencies: - "@types/body-parser" "*" - "@types/express-serve-static-core" "^4.17.18" - "@types/qs" "*" - "@types/serve-static" "*" - -"@types/fs-extra@^9.0.11": - "integrity" "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==" - "resolved" "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz" - "version" "9.0.13" - dependencies: - "@types/node" "*" - -"@types/glob@^7.1.1": - "integrity" "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==" - "resolved" "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz" - "version" "7.2.0" - dependencies: - "@types/minimatch" "*" - "@types/node" "*" - -"@types/graceful-fs@^4.1.2": - "integrity" "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==" - "resolved" "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz" - "version" "4.1.5" - dependencies: - "@types/node" "*" - -"@types/html-minifier-terser@^6.0.0": - "integrity" "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==" - "resolved" "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz" - "version" "6.1.0" - -"@types/http-proxy@^1.17.8": - "integrity" "sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA==" - "resolved" "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.11.tgz" - "version" "1.17.11" - dependencies: - "@types/node" "*" - -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - "integrity" "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==" - "resolved" "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz" - "version" "2.0.4" - -"@types/istanbul-lib-report@*": - "integrity" "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==" - "resolved" "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "@types/istanbul-lib-coverage" "*" - -"@types/istanbul-reports@^3.0.0": - "integrity" "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==" - "resolved" "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "@types/istanbul-lib-report" "*" - -"@types/jest@*": - "integrity" "sha512-0RbGAFMfcBJKOmqRazM8L98uokwuwD5F8rHrv/ZMbrZBwVOWZUyPG6VFNscjYr/vjM3Vu4fRrCPbOs42AfemaQ==" - "resolved" "https://registry.npmjs.org/@types/jest/-/jest-28.1.6.tgz" - "version" "28.1.6" - dependencies: - "jest-matcher-utils" "^28.0.0" - "pretty-format" "^28.0.0" - -"@types/jest@^26.0.24": - "integrity" "sha512-E/X5Vib8BWqZNRlDxj9vYXhsDwPYbPINqKF9BsnSoon4RQ0D9moEuLD8txgyypFLH7J4+Lho9Nr/c8H0Fi+17w==" - "resolved" "https://registry.npmjs.org/@types/jest/-/jest-26.0.24.tgz" - "version" "26.0.24" - dependencies: - "jest-diff" "^26.0.0" - "pretty-format" "^26.0.0" - -"@types/jest@^27.0.0", "@types/jest@^27.0.2": - "integrity" "sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA==" - "resolved" "https://registry.npmjs.org/@types/jest/-/jest-27.5.2.tgz" - "version" "27.5.2" - dependencies: - "jest-matcher-utils" "^27.0.0" - "pretty-format" "^27.0.0" - -"@types/joi@^17.2.3": - "integrity" "sha512-dGjs/lhrWOa+eO0HwgxCSnDm5eMGCsXuvLglMghJq32F6q5LyyNuXb41DHzrg501CKNOSSAHmfB7FDGeUnDmzw==" - "resolved" "https://registry.npmjs.org/@types/joi/-/joi-17.2.3.tgz" - "version" "17.2.3" - dependencies: - "joi" "*" - -"@types/json-schema@*", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.7", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": - "integrity" "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" - "resolved" "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz" - "version" "7.0.11" - -"@types/json5@^0.0.29": - "integrity" "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" - "resolved" "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" - "version" "0.0.29" - -"@types/lodash@^4.14.175": - "integrity" "sha512-RoZphVtHbxPZizt4IcILciSWiC6dcn+eZ8oX9IWEYfDMcocdd42f7NPI6fQj+6zI8y4E0L7gu2pcZKLGTRaV9Q==" - "resolved" "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.184.tgz" - "version" "4.14.184" - -"@types/long@^4.0.1": - "integrity" "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" - "resolved" "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz" - "version" "4.0.2" - -"@types/mime@*": - "integrity" "sha512-fccbsHKqFDXClBZTDLA43zl0+TbxyIwyzIzwwhvoJvhNjOErCdeX2xJbURimv2EbSVUGav001PaCJg4mZxMl4w==" - "resolved" "https://registry.npmjs.org/@types/mime/-/mime-3.0.0.tgz" - "version" "3.0.0" - -"@types/minimatch@*", "@types/minimatch@^3.0.3": - "integrity" "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==" - "resolved" "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz" - "version" "3.0.5" - -"@types/minimist@^1.2.0": - "integrity" "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==" - "resolved" "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz" - "version" "1.2.2" - -"@types/mixpanel-browser@^2.38.0": - "integrity" "sha512-TR8rvsILnqXA7oiiGOxuMGXwvDeCoQDonXJB5UR+TYvEAFpiK8ReFj5LhZT+Xhm3NpI9aPoju30jB2ssorSUww==" - "resolved" "https://registry.npmjs.org/@types/mixpanel-browser/-/mixpanel-browser-2.38.0.tgz" - "version" "2.38.0" - -"@types/ms@*": - "integrity" "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" - "resolved" "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz" - "version" "0.7.31" - -"@types/node@*", "@types/node@>=13.7.0": - "integrity" "sha512-6qKpDtoaYLM+5+AFChLhHermMQxc3TOEFIDzrZLPRGHPrLEwqFkkT5Kx3ju05g6X7uDPazz3jHbKPX0KzCjntg==" - "resolved" "https://registry.npmjs.org/@types/node/-/node-18.6.3.tgz" - "version" "18.6.3" - -"@types/node@^12.20.27": - "integrity" "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" - "resolved" "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz" - "version" "12.20.55" - -"@types/node@^16.11.26": - "integrity" "sha512-aFcUkv7EddxxOa/9f74DINReQ/celqH8DiB3fRYgVDM2Xm5QJL8sl80QKuAnGvwAsMn+H3IFA6WCrQh1CY7m1A==" - "resolved" "https://registry.npmjs.org/@types/node/-/node-16.11.56.tgz" - "version" "16.11.56" - -"@types/node@^16.11.6": - "integrity" "sha512-fpP+jk2zJ4VW66+wAMFoBJlx1bxmBKx4DUFf68UHgdGCOuyUTDlLWqsaNPJh7xhNDykyJ9eIzAygilP/4WoN8g==" - "resolved" "https://registry.npmjs.org/@types/node/-/node-16.11.47.tgz" - "version" "16.11.47" - -"@types/normalize-package-data@^2.4.0": - "integrity" "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==" - "resolved" "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz" - "version" "2.4.1" - -"@types/object-hash@^1.3.0": - "integrity" "sha512-xFdpkAkikBgqBdG9vIlsqffDV8GpvnPEzs0IUtr1v3BEB97ijsFQ4RXVbUZwjFThhB4MDSTUfvmxUD5PGx0wXA==" - "resolved" "https://registry.npmjs.org/@types/object-hash/-/object-hash-1.3.4.tgz" - "version" "1.3.4" - -"@types/parse-json@^4.0.0": - "integrity" "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" - "resolved" "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz" - "version" "4.0.0" - -"@types/plist@^3.0.1": - "integrity" "sha512-ULqvZNGMv0zRFvqn8/4LSPtnmN4MfhlPNtJCTpKuIIxGVGZ2rYWzFXrvEBoh9CVyqSE7D6YFRJ1hydLHI6kbWw==" - "resolved" "https://registry.npmjs.org/@types/plist/-/plist-3.0.2.tgz" - "version" "3.0.2" - dependencies: - "@types/node" "*" - "xmlbuilder" ">=11.0.1" - -"@types/prettier@^2.1.5": - "integrity" "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==" - "resolved" "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz" - "version" "2.7.3" - -"@types/prop-types@*": - "integrity" "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" - "resolved" "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz" - "version" "15.7.5" - -"@types/q@^1.5.1": - "integrity" "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==" - "resolved" "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz" - "version" "1.5.5" - -"@types/qs@*": - "integrity" "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" - "resolved" "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz" - "version" "6.9.7" - -"@types/range-parser@*": - "integrity" "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" - "resolved" "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz" - "version" "1.2.4" - -"@types/react-dom@^17.0.9": - "integrity" "sha512-VjnqEmqGnasQKV0CWLevqMTXBYG9GbwuE6x3VetERLh0cq2LTptFE73MrQi2S7GkKXCf2GgwItB/melLnxfnsg==" - "resolved" "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.17.tgz" - "version" "17.0.17" - dependencies: - "@types/react" "^17" - -"@types/react-helmet@^6.1.7": - "integrity" "sha512-mUFOrdR3AIvHE8BEaqzfPEnR62xq5PHQJehhgNtj78x0d5NOxUCQ0j+r9OZ4RvB+prNZx9wvQnVW8ApFBX+fig==" - "resolved" "https://registry.npmjs.org/@types/react-helmet/-/react-helmet-6.1.7.tgz" - "version" "6.1.7" - dependencies: - "@types/react" "*" - -"@types/react-timeago@^4.1.3": - "integrity" "sha512-XaaMBzuXLw7lxPPDs/fenlohcf3NDqM5qP4oOL/Meu+Hb1QChW4Igw/SruS1llEqch18RQB3wDTIwvqq4nivvw==" - "resolved" "https://registry.npmjs.org/@types/react-timeago/-/react-timeago-4.1.3.tgz" - "version" "4.1.3" - dependencies: - "@types/react" "*" - -"@types/react@*": - "integrity" "sha512-iz3BtLuIYH1uWdsv6wXYdhozhqj20oD4/Hk2DNXIn1kFsmp9x8d9QB6FnPhfkbhd2PgEONt9Q1x/ebkwjfFLow==" - "resolved" "https://registry.npmjs.org/@types/react/-/react-18.0.15.tgz" - "version" "18.0.15" - dependencies: - "@types/prop-types" "*" - "@types/scheduler" "*" - "csstype" "^3.0.2" - -"@types/react@^17.0.24": - "integrity" "sha512-zJ6IYlJ8cYYxiJfUaZOQee4lh99mFihBoqkOSEGV+dFi9leROW6+PgstzQ+w3gWTnUfskALtQPGHK6dYmPj+2A==" - "resolved" "https://registry.npmjs.org/@types/react/-/react-17.0.48.tgz" - "version" "17.0.48" - dependencies: - "@types/prop-types" "*" - "@types/scheduler" "*" - "csstype" "^3.0.2" - -"@types/react@^17": - "integrity" "sha512-zJ6IYlJ8cYYxiJfUaZOQee4lh99mFihBoqkOSEGV+dFi9leROW6+PgstzQ+w3gWTnUfskALtQPGHK6dYmPj+2A==" - "resolved" "https://registry.npmjs.org/@types/react/-/react-17.0.48.tgz" - "version" "17.0.48" - dependencies: - "@types/prop-types" "*" - "@types/scheduler" "*" - "csstype" "^3.0.2" - -"@types/resolve@1.17.1": - "integrity" "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==" - "resolved" "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz" - "version" "1.17.1" - dependencies: - "@types/node" "*" - -"@types/retry@0.12.0": - "integrity" "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" - "resolved" "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz" - "version" "0.12.0" - -"@types/scheduler@*": - "integrity" "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" - "resolved" "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz" - "version" "0.16.2" - -"@types/semver@^7.3.12", "@types/semver@^7.3.6": - "integrity" "sha512-WwA1MW0++RfXmCr12xeYOOC5baSC9mSb0ZqCquFzKhcoF4TvHu5MKOuXsncgZcpVFhB1pXd5hZmM0ryAoCp12A==" - "resolved" "https://registry.npmjs.org/@types/semver/-/semver-7.3.12.tgz" - "version" "7.3.12" - -"@types/serve-index@^1.9.1": - "integrity" "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==" - "resolved" "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz" - "version" "1.9.1" - dependencies: - "@types/express" "*" - -"@types/serve-static@*", "@types/serve-static@^1.13.10": - "integrity" "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==" - "resolved" "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz" - "version" "1.15.0" - dependencies: - "@types/mime" "*" - "@types/node" "*" - -"@types/sockjs@^0.3.33": - "integrity" "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==" - "resolved" "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz" - "version" "0.3.33" - dependencies: - "@types/node" "*" - -"@types/stack-utils@^2.0.0": - "integrity" "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==" - "resolved" "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz" - "version" "2.0.1" - -"@types/superagent@*": - "integrity" "sha512-mu/N4uvfDN2zVQQ5AYJI/g4qxn2bHB6521t1UuH09ShNWjebTqN0ZFuYK9uYjcgmI0dTQEs+Owi1EO6U0OkOZQ==" - "resolved" "https://registry.npmjs.org/@types/superagent/-/superagent-4.1.15.tgz" - "version" "4.1.15" - dependencies: - "@types/cookiejar" "*" - "@types/node" "*" - -"@types/supertest@^2.0.11": - "integrity" "sha512-X3HPWTwXRerBZS7Mo1k6vMVR1Z6zmJcDVn5O/31whe0tnjE4te6ZJSJGq1RiqHPjzPdMTfjCFogDJmwng9xHaQ==" - "resolved" "https://registry.npmjs.org/@types/supertest/-/supertest-2.0.12.tgz" - "version" "2.0.12" - dependencies: - "@types/superagent" "*" - -"@types/testing-library__jest-dom@^5.9.1": - "integrity" "sha512-SBwbxYoyPIvxHbeHxTZX2Pe/74F/tX2/D3mMvzabdeJ25bBojfW0TyB8BHrbq/9zaaKICJZjLP+8r6AeZMFCuQ==" - "resolved" "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.5.tgz" - "version" "5.14.5" - dependencies: - "@types/jest" "*" - -"@types/trusted-types@^2.0.2": - "integrity" "sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==" - "resolved" "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.3.tgz" - "version" "2.0.3" - -"@types/verror@^1.10.3": - "integrity" "sha512-NNm+gdePAX1VGvPcGZCDKQZKYSiAWigKhKaz5KF94hG6f2s8de9Ow5+7AbXoeKxL8gavZfk4UquSAygOF2duEQ==" - "resolved" "https://registry.npmjs.org/@types/verror/-/verror-1.10.6.tgz" - "version" "1.10.6" - -"@types/ws@^8.5.5": - "integrity" "sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==" - "resolved" "https://registry.npmjs.org/@types/ws/-/ws-8.5.5.tgz" - "version" "8.5.5" - dependencies: - "@types/node" "*" - -"@types/yargs-parser@*": - "integrity" "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==" - "resolved" "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz" - "version" "21.0.0" - -"@types/yargs@^15.0.0": - "integrity" "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==" - "resolved" "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz" - "version" "15.0.14" - dependencies: - "@types/yargs-parser" "*" - -"@types/yargs@^16.0.0": - "integrity" "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==" - "resolved" "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz" - "version" "16.0.5" - dependencies: - "@types/yargs-parser" "*" - -"@types/yargs@^17.0.1": - "integrity" "sha512-Nz4MPhecOFArtm81gFQvQqdV7XYCrWKx5uUt6GNHredFHn1i2mtWqXTON7EPXMtNi1qjtjEM/VCHDhcHsAMLXQ==" - "resolved" "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.12.tgz" - "version" "17.0.12" - dependencies: - "@types/yargs-parser" "*" - -"@types/yargs@^17.0.8": - "integrity" "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==" - "resolved" "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz" - "version" "17.0.24" - dependencies: - "@types/yargs-parser" "*" - -"@types/yauzl@^2.9.1": - "integrity" "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==" - "resolved" "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz" - "version" "2.10.0" - dependencies: - "@types/node" "*" - -"@typescript-eslint/eslint-plugin@^4.0.0 || ^5.0.0", "@typescript-eslint/eslint-plugin@^4.28.2", "@typescript-eslint/eslint-plugin@^4.31.2": - "integrity" "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz" - "version" "4.33.0" - dependencies: - "@typescript-eslint/experimental-utils" "4.33.0" - "@typescript-eslint/scope-manager" "4.33.0" - "debug" "^4.3.1" - "functional-red-black-tree" "^1.0.1" - "ignore" "^5.1.8" - "regexpp" "^3.1.0" - "semver" "^7.3.5" - "tsutils" "^3.21.0" - -"@typescript-eslint/eslint-plugin@^5.5.0": - "integrity" "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz" - "version" "5.62.0" - dependencies: - "@eslint-community/regexpp" "^4.4.0" - "@typescript-eslint/scope-manager" "5.62.0" - "@typescript-eslint/type-utils" "5.62.0" - "@typescript-eslint/utils" "5.62.0" - "debug" "^4.3.4" - "graphemer" "^1.4.0" - "ignore" "^5.2.0" - "natural-compare-lite" "^1.4.0" - "semver" "^7.3.7" - "tsutils" "^3.21.0" - -"@typescript-eslint/experimental-utils@^5.0.0": - "integrity" "sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.62.0.tgz" - "version" "5.62.0" - dependencies: - "@typescript-eslint/utils" "5.62.0" - -"@typescript-eslint/experimental-utils@4.33.0": - "integrity" "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz" - "version" "4.33.0" - dependencies: - "@types/json-schema" "^7.0.7" - "@typescript-eslint/scope-manager" "4.33.0" - "@typescript-eslint/types" "4.33.0" - "@typescript-eslint/typescript-estree" "4.33.0" - "eslint-scope" "^5.1.1" - "eslint-utils" "^3.0.0" - -"@typescript-eslint/parser@^4.0.0", "@typescript-eslint/parser@^4.28.2", "@typescript-eslint/parser@^4.31.2": - "integrity" "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz" - "version" "4.33.0" - dependencies: - "@typescript-eslint/scope-manager" "4.33.0" - "@typescript-eslint/types" "4.33.0" - "@typescript-eslint/typescript-estree" "4.33.0" - "debug" "^4.3.1" - -"@typescript-eslint/parser@^5.0.0", "@typescript-eslint/parser@^5.5.0": - "integrity" "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz" - "version" "5.62.0" - dependencies: - "@typescript-eslint/scope-manager" "5.62.0" - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/typescript-estree" "5.62.0" - "debug" "^4.3.4" - -"@typescript-eslint/scope-manager@4.33.0": - "integrity" "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz" - "version" "4.33.0" - dependencies: - "@typescript-eslint/types" "4.33.0" - "@typescript-eslint/visitor-keys" "4.33.0" - -"@typescript-eslint/scope-manager@5.62.0": - "integrity" "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz" - "version" "5.62.0" - dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" - -"@typescript-eslint/type-utils@5.62.0": - "integrity" "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz" - "version" "5.62.0" - dependencies: - "@typescript-eslint/typescript-estree" "5.62.0" - "@typescript-eslint/utils" "5.62.0" - "debug" "^4.3.4" - "tsutils" "^3.21.0" - -"@typescript-eslint/types@4.33.0": - "integrity" "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz" - "version" "4.33.0" - -"@typescript-eslint/types@5.62.0": - "integrity" "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz" - "version" "5.62.0" - -"@typescript-eslint/typescript-estree@4.33.0": - "integrity" "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz" - "version" "4.33.0" - dependencies: - "@typescript-eslint/types" "4.33.0" - "@typescript-eslint/visitor-keys" "4.33.0" - "debug" "^4.3.1" - "globby" "^11.0.3" - "is-glob" "^4.0.1" - "semver" "^7.3.5" - "tsutils" "^3.21.0" - -"@typescript-eslint/typescript-estree@5.62.0": - "integrity" "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz" - "version" "5.62.0" - dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" - "debug" "^4.3.4" - "globby" "^11.1.0" - "is-glob" "^4.0.3" - "semver" "^7.3.7" - "tsutils" "^3.21.0" - -"@typescript-eslint/utils@^5.58.0", "@typescript-eslint/utils@5.62.0": - "integrity" "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz" - "version" "5.62.0" - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@types/json-schema" "^7.0.9" - "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.62.0" - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/typescript-estree" "5.62.0" - "eslint-scope" "^5.1.1" - "semver" "^7.3.7" - -"@typescript-eslint/visitor-keys@4.33.0": - "integrity" "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz" - "version" "4.33.0" - dependencies: - "@typescript-eslint/types" "4.33.0" - "eslint-visitor-keys" "^2.0.0" - -"@typescript-eslint/visitor-keys@5.62.0": - "integrity" "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz" - "version" "5.62.0" - dependencies: - "@typescript-eslint/types" "5.62.0" - "eslint-visitor-keys" "^3.3.0" - -"@uiw/codemirror-extensions-basic-setup@^4.12.4", "@uiw/codemirror-extensions-basic-setup@4.12.4": - "integrity" "sha512-owSCcRBtS2wYjxgBFkuIjfjWJHsR8AxgsQtqPpHB/6U0zCLuzKS/OM5ZRS2T3rdOizg0hCPztVvmshWeKjF+qw==" - "resolved" "https://registry.npmjs.org/@uiw/codemirror-extensions-basic-setup/-/codemirror-extensions-basic-setup-4.12.4.tgz" - "version" "4.12.4" - dependencies: - "@codemirror/autocomplete" "^6.0.0" - "@codemirror/commands" "^6.0.0" - "@codemirror/language" "^6.0.0" - "@codemirror/lint" "^6.0.0" - "@codemirror/search" "^6.0.0" - "@codemirror/state" "^6.0.0" - "@codemirror/view" "^6.0.0" - -"@uiw/codemirror-theme-github@^4.12.4": - "integrity" "sha512-ni5/u6aqv+4Nq5i7BaQiDFmZGu/+BhoptjxvNBlqJjVuYeUfv27zFTdcaFf2GKVL7mPMX4Q4MltVGKDYoWe14Q==" - "resolved" "https://registry.npmjs.org/@uiw/codemirror-theme-github/-/codemirror-theme-github-4.12.4.tgz" - "version" "4.12.4" - dependencies: - "@uiw/codemirror-themes" "4.12.4" - -"@uiw/codemirror-themes@4.12.4": - "integrity" "sha512-ekySMFlXaJ4u0TCz/caHG8HqJPT0+viUA2ZQ4yZ+F1z2Lk9HgMS/1YfRj8vHuEUPNXc9Fsy5qxwTp7I1hEanEg==" - "resolved" "https://registry.npmjs.org/@uiw/codemirror-themes/-/codemirror-themes-4.12.4.tgz" - "version" "4.12.4" - dependencies: - "@codemirror/language" "^6.0.0" - "@codemirror/state" "^6.0.0" - "@codemirror/view" "^6.0.0" - -"@uiw/react-codemirror@^4.12.4": - "integrity" "sha512-92TAvN2z5snPjPtJDLmbqrqsXXYFYlBnWraXZuDc1XGaw80tB26ZkdEW79CD2QM4Y9LhFIt+sauwlmiAVDs/5A==" - "resolved" "https://registry.npmjs.org/@uiw/react-codemirror/-/react-codemirror-4.12.4.tgz" - "version" "4.12.4" - dependencies: - "@babel/runtime" "^7.18.6" - "@codemirror/commands" "^6.1.0" - "@codemirror/state" "^6.1.1" - "@codemirror/theme-one-dark" "^6.0.0" - "@uiw/codemirror-extensions-basic-setup" "4.12.4" - "codemirror" "^6.0.0" - -"@webassemblyjs/ast@^1.11.5", "@webassemblyjs/ast@1.11.6": - "integrity" "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz" - "version" "1.11.6" - dependencies: - "@webassemblyjs/helper-numbers" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - -"@webassemblyjs/ast@1.11.1": - "integrity" "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz" - "version" "1.11.1" - dependencies: - "@webassemblyjs/helper-numbers" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - -"@webassemblyjs/floating-point-hex-parser@1.11.1": - "integrity" "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz" - "version" "1.11.1" - -"@webassemblyjs/floating-point-hex-parser@1.11.6": - "integrity" "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz" - "version" "1.11.6" - -"@webassemblyjs/helper-api-error@1.11.1": - "integrity" "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz" - "version" "1.11.1" - -"@webassemblyjs/helper-api-error@1.11.6": - "integrity" "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz" - "version" "1.11.6" - -"@webassemblyjs/helper-buffer@1.11.1": - "integrity" "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz" - "version" "1.11.1" - -"@webassemblyjs/helper-buffer@1.11.6": - "integrity" "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz" - "version" "1.11.6" - -"@webassemblyjs/helper-numbers@1.11.1": - "integrity" "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz" - "version" "1.11.1" - dependencies: - "@webassemblyjs/floating-point-hex-parser" "1.11.1" - "@webassemblyjs/helper-api-error" "1.11.1" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/helper-numbers@1.11.6": - "integrity" "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz" - "version" "1.11.6" - dependencies: - "@webassemblyjs/floating-point-hex-parser" "1.11.6" - "@webassemblyjs/helper-api-error" "1.11.6" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/helper-wasm-bytecode@1.11.1": - "integrity" "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz" - "version" "1.11.1" - -"@webassemblyjs/helper-wasm-bytecode@1.11.6": - "integrity" "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz" - "version" "1.11.6" - -"@webassemblyjs/helper-wasm-section@1.11.1": - "integrity" "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz" - "version" "1.11.1" - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-buffer" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/wasm-gen" "1.11.1" - -"@webassemblyjs/helper-wasm-section@1.11.6": - "integrity" "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz" - "version" "1.11.6" - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-buffer" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/wasm-gen" "1.11.6" - -"@webassemblyjs/ieee754@1.11.1": - "integrity" "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz" - "version" "1.11.1" - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/ieee754@1.11.6": - "integrity" "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz" - "version" "1.11.6" - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.11.1": - "integrity" "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz" - "version" "1.11.1" - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/leb128@1.11.6": - "integrity" "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz" - "version" "1.11.6" - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.11.1": - "integrity" "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz" - "version" "1.11.1" - -"@webassemblyjs/utf8@1.11.6": - "integrity" "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz" - "version" "1.11.6" - -"@webassemblyjs/wasm-edit@^1.11.5": - "integrity" "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz" - "version" "1.11.6" - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-buffer" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/helper-wasm-section" "1.11.6" - "@webassemblyjs/wasm-gen" "1.11.6" - "@webassemblyjs/wasm-opt" "1.11.6" - "@webassemblyjs/wasm-parser" "1.11.6" - "@webassemblyjs/wast-printer" "1.11.6" - -"@webassemblyjs/wasm-edit@1.11.1": - "integrity" "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz" - "version" "1.11.1" - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-buffer" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/helper-wasm-section" "1.11.1" - "@webassemblyjs/wasm-gen" "1.11.1" - "@webassemblyjs/wasm-opt" "1.11.1" - "@webassemblyjs/wasm-parser" "1.11.1" - "@webassemblyjs/wast-printer" "1.11.1" - -"@webassemblyjs/wasm-gen@1.11.1": - "integrity" "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz" - "version" "1.11.1" - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/ieee754" "1.11.1" - "@webassemblyjs/leb128" "1.11.1" - "@webassemblyjs/utf8" "1.11.1" - -"@webassemblyjs/wasm-gen@1.11.6": - "integrity" "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz" - "version" "1.11.6" - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/ieee754" "1.11.6" - "@webassemblyjs/leb128" "1.11.6" - "@webassemblyjs/utf8" "1.11.6" - -"@webassemblyjs/wasm-opt@1.11.1": - "integrity" "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz" - "version" "1.11.1" - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-buffer" "1.11.1" - "@webassemblyjs/wasm-gen" "1.11.1" - "@webassemblyjs/wasm-parser" "1.11.1" - -"@webassemblyjs/wasm-opt@1.11.6": - "integrity" "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz" - "version" "1.11.6" - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-buffer" "1.11.6" - "@webassemblyjs/wasm-gen" "1.11.6" - "@webassemblyjs/wasm-parser" "1.11.6" - -"@webassemblyjs/wasm-parser@^1.11.5": - "integrity" "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz" - "version" "1.11.6" - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-api-error" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/ieee754" "1.11.6" - "@webassemblyjs/leb128" "1.11.6" - "@webassemblyjs/utf8" "1.11.6" - -"@webassemblyjs/wasm-parser@1.11.1": - "integrity" "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz" - "version" "1.11.1" - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-api-error" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/ieee754" "1.11.1" - "@webassemblyjs/leb128" "1.11.1" - "@webassemblyjs/utf8" "1.11.1" - -"@webassemblyjs/wasm-parser@1.11.6": - "integrity" "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz" - "version" "1.11.6" - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-api-error" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/ieee754" "1.11.6" - "@webassemblyjs/leb128" "1.11.6" - "@webassemblyjs/utf8" "1.11.6" - -"@webassemblyjs/wast-printer@1.11.1": - "integrity" "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz" - "version" "1.11.1" - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/wast-printer@1.11.6": - "integrity" "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz" - "version" "1.11.6" - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@xtuc/long" "4.2.2" - -"@xtuc/ieee754@^1.2.0": - "integrity" "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" - "resolved" "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz" - "version" "1.2.0" - -"@xtuc/long@4.2.2": - "integrity" "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" - "resolved" "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz" - "version" "4.2.2" - -"7zip-bin@~5.1.1": - "integrity" "sha512-sAP4LldeWNz0lNzmTird3uWfFDWWTeg6V/MsmyyLR9X1idwKBWIgt/ZvinqQldJm3LecKEs1emkbquO6PCiLVQ==" - "resolved" "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.1.1.tgz" - "version" "5.1.1" - -"abab@^2.0.3", "abab@^2.0.5": - "integrity" "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==" - "resolved" "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz" - "version" "2.0.6" - -"abbrev@1": - "integrity" "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" - "resolved" "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz" - "version" "1.1.1" - -"abort-controller@^3.0.0": - "integrity" "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==" - "resolved" "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "event-target-shim" "^5.0.0" - -"abortcontroller-polyfill@^1.1.9": - "integrity" "sha512-zetDJxd89y3X99Kvo4qFx8GKlt6GsvN3UcRZHwU6iFA/0KiOmhkTVhe8oRoTBiTVPZu09x3vCra47+w8Yz1+2Q==" - "resolved" "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.3.tgz" - "version" "1.7.3" - -"accepts@~1.3.4", "accepts@~1.3.5", "accepts@~1.3.8": - "integrity" "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==" - "resolved" "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz" - "version" "1.3.8" - dependencies: - "mime-types" "~2.1.34" - "negotiator" "0.6.3" - -"acorn-globals@^6.0.0": - "integrity" "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==" - "resolved" "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "acorn" "^7.1.1" - "acorn-walk" "^7.1.1" - -"acorn-import-assertions@^1.7.6", "acorn-import-assertions@^1.9.0": - "integrity" "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==" - "resolved" "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz" - "version" "1.9.0" - -"acorn-jsx@^5.3.1", "acorn-jsx@^5.3.2": - "integrity" "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==" - "resolved" "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" - "version" "5.3.2" - -"acorn-walk@^7.1.1": - "integrity" "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==" - "resolved" "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz" - "version" "7.2.0" - -"acorn-walk@^8.1.1": - "integrity" "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==" - "resolved" "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz" - "version" "8.2.0" - -"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", "acorn@^8", "acorn@^8.2.4", "acorn@^8.4.1", "acorn@^8.7.1", "acorn@^8.8.2", "acorn@^8.9.0": - "integrity" "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==" - "resolved" "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz" - "version" "8.10.0" - -"acorn@^7.1.1": - "integrity" "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" - "resolved" "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" - "version" "7.4.1" - -"acorn@^7.4.0": - "integrity" "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" - "resolved" "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" - "version" "7.4.1" - -"add-stream@^1.0.0": - "integrity" "sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==" - "resolved" "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz" - "version" "1.0.0" - -"address@^1.0.1", "address@^1.1.2": - "integrity" "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==" - "resolved" "https://registry.npmjs.org/address/-/address-1.2.2.tgz" - "version" "1.2.2" - -"adjust-sourcemap-loader@^4.0.0": - "integrity" "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==" - "resolved" "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "loader-utils" "^2.0.0" - "regex-parser" "^2.2.11" - -"agent-base@^6.0.2", "agent-base@6": - "integrity" "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==" - "resolved" "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" - "version" "6.0.2" - dependencies: - "debug" "4" - -"agentkeepalive@^4.1.3": - "integrity" "sha512-+V/rGa3EuU74H6wR04plBb7Ks10FbtUQgRj/FQOG7uUIEuaINI+AiqJR1k6t3SVNs7o7ZjIdus6706qqzVq8jQ==" - "resolved" "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.1.4.tgz" - "version" "4.1.4" - dependencies: - "debug" "^4.1.0" - "depd" "^1.1.2" - "humanize-ms" "^1.2.1" - -"aggregate-error@^3.0.0": - "integrity" "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==" - "resolved" "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "clean-stack" "^2.0.0" - "indent-string" "^4.0.0" - -"ajv-formats@^2.1.1", "ajv-formats@2.1.1": - "integrity" "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==" - "resolved" "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz" - "version" "2.1.1" - dependencies: - "ajv" "^8.0.0" - -"ajv-keywords@^3.4.1", "ajv-keywords@^3.5.2": - "integrity" "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" - "resolved" "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" - "version" "3.5.2" - -"ajv-keywords@^5.1.0": - "integrity" "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==" - "resolved" "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz" - "version" "5.1.0" - dependencies: - "fast-deep-equal" "^3.1.3" - -"ajv@^6.10.0", "ajv@^6.12.0", "ajv@^6.12.2", "ajv@^6.12.3", "ajv@^6.12.4", "ajv@^6.12.5", "ajv@^6.9.1": - "integrity" "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==" - "resolved" "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" - "version" "6.12.6" - 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" - -"ajv@^8.0.0": - "integrity" "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==" - "resolved" "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz" - "version" "8.12.0" - dependencies: - "fast-deep-equal" "^3.1.1" - "json-schema-traverse" "^1.0.0" - "require-from-string" "^2.0.2" - "uri-js" "^4.2.2" - -"ajv@^8.0.1": - "integrity" "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==" - "resolved" "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz" - "version" "8.11.0" - dependencies: - "fast-deep-equal" "^3.1.1" - "json-schema-traverse" "^1.0.0" - "require-from-string" "^2.0.2" - "uri-js" "^4.2.2" - -"ajv@^8.6.0", "ajv@>=8": - "integrity" "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==" - "resolved" "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz" - "version" "8.12.0" - dependencies: - "fast-deep-equal" "^3.1.1" - "json-schema-traverse" "^1.0.0" - "require-from-string" "^2.0.2" - "uri-js" "^4.2.2" - -"ajv@^8.8.2", "ajv@^8.9.0": - "integrity" "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==" - "resolved" "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz" - "version" "8.12.0" - dependencies: - "fast-deep-equal" "^3.1.1" - "json-schema-traverse" "^1.0.0" - "require-from-string" "^2.0.2" - "uri-js" "^4.2.2" - -"ajv@8.9.0": - "integrity" "sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==" - "resolved" "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz" - "version" "8.9.0" - dependencies: - "fast-deep-equal" "^3.1.1" - "json-schema-traverse" "^1.0.0" - "require-from-string" "^2.0.2" - "uri-js" "^4.2.2" - -"ansi-align@^3.0.0": - "integrity" "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==" - "resolved" "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "string-width" "^4.1.0" - -"ansi-colors@^4.1.1": - "integrity" "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==" - "resolved" "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz" - "version" "4.1.3" - -"ansi-colors@4.1.1": - "integrity" "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==" - "resolved" "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz" - "version" "4.1.1" - -"ansi-escapes@^4.2.1", "ansi-escapes@^4.3.0", "ansi-escapes@^4.3.1": - "integrity" "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==" - "resolved" "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" - "version" "4.3.2" - dependencies: - "type-fest" "^0.21.3" - -"ansi-html-community@^0.0.8": - "integrity" "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==" - "resolved" "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz" - "version" "0.0.8" - -"ansi-regex@^2.0.0": - "integrity" "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==" - "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" - "version" "2.1.1" - -"ansi-regex@^4.1.0": - "integrity" "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==" - "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz" - "version" "4.1.1" - -"ansi-regex@^5.0.0", "ansi-regex@^5.0.1": - "integrity" "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" - "version" "5.0.1" - -"ansi-regex@^6.0.1": - "integrity" "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" - "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz" - "version" "6.0.1" - -"ansi-styles@^3.2.0": - "integrity" "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==" - "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" - "version" "3.2.1" - dependencies: - "color-convert" "^1.9.0" - -"ansi-styles@^3.2.1": - "integrity" "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==" - "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" - "version" "3.2.1" - dependencies: - "color-convert" "^1.9.0" - -"ansi-styles@^4.0.0", "ansi-styles@^4.1.0": - "integrity" "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==" - "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" - "version" "4.3.0" - dependencies: - "color-convert" "^2.0.1" - -"ansi-styles@^5.0.0": - "integrity" "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" - "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" - "version" "5.2.0" - -"ansi-styles@^6.0.0": - "integrity" "sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==" - "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.1.0.tgz" - "version" "6.1.0" - -"ansi-to-html@^0.7.2": - "integrity" "sha512-v6MqmEpNlxF+POuyhKkidusCHWWkaLcGRURzivcU3I9tv7k4JVhFcnukrM5Rlk2rUywdZuzYAZ+kbZqWCnfN3g==" - "resolved" "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.7.2.tgz" - "version" "0.7.2" - dependencies: - "entities" "^2.2.0" - -"any-promise@^1.0.0": - "integrity" "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" - "resolved" "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz" - "version" "1.3.0" - -"anymatch@^3.0.3", "anymatch@~3.1.2": - "integrity" "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==" - "resolved" "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz" - "version" "3.1.2" - dependencies: - "normalize-path" "^3.0.0" - "picomatch" "^2.0.4" - -"app-builder-bin@4.0.0": - "integrity" "sha512-xwdG0FJPQMe0M0UA4Tz0zEB8rBJTRA5a476ZawAqiBkMv16GRK5xpXThOjMaEOFnZ6zabejjG4J3da0SXG63KA==" - "resolved" "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-4.0.0.tgz" - "version" "4.0.0" - -"app-builder-lib@23.3.3": - "integrity" "sha512-m0+M53+HYMzqKxwNQZT143K7WwXEGUy9LY31l8dJphXx2P/FQod615mVbxHyqbDCG4J5bHdWm21qZ0e2DVY6CQ==" - "resolved" "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-23.3.3.tgz" - "version" "23.3.3" - dependencies: - "@develar/schema-utils" "~2.6.5" - "@electron/universal" "1.2.1" - "@malept/flatpak-bundler" "^0.4.0" - "7zip-bin" "~5.1.1" - "async-exit-hook" "^2.0.1" - "bluebird-lst" "^1.0.9" - "builder-util" "23.3.3" - "builder-util-runtime" "9.0.3" - "chromium-pickle-js" "^0.2.0" - "debug" "^4.3.4" - "ejs" "^3.1.7" - "electron-osx-sign" "^0.6.0" - "electron-publish" "23.3.3" - "form-data" "^4.0.0" - "fs-extra" "^10.1.0" - "hosted-git-info" "^4.1.0" - "is-ci" "^3.0.0" - "isbinaryfile" "^4.0.10" - "js-yaml" "^4.1.0" - "lazy-val" "^1.0.5" - "minimatch" "^3.1.2" - "read-config-file" "6.2.0" - "sanitize-filename" "^1.6.3" - "semver" "^7.3.7" - "tar" "^6.1.11" - "temp-file" "^3.4.0" - -"app-root-path@^3.0.0": - "integrity" "sha512-qMcx+Gy2UZynHjOHOIXPNvpf+9cjvk3cWrBBK7zg4gH9+clobJRb9NGzcT7mQTcV/6Gm/1WelUtqxVXnNlrwcw==" - "resolved" "https://registry.npmjs.org/app-root-path/-/app-root-path-3.0.0.tgz" - "version" "3.0.0" - -"append-field@^1.0.0": - "integrity" "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==" - "resolved" "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz" - "version" "1.0.0" - -"aproba@^1.0.3 || ^2.0.0": - "integrity" "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" - "resolved" "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz" - "version" "2.0.0" - -"aproba@^1.0.3": - "integrity" "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" - "resolved" "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz" - "version" "1.2.0" - -"aproba@^2.0.0": - "integrity" "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" - "resolved" "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz" - "version" "2.0.0" - -"are-we-there-yet@^2.0.0": - "integrity" "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==" - "resolved" "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "delegates" "^1.0.0" - "readable-stream" "^3.6.0" - -"are-we-there-yet@^3.0.0": - "integrity" "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==" - "resolved" "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "delegates" "^1.0.0" - "readable-stream" "^3.6.0" - -"are-we-there-yet@~1.1.2": - "integrity" "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==" - "resolved" "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz" - "version" "1.1.7" - dependencies: - "delegates" "^1.0.0" - "readable-stream" "^2.0.6" - -"arg@^4.1.0": - "integrity" "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" - "resolved" "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz" - "version" "4.1.3" - -"arg@^5.0.2": - "integrity" "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" - "resolved" "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz" - "version" "5.0.2" - -"argparse@^1.0.7": - "integrity" "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==" - "resolved" "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" - "version" "1.0.10" - dependencies: - "sprintf-js" "~1.0.2" - -"argparse@^2.0.1": - "integrity" "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - "resolved" "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" - "version" "2.0.1" - -"aria-query@^4.2.2": - "integrity" "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==" - "resolved" "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz" - "version" "4.2.2" - dependencies: - "@babel/runtime" "^7.10.2" - "@babel/runtime-corejs3" "^7.10.2" - -"aria-query@^5.0.0": - "integrity" "sha512-V+SM7AbUwJ+EBnB8+DXs0hPZHO0W6pqBcc0dW90OwtVG02PswOu/teuARoLQjdDOH+t9pJgGnW5/Qmouf3gPJg==" - "resolved" "https://registry.npmjs.org/aria-query/-/aria-query-5.0.0.tgz" - "version" "5.0.0" - -"aria-query@^5.1.3": - "integrity" "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==" - "resolved" "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz" - "version" "5.3.0" - dependencies: - "dequal" "^2.0.3" - -"array-buffer-byte-length@^1.0.0": - "integrity" "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==" - "resolved" "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "call-bind" "^1.0.2" - "is-array-buffer" "^3.0.1" - -"array-differ@^3.0.0": - "integrity" "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==" - "resolved" "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz" - "version" "3.0.0" - -"array-flatten@^2.1.2": - "integrity" "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" - "resolved" "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz" - "version" "2.1.2" - -"array-flatten@1.1.1": - "integrity" "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" - "resolved" "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" - "version" "1.1.1" - -"array-ify@^1.0.0": - "integrity" "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==" - "resolved" "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz" - "version" "1.0.0" - -"array-includes@^3.1.5", "array-includes@^3.1.6": - "integrity" "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==" - "resolved" "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz" - "version" "3.1.7" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.2.0" - "es-abstract" "^1.22.1" - "get-intrinsic" "^1.2.1" - "is-string" "^1.0.7" - -"array-union@^2.1.0": - "integrity" "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" - "resolved" "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" - "version" "2.1.0" - -"array.prototype.findlastindex@^1.2.2": - "integrity" "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==" - "resolved" "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz" - "version" "1.2.3" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.2.0" - "es-abstract" "^1.22.1" - "es-shim-unscopables" "^1.0.0" - "get-intrinsic" "^1.2.1" - -"array.prototype.flat@^1.3.1": - "integrity" "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==" - "resolved" "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz" - "version" "1.3.1" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.20.4" - "es-shim-unscopables" "^1.0.0" - -"array.prototype.flatmap@^1.3.0", "array.prototype.flatmap@^1.3.1": - "integrity" "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==" - "resolved" "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz" - "version" "1.3.1" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.20.4" - "es-shim-unscopables" "^1.0.0" - -"array.prototype.reduce@^1.0.4": - "integrity" "sha512-WnM+AjG/DvLRLo4DDl+r+SvCzYtD2Jd9oeBYMcEaI7t3fFrHY9M53/wdLcTvmZNQ70IU6Htj0emFkZ5TS+lrdw==" - "resolved" "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.4.tgz" - "version" "1.0.4" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.3" - "es-abstract" "^1.19.2" - "es-array-method-boxes-properly" "^1.0.0" - "is-string" "^1.0.7" - -"arraybuffer.prototype.slice@^1.0.1": - "integrity" "sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==" - "resolved" "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "array-buffer-byte-length" "^1.0.0" - "call-bind" "^1.0.2" - "define-properties" "^1.2.0" - "get-intrinsic" "^1.2.1" - "is-array-buffer" "^3.0.2" - "is-shared-array-buffer" "^1.0.2" - -"arrify@^1.0.1": - "integrity" "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==" - "resolved" "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz" - "version" "1.0.1" - -"arrify@^2.0.1": - "integrity" "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==" - "resolved" "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz" - "version" "2.0.1" - -"asap@^2.0.0", "asap@~2.0.3", "asap@~2.0.6": - "integrity" "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" - "resolved" "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz" - "version" "2.0.6" - -"asar@^3.1.0": - "integrity" "sha512-COdw2ZQvKdFGFxXwX3oYh2/sOsJWJegrdJCGxnN4MZ7IULgRBp9P6665aqj9z1v9VwP4oP1hRBojRDQ//IGgAg==" - "resolved" "https://registry.npmjs.org/asar/-/asar-3.2.0.tgz" - "version" "3.2.0" - dependencies: - "chromium-pickle-js" "^0.2.0" - "commander" "^5.0.0" - "glob" "^7.1.6" - "minimatch" "^3.0.4" - optionalDependencies: - "@types/glob" "^7.1.1" - -"asn1@~0.2.3": - "integrity" "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==" - "resolved" "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz" - "version" "0.2.4" - dependencies: - "safer-buffer" "~2.1.0" - -"assert-plus@^1.0.0", "assert-plus@1.0.0": - "integrity" "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==" - "resolved" "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" - "version" "1.0.0" - -"ast-types-flow@^0.0.7": - "integrity" "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==" - "resolved" "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz" - "version" "0.0.7" - -"astral-regex@^2.0.0": - "integrity" "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==" - "resolved" "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz" - "version" "2.0.0" - -"async-exit-hook@^2.0.1": - "integrity" "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==" - "resolved" "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz" - "version" "2.0.1" - -"async@^3.2.3": - "integrity" "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" - "resolved" "https://registry.npmjs.org/async/-/async-3.2.4.tgz" - "version" "3.2.4" - -"asynckit@^0.4.0": - "integrity" "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - "resolved" "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" - "version" "0.4.0" - -"at-least-node@^1.0.0": - "integrity" "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" - "resolved" "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz" - "version" "1.0.0" - -"atob@^2.1.2": - "integrity" "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" - "resolved" "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz" - "version" "2.1.2" - -"autoprefixer@^10.4.13": - "integrity" "sha512-KCuPB8ZCIqFdA4HwKXsvz7j6gvSDNhDP7WnUjBleRkKjPdvCmHFuQ77ocavI8FT6NdvlBnE2UFr2H4Mycn8Vew==" - "resolved" "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.15.tgz" - "version" "10.4.15" - dependencies: - "browserslist" "^4.21.10" - "caniuse-lite" "^1.0.30001520" - "fraction.js" "^4.2.0" - "normalize-range" "^0.1.2" - "picocolors" "^1.0.0" - "postcss-value-parser" "^4.2.0" - -"available-typed-arrays@^1.0.5": - "integrity" "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" - "resolved" "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz" - "version" "1.0.5" - -"aws-sign2@~0.7.0": - "integrity" "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==" - "resolved" "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz" - "version" "0.7.0" - -"aws4@^1.8.0": - "integrity" "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" - "resolved" "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz" - "version" "1.11.0" - -"axe-core@^4.6.2": - "integrity" "sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==" - "resolved" "https://registry.npmjs.org/axe-core/-/axe-core-4.7.2.tgz" - "version" "4.7.2" - -"axios@^0.21.4": - "integrity" "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==" - "resolved" "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz" - "version" "0.21.4" - dependencies: - "follow-redirects" "^1.14.0" - -"axios@^0.25.0": - "integrity" "sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==" - "resolved" "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz" - "version" "0.25.0" - dependencies: - "follow-redirects" "^1.14.7" - -"axios@0.27.2": - "integrity" "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==" - "resolved" "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz" - "version" "0.27.2" - dependencies: - "follow-redirects" "^1.14.9" - "form-data" "^4.0.0" - -"axobject-query@^3.1.1": - "integrity" "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==" - "resolved" "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz" - "version" "3.2.1" - dependencies: - "dequal" "^2.0.3" - -"babel-jest@^27.4.2", "babel-jest@^27.5.1", "babel-jest@>=27.0.0 <28": - "integrity" "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==" - "resolved" "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/babel__core" "^7.1.14" - "babel-plugin-istanbul" "^6.1.1" - "babel-preset-jest" "^27.5.1" - "chalk" "^4.0.0" - "graceful-fs" "^4.2.9" - "slash" "^3.0.0" - -"babel-loader@^8.2.3": - "integrity" "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==" - "resolved" "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz" - "version" "8.3.0" - dependencies: - "find-cache-dir" "^3.3.1" - "loader-utils" "^2.0.0" - "make-dir" "^3.1.0" - "schema-utils" "^2.6.5" - -"babel-plugin-dynamic-import-node@^2.3.3": - "integrity" "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==" - "resolved" "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz" - "version" "2.3.3" - dependencies: - "object.assign" "^4.1.0" - -"babel-plugin-istanbul@^6.1.1": - "integrity" "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==" - "resolved" "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz" - "version" "6.1.1" - 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" - -"babel-plugin-jest-hoist@^27.5.1": - "integrity" "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==" - "resolved" "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@babel/template" "^7.3.3" - "@babel/types" "^7.3.3" - "@types/babel__core" "^7.0.0" - "@types/babel__traverse" "^7.0.6" - -"babel-plugin-macros@^3.1.0": - "integrity" "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==" - "resolved" "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "@babel/runtime" "^7.12.5" - "cosmiconfig" "^7.0.0" - "resolve" "^1.19.0" - -"babel-plugin-named-asset-import@^0.3.8": - "integrity" "sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q==" - "resolved" "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz" - "version" "0.3.8" - -"babel-plugin-polyfill-corejs2@^0.3.2": - "integrity" "sha512-LPnodUl3lS0/4wN3Rb+m+UK8s7lj2jcLRrjho4gLw+OJs+I4bvGXshINesY5xx/apM+biTnQ9reDI8yj+0M5+Q==" - "resolved" "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.2.tgz" - "version" "0.3.2" - dependencies: - "@babel/compat-data" "^7.17.7" - "@babel/helper-define-polyfill-provider" "^0.3.2" - "semver" "^6.1.1" - -"babel-plugin-polyfill-corejs3@^0.5.3": - "integrity" "sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw==" - "resolved" "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz" - "version" "0.5.3" - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.2" - "core-js-compat" "^3.21.0" - -"babel-plugin-polyfill-regenerator@^0.4.0": - "integrity" "sha512-RW1cnryiADFeHmfLS+WW/G431p1PsW5qdRdz0SDRi7TKcUgc7Oh/uXkT7MZ/+tGsT1BkczEAmD5XjUyJ5SWDTw==" - "resolved" "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.0.tgz" - "version" "0.4.0" - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.2" - -"babel-plugin-transform-react-remove-prop-types@^0.4.24": - "integrity" "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz" - "version" "0.4.24" - -"babel-preset-current-node-syntax@^1.0.0": - "integrity" "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==" - "resolved" "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-bigint" "^7.8.3" - "@babel/plugin-syntax-class-properties" "^7.8.3" - "@babel/plugin-syntax-import-meta" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-top-level-await" "^7.8.3" - -"babel-preset-jest@^27.5.1": - "integrity" "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==" - "resolved" "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "babel-plugin-jest-hoist" "^27.5.1" - "babel-preset-current-node-syntax" "^1.0.0" - -"babel-preset-react-app@^10.0.1": - "integrity" "sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg==" - "resolved" "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-10.0.1.tgz" - "version" "10.0.1" - dependencies: - "@babel/core" "^7.16.0" - "@babel/plugin-proposal-class-properties" "^7.16.0" - "@babel/plugin-proposal-decorators" "^7.16.4" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.0" - "@babel/plugin-proposal-numeric-separator" "^7.16.0" - "@babel/plugin-proposal-optional-chaining" "^7.16.0" - "@babel/plugin-proposal-private-methods" "^7.16.0" - "@babel/plugin-transform-flow-strip-types" "^7.16.0" - "@babel/plugin-transform-react-display-name" "^7.16.0" - "@babel/plugin-transform-runtime" "^7.16.4" - "@babel/preset-env" "^7.16.4" - "@babel/preset-react" "^7.16.0" - "@babel/preset-typescript" "^7.16.0" - "@babel/runtime" "^7.16.3" - "babel-plugin-macros" "^3.1.0" - "babel-plugin-transform-react-remove-prop-types" "^0.4.24" - -"balanced-match@^1.0.0": - "integrity" "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - "resolved" "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" - "version" "1.0.2" - -"base-x@^3.0.8": - "integrity" "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==" - "resolved" "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz" - "version" "3.0.9" - dependencies: - "safe-buffer" "^5.0.1" - -"base16@^1.0.0": - "integrity" "sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ==" - "resolved" "https://registry.npmjs.org/base16/-/base16-1.0.0.tgz" - "version" "1.0.0" - -"base64-js@^1.3.1", "base64-js@^1.5.1": - "integrity" "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - "resolved" "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" - "version" "1.5.1" - -"batch@0.6.1": - "integrity" "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==" - "resolved" "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz" - "version" "0.6.1" - -"bcrypt-pbkdf@^1.0.0": - "integrity" "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==" - "resolved" "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "tweetnacl" "^0.14.3" - -"before-after-hook@^2.2.0": - "integrity" "sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==" - "resolved" "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz" - "version" "2.2.2" - -"bfj@^7.0.2": - "integrity" "sha512-+e/UqUzwmzJamNF50tBV6tZPTORow7gQ96iFow+8b562OdMpEK0BcJEq2OSPEDmAbSMBQ7PKZ87ubFkgxpYWgw==" - "resolved" "https://registry.npmjs.org/bfj/-/bfj-7.0.2.tgz" - "version" "7.0.2" - dependencies: - "bluebird" "^3.5.5" - "check-types" "^11.1.1" - "hoopy" "^0.1.4" - "tryer" "^1.0.1" - -"big-integer@^1.6.16": - "integrity" "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==" - "resolved" "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz" - "version" "1.6.51" - -"big.js@^5.2.2": - "integrity" "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" - "resolved" "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz" - "version" "5.2.2" - -"binary-extensions@^2.0.0": - "integrity" "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" - "resolved" "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" - "version" "2.2.0" - -"bl@^4.1.0": - "integrity" "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==" - "resolved" "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "buffer" "^5.5.0" - "inherits" "^2.0.4" - "readable-stream" "^3.4.0" - -"bluebird-lst@^1.0.9": - "integrity" "sha512-7B1Rtx82hjnSD4PGLAjVWeYH3tHAcVUmChh85a3lltKQm6FresXh9ErQo6oAv6CqxttczC3/kEg8SY5NluPuUw==" - "resolved" "https://registry.npmjs.org/bluebird-lst/-/bluebird-lst-1.0.9.tgz" - "version" "1.0.9" - dependencies: - "bluebird" "^3.5.5" - -"bluebird@^3.5.0", "bluebird@^3.5.5": - "integrity" "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - "resolved" "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz" - "version" "3.7.2" - -"bn.js@^4.11.9": - "integrity" "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" - "version" "4.12.0" - -"body-parser@1.20.0": - "integrity" "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==" - "resolved" "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz" - "version" "1.20.0" - dependencies: - "bytes" "3.1.2" - "content-type" "~1.0.4" - "debug" "2.6.9" - "depd" "2.0.0" - "destroy" "1.2.0" - "http-errors" "2.0.0" - "iconv-lite" "0.4.24" - "on-finished" "2.4.1" - "qs" "6.10.3" - "raw-body" "2.5.1" - "type-is" "~1.6.18" - "unpipe" "1.0.0" - -"bonjour-service@^1.0.11": - "integrity" "sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg==" - "resolved" "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.1.tgz" - "version" "1.1.1" - dependencies: - "array-flatten" "^2.1.2" - "dns-equal" "^1.0.0" - "fast-deep-equal" "^3.1.3" - "multicast-dns" "^7.2.5" - -"boolbase@^1.0.0", "boolbase@~1.0.0": - "integrity" "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" - "resolved" "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" - "version" "1.0.0" - -"boolean@^3.0.1": - "integrity" "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==" - "resolved" "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz" - "version" "3.2.0" - -"boxen@^5.0.0": - "integrity" "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==" - "resolved" "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz" - "version" "5.1.2" - dependencies: - "ansi-align" "^3.0.0" - "camelcase" "^6.2.0" - "chalk" "^4.1.0" - "cli-boxes" "^2.2.1" - "string-width" "^4.2.2" - "type-fest" "^0.20.2" - "widest-line" "^3.1.0" - "wrap-ansi" "^7.0.0" - -"brace-expansion@^1.1.7": - "integrity" "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==" - "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" - "version" "1.1.11" - dependencies: - "balanced-match" "^1.0.0" - "concat-map" "0.0.1" - -"brace-expansion@^2.0.1": - "integrity" "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==" - "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "balanced-match" "^1.0.0" - -"braces@^3.0.2": - "integrity" "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==" - "resolved" "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" - "version" "3.0.2" - dependencies: - "fill-range" "^7.0.1" - -"braces@~3.0.2": - "integrity" "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==" - "resolved" "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" - "version" "3.0.2" - dependencies: - "fill-range" "^7.0.1" - -"broadcast-channel@^3.4.1": - "integrity" "sha512-cIAKJXAxGJceNZGTZSBzMxzyOn72cVgPnKx4dc6LRjQgbaJUQqhy5rzL3zbMxkMWsGKkv2hSFkPRMEXfoMZ2Mg==" - "resolved" "https://registry.npmjs.org/broadcast-channel/-/broadcast-channel-3.7.0.tgz" - "version" "3.7.0" - dependencies: - "@babel/runtime" "^7.7.2" - "detect-node" "^2.1.0" - "js-sha3" "0.8.0" - "microseconds" "0.2.0" - "nano-time" "1.0.0" - "oblivious-set" "1.0.0" - "rimraf" "3.0.2" - "unload" "2.2.0" - -"brorand@^1.1.0": - "integrity" "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" - "resolved" "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz" - "version" "1.1.0" - -"browser-process-hrtime@^1.0.0": - "integrity" "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" - "resolved" "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz" - "version" "1.0.0" - -"browserslist@^4.0.0", "browserslist@^4.14.5", "browserslist@^4.18.1", "browserslist@^4.20.2", "browserslist@^4.21.10", "browserslist@^4.21.3", "browserslist@^4.21.4", "browserslist@^4.6.6", "browserslist@>= 4", "browserslist@>= 4.21.0", "browserslist@>=4": - "integrity" "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==" - "resolved" "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz" - "version" "4.21.10" - dependencies: - "caniuse-lite" "^1.0.30001517" - "electron-to-chromium" "^1.4.477" - "node-releases" "^2.0.13" - "update-browserslist-db" "^1.0.11" - -"bs-logger@0.x": - "integrity" "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==" - "resolved" "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz" - "version" "0.2.6" - dependencies: - "fast-json-stable-stringify" "2.x" - -"bser@2.1.1": - "integrity" "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==" - "resolved" "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz" - "version" "2.1.1" - dependencies: - "node-int64" "^0.4.0" - -"buffer-alloc-unsafe@^1.1.0": - "integrity" "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" - "resolved" "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz" - "version" "1.1.0" - -"buffer-alloc@^1.2.0": - "integrity" "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==" - "resolved" "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz" - "version" "1.2.0" - dependencies: - "buffer-alloc-unsafe" "^1.1.0" - "buffer-fill" "^1.0.0" - -"buffer-crc32@~0.2.3": - "integrity" "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==" - "resolved" "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz" - "version" "0.2.13" - -"buffer-equal@1.0.0": - "integrity" "sha512-tcBWO2Dl4e7Asr9hTGcpVrCe+F7DubpmqWCTbj4FHLmjqO2hIaC383acQubWtRJhdceqs5uBHs6Es+Sk//RKiQ==" - "resolved" "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz" - "version" "1.0.0" - -"buffer-fill@^1.0.0": - "integrity" "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==" - "resolved" "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz" - "version" "1.0.0" - -"buffer-from@^1.0.0": - "integrity" "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - "resolved" "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" - "version" "1.1.2" - -"buffer@^5.1.0": - "integrity" "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==" - "resolved" "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" - "version" "5.7.1" - dependencies: - "base64-js" "^1.3.1" - "ieee754" "^1.1.13" - -"buffer@^5.5.0": - "integrity" "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==" - "resolved" "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" - "version" "5.7.1" - dependencies: - "base64-js" "^1.3.1" - "ieee754" "^1.1.13" - -"buffer@^6.0.3", "buffer@6.0.3": - "integrity" "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==" - "resolved" "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz" - "version" "6.0.3" - dependencies: - "base64-js" "^1.3.1" - "ieee754" "^1.2.1" - -"builder-util-runtime@9.0.3": - "integrity" "sha512-SfG2wnyjpUbbdtpnqDpWwklujofC6GarGpvdWrEkg9p5AD/xJmTF2buTNaqs3qtsNBEVQDDjZz9xc2GGpVyMfA==" - "resolved" "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.0.3.tgz" - "version" "9.0.3" - dependencies: - "debug" "^4.3.4" - "sax" "^1.2.4" - -"builder-util-runtime@9.1.1": - "integrity" "sha512-azRhYLEoDvRDR8Dhis4JatELC/jUvYjm4cVSj7n9dauGTOM2eeNn9KS0z6YA6oDsjI1xphjNbY6PZZeHPzzqaw==" - "resolved" "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.1.1.tgz" - "version" "9.1.1" - dependencies: - "debug" "^4.3.4" - "sax" "^1.2.4" - -"builder-util@23.3.3": - "integrity" "sha512-MJZlUiq2PY5hjYv9+XNaoYdsITqvLgRDoHSFg/4nzpInbNxNjLQOolL04Zsyp+hgfcbFvMC4h0KkR1CMPHLWbA==" - "resolved" "https://registry.npmjs.org/builder-util/-/builder-util-23.3.3.tgz" - "version" "23.3.3" - dependencies: - "@types/debug" "^4.1.6" - "@types/fs-extra" "^9.0.11" - "7zip-bin" "~5.1.1" - "app-builder-bin" "4.0.0" - "bluebird-lst" "^1.0.9" - "builder-util-runtime" "9.0.3" - "chalk" "^4.1.1" - "cross-spawn" "^7.0.3" - "debug" "^4.3.4" - "fs-extra" "^10.0.0" - "http-proxy-agent" "^5.0.0" - "https-proxy-agent" "^5.0.0" - "is-ci" "^3.0.0" - "js-yaml" "^4.1.0" - "source-map-support" "^0.5.19" - "stat-mode" "^1.0.0" - "temp-file" "^3.4.0" - -"builtin-modules@^3.1.0": - "integrity" "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==" - "resolved" "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz" - "version" "3.3.0" - -"builtins@^1.0.3": - "integrity" "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==" - "resolved" "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz" - "version" "1.0.3" - -"busboy@^1.0.0": - "integrity" "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==" - "resolved" "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz" - "version" "1.6.0" - dependencies: - "streamsearch" "^1.1.0" - -"byline@^5.0.0": - "integrity" "sha512-s6webAy+R4SR8XVuJWt2V2rGvhnrhxN+9S15GNuTK3wKPOXFF6RNc+8ug2XhH+2s4f+uudG4kUVYmYOQWL2g0Q==" - "resolved" "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz" - "version" "5.0.0" - -"byte-size@^7.0.0": - "integrity" "sha512-crQdqyCwhokxwV1UyDzLZanhkugAgft7vt0qbbdt60C6Zf3CAiGmtUCylbtYwrU6loOUw3euGrNtW1J651ot1A==" - "resolved" "https://registry.npmjs.org/byte-size/-/byte-size-7.0.1.tgz" - "version" "7.0.1" - -"bytes@3.0.0": - "integrity" "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==" - "resolved" "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz" - "version" "3.0.0" - -"bytes@3.1.2": - "integrity" "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" - "resolved" "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" - "version" "3.1.2" - -"cacache@^15.0.5", "cacache@^15.2.0": - "integrity" "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==" - "resolved" "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz" - "version" "15.3.0" - 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" - -"cacheable-request@^6.0.0": - "integrity" "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==" - "resolved" "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz" - "version" "6.1.0" - dependencies: - "clone-response" "^1.0.2" - "get-stream" "^5.1.0" - "http-cache-semantics" "^4.0.0" - "keyv" "^3.0.0" - "lowercase-keys" "^2.0.0" - "normalize-url" "^4.1.0" - "responselike" "^1.0.2" - -"call-bind@^1.0.0", "call-bind@^1.0.2": - "integrity" "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==" - "resolved" "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "function-bind" "^1.1.1" - "get-intrinsic" "^1.0.2" - -"callsites@^3.0.0": - "integrity" "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" - "resolved" "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" - "version" "3.1.0" - -"camel-case@^4.1.2": - "integrity" "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==" - "resolved" "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz" - "version" "4.1.2" - dependencies: - "pascal-case" "^3.1.2" - "tslib" "^2.0.3" - -"camelcase-css@^2.0.1": - "integrity" "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==" - "resolved" "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz" - "version" "2.0.1" - -"camelcase-keys@^6.2.2": - "integrity" "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==" - "resolved" "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz" - "version" "6.2.2" - dependencies: - "camelcase" "^5.3.1" - "map-obj" "^4.0.0" - "quick-lru" "^4.0.1" - -"camelcase@^5.0.0": - "integrity" "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" - "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" - "version" "5.3.1" - -"camelcase@^5.3.1": - "integrity" "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" - "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" - "version" "5.3.1" - -"camelcase@^6.2.0", "camelcase@^6.2.1": - "integrity" "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" - "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" - "version" "6.3.0" - -"caniuse-api@^3.0.0": - "integrity" "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==" - "resolved" "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "browserslist" "^4.0.0" - "caniuse-lite" "^1.0.0" - "lodash.memoize" "^4.1.2" - "lodash.uniq" "^4.5.0" - -"caniuse-lite@^1.0.0", "caniuse-lite@^1.0.30001517", "caniuse-lite@^1.0.30001520": - "integrity" "sha512-YkJi7RwPgWtXVSgK4lG9AHH57nSzvvOp9MesgXmw4Q7n0C3H04L0foHqfxcmSAm5AcWb8dW9AYj2tR7/5GnddQ==" - "resolved" "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001527.tgz" - "version" "1.0.30001527" - -"case-sensitive-paths-webpack-plugin@^2.4.0": - "integrity" "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==" - "resolved" "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz" - "version" "2.4.0" - -"caseless@~0.12.0": - "integrity" "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" - "resolved" "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz" - "version" "0.12.0" - -"chalk@^2.0.0": - "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" - "version" "2.4.2" - dependencies: - "ansi-styles" "^3.2.1" - "escape-string-regexp" "^1.0.5" - "supports-color" "^5.3.0" - -"chalk@^2.4.1": - "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" - "version" "2.4.2" - dependencies: - "ansi-styles" "^3.2.1" - "escape-string-regexp" "^1.0.5" - "supports-color" "^5.3.0" - -"chalk@^3.0.0": - "integrity" "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "ansi-styles" "^4.1.0" - "supports-color" "^7.1.0" - -"chalk@^4.0.0", "chalk@^4.0.2", "chalk@^4.1.0", "chalk@^4.1.1", "chalk@^4.1.2": - "integrity" "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" - "version" "4.1.2" - dependencies: - "ansi-styles" "^4.1.0" - "supports-color" "^7.1.0" - -"chalk@3.0.0": - "integrity" "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "ansi-styles" "^4.1.0" - "supports-color" "^7.1.0" - -"char-regex@^1.0.2": - "integrity" "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==" - "resolved" "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz" - "version" "1.0.2" - -"char-regex@^2.0.0": - "integrity" "sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw==" - "resolved" "https://registry.npmjs.org/char-regex/-/char-regex-2.0.1.tgz" - "version" "2.0.1" - -"chardet@^0.7.0": - "integrity" "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" - "resolved" "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz" - "version" "0.7.0" - -"check-types@^11.1.1": - "integrity" "sha512-tzWzvgePgLORb9/3a0YenggReLKAIb2owL03H2Xdoe5pKcUyWRSEQ8xfCar8t2SIAuEDwtmx2da1YB52YuHQMQ==" - "resolved" "https://registry.npmjs.org/check-types/-/check-types-11.1.2.tgz" - "version" "11.1.2" - -"chokidar-cli@^3.0.0": - "integrity" "sha512-xVW+Qeh7z15uZRxHOkP93Ux8A0xbPzwK4GaqD8dQOYc34TlkqUhVSS59fK36DOp5WdJlrRzlYSy02Ht99FjZqQ==" - "resolved" "https://registry.npmjs.org/chokidar-cli/-/chokidar-cli-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "chokidar" "^3.5.2" - "lodash.debounce" "^4.0.8" - "lodash.throttle" "^4.1.1" - "yargs" "^13.3.0" - -"chokidar@^3.4.2", "chokidar@^3.5.2", "chokidar@^3.5.3", "chokidar@>=3.0.0 <4.0.0", "chokidar@3.5.3": - "integrity" "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==" - "resolved" "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" - "version" "3.5.3" - 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" - optionalDependencies: - "fsevents" "~2.3.2" - -"chownr@^1.1.4": - "integrity" "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - "resolved" "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz" - "version" "1.1.4" - -"chownr@^2.0.0": - "integrity" "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" - "resolved" "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz" - "version" "2.0.0" - -"chrome-trace-event@^1.0.2": - "integrity" "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==" - "resolved" "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz" - "version" "1.0.3" - -"chromium-pickle-js@^0.2.0": - "integrity" "sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==" - "resolved" "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz" - "version" "0.2.0" - -"ci-info@^2.0.0": - "integrity" "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" - "resolved" "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz" - "version" "2.0.0" - -"ci-info@^3.2.0": - "integrity" "sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg==" - "resolved" "https://registry.npmjs.org/ci-info/-/ci-info-3.3.2.tgz" - "version" "3.3.2" - -"cjs-module-lexer@^1.0.0": - "integrity" "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==" - "resolved" "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz" - "version" "1.2.3" - -"class-transformer@*", "class-transformer@^0.2.0 || ^0.3.0 || ^0.4.0 || ^0.5.0", "class-transformer@0.4.0": - "integrity" "sha512-ETWD/H2TbWbKEi7m9N4Km5+cw1hNcqJSxlSYhsLsNjQzWWiZIYA1zafxpK9PwVfaZ6AqR5rrjPVUBGESm5tQUA==" - "resolved" "https://registry.npmjs.org/class-transformer/-/class-transformer-0.4.0.tgz" - "version" "0.4.0" - -"class-validator@*", "class-validator@^0.11.1 || ^0.12.0 || ^0.13.0", "class-validator@^0.13.1": - "integrity" "sha512-yBUcQy07FPlGzUjoLuUfIOXzgynnQPPruyK1Ge2B74k9ROwnle1E+NxLWnUv5OLU8hA/qL5leAE9XnXq3byaBw==" - "resolved" "https://registry.npmjs.org/class-validator/-/class-validator-0.13.2.tgz" - "version" "0.13.2" - dependencies: - "libphonenumber-js" "^1.9.43" - "validator" "^13.7.0" - -"classnames@^2.2.6", "classnames@^2.3.1": - "integrity" "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==" - "resolved" "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz" - "version" "2.3.1" - -"clean-css@^5.2.2": - "integrity" "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==" - "resolved" "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz" - "version" "5.3.2" - dependencies: - "source-map" "~0.6.0" - -"clean-stack@^2.0.0": - "integrity" "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" - "resolved" "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz" - "version" "2.2.0" - -"cli-boxes@^2.2.1": - "integrity" "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==" - "resolved" "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz" - "version" "2.2.1" - -"cli-cursor@^3.1.0": - "integrity" "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==" - "resolved" "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "restore-cursor" "^3.1.0" - -"cli-highlight@^2.1.11": - "integrity" "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==" - "resolved" "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.11.tgz" - "version" "2.1.11" - dependencies: - "chalk" "^4.0.0" - "highlight.js" "^10.7.1" - "mz" "^2.4.0" - "parse5" "^5.1.1" - "parse5-htmlparser2-tree-adapter" "^6.0.0" - "yargs" "^16.0.0" - -"cli-spinners@^2.5.0": - "integrity" "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==" - "resolved" "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz" - "version" "2.7.0" - -"cli-table3@0.6.2": - "integrity" "sha512-QyavHCaIC80cMivimWu4aWHilIpiDpfm3hGmqAmXVL1UsnbLuBSMd21hTX6VY4ZSDSM73ESLeF8TOYId3rBTbw==" - "resolved" "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.2.tgz" - "version" "0.6.2" - dependencies: - "string-width" "^4.2.0" - optionalDependencies: - "@colors/colors" "1.5.0" - -"cli-truncate@^2.1.0", "cli-truncate@2.1.0": - "integrity" "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==" - "resolved" "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "slice-ansi" "^3.0.0" - "string-width" "^4.2.0" - -"cli-truncate@^3.1.0": - "integrity" "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==" - "resolved" "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "slice-ansi" "^5.0.0" - "string-width" "^5.0.0" - -"cli-width@^3.0.0": - "integrity" "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==" - "resolved" "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz" - "version" "3.0.0" - -"cliui@^5.0.0": - "integrity" "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==" - "resolved" "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "string-width" "^3.1.0" - "strip-ansi" "^5.2.0" - "wrap-ansi" "^5.1.0" - -"cliui@^7.0.2": - "integrity" "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==" - "resolved" "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" - "version" "7.0.4" - dependencies: - "string-width" "^4.2.0" - "strip-ansi" "^6.0.0" - "wrap-ansi" "^7.0.0" - -"clone-deep@^4.0.1": - "integrity" "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==" - "resolved" "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz" - "version" "4.0.1" - dependencies: - "is-plain-object" "^2.0.4" - "kind-of" "^6.0.2" - "shallow-clone" "^3.0.0" - -"clone-response@^1.0.2": - "integrity" "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==" - "resolved" "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz" - "version" "1.0.3" - dependencies: - "mimic-response" "^1.0.0" - -"clone@^1.0.2": - "integrity" "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==" - "resolved" "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz" - "version" "1.0.4" - -"clone@^2.1.1": - "integrity" "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==" - "resolved" "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz" - "version" "2.1.2" - -"cmd-shim@^4.1.0": - "integrity" "sha512-lb9L7EM4I/ZRVuljLPEtUJOP+xiQVknZ4ZMpMgEp4JzNldPb27HU03hi6K1/6CoIuit/Zm/LQXySErFeXxDprw==" - "resolved" "https://registry.npmjs.org/cmd-shim/-/cmd-shim-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "mkdirp-infer-owner" "^2.0.0" - -"co@^4.6.0": - "integrity" "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==" - "resolved" "https://registry.npmjs.org/co/-/co-4.6.0.tgz" - "version" "4.6.0" - -"coa@^2.0.2": - "integrity" "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==" - "resolved" "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "@types/q" "^1.5.1" - "chalk" "^2.4.1" - "q" "^1.1.2" - -"code-point-at@^1.0.0": - "integrity" "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==" - "resolved" "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz" - "version" "1.1.0" - -"codemirror@^6.0.0": - "integrity" "sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==" - "resolved" "https://registry.npmjs.org/codemirror/-/codemirror-6.0.1.tgz" - "version" "6.0.1" - dependencies: - "@codemirror/autocomplete" "^6.0.0" - "@codemirror/commands" "^6.0.0" - "@codemirror/language" "^6.0.0" - "@codemirror/lint" "^6.0.0" - "@codemirror/search" "^6.0.0" - "@codemirror/state" "^6.0.0" - "@codemirror/view" "^6.0.0" - -"collect-v8-coverage@^1.0.0": - "integrity" "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==" - "resolved" "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz" - "version" "1.0.2" - -"color-convert@^1.9.0": - "integrity" "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==" - "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" - "version" "1.9.3" - dependencies: - "color-name" "1.1.3" - -"color-convert@^2.0.1": - "integrity" "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==" - "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "color-name" "~1.1.4" - -"color-name@~1.1.4": - "integrity" "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" - "version" "1.1.4" - -"color-name@1.1.3": - "integrity" "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" - "version" "1.1.3" - -"color-support@^1.1.2", "color-support@^1.1.3": - "integrity" "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" - "resolved" "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz" - "version" "1.1.3" - -"colord@^2.9.1": - "integrity" "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==" - "resolved" "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz" - "version" "2.9.3" - -"colorette@^1.4.0": - "integrity" "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==" - "resolved" "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz" - "version" "1.4.0" - -"colorette@^2.0.10", "colorette@^2.0.16", "colorette@^2.0.17": - "integrity" "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==" - "resolved" "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz" - "version" "2.0.19" - -"colors@1.0.3": - "integrity" "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==" - "resolved" "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz" - "version" "1.0.3" - -"columnify@^1.5.4": - "integrity" "sha512-rFl+iXVT1nhLQPfGDw+3WcS8rmm7XsLKUmhsGE3ihzzpIikeGrTaZPIRKYWeLsLBypsHzjXIvYEltVUZS84XxQ==" - "resolved" "https://registry.npmjs.org/columnify/-/columnify-1.5.4.tgz" - "version" "1.5.4" - dependencies: - "strip-ansi" "^3.0.0" - "wcwidth" "^1.0.0" - -"combined-stream@^1.0.6", "combined-stream@^1.0.8", "combined-stream@~1.0.6": - "integrity" "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==" - "resolved" "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" - "version" "1.0.8" - dependencies: - "delayed-stream" "~1.0.0" - -"command-exists@^1.2.9": - "integrity" "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==" - "resolved" "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz" - "version" "1.2.9" - -"commander@^2.20.0": - "integrity" "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - "resolved" "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" - "version" "2.20.3" - -"commander@^4.0.0": - "integrity" "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==" - "resolved" "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz" - "version" "4.1.1" - -"commander@^5.0.0": - "integrity" "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==" - "resolved" "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz" - "version" "5.1.0" - -"commander@^7.0.0": - "integrity" "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" - "resolved" "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" - "version" "7.2.0" - -"commander@^7.2.0": - "integrity" "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" - "resolved" "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" - "version" "7.2.0" - -"commander@^8.2.0": - "integrity" "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==" - "resolved" "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz" - "version" "8.3.0" - -"commander@^8.3.0": - "integrity" "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==" - "resolved" "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz" - "version" "8.3.0" - -"commander@^9.3.0": - "integrity" "sha512-sRPT+umqkz90UA8M1yqYfnHlZA7fF6nSphDtxeywPZ49ysjxDQybzk13CL+mXekDRG92skbcqCLVovuCusNmFw==" - "resolved" "https://registry.npmjs.org/commander/-/commander-9.4.0.tgz" - "version" "9.4.0" - -"commander@2.9.0": - "integrity" "sha512-bmkUukX8wAOjHdN26xj5c4ctEV22TQ7dQYhSmuckKhToXrkUn0iIaolHdIxYYqD55nhpSPA9zPQ1yP57GdXP2A==" - "resolved" "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz" - "version" "2.9.0" - dependencies: - "graceful-readlink" ">= 1.0.0" - -"commander@4.1.1": - "integrity" "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==" - "resolved" "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz" - "version" "4.1.1" - -"comment-parser@1.3.1": - "integrity" "sha512-B52sN2VNghyq5ofvUsqZjmk6YkihBX5vMSChmSK9v4ShjKf3Vk5Xcmgpw4o+iIgtrnM/u5FiMpz9VKb8lpBveA==" - "resolved" "https://registry.npmjs.org/comment-parser/-/comment-parser-1.3.1.tgz" - "version" "1.3.1" - -"common-path-prefix@^3.0.0": - "integrity" "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==" - "resolved" "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz" - "version" "3.0.0" - -"common-tags@^1.8.0": - "integrity" "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==" - "resolved" "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz" - "version" "1.8.2" - -"commondir@^1.0.1": - "integrity" "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" - "resolved" "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz" - "version" "1.0.1" - -"compare-func@^2.0.0": - "integrity" "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==" - "resolved" "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "array-ify" "^1.0.0" - "dot-prop" "^5.1.0" - -"compare-version@^0.1.2": - "integrity" "sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==" - "resolved" "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz" - "version" "0.1.2" - -"component-emitter@^1.3.0": - "integrity" "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" - "resolved" "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz" - "version" "1.3.0" - -"compressible@~2.0.16": - "integrity" "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==" - "resolved" "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz" - "version" "2.0.18" - dependencies: - "mime-db" ">= 1.43.0 < 2" - -"compression@^1.7.4": - "integrity" "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==" - "resolved" "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz" - "version" "1.7.4" - 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" - -"concat-map@0.0.1": - "integrity" "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - "resolved" "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - "version" "0.0.1" - -"concat-stream@^1.5.2": - "integrity" "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==" - "resolved" "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz" - "version" "1.6.2" - dependencies: - "buffer-from" "^1.0.0" - "inherits" "^2.0.3" - "readable-stream" "^2.2.2" - "typedarray" "^0.0.6" - -"concat-stream@^2.0.0": - "integrity" "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==" - "resolved" "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "buffer-from" "^1.0.0" - "inherits" "^2.0.3" - "readable-stream" "^3.0.2" - "typedarray" "^0.0.6" - -"concurrently@^7.3.0": - "integrity" "sha512-IiDwm+8DOcFEInca494A8V402tNTQlJaYq78RF2rijOrKEk/AOHTxhN4U1cp7GYKYX5Q6Ymh1dLTBlzIMN0ikA==" - "resolved" "https://registry.npmjs.org/concurrently/-/concurrently-7.3.0.tgz" - "version" "7.3.0" - dependencies: - "chalk" "^4.1.0" - "date-fns" "^2.16.1" - "lodash" "^4.17.21" - "rxjs" "^7.0.0" - "shell-quote" "^1.7.3" - "spawn-command" "^0.0.2-1" - "supports-color" "^8.1.0" - "tree-kill" "^1.2.2" - "yargs" "^17.3.1" - -"config-chain@^1.1.11", "config-chain@^1.1.12": - "integrity" "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==" - "resolved" "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz" - "version" "1.1.13" - dependencies: - "ini" "^1.3.4" - "proto-list" "~1.2.1" - -"configstore@^5.0.1": - "integrity" "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==" - "resolved" "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz" - "version" "5.0.1" - dependencies: - "dot-prop" "^5.2.0" - "graceful-fs" "^4.1.2" - "make-dir" "^3.0.0" - "unique-string" "^2.0.0" - "write-file-atomic" "^3.0.0" - "xdg-basedir" "^4.0.0" - -"confusing-browser-globals@^1.0.11": - "integrity" "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==" - "resolved" "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz" - "version" "1.0.11" - -"connect-history-api-fallback@^2.0.0": - "integrity" "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==" - "resolved" "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz" - "version" "2.0.0" - -"consola@^2.15.0": - "integrity" "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==" - "resolved" "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz" - "version" "2.15.3" - -"console-control-strings@^1.0.0", "console-control-strings@^1.1.0", "console-control-strings@~1.1.0": - "integrity" "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" - "resolved" "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz" - "version" "1.1.0" - -"content-disposition@0.5.4": - "integrity" "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==" - "resolved" "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz" - "version" "0.5.4" - dependencies: - "safe-buffer" "5.2.1" - -"content-type@~1.0.4": - "integrity" "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" - "resolved" "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz" - "version" "1.0.4" - -"conventional-changelog-angular@^5.0.12": - "integrity" "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==" - "resolved" "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz" - "version" "5.0.13" - dependencies: - "compare-func" "^2.0.0" - "q" "^1.5.1" - -"conventional-changelog-core@^4.2.2": - "integrity" "sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg==" - "resolved" "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz" - "version" "4.2.4" - dependencies: - "add-stream" "^1.0.0" - "conventional-changelog-writer" "^5.0.0" - "conventional-commits-parser" "^3.2.0" - "dateformat" "^3.0.0" - "get-pkg-repo" "^4.0.0" - "git-raw-commits" "^2.0.8" - "git-remote-origin-url" "^2.0.0" - "git-semver-tags" "^4.1.1" - "lodash" "^4.17.15" - "normalize-package-data" "^3.0.0" - "q" "^1.5.1" - "read-pkg" "^3.0.0" - "read-pkg-up" "^3.0.0" - "through2" "^4.0.0" - -"conventional-changelog-preset-loader@^2.3.4": - "integrity" "sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==" - "resolved" "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz" - "version" "2.3.4" - -"conventional-changelog-writer@^5.0.0": - "integrity" "sha512-HnDh9QHLNWfL6E1uHz6krZEQOgm8hN7z/m7tT16xwd802fwgMN0Wqd7AQYVkhpsjDUx/99oo+nGgvKF657XP5g==" - "resolved" "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "conventional-commits-filter" "^2.0.7" - "dateformat" "^3.0.0" - "handlebars" "^4.7.6" - "json-stringify-safe" "^5.0.1" - "lodash" "^4.17.15" - "meow" "^8.0.0" - "semver" "^6.0.0" - "split" "^1.0.0" - "through2" "^4.0.0" - -"conventional-commits-filter@^2.0.7": - "integrity" "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==" - "resolved" "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz" - "version" "2.0.7" - dependencies: - "lodash.ismatch" "^4.4.0" - "modify-values" "^1.0.0" - -"conventional-commits-parser@^3.2.0": - "integrity" "sha512-YyRDR7On9H07ICFpRm/igcdjIqebXbvf4Cff+Pf0BrBys1i1EOzx9iFXNlAbdrLAR8jf7bkUYkDAr8pEy0q4Pw==" - "resolved" "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.3.tgz" - "version" "3.2.3" - dependencies: - "is-text-path" "^1.0.1" - "JSONStream" "^1.0.4" - "lodash" "^4.17.15" - "meow" "^8.0.0" - "split2" "^3.0.0" - "through2" "^4.0.0" - -"conventional-recommended-bump@^6.1.0": - "integrity" "sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw==" - "resolved" "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz" - "version" "6.1.0" - dependencies: - "concat-stream" "^2.0.0" - "conventional-changelog-preset-loader" "^2.3.4" - "conventional-commits-filter" "^2.0.7" - "conventional-commits-parser" "^3.2.0" - "git-raw-commits" "^2.0.8" - "git-semver-tags" "^4.1.1" - "meow" "^8.0.0" - "q" "^1.5.1" - -"convert-source-map@^1.4.0", "convert-source-map@^1.6.0", "convert-source-map@^1.7.0": - "integrity" "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==" - "resolved" "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz" - "version" "1.8.0" - dependencies: - "safe-buffer" "~5.1.1" - -"cookie-signature@1.0.6": - "integrity" "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" - "resolved" "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" - "version" "1.0.6" - -"cookie@^0.4.1": - "integrity" "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==" - "resolved" "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz" - "version" "0.4.2" - -"cookie@0.5.0": - "integrity" "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" - "resolved" "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz" - "version" "0.5.0" - -"cookiejar@^2.1.3": - "integrity" "sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ==" - "resolved" "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.3.tgz" - "version" "2.1.3" - -"copy-to-clipboard@^3.3.1": - "integrity" "sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw==" - "resolved" "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz" - "version" "3.3.1" - dependencies: - "toggle-selection" "^1.0.6" - -"core-js-compat@^3.21.0", "core-js-compat@^3.22.1": - "integrity" "sha512-XhdNAGeRnTpp8xbD+sR/HFDK9CbeeeqXT6TuofXh3urqEevzkWmLRgrVoykodsw8okqo2pu1BOmuCKrHx63zdw==" - "resolved" "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.24.1.tgz" - "version" "3.24.1" - dependencies: - "browserslist" "^4.21.3" - "semver" "7.0.0" - -"core-js-pure@^3.20.2", "core-js-pure@^3.23.3": - "integrity" "sha512-r1nJk41QLLPyozHUUPmILCEMtMw24NG4oWK6RbsDdjzQgg9ZvrUsPBj1MnG0wXXp1DCDU6j+wUvEmBSrtRbLXg==" - "resolved" "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.24.1.tgz" - "version" "3.24.1" - -"core-js@^3.19.2": - "integrity" "sha512-lqufgNn9NLnESg5mQeYsxQP5w7wrViSj0jr/kv6ECQiByzQkrn1MKvV0L3acttpDqfQrHLwr2KCMgX5b8X+lyQ==" - "resolved" "https://registry.npmjs.org/core-js/-/core-js-3.32.1.tgz" - "version" "3.32.1" - -"core-util-is@~1.0.0", "core-util-is@1.0.2": - "integrity" "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" - "resolved" "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - "version" "1.0.2" - -"cors@2.8.5": - "integrity" "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==" - "resolved" "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz" - "version" "2.8.5" - dependencies: - "object-assign" "^4" - "vary" "^1" - -"cosmiconfig@^6.0.0": - "integrity" "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==" - "resolved" "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "@types/parse-json" "^4.0.0" - "import-fresh" "^3.1.0" - "parse-json" "^5.0.0" - "path-type" "^4.0.0" - "yaml" "^1.7.2" - -"cosmiconfig@^7.0.0", "cosmiconfig@^7.0.1": - "integrity" "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==" - "resolved" "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz" - "version" "7.0.1" - 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" - -"crc@^3.8.0": - "integrity" "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==" - "resolved" "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz" - "version" "3.8.0" - dependencies: - "buffer" "^5.1.0" - -"create-require@^1.1.0": - "integrity" "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" - "resolved" "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz" - "version" "1.1.1" - -"crelt@^1.0.5": - "integrity" "sha512-+BO9wPPi+DWTDcNYhr/W90myha8ptzftZT+LwcmUbbok0rcP/fequmFYCw8NMoH7pkAZQzU78b3kYrlua5a9eA==" - "resolved" "https://registry.npmjs.org/crelt/-/crelt-1.0.5.tgz" - "version" "1.0.5" - -"cron@2.0.0": - "integrity" "sha512-RPeRunBCFr/WEo7WLp8Jnm45F/ziGJiHVvVQEBSDTSGu6uHW49b2FOP2O14DcXlGJRLhwE7TIoDzHHK4KmlL6g==" - "resolved" "https://registry.npmjs.org/cron/-/cron-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "luxon" "^1.23.x" - -"cross-env@^7.0.3": - "integrity" "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==" - "resolved" "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz" - "version" "7.0.3" - dependencies: - "cross-spawn" "^7.0.1" - -"cross-fetch@^3.1.5", "cross-fetch@^3.1.6": - "integrity" "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==" - "resolved" "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz" - "version" "3.1.8" - dependencies: - "node-fetch" "^2.6.12" - -"cross-spawn@^4.0.0": - "integrity" "sha512-yAXz/pA1tD8Gtg2S98Ekf/sewp3Lcp3YoFKJ4Hkp5h5yLWnKVTDU0kwjKJ8NDCYcfTLfyGkzTikst+jWypT1iA==" - "resolved" "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz" - "version" "4.0.2" - dependencies: - "lru-cache" "^4.0.1" - "which" "^1.2.9" - -"cross-spawn@^7.0.0", "cross-spawn@^7.0.1", "cross-spawn@^7.0.2", "cross-spawn@^7.0.3": - "integrity" "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==" - "resolved" "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" - "version" "7.0.3" - dependencies: - "path-key" "^3.1.0" - "shebang-command" "^2.0.0" - "which" "^2.0.1" - -"crypto-random-string@^2.0.0": - "integrity" "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==" - "resolved" "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz" - "version" "2.0.0" - -"css-blank-pseudo@^3.0.3": - "integrity" "sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==" - "resolved" "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz" - "version" "3.0.3" - dependencies: - "postcss-selector-parser" "^6.0.9" - -"css-declaration-sorter@^6.3.1": - "integrity" "sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==" - "resolved" "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz" - "version" "6.4.1" - -"css-has-pseudo@^3.0.4": - "integrity" "sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==" - "resolved" "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz" - "version" "3.0.4" - dependencies: - "postcss-selector-parser" "^6.0.9" - -"css-loader@^6.5.1": - "integrity" "sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==" - "resolved" "https://registry.npmjs.org/css-loader/-/css-loader-6.8.1.tgz" - "version" "6.8.1" - dependencies: - "icss-utils" "^5.1.0" - "postcss" "^8.4.21" - "postcss-modules-extract-imports" "^3.0.0" - "postcss-modules-local-by-default" "^4.0.3" - "postcss-modules-scope" "^3.0.0" - "postcss-modules-values" "^4.0.0" - "postcss-value-parser" "^4.2.0" - "semver" "^7.3.8" - -"css-minimizer-webpack-plugin@^3.2.0": - "integrity" "sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==" - "resolved" "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz" - "version" "3.4.1" - dependencies: - "cssnano" "^5.0.6" - "jest-worker" "^27.0.2" - "postcss" "^8.3.5" - "schema-utils" "^4.0.0" - "serialize-javascript" "^6.0.0" - "source-map" "^0.6.1" - -"css-prefers-color-scheme@^6.0.3": - "integrity" "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==" - "resolved" "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz" - "version" "6.0.3" - -"css-select-base-adapter@^0.1.1": - "integrity" "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==" - "resolved" "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz" - "version" "0.1.1" - -"css-select@^2.0.0": - "integrity" "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==" - "resolved" "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "boolbase" "^1.0.0" - "css-what" "^3.2.1" - "domutils" "^1.7.0" - "nth-check" "^1.0.2" - -"css-select@^4.1.3": - "integrity" "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==" - "resolved" "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz" - "version" "4.3.0" - dependencies: - "boolbase" "^1.0.0" - "css-what" "^6.0.1" - "domhandler" "^4.3.1" - "domutils" "^2.8.0" - "nth-check" "^2.0.1" - -"css-tree@^1.1.2", "css-tree@^1.1.3": - "integrity" "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==" - "resolved" "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz" - "version" "1.1.3" - dependencies: - "mdn-data" "2.0.14" - "source-map" "^0.6.1" - -"css-tree@1.0.0-alpha.37": - "integrity" "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==" - "resolved" "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz" - "version" "1.0.0-alpha.37" - dependencies: - "mdn-data" "2.0.4" - "source-map" "^0.6.1" - -"css-what@^3.2.1": - "integrity" "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==" - "resolved" "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz" - "version" "3.4.2" - -"css-what@^6.0.1": - "integrity" "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==" - "resolved" "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz" - "version" "6.1.0" - -"css.escape@^1.5.1": - "integrity" "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==" - "resolved" "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz" - "version" "1.5.1" - -"css@^3.0.0": - "integrity" "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==" - "resolved" "https://registry.npmjs.org/css/-/css-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "inherits" "^2.0.4" - "source-map" "^0.6.1" - "source-map-resolve" "^0.6.0" - -"cssdb@^7.1.0": - "integrity" "sha512-pQPYP7/kch4QlkTcLuUNiNL2v/E+O+VIdotT+ug62/+2B2/jkzs5fMM6RHCzGCZ9C82pODEMSIzRRUzJOrl78g==" - "resolved" "https://registry.npmjs.org/cssdb/-/cssdb-7.7.2.tgz" - "version" "7.7.2" - -"cssesc@^3.0.0": - "integrity" "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" - "resolved" "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz" - "version" "3.0.0" - -"cssnano-preset-default@^5.2.14": - "integrity" "sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==" - "resolved" "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz" - "version" "5.2.14" - dependencies: - "css-declaration-sorter" "^6.3.1" - "cssnano-utils" "^3.1.0" - "postcss-calc" "^8.2.3" - "postcss-colormin" "^5.3.1" - "postcss-convert-values" "^5.1.3" - "postcss-discard-comments" "^5.1.2" - "postcss-discard-duplicates" "^5.1.0" - "postcss-discard-empty" "^5.1.1" - "postcss-discard-overridden" "^5.1.0" - "postcss-merge-longhand" "^5.1.7" - "postcss-merge-rules" "^5.1.4" - "postcss-minify-font-values" "^5.1.0" - "postcss-minify-gradients" "^5.1.1" - "postcss-minify-params" "^5.1.4" - "postcss-minify-selectors" "^5.2.1" - "postcss-normalize-charset" "^5.1.0" - "postcss-normalize-display-values" "^5.1.0" - "postcss-normalize-positions" "^5.1.1" - "postcss-normalize-repeat-style" "^5.1.1" - "postcss-normalize-string" "^5.1.0" - "postcss-normalize-timing-functions" "^5.1.0" - "postcss-normalize-unicode" "^5.1.1" - "postcss-normalize-url" "^5.1.0" - "postcss-normalize-whitespace" "^5.1.1" - "postcss-ordered-values" "^5.1.3" - "postcss-reduce-initial" "^5.1.2" - "postcss-reduce-transforms" "^5.1.0" - "postcss-svgo" "^5.1.0" - "postcss-unique-selectors" "^5.1.1" - -"cssnano-utils@^3.1.0": - "integrity" "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==" - "resolved" "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz" - "version" "3.1.0" - -"cssnano@^5.0.11", "cssnano@^5.0.6": - "integrity" "sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==" - "resolved" "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz" - "version" "5.1.15" - dependencies: - "cssnano-preset-default" "^5.2.14" - "lilconfig" "^2.0.3" - "yaml" "^1.10.2" - -"csso@^4.0.2", "csso@^4.2.0": - "integrity" "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==" - "resolved" "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz" - "version" "4.2.0" - dependencies: - "css-tree" "^1.1.2" - -"cssom@^0.4.4": - "integrity" "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==" - "resolved" "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz" - "version" "0.4.4" - -"cssom@~0.3.6": - "integrity" "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" - "resolved" "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz" - "version" "0.3.8" - -"cssstyle@^2.3.0": - "integrity" "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==" - "resolved" "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz" - "version" "2.3.0" - dependencies: - "cssom" "~0.3.6" - -"csstype@^3.0.10", "csstype@^3.0.2": - "integrity" "sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==" - "resolved" "https://registry.npmjs.org/csstype/-/csstype-3.1.0.tgz" - "version" "3.1.0" - -"damerau-levenshtein@^1.0.8": - "integrity" "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==" - "resolved" "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz" - "version" "1.0.8" - -"dargs@^7.0.0": - "integrity" "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==" - "resolved" "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz" - "version" "7.0.0" - -"dashdash@^1.12.0": - "integrity" "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==" - "resolved" "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz" - "version" "1.14.1" - dependencies: - "assert-plus" "^1.0.0" - -"data-urls@^2.0.0": - "integrity" "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==" - "resolved" "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "abab" "^2.0.3" - "whatwg-mimetype" "^2.3.0" - "whatwg-url" "^8.0.0" - -"dataloader@^1.4.0": - "integrity" "sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==" - "resolved" "https://registry.npmjs.org/dataloader/-/dataloader-1.4.0.tgz" - "version" "1.4.0" - -"date-fns@^2.16.1": - "integrity" "sha512-0VNbwmWJDS/G3ySwFSJA3ayhbURMTJLtwM2DTxf9CWondCnh6DTNlO9JgRSq6ibf4eD0lfMJNBxUdEAHHix+bA==" - "resolved" "https://registry.npmjs.org/date-fns/-/date-fns-2.29.2.tgz" - "version" "2.29.2" - -"date-fns@^2.28.0": - "integrity" "sha512-dlLD5rKaKxpFdnjrs+5azHDFOPEu4ANy/LTh04A1DTzMM7qoajmKCBc8pkKRFT41CNzw+4gQh79X5C+Jq27HAw==" - "resolved" "https://registry.npmjs.org/date-fns/-/date-fns-2.29.1.tgz" - "version" "2.29.1" - -"dateformat@^3.0.0": - "integrity" "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==" - "resolved" "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz" - "version" "3.0.3" - -"dateformat@^5.0.1": - "integrity" "sha512-Kvr6HmPXUMerlLcLF+Pwq3K7apHpYmGDVqrxcDasBg86UcKeTSNWbEzU8bwdXnxnR44FtMhJAxI4Bov6Y/KUfA==" - "resolved" "https://registry.npmjs.org/dateformat/-/dateformat-5.0.3.tgz" - "version" "5.0.3" - -"debug@^2.6.0": - "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" - "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - "version" "2.6.9" - dependencies: - "ms" "2.0.0" - -"debug@^2.6.8": - "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" - "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - "version" "2.6.9" - dependencies: - "ms" "2.0.0" - -"debug@^3.2.7": - "integrity" "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==" - "resolved" "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" - "version" "3.2.7" - dependencies: - "ms" "^2.1.1" - -"debug@^4.0.1", "debug@^4.1.0", "debug@^4.1.1", "debug@^4.3.1", "debug@^4.3.2", "debug@^4.3.3", "debug@^4.3.4", "debug@4": - "integrity" "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==" - "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" - "version" "4.3.4" - dependencies: - "ms" "2.1.2" - -"debug@2.6.9": - "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" - "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - "version" "2.6.9" - dependencies: - "ms" "2.0.0" - -"debuglog@^1.0.1": - "integrity" "sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==" - "resolved" "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz" - "version" "1.0.1" - -"decamelize-keys@^1.1.0": - "integrity" "sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg==" - "resolved" "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz" - "version" "1.1.0" - dependencies: - "decamelize" "^1.1.0" - "map-obj" "^1.0.0" - -"decamelize@^1.1.0", "decamelize@^1.2.0": - "integrity" "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==" - "resolved" "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" - "version" "1.2.0" - -"decimal.js@^10.2.1": - "integrity" "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" - "resolved" "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz" - "version" "10.4.3" - -"decode-uri-component@^0.2.0": - "integrity" "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==" - "resolved" "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz" - "version" "0.2.0" - -"decompress-response@^3.3.0": - "integrity" "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==" - "resolved" "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz" - "version" "3.3.0" - dependencies: - "mimic-response" "^1.0.0" - -"dedent@^0.7.0": - "integrity" "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==" - "resolved" "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz" - "version" "0.7.0" - -"deep-extend@^0.6.0": - "integrity" "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" - "resolved" "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz" - "version" "0.6.0" - -"deep-is@^0.1.3": - "integrity" "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" - "resolved" "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" - "version" "0.1.4" - -"deepmerge@^2.1.1": - "integrity" "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==" - "resolved" "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz" - "version" "2.2.1" - -"deepmerge@^4.2.2", "deepmerge@4.2.2": - "integrity" "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" - "resolved" "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz" - "version" "4.2.2" - -"default-gateway@^6.0.3": - "integrity" "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==" - "resolved" "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz" - "version" "6.0.3" - dependencies: - "execa" "^5.0.0" - -"default-shell@^1.0.0": - "integrity" "sha512-/Os8tTMPSriNHCsVj3VLjMZblIl1sIg8EXz3qg7C5K+y9calfTA/qzlfPvCQ+LEgLWmtZ9wCnzE1w+S6TPPFyQ==" - "resolved" "https://registry.npmjs.org/default-shell/-/default-shell-1.0.1.tgz" - "version" "1.0.1" - -"defaults@^1.0.3": - "integrity" "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==" - "resolved" "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz" - "version" "1.0.3" - dependencies: - "clone" "^1.0.2" - -"defer-to-connect@^1.0.1": - "integrity" "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" - "resolved" "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz" - "version" "1.1.3" - -"define-lazy-prop@^2.0.0": - "integrity" "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==" - "resolved" "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz" - "version" "2.0.0" - -"define-properties@^1.1.3", "define-properties@^1.1.4", "define-properties@^1.2.0": - "integrity" "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==" - "resolved" "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz" - "version" "1.2.0" - dependencies: - "has-property-descriptors" "^1.0.0" - "object-keys" "^1.1.1" - -"delayed-stream@~1.0.0": - "integrity" "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" - "resolved" "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" - "version" "1.0.0" - -"delegates@^1.0.0": - "integrity" "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" - "resolved" "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz" - "version" "1.0.0" - -"denque@^2.0.1": - "integrity" "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==" - "resolved" "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz" - "version" "2.1.0" - -"depd@^1.1.2": - "integrity" "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==" - "resolved" "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" - "version" "1.1.2" - -"depd@~1.1.2": - "integrity" "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==" - "resolved" "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" - "version" "1.1.2" - -"depd@2.0.0": - "integrity" "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" - "resolved" "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" - "version" "2.0.0" - -"deprecation@^2.0.0", "deprecation@^2.3.1": - "integrity" "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==" - "resolved" "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz" - "version" "2.3.1" - -"dequal@^2.0.3": - "integrity" "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==" - "resolved" "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz" - "version" "2.0.3" - -"destroy@1.2.0": - "integrity" "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" - "resolved" "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" - "version" "1.2.0" - -"detect-indent@^5.0.0": - "integrity" "sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g==" - "resolved" "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz" - "version" "5.0.0" - -"detect-indent@^6.0.0": - "integrity" "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==" - "resolved" "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz" - "version" "6.1.0" - -"detect-libc@^1.0.3": - "integrity" "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==" - "resolved" "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz" - "version" "1.0.3" - -"detect-libc@^2.0.0": - "integrity" "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==" - "resolved" "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz" - "version" "2.0.1" - -"detect-newline@^3.0.0": - "integrity" "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==" - "resolved" "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz" - "version" "3.1.0" - -"detect-node@^2.0.4", "detect-node@^2.1.0": - "integrity" "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" - "resolved" "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz" - "version" "2.1.0" - -"detect-port-alt@^1.1.6": - "integrity" "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==" - "resolved" "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz" - "version" "1.1.6" - dependencies: - "address" "^1.0.1" - "debug" "^2.6.0" - -"dezalgo@^1.0.0", "dezalgo@1.0.3": - "integrity" "sha512-K7i4zNfT2kgQz3GylDw40ot9GAE47sFZ9EXHFSPP6zONLgH6kWXE0KWJchkbQJLBkRazq4APwZ4OwiFFlT95OQ==" - "resolved" "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz" - "version" "1.0.3" - dependencies: - "asap" "^2.0.0" - "wrappy" "1" - -"didyoumean@^1.2.2": - "integrity" "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" - "resolved" "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz" - "version" "1.2.2" - -"diff-sequences@^26.6.2": - "integrity" "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==" - "resolved" "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz" - "version" "26.6.2" - -"diff-sequences@^27.5.1": - "integrity" "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==" - "resolved" "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz" - "version" "27.5.1" - -"diff-sequences@^28.1.1": - "integrity" "sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==" - "resolved" "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz" - "version" "28.1.1" - -"diff@^4.0.1": - "integrity" "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" - "resolved" "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" - "version" "4.0.2" - -"dir-compare@^2.4.0": - "integrity" "sha512-l9hmu8x/rjVC9Z2zmGzkhOEowZvW7pmYws5CWHutg8u1JgvsKWMx7Q/UODeu4djLZ4FgW5besw5yvMQnBHzuCA==" - "resolved" "https://registry.npmjs.org/dir-compare/-/dir-compare-2.4.0.tgz" - "version" "2.4.0" - dependencies: - "buffer-equal" "1.0.0" - "colors" "1.0.3" - "commander" "2.9.0" - "minimatch" "3.0.4" - -"dir-glob@^3.0.1": - "integrity" "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==" - "resolved" "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "path-type" "^4.0.0" - -"dlv@^1.1.3": - "integrity" "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" - "resolved" "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz" - "version" "1.1.3" - -"dmg-builder@23.3.3": - "integrity" "sha512-ECwAjt+ZWyOvddrkDx1xRD6IVUCZb5SV6vSMHZd+Va3G2sUXHrnglR1cGDKRF4oYRQm8SYVrpLZKbi8npyDcAQ==" - "resolved" "https://registry.npmjs.org/dmg-builder/-/dmg-builder-23.3.3.tgz" - "version" "23.3.3" - dependencies: - "app-builder-lib" "23.3.3" - "builder-util" "23.3.3" - "builder-util-runtime" "9.0.3" - "fs-extra" "^10.0.0" - "iconv-lite" "^0.6.2" - "js-yaml" "^4.1.0" - optionalDependencies: - "dmg-license" "^1.0.11" - -"dmg-license@^1.0.11": - "integrity" "sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q==" - "resolved" "https://registry.npmjs.org/dmg-license/-/dmg-license-1.0.11.tgz" - "version" "1.0.11" - dependencies: - "@types/plist" "^3.0.1" - "@types/verror" "^1.10.3" - "ajv" "^6.10.0" - "crc" "^3.8.0" - "iconv-corefoundation" "^1.1.7" - "plist" "^3.0.4" - "smart-buffer" "^4.0.2" - "verror" "^1.10.0" - -"dns-equal@^1.0.0": - "integrity" "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==" - "resolved" "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz" - "version" "1.0.0" - -"dns-packet@^5.2.2": - "integrity" "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==" - "resolved" "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz" - "version" "5.6.1" - dependencies: - "@leichtgewicht/ip-codec" "^2.0.1" - -"doctrine@^2.1.0": - "integrity" "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==" - "resolved" "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "esutils" "^2.0.2" - -"doctrine@^3.0.0": - "integrity" "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==" - "resolved" "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "esutils" "^2.0.2" - -"dom-accessibility-api@^0.5.6": - "integrity" "sha512-NMt+m9zFMPZe0JcY9gN224Qvk6qLIdqex29clBvc/y75ZBX9YA9wNK3frsYvu2DI1xcCIwxwnX+TlsJ2DSOADg==" - "resolved" "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.14.tgz" - "version" "0.5.14" - -"dom-converter@^0.2.0": - "integrity" "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==" - "resolved" "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz" - "version" "0.2.0" - dependencies: - "utila" "~0.4" - -"dom-serializer@^1.0.1": - "integrity" "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==" - "resolved" "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz" - "version" "1.4.1" - dependencies: - "domelementtype" "^2.0.1" - "domhandler" "^4.2.0" - "entities" "^2.0.0" - -"dom-serializer@0": - "integrity" "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==" - "resolved" "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz" - "version" "0.2.2" - dependencies: - "domelementtype" "^2.0.1" - "entities" "^2.0.0" - -"domelementtype@^2.0.1", "domelementtype@^2.2.0": - "integrity" "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" - "resolved" "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz" - "version" "2.3.0" - -"domelementtype@1": - "integrity" "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" - "resolved" "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz" - "version" "1.3.1" - -"domexception@^2.0.1": - "integrity" "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==" - "resolved" "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "webidl-conversions" "^5.0.0" - -"domhandler@^4.0.0", "domhandler@^4.2.0", "domhandler@^4.2.2", "domhandler@^4.3.1": - "integrity" "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==" - "resolved" "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz" - "version" "4.3.1" - dependencies: - "domelementtype" "^2.2.0" - -"domutils@^1.7.0": - "integrity" "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==" - "resolved" "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz" - "version" "1.7.0" - dependencies: - "dom-serializer" "0" - "domelementtype" "1" - -"domutils@^2.5.2", "domutils@^2.8.0": - "integrity" "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==" - "resolved" "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz" - "version" "2.8.0" - dependencies: - "dom-serializer" "^1.0.1" - "domelementtype" "^2.2.0" - "domhandler" "^4.2.0" - -"dot-case@^3.0.4": - "integrity" "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==" - "resolved" "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz" - "version" "3.0.4" - dependencies: - "no-case" "^3.0.4" - "tslib" "^2.0.3" - -"dot-prop@^5.1.0", "dot-prop@^5.2.0": - "integrity" "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==" - "resolved" "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz" - "version" "5.3.0" - dependencies: - "is-obj" "^2.0.0" - -"dot-prop@^6.0.1": - "integrity" "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==" - "resolved" "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz" - "version" "6.0.1" - dependencies: - "is-obj" "^2.0.0" - -"dotenv-expand@^5.1.0": - "integrity" "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==" - "resolved" "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz" - "version" "5.1.0" - -"dotenv-expand@8.0.3": - "integrity" "sha512-SErOMvge0ZUyWd5B0NXMQlDkN+8r+HhVUsxgOO7IoPDOdDRD2JjExpN6y3KnFR66jsJMwSn1pqIivhU5rcJiNg==" - "resolved" "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-8.0.3.tgz" - "version" "8.0.3" - -"dotenv@^10.0.0": - "integrity" "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==" - "resolved" "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz" - "version" "10.0.0" - -"dotenv@^16.0.0", "dotenv@16.0.1": - "integrity" "sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ==" - "resolved" "https://registry.npmjs.org/dotenv/-/dotenv-16.0.1.tgz" - "version" "16.0.1" - -"dotenv@^7.0.0": - "integrity" "sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g==" - "resolved" "https://registry.npmjs.org/dotenv/-/dotenv-7.0.0.tgz" - "version" "7.0.0" - -"dotenv@^9.0.2": - "integrity" "sha512-I9OvvrHp4pIARv4+x9iuewrWycX6CcZtoAu1XrzPxc5UygMJXJZYmBsynku8IkrJwgypE5DGNjDPmPRhDCptUg==" - "resolved" "https://registry.npmjs.org/dotenv/-/dotenv-9.0.2.tgz" - "version" "9.0.2" - -"duplexer@^0.1.1", "duplexer@^0.1.2": - "integrity" "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" - "resolved" "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz" - "version" "0.1.2" - -"duplexer3@^0.1.4": - "integrity" "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==" - "resolved" "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz" - "version" "0.1.5" - -"eastasianwidth@^0.2.0": - "integrity" "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" - "resolved" "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" - "version" "0.2.0" - -"ecc-jsbn@~0.1.1": - "integrity" "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==" - "resolved" "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz" - "version" "0.1.2" - dependencies: - "jsbn" "~0.1.0" - "safer-buffer" "^2.1.0" - -"ee-first@1.1.1": - "integrity" "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - "resolved" "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" - "version" "1.1.1" - -"ejs@^3.1.6", "ejs@^3.1.7": - "integrity" "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==" - "resolved" "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz" - "version" "3.1.8" - dependencies: - "jake" "^10.8.5" - -"electron-builder@^23.3.3": - "integrity" "sha512-mFYYdhoFPKevP6y5uaaF3dusmB2OtQ/HnwwpyOePeU7QDS0SEIAUokQsHUanAiJAZcBqtY7iyLBgX18QybdFFw==" - "resolved" "https://registry.npmjs.org/electron-builder/-/electron-builder-23.3.3.tgz" - "version" "23.3.3" - dependencies: - "@types/yargs" "^17.0.1" - "app-builder-lib" "23.3.3" - "builder-util" "23.3.3" - "builder-util-runtime" "9.0.3" - "chalk" "^4.1.1" - "dmg-builder" "23.3.3" - "fs-extra" "^10.0.0" - "is-ci" "^3.0.0" - "lazy-val" "^1.0.5" - "read-config-file" "6.2.0" - "update-notifier" "^5.1.0" - "yargs" "^17.0.1" - -"electron-is-dev@^2.0.0": - "integrity" "sha512-3X99K852Yoqu9AcW50qz3ibYBWY79/pBhlMCab8ToEWS48R0T9tyxRiQhwylE7zQdXrMnx2JKqUJyMPmt5FBqA==" - "resolved" "https://registry.npmjs.org/electron-is-dev/-/electron-is-dev-2.0.0.tgz" - "version" "2.0.0" - -"electron-log@^4.4.8": - "integrity" "sha512-QQ4GvrXO+HkgqqEOYbi+DHL7hj5JM+nHi/j+qrN9zeeXVKy8ZABgbu4CnG+BBqDZ2+tbeq9tUC4DZfIWFU5AZA==" - "resolved" "https://registry.npmjs.org/electron-log/-/electron-log-4.4.8.tgz" - "version" "4.4.8" - -"electron-osx-sign@^0.6.0": - "integrity" "sha512-+hiIEb2Xxk6eDKJ2FFlpofCnemCbjbT5jz+BKGpVBrRNT3kWTGs4DfNX6IzGwgi33hUcXF+kFs9JW+r6Wc1LRg==" - "resolved" "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.6.0.tgz" - "version" "0.6.0" - dependencies: - "bluebird" "^3.5.0" - "compare-version" "^0.1.2" - "debug" "^2.6.8" - "isbinaryfile" "^3.0.2" - "minimist" "^1.2.0" - "plist" "^3.0.1" - -"electron-publish@23.3.3": - "integrity" "sha512-1dX17eE5xVXedTxjC+gjsP74oC0+sIHgqysp0ryTlF9+yfQUyXjBk6kcK+zhtBA2SsHMSglDtM+JPxDD/WpPTQ==" - "resolved" "https://registry.npmjs.org/electron-publish/-/electron-publish-23.3.3.tgz" - "version" "23.3.3" - dependencies: - "@types/fs-extra" "^9.0.11" - "builder-util" "23.3.3" - "builder-util-runtime" "9.0.3" - "chalk" "^4.1.1" - "fs-extra" "^10.0.0" - "lazy-val" "^1.0.5" - "mime" "^2.5.2" - -"electron-to-chromium@^1.4.477": - "integrity" "sha512-FFa8QKjQK/A5QuFr2167myhMesGrhlOBD+3cYNxO9/S4XzHEXesyTD/1/xF644gC8buFPz3ca6G1LOQD0tZrrg==" - "resolved" "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.508.tgz" - "version" "1.4.508" - -"electron-updater@^5.3.0": - "integrity" "sha512-iKEr7yQBcvnQUPnSDYGSWC9t0eF2YbZWeYYYZzYxdl+HiRejXFENjYMnYjoOm2zxyD6Cr2JTHZhp9pqxiXuCOw==" - "resolved" "https://registry.npmjs.org/electron-updater/-/electron-updater-5.3.0.tgz" - "version" "5.3.0" - dependencies: - "@types/semver" "^7.3.6" - "builder-util-runtime" "9.1.1" - "fs-extra" "^10.0.0" - "js-yaml" "^4.1.0" - "lazy-val" "^1.0.5" - "lodash.escaperegexp" "^4.1.2" - "lodash.isequal" "^4.5.0" - "semver" "^7.3.5" - "typed-emitter" "^2.1.0" - -"electron@20.1.0": - "integrity" "sha512-gzl6fdZe5g0qmzCC6Ejxa1Oa8eqUSxs4+QLtrM7SyEVp+mEPJAOoDe0xD8ayRQqeXTBxLK1LFrKtc4c98iufsg==" - "resolved" "https://registry.npmjs.org/electron/-/electron-20.1.0.tgz" - "version" "20.1.0" - dependencies: - "@electron/get" "^1.14.1" - "@types/node" "^16.11.26" - "extract-zip" "^2.0.1" - -"elliptic@^6.5.4": - "integrity" "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==" - "resolved" "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz" - "version" "6.5.4" - dependencies: - "bn.js" "^4.11.9" - "brorand" "^1.1.0" - "hash.js" "^1.0.0" - "hmac-drbg" "^1.0.1" - "inherits" "^2.0.4" - "minimalistic-assert" "^1.0.1" - "minimalistic-crypto-utils" "^1.0.1" - -"emittery@^0.10.2": - "integrity" "sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==" - "resolved" "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz" - "version" "0.10.2" - -"emittery@^0.8.1": - "integrity" "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==" - "resolved" "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz" - "version" "0.8.1" - -"emoji-regex@^7.0.1": - "integrity" "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz" - "version" "7.0.3" - -"emoji-regex@^8.0.0": - "integrity" "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" - "version" "8.0.0" - -"emoji-regex@^9.2.2": - "integrity" "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" - "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" - "version" "9.2.2" - -"emojis-list@^3.0.0": - "integrity" "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" - "resolved" "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz" - "version" "3.0.0" - -"encodeurl@^1.0.2", "encodeurl@~1.0.2": - "integrity" "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" - "resolved" "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" - "version" "1.0.2" - -"encoding@^0.1.0", "encoding@^0.1.12": - "integrity" "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==" - "resolved" "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz" - "version" "0.1.13" - dependencies: - "iconv-lite" "^0.6.2" - -"end-of-stream@^1.1.0": - "integrity" "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==" - "resolved" "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz" - "version" "1.4.4" - dependencies: - "once" "^1.4.0" - -"enhanced-resolve@^5.0.0", "enhanced-resolve@^5.15.0", "enhanced-resolve@^5.7.0", "enhanced-resolve@^5.9.3": - "integrity" "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==" - "resolved" "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz" - "version" "5.15.0" - dependencies: - "graceful-fs" "^4.2.4" - "tapable" "^2.2.0" - -"enquirer@^2.3.5", "enquirer@^2.3.6", "enquirer@>= 2.3.0 < 3": - "integrity" "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==" - "resolved" "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz" - "version" "2.3.6" - dependencies: - "ansi-colors" "^4.1.1" - -"entities@^2.0.0", "entities@^2.2.0": - "integrity" "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" - "resolved" "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz" - "version" "2.2.0" - -"entities@^3.0.1": - "integrity" "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==" - "resolved" "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz" - "version" "3.0.1" - -"env-paths@^2.2.0": - "integrity" "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==" - "resolved" "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz" - "version" "2.2.1" - -"envalid@^7.3.1": - "integrity" "sha512-KL1YRwn8WcoF/Ty7t+yLLtZol01xr9ZJMTjzoGRM8NaSU+nQQjSWOQKKJhJP2P57bpdakJ9jbxqQX4fGTOicZg==" - "resolved" "https://registry.npmjs.org/envalid/-/envalid-7.3.1.tgz" - "version" "7.3.1" - dependencies: - "tslib" "2.3.1" - -"envinfo@^7.7.4": - "integrity" "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==" - "resolved" "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz" - "version" "7.8.1" - -"err-code@^2.0.2": - "integrity" "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==" - "resolved" "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz" - "version" "2.0.3" - -"error-ex@^1.3.1": - "integrity" "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==" - "resolved" "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" - "version" "1.3.2" - dependencies: - "is-arrayish" "^0.2.1" - -"error-stack-parser@^2.0.6": - "integrity" "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==" - "resolved" "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz" - "version" "2.1.4" - dependencies: - "stackframe" "^1.3.4" - -"es-abstract@^1.17.2", "es-abstract@^1.19.0", "es-abstract@^1.19.1", "es-abstract@^1.19.2", "es-abstract@^1.19.5", "es-abstract@^1.20.1", "es-abstract@^1.20.4", "es-abstract@^1.22.1": - "integrity" "sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==" - "resolved" "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.1.tgz" - "version" "1.22.1" - dependencies: - "array-buffer-byte-length" "^1.0.0" - "arraybuffer.prototype.slice" "^1.0.1" - "available-typed-arrays" "^1.0.5" - "call-bind" "^1.0.2" - "es-set-tostringtag" "^2.0.1" - "es-to-primitive" "^1.2.1" - "function.prototype.name" "^1.1.5" - "get-intrinsic" "^1.2.1" - "get-symbol-description" "^1.0.0" - "globalthis" "^1.0.3" - "gopd" "^1.0.1" - "has" "^1.0.3" - "has-property-descriptors" "^1.0.0" - "has-proto" "^1.0.1" - "has-symbols" "^1.0.3" - "internal-slot" "^1.0.5" - "is-array-buffer" "^3.0.2" - "is-callable" "^1.2.7" - "is-negative-zero" "^2.0.2" - "is-regex" "^1.1.4" - "is-shared-array-buffer" "^1.0.2" - "is-string" "^1.0.7" - "is-typed-array" "^1.1.10" - "is-weakref" "^1.0.2" - "object-inspect" "^1.12.3" - "object-keys" "^1.1.1" - "object.assign" "^4.1.4" - "regexp.prototype.flags" "^1.5.0" - "safe-array-concat" "^1.0.0" - "safe-regex-test" "^1.0.0" - "string.prototype.trim" "^1.2.7" - "string.prototype.trimend" "^1.0.6" - "string.prototype.trimstart" "^1.0.6" - "typed-array-buffer" "^1.0.0" - "typed-array-byte-length" "^1.0.0" - "typed-array-byte-offset" "^1.0.0" - "typed-array-length" "^1.0.4" - "unbox-primitive" "^1.0.2" - "which-typed-array" "^1.1.10" - -"es-array-method-boxes-properly@^1.0.0": - "integrity" "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==" - "resolved" "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz" - "version" "1.0.0" - -"es-module-lexer@^0.9.0": - "integrity" "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" - "resolved" "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz" - "version" "0.9.3" - -"es-module-lexer@^1.2.1": - "integrity" "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==" - "resolved" "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz" - "version" "1.3.0" - -"es-set-tostringtag@^2.0.1": - "integrity" "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==" - "resolved" "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "get-intrinsic" "^1.1.3" - "has" "^1.0.3" - "has-tostringtag" "^1.0.0" - -"es-shim-unscopables@^1.0.0": - "integrity" "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==" - "resolved" "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "has" "^1.0.3" - -"es-to-primitive@^1.2.1": - "integrity" "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==" - "resolved" "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz" - "version" "1.2.1" - dependencies: - "is-callable" "^1.1.4" - "is-date-object" "^1.0.1" - "is-symbol" "^1.0.2" - -"es6-error@^4.1.1": - "integrity" "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==" - "resolved" "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz" - "version" "4.1.1" - -"escalade@^3.1.1": - "integrity" "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" - "resolved" "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" - "version" "3.1.1" - -"escape-goat@^2.0.0": - "integrity" "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==" - "resolved" "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz" - "version" "2.1.1" - -"escape-html@~1.0.3": - "integrity" "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - "resolved" "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" - "version" "1.0.3" - -"escape-string-regexp@^1.0.5": - "integrity" "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" - "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - "version" "1.0.5" - -"escape-string-regexp@^2.0.0": - "integrity" "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" - "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" - "version" "2.0.0" - -"escape-string-regexp@^4.0.0": - "integrity" "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" - "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" - "version" "4.0.0" - -"escodegen@^2.0.0": - "integrity" "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==" - "resolved" "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "esprima" "^4.0.1" - "estraverse" "^5.2.0" - "esutils" "^2.0.2" - optionalDependencies: - "source-map" "~0.6.1" - -"eslint-config-prettier@^8.3.0": - "integrity" "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==" - "resolved" "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz" - "version" "8.5.0" - -"eslint-config-react-app@^7.0.0": - "integrity" "sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==" - "resolved" "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-7.0.1.tgz" - "version" "7.0.1" - dependencies: - "@babel/core" "^7.16.0" - "@babel/eslint-parser" "^7.16.3" - "@rushstack/eslint-patch" "^1.1.0" - "@typescript-eslint/eslint-plugin" "^5.5.0" - "@typescript-eslint/parser" "^5.5.0" - "babel-preset-react-app" "^10.0.1" - "confusing-browser-globals" "^1.0.11" - "eslint-plugin-flowtype" "^8.0.3" - "eslint-plugin-import" "^2.25.3" - "eslint-plugin-jest" "^25.3.0" - "eslint-plugin-jsx-a11y" "^6.5.1" - "eslint-plugin-react" "^7.27.1" - "eslint-plugin-react-hooks" "^4.3.0" - "eslint-plugin-testing-library" "^5.0.1" - -"eslint-import-resolver-node@^0.3.7": - "integrity" "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==" - "resolved" "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz" - "version" "0.3.9" - dependencies: - "debug" "^3.2.7" - "is-core-module" "^2.13.0" - "resolve" "^1.22.4" - -"eslint-module-utils@^2.8.0": - "integrity" "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==" - "resolved" "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz" - "version" "2.8.0" - dependencies: - "debug" "^3.2.7" - -"eslint-plugin-flowtype@^8.0.3": - "integrity" "sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==" - "resolved" "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz" - "version" "8.0.3" - dependencies: - "lodash" "^4.17.21" - "string-natural-compare" "^3.0.1" - -"eslint-plugin-import@^2.25.3": - "integrity" "sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==" - "resolved" "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz" - "version" "2.28.1" - dependencies: - "array-includes" "^3.1.6" - "array.prototype.findlastindex" "^1.2.2" - "array.prototype.flat" "^1.3.1" - "array.prototype.flatmap" "^1.3.1" - "debug" "^3.2.7" - "doctrine" "^2.1.0" - "eslint-import-resolver-node" "^0.3.7" - "eslint-module-utils" "^2.8.0" - "has" "^1.0.3" - "is-core-module" "^2.13.0" - "is-glob" "^4.0.3" - "minimatch" "^3.1.2" - "object.fromentries" "^2.0.6" - "object.groupby" "^1.0.0" - "object.values" "^1.1.6" - "semver" "^6.3.1" - "tsconfig-paths" "^3.14.2" - -"eslint-plugin-jest@^25.3.0": - "integrity" "sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==" - "resolved" "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz" - "version" "25.7.0" - dependencies: - "@typescript-eslint/experimental-utils" "^5.0.0" - -"eslint-plugin-jsdoc@^40.0.0": - "integrity" "sha512-EhCqpzRkxoT2DUB4AnrU0ggBYvTh3bWrLZzQTupq6vSVE6XzNwJVKsOHa41GCoevnsWMBNmoDVjXWGqckjuG1g==" - "resolved" "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-40.3.0.tgz" - "version" "40.3.0" - dependencies: - "@es-joy/jsdoccomment" "~0.37.0" - "comment-parser" "1.3.1" - "debug" "^4.3.4" - "escape-string-regexp" "^4.0.0" - "esquery" "^1.5.0" - "semver" "^7.3.8" - "spdx-expression-parse" "^3.0.1" - -"eslint-plugin-jsx-a11y@^6.5.1": - "integrity" "sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==" - "resolved" "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz" - "version" "6.7.1" - dependencies: - "@babel/runtime" "^7.20.7" - "aria-query" "^5.1.3" - "array-includes" "^3.1.6" - "array.prototype.flatmap" "^1.3.1" - "ast-types-flow" "^0.0.7" - "axe-core" "^4.6.2" - "axobject-query" "^3.1.1" - "damerau-levenshtein" "^1.0.8" - "emoji-regex" "^9.2.2" - "has" "^1.0.3" - "jsx-ast-utils" "^3.3.3" - "language-tags" "=1.0.5" - "minimatch" "^3.1.2" - "object.entries" "^1.1.6" - "object.fromentries" "^2.0.6" - "semver" "^6.3.0" - -"eslint-plugin-prettier@^3.4.0": - "integrity" "sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==" - "resolved" "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz" - "version" "3.4.1" - dependencies: - "prettier-linter-helpers" "^1.0.0" - -"eslint-plugin-prettier@^4.0.0": - "integrity" "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==" - "resolved" "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz" - "version" "4.2.1" - dependencies: - "prettier-linter-helpers" "^1.0.0" - -"eslint-plugin-react-hooks@^4.3.0": - "integrity" "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==" - "resolved" "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz" - "version" "4.6.0" - -"eslint-plugin-react@^7.26.0", "eslint-plugin-react@^7.27.1": - "integrity" "sha512-NbEvI9jtqO46yJA3wcRF9Mo0lF9T/jhdHqhCHXiXtD+Zcb98812wvokjWpU7Q4QH5edo6dmqrukxVvWWXHlsUg==" - "resolved" "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.30.1.tgz" - "version" "7.30.1" - dependencies: - "array-includes" "^3.1.5" - "array.prototype.flatmap" "^1.3.0" - "doctrine" "^2.1.0" - "estraverse" "^5.3.0" - "jsx-ast-utils" "^2.4.1 || ^3.0.0" - "minimatch" "^3.1.2" - "object.entries" "^1.1.5" - "object.fromentries" "^2.0.5" - "object.hasown" "^1.1.1" - "object.values" "^1.1.5" - "prop-types" "^15.8.1" - "resolve" "^2.0.0-next.3" - "semver" "^6.3.0" - "string.prototype.matchall" "^4.0.7" - -"eslint-plugin-testing-library@^5.0.1": - "integrity" "sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw==" - "resolved" "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.11.1.tgz" - "version" "5.11.1" - dependencies: - "@typescript-eslint/utils" "^5.58.0" - -"eslint-scope@^5.1.1", "eslint-scope@5.1.1": - "integrity" "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==" - "resolved" "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" - "version" "5.1.1" - dependencies: - "esrecurse" "^4.3.0" - "estraverse" "^4.1.1" - -"eslint-scope@^7.2.2": - "integrity" "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==" - "resolved" "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz" - "version" "7.2.2" - dependencies: - "esrecurse" "^4.3.0" - "estraverse" "^5.2.0" - -"eslint-utils@^2.1.0": - "integrity" "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==" - "resolved" "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "eslint-visitor-keys" "^1.1.0" - -"eslint-utils@^3.0.0": - "integrity" "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==" - "resolved" "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "eslint-visitor-keys" "^2.0.0" - -"eslint-visitor-keys@^1.1.0", "eslint-visitor-keys@^1.3.0": - "integrity" "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==" - "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz" - "version" "1.3.0" - -"eslint-visitor-keys@^2.0.0": - "integrity" "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==" - "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz" - "version" "2.1.0" - -"eslint-visitor-keys@^2.1.0": - "integrity" "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==" - "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz" - "version" "2.1.0" - -"eslint-visitor-keys@^3.3.0", "eslint-visitor-keys@^3.4.1", "eslint-visitor-keys@^3.4.3": - "integrity" "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==" - "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" - "version" "3.4.3" - -"eslint-webpack-plugin@^3.1.1": - "integrity" "sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w==" - "resolved" "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-3.2.0.tgz" - "version" "3.2.0" - dependencies: - "@types/eslint" "^7.29.0 || ^8.4.1" - "jest-worker" "^28.0.2" - "micromatch" "^4.0.5" - "normalize-path" "^3.0.0" - "schema-utils" "^4.0.0" - -"eslint@*", "eslint@^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8", "eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8", "eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", "eslint@^5.0.0 || ^6.0.0 || ^7.0.0", "eslint@^6.0.0 || ^7.0.0 || ^8.0.0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^7.0.0 || ^8.0.0", "eslint@^7.32.0", "eslint@^7.5.0 || ^8.0.0", "eslint@>= 6", "eslint@>=5", "eslint@>=5.0.0", "eslint@>=7.0.0", "eslint@>=7.28.0": - "integrity" "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==" - "resolved" "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz" - "version" "7.32.0" - dependencies: - "@babel/code-frame" "7.12.11" - "@eslint/eslintrc" "^0.4.3" - "@humanwhocodes/config-array" "^0.5.0" - "ajv" "^6.10.0" - "chalk" "^4.0.0" - "cross-spawn" "^7.0.2" - "debug" "^4.0.1" - "doctrine" "^3.0.0" - "enquirer" "^2.3.5" - "escape-string-regexp" "^4.0.0" - "eslint-scope" "^5.1.1" - "eslint-utils" "^2.1.0" - "eslint-visitor-keys" "^2.0.0" - "espree" "^7.3.1" - "esquery" "^1.4.0" - "esutils" "^2.0.2" - "fast-deep-equal" "^3.1.3" - "file-entry-cache" "^6.0.1" - "functional-red-black-tree" "^1.0.1" - "glob-parent" "^5.1.2" - "globals" "^13.6.0" - "ignore" "^4.0.6" - "import-fresh" "^3.0.0" - "imurmurhash" "^0.1.4" - "is-glob" "^4.0.0" - "js-yaml" "^3.13.1" - "json-stable-stringify-without-jsonify" "^1.0.1" - "levn" "^0.4.1" - "lodash.merge" "^4.6.2" - "minimatch" "^3.0.4" - "natural-compare" "^1.4.0" - "optionator" "^0.9.1" - "progress" "^2.0.0" - "regexpp" "^3.1.0" - "semver" "^7.2.1" - "strip-ansi" "^6.0.0" - "strip-json-comments" "^3.1.0" - "table" "^6.0.9" - "text-table" "^0.2.0" - "v8-compile-cache" "^2.0.3" - -"eslint@^8.0.0", "eslint@^8.1.0", "eslint@^8.3.0": - "integrity" "sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==" - "resolved" "https://registry.npmjs.org/eslint/-/eslint-8.48.0.tgz" - "version" "8.48.0" - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.2" - "@eslint/js" "8.48.0" - "@humanwhocodes/config-array" "^0.11.10" - "@humanwhocodes/module-importer" "^1.0.1" - "@nodelib/fs.walk" "^1.2.8" - "ajv" "^6.12.4" - "chalk" "^4.0.0" - "cross-spawn" "^7.0.2" - "debug" "^4.3.2" - "doctrine" "^3.0.0" - "escape-string-regexp" "^4.0.0" - "eslint-scope" "^7.2.2" - "eslint-visitor-keys" "^3.4.3" - "espree" "^9.6.1" - "esquery" "^1.4.2" - "esutils" "^2.0.2" - "fast-deep-equal" "^3.1.3" - "file-entry-cache" "^6.0.1" - "find-up" "^5.0.0" - "glob-parent" "^6.0.2" - "globals" "^13.19.0" - "graphemer" "^1.4.0" - "ignore" "^5.2.0" - "imurmurhash" "^0.1.4" - "is-glob" "^4.0.0" - "is-path-inside" "^3.0.3" - "js-yaml" "^4.1.0" - "json-stable-stringify-without-jsonify" "^1.0.1" - "levn" "^0.4.1" - "lodash.merge" "^4.6.2" - "minimatch" "^3.1.2" - "natural-compare" "^1.4.0" - "optionator" "^0.9.3" - "strip-ansi" "^6.0.1" - "text-table" "^0.2.0" - -"eslint@^8.34.0": - "integrity" "sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==" - "resolved" "https://registry.npmjs.org/eslint/-/eslint-8.48.0.tgz" - "version" "8.48.0" - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.2" - "@eslint/js" "8.48.0" - "@humanwhocodes/config-array" "^0.11.10" - "@humanwhocodes/module-importer" "^1.0.1" - "@nodelib/fs.walk" "^1.2.8" - "ajv" "^6.12.4" - "chalk" "^4.0.0" - "cross-spawn" "^7.0.2" - "debug" "^4.3.2" - "doctrine" "^3.0.0" - "escape-string-regexp" "^4.0.0" - "eslint-scope" "^7.2.2" - "eslint-visitor-keys" "^3.4.3" - "espree" "^9.6.1" - "esquery" "^1.4.2" - "esutils" "^2.0.2" - "fast-deep-equal" "^3.1.3" - "file-entry-cache" "^6.0.1" - "find-up" "^5.0.0" - "glob-parent" "^6.0.2" - "globals" "^13.19.0" - "graphemer" "^1.4.0" - "ignore" "^5.2.0" - "imurmurhash" "^0.1.4" - "is-glob" "^4.0.0" - "is-path-inside" "^3.0.3" - "js-yaml" "^4.1.0" - "json-stable-stringify-without-jsonify" "^1.0.1" - "levn" "^0.4.1" - "lodash.merge" "^4.6.2" - "minimatch" "^3.1.2" - "natural-compare" "^1.4.0" - "optionator" "^0.9.3" - "strip-ansi" "^6.0.1" - "text-table" "^0.2.0" - -"espree@^7.3.0", "espree@^7.3.1": - "integrity" "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==" - "resolved" "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz" - "version" "7.3.1" - dependencies: - "acorn" "^7.4.0" - "acorn-jsx" "^5.3.1" - "eslint-visitor-keys" "^1.3.0" - -"espree@^9.6.0", "espree@^9.6.1": - "integrity" "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==" - "resolved" "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz" - "version" "9.6.1" - dependencies: - "acorn" "^8.9.0" - "acorn-jsx" "^5.3.2" - "eslint-visitor-keys" "^3.4.1" - -"esprima@^4.0.0", "esprima@^4.0.1": - "integrity" "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - "resolved" "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" - "version" "4.0.1" - -"esquery@^1.4.0", "esquery@^1.4.2", "esquery@^1.5.0": - "integrity" "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==" - "resolved" "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz" - "version" "1.5.0" - dependencies: - "estraverse" "^5.1.0" - -"esrecurse@^4.3.0": - "integrity" "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==" - "resolved" "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" - "version" "4.3.0" - dependencies: - "estraverse" "^5.2.0" - -"estraverse@^4.1.1": - "integrity" "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" - "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" - "version" "4.3.0" - -"estraverse@^5.1.0", "estraverse@^5.2.0", "estraverse@^5.3.0": - "integrity" "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" - "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" - "version" "5.3.0" - -"estree-walker@^1.0.1": - "integrity" "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==" - "resolved" "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz" - "version" "1.0.1" - -"esutils@^2.0.2": - "integrity" "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" - "resolved" "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" - "version" "2.0.3" - -"etag@~1.8.1": - "integrity" "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" - "resolved" "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" - "version" "1.8.1" - -"event-target-shim@^5.0.0": - "integrity" "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" - "resolved" "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz" - "version" "5.0.1" - -"eventemitter3@^4.0.0", "eventemitter3@^4.0.4": - "integrity" "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - "resolved" "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" - "version" "4.0.7" - -"events@^3.2.0": - "integrity" "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" - "resolved" "https://registry.npmjs.org/events/-/events-3.3.0.tgz" - "version" "3.3.0" - -"execa@^0.5.0": - "integrity" "sha512-R66dW/hW3I8yV77Wg4xn6zMguRPUgt59VLm5e85NrOF05ZdPn7YOfPBSw0E9epJDvuzwVWEG+HmEaQ4muYuWKQ==" - "resolved" "https://registry.npmjs.org/execa/-/execa-0.5.1.tgz" - "version" "0.5.1" - dependencies: - "cross-spawn" "^4.0.0" - "get-stream" "^2.2.0" - "is-stream" "^1.1.0" - "npm-run-path" "^2.0.0" - "p-finally" "^1.0.0" - "signal-exit" "^3.0.0" - "strip-eof" "^1.0.0" - -"execa@^4.0.2": - "integrity" "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==" - "resolved" "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "cross-spawn" "^7.0.0" - "get-stream" "^5.0.0" - "human-signals" "^1.1.1" - "is-stream" "^2.0.0" - "merge-stream" "^2.0.0" - "npm-run-path" "^4.0.0" - "onetime" "^5.1.0" - "signal-exit" "^3.0.2" - "strip-final-newline" "^2.0.0" - -"execa@^5.0.0", "execa@^5.1.1": - "integrity" "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==" - "resolved" "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" - "version" "5.1.1" - 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" - -"execa@^6.1.0": - "integrity" "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==" - "resolved" "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz" - "version" "6.1.0" - dependencies: - "cross-spawn" "^7.0.3" - "get-stream" "^6.0.1" - "human-signals" "^3.0.1" - "is-stream" "^3.0.0" - "merge-stream" "^2.0.0" - "npm-run-path" "^5.1.0" - "onetime" "^6.0.0" - "signal-exit" "^3.0.7" - "strip-final-newline" "^3.0.0" - -"exit@^0.1.2": - "integrity" "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==" - "resolved" "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" - "version" "0.1.2" - -"expect@^27.5.1": - "integrity" "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==" - "resolved" "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@jest/types" "^27.5.1" - "jest-get-type" "^27.5.1" - "jest-matcher-utils" "^27.5.1" - "jest-message-util" "^27.5.1" - -"express@^4.17.3", "express@>=4.0.0", "express@4.18.1": - "integrity" "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==" - "resolved" "https://registry.npmjs.org/express/-/express-4.18.1.tgz" - "version" "4.18.1" - dependencies: - "accepts" "~1.3.8" - "array-flatten" "1.1.1" - "body-parser" "1.20.0" - "content-disposition" "0.5.4" - "content-type" "~1.0.4" - "cookie" "0.5.0" - "cookie-signature" "1.0.6" - "debug" "2.6.9" - "depd" "2.0.0" - "encodeurl" "~1.0.2" - "escape-html" "~1.0.3" - "etag" "~1.8.1" - "finalhandler" "1.2.0" - "fresh" "0.5.2" - "http-errors" "2.0.0" - "merge-descriptors" "1.0.1" - "methods" "~1.1.2" - "on-finished" "2.4.1" - "parseurl" "~1.3.3" - "path-to-regexp" "0.1.7" - "proxy-addr" "~2.0.7" - "qs" "6.10.3" - "range-parser" "~1.2.1" - "safe-buffer" "5.2.1" - "send" "0.18.0" - "serve-static" "1.15.0" - "setprototypeof" "1.2.0" - "statuses" "2.0.1" - "type-is" "~1.6.18" - "utils-merge" "1.0.1" - "vary" "~1.1.2" - -"extend@~3.0.2": - "integrity" "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - "resolved" "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" - "version" "3.0.2" - -"external-editor@^3.0.3": - "integrity" "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==" - "resolved" "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "chardet" "^0.7.0" - "iconv-lite" "^0.4.24" - "tmp" "^0.0.33" - -"extract-zip@^2.0.1": - "integrity" "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==" - "resolved" "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "debug" "^4.1.1" - "get-stream" "^5.1.0" - "yauzl" "^2.10.0" - optionalDependencies: - "@types/yauzl" "^2.9.1" - -"extsprintf@^1.2.0", "extsprintf@1.3.0": - "integrity" "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==" - "resolved" "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz" - "version" "1.3.0" - -"fast-deep-equal@^3.1.1", "fast-deep-equal@^3.1.3": - "integrity" "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - "resolved" "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" - "version" "3.1.3" - -"fast-diff@^1.1.2": - "integrity" "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==" - "resolved" "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz" - "version" "1.2.0" - -"fast-glob@^3.2.12", "fast-glob@^3.2.9": - "integrity" "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==" - "resolved" "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz" - "version" "3.3.1" - 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" - -"fast-json-stable-stringify@^2.0.0", "fast-json-stable-stringify@^2.1.0", "fast-json-stable-stringify@2.1.0", "fast-json-stable-stringify@2.x": - "integrity" "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - "resolved" "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" - "version" "2.1.0" - -"fast-levenshtein@^2.0.6": - "integrity" "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" - "resolved" "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" - "version" "2.0.6" - -"fast-safe-stringify@^2.1.1", "fast-safe-stringify@2.1.1": - "integrity" "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" - "resolved" "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz" - "version" "2.1.1" - -"fastq@^1.6.0": - "integrity" "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==" - "resolved" "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz" - "version" "1.13.0" - dependencies: - "reusify" "^1.0.4" - -"faye-websocket@^0.11.3": - "integrity" "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==" - "resolved" "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz" - "version" "0.11.4" - dependencies: - "websocket-driver" ">=0.5.1" - -"fb-watchman@^2.0.0": - "integrity" "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==" - "resolved" "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "bser" "2.1.1" - -"fbemitter@^3.0.0": - "integrity" "sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==" - "resolved" "https://registry.npmjs.org/fbemitter/-/fbemitter-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "fbjs" "^3.0.0" - -"fbjs-css-vars@^1.0.0": - "integrity" "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==" - "resolved" "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz" - "version" "1.0.2" - -"fbjs@^3.0.0", "fbjs@^3.0.1": - "integrity" "sha512-ucV0tDODnGV3JCnnkmoszb5lf4bNpzjv80K41wd4k798Etq+UYD0y0TIfalLjZoKgjive6/adkRnszwapiDgBQ==" - "resolved" "https://registry.npmjs.org/fbjs/-/fbjs-3.0.4.tgz" - "version" "3.0.4" - dependencies: - "cross-fetch" "^3.1.5" - "fbjs-css-vars" "^1.0.0" - "loose-envify" "^1.0.0" - "object-assign" "^4.1.0" - "promise" "^7.1.1" - "setimmediate" "^1.0.5" - "ua-parser-js" "^0.7.30" - -"fd-slicer@~1.1.0": - "integrity" "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==" - "resolved" "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz" - "version" "1.1.0" - dependencies: - "pend" "~1.2.0" - -"figures@^3.0.0": - "integrity" "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==" - "resolved" "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz" - "version" "3.2.0" - dependencies: - "escape-string-regexp" "^1.0.5" - -"file-entry-cache@^6.0.1": - "integrity" "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==" - "resolved" "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" - "version" "6.0.1" - dependencies: - "flat-cache" "^3.0.4" - -"file-loader@^6.2.0": - "integrity" "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==" - "resolved" "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz" - "version" "6.2.0" - dependencies: - "loader-utils" "^2.0.0" - "schema-utils" "^3.0.0" - -"filelist@^1.0.1": - "integrity" "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==" - "resolved" "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz" - "version" "1.0.4" - dependencies: - "minimatch" "^5.0.1" - -"filesize@^8.0.6": - "integrity" "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==" - "resolved" "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz" - "version" "8.0.7" - -"fill-range@^7.0.1": - "integrity" "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==" - "resolved" "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" - "version" "7.0.1" - dependencies: - "to-regex-range" "^5.0.1" - -"filter-obj@^1.1.0": - "integrity" "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==" - "resolved" "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz" - "version" "1.1.0" - -"finalhandler@1.2.0": - "integrity" "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==" - "resolved" "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz" - "version" "1.2.0" - dependencies: - "debug" "2.6.9" - "encodeurl" "~1.0.2" - "escape-html" "~1.0.3" - "on-finished" "2.4.1" - "parseurl" "~1.3.3" - "statuses" "2.0.1" - "unpipe" "~1.0.0" - -"find-cache-dir@^3.3.1": - "integrity" "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==" - "resolved" "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz" - "version" "3.3.2" - dependencies: - "commondir" "^1.0.1" - "make-dir" "^3.0.2" - "pkg-dir" "^4.1.0" - -"find-up@^2.0.0": - "integrity" "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==" - "resolved" "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "locate-path" "^2.0.0" - -"find-up@^3.0.0": - "integrity" "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==" - "resolved" "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "locate-path" "^3.0.0" - -"find-up@^4.0.0", "find-up@^4.1.0": - "integrity" "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==" - "resolved" "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "locate-path" "^5.0.0" - "path-exists" "^4.0.0" - -"find-up@^5.0.0": - "integrity" "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==" - "resolved" "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "locate-path" "^6.0.0" - "path-exists" "^4.0.0" - -"fix-path@3.0.0": - "integrity" "sha512-opGAl4+ip5jUikHR2C8Jo7czZ80pz8EK/0gMlAZu7xgDmBqIynlX8SMYg9KowYjAU6HT0nxsSJEWru0u+n+N2Q==" - "resolved" "https://registry.npmjs.org/fix-path/-/fix-path-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "shell-path" "^2.1.0" - -"flat-cache@^3.0.4": - "integrity" "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==" - "resolved" "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz" - "version" "3.0.4" - dependencies: - "flatted" "^3.1.0" - "rimraf" "^3.0.2" - -"flatted@^3.1.0": - "integrity" "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==" - "resolved" "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz" - "version" "3.2.6" - -"flux@^4.0.1": - "integrity" "sha512-yKAbrp7JhZhj6uiT1FTuVMlIAT1J4jqEyBpFApi1kxpGZCvacMVc/t1pMQyotqHhAgvoE3bNvAykhCo2CLjnYw==" - "resolved" "https://registry.npmjs.org/flux/-/flux-4.0.3.tgz" - "version" "4.0.3" - dependencies: - "fbemitter" "^3.0.0" - "fbjs" "^3.0.1" - -"follow-redirects@^1.0.0", "follow-redirects@^1.14.0", "follow-redirects@^1.14.7", "follow-redirects@^1.14.9": - "integrity" "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==" - "resolved" "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz" - "version" "1.15.1" - -"for-each@^0.3.3": - "integrity" "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==" - "resolved" "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz" - "version" "0.3.3" - dependencies: - "is-callable" "^1.1.3" - -"forever-agent@~0.6.1": - "integrity" "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==" - "resolved" "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" - "version" "0.6.1" - -"fork-ts-checker-webpack-plugin@^6.5.0": - "integrity" "sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==" - "resolved" "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz" - "version" "6.5.3" - dependencies: - "@babel/code-frame" "^7.8.3" - "@types/json-schema" "^7.0.5" - "chalk" "^4.1.0" - "chokidar" "^3.4.2" - "cosmiconfig" "^6.0.0" - "deepmerge" "^4.2.2" - "fs-extra" "^9.0.0" - "glob" "^7.1.6" - "memfs" "^3.1.2" - "minimatch" "^3.0.4" - "schema-utils" "2.7.0" - "semver" "^7.3.2" - "tapable" "^1.0.0" - -"fork-ts-checker-webpack-plugin@7.2.11": - "integrity" "sha512-2e5+NyTUTE1Xq4fWo7KFEQblCaIvvINQwUX3jRmEGlgCTc1Ecqw/975EfQrQ0GEraxJTnp8KB9d/c8hlCHUMJA==" - "resolved" "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-7.2.11.tgz" - "version" "7.2.11" - dependencies: - "@babel/code-frame" "^7.16.7" - "chalk" "^4.1.2" - "chokidar" "^3.5.3" - "cosmiconfig" "^7.0.1" - "deepmerge" "^4.2.2" - "fs-extra" "^10.0.0" - "memfs" "^3.4.1" - "minimatch" "^3.0.4" - "schema-utils" "^3.1.1" - "semver" "^7.3.5" - "tapable" "^2.2.1" - -"form-data@^3.0.0": - "integrity" "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==" - "resolved" "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "asynckit" "^0.4.0" - "combined-stream" "^1.0.8" - "mime-types" "^2.1.12" - -"form-data@^4.0.0": - "integrity" "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==" - "resolved" "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "asynckit" "^0.4.0" - "combined-stream" "^1.0.8" - "mime-types" "^2.1.12" - -"form-data@~2.3.2": - "integrity" "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==" - "resolved" "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz" - "version" "2.3.3" - dependencies: - "asynckit" "^0.4.0" - "combined-stream" "^1.0.6" - "mime-types" "^2.1.12" - -"formidable@^2.0.1": - "integrity" "sha512-rjTMNbp2BpfQShhFbR3Ruk3qk2y9jKpvMW78nJgx8QKtxjDVrwbZG+wvDOmVbifHyOUOQJXxqEy6r0faRrPzTQ==" - "resolved" "https://registry.npmjs.org/formidable/-/formidable-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "dezalgo" "1.0.3" - "hexoid" "1.0.0" - "once" "1.4.0" - "qs" "6.9.3" - -"formik@^2.2.9": - "integrity" "sha512-LQLcISMmf1r5at4/gyJigGn0gOwFbeEAlji+N9InZF6LIMXnFNkO42sCI8Jt84YZggpD4cPWObAZaxpEFtSzNA==" - "resolved" "https://registry.npmjs.org/formik/-/formik-2.2.9.tgz" - "version" "2.2.9" - dependencies: - "deepmerge" "^2.1.1" - "hoist-non-react-statics" "^3.3.0" - "lodash" "^4.17.21" - "lodash-es" "^4.17.21" - "react-fast-compare" "^2.0.1" - "tiny-warning" "^1.0.2" - "tslib" "^1.10.0" - -"forwarded@0.2.0": - "integrity" "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" - "resolved" "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" - "version" "0.2.0" - -"fraction.js@^4.2.0": - "integrity" "sha512-n2aZ9tNfYDwaHhvFTkhFErqOMIb8uyzSQ+vGJBjZyanAKZVbGUQ1sngfk9FdkBw7G26O7AgNjLcecLffD1c7eg==" - "resolved" "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.6.tgz" - "version" "4.3.6" - -"fresh@0.5.2": - "integrity" "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" - "resolved" "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" - "version" "0.5.2" - -"fs-extra@^10.0.0": - "integrity" "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==" - "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz" - "version" "10.1.0" - dependencies: - "graceful-fs" "^4.2.0" - "jsonfile" "^6.0.1" - "universalify" "^2.0.0" - -"fs-extra@^10.1.0": - "integrity" "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==" - "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz" - "version" "10.1.0" - dependencies: - "graceful-fs" "^4.2.0" - "jsonfile" "^6.0.1" - "universalify" "^2.0.0" - -"fs-extra@^8.1.0": - "integrity" "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==" - "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz" - "version" "8.1.0" - dependencies: - "graceful-fs" "^4.2.0" - "jsonfile" "^4.0.0" - "universalify" "^0.1.0" - -"fs-extra@^9.0.0", "fs-extra@^9.0.1", "fs-extra@^9.1.0": - "integrity" "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==" - "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" - "version" "9.1.0" - dependencies: - "at-least-node" "^1.0.0" - "graceful-fs" "^4.2.0" - "jsonfile" "^6.0.1" - "universalify" "^2.0.0" - -"fs-extra@10.1.0": - "integrity" "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==" - "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz" - "version" "10.1.0" - dependencies: - "graceful-fs" "^4.2.0" - "jsonfile" "^6.0.1" - "universalify" "^2.0.0" - -"fs-minipass@^1.2.7": - "integrity" "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==" - "resolved" "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz" - "version" "1.2.7" - dependencies: - "minipass" "^2.6.0" - -"fs-minipass@^2.0.0", "fs-minipass@^2.1.0": - "integrity" "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==" - "resolved" "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "minipass" "^3.0.0" - -"fs-monkey@^1.0.3": - "integrity" "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==" - "resolved" "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz" - "version" "1.0.3" - -"fs.realpath@^1.0.0": - "integrity" "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - "resolved" "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - "version" "1.0.0" - -"fsevents@^2.3.2", "fsevents@~2.3.2": - "integrity" "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==" - "resolved" "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz" - "version" "2.3.2" - -"function-bind@^1.1.1": - "integrity" "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - "resolved" "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" - "version" "1.1.1" - -"function.prototype.name@^1.1.5": - "integrity" "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==" - "resolved" "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz" - "version" "1.1.5" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.3" - "es-abstract" "^1.19.0" - "functions-have-names" "^1.2.2" - -"functional-red-black-tree@^1.0.1": - "integrity" "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==" - "resolved" "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz" - "version" "1.0.1" - -"functions-have-names@^1.2.2", "functions-have-names@^1.2.3": - "integrity" "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" - "resolved" "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" - "version" "1.2.3" - -"gauge@^3.0.0": - "integrity" "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==" - "resolved" "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz" - "version" "3.0.2" - dependencies: - "aproba" "^1.0.3 || ^2.0.0" - "color-support" "^1.1.2" - "console-control-strings" "^1.0.0" - "has-unicode" "^2.0.1" - "object-assign" "^4.1.1" - "signal-exit" "^3.0.0" - "string-width" "^4.2.3" - "strip-ansi" "^6.0.1" - "wide-align" "^1.1.2" - -"gauge@^4.0.3": - "integrity" "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==" - "resolved" "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz" - "version" "4.0.4" - 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" - -"gauge@~2.7.3": - "integrity" "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==" - "resolved" "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz" - "version" "2.7.4" - dependencies: - "aproba" "^1.0.3" - "console-control-strings" "^1.0.0" - "has-unicode" "^2.0.0" - "object-assign" "^4.1.0" - "signal-exit" "^3.0.0" - "string-width" "^1.0.1" - "strip-ansi" "^3.0.1" - "wide-align" "^1.1.0" - -"generate-function@^2.3.1": - "integrity" "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==" - "resolved" "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz" - "version" "2.3.1" - dependencies: - "is-property" "^1.0.2" - -"gensync@^1.0.0-beta.2": - "integrity" "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" - "resolved" "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" - "version" "1.0.0-beta.2" - -"get-caller-file@^2.0.1", "get-caller-file@^2.0.5": - "integrity" "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" - "resolved" "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" - "version" "2.0.5" - -"get-intrinsic@^1.0.2", "get-intrinsic@^1.1.1", "get-intrinsic@^1.1.3", "get-intrinsic@^1.2.0", "get-intrinsic@^1.2.1": - "integrity" "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==" - "resolved" "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz" - "version" "1.2.1" - dependencies: - "function-bind" "^1.1.1" - "has" "^1.0.3" - "has-proto" "^1.0.1" - "has-symbols" "^1.0.3" - -"get-own-enumerable-property-symbols@^3.0.0": - "integrity" "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" - "resolved" "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz" - "version" "3.0.2" - -"get-package-type@^0.1.0": - "integrity" "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==" - "resolved" "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz" - "version" "0.1.0" - -"get-pkg-repo@^4.0.0": - "integrity" "sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==" - "resolved" "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz" - "version" "4.2.1" - dependencies: - "@hutson/parse-repository-url" "^3.0.0" - "hosted-git-info" "^4.0.0" - "through2" "^2.0.0" - "yargs" "^16.2.0" - -"get-port@^4.2.0": - "integrity" "sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw==" - "resolved" "https://registry.npmjs.org/get-port/-/get-port-4.2.0.tgz" - "version" "4.2.0" - -"get-port@^5.1.1": - "integrity" "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==" - "resolved" "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz" - "version" "5.1.1" - -"get-stream@^2.2.0": - "integrity" "sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==" - "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz" - "version" "2.3.1" - dependencies: - "object-assign" "^4.0.1" - "pinkie-promise" "^2.0.0" - -"get-stream@^4.1.0": - "integrity" "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==" - "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "pump" "^3.0.0" - -"get-stream@^5.0.0", "get-stream@^5.1.0": - "integrity" "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==" - "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz" - "version" "5.2.0" - dependencies: - "pump" "^3.0.0" - -"get-stream@^6.0.0": - "integrity" "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" - "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" - "version" "6.0.1" - -"get-stream@^6.0.1": - "integrity" "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" - "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" - "version" "6.0.1" - -"get-symbol-description@^1.0.0": - "integrity" "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==" - "resolved" "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "call-bind" "^1.0.2" - "get-intrinsic" "^1.1.1" - -"getpass@^0.1.1": - "integrity" "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==" - "resolved" "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz" - "version" "0.1.7" - dependencies: - "assert-plus" "^1.0.0" - -"git-raw-commits@^2.0.8": - "integrity" "sha512-sHhX5lsbG9SOO6yXdlwgEMQ/ljIn7qMpAbJZCGfXX2fq5T8M5SrDnpYk9/4HswTildcIqatsWa91vty6VhWSaQ==" - "resolved" "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.10.tgz" - "version" "2.0.10" - dependencies: - "dargs" "^7.0.0" - "lodash" "^4.17.15" - "meow" "^8.0.0" - "split2" "^3.0.0" - "through2" "^4.0.0" - -"git-remote-origin-url@^2.0.0": - "integrity" "sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==" - "resolved" "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "gitconfiglocal" "^1.0.0" - "pify" "^2.3.0" - -"git-semver-tags@^4.1.1": - "integrity" "sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==" - "resolved" "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.1.1.tgz" - "version" "4.1.1" - dependencies: - "meow" "^8.0.0" - "semver" "^6.0.0" - -"git-up@^4.0.0": - "integrity" "sha512-YUvVDg/vX3d0syBsk/CKUTib0srcQME0JyHkL5BaYdwLsiCslPWmDSi8PUMo9pXYjrryMcmsCoCgsTpSCJEQaA==" - "resolved" "https://registry.npmjs.org/git-up/-/git-up-4.0.5.tgz" - "version" "4.0.5" - dependencies: - "is-ssh" "^1.3.0" - "parse-url" "^6.0.0" - -"git-url-parse@^11.4.4": - "integrity" "sha512-WWUxvJs5HsyHL6L08wOusa/IXYtMuCAhrMmnTjQPpBU0TTHyDhnOATNH3xNQz7YOQUsqIIPTGr4xiVti1Hsk5g==" - "resolved" "https://registry.npmjs.org/git-url-parse/-/git-url-parse-11.6.0.tgz" - "version" "11.6.0" - dependencies: - "git-up" "^4.0.0" - -"gitconfiglocal@^1.0.0": - "integrity" "sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==" - "resolved" "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "ini" "^1.3.2" - -"glob-parent@^5.1.1", "glob-parent@^5.1.2", "glob-parent@~5.1.2": - "integrity" "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==" - "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" - "version" "5.1.2" - dependencies: - "is-glob" "^4.0.1" - -"glob-parent@^6.0.2": - "integrity" "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==" - "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" - "version" "6.0.2" - dependencies: - "is-glob" "^4.0.3" - -"glob-to-regexp@^0.4.1": - "integrity" "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" - "resolved" "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" - "version" "0.4.1" - -"glob@^7.0.0": - "integrity" "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==" - "resolved" "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" - "version" "7.2.3" - dependencies: - "fs.realpath" "^1.0.0" - "inflight" "^1.0.4" - "inherits" "2" - "minimatch" "^3.1.1" - "once" "^1.3.0" - "path-is-absolute" "^1.0.0" - -"glob@^7.1.1", "glob@^7.1.2", "glob@^7.1.3", "glob@^7.1.4", "glob@^7.1.6": - "integrity" "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==" - "resolved" "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz" - "version" "7.2.0" - 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" - -"glob@^7.2.0": - "integrity" "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==" - "resolved" "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" - "version" "7.2.3" - dependencies: - "fs.realpath" "^1.0.0" - "inflight" "^1.0.4" - "inherits" "2" - "minimatch" "^3.1.1" - "once" "^1.3.0" - "path-is-absolute" "^1.0.0" - -"glob@7.1.6": - "integrity" "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==" - "resolved" "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz" - "version" "7.1.6" - 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" - -"global-agent@^3.0.0": - "integrity" "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==" - "resolved" "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "boolean" "^3.0.1" - "es6-error" "^4.1.1" - "matcher" "^3.0.0" - "roarr" "^2.15.3" - "semver" "^7.3.2" - "serialize-error" "^7.0.1" - -"global-dirs@^3.0.0": - "integrity" "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==" - "resolved" "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "ini" "2.0.0" - -"global-modules@^2.0.0": - "integrity" "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==" - "resolved" "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "global-prefix" "^3.0.0" - -"global-prefix@^3.0.0": - "integrity" "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==" - "resolved" "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "ini" "^1.3.5" - "kind-of" "^6.0.2" - "which" "^1.3.1" - -"global-tunnel-ng@^2.7.1": - "integrity" "sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg==" - "resolved" "https://registry.npmjs.org/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz" - "version" "2.7.1" - dependencies: - "encodeurl" "^1.0.2" - "lodash" "^4.17.10" - "npm-conf" "^1.1.3" - "tunnel" "^0.0.6" - -"globals@^11.1.0": - "integrity" "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" - "resolved" "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" - "version" "11.12.0" - -"globals@^13.19.0", "globals@^13.2.0", "globals@^13.6.0", "globals@^13.9.0": - "integrity" "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==" - "resolved" "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz" - "version" "13.21.0" - dependencies: - "type-fest" "^0.20.2" - -"globalthis@^1.0.1", "globalthis@^1.0.3": - "integrity" "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==" - "resolved" "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz" - "version" "1.0.3" - dependencies: - "define-properties" "^1.1.3" - -"globby@^11.0.2", "globby@^11.0.3", "globby@^11.0.4", "globby@^11.1.0": - "integrity" "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==" - "resolved" "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" - "version" "11.1.0" - 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" - -"goober@^2.1.10": - "integrity" "sha512-7PpuQMH10jaTWm33sQgBQvz45pHR8N4l3Cu3WMGEWmHShAcTuuP7I+5/DwKo39fwti5A80WAjvqgz6SSlgWmGA==" - "resolved" "https://registry.npmjs.org/goober/-/goober-2.1.10.tgz" - "version" "2.1.10" - -"google-protobuf@^3.15.5": - "integrity" "sha512-byR7MBTK4tZ5PZEb+u5ZTzpt4SfrTxv5682MjPlHN16XeqgZE2/8HOIWeiXe8JKnT9OVbtBGhbq8mtvkK8cd5g==" - "resolved" "https://registry.npmjs.org/google-protobuf/-/google-protobuf-3.21.0.tgz" - "version" "3.21.0" - -"gopd@^1.0.1": - "integrity" "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==" - "resolved" "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "get-intrinsic" "^1.1.3" - -"got@^9.6.0": - "integrity" "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==" - "resolved" "https://registry.npmjs.org/got/-/got-9.6.0.tgz" - "version" "9.6.0" - dependencies: - "@sindresorhus/is" "^0.14.0" - "@szmarczak/http-timer" "^1.1.2" - "cacheable-request" "^6.0.0" - "decompress-response" "^3.3.0" - "duplexer3" "^0.1.4" - "get-stream" "^4.1.0" - "lowercase-keys" "^1.0.1" - "mimic-response" "^1.0.1" - "p-cancelable" "^1.0.0" - "to-readable-stream" "^1.0.0" - "url-parse-lax" "^3.0.0" - -"graceful-fs@^4.1.11", "graceful-fs@^4.1.15": - "integrity" "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" - "resolved" "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz" - "version" "4.2.8" - -"graceful-fs@^4.1.2", "graceful-fs@^4.1.6", "graceful-fs@^4.2.0", "graceful-fs@^4.2.4", "graceful-fs@^4.2.6", "graceful-fs@^4.2.9": - "integrity" "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - "resolved" "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz" - "version" "4.2.10" - -"graceful-fs@^4.2.2": - "integrity" "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - "resolved" "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz" - "version" "4.2.10" - -"graceful-fs@^4.2.3": - "integrity" "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" - "resolved" "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz" - "version" "4.2.8" - -"graceful-readlink@>= 1.0.0": - "integrity" "sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w==" - "resolved" "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz" - "version" "1.0.1" - -"graphemer@^1.4.0": - "integrity" "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==" - "resolved" "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz" - "version" "1.4.0" - -"growly@^1.3.0": - "integrity" "sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==" - "resolved" "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz" - "version" "1.3.0" - -"gzip-size@^6.0.0": - "integrity" "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==" - "resolved" "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "duplexer" "^0.1.2" - -"handle-thing@^2.0.0": - "integrity" "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" - "resolved" "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz" - "version" "2.0.1" - -"handlebars@^4.7.6": - "integrity" "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==" - "resolved" "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz" - "version" "4.7.7" - dependencies: - "minimist" "^1.2.5" - "neo-async" "^2.6.0" - "source-map" "^0.6.1" - "wordwrap" "^1.0.0" - optionalDependencies: - "uglify-js" "^3.1.4" - -"har-schema@^2.0.0": - "integrity" "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==" - "resolved" "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz" - "version" "2.0.0" - -"har-validator@~5.1.3": - "integrity" "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==" - "resolved" "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz" - "version" "5.1.5" - dependencies: - "ajv" "^6.12.3" - "har-schema" "^2.0.0" - -"hard-rejection@^2.1.0": - "integrity" "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==" - "resolved" "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz" - "version" "2.1.0" - -"harmony-reflect@^1.4.6": - "integrity" "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==" - "resolved" "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz" - "version" "1.6.2" - -"has-bigints@^1.0.1": - "integrity" "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==" - "resolved" "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz" - "version" "1.0.1" - -"has-bigints@^1.0.2": - "integrity" "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" - "resolved" "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz" - "version" "1.0.2" - -"has-flag@^3.0.0": - "integrity" "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" - "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" - "version" "3.0.0" - -"has-flag@^4.0.0": - "integrity" "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" - "version" "4.0.0" - -"has-property-descriptors@^1.0.0": - "integrity" "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==" - "resolved" "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "get-intrinsic" "^1.1.1" - -"has-proto@^1.0.1": - "integrity" "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" - "resolved" "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz" - "version" "1.0.1" - -"has-symbols@^1.0.1", "has-symbols@^1.0.2", "has-symbols@^1.0.3": - "integrity" "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" - "resolved" "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" - "version" "1.0.3" - -"has-tostringtag@^1.0.0": - "integrity" "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==" - "resolved" "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "has-symbols" "^1.0.2" - -"has-unicode@^2.0.0", "has-unicode@^2.0.1": - "integrity" "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" - "resolved" "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz" - "version" "2.0.1" - -"has-yarn@^2.1.0": - "integrity" "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==" - "resolved" "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz" - "version" "2.1.0" - -"has@^1.0.3": - "integrity" "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==" - "resolved" "https://registry.npmjs.org/has/-/has-1.0.3.tgz" - "version" "1.0.3" - dependencies: - "function-bind" "^1.1.1" - -"hash.js@^1.0.0", "hash.js@^1.0.3": - "integrity" "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==" - "resolved" "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz" - "version" "1.1.7" - dependencies: - "inherits" "^2.0.3" - "minimalistic-assert" "^1.0.1" - -"he@^1.2.0": - "integrity" "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" - "resolved" "https://registry.npmjs.org/he/-/he-1.2.0.tgz" - "version" "1.2.0" - -"hexoid@1.0.0": - "integrity" "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==" - "resolved" "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz" - "version" "1.0.0" - -"highlight.js@^10.7.1": - "integrity" "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==" - "resolved" "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz" - "version" "10.7.3" - -"hmac-drbg@^1.0.1": - "integrity" "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==" - "resolved" "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "hash.js" "^1.0.3" - "minimalistic-assert" "^1.0.0" - "minimalistic-crypto-utils" "^1.0.1" - -"hoist-non-react-statics@^3.3.0": - "integrity" "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==" - "resolved" "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz" - "version" "3.3.2" - dependencies: - "react-is" "^16.7.0" - -"hoopy@^0.1.4": - "integrity" "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==" - "resolved" "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz" - "version" "0.1.4" - -"hosted-git-info@^2.1.4": - "integrity" "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" - "resolved" "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz" - "version" "2.8.9" - -"hosted-git-info@^4.0.0", "hosted-git-info@^4.0.1": - "integrity" "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==" - "resolved" "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz" - "version" "4.0.2" - dependencies: - "lru-cache" "^6.0.0" - -"hosted-git-info@^4.1.0": - "integrity" "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==" - "resolved" "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "lru-cache" "^6.0.0" - -"hpack.js@^2.1.6": - "integrity" "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==" - "resolved" "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz" - "version" "2.1.6" - dependencies: - "inherits" "^2.0.1" - "obuf" "^1.0.0" - "readable-stream" "^2.0.1" - "wbuf" "^1.1.0" - -"html-encoding-sniffer@^2.0.1": - "integrity" "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==" - "resolved" "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "whatwg-encoding" "^1.0.5" - -"html-entities@^2.1.0", "html-entities@^2.3.2": - "integrity" "sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==" - "resolved" "https://registry.npmjs.org/html-entities/-/html-entities-2.4.0.tgz" - "version" "2.4.0" - -"html-escaper@^2.0.0": - "integrity" "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==" - "resolved" "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz" - "version" "2.0.2" - -"html-minifier-terser@^6.0.2": - "integrity" "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==" - "resolved" "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz" - "version" "6.1.0" - dependencies: - "camel-case" "^4.1.2" - "clean-css" "^5.2.2" - "commander" "^8.3.0" - "he" "^1.2.0" - "param-case" "^3.0.4" - "relateurl" "^0.2.7" - "terser" "^5.10.0" - -"html-webpack-plugin@^5.5.0": - "integrity" "sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==" - "resolved" "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz" - "version" "5.5.3" - dependencies: - "@types/html-minifier-terser" "^6.0.0" - "html-minifier-terser" "^6.0.2" - "lodash" "^4.17.21" - "pretty-error" "^4.0.0" - "tapable" "^2.0.0" - -"htmlnano@^2.0.0": - "integrity" "sha512-+ZrQFS4Ub+zd+/fWwfvoYCEGNEa0/zrpys6CyXxvZDwtL7Pl+pOtRkiujyvBQ7Lmfp7/iEPxtOFgxWA16Gkj3w==" - "resolved" "https://registry.npmjs.org/htmlnano/-/htmlnano-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "cosmiconfig" "^7.0.1" - "posthtml" "^0.16.5" - "timsort" "^0.3.0" - -"htmlparser2@^6.1.0": - "integrity" "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==" - "resolved" "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz" - "version" "6.1.0" - dependencies: - "domelementtype" "^2.0.1" - "domhandler" "^4.0.0" - "domutils" "^2.5.2" - "entities" "^2.0.0" - -"htmlparser2@^7.1.1": - "integrity" "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==" - "resolved" "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz" - "version" "7.2.0" - dependencies: - "domelementtype" "^2.0.1" - "domhandler" "^4.2.2" - "domutils" "^2.8.0" - "entities" "^3.0.1" - -"http-cache-semantics@^4.0.0", "http-cache-semantics@^4.1.0": - "integrity" "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" - "resolved" "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz" - "version" "4.1.0" - -"http-deceiver@^1.2.7": - "integrity" "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==" - "resolved" "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz" - "version" "1.2.7" - -"http-errors@~1.6.2": - "integrity" "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==" - "resolved" "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" - "version" "1.6.3" - dependencies: - "depd" "~1.1.2" - "inherits" "2.0.3" - "setprototypeof" "1.1.0" - "statuses" ">= 1.4.0 < 2" - -"http-errors@2.0.0": - "integrity" "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==" - "resolved" "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "depd" "2.0.0" - "inherits" "2.0.4" - "setprototypeof" "1.2.0" - "statuses" "2.0.1" - "toidentifier" "1.0.1" - -"http-parser-js@>=0.5.1": - "integrity" "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==" - "resolved" "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz" - "version" "0.5.8" - -"http-proxy-agent@^4.0.1": - "integrity" "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==" - "resolved" "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz" - "version" "4.0.1" - dependencies: - "@tootallnate/once" "1" - "agent-base" "6" - "debug" "4" - -"http-proxy-agent@^5.0.0": - "integrity" "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==" - "resolved" "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "@tootallnate/once" "2" - "agent-base" "6" - "debug" "4" - -"http-proxy-middleware@^2.0.3": - "integrity" "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==" - "resolved" "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz" - "version" "2.0.6" - 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" - -"http-proxy@^1.18.1": - "integrity" "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==" - "resolved" "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz" - "version" "1.18.1" - dependencies: - "eventemitter3" "^4.0.0" - "follow-redirects" "^1.0.0" - "requires-port" "^1.0.0" - -"http-signature@~1.2.0": - "integrity" "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==" - "resolved" "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz" - "version" "1.2.0" - dependencies: - "assert-plus" "^1.0.0" - "jsprim" "^1.2.2" - "sshpk" "^1.7.0" - -"https-proxy-agent@^5.0.0": - "integrity" "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==" - "resolved" "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "agent-base" "6" - "debug" "4" - -"human-signals@^1.1.1": - "integrity" "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==" - "resolved" "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz" - "version" "1.1.1" - -"human-signals@^2.1.0": - "integrity" "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" - "resolved" "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" - "version" "2.1.0" - -"human-signals@^3.0.1": - "integrity" "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==" - "resolved" "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz" - "version" "3.0.1" - -"humanize-ms@^1.2.1": - "integrity" "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==" - "resolved" "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz" - "version" "1.2.1" - dependencies: - "ms" "^2.0.0" - -"husky@^7.0.2": - "integrity" "sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==" - "resolved" "https://registry.npmjs.org/husky/-/husky-7.0.4.tgz" - "version" "7.0.4" - -"husky@^8.0.1": - "integrity" "sha512-xs7/chUH/CKdOCs7Zy0Aev9e/dKOMZf3K1Az1nar3tzlv0jfqnYtu235bstsWTmXOR0EfINrPa97yy4Lz6RiKw==" - "resolved" "https://registry.npmjs.org/husky/-/husky-8.0.1.tgz" - "version" "8.0.1" - -"iconv-corefoundation@^1.1.7": - "integrity" "sha512-T10qvkw0zz4wnm560lOEg0PovVqUXuOFhhHAkixw8/sycy7TJt7v/RrkEKEQnAw2viPSJu6iAkErxnzR0g8PpQ==" - "resolved" "https://registry.npmjs.org/iconv-corefoundation/-/iconv-corefoundation-1.1.7.tgz" - "version" "1.1.7" - dependencies: - "cli-truncate" "^2.1.0" - "node-addon-api" "^1.6.3" - -"iconv-lite@^0.4.24", "iconv-lite@0.4.24": - "integrity" "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==" - "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" - "version" "0.4.24" - dependencies: - "safer-buffer" ">= 2.1.2 < 3" - -"iconv-lite@^0.6.2": - "integrity" "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==" - "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" - "version" "0.6.3" - dependencies: - "safer-buffer" ">= 2.1.2 < 3.0.0" - -"iconv-lite@^0.6.3": - "integrity" "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==" - "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" - "version" "0.6.3" - dependencies: - "safer-buffer" ">= 2.1.2 < 3.0.0" - -"icss-utils@^5.0.0", "icss-utils@^5.1.0": - "integrity" "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==" - "resolved" "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz" - "version" "5.1.0" - -"idb@^7.0.1": - "integrity" "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==" - "resolved" "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz" - "version" "7.1.1" - -"identity-obj-proxy@^3.0.0": - "integrity" "sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==" - "resolved" "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "harmony-reflect" "^1.4.6" - -"ieee754@^1.1.13", "ieee754@^1.2.1": - "integrity" "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - "resolved" "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" - "version" "1.2.1" - -"ignore-walk@^3.0.3": - "integrity" "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==" - "resolved" "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz" - "version" "3.0.4" - dependencies: - "minimatch" "^3.0.4" - -"ignore@^4.0.6": - "integrity" "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" - "resolved" "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz" - "version" "4.0.6" - -"ignore@^5.1.8": - "integrity" "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==" - "resolved" "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz" - "version" "5.2.0" - -"ignore@^5.2.0": - "integrity" "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==" - "resolved" "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz" - "version" "5.2.4" - -"immer@^9.0.7": - "integrity" "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==" - "resolved" "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz" - "version" "9.0.21" - -"immutable@^4.0.0": - "integrity" "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==" - "resolved" "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz" - "version" "4.1.0" - -"import-fresh@^3.0.0", "import-fresh@^3.1.0", "import-fresh@^3.2.1": - "integrity" "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==" - "resolved" "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" - "version" "3.3.0" - dependencies: - "parent-module" "^1.0.0" - "resolve-from" "^4.0.0" - -"import-lazy@^2.1.0": - "integrity" "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==" - "resolved" "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz" - "version" "2.1.0" - -"import-local@^3.0.2": - "integrity" "sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA==" - "resolved" "https://registry.npmjs.org/import-local/-/import-local-3.0.3.tgz" - "version" "3.0.3" - dependencies: - "pkg-dir" "^4.2.0" - "resolve-cwd" "^3.0.0" - -"imurmurhash@^0.1.4": - "integrity" "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" - "resolved" "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" - "version" "0.1.4" - -"indent-string@^4.0.0": - "integrity" "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" - "resolved" "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" - "version" "4.0.0" - -"infer-owner@^1.0.4": - "integrity" "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" - "resolved" "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz" - "version" "1.0.4" - -"inflight@^1.0.4": - "integrity" "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==" - "resolved" "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" - "version" "1.0.6" - dependencies: - "once" "^1.3.0" - "wrappy" "1" - -"inherits@^2.0.1", "inherits@^2.0.3", "inherits@^2.0.4", "inherits@~2.0.3", "inherits@2", "inherits@2.0.4": - "integrity" "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" - "version" "2.0.4" - -"inherits@2.0.3": - "integrity" "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" - "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" - "version" "2.0.3" - -"ini@^1.3.2", "ini@^1.3.4", "ini@^1.3.5", "ini@~1.3.0": - "integrity" "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - "resolved" "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" - "version" "1.3.8" - -"ini@2.0.0": - "integrity" "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==" - "resolved" "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz" - "version" "2.0.0" - -"init-package-json@^2.0.2": - "integrity" "sha512-u1uGAtEFu3VA6HNl/yUWw57jmKEMx8SKOxHhxjGnOFUiIlFnohKDFg4ZrPpv9wWqk44nDxGJAtqjdQFm+9XXQA==" - "resolved" "https://registry.npmjs.org/init-package-json/-/init-package-json-2.0.5.tgz" - "version" "2.0.5" - dependencies: - "npm-package-arg" "^8.1.5" - "promzard" "^0.3.0" - "read" "~1.0.1" - "read-package-json" "^4.1.1" - "semver" "^7.3.5" - "validate-npm-package-license" "^3.0.4" - "validate-npm-package-name" "^3.0.0" - -"inquirer@^7.3.3", "inquirer@7.3.3": - "integrity" "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==" - "resolved" "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz" - "version" "7.3.3" - dependencies: - "ansi-escapes" "^4.2.1" - "chalk" "^4.1.0" - "cli-cursor" "^3.1.0" - "cli-width" "^3.0.0" - "external-editor" "^3.0.3" - "figures" "^3.0.0" - "lodash" "^4.17.19" - "mute-stream" "0.0.8" - "run-async" "^2.4.0" - "rxjs" "^6.6.0" - "string-width" "^4.1.0" - "strip-ansi" "^6.0.0" - "through" "^2.3.6" - -"inquirer@8.2.0": - "integrity" "sha512-0crLweprevJ02tTuA6ThpoAERAGyVILC4sS74uib58Xf/zSr1/ZWtmm7D5CI+bSQEaA04f0K7idaHpQbSWgiVQ==" - "resolved" "https://registry.npmjs.org/inquirer/-/inquirer-8.2.0.tgz" - "version" "8.2.0" - 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" - -"internal-slot@^1.0.3", "internal-slot@^1.0.5": - "integrity" "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==" - "resolved" "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz" - "version" "1.0.5" - dependencies: - "get-intrinsic" "^1.2.0" - "has" "^1.0.3" - "side-channel" "^1.0.4" - -"interpret@^1.0.0": - "integrity" "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" - "resolved" "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz" - "version" "1.4.0" - -"ip@^1.1.5": - "integrity" "sha512-rBtCAQAJm8A110nbwn6YdveUnuZH3WrC36IwkRXxDnq53JvXA2NVQvB7IHyKomxK1MJ4VDNw3UtFDdXQ+AvLYA==" - "resolved" "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz" - "version" "1.1.5" - -"ipaddr.js@^2.0.1": - "integrity" "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==" - "resolved" "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz" - "version" "2.1.0" - -"ipaddr.js@1.9.1": - "integrity" "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" - "resolved" "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" - "version" "1.9.1" - -"is-array-buffer@^3.0.1", "is-array-buffer@^3.0.2": - "integrity" "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==" - "resolved" "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz" - "version" "3.0.2" - dependencies: - "call-bind" "^1.0.2" - "get-intrinsic" "^1.2.0" - "is-typed-array" "^1.1.10" - -"is-arrayish@^0.2.1": - "integrity" "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" - "resolved" "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" - "version" "0.2.1" - -"is-bigint@^1.0.1": - "integrity" "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==" - "resolved" "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz" - "version" "1.0.4" - dependencies: - "has-bigints" "^1.0.1" - -"is-binary-path@~2.1.0": - "integrity" "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==" - "resolved" "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "binary-extensions" "^2.0.0" - -"is-boolean-object@^1.1.0": - "integrity" "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==" - "resolved" "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz" - "version" "1.1.2" - dependencies: - "call-bind" "^1.0.2" - "has-tostringtag" "^1.0.0" - -"is-callable@^1.1.3", "is-callable@^1.1.4", "is-callable@^1.2.7": - "integrity" "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" - "resolved" "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz" - "version" "1.2.7" - -"is-ci@^2.0.0": - "integrity" "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==" - "resolved" "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "ci-info" "^2.0.0" - -"is-ci@^3.0.0": - "integrity" "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==" - "resolved" "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "ci-info" "^3.2.0" - -"is-core-module@^2.13.0", "is-core-module@^2.5.0", "is-core-module@^2.9.0": - "integrity" "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==" - "resolved" "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz" - "version" "2.13.0" - dependencies: - "has" "^1.0.3" - -"is-date-object@^1.0.1": - "integrity" "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==" - "resolved" "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz" - "version" "1.0.5" - dependencies: - "has-tostringtag" "^1.0.0" - -"is-docker@^2.0.0", "is-docker@^2.1.1": - "integrity" "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==" - "resolved" "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" - "version" "2.2.1" - -"is-extglob@^2.1.1": - "integrity" "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" - "resolved" "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" - "version" "2.1.1" - -"is-fullwidth-code-point@^1.0.0": - "integrity" "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==" - "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "number-is-nan" "^1.0.0" - -"is-fullwidth-code-point@^2.0.0": - "integrity" "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==" - "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz" - "version" "2.0.0" - -"is-fullwidth-code-point@^3.0.0": - "integrity" "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" - "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" - "version" "3.0.0" - -"is-fullwidth-code-point@^4.0.0": - "integrity" "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==" - "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz" - "version" "4.0.0" - -"is-generator-fn@^2.0.0": - "integrity" "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==" - "resolved" "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz" - "version" "2.1.0" - -"is-glob@^4.0.0", "is-glob@^4.0.1", "is-glob@^4.0.3", "is-glob@~4.0.1": - "integrity" "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==" - "resolved" "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" - "version" "4.0.3" - dependencies: - "is-extglob" "^2.1.1" - -"is-installed-globally@^0.4.0": - "integrity" "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==" - "resolved" "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz" - "version" "0.4.0" - dependencies: - "global-dirs" "^3.0.0" - "is-path-inside" "^3.0.2" - -"is-interactive@^1.0.0": - "integrity" "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==" - "resolved" "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz" - "version" "1.0.0" - -"is-json@^2.0.1": - "integrity" "sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA==" - "resolved" "https://registry.npmjs.org/is-json/-/is-json-2.0.1.tgz" - "version" "2.0.1" - -"is-lambda@^1.0.1": - "integrity" "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==" - "resolved" "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz" - "version" "1.0.1" - -"is-module@^1.0.0": - "integrity" "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==" - "resolved" "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz" - "version" "1.0.0" - -"is-negative-zero@^2.0.2": - "integrity" "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" - "resolved" "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz" - "version" "2.0.2" - -"is-npm@^5.0.0": - "integrity" "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==" - "resolved" "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz" - "version" "5.0.0" - -"is-number-object@^1.0.4": - "integrity" "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==" - "resolved" "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz" - "version" "1.0.6" - dependencies: - "has-tostringtag" "^1.0.0" - -"is-number@^7.0.0": - "integrity" "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - "resolved" "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" - "version" "7.0.0" - -"is-obj@^1.0.1": - "integrity" "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==" - "resolved" "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz" - "version" "1.0.1" - -"is-obj@^2.0.0": - "integrity" "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" - "resolved" "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz" - "version" "2.0.0" - -"is-path-inside@^3.0.2", "is-path-inside@^3.0.3": - "integrity" "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" - "resolved" "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" - "version" "3.0.3" - -"is-plain-obj@^1.0.0", "is-plain-obj@^1.1.0": - "integrity" "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==" - "resolved" "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz" - "version" "1.1.0" - -"is-plain-obj@^2.0.0": - "integrity" "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==" - "resolved" "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz" - "version" "2.1.0" - -"is-plain-obj@^3.0.0": - "integrity" "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==" - "resolved" "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz" - "version" "3.0.0" - -"is-plain-object@^2.0.4": - "integrity" "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==" - "resolved" "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" - "version" "2.0.4" - dependencies: - "isobject" "^3.0.1" - -"is-plain-object@^5.0.0": - "integrity" "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" - "resolved" "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz" - "version" "5.0.0" - -"is-potential-custom-element-name@^1.0.1": - "integrity" "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" - "resolved" "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz" - "version" "1.0.1" - -"is-property@^1.0.2": - "integrity" "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==" - "resolved" "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz" - "version" "1.0.2" - -"is-regex@^1.1.4": - "integrity" "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==" - "resolved" "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz" - "version" "1.1.4" - dependencies: - "call-bind" "^1.0.2" - "has-tostringtag" "^1.0.0" - -"is-regexp@^1.0.0": - "integrity" "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==" - "resolved" "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz" - "version" "1.0.0" - -"is-root@^2.1.0": - "integrity" "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==" - "resolved" "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz" - "version" "2.1.0" - -"is-shared-array-buffer@^1.0.2": - "integrity" "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==" - "resolved" "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "call-bind" "^1.0.2" - -"is-ssh@^1.3.0": - "integrity" "sha512-NKzJmQzJfEEma3w5cJNcUMxoXfDjz0Zj0eyCalHn2E6VOwlzjZo0yuO2fcBSf8zhFuVCL/82/r5gRcoi6aEPVQ==" - "resolved" "https://registry.npmjs.org/is-ssh/-/is-ssh-1.3.3.tgz" - "version" "1.3.3" - dependencies: - "protocols" "^1.1.0" - -"is-stream@^1.1.0": - "integrity" "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==" - "resolved" "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz" - "version" "1.1.0" - -"is-stream@^2.0.0": - "integrity" "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" - "resolved" "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" - "version" "2.0.1" - -"is-stream@^3.0.0": - "integrity" "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==" - "resolved" "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz" - "version" "3.0.0" - -"is-string@^1.0.5", "is-string@^1.0.7": - "integrity" "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==" - "resolved" "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz" - "version" "1.0.7" - dependencies: - "has-tostringtag" "^1.0.0" - -"is-symbol@^1.0.2", "is-symbol@^1.0.3": - "integrity" "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==" - "resolved" "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz" - "version" "1.0.4" - dependencies: - "has-symbols" "^1.0.2" - -"is-text-path@^1.0.1": - "integrity" "sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==" - "resolved" "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "text-extensions" "^1.0.0" - -"is-typed-array@^1.1.10", "is-typed-array@^1.1.9": - "integrity" "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==" - "resolved" "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz" - "version" "1.1.12" - dependencies: - "which-typed-array" "^1.1.11" - -"is-typedarray@^1.0.0", "is-typedarray@~1.0.0": - "integrity" "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" - "resolved" "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" - "version" "1.0.0" - -"is-unicode-supported@^0.1.0": - "integrity" "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==" - "resolved" "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" - "version" "0.1.0" - -"is-weakref@^1.0.2": - "integrity" "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==" - "resolved" "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "call-bind" "^1.0.2" - -"is-wsl@^2.2.0": - "integrity" "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==" - "resolved" "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" - "version" "2.2.0" - dependencies: - "is-docker" "^2.0.0" - -"is-yarn-global@^0.3.0": - "integrity" "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==" - "resolved" "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz" - "version" "0.3.0" - -"isarray@^2.0.5": - "integrity" "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" - "resolved" "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz" - "version" "2.0.5" - -"isarray@~1.0.0": - "integrity" "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - "resolved" "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - "version" "1.0.0" - -"isbinaryfile@^3.0.2": - "integrity" "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==" - "resolved" "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz" - "version" "3.0.3" - dependencies: - "buffer-alloc" "^1.2.0" - -"isbinaryfile@^4.0.10": - "integrity" "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==" - "resolved" "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz" - "version" "4.0.10" - -"isexe@^2.0.0": - "integrity" "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - "resolved" "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" - "version" "2.0.0" - -"isobject@^3.0.1": - "integrity" "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==" - "resolved" "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" - "version" "3.0.1" - -"isstream@~0.1.2": - "integrity" "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" - "resolved" "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" - "version" "0.1.2" - -"istanbul-lib-coverage@^3.0.0", "istanbul-lib-coverage@^3.2.0": - "integrity" "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==" - "resolved" "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz" - "version" "3.2.0" - -"istanbul-lib-instrument@^5.0.4", "istanbul-lib-instrument@^5.1.0": - "integrity" "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==" - "resolved" "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz" - "version" "5.2.0" - 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" - -"istanbul-lib-report@^3.0.0": - "integrity" "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==" - "resolved" "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "istanbul-lib-coverage" "^3.0.0" - "make-dir" "^4.0.0" - "supports-color" "^7.1.0" - -"istanbul-lib-source-maps@^4.0.0": - "integrity" "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==" - "resolved" "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz" - "version" "4.0.1" - dependencies: - "debug" "^4.1.1" - "istanbul-lib-coverage" "^3.0.0" - "source-map" "^0.6.1" - -"istanbul-reports@^3.1.3": - "integrity" "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==" - "resolved" "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz" - "version" "3.1.6" - dependencies: - "html-escaper" "^2.0.0" - "istanbul-lib-report" "^3.0.0" - -"iterare@1.2.1": - "integrity" "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==" - "resolved" "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz" - "version" "1.2.1" - -"jake@^10.8.5": - "integrity" "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==" - "resolved" "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz" - "version" "10.8.5" - dependencies: - "async" "^3.2.3" - "chalk" "^4.0.2" - "filelist" "^1.0.1" - "minimatch" "^3.0.4" - -"jest-changed-files@^27.5.1": - "integrity" "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==" - "resolved" "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@jest/types" "^27.5.1" - "execa" "^5.0.0" - "throat" "^6.0.1" - -"jest-circus@^27.5.1": - "integrity" "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==" - "resolved" "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@jest/environment" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - "chalk" "^4.0.0" - "co" "^4.6.0" - "dedent" "^0.7.0" - "expect" "^27.5.1" - "is-generator-fn" "^2.0.0" - "jest-each" "^27.5.1" - "jest-matcher-utils" "^27.5.1" - "jest-message-util" "^27.5.1" - "jest-runtime" "^27.5.1" - "jest-snapshot" "^27.5.1" - "jest-util" "^27.5.1" - "pretty-format" "^27.5.1" - "slash" "^3.0.0" - "stack-utils" "^2.0.3" - "throat" "^6.0.1" - -"jest-cli@^27.5.1": - "integrity" "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==" - "resolved" "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@jest/core" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" - "chalk" "^4.0.0" - "exit" "^0.1.2" - "graceful-fs" "^4.2.9" - "import-local" "^3.0.2" - "jest-config" "^27.5.1" - "jest-util" "^27.5.1" - "jest-validate" "^27.5.1" - "prompts" "^2.0.1" - "yargs" "^16.2.0" - -"jest-config@^27.5.1": - "integrity" "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==" - "resolved" "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@babel/core" "^7.8.0" - "@jest/test-sequencer" "^27.5.1" - "@jest/types" "^27.5.1" - "babel-jest" "^27.5.1" - "chalk" "^4.0.0" - "ci-info" "^3.2.0" - "deepmerge" "^4.2.2" - "glob" "^7.1.1" - "graceful-fs" "^4.2.9" - "jest-circus" "^27.5.1" - "jest-environment-jsdom" "^27.5.1" - "jest-environment-node" "^27.5.1" - "jest-get-type" "^27.5.1" - "jest-jasmine2" "^27.5.1" - "jest-regex-util" "^27.5.1" - "jest-resolve" "^27.5.1" - "jest-runner" "^27.5.1" - "jest-util" "^27.5.1" - "jest-validate" "^27.5.1" - "micromatch" "^4.0.4" - "parse-json" "^5.2.0" - "pretty-format" "^27.5.1" - "slash" "^3.0.0" - "strip-json-comments" "^3.1.1" - -"jest-diff@^26.0.0": - "integrity" "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==" - "resolved" "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz" - "version" "26.6.2" - dependencies: - "chalk" "^4.0.0" - "diff-sequences" "^26.6.2" - "jest-get-type" "^26.3.0" - "pretty-format" "^26.6.2" - -"jest-diff@^27.5.1": - "integrity" "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==" - "resolved" "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "chalk" "^4.0.0" - "diff-sequences" "^27.5.1" - "jest-get-type" "^27.5.1" - "pretty-format" "^27.5.1" - -"jest-diff@^28.1.3": - "integrity" "sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==" - "resolved" "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.3.tgz" - "version" "28.1.3" - dependencies: - "chalk" "^4.0.0" - "diff-sequences" "^28.1.1" - "jest-get-type" "^28.0.2" - "pretty-format" "^28.1.3" - -"jest-docblock@^27.5.1": - "integrity" "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==" - "resolved" "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "detect-newline" "^3.0.0" - -"jest-each@^27.5.1": - "integrity" "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==" - "resolved" "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@jest/types" "^27.5.1" - "chalk" "^4.0.0" - "jest-get-type" "^27.5.1" - "jest-util" "^27.5.1" - "pretty-format" "^27.5.1" - -"jest-environment-jsdom@^27.5.1": - "integrity" "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==" - "resolved" "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@jest/environment" "^27.5.1" - "@jest/fake-timers" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - "jest-mock" "^27.5.1" - "jest-util" "^27.5.1" - "jsdom" "^16.6.0" - -"jest-environment-node@^27.5.1": - "integrity" "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==" - "resolved" "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@jest/environment" "^27.5.1" - "@jest/fake-timers" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - "jest-mock" "^27.5.1" - "jest-util" "^27.5.1" - -"jest-get-type@^26.3.0": - "integrity" "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==" - "resolved" "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz" - "version" "26.3.0" - -"jest-get-type@^27.5.1": - "integrity" "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==" - "resolved" "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz" - "version" "27.5.1" - -"jest-get-type@^28.0.2": - "integrity" "sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==" - "resolved" "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz" - "version" "28.0.2" - -"jest-haste-map@^27.5.1": - "integrity" "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==" - "resolved" "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@jest/types" "^27.5.1" - "@types/graceful-fs" "^4.1.2" - "@types/node" "*" - "anymatch" "^3.0.3" - "fb-watchman" "^2.0.0" - "graceful-fs" "^4.2.9" - "jest-regex-util" "^27.5.1" - "jest-serializer" "^27.5.1" - "jest-util" "^27.5.1" - "jest-worker" "^27.5.1" - "micromatch" "^4.0.4" - "walker" "^1.0.7" - optionalDependencies: - "fsevents" "^2.3.2" - -"jest-jasmine2@^27.5.1": - "integrity" "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==" - "resolved" "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@jest/environment" "^27.5.1" - "@jest/source-map" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - "chalk" "^4.0.0" - "co" "^4.6.0" - "expect" "^27.5.1" - "is-generator-fn" "^2.0.0" - "jest-each" "^27.5.1" - "jest-matcher-utils" "^27.5.1" - "jest-message-util" "^27.5.1" - "jest-runtime" "^27.5.1" - "jest-snapshot" "^27.5.1" - "jest-util" "^27.5.1" - "pretty-format" "^27.5.1" - "throat" "^6.0.1" - -"jest-leak-detector@^27.5.1": - "integrity" "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==" - "resolved" "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "jest-get-type" "^27.5.1" - "pretty-format" "^27.5.1" - -"jest-matcher-utils@^27.0.0", "jest-matcher-utils@^27.5.1": - "integrity" "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==" - "resolved" "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "chalk" "^4.0.0" - "jest-diff" "^27.5.1" - "jest-get-type" "^27.5.1" - "pretty-format" "^27.5.1" - -"jest-matcher-utils@^28.0.0": - "integrity" "sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==" - "resolved" "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz" - "version" "28.1.3" - dependencies: - "chalk" "^4.0.0" - "jest-diff" "^28.1.3" - "jest-get-type" "^28.0.2" - "pretty-format" "^28.1.3" - -"jest-message-util@^27.5.1": - "integrity" "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==" - "resolved" "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@babel/code-frame" "^7.12.13" - "@jest/types" "^27.5.1" - "@types/stack-utils" "^2.0.0" - "chalk" "^4.0.0" - "graceful-fs" "^4.2.9" - "micromatch" "^4.0.4" - "pretty-format" "^27.5.1" - "slash" "^3.0.0" - "stack-utils" "^2.0.3" - -"jest-message-util@^28.1.3": - "integrity" "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==" - "resolved" "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz" - "version" "28.1.3" - dependencies: - "@babel/code-frame" "^7.12.13" - "@jest/types" "^28.1.3" - "@types/stack-utils" "^2.0.0" - "chalk" "^4.0.0" - "graceful-fs" "^4.2.9" - "micromatch" "^4.0.4" - "pretty-format" "^28.1.3" - "slash" "^3.0.0" - "stack-utils" "^2.0.3" - -"jest-mock@^27.5.1": - "integrity" "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==" - "resolved" "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@jest/types" "^27.5.1" - "@types/node" "*" - -"jest-pnp-resolver@^1.2.2": - "integrity" "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==" - "resolved" "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz" - "version" "1.2.2" - -"jest-regex-util@^27.5.1": - "integrity" "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==" - "resolved" "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz" - "version" "27.5.1" - -"jest-regex-util@^28.0.0": - "integrity" "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==" - "resolved" "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz" - "version" "28.0.2" - -"jest-resolve-dependencies@^27.5.1": - "integrity" "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==" - "resolved" "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@jest/types" "^27.5.1" - "jest-regex-util" "^27.5.1" - "jest-snapshot" "^27.5.1" - -"jest-resolve@*", "jest-resolve@^27.4.2", "jest-resolve@^27.5.1": - "integrity" "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==" - "resolved" "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@jest/types" "^27.5.1" - "chalk" "^4.0.0" - "graceful-fs" "^4.2.9" - "jest-haste-map" "^27.5.1" - "jest-pnp-resolver" "^1.2.2" - "jest-util" "^27.5.1" - "jest-validate" "^27.5.1" - "resolve" "^1.20.0" - "resolve.exports" "^1.1.0" - "slash" "^3.0.0" - -"jest-runner@^27.5.1": - "integrity" "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==" - "resolved" "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@jest/console" "^27.5.1" - "@jest/environment" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - "chalk" "^4.0.0" - "emittery" "^0.8.1" - "graceful-fs" "^4.2.9" - "jest-docblock" "^27.5.1" - "jest-environment-jsdom" "^27.5.1" - "jest-environment-node" "^27.5.1" - "jest-haste-map" "^27.5.1" - "jest-leak-detector" "^27.5.1" - "jest-message-util" "^27.5.1" - "jest-resolve" "^27.5.1" - "jest-runtime" "^27.5.1" - "jest-util" "^27.5.1" - "jest-worker" "^27.5.1" - "source-map-support" "^0.5.6" - "throat" "^6.0.1" - -"jest-runtime@^27.5.1": - "integrity" "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==" - "resolved" "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@jest/environment" "^27.5.1" - "@jest/fake-timers" "^27.5.1" - "@jest/globals" "^27.5.1" - "@jest/source-map" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - "chalk" "^4.0.0" - "cjs-module-lexer" "^1.0.0" - "collect-v8-coverage" "^1.0.0" - "execa" "^5.0.0" - "glob" "^7.1.3" - "graceful-fs" "^4.2.9" - "jest-haste-map" "^27.5.1" - "jest-message-util" "^27.5.1" - "jest-mock" "^27.5.1" - "jest-regex-util" "^27.5.1" - "jest-resolve" "^27.5.1" - "jest-snapshot" "^27.5.1" - "jest-util" "^27.5.1" - "slash" "^3.0.0" - "strip-bom" "^4.0.0" - -"jest-serializer@^27.5.1": - "integrity" "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==" - "resolved" "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@types/node" "*" - "graceful-fs" "^4.2.9" - -"jest-snapshot@^27.5.1": - "integrity" "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==" - "resolved" "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@babel/core" "^7.7.2" - "@babel/generator" "^7.7.2" - "@babel/plugin-syntax-typescript" "^7.7.2" - "@babel/traverse" "^7.7.2" - "@babel/types" "^7.0.0" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/babel__traverse" "^7.0.4" - "@types/prettier" "^2.1.5" - "babel-preset-current-node-syntax" "^1.0.0" - "chalk" "^4.0.0" - "expect" "^27.5.1" - "graceful-fs" "^4.2.9" - "jest-diff" "^27.5.1" - "jest-get-type" "^27.5.1" - "jest-haste-map" "^27.5.1" - "jest-matcher-utils" "^27.5.1" - "jest-message-util" "^27.5.1" - "jest-util" "^27.5.1" - "natural-compare" "^1.4.0" - "pretty-format" "^27.5.1" - "semver" "^7.3.2" - -"jest-util@^27.0.0", "jest-util@^27.5.1": - "integrity" "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==" - "resolved" "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@jest/types" "^27.5.1" - "@types/node" "*" - "chalk" "^4.0.0" - "ci-info" "^3.2.0" - "graceful-fs" "^4.2.9" - "picomatch" "^2.2.3" - -"jest-util@^28.1.3": - "integrity" "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==" - "resolved" "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz" - "version" "28.1.3" - dependencies: - "@jest/types" "^28.1.3" - "@types/node" "*" - "chalk" "^4.0.0" - "ci-info" "^3.2.0" - "graceful-fs" "^4.2.9" - "picomatch" "^2.2.3" - -"jest-validate@^27.5.1": - "integrity" "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==" - "resolved" "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@jest/types" "^27.5.1" - "camelcase" "^6.2.0" - "chalk" "^4.0.0" - "jest-get-type" "^27.5.1" - "leven" "^3.1.0" - "pretty-format" "^27.5.1" - -"jest-watch-typeahead@^1.0.0": - "integrity" "sha512-Va5nLSJTN7YFtC2jd+7wsoe1pNe5K4ShLux/E5iHEwlB9AxaxmggY7to9KUqKojhaJw3aXqt5WAb4jGPOolpEw==" - "resolved" "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-1.1.0.tgz" - "version" "1.1.0" - dependencies: - "ansi-escapes" "^4.3.1" - "chalk" "^4.0.0" - "jest-regex-util" "^28.0.0" - "jest-watcher" "^28.0.0" - "slash" "^4.0.0" - "string-length" "^5.0.1" - "strip-ansi" "^7.0.1" - -"jest-watcher@^27.5.1": - "integrity" "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==" - "resolved" "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - "ansi-escapes" "^4.2.1" - "chalk" "^4.0.0" - "jest-util" "^27.5.1" - "string-length" "^4.0.1" - -"jest-watcher@^28.0.0": - "integrity" "sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==" - "resolved" "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.3.tgz" - "version" "28.1.3" - dependencies: - "@jest/test-result" "^28.1.3" - "@jest/types" "^28.1.3" - "@types/node" "*" - "ansi-escapes" "^4.2.1" - "chalk" "^4.0.0" - "emittery" "^0.10.2" - "jest-util" "^28.1.3" - "string-length" "^4.0.1" - -"jest-worker@^26.2.1": - "integrity" "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==" - "resolved" "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz" - "version" "26.6.2" - dependencies: - "@types/node" "*" - "merge-stream" "^2.0.0" - "supports-color" "^7.0.0" - -"jest-worker@^27.0.2", "jest-worker@^27.4.5", "jest-worker@^27.5.1": - "integrity" "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==" - "resolved" "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@types/node" "*" - "merge-stream" "^2.0.0" - "supports-color" "^8.0.0" - -"jest-worker@^28.0.2": - "integrity" "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==" - "resolved" "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz" - "version" "28.1.3" - dependencies: - "@types/node" "*" - "merge-stream" "^2.0.0" - "supports-color" "^8.0.0" - -"jest@^27.0.0", "jest@^27.0.0 || ^28.0.0", "jest@^27.0.6", "jest@^27.4.3": - "integrity" "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==" - "resolved" "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@jest/core" "^27.5.1" - "import-local" "^3.0.2" - "jest-cli" "^27.5.1" - -"jiti@^1.18.2": - "integrity" "sha512-5eEbBDQT/jF1xg6l36P+mWGGoH9Spuy0PCdSr2dtWRDGC6ph/w9ZCL4lmESW8f8F7MwT3XKescfP0wnZWAKL9w==" - "resolved" "https://registry.npmjs.org/jiti/-/jiti-1.19.3.tgz" - "version" "1.19.3" - -"joi@*", "joi@^17.4.2", "joi@^17.6.0": - "integrity" "sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw==" - "resolved" "https://registry.npmjs.org/joi/-/joi-17.6.0.tgz" - "version" "17.6.0" - dependencies: - "@hapi/hoek" "^9.0.0" - "@hapi/topo" "^5.0.0" - "@sideway/address" "^4.1.3" - "@sideway/formula" "^3.0.0" - "@sideway/pinpoint" "^2.0.0" - -"js-sha3@0.8.0": - "integrity" "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" - "resolved" "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz" - "version" "0.8.0" - -"js-tokens@^3.0.0 || ^4.0.0", "js-tokens@^4.0.0": - "integrity" "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - "resolved" "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" - "version" "4.0.0" - -"js-yaml@^3.13.1": - "integrity" "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==" - "resolved" "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" - "version" "3.14.1" - dependencies: - "argparse" "^1.0.7" - "esprima" "^4.0.0" - -"js-yaml@^4.1.0": - "integrity" "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==" - "resolved" "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "argparse" "^2.0.1" - -"jsbn@~0.1.0": - "integrity" "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" - "resolved" "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz" - "version" "0.1.1" - -"jsdoc-type-pratt-parser@~4.0.0": - "integrity" "sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==" - "resolved" "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz" - "version" "4.0.0" - -"jsdom@^16.6.0": - "integrity" "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==" - "resolved" "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz" - "version" "16.7.0" - dependencies: - "abab" "^2.0.5" - "acorn" "^8.2.4" - "acorn-globals" "^6.0.0" - "cssom" "^0.4.4" - "cssstyle" "^2.3.0" - "data-urls" "^2.0.0" - "decimal.js" "^10.2.1" - "domexception" "^2.0.1" - "escodegen" "^2.0.0" - "form-data" "^3.0.0" - "html-encoding-sniffer" "^2.0.1" - "http-proxy-agent" "^4.0.1" - "https-proxy-agent" "^5.0.0" - "is-potential-custom-element-name" "^1.0.1" - "nwsapi" "^2.2.0" - "parse5" "6.0.1" - "saxes" "^5.0.1" - "symbol-tree" "^3.2.4" - "tough-cookie" "^4.0.0" - "w3c-hr-time" "^1.0.2" - "w3c-xmlserializer" "^2.0.0" - "webidl-conversions" "^6.1.0" - "whatwg-encoding" "^1.0.5" - "whatwg-mimetype" "^2.3.0" - "whatwg-url" "^8.5.0" - "ws" "^7.4.6" - "xml-name-validator" "^3.0.0" - -"jsesc@^2.5.1": - "integrity" "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" - "resolved" "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" - "version" "2.5.2" - -"jsesc@~0.5.0": - "integrity" "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==" - "resolved" "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" - "version" "0.5.0" - -"json-buffer@3.0.0": - "integrity" "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==" - "resolved" "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz" - "version" "3.0.0" - -"json-parse-better-errors@^1.0.1": - "integrity" "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" - "resolved" "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz" - "version" "1.0.2" - -"json-parse-even-better-errors@^2.3.0", "json-parse-even-better-errors@^2.3.1": - "integrity" "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - "resolved" "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" - "version" "2.3.1" - -"json-schema-traverse@^0.4.1": - "integrity" "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - "resolved" "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" - "version" "0.4.1" - -"json-schema-traverse@^1.0.0": - "integrity" "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - "resolved" "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" - "version" "1.0.0" - -"json-schema@^0.4.0": - "integrity" "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" - "resolved" "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz" - "version" "0.4.0" - -"json-schema@0.2.3": - "integrity" "sha512-a3xHnILGMtk+hDOqNwHzF6e2fNbiMrXZvxKQiEv2MlgQP+pjIOzqAmKYD2mDpXYE/44M7g+n9p2bKkYWDUcXCQ==" - "resolved" "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz" - "version" "0.2.3" - -"json-stable-stringify-without-jsonify@^1.0.1": - "integrity" "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" - "resolved" "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" - "version" "1.0.1" - -"json-stringify-safe@^5.0.1", "json-stringify-safe@~5.0.1": - "integrity" "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" - "resolved" "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" - "version" "5.0.1" - -"json5@^1.0.1": - "integrity" "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==" - "resolved" "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "minimist" "^1.2.0" - -"json5@^1.0.2": - "integrity" "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==" - "resolved" "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "minimist" "^1.2.0" - -"json5@^2.1.2", "json5@^2.2.0", "json5@^2.2.1", "json5@2.x": - "integrity" "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==" - "resolved" "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz" - "version" "2.2.1" - -"jsonc-parser@3.0.0": - "integrity" "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==" - "resolved" "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz" - "version" "3.0.0" - -"jsonfile@^4.0.0": - "integrity" "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==" - "resolved" "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz" - "version" "4.0.0" - optionalDependencies: - "graceful-fs" "^4.1.6" - -"jsonfile@^6.0.1": - "integrity" "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==" - "resolved" "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" - "version" "6.1.0" - dependencies: - "universalify" "^2.0.0" - optionalDependencies: - "graceful-fs" "^4.1.6" - -"jsonparse@^1.2.0", "jsonparse@^1.3.1": - "integrity" "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==" - "resolved" "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz" - "version" "1.3.1" - -"jsonpointer@^5.0.0": - "integrity" "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==" - "resolved" "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz" - "version" "5.0.1" - -"JSONStream@^1.0.4": - "integrity" "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==" - "resolved" "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz" - "version" "1.3.5" - dependencies: - "jsonparse" "^1.2.0" - "through" ">=2.2.7 <3" - -"jsprim@^1.2.2": - "integrity" "sha512-4Dj8Rf+fQ+/Pn7C5qeEX02op1WfOss3PKTE9Nsop3Dx+6UPxlm1dr/og7o2cRa5hNN07CACr4NFzRLtj/rjWog==" - "resolved" "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz" - "version" "1.4.1" - dependencies: - "assert-plus" "1.0.0" - "extsprintf" "1.3.0" - "json-schema" "0.2.3" - "verror" "1.10.0" - -"jsx-ast-utils@^2.4.1 || ^3.0.0", "jsx-ast-utils@^3.3.3": - "integrity" "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==" - "resolved" "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz" - "version" "3.3.5" - dependencies: - "array-includes" "^3.1.6" - "array.prototype.flat" "^1.3.1" - "object.assign" "^4.1.4" - "object.values" "^1.1.6" - -"keyv@^3.0.0": - "integrity" "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==" - "resolved" "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "json-buffer" "3.0.0" - -"kind-of@^6.0.2", "kind-of@^6.0.3": - "integrity" "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - "resolved" "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" - "version" "6.0.3" - -"kleur@^3.0.3": - "integrity" "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" - "resolved" "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" - "version" "3.0.3" - -"klona@^2.0.4", "klona@^2.0.5": - "integrity" "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==" - "resolved" "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz" - "version" "2.0.6" - -"language-subtag-registry@~0.3.2": - "integrity" "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==" - "resolved" "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz" - "version" "0.3.22" - -"language-tags@=1.0.5": - "integrity" "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==" - "resolved" "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz" - "version" "1.0.5" - dependencies: - "language-subtag-registry" "~0.3.2" - -"latest-version@^5.1.0": - "integrity" "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==" - "resolved" "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz" - "version" "5.1.0" - dependencies: - "package-json" "^6.3.0" - -"launch-editor@^2.6.0": - "integrity" "sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==" - "resolved" "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.0.tgz" - "version" "2.6.0" - dependencies: - "picocolors" "^1.0.0" - "shell-quote" "^1.7.3" - -"lazy-val@^1.0.4", "lazy-val@^1.0.5": - "integrity" "sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==" - "resolved" "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.5.tgz" - "version" "1.0.5" - -"lerna@^4.0.0": - "integrity" "sha512-DD/i1znurfOmNJb0OBw66NmNqiM8kF6uIrzrJ0wGE3VNdzeOhz9ziWLYiRaZDGGwgbcjOo6eIfcx9O5Qynz+kg==" - "resolved" "https://registry.npmjs.org/lerna/-/lerna-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "@lerna/add" "4.0.0" - "@lerna/bootstrap" "4.0.0" - "@lerna/changed" "4.0.0" - "@lerna/clean" "4.0.0" - "@lerna/cli" "4.0.0" - "@lerna/create" "4.0.0" - "@lerna/diff" "4.0.0" - "@lerna/exec" "4.0.0" - "@lerna/import" "4.0.0" - "@lerna/info" "4.0.0" - "@lerna/init" "4.0.0" - "@lerna/link" "4.0.0" - "@lerna/list" "4.0.0" - "@lerna/publish" "4.0.0" - "@lerna/run" "4.0.0" - "@lerna/version" "4.0.0" - "import-local" "^3.0.2" - "npmlog" "^4.1.2" - -"leven@^3.1.0": - "integrity" "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==" - "resolved" "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" - "version" "3.1.0" - -"levn@^0.4.1": - "integrity" "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==" - "resolved" "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" - "version" "0.4.1" - dependencies: - "prelude-ls" "^1.2.1" - "type-check" "~0.4.0" - -"libnpmaccess@^4.0.1": - "integrity" "sha512-sPeTSNImksm8O2b6/pf3ikv4N567ERYEpeKRPSmqlNt1dTZbvgpJIzg5vAhXHpw2ISBsELFRelk0jEahj1c6nQ==" - "resolved" "https://registry.npmjs.org/libnpmaccess/-/libnpmaccess-4.0.3.tgz" - "version" "4.0.3" - dependencies: - "aproba" "^2.0.0" - "minipass" "^3.1.1" - "npm-package-arg" "^8.1.2" - "npm-registry-fetch" "^11.0.0" - -"libnpmpublish@^4.0.0": - "integrity" "sha512-+AD7A2zbVeGRCFI2aO//oUmapCwy7GHqPXFJh3qpToSRNU+tXKJ2YFUgjt04LPPAf2dlEH95s6EhIHM1J7bmOw==" - "resolved" "https://registry.npmjs.org/libnpmpublish/-/libnpmpublish-4.0.2.tgz" - "version" "4.0.2" - dependencies: - "normalize-package-data" "^3.0.2" - "npm-package-arg" "^8.1.2" - "npm-registry-fetch" "^11.0.0" - "semver" "^7.1.3" - "ssri" "^8.0.1" - -"libphonenumber-js@^1.9.43": - "integrity" "sha512-ehoihx4HpRXO6FH/uJ0EnaEV4dVU+FDny+jv0S6k9JPyPsAIr0eXDAFvGRMBKE1daCtyHAaFSKCiuCxrOjVAzQ==" - "resolved" "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.10.11.tgz" - "version" "1.10.11" - -"lilconfig@^2.0.3", "lilconfig@^2.0.5", "lilconfig@2.0.5": - "integrity" "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==" - "resolved" "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz" - "version" "2.0.5" - -"lilconfig@^2.1.0": - "integrity" "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==" - "resolved" "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz" - "version" "2.1.0" - -"lines-and-columns@^1.1.6": - "integrity" "sha512-8ZmlJFVK9iCmtLz19HpSsR8HaAMWBT284VMNednLwlIMDP2hJDCIhUp0IZ2xUcZ+Ob6BM0VvCSJwzASDM45NLQ==" - "resolved" "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz" - "version" "1.1.6" - -"lint-staged@^11.1.2": - "integrity" "sha512-Vti55pUnpvPE0J9936lKl0ngVeTdSZpEdTNhASbkaWX7J5R9OEifo1INBGQuGW4zmy6OG+TcWPJ3m5yuy5Q8Tg==" - "resolved" "https://registry.npmjs.org/lint-staged/-/lint-staged-11.2.6.tgz" - "version" "11.2.6" - dependencies: - "cli-truncate" "2.1.0" - "colorette" "^1.4.0" - "commander" "^8.2.0" - "cosmiconfig" "^7.0.1" - "debug" "^4.3.2" - "enquirer" "^2.3.6" - "execa" "^5.1.1" - "listr2" "^3.12.2" - "micromatch" "^4.0.4" - "normalize-path" "^3.0.0" - "please-upgrade-node" "^3.2.0" - "string-argv" "0.3.1" - "stringify-object" "3.3.0" - "supports-color" "8.1.1" - -"lint-staged@^12.4.2": - "integrity" "sha512-BKLUjWDsKquV/JuIcoQW4MSAI3ggwEImF1+sB4zaKvyVx1wBk3FsG7UK9bpnmBTN1pm7EH2BBcMwINJzCRv12g==" - "resolved" "https://registry.npmjs.org/lint-staged/-/lint-staged-12.5.0.tgz" - "version" "12.5.0" - dependencies: - "cli-truncate" "^3.1.0" - "colorette" "^2.0.16" - "commander" "^9.3.0" - "debug" "^4.3.4" - "execa" "^5.1.1" - "lilconfig" "2.0.5" - "listr2" "^4.0.5" - "micromatch" "^4.0.5" - "normalize-path" "^3.0.0" - "object-inspect" "^1.12.2" - "pidtree" "^0.5.0" - "string-argv" "^0.3.1" - "supports-color" "^9.2.2" - "yaml" "^1.10.2" - -"lint-staged@^13.0.3": - "integrity" "sha512-9hmrwSCFroTSYLjflGI8Uk+GWAwMB4OlpU4bMJEAT5d/llQwtYKoim4bLOyLCuWFAhWEupE0vkIFqtw/WIsPug==" - "resolved" "https://registry.npmjs.org/lint-staged/-/lint-staged-13.0.3.tgz" - "version" "13.0.3" - dependencies: - "cli-truncate" "^3.1.0" - "colorette" "^2.0.17" - "commander" "^9.3.0" - "debug" "^4.3.4" - "execa" "^6.1.0" - "lilconfig" "2.0.5" - "listr2" "^4.0.5" - "micromatch" "^4.0.5" - "normalize-path" "^3.0.0" - "object-inspect" "^1.12.2" - "pidtree" "^0.6.0" - "string-argv" "^0.3.1" - "yaml" "^2.1.1" - -"listr2@^3.12.2": - "integrity" "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==" - "resolved" "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz" - "version" "3.14.0" - dependencies: - "cli-truncate" "^2.1.0" - "colorette" "^2.0.16" - "log-update" "^4.0.0" - "p-map" "^4.0.0" - "rfdc" "^1.3.0" - "rxjs" "^7.5.1" - "through" "^2.3.8" - "wrap-ansi" "^7.0.0" - -"listr2@^4.0.5": - "integrity" "sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA==" - "resolved" "https://registry.npmjs.org/listr2/-/listr2-4.0.5.tgz" - "version" "4.0.5" - dependencies: - "cli-truncate" "^2.1.0" - "colorette" "^2.0.16" - "log-update" "^4.0.0" - "p-map" "^4.0.0" - "rfdc" "^1.3.0" - "rxjs" "^7.5.5" - "through" "^2.3.8" - "wrap-ansi" "^7.0.0" - -"lmdb@2.5.2": - "integrity" "sha512-V5V5Xa2Hp9i2XsbDALkBTeHXnBXh/lEmk9p22zdr7jtuOIY9TGhjK6vAvTpOOx9IKU4hJkRWZxn/HsvR1ELLtA==" - "resolved" "https://registry.npmjs.org/lmdb/-/lmdb-2.5.2.tgz" - "version" "2.5.2" - dependencies: - "msgpackr" "^1.5.4" - "node-addon-api" "^4.3.0" - "node-gyp-build-optional-packages" "5.0.3" - "ordered-binary" "^1.2.4" - "weak-lru-cache" "^1.2.2" - optionalDependencies: - "@lmdb/lmdb-darwin-arm64" "2.5.2" - "@lmdb/lmdb-darwin-x64" "2.5.2" - "@lmdb/lmdb-linux-arm" "2.5.2" - "@lmdb/lmdb-linux-arm64" "2.5.2" - "@lmdb/lmdb-linux-x64" "2.5.2" - "@lmdb/lmdb-win32-x64" "2.5.2" - -"load-json-file@^4.0.0": - "integrity" "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==" - "resolved" "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "graceful-fs" "^4.1.2" - "parse-json" "^4.0.0" - "pify" "^3.0.0" - "strip-bom" "^3.0.0" - -"load-json-file@^6.2.0": - "integrity" "sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ==" - "resolved" "https://registry.npmjs.org/load-json-file/-/load-json-file-6.2.0.tgz" - "version" "6.2.0" - dependencies: - "graceful-fs" "^4.1.15" - "parse-json" "^5.0.0" - "strip-bom" "^4.0.0" - "type-fest" "^0.6.0" - -"loader-runner@^4.2.0": - "integrity" "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==" - "resolved" "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz" - "version" "4.3.0" - -"loader-utils@^2.0.0": - "integrity" "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==" - "resolved" "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "big.js" "^5.2.2" - "emojis-list" "^3.0.0" - "json5" "^2.1.2" - -"loader-utils@^2.0.4": - "integrity" "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==" - "resolved" "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz" - "version" "2.0.4" - dependencies: - "big.js" "^5.2.2" - "emojis-list" "^3.0.0" - "json5" "^2.1.2" - -"loader-utils@^3.2.0": - "integrity" "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==" - "resolved" "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz" - "version" "3.2.1" - -"locate-path@^2.0.0": - "integrity" "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==" - "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "p-locate" "^2.0.0" - "path-exists" "^3.0.0" - -"locate-path@^3.0.0": - "integrity" "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==" - "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "p-locate" "^3.0.0" - "path-exists" "^3.0.0" - -"locate-path@^5.0.0": - "integrity" "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==" - "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "p-locate" "^4.1.0" - -"locate-path@^6.0.0": - "integrity" "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==" - "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "p-locate" "^5.0.0" - -"lodash-es@^4.17.21": - "integrity" "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" - "resolved" "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz" - "version" "4.17.21" - -"lodash._reinterpolate@^3.0.0": - "integrity" "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==" - "resolved" "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz" - "version" "3.0.0" - -"lodash.curry@^4.0.1": - "integrity" "sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA==" - "resolved" "https://registry.npmjs.org/lodash.curry/-/lodash.curry-4.1.1.tgz" - "version" "4.1.1" - -"lodash.debounce@^4.0.8": - "integrity" "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" - "resolved" "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz" - "version" "4.0.8" - -"lodash.escaperegexp@^4.1.2": - "integrity" "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==" - "resolved" "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz" - "version" "4.1.2" - -"lodash.flow@^3.3.0": - "integrity" "sha512-ff3BX/tSioo+XojX4MOsOMhJw0nZoUEF011LX8g8d3gvjVbxd89cCio4BCXronjxcTUIJUoqKEUA+n4CqvvRPw==" - "resolved" "https://registry.npmjs.org/lodash.flow/-/lodash.flow-3.5.0.tgz" - "version" "3.5.0" - -"lodash.isequal@^4.5.0": - "integrity" "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" - "resolved" "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz" - "version" "4.5.0" - -"lodash.ismatch@^4.4.0": - "integrity" "sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==" - "resolved" "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz" - "version" "4.4.0" - -"lodash.memoize@^4.1.2", "lodash.memoize@4.x": - "integrity" "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==" - "resolved" "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" - "version" "4.1.2" - -"lodash.merge@^4.6.2": - "integrity" "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" - "resolved" "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" - "version" "4.6.2" - -"lodash.sortby@^4.7.0": - "integrity" "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==" - "resolved" "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz" - "version" "4.7.0" - -"lodash.template@^4.5.0": - "integrity" "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==" - "resolved" "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz" - "version" "4.5.0" - dependencies: - "lodash._reinterpolate" "^3.0.0" - "lodash.templatesettings" "^4.0.0" - -"lodash.templatesettings@^4.0.0": - "integrity" "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==" - "resolved" "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz" - "version" "4.2.0" - dependencies: - "lodash._reinterpolate" "^3.0.0" - -"lodash.throttle@^4.1.1": - "integrity" "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==" - "resolved" "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz" - "version" "4.1.1" - -"lodash.truncate@^4.4.2": - "integrity" "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==" - "resolved" "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz" - "version" "4.4.2" - -"lodash.uniq@^4.5.0": - "integrity" "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" - "resolved" "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz" - "version" "4.5.0" - -"lodash@^4.17.10", "lodash@^4.17.15", "lodash@^4.17.19", "lodash@^4.17.20", "lodash@^4.17.21", "lodash@^4.7.0", "lodash@4.17.21": - "integrity" "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - "resolved" "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" - "version" "4.17.21" - -"log-symbols@^4.1.0": - "integrity" "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==" - "resolved" "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "chalk" "^4.1.0" - "is-unicode-supported" "^0.1.0" - -"log-update@^4.0.0": - "integrity" "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==" - "resolved" "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "ansi-escapes" "^4.3.0" - "cli-cursor" "^3.1.0" - "slice-ansi" "^4.0.0" - "wrap-ansi" "^6.2.0" - -"long@^4.0.0": - "integrity" "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" - "resolved" "https://registry.npmjs.org/long/-/long-4.0.0.tgz" - "version" "4.0.0" - -"long@^5.0.0": - "integrity" "sha512-9RTUNjK60eJbx3uz+TEGF7fUr29ZDxR5QzXcyDpeSfeH28S9ycINflOgOlppit5U+4kNTe83KQnMEerw7GmE8w==" - "resolved" "https://registry.npmjs.org/long/-/long-5.2.0.tgz" - "version" "5.2.0" - -"loose-envify@^1.0.0", "loose-envify@^1.1.0", "loose-envify@^1.4.0": - "integrity" "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==" - "resolved" "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" - "version" "1.4.0" - dependencies: - "js-tokens" "^3.0.0 || ^4.0.0" - -"lower-case@^2.0.2": - "integrity" "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==" - "resolved" "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "tslib" "^2.0.3" - -"lowercase-keys@^1.0.0", "lowercase-keys@^1.0.1": - "integrity" "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" - "resolved" "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz" - "version" "1.0.1" - -"lowercase-keys@^2.0.0": - "integrity" "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" - "resolved" "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz" - "version" "2.0.0" - -"lru_map@^0.3.3": - "integrity" "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==" - "resolved" "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz" - "version" "0.3.3" - -"lru-cache@^4.0.1": - "integrity" "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==" - "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz" - "version" "4.1.5" - dependencies: - "pseudomap" "^1.0.2" - "yallist" "^2.1.2" - -"lru-cache@^6.0.0": - "integrity" "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==" - "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "yallist" "^4.0.0" - -"lru-cache@^7.14.1": - "integrity" "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==" - "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz" - "version" "7.18.3" - -"luxon@^1.23.x": - "integrity" "sha512-TfTiyvZhwBYM/7QdAVDh+7dBTBA29v4ik0Ce9zda3Mnf8on1S5KJI8P2jKFZ8+5C0jhmr0KwJEO/Wdpm0VeWJQ==" - "resolved" "https://registry.npmjs.org/luxon/-/luxon-1.28.0.tgz" - "version" "1.28.0" - -"lz-string@^1.4.4": - "integrity" "sha512-0ckx7ZHRPqb0oUm8zNr+90mtf9DQB60H1wMCjBtfi62Kl3a7JbHob6gA2bC+xRvZoOL+1hzUK8jeuEIQE8svEQ==" - "resolved" "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz" - "version" "1.4.4" - -"macos-release@^2.5.0": - "integrity" "sha512-EIgv+QZ9r+814gjJj0Bt5vSLJLzswGmSUbUpbi9AIr/fsN2IWFBl2NucV9PAiek+U1STK468tEkxmVYUtuAN3g==" - "resolved" "https://registry.npmjs.org/macos-release/-/macos-release-2.5.0.tgz" - "version" "2.5.0" - -"magic-string@^0.25.0", "magic-string@^0.25.7", "magic-string@0.25.7": - "integrity" "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==" - "resolved" "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz" - "version" "0.25.7" - dependencies: - "sourcemap-codec" "^1.4.4" - -"make-dir@^2.1.0": - "integrity" "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==" - "resolved" "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "pify" "^4.0.1" - "semver" "^5.6.0" - -"make-dir@^3.0.0", "make-dir@^3.0.2", "make-dir@^3.1.0": - "integrity" "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==" - "resolved" "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "semver" "^6.0.0" - -"make-dir@^4.0.0": - "integrity" "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==" - "resolved" "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "semver" "^7.5.3" - -"make-error@^1.1.1", "make-error@1.x": - "integrity" "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" - "resolved" "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" - "version" "1.3.6" - -"make-fetch-happen@^8.0.9": - "integrity" "sha512-EsS89h6l4vbfJEtBZnENTOFk8mCRpY5ru36Xe5bcX1KYIli2mkSHqoFsp5O1wMDvTJJzxe/4THpCTtygjeeGWQ==" - "resolved" "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-8.0.14.tgz" - "version" "8.0.14" - dependencies: - "agentkeepalive" "^4.1.3" - "cacache" "^15.0.5" - "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" - "promise-retry" "^2.0.1" - "socks-proxy-agent" "^5.0.0" - "ssri" "^8.0.0" - -"make-fetch-happen@^9.0.1", "make-fetch-happen@^9.1.0": - "integrity" "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==" - "resolved" "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz" - "version" "9.1.0" - 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" - -"makeerror@1.0.12": - "integrity" "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==" - "resolved" "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz" - "version" "1.0.12" - dependencies: - "tmpl" "1.0.5" - -"map-obj@^1.0.0": - "integrity" "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==" - "resolved" "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz" - "version" "1.0.1" - -"map-obj@^4.0.0": - "integrity" "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==" - "resolved" "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz" - "version" "4.3.0" - -"match-sorter@^6.0.2": - "integrity" "sha512-mxybbo3pPNuA+ZuCUhm5bwNkXrJTbsk5VWbR5wiwz/GC6LIiegBGn2w3O08UG/jdbYLinw51fSQ5xNU1U3MgBw==" - "resolved" "https://registry.npmjs.org/match-sorter/-/match-sorter-6.3.1.tgz" - "version" "6.3.1" - dependencies: - "@babel/runtime" "^7.12.5" - "remove-accents" "0.4.2" - -"matcher@^3.0.0": - "integrity" "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==" - "resolved" "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "escape-string-regexp" "^4.0.0" - -"mdn-data@2.0.14": - "integrity" "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" - "resolved" "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz" - "version" "2.0.14" - -"mdn-data@2.0.4": - "integrity" "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==" - "resolved" "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz" - "version" "2.0.4" - -"media-typer@0.3.0": - "integrity" "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" - "resolved" "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" - "version" "0.3.0" - -"memfs@^3.1.2", "memfs@^3.4.1", "memfs@^3.4.3": - "integrity" "sha512-ygaiUSNalBX85388uskeCyhSAoOSgzBbtVCr9jA2RROssFL9Q19/ZXFqS+2Th2sr1ewNIWgFdLzLC3Yl1Zv+lw==" - "resolved" "https://registry.npmjs.org/memfs/-/memfs-3.4.7.tgz" - "version" "3.4.7" - dependencies: - "fs-monkey" "^1.0.3" - -"meow@^8.0.0": - "integrity" "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==" - "resolved" "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz" - "version" "8.1.2" - dependencies: - "@types/minimist" "^1.2.0" - "camelcase-keys" "^6.2.2" - "decamelize-keys" "^1.1.0" - "hard-rejection" "^2.1.0" - "minimist-options" "4.1.0" - "normalize-package-data" "^3.0.0" - "read-pkg-up" "^7.0.1" - "redent" "^3.0.0" - "trim-newlines" "^3.0.0" - "type-fest" "^0.18.0" - "yargs-parser" "^20.2.3" - -"merge-descriptors@1.0.1": - "integrity" "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" - "resolved" "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" - "version" "1.0.1" - -"merge-stream@^2.0.0": - "integrity" "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" - "resolved" "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" - "version" "2.0.0" - -"merge2@^1.3.0", "merge2@^1.4.1": - "integrity" "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" - "resolved" "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" - "version" "1.4.1" - -"methods@^1.1.2", "methods@~1.1.2": - "integrity" "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" - "resolved" "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" - "version" "1.1.2" - -"micromatch@^4.0.0", "micromatch@^4.0.2", "micromatch@^4.0.4", "micromatch@^4.0.5": - "integrity" "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==" - "resolved" "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" - "version" "4.0.5" - dependencies: - "braces" "^3.0.2" - "picomatch" "^2.3.1" - -"microseconds@0.2.0": - "integrity" "sha512-n7DHHMjR1avBbSpsTBj6fmMGh2AGrifVV4e+WYc3Q9lO+xnSZ3NyhcBND3vzzatt05LFhoKFRxrIyklmLlUtyA==" - "resolved" "https://registry.npmjs.org/microseconds/-/microseconds-0.2.0.tgz" - "version" "0.2.0" - -"mime-db@>= 1.43.0 < 2", "mime-db@1.52.0": - "integrity" "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" - "resolved" "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" - "version" "1.52.0" - -"mime-db@1.50.0": - "integrity" "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==" - "resolved" "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz" - "version" "1.50.0" - -"mime-types@^2.1.12", "mime-types@^2.1.27", "mime-types@^2.1.31", "mime-types@~2.1.17", "mime-types@~2.1.24", "mime-types@~2.1.34": - "integrity" "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==" - "resolved" "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" - "version" "2.1.35" - dependencies: - "mime-db" "1.52.0" - -"mime-types@~2.1.19": - "integrity" "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==" - "resolved" "https://registry.npmjs.org/mime-types/-/mime-types-2.1.33.tgz" - "version" "2.1.33" - dependencies: - "mime-db" "1.50.0" - -"mime@^2.5.2", "mime@2.6.0": - "integrity" "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==" - "resolved" "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz" - "version" "2.6.0" - -"mime@1.6.0": - "integrity" "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - "resolved" "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" - "version" "1.6.0" - -"mimic-fn@^2.1.0": - "integrity" "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" - "resolved" "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" - "version" "2.1.0" - -"mimic-fn@^4.0.0": - "integrity" "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==" - "resolved" "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz" - "version" "4.0.0" - -"mimic-response@^1.0.0", "mimic-response@^1.0.1": - "integrity" "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" - "resolved" "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz" - "version" "1.0.1" - -"min-indent@^1.0.0": - "integrity" "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==" - "resolved" "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz" - "version" "1.0.1" - -"mini-css-extract-plugin@^2.4.5": - "integrity" "sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw==" - "resolved" "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.6.tgz" - "version" "2.7.6" - dependencies: - "schema-utils" "^4.0.0" - -"minimalistic-assert@^1.0.0", "minimalistic-assert@^1.0.1": - "integrity" "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" - "resolved" "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" - "version" "1.0.1" - -"minimalistic-crypto-utils@^1.0.1": - "integrity" "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" - "resolved" "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz" - "version" "1.0.1" - -"minimatch@^3.0.4", "minimatch@3.0.4": - "integrity" "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==" - "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz" - "version" "3.0.4" - dependencies: - "brace-expansion" "^1.1.7" - -"minimatch@^3.0.5", "minimatch@^3.1.2": - "integrity" "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==" - "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" - "version" "3.1.2" - dependencies: - "brace-expansion" "^1.1.7" - -"minimatch@^3.1.1": - "integrity" "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==" - "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" - "version" "3.1.2" - dependencies: - "brace-expansion" "^1.1.7" - -"minimatch@^5.0.1": - "integrity" "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==" - "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz" - "version" "5.1.0" - dependencies: - "brace-expansion" "^2.0.1" - -"minimist-options@4.1.0": - "integrity" "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==" - "resolved" "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "arrify" "^1.0.1" - "is-plain-obj" "^1.1.0" - "kind-of" "^6.0.3" - -"minimist@^1.2.0", "minimist@^1.2.5", "minimist@^1.2.6": - "integrity" "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" - "resolved" "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" - "version" "1.2.8" - -"minimist@1.2.6": - "integrity" "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" - "resolved" "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz" - "version" "1.2.6" - -"minipass-collect@^1.0.2": - "integrity" "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==" - "resolved" "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "minipass" "^3.0.0" - -"minipass-fetch@^1.3.0", "minipass-fetch@^1.3.2": - "integrity" "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==" - "resolved" "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz" - "version" "1.4.1" - dependencies: - "minipass" "^3.1.0" - "minipass-sized" "^1.0.3" - "minizlib" "^2.0.0" - optionalDependencies: - "encoding" "^0.1.12" - -"minipass-flush@^1.0.5": - "integrity" "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==" - "resolved" "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz" - "version" "1.0.5" - dependencies: - "minipass" "^3.0.0" - -"minipass-json-stream@^1.0.1": - "integrity" "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==" - "resolved" "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "jsonparse" "^1.3.1" - "minipass" "^3.0.0" - -"minipass-pipeline@^1.2.2", "minipass-pipeline@^1.2.4": - "integrity" "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==" - "resolved" "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz" - "version" "1.2.4" - dependencies: - "minipass" "^3.0.0" - -"minipass-sized@^1.0.3": - "integrity" "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==" - "resolved" "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz" - "version" "1.0.3" - dependencies: - "minipass" "^3.0.0" - -"minipass@^2.6.0", "minipass@^2.9.0": - "integrity" "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==" - "resolved" "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz" - "version" "2.9.0" - dependencies: - "safe-buffer" "^5.1.2" - "yallist" "^3.0.0" - -"minipass@^3.0.0", "minipass@^3.1.0", "minipass@^3.1.1", "minipass@^3.1.3": - "integrity" "sha512-+8NzxD82XQoNKNrl1d/FSi+X8wAEWR+sbYAfIvub4Nz0d22plFG72CEVVaufV8PNf4qSslFTD8VMOxNVhHCjTw==" - "resolved" "https://registry.npmjs.org/minipass/-/minipass-3.1.5.tgz" - "version" "3.1.5" - dependencies: - "yallist" "^4.0.0" - -"minizlib@^1.3.3": - "integrity" "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==" - "resolved" "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz" - "version" "1.3.3" - dependencies: - "minipass" "^2.9.0" - -"minizlib@^2.0.0", "minizlib@^2.1.1": - "integrity" "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==" - "resolved" "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz" - "version" "2.1.2" - dependencies: - "minipass" "^3.0.0" - "yallist" "^4.0.0" - -"mixpanel-browser@^2.45.0": - "integrity" "sha512-PQ1DaTk68yyYtLA0iejmzPA9iNDhT4uIZpqZjRTw7HWpYfl123fydHb2laKanaKjm8YDmrGGz3+xZ4Q6joogyg==" - "resolved" "https://registry.npmjs.org/mixpanel-browser/-/mixpanel-browser-2.45.0.tgz" - "version" "2.45.0" - -"mkdirp-infer-owner@^2.0.0": - "integrity" "sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw==" - "resolved" "https://registry.npmjs.org/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "chownr" "^2.0.0" - "infer-owner" "^1.0.4" - "mkdirp" "^1.0.3" - -"mkdirp@^0.5.1", "mkdirp@^0.5.5": - "integrity" "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==" - "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz" - "version" "0.5.5" - dependencies: - "minimist" "^1.2.5" - -"mkdirp@^0.5.4": - "integrity" "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==" - "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" - "version" "0.5.6" - dependencies: - "minimist" "^1.2.6" - -"mkdirp@^1.0.3": - "integrity" "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" - "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" - "version" "1.0.4" - -"mkdirp@^1.0.4": - "integrity" "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" - "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" - "version" "1.0.4" - -"mkdirp@~0.5.1": - "integrity" "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==" - "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" - "version" "0.5.6" - dependencies: - "minimist" "^1.2.6" - -"modify-values@^1.0.0": - "integrity" "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==" - "resolved" "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz" - "version" "1.0.1" - -"moment@>=2.14.0": - "integrity" "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" - "resolved" "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz" - "version" "2.29.4" - -"ms@^2.0.0", "ms@^2.1.1", "ms@2.1.2": - "integrity" "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" - "version" "2.1.2" - -"ms@2.0.0": - "integrity" "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - "resolved" "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" - "version" "2.0.0" - -"ms@2.1.3": - "integrity" "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" - "version" "2.1.3" - -"msgpackr-extract@^2.0.2": - "integrity" "sha512-cmrmERQFb19NX2JABOGtrKdHMyI6RUyceaPBQ2iRz9GnDkjBWFjNJC0jyyoOfZl2U/LZE3tQCCQc4dlRyA8mcA==" - "resolved" "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-2.1.2.tgz" - "version" "2.1.2" - dependencies: - "node-gyp-build-optional-packages" "5.0.3" - optionalDependencies: - "@msgpackr-extract/msgpackr-extract-darwin-arm64" "2.1.2" - "@msgpackr-extract/msgpackr-extract-darwin-x64" "2.1.2" - "@msgpackr-extract/msgpackr-extract-linux-arm" "2.1.2" - "@msgpackr-extract/msgpackr-extract-linux-arm64" "2.1.2" - "@msgpackr-extract/msgpackr-extract-linux-x64" "2.1.2" - "@msgpackr-extract/msgpackr-extract-win32-x64" "2.1.2" - -"msgpackr@^1.5.4": - "integrity" "sha512-bqSQ0DYJbXbrJcrZFmMygUZmqQiDfI2ewFVWcrZY12w5XHWtPuW4WppDT/e63Uu311ajwkRRXSoF0uILroBeTA==" - "resolved" "https://registry.npmjs.org/msgpackr/-/msgpackr-1.6.2.tgz" - "version" "1.6.2" - optionalDependencies: - "msgpackr-extract" "^2.0.2" - -"multer@1.4.4-lts.1": - "integrity" "sha512-WeSGziVj6+Z2/MwQo3GvqzgR+9Uc+qt8SwHKh3gvNPiISKfsMfG4SvCOFYlxxgkXt7yIV2i1yczehm0EOKIxIg==" - "resolved" "https://registry.npmjs.org/multer/-/multer-1.4.4-lts.1.tgz" - "version" "1.4.4-lts.1" - dependencies: - "append-field" "^1.0.0" - "busboy" "^1.0.0" - "concat-stream" "^1.5.2" - "mkdirp" "^0.5.4" - "object-assign" "^4.1.1" - "type-is" "^1.6.4" - "xtend" "^4.0.0" - -"multicast-dns@^7.2.5": - "integrity" "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==" - "resolved" "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz" - "version" "7.2.5" - dependencies: - "dns-packet" "^5.2.2" - "thunky" "^1.0.2" - -"multimatch@^5.0.0": - "integrity" "sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==" - "resolved" "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "@types/minimatch" "^3.0.3" - "array-differ" "^3.0.0" - "array-union" "^2.1.0" - "arrify" "^2.0.1" - "minimatch" "^3.0.4" - -"mute-stream@~0.0.4", "mute-stream@0.0.8": - "integrity" "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" - "resolved" "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz" - "version" "0.0.8" - -"mysql2@^2.2.5", "mysql2@^2.3.3": - "integrity" "sha512-wxJUev6LgMSgACDkb/InIFxDprRa6T95+VEoR+xPvtngtccNH2dGjEB/fVZ8yg1gWv1510c9CvXuJHi5zUm0ZA==" - "resolved" "https://registry.npmjs.org/mysql2/-/mysql2-2.3.3.tgz" - "version" "2.3.3" - dependencies: - "denque" "^2.0.1" - "generate-function" "^2.3.1" - "iconv-lite" "^0.6.3" - "long" "^4.0.0" - "lru-cache" "^6.0.0" - "named-placeholders" "^1.1.2" - "seq-queue" "^0.0.5" - "sqlstring" "^2.3.2" - -"mz@^2.4.0", "mz@^2.7.0": - "integrity" "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==" - "resolved" "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "any-promise" "^1.0.0" - "object-assign" "^4.0.1" - "thenify-all" "^1.0.0" - -"named-placeholders@^1.1.2": - "integrity" "sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==" - "resolved" "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.3.tgz" - "version" "1.1.3" - dependencies: - "lru-cache" "^7.14.1" - -"nano-time@1.0.0": - "integrity" "sha512-flnngywOoQ0lLQOTRNexn2gGSNuM9bKj9RZAWSzhQ+UJYaAFG9bac4DW9VHjUAzrOaIcajHybCTHe/bkvozQqA==" - "resolved" "https://registry.npmjs.org/nano-time/-/nano-time-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "big-integer" "^1.6.16" - -"nanoclone@^0.2.1": - "integrity" "sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA==" - "resolved" "https://registry.npmjs.org/nanoclone/-/nanoclone-0.2.1.tgz" - "version" "0.2.1" - -"nanoid@^3.3.6": - "integrity" "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==" - "resolved" "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz" - "version" "3.3.6" - -"natural-compare-lite@^1.4.0": - "integrity" "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==" - "resolved" "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz" - "version" "1.4.0" - -"natural-compare@^1.4.0": - "integrity" "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" - "resolved" "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" - "version" "1.4.0" - -"negotiator@^0.6.2": - "integrity" "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" - "resolved" "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz" - "version" "0.6.2" - -"negotiator@0.6.3": - "integrity" "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" - "resolved" "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" - "version" "0.6.3" - -"neo-async@^2.6.0", "neo-async@^2.6.2": - "integrity" "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" - "resolved" "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" - "version" "2.6.2" - -"no-case@^3.0.4": - "integrity" "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==" - "resolved" "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz" - "version" "3.0.4" - dependencies: - "lower-case" "^2.0.2" - "tslib" "^2.0.3" - -"node-abort-controller@^3.0.1": - "integrity" "sha512-/ujIVxthRs+7q6hsdjHMaj8hRG9NuWmwrz+JdRwZ14jdFoKSkm+vDsCbF9PLpnSqjaWQJuTmVtcWHNLr+vrOFw==" - "resolved" "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.0.1.tgz" - "version" "3.0.1" - -"node-addon-api@^1.6.3": - "integrity" "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==" - "resolved" "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz" - "version" "1.7.2" - -"node-addon-api@^3.2.1": - "integrity" "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==" - "resolved" "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz" - "version" "3.2.1" - -"node-addon-api@^4.2.0", "node-addon-api@^4.3.0": - "integrity" "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==" - "resolved" "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz" - "version" "4.3.0" - -"node-emoji@1.11.0": - "integrity" "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==" - "resolved" "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz" - "version" "1.11.0" - dependencies: - "lodash" "^4.17.21" - -"node-fetch@^2.6.1", "node-fetch@^2.6.12", "node-fetch@^2.6.7": - "integrity" "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==" - "resolved" "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "whatwg-url" "^5.0.0" - -"node-forge@^1": - "integrity" "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==" - "resolved" "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz" - "version" "1.3.1" - -"node-gyp-build-optional-packages@5.0.3": - "integrity" "sha512-k75jcVzk5wnnc/FMxsf4udAoTEUv2jY3ycfdSd3yWu6Cnd1oee6/CfZJApyscA4FJOmdoixWwiwOyf16RzD5JA==" - "resolved" "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.3.tgz" - "version" "5.0.3" - -"node-gyp-build@^4.3.0": - "integrity" "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==" - "resolved" "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz" - "version" "4.5.0" - -"node-gyp@^5.0.2": - "integrity" "sha512-WH0WKGi+a4i4DUt2mHnvocex/xPLp9pYt5R6M2JdFB7pJ7Z34hveZ4nDTGTiLXCkitA9T8HFZjhinBCiVHYcWw==" - "resolved" "https://registry.npmjs.org/node-gyp/-/node-gyp-5.1.1.tgz" - "version" "5.1.1" - dependencies: - "env-paths" "^2.2.0" - "glob" "^7.1.4" - "graceful-fs" "^4.2.2" - "mkdirp" "^0.5.1" - "nopt" "^4.0.1" - "npmlog" "^4.1.2" - "request" "^2.88.0" - "rimraf" "^2.6.3" - "semver" "^5.7.1" - "tar" "^4.4.12" - "which" "^1.3.1" - -"node-gyp@^7.1.0": - "integrity" "sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==" - "resolved" "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz" - "version" "7.1.2" - dependencies: - "env-paths" "^2.2.0" - "glob" "^7.1.4" - "graceful-fs" "^4.2.3" - "nopt" "^5.0.0" - "npmlog" "^4.1.2" - "request" "^2.88.2" - "rimraf" "^3.0.2" - "semver" "^7.3.2" - "tar" "^6.0.2" - "which" "^2.0.2" - -"node-gyp@8.x": - "integrity" "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==" - "resolved" "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz" - "version" "8.4.1" - 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" - -"node-int64@^0.4.0": - "integrity" "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==" - "resolved" "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz" - "version" "0.4.0" - -"node-notifier@^8.0.1 || ^9.0.0 || ^10.0.0": - "integrity" "sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg==" - "resolved" "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.2.tgz" - "version" "8.0.2" - dependencies: - "growly" "^1.3.0" - "is-wsl" "^2.2.0" - "semver" "^7.3.2" - "shellwords" "^0.1.1" - "uuid" "^8.3.0" - "which" "^2.0.2" - -"node-releases@^2.0.13": - "integrity" "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==" - "resolved" "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz" - "version" "2.0.13" - -"nopt@^4.0.1": - "integrity" "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==" - "resolved" "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz" - "version" "4.0.3" - dependencies: - "abbrev" "1" - "osenv" "^0.1.4" - -"nopt@^5.0.0": - "integrity" "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==" - "resolved" "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "abbrev" "1" - -"normalize-package-data@^2.0.0": - "integrity" "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==" - "resolved" "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz" - "version" "2.5.0" - dependencies: - "hosted-git-info" "^2.1.4" - "resolve" "^1.10.0" - "semver" "2 || 3 || 4 || 5" - "validate-npm-package-license" "^3.0.1" - -"normalize-package-data@^2.3.2": - "integrity" "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==" - "resolved" "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz" - "version" "2.5.0" - dependencies: - "hosted-git-info" "^2.1.4" - "resolve" "^1.10.0" - "semver" "2 || 3 || 4 || 5" - "validate-npm-package-license" "^3.0.1" - -"normalize-package-data@^2.5.0": - "integrity" "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==" - "resolved" "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz" - "version" "2.5.0" - dependencies: - "hosted-git-info" "^2.1.4" - "resolve" "^1.10.0" - "semver" "2 || 3 || 4 || 5" - "validate-npm-package-license" "^3.0.1" - -"normalize-package-data@^3.0.0", "normalize-package-data@^3.0.2": - "integrity" "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==" - "resolved" "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz" - "version" "3.0.3" - dependencies: - "hosted-git-info" "^4.0.1" - "is-core-module" "^2.5.0" - "semver" "^7.3.4" - "validate-npm-package-license" "^3.0.1" - -"normalize-path@^3.0.0", "normalize-path@~3.0.0": - "integrity" "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - "resolved" "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" - "version" "3.0.0" - -"normalize-range@^0.1.2": - "integrity" "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==" - "resolved" "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz" - "version" "0.1.2" - -"normalize-url@^4.1.0": - "integrity" "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==" - "resolved" "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz" - "version" "4.5.1" - -"normalize-url@^6.0.1", "normalize-url@^6.1.0": - "integrity" "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==" - "resolved" "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz" - "version" "6.1.0" - -"npm-bundled@^1.1.1": - "integrity" "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==" - "resolved" "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz" - "version" "1.1.2" - dependencies: - "npm-normalize-package-bin" "^1.0.1" - -"npm-conf@^1.1.3": - "integrity" "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==" - "resolved" "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz" - "version" "1.1.3" - dependencies: - "config-chain" "^1.1.11" - "pify" "^3.0.0" - -"npm-install-checks@^4.0.0": - "integrity" "sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==" - "resolved" "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "semver" "^7.1.1" - -"npm-lifecycle@^3.1.5": - "integrity" "sha512-lDLVkjfZmvmfvpvBzA4vzee9cn+Me4orq0QF8glbswJVEbIcSNWib7qGOffolysc3teCqbbPZZkzbr3GQZTL1g==" - "resolved" "https://registry.npmjs.org/npm-lifecycle/-/npm-lifecycle-3.1.5.tgz" - "version" "3.1.5" - dependencies: - "byline" "^5.0.0" - "graceful-fs" "^4.1.15" - "node-gyp" "^5.0.2" - "resolve-from" "^4.0.0" - "slide" "^1.1.6" - "uid-number" "0.0.6" - "umask" "^1.1.0" - "which" "^1.3.1" - -"npm-normalize-package-bin@^1.0.0", "npm-normalize-package-bin@^1.0.1": - "integrity" "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==" - "resolved" "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz" - "version" "1.0.1" - -"npm-package-arg@^8.0.0", "npm-package-arg@^8.0.1", "npm-package-arg@^8.1.0", "npm-package-arg@^8.1.2", "npm-package-arg@^8.1.5": - "integrity" "sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==" - "resolved" "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz" - "version" "8.1.5" - dependencies: - "hosted-git-info" "^4.0.1" - "semver" "^7.3.4" - "validate-npm-package-name" "^3.0.0" - -"npm-packlist@^2.1.4": - "integrity" "sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg==" - "resolved" "https://registry.npmjs.org/npm-packlist/-/npm-packlist-2.2.2.tgz" - "version" "2.2.2" - dependencies: - "glob" "^7.1.6" - "ignore-walk" "^3.0.3" - "npm-bundled" "^1.1.1" - "npm-normalize-package-bin" "^1.0.1" - -"npm-pick-manifest@^6.0.0", "npm-pick-manifest@^6.1.1": - "integrity" "sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA==" - "resolved" "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz" - "version" "6.1.1" - dependencies: - "npm-install-checks" "^4.0.0" - "npm-normalize-package-bin" "^1.0.1" - "npm-package-arg" "^8.1.2" - "semver" "^7.3.4" - -"npm-registry-fetch@^11.0.0": - "integrity" "sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA==" - "resolved" "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz" - "version" "11.0.0" - dependencies: - "make-fetch-happen" "^9.0.1" - "minipass" "^3.1.3" - "minipass-fetch" "^1.3.0" - "minipass-json-stream" "^1.0.1" - "minizlib" "^2.0.0" - "npm-package-arg" "^8.0.0" - -"npm-registry-fetch@^9.0.0": - "integrity" "sha512-PuFYYtnQ8IyVl6ib9d3PepeehcUeHN9IO5N/iCRhyg9tStQcqGQBRVHmfmMWPDERU3KwZoHFvbJ4FPXPspvzbA==" - "resolved" "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-9.0.0.tgz" - "version" "9.0.0" - dependencies: - "@npmcli/ci-detect" "^1.0.0" - "lru-cache" "^6.0.0" - "make-fetch-happen" "^8.0.9" - "minipass" "^3.1.3" - "minipass-fetch" "^1.3.0" - "minipass-json-stream" "^1.0.1" - "minizlib" "^2.0.0" - "npm-package-arg" "^8.0.0" - -"npm-run-path@^2.0.0": - "integrity" "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==" - "resolved" "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "path-key" "^2.0.0" - -"npm-run-path@^4.0.0": - "integrity" "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==" - "resolved" "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" - "version" "4.0.1" - dependencies: - "path-key" "^3.0.0" - -"npm-run-path@^4.0.1": - "integrity" "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==" - "resolved" "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" - "version" "4.0.1" - dependencies: - "path-key" "^3.0.0" - -"npm-run-path@^5.1.0": - "integrity" "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==" - "resolved" "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz" - "version" "5.1.0" - dependencies: - "path-key" "^4.0.0" - -"npmlog@^4.1.2": - "integrity" "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==" - "resolved" "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz" - "version" "4.1.2" - dependencies: - "are-we-there-yet" "~1.1.2" - "console-control-strings" "~1.1.0" - "gauge" "~2.7.3" - "set-blocking" "~2.0.0" - -"npmlog@^5.0.1": - "integrity" "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==" - "resolved" "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz" - "version" "5.0.1" - dependencies: - "are-we-there-yet" "^2.0.0" - "console-control-strings" "^1.1.0" - "gauge" "^3.0.0" - "set-blocking" "^2.0.0" - -"npmlog@^6.0.0": - "integrity" "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==" - "resolved" "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz" - "version" "6.0.2" - dependencies: - "are-we-there-yet" "^3.0.0" - "console-control-strings" "^1.1.0" - "gauge" "^4.0.3" - "set-blocking" "^2.0.0" - -"nth-check@^1.0.2": - "integrity" "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==" - "resolved" "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "boolbase" "~1.0.0" - -"nth-check@^2.0.1": - "integrity" "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==" - "resolved" "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz" - "version" "2.1.1" - dependencies: - "boolbase" "^1.0.0" - -"nullthrows@^1.1.1": - "integrity" "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==" - "resolved" "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz" - "version" "1.1.1" - -"number-is-nan@^1.0.0": - "integrity" "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==" - "resolved" "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz" - "version" "1.0.1" - -"nwsapi@^2.2.0": - "integrity" "sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==" - "resolved" "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz" - "version" "2.2.7" - -"oauth-sign@~0.9.0": - "integrity" "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" - "resolved" "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz" - "version" "0.9.0" - -"object-assign@^4", "object-assign@^4.0.1", "object-assign@^4.1.0", "object-assign@^4.1.1": - "integrity" "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" - "resolved" "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" - "version" "4.1.1" - -"object-hash@^1.3.1": - "integrity" "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==" - "resolved" "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz" - "version" "1.3.1" - -"object-hash@^3.0.0", "object-hash@3.0.0": - "integrity" "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==" - "resolved" "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz" - "version" "3.0.0" - -"object-inspect@^1.12.2", "object-inspect@^1.12.3", "object-inspect@^1.9.0": - "integrity" "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==" - "resolved" "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz" - "version" "1.12.3" - -"object-keys@^1.1.1": - "integrity" "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" - "resolved" "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" - "version" "1.1.1" - -"object.assign@^4.1.0", "object.assign@^4.1.4": - "integrity" "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==" - "resolved" "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz" - "version" "4.1.4" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "has-symbols" "^1.0.3" - "object-keys" "^1.1.1" - -"object.entries@^1.1.5", "object.entries@^1.1.6": - "integrity" "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==" - "resolved" "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz" - "version" "1.1.7" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.2.0" - "es-abstract" "^1.22.1" - -"object.fromentries@^2.0.5", "object.fromentries@^2.0.6": - "integrity" "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==" - "resolved" "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz" - "version" "2.0.7" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.2.0" - "es-abstract" "^1.22.1" - -"object.getownpropertydescriptors@^2.0.3": - "integrity" "sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw==" - "resolved" "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz" - "version" "2.1.3" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.3" - "es-abstract" "^1.19.1" - -"object.getownpropertydescriptors@^2.1.0": - "integrity" "sha512-sccv3L/pMModT6dJAYF3fzGMVcb38ysQ0tEE6ixv2yXJDtEIPph268OlAdJj5/qZMZDq2g/jqvwppt36uS/uQQ==" - "resolved" "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.4.tgz" - "version" "2.1.4" - dependencies: - "array.prototype.reduce" "^1.0.4" - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.20.1" - -"object.groupby@^1.0.0": - "integrity" "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==" - "resolved" "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.2.0" - "es-abstract" "^1.22.1" - "get-intrinsic" "^1.2.1" - -"object.hasown@^1.1.1": - "integrity" "sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A==" - "resolved" "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.1.tgz" - "version" "1.1.1" - dependencies: - "define-properties" "^1.1.4" - "es-abstract" "^1.19.5" - -"object.values@^1.1.0", "object.values@^1.1.5", "object.values@^1.1.6": - "integrity" "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==" - "resolved" "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz" - "version" "1.1.7" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.2.0" - "es-abstract" "^1.22.1" - -"oblivious-set@1.0.0": - "integrity" "sha512-z+pI07qxo4c2CulUHCDf9lcqDlMSo72N/4rLUpRXf6fu+q8vjt8y0xS+Tlf8NTJDdTXHbdeO1n3MlbctwEoXZw==" - "resolved" "https://registry.npmjs.org/oblivious-set/-/oblivious-set-1.0.0.tgz" - "version" "1.0.0" - -"obuf@^1.0.0", "obuf@^1.1.2": - "integrity" "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" - "resolved" "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz" - "version" "1.1.2" - -"on-finished@2.4.1": - "integrity" "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==" - "resolved" "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" - "version" "2.4.1" - dependencies: - "ee-first" "1.1.1" - -"on-headers@~1.0.2": - "integrity" "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" - "resolved" "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz" - "version" "1.0.2" - -"once@^1.3.0", "once@^1.3.1", "once@^1.4.0", "once@1.4.0": - "integrity" "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==" - "resolved" "https://registry.npmjs.org/once/-/once-1.4.0.tgz" - "version" "1.4.0" - dependencies: - "wrappy" "1" - -"onetime@^5.1.0", "onetime@^5.1.2": - "integrity" "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==" - "resolved" "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" - "version" "5.1.2" - dependencies: - "mimic-fn" "^2.1.0" - -"onetime@^6.0.0": - "integrity" "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==" - "resolved" "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "mimic-fn" "^4.0.0" - -"open@^8.0.9", "open@^8.4.0": - "integrity" "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==" - "resolved" "https://registry.npmjs.org/open/-/open-8.4.2.tgz" - "version" "8.4.2" - dependencies: - "define-lazy-prop" "^2.0.0" - "is-docker" "^2.1.1" - "is-wsl" "^2.2.0" - -"optionator@^0.9.1", "optionator@^0.9.3": - "integrity" "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==" - "resolved" "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz" - "version" "0.9.3" - dependencies: - "@aashutoshrathi/word-wrap" "^1.2.3" - "deep-is" "^0.1.3" - "fast-levenshtein" "^2.0.6" - "levn" "^0.4.1" - "prelude-ls" "^1.2.1" - "type-check" "^0.4.0" - -"ora@^5.4.1", "ora@5.4.1": - "integrity" "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==" - "resolved" "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz" - "version" "5.4.1" - 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" - -"ordered-binary@^1.2.4": - "integrity" "sha512-knIeYepTI6BDAzGxqFEDGtI/iGqs57H32CInAIxEvAHG46vk1Di0CEpyc1A7iY39B1mfik3g3KLYwOTNnnMHLA==" - "resolved" "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.3.0.tgz" - "version" "1.3.0" - -"os-homedir@^1.0.0": - "integrity" "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==" - "resolved" "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz" - "version" "1.0.2" - -"os-name@4.0.1": - "integrity" "sha512-xl9MAoU97MH1Xt5K9ERft2YfCAoaO6msy1OBA0ozxEC0x0TmIoE6K3QvgJMMZA9yKGLmHXNY/YZoDbiGDj4zYw==" - "resolved" "https://registry.npmjs.org/os-name/-/os-name-4.0.1.tgz" - "version" "4.0.1" - dependencies: - "macos-release" "^2.5.0" - "windows-release" "^4.0.0" - -"os-tmpdir@^1.0.0", "os-tmpdir@~1.0.2": - "integrity" "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==" - "resolved" "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" - "version" "1.0.2" - -"osenv@^0.1.4": - "integrity" "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==" - "resolved" "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz" - "version" "0.1.5" - dependencies: - "os-homedir" "^1.0.0" - "os-tmpdir" "^1.0.0" - -"p-cancelable@^1.0.0": - "integrity" "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" - "resolved" "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz" - "version" "1.1.0" - -"p-finally@^1.0.0": - "integrity" "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==" - "resolved" "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz" - "version" "1.0.0" - -"p-limit@^1.1.0": - "integrity" "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==" - "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz" - "version" "1.3.0" - dependencies: - "p-try" "^1.0.0" - -"p-limit@^2.0.0", "p-limit@^2.2.0": - "integrity" "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==" - "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" - "version" "2.3.0" - dependencies: - "p-try" "^2.0.0" - -"p-limit@^3.0.2": - "integrity" "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==" - "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "yocto-queue" "^0.1.0" - -"p-locate@^2.0.0": - "integrity" "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==" - "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "p-limit" "^1.1.0" - -"p-locate@^3.0.0": - "integrity" "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==" - "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "p-limit" "^2.0.0" - -"p-locate@^4.1.0": - "integrity" "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==" - "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "p-limit" "^2.2.0" - -"p-locate@^5.0.0": - "integrity" "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==" - "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "p-limit" "^3.0.2" - -"p-map-series@^2.1.0": - "integrity" "sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q==" - "resolved" "https://registry.npmjs.org/p-map-series/-/p-map-series-2.1.0.tgz" - "version" "2.1.0" - -"p-map@^4.0.0": - "integrity" "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==" - "resolved" "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "aggregate-error" "^3.0.0" - -"p-pipe@^3.1.0": - "integrity" "sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw==" - "resolved" "https://registry.npmjs.org/p-pipe/-/p-pipe-3.1.0.tgz" - "version" "3.1.0" - -"p-queue@^6.6.2": - "integrity" "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==" - "resolved" "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz" - "version" "6.6.2" - dependencies: - "eventemitter3" "^4.0.4" - "p-timeout" "^3.2.0" - -"p-reduce@^2.0.0", "p-reduce@^2.1.0": - "integrity" "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==" - "resolved" "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz" - "version" "2.1.0" - -"p-retry@^4.5.0": - "integrity" "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==" - "resolved" "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz" - "version" "4.6.2" - dependencies: - "@types/retry" "0.12.0" - "retry" "^0.13.1" - -"p-timeout@^3.2.0": - "integrity" "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==" - "resolved" "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz" - "version" "3.2.0" - dependencies: - "p-finally" "^1.0.0" - -"p-try@^1.0.0": - "integrity" "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==" - "resolved" "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz" - "version" "1.0.0" - -"p-try@^2.0.0": - "integrity" "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" - "resolved" "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" - "version" "2.2.0" - -"p-waterfall@^2.1.1": - "integrity" "sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw==" - "resolved" "https://registry.npmjs.org/p-waterfall/-/p-waterfall-2.1.1.tgz" - "version" "2.1.1" - dependencies: - "p-reduce" "^2.0.0" - -"package-json@^6.3.0": - "integrity" "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==" - "resolved" "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz" - "version" "6.5.0" - dependencies: - "got" "^9.6.0" - "registry-auth-token" "^4.0.0" - "registry-url" "^5.0.0" - "semver" "^6.2.0" - -"pacote@^11.2.6": - "integrity" "sha512-fT375Yczn4zi+6Hkk2TBe1x1sP8FgFsEIZ2/iWaXY2r/NkhDJfxbcn5paz1+RTFCyNf+dPnaoBDJoAxXSU8Bkg==" - "resolved" "https://registry.npmjs.org/pacote/-/pacote-11.3.5.tgz" - "version" "11.3.5" - dependencies: - "@npmcli/git" "^2.1.0" - "@npmcli/installed-package-contents" "^1.0.6" - "@npmcli/promise-spawn" "^1.2.0" - "@npmcli/run-script" "^1.8.2" - "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" "^2.1.4" - "npm-pick-manifest" "^6.0.0" - "npm-registry-fetch" "^11.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" - -"param-case@^3.0.4": - "integrity" "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==" - "resolved" "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz" - "version" "3.0.4" - dependencies: - "dot-case" "^3.0.4" - "tslib" "^2.0.3" - -"parcel@^2.7.0": - "integrity" "sha512-pRYwnivwtNP0tip8xYSo4zCB0XhLt7/gJzP1p8OovCqkmFjG9VG+GW9TcAKqMIo0ovEa9tT+/s6gY1Qy+BONGQ==" - "resolved" "https://registry.npmjs.org/parcel/-/parcel-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "@parcel/config-default" "2.7.0" - "@parcel/core" "2.7.0" - "@parcel/diagnostic" "2.7.0" - "@parcel/events" "2.7.0" - "@parcel/fs" "2.7.0" - "@parcel/logger" "2.7.0" - "@parcel/package-manager" "2.7.0" - "@parcel/reporter-cli" "2.7.0" - "@parcel/reporter-dev-server" "2.7.0" - "@parcel/utils" "2.7.0" - "chalk" "^4.1.0" - "commander" "^7.0.0" - "get-port" "^4.2.0" - "v8-compile-cache" "^2.0.0" - -"parent-module@^1.0.0": - "integrity" "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==" - "resolved" "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "callsites" "^3.0.0" - -"parse-json@^4.0.0": - "integrity" "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==" - "resolved" "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "error-ex" "^1.3.1" - "json-parse-better-errors" "^1.0.1" - -"parse-json@^5.0.0", "parse-json@^5.2.0": - "integrity" "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==" - "resolved" "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" - "version" "5.2.0" - 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" - -"parse-path@^4.0.0": - "integrity" "sha512-9Cepbp2asKnWTJ9x2kpw6Fe8y9JDbqwahGCTvklzd/cEq5C5JC59x2Xb0Kx+x0QZ8bvNquGO8/BWP0cwBHzSAA==" - "resolved" "https://registry.npmjs.org/parse-path/-/parse-path-4.0.3.tgz" - "version" "4.0.3" - dependencies: - "is-ssh" "^1.3.0" - "protocols" "^1.4.0" - "qs" "^6.9.4" - "query-string" "^6.13.8" - -"parse-url@^6.0.0": - "integrity" "sha512-cYyojeX7yIIwuJzledIHeLUBVJ6COVLeT4eF+2P6aKVzwvgKQPndCBv3+yQ7pcWjqToYwaligxzSYNNmGoMAvw==" - "resolved" "https://registry.npmjs.org/parse-url/-/parse-url-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "is-ssh" "^1.3.0" - "normalize-url" "^6.1.0" - "parse-path" "^4.0.0" - "protocols" "^1.4.0" - -"parse5-htmlparser2-tree-adapter@^6.0.0": - "integrity" "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==" - "resolved" "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz" - "version" "6.0.1" - dependencies: - "parse5" "^6.0.1" - -"parse5@^5.1.1": - "integrity" "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==" - "resolved" "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz" - "version" "5.1.1" - -"parse5@^6.0.1", "parse5@6.0.1": - "integrity" "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" - "resolved" "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz" - "version" "6.0.1" - -"parseurl@~1.3.2", "parseurl@~1.3.3": - "integrity" "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - "resolved" "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" - "version" "1.3.3" - -"pascal-case@^3.1.2": - "integrity" "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==" - "resolved" "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz" - "version" "3.1.2" - dependencies: - "no-case" "^3.0.4" - "tslib" "^2.0.3" - -"path-exists@^3.0.0": - "integrity" "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==" - "resolved" "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz" - "version" "3.0.0" - -"path-exists@^4.0.0": - "integrity" "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" - "resolved" "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" - "version" "4.0.0" - -"path-is-absolute@^1.0.0": - "integrity" "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" - "resolved" "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" - "version" "1.0.1" - -"path-key@^2.0.0": - "integrity" "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==" - "resolved" "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" - "version" "2.0.1" - -"path-key@^3.0.0": - "integrity" "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" - "resolved" "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" - "version" "3.1.1" - -"path-key@^3.1.0": - "integrity" "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" - "resolved" "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" - "version" "3.1.1" - -"path-key@^4.0.0": - "integrity" "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==" - "resolved" "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz" - "version" "4.0.0" - -"path-parse@^1.0.7": - "integrity" "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - "resolved" "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" - "version" "1.0.7" - -"path-to-regexp@0.1.7": - "integrity" "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" - "resolved" "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz" - "version" "0.1.7" - -"path-to-regexp@0.2.5": - "integrity" "sha512-l6qtdDPIkmAmzEO6egquYDfqQGPMRNGjYtrU13HAXb3YSRrt7HSb1sJY0pKp6o2bAa86tSB6iwaW2JbthPKr7Q==" - "resolved" "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.2.5.tgz" - "version" "0.2.5" - -"path-to-regexp@3.2.0": - "integrity" "sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==" - "resolved" "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz" - "version" "3.2.0" - -"path-type@^3.0.0": - "integrity" "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==" - "resolved" "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "pify" "^3.0.0" - -"path-type@^4.0.0": - "integrity" "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" - "resolved" "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" - "version" "4.0.0" - -"pend@~1.2.0": - "integrity" "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" - "resolved" "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz" - "version" "1.2.0" - -"performance-now@^2.1.0": - "integrity" "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" - "resolved" "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz" - "version" "2.1.0" - -"picocolors@^0.2.1": - "integrity" "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==" - "resolved" "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz" - "version" "0.2.1" - -"picocolors@^1.0.0": - "integrity" "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - "resolved" "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" - "version" "1.0.0" - -"picomatch@^2.0.4", "picomatch@^2.2.1", "picomatch@^2.2.2", "picomatch@^2.2.3", "picomatch@^2.3.1": - "integrity" "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" - "resolved" "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" - "version" "2.3.1" - -"pidtree@^0.5.0": - "integrity" "sha512-9nxspIM7OpZuhBxPg73Zvyq7j1QMPMPsGKTqRc2XOaFQauDvoNz9fM1Wdkjmeo7l9GXOZiRs97sPkuayl39wjA==" - "resolved" "https://registry.npmjs.org/pidtree/-/pidtree-0.5.0.tgz" - "version" "0.5.0" - -"pidtree@^0.6.0": - "integrity" "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==" - "resolved" "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz" - "version" "0.6.0" - -"pify@^2.3.0": - "integrity" "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==" - "resolved" "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" - "version" "2.3.0" - -"pify@^3.0.0": - "integrity" "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==" - "resolved" "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz" - "version" "3.0.0" - -"pify@^4.0.1": - "integrity" "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" - "resolved" "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" - "version" "4.0.1" - -"pify@^5.0.0": - "integrity" "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==" - "resolved" "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz" - "version" "5.0.0" - -"pinkie-promise@^2.0.0": - "integrity" "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==" - "resolved" "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "pinkie" "^2.0.0" - -"pinkie@^2.0.0": - "integrity" "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==" - "resolved" "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" - "version" "2.0.4" - -"pirates@^4.0.1", "pirates@^4.0.4": - "integrity" "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==" - "resolved" "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz" - "version" "4.0.5" - -"pkg-dir@^4.1.0", "pkg-dir@^4.2.0": - "integrity" "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==" - "resolved" "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" - "version" "4.2.0" - dependencies: - "find-up" "^4.0.0" - -"pkg-up@^3.1.0": - "integrity" "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==" - "resolved" "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "find-up" "^3.0.0" - -"please-upgrade-node@^3.2.0": - "integrity" "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==" - "resolved" "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz" - "version" "3.2.0" - dependencies: - "semver-compare" "^1.0.0" - -"plist@^3.0.1", "plist@^3.0.4": - "integrity" "sha512-WiIVYyrp8TD4w8yCvyeIr+lkmrGRd5u0VbRnU+tP/aRLxP/YadJUYOMZJ/6hIa3oUyVCsycXvtNRgd5XBJIbiA==" - "resolved" "https://registry.npmjs.org/plist/-/plist-3.0.6.tgz" - "version" "3.0.6" - dependencies: - "base64-js" "^1.5.1" - "xmlbuilder" "^15.1.1" - -"pluralize@8.0.0": - "integrity" "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==" - "resolved" "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz" - "version" "8.0.0" - -"postcss-attribute-case-insensitive@^5.0.2": - "integrity" "sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==" - "resolved" "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz" - "version" "5.0.2" - dependencies: - "postcss-selector-parser" "^6.0.10" - -"postcss-browser-comments@^4": - "integrity" "sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg==" - "resolved" "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-4.0.0.tgz" - "version" "4.0.0" - -"postcss-calc@^8.2.3": - "integrity" "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==" - "resolved" "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz" - "version" "8.2.4" - dependencies: - "postcss-selector-parser" "^6.0.9" - "postcss-value-parser" "^4.2.0" - -"postcss-clamp@^4.1.0": - "integrity" "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==" - "resolved" "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "postcss-value-parser" "^4.2.0" - -"postcss-color-functional-notation@^4.2.4": - "integrity" "sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==" - "resolved" "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz" - "version" "4.2.4" - dependencies: - "postcss-value-parser" "^4.2.0" - -"postcss-color-hex-alpha@^8.0.4": - "integrity" "sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==" - "resolved" "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz" - "version" "8.0.4" - dependencies: - "postcss-value-parser" "^4.2.0" - -"postcss-color-rebeccapurple@^7.1.1": - "integrity" "sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==" - "resolved" "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz" - "version" "7.1.1" - dependencies: - "postcss-value-parser" "^4.2.0" - -"postcss-colormin@^5.3.1": - "integrity" "sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==" - "resolved" "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.1.tgz" - "version" "5.3.1" - dependencies: - "browserslist" "^4.21.4" - "caniuse-api" "^3.0.0" - "colord" "^2.9.1" - "postcss-value-parser" "^4.2.0" - -"postcss-convert-values@^5.1.3": - "integrity" "sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==" - "resolved" "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz" - "version" "5.1.3" - dependencies: - "browserslist" "^4.21.4" - "postcss-value-parser" "^4.2.0" - -"postcss-custom-media@^8.0.2": - "integrity" "sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==" - "resolved" "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz" - "version" "8.0.2" - dependencies: - "postcss-value-parser" "^4.2.0" - -"postcss-custom-properties@^12.1.10": - "integrity" "sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ==" - "resolved" "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.11.tgz" - "version" "12.1.11" - dependencies: - "postcss-value-parser" "^4.2.0" - -"postcss-custom-selectors@^6.0.3": - "integrity" "sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==" - "resolved" "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz" - "version" "6.0.3" - dependencies: - "postcss-selector-parser" "^6.0.4" - -"postcss-dir-pseudo-class@^6.0.5": - "integrity" "sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==" - "resolved" "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz" - "version" "6.0.5" - dependencies: - "postcss-selector-parser" "^6.0.10" - -"postcss-discard-comments@^5.1.2": - "integrity" "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==" - "resolved" "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz" - "version" "5.1.2" - -"postcss-discard-duplicates@^5.1.0": - "integrity" "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==" - "resolved" "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz" - "version" "5.1.0" - -"postcss-discard-empty@^5.1.1": - "integrity" "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==" - "resolved" "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz" - "version" "5.1.1" - -"postcss-discard-overridden@^5.1.0": - "integrity" "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==" - "resolved" "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz" - "version" "5.1.0" - -"postcss-double-position-gradients@^3.1.2": - "integrity" "sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==" - "resolved" "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz" - "version" "3.1.2" - dependencies: - "@csstools/postcss-progressive-custom-properties" "^1.1.0" - "postcss-value-parser" "^4.2.0" - -"postcss-env-function@^4.0.6": - "integrity" "sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==" - "resolved" "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-4.0.6.tgz" - "version" "4.0.6" - dependencies: - "postcss-value-parser" "^4.2.0" - -"postcss-flexbugs-fixes@^5.0.2": - "integrity" "sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ==" - "resolved" "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz" - "version" "5.0.2" - -"postcss-focus-visible@^6.0.4": - "integrity" "sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==" - "resolved" "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz" - "version" "6.0.4" - dependencies: - "postcss-selector-parser" "^6.0.9" - -"postcss-focus-within@^5.0.4": - "integrity" "sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==" - "resolved" "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz" - "version" "5.0.4" - dependencies: - "postcss-selector-parser" "^6.0.9" - -"postcss-font-variant@^5.0.0": - "integrity" "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==" - "resolved" "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz" - "version" "5.0.0" - -"postcss-gap-properties@^3.0.5": - "integrity" "sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==" - "resolved" "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz" - "version" "3.0.5" - -"postcss-image-set-function@^4.0.7": - "integrity" "sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==" - "resolved" "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz" - "version" "4.0.7" - dependencies: - "postcss-value-parser" "^4.2.0" - -"postcss-import@^15.1.0": - "integrity" "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==" - "resolved" "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz" - "version" "15.1.0" - dependencies: - "postcss-value-parser" "^4.0.0" - "read-cache" "^1.0.0" - "resolve" "^1.1.7" - -"postcss-initial@^4.0.1": - "integrity" "sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==" - "resolved" "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz" - "version" "4.0.1" - -"postcss-js@^4.0.1": - "integrity" "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==" - "resolved" "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz" - "version" "4.0.1" - dependencies: - "camelcase-css" "^2.0.1" - -"postcss-lab-function@^4.2.1": - "integrity" "sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==" - "resolved" "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz" - "version" "4.2.1" - dependencies: - "@csstools/postcss-progressive-custom-properties" "^1.1.0" - "postcss-value-parser" "^4.2.0" - -"postcss-load-config@^4.0.1": - "integrity" "sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==" - "resolved" "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.1.tgz" - "version" "4.0.1" - dependencies: - "lilconfig" "^2.0.5" - "yaml" "^2.1.1" - -"postcss-loader@^6.2.1": - "integrity" "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==" - "resolved" "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz" - "version" "6.2.1" - dependencies: - "cosmiconfig" "^7.0.0" - "klona" "^2.0.5" - "semver" "^7.3.5" - -"postcss-logical@^5.0.4": - "integrity" "sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==" - "resolved" "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz" - "version" "5.0.4" - -"postcss-media-minmax@^5.0.0": - "integrity" "sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==" - "resolved" "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz" - "version" "5.0.0" - -"postcss-merge-longhand@^5.1.7": - "integrity" "sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==" - "resolved" "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz" - "version" "5.1.7" - dependencies: - "postcss-value-parser" "^4.2.0" - "stylehacks" "^5.1.1" - -"postcss-merge-rules@^5.1.4": - "integrity" "sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==" - "resolved" "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz" - "version" "5.1.4" - dependencies: - "browserslist" "^4.21.4" - "caniuse-api" "^3.0.0" - "cssnano-utils" "^3.1.0" - "postcss-selector-parser" "^6.0.5" - -"postcss-minify-font-values@^5.1.0": - "integrity" "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==" - "resolved" "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz" - "version" "5.1.0" - dependencies: - "postcss-value-parser" "^4.2.0" - -"postcss-minify-gradients@^5.1.1": - "integrity" "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==" - "resolved" "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz" - "version" "5.1.1" - dependencies: - "colord" "^2.9.1" - "cssnano-utils" "^3.1.0" - "postcss-value-parser" "^4.2.0" - -"postcss-minify-params@^5.1.4": - "integrity" "sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==" - "resolved" "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz" - "version" "5.1.4" - dependencies: - "browserslist" "^4.21.4" - "cssnano-utils" "^3.1.0" - "postcss-value-parser" "^4.2.0" - -"postcss-minify-selectors@^5.2.1": - "integrity" "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==" - "resolved" "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz" - "version" "5.2.1" - dependencies: - "postcss-selector-parser" "^6.0.5" - -"postcss-modules-extract-imports@^3.0.0": - "integrity" "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==" - "resolved" "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz" - "version" "3.0.0" - -"postcss-modules-local-by-default@^4.0.3": - "integrity" "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==" - "resolved" "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz" - "version" "4.0.3" - dependencies: - "icss-utils" "^5.0.0" - "postcss-selector-parser" "^6.0.2" - "postcss-value-parser" "^4.1.0" - -"postcss-modules-scope@^3.0.0": - "integrity" "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==" - "resolved" "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "postcss-selector-parser" "^6.0.4" - -"postcss-modules-values@^4.0.0": - "integrity" "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==" - "resolved" "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "icss-utils" "^5.0.0" - -"postcss-nested@^6.0.1": - "integrity" "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==" - "resolved" "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz" - "version" "6.0.1" - dependencies: - "postcss-selector-parser" "^6.0.11" - -"postcss-nesting@^10.2.0": - "integrity" "sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==" - "resolved" "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.2.0.tgz" - "version" "10.2.0" - dependencies: - "@csstools/selector-specificity" "^2.0.0" - "postcss-selector-parser" "^6.0.10" - -"postcss-normalize-charset@^5.1.0": - "integrity" "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==" - "resolved" "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz" - "version" "5.1.0" - -"postcss-normalize-display-values@^5.1.0": - "integrity" "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==" - "resolved" "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz" - "version" "5.1.0" - dependencies: - "postcss-value-parser" "^4.2.0" - -"postcss-normalize-positions@^5.1.1": - "integrity" "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==" - "resolved" "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz" - "version" "5.1.1" - dependencies: - "postcss-value-parser" "^4.2.0" - -"postcss-normalize-repeat-style@^5.1.1": - "integrity" "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==" - "resolved" "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz" - "version" "5.1.1" - dependencies: - "postcss-value-parser" "^4.2.0" - -"postcss-normalize-string@^5.1.0": - "integrity" "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==" - "resolved" "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz" - "version" "5.1.0" - dependencies: - "postcss-value-parser" "^4.2.0" - -"postcss-normalize-timing-functions@^5.1.0": - "integrity" "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==" - "resolved" "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz" - "version" "5.1.0" - dependencies: - "postcss-value-parser" "^4.2.0" - -"postcss-normalize-unicode@^5.1.1": - "integrity" "sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==" - "resolved" "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz" - "version" "5.1.1" - dependencies: - "browserslist" "^4.21.4" - "postcss-value-parser" "^4.2.0" - -"postcss-normalize-url@^5.1.0": - "integrity" "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==" - "resolved" "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz" - "version" "5.1.0" - dependencies: - "normalize-url" "^6.0.1" - "postcss-value-parser" "^4.2.0" - -"postcss-normalize-whitespace@^5.1.1": - "integrity" "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==" - "resolved" "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz" - "version" "5.1.1" - dependencies: - "postcss-value-parser" "^4.2.0" - -"postcss-normalize@^10.0.1": - "integrity" "sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA==" - "resolved" "https://registry.npmjs.org/postcss-normalize/-/postcss-normalize-10.0.1.tgz" - "version" "10.0.1" - dependencies: - "@csstools/normalize.css" "*" - "postcss-browser-comments" "^4" - "sanitize.css" "*" - -"postcss-opacity-percentage@^1.1.2": - "integrity" "sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A==" - "resolved" "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.3.tgz" - "version" "1.1.3" - -"postcss-ordered-values@^5.1.3": - "integrity" "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==" - "resolved" "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz" - "version" "5.1.3" - dependencies: - "cssnano-utils" "^3.1.0" - "postcss-value-parser" "^4.2.0" - -"postcss-overflow-shorthand@^3.0.4": - "integrity" "sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==" - "resolved" "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz" - "version" "3.0.4" - dependencies: - "postcss-value-parser" "^4.2.0" - -"postcss-page-break@^3.0.4": - "integrity" "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==" - "resolved" "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz" - "version" "3.0.4" - -"postcss-place@^7.0.5": - "integrity" "sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==" - "resolved" "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.5.tgz" - "version" "7.0.5" - dependencies: - "postcss-value-parser" "^4.2.0" - -"postcss-preset-env@^7.0.1": - "integrity" "sha512-T1LgRm5uEVFSEF83vHZJV2z19lHg4yJuZ6gXZZkqVsqv63nlr6zabMH3l4Pc01FQCyfWVrh2GaUeCVy9Po+Aag==" - "resolved" "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.8.3.tgz" - "version" "7.8.3" - dependencies: - "@csstools/postcss-cascade-layers" "^1.1.1" - "@csstools/postcss-color-function" "^1.1.1" - "@csstools/postcss-font-format-keywords" "^1.0.1" - "@csstools/postcss-hwb-function" "^1.0.2" - "@csstools/postcss-ic-unit" "^1.0.1" - "@csstools/postcss-is-pseudo-class" "^2.0.7" - "@csstools/postcss-nested-calc" "^1.0.0" - "@csstools/postcss-normalize-display-values" "^1.0.1" - "@csstools/postcss-oklab-function" "^1.1.1" - "@csstools/postcss-progressive-custom-properties" "^1.3.0" - "@csstools/postcss-stepped-value-functions" "^1.0.1" - "@csstools/postcss-text-decoration-shorthand" "^1.0.0" - "@csstools/postcss-trigonometric-functions" "^1.0.2" - "@csstools/postcss-unset-value" "^1.0.2" - "autoprefixer" "^10.4.13" - "browserslist" "^4.21.4" - "css-blank-pseudo" "^3.0.3" - "css-has-pseudo" "^3.0.4" - "css-prefers-color-scheme" "^6.0.3" - "cssdb" "^7.1.0" - "postcss-attribute-case-insensitive" "^5.0.2" - "postcss-clamp" "^4.1.0" - "postcss-color-functional-notation" "^4.2.4" - "postcss-color-hex-alpha" "^8.0.4" - "postcss-color-rebeccapurple" "^7.1.1" - "postcss-custom-media" "^8.0.2" - "postcss-custom-properties" "^12.1.10" - "postcss-custom-selectors" "^6.0.3" - "postcss-dir-pseudo-class" "^6.0.5" - "postcss-double-position-gradients" "^3.1.2" - "postcss-env-function" "^4.0.6" - "postcss-focus-visible" "^6.0.4" - "postcss-focus-within" "^5.0.4" - "postcss-font-variant" "^5.0.0" - "postcss-gap-properties" "^3.0.5" - "postcss-image-set-function" "^4.0.7" - "postcss-initial" "^4.0.1" - "postcss-lab-function" "^4.2.1" - "postcss-logical" "^5.0.4" - "postcss-media-minmax" "^5.0.0" - "postcss-nesting" "^10.2.0" - "postcss-opacity-percentage" "^1.1.2" - "postcss-overflow-shorthand" "^3.0.4" - "postcss-page-break" "^3.0.4" - "postcss-place" "^7.0.5" - "postcss-pseudo-class-any-link" "^7.1.6" - "postcss-replace-overflow-wrap" "^4.0.0" - "postcss-selector-not" "^6.0.1" - "postcss-value-parser" "^4.2.0" - -"postcss-pseudo-class-any-link@^7.1.6": - "integrity" "sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==" - "resolved" "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz" - "version" "7.1.6" - dependencies: - "postcss-selector-parser" "^6.0.10" - -"postcss-reduce-initial@^5.1.2": - "integrity" "sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==" - "resolved" "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz" - "version" "5.1.2" - dependencies: - "browserslist" "^4.21.4" - "caniuse-api" "^3.0.0" - -"postcss-reduce-transforms@^5.1.0": - "integrity" "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==" - "resolved" "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz" - "version" "5.1.0" - dependencies: - "postcss-value-parser" "^4.2.0" - -"postcss-replace-overflow-wrap@^4.0.0": - "integrity" "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==" - "resolved" "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz" - "version" "4.0.0" - -"postcss-selector-not@^6.0.1": - "integrity" "sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ==" - "resolved" "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz" - "version" "6.0.1" - dependencies: - "postcss-selector-parser" "^6.0.10" - -"postcss-selector-parser@^6.0.10", "postcss-selector-parser@^6.0.11", "postcss-selector-parser@^6.0.2", "postcss-selector-parser@^6.0.4", "postcss-selector-parser@^6.0.5", "postcss-selector-parser@^6.0.9": - "integrity" "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==" - "resolved" "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz" - "version" "6.0.13" - dependencies: - "cssesc" "^3.0.0" - "util-deprecate" "^1.0.2" - -"postcss-svgo@^5.1.0": - "integrity" "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==" - "resolved" "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz" - "version" "5.1.0" - dependencies: - "postcss-value-parser" "^4.2.0" - "svgo" "^2.7.0" - -"postcss-unique-selectors@^5.1.1": - "integrity" "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==" - "resolved" "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz" - "version" "5.1.1" - dependencies: - "postcss-selector-parser" "^6.0.5" - -"postcss-value-parser@^4.0.0", "postcss-value-parser@^4.1.0", "postcss-value-parser@^4.2.0": - "integrity" "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" - "resolved" "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" - "version" "4.2.0" - -"postcss@^7.0.0 || ^8.0.1", "postcss@^8", "postcss@^8.0.0", "postcss@^8.0.3", "postcss@^8.0.9", "postcss@^8.1.0", "postcss@^8.1.4", "postcss@^8.2", "postcss@^8.2.14", "postcss@^8.2.15", "postcss@^8.2.2", "postcss@^8.3", "postcss@^8.3.11", "postcss@^8.3.5", "postcss@^8.4", "postcss@^8.4.21", "postcss@^8.4.23", "postcss@^8.4.4", "postcss@^8.4.6", "postcss@>= 8", "postcss@>=8", "postcss@>=8.0.9": - "integrity" "sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==" - "resolved" "https://registry.npmjs.org/postcss/-/postcss-8.4.29.tgz" - "version" "8.4.29" - dependencies: - "nanoid" "^3.3.6" - "picocolors" "^1.0.0" - "source-map-js" "^1.0.2" - -"postcss@^7.0.35": - "integrity" "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==" - "resolved" "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz" - "version" "7.0.39" - dependencies: - "picocolors" "^0.2.1" - "source-map" "^0.6.1" - -"posthtml-parser@^0.10.1": - "integrity" "sha512-PId6zZ/2lyJi9LiKfe+i2xv57oEjJgWbsHGGANwos5AvdQp98i6AtamAl8gzSVFGfQ43Glb5D614cvZf012VKg==" - "resolved" "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.10.2.tgz" - "version" "0.10.2" - dependencies: - "htmlparser2" "^7.1.1" - -"posthtml-parser@^0.11.0": - "integrity" "sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw==" - "resolved" "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.11.0.tgz" - "version" "0.11.0" - dependencies: - "htmlparser2" "^7.1.1" - -"posthtml-render@^3.0.0": - "integrity" "sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA==" - "resolved" "https://registry.npmjs.org/posthtml-render/-/posthtml-render-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "is-json" "^2.0.1" - -"posthtml@^0.16.4", "posthtml@^0.16.5": - "integrity" "sha512-JcEmHlyLK/o0uGAlj65vgg+7LIms0xKXe60lcDOTU7oVX/3LuEuLwrQpW3VJ7de5TaFKiW4kWkaIpJL42FEgxQ==" - "resolved" "https://registry.npmjs.org/posthtml/-/posthtml-0.16.6.tgz" - "version" "0.16.6" - dependencies: - "posthtml-parser" "^0.11.0" - "posthtml-render" "^3.0.0" - -"prelude-ls@^1.2.1": - "integrity" "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" - "resolved" "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" - "version" "1.2.1" - -"prepend-http@^2.0.0": - "integrity" "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==" - "resolved" "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz" - "version" "2.0.0" - -"prettier-linter-helpers@^1.0.0": - "integrity" "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==" - "resolved" "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "fast-diff" "^1.1.2" - -"prettier@^2.3.2", "prettier@^2.4.1", "prettier@^2.5.1", "prettier@>=1.13.0", "prettier@>=2.0.0": - "integrity" "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==" - "resolved" "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz" - "version" "2.7.1" - -"pretty-bytes@^5.3.0", "pretty-bytes@^5.4.1": - "integrity" "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==" - "resolved" "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz" - "version" "5.6.0" - -"pretty-error@^4.0.0": - "integrity" "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==" - "resolved" "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "lodash" "^4.17.20" - "renderkid" "^3.0.0" - -"pretty-format@^26.0.0", "pretty-format@^26.6.2": - "integrity" "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==" - "resolved" "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz" - "version" "26.6.2" - dependencies: - "@jest/types" "^26.6.2" - "ansi-regex" "^5.0.0" - "ansi-styles" "^4.0.0" - "react-is" "^17.0.1" - -"pretty-format@^27.0.0": - "integrity" "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==" - "resolved" "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "ansi-regex" "^5.0.1" - "ansi-styles" "^5.0.0" - "react-is" "^17.0.1" - -"pretty-format@^27.5.1": - "integrity" "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==" - "resolved" "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "ansi-regex" "^5.0.1" - "ansi-styles" "^5.0.0" - "react-is" "^17.0.1" - -"pretty-format@^28.0.0", "pretty-format@^28.1.3": - "integrity" "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==" - "resolved" "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz" - "version" "28.1.3" - dependencies: - "@jest/schemas" "^28.1.3" - "ansi-regex" "^5.0.1" - "ansi-styles" "^5.0.0" - "react-is" "^18.0.0" - -"prismjs@^1.25.0": - "integrity" "sha512-8aaXdYvl1F7iC7Xm1spqSaY/OJBpYW3v+KJ+F17iYxvdc8sfjW194COK5wVhMZX45tGteiBQgdvD/nhxcRwylw==" - "resolved" "https://registry.npmjs.org/prismjs/-/prismjs-1.28.0.tgz" - "version" "1.28.0" - -"process-nextick-args@~2.0.0": - "integrity" "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - "resolved" "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" - "version" "2.0.1" - -"progress@^2.0.0", "progress@^2.0.3": - "integrity" "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" - "resolved" "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz" - "version" "2.0.3" - -"promise-inflight@^1.0.1": - "integrity" "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==" - "resolved" "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz" - "version" "1.0.1" - -"promise-retry@^2.0.1": - "integrity" "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==" - "resolved" "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "err-code" "^2.0.2" - "retry" "^0.12.0" - -"promise@^7.1.1": - "integrity" "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==" - "resolved" "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz" - "version" "7.3.1" - dependencies: - "asap" "~2.0.3" - -"promise@^8.1.0": - "integrity" "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==" - "resolved" "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz" - "version" "8.3.0" - dependencies: - "asap" "~2.0.6" - -"prompts@^2.0.1", "prompts@^2.4.2": - "integrity" "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==" - "resolved" "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz" - "version" "2.4.2" - dependencies: - "kleur" "^3.0.3" - "sisteransi" "^1.0.5" - -"promzard@^0.3.0": - "integrity" "sha512-JZeYqd7UAcHCwI+sTOeUDYkvEU+1bQ7iE0UT1MgB/tERkAPkesW46MrpIySzODi+owTjZtiF8Ay5j9m60KmMBw==" - "resolved" "https://registry.npmjs.org/promzard/-/promzard-0.3.0.tgz" - "version" "0.3.0" - dependencies: - "read" "1" - -"prop-types@^15.7.2", "prop-types@^15.8.1": - "integrity" "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==" - "resolved" "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" - "version" "15.8.1" - dependencies: - "loose-envify" "^1.4.0" - "object-assign" "^4.1.1" - "react-is" "^16.13.1" - -"property-expr@^2.0.4": - "integrity" "sha512-IJUkICM5dP5znhCckHSv30Q4b5/JA5enCtkRHYaOVOAocnH/1BQEYTC5NMfT3AVl/iXKdr3aqQbQn9DxyWknwA==" - "resolved" "https://registry.npmjs.org/property-expr/-/property-expr-2.0.5.tgz" - "version" "2.0.5" - -"proto-list@~1.2.1": - "integrity" "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==" - "resolved" "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz" - "version" "1.2.4" - -"protobufjs@^6.11.3", "protobufjs@^6.8.8": - "integrity" "sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==" - "resolved" "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.3.tgz" - "version" "6.11.3" - dependencies: - "@protobufjs/aspromise" "^1.1.2" - "@protobufjs/base64" "^1.1.2" - "@protobufjs/codegen" "^2.0.4" - "@protobufjs/eventemitter" "^1.1.0" - "@protobufjs/fetch" "^1.1.0" - "@protobufjs/float" "^1.0.2" - "@protobufjs/inquire" "^1.1.0" - "@protobufjs/path" "^1.1.2" - "@protobufjs/pool" "^1.1.0" - "@protobufjs/utf8" "^1.1.0" - "@types/long" "^4.0.1" - "@types/node" ">=13.7.0" - "long" "^4.0.0" - -"protobufjs@^7.0.0": - "integrity" "sha512-rCuxKlh0UQKSMjrpIcTLbR5TtGQ52cgs1a5nUoPBAKOccdPblN67BJtjrbtudUJK6HmBvUdsmymyYOzO7lxZEA==" - "resolved" "https://registry.npmjs.org/protobufjs/-/protobufjs-7.1.0.tgz" - "version" "7.1.0" - dependencies: - "@protobufjs/aspromise" "^1.1.2" - "@protobufjs/base64" "^1.1.2" - "@protobufjs/codegen" "^2.0.4" - "@protobufjs/eventemitter" "^1.1.0" - "@protobufjs/fetch" "^1.1.0" - "@protobufjs/float" "^1.0.2" - "@protobufjs/inquire" "^1.1.0" - "@protobufjs/path" "^1.1.2" - "@protobufjs/pool" "^1.1.0" - "@protobufjs/utf8" "^1.1.0" - "@types/node" ">=13.7.0" - "long" "^5.0.0" - -"protocols@^1.1.0", "protocols@^1.4.0": - "integrity" "sha512-IgjKyaUSjsROSO8/D49Ab7hP8mJgTYcqApOqdPhLoPxAplXmkp+zRvsrSQjFn5by0rhm4VH0GAUELIPpx7B1yg==" - "resolved" "https://registry.npmjs.org/protocols/-/protocols-1.4.8.tgz" - "version" "1.4.8" - -"proxy-addr@~2.0.7": - "integrity" "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==" - "resolved" "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz" - "version" "2.0.7" - dependencies: - "forwarded" "0.2.0" - "ipaddr.js" "1.9.1" - -"pseudomap@^1.0.2": - "integrity" "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==" - "resolved" "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz" - "version" "1.0.2" - -"psl@^1.1.28", "psl@^1.1.33": - "integrity" "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" - "resolved" "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz" - "version" "1.9.0" - -"pump@^3.0.0": - "integrity" "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==" - "resolved" "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "end-of-stream" "^1.1.0" - "once" "^1.3.1" - -"punycode@^2.1.0", "punycode@^2.1.1": - "integrity" "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - "resolved" "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" - "version" "2.1.1" - -"pupa@^2.1.1": - "integrity" "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==" - "resolved" "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz" - "version" "2.1.1" - dependencies: - "escape-goat" "^2.0.0" - -"pure-color@^1.2.0": - "integrity" "sha512-QFADYnsVoBMw1srW7OVKEYjG+MbIa49s54w1MA1EDY6r2r/sTcKKYqRX1f4GYvnXP7eN/Pe9HFcX+hwzmrXRHA==" - "resolved" "https://registry.npmjs.org/pure-color/-/pure-color-1.3.0.tgz" - "version" "1.3.0" - -"q@^1.1.2", "q@^1.5.1": - "integrity" "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==" - "resolved" "https://registry.npmjs.org/q/-/q-1.5.1.tgz" - "version" "1.5.1" - -"qs@^6.10.3": - "integrity" "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==" - "resolved" "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz" - "version" "6.11.0" - dependencies: - "side-channel" "^1.0.4" - -"qs@^6.9.4": - "integrity" "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==" - "resolved" "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz" - "version" "6.10.1" - dependencies: - "side-channel" "^1.0.4" - -"qs@~6.5.2": - "integrity" "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" - "resolved" "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz" - "version" "6.5.2" - -"qs@6.10.3": - "integrity" "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==" - "resolved" "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz" - "version" "6.10.3" - dependencies: - "side-channel" "^1.0.4" - -"qs@6.9.3": - "integrity" "sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw==" - "resolved" "https://registry.npmjs.org/qs/-/qs-6.9.3.tgz" - "version" "6.9.3" - -"query-string@^6.13.8": - "integrity" "sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==" - "resolved" "https://registry.npmjs.org/query-string/-/query-string-6.14.1.tgz" - "version" "6.14.1" - dependencies: - "decode-uri-component" "^0.2.0" - "filter-obj" "^1.1.0" - "split-on-first" "^1.0.0" - "strict-uri-encode" "^2.0.0" - -"querystringify@^2.1.1": - "integrity" "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" - "resolved" "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz" - "version" "2.2.0" - -"queue-microtask@^1.2.2", "queue-microtask@1.2.3": - "integrity" "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" - "resolved" "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" - "version" "1.2.3" - -"quick-lru@^4.0.1": - "integrity" "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==" - "resolved" "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz" - "version" "4.0.1" - -"raf@^3.4.1": - "integrity" "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==" - "resolved" "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz" - "version" "3.4.1" - dependencies: - "performance-now" "^2.1.0" - -"randombytes@^2.1.0": - "integrity" "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==" - "resolved" "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "safe-buffer" "^5.1.0" - -"range-parser@^1.2.1", "range-parser@~1.2.1": - "integrity" "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" - "resolved" "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" - "version" "1.2.1" - -"raw-body@2.5.1": - "integrity" "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==" - "resolved" "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz" - "version" "2.5.1" - dependencies: - "bytes" "3.1.2" - "http-errors" "2.0.0" - "iconv-lite" "0.4.24" - "unpipe" "1.0.0" - -"rc@^1.2.8", "rc@1.2.8": - "integrity" "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==" - "resolved" "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz" - "version" "1.2.8" - dependencies: - "deep-extend" "^0.6.0" - "ini" "~1.3.0" - "minimist" "^1.2.0" - "strip-json-comments" "~2.0.1" - -"react-app-polyfill@^3.0.0": - "integrity" "sha512-sZ41cxiU5llIB003yxxQBYrARBqe0repqPTTYBTmMqTz9szeBbE37BehCE891NZsmdZqqP+xWKdT3eo3vOzN8w==" - "resolved" "https://registry.npmjs.org/react-app-polyfill/-/react-app-polyfill-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "core-js" "^3.19.2" - "object-assign" "^4.1.1" - "promise" "^8.1.0" - "raf" "^3.4.1" - "regenerator-runtime" "^0.13.9" - "whatwg-fetch" "^3.6.2" - -"react-base16-styling@^0.6.0": - "integrity" "sha512-yvh/7CArceR/jNATXOKDlvTnPKPmGZz7zsenQ3jUwLzHkNUR0CvY3yGYJbWJ/nnxsL8Sgmt5cO3/SILVuPO6TQ==" - "resolved" "https://registry.npmjs.org/react-base16-styling/-/react-base16-styling-0.6.0.tgz" - "version" "0.6.0" - dependencies: - "base16" "^1.0.0" - "lodash.curry" "^4.0.1" - "lodash.flow" "^3.3.0" - "pure-color" "^1.2.0" - -"react-dev-utils@^12.0.0": - "integrity" "sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==" - "resolved" "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz" - "version" "12.0.1" - dependencies: - "@babel/code-frame" "^7.16.0" - "address" "^1.1.2" - "browserslist" "^4.18.1" - "chalk" "^4.1.2" - "cross-spawn" "^7.0.3" - "detect-port-alt" "^1.1.6" - "escape-string-regexp" "^4.0.0" - "filesize" "^8.0.6" - "find-up" "^5.0.0" - "fork-ts-checker-webpack-plugin" "^6.5.0" - "global-modules" "^2.0.0" - "globby" "^11.0.4" - "gzip-size" "^6.0.0" - "immer" "^9.0.7" - "is-root" "^2.1.0" - "loader-utils" "^3.2.0" - "open" "^8.4.0" - "pkg-up" "^3.1.0" - "prompts" "^2.4.2" - "react-error-overlay" "^6.0.11" - "recursive-readdir" "^2.2.2" - "shell-quote" "^1.7.3" - "strip-ansi" "^6.0.1" - "text-table" "^0.2.0" - -"react-dom@*", "react-dom@^16.3.0 || 17", "react-dom@^16.8.0 || ^17.0.0 || ^18.0.0", "react-dom@^17.0.0 || ^16.3.0 || ^15.5.4", "react-dom@^17.0.2", "react-dom@>=16", "react-dom@>=16.14.0", "react-dom@>=16.8", "react-dom@>=16.8.0": - "integrity" "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==" - "resolved" "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz" - "version" "17.0.2" - dependencies: - "loose-envify" "^1.1.0" - "object-assign" "^4.1.1" - "scheduler" "^0.20.2" - -"react-error-overlay@^6.0.11": - "integrity" "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==" - "resolved" "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz" - "version" "6.0.11" - -"react-error-overlay@6.0.9": - "integrity" "sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==" - "resolved" "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.9.tgz" - "version" "6.0.9" - -"react-fast-compare@^2.0.1": - "integrity" "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==" - "resolved" "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz" - "version" "2.0.4" - -"react-fast-compare@^3.1.1": - "integrity" "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==" - "resolved" "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz" - "version" "3.2.2" - -"react-helmet@^6.1.0": - "integrity" "sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw==" - "resolved" "https://registry.npmjs.org/react-helmet/-/react-helmet-6.1.0.tgz" - "version" "6.1.0" - dependencies: - "object-assign" "^4.1.1" - "prop-types" "^15.7.2" - "react-fast-compare" "^3.1.1" - "react-side-effect" "^2.1.0" - -"react-hot-toast@^2.1.1": - "integrity" "sha512-/RxV+bfjld7tSJR1SCLzMAXgFuNW7fCpK6+vbYqfmbGSWcqTMz2rizrvfWKvtcPH5HK0NqxmBaC5SrAy1F42zA==" - "resolved" "https://registry.npmjs.org/react-hot-toast/-/react-hot-toast-2.3.0.tgz" - "version" "2.3.0" - dependencies: - "goober" "^2.1.10" - -"react-icons@^4.11.0": - "integrity" "sha512-V+4khzYcE5EBk/BvcuYRq6V/osf11ODUM2J8hg2FDSswRrGvqiYUYPRy4OdrWaQOBj4NcpJfmHZLNaD+VH0TyA==" - "resolved" "https://registry.npmjs.org/react-icons/-/react-icons-4.11.0.tgz" - "version" "4.11.0" - -"react-is@^16.13.1", "react-is@^16.7.0": - "integrity" "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - "resolved" "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" - "version" "16.13.1" - -"react-is@^17.0.1": - "integrity" "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" - "resolved" "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" - "version" "17.0.2" - -"react-is@^18.0.0": - "integrity" "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" - "resolved" "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz" - "version" "18.2.0" - -"react-json-view@^1.21.3": - "integrity" "sha512-13p8IREj9/x/Ye4WI/JpjhoIwuzEgUAtgJZNBJckfzJt1qyh24BdTm6UQNGnyTq9dapQdrqvquZTo3dz1X6Cjw==" - "resolved" "https://registry.npmjs.org/react-json-view/-/react-json-view-1.21.3.tgz" - "version" "1.21.3" - dependencies: - "flux" "^4.0.1" - "react-base16-styling" "^0.6.0" - "react-lifecycles-compat" "^3.0.4" - "react-textarea-autosize" "^8.3.2" - -"react-lifecycles-compat@^3.0.4": - "integrity" "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" - "resolved" "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz" - "version" "3.0.4" - -"react-modern-drawer@^1.1.2": - "integrity" "sha512-v7I6gGHZnJo7mVLFV74NyazEgl7IXJSmnmFE98olhH7sP9O0ul/1l/d7YQOARWyyLPd96P0odriX+nRusDJr6g==" - "resolved" "https://registry.npmjs.org/react-modern-drawer/-/react-modern-drawer-1.1.2.tgz" - "version" "1.1.2" - -"react-pro-sidebar@^0.7.1": - "integrity" "sha512-Iy1X8ce4t5Vqz4CsyzjwokGUE3/IObgmYzS0ins7/2eWKle0SMUPaWdgMKFIVjtVrMr5vmjPbRicq8FxnVaf8A==" - "resolved" "https://registry.npmjs.org/react-pro-sidebar/-/react-pro-sidebar-0.7.1.tgz" - "version" "0.7.1" - dependencies: - "@popperjs/core" "^2.4.0" - "classnames" "^2.2.6" - "react-slidedown" "^2.4.5" - "resize-observer-polyfill" "^1.5.1" - -"react-query@^3.24.4": - "integrity" "sha512-F6hYDKyNgDQfQOuR1Rsp3VRzJnWHx6aRnnIZHMNGGgbL3SBgpZTDg8MQwmxOgpCAoqZJA+JSNCydF1xGJqKOCA==" - "resolved" "https://registry.npmjs.org/react-query/-/react-query-3.39.2.tgz" - "version" "3.39.2" - dependencies: - "@babel/runtime" "^7.5.5" - "broadcast-channel" "^3.4.1" - "match-sorter" "^6.0.2" - -"react-refresh@^0.11.0", "react-refresh@>=0.10.0 <1.0.0": - "integrity" "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==" - "resolved" "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz" - "version" "0.11.0" - -"react-refresh@^0.9.0": - "integrity" "sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ==" - "resolved" "https://registry.npmjs.org/react-refresh/-/react-refresh-0.9.0.tgz" - "version" "0.9.0" - -"react-router-dom@6.15.0": - "integrity" "sha512-aR42t0fs7brintwBGAv2+mGlCtgtFQeOzK0BM1/OiqEzRejOZtpMZepvgkscpMUnKb8YO84G7s3LsHnnDNonbQ==" - "resolved" "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.15.0.tgz" - "version" "6.15.0" - dependencies: - "@remix-run/router" "1.8.0" - "react-router" "6.15.0" - -"react-router@6.15.0": - "integrity" "sha512-NIytlzvzLwJkCQj2HLefmeakxxWHWAP+02EGqWEZy+DgfHHKQMUoBBjUQLOtFInBMhWtb3hiUy6MfFgwLjXhqg==" - "resolved" "https://registry.npmjs.org/react-router/-/react-router-6.15.0.tgz" - "version" "6.15.0" - dependencies: - "@remix-run/router" "1.8.0" - -"react-scripts@5.0.0": - "integrity" "sha512-3i0L2CyIlROz7mxETEdfif6Sfhh9Lfpzi10CtcGs1emDQStmZfWjJbAIMtRD0opVUjQuFWqHZyRZ9PPzKCFxWg==" - "resolved" "https://registry.npmjs.org/react-scripts/-/react-scripts-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "@babel/core" "^7.16.0" - "@pmmmwh/react-refresh-webpack-plugin" "^0.5.3" - "@svgr/webpack" "^5.5.0" - "babel-jest" "^27.4.2" - "babel-loader" "^8.2.3" - "babel-plugin-named-asset-import" "^0.3.8" - "babel-preset-react-app" "^10.0.1" - "bfj" "^7.0.2" - "browserslist" "^4.18.1" - "camelcase" "^6.2.1" - "case-sensitive-paths-webpack-plugin" "^2.4.0" - "css-loader" "^6.5.1" - "css-minimizer-webpack-plugin" "^3.2.0" - "dotenv" "^10.0.0" - "dotenv-expand" "^5.1.0" - "eslint" "^8.3.0" - "eslint-config-react-app" "^7.0.0" - "eslint-webpack-plugin" "^3.1.1" - "file-loader" "^6.2.0" - "fs-extra" "^10.0.0" - "html-webpack-plugin" "^5.5.0" - "identity-obj-proxy" "^3.0.0" - "jest" "^27.4.3" - "jest-resolve" "^27.4.2" - "jest-watch-typeahead" "^1.0.0" - "mini-css-extract-plugin" "^2.4.5" - "postcss" "^8.4.4" - "postcss-flexbugs-fixes" "^5.0.2" - "postcss-loader" "^6.2.1" - "postcss-normalize" "^10.0.1" - "postcss-preset-env" "^7.0.1" - "prompts" "^2.4.2" - "react-app-polyfill" "^3.0.0" - "react-dev-utils" "^12.0.0" - "react-refresh" "^0.11.0" - "resolve" "^1.20.0" - "resolve-url-loader" "^4.0.0" - "sass-loader" "^12.3.0" - "semver" "^7.3.5" - "source-map-loader" "^3.0.0" - "style-loader" "^3.3.1" - "tailwindcss" "^3.0.2" - "terser-webpack-plugin" "^5.2.5" - "webpack" "^5.64.4" - "webpack-dev-server" "^4.6.0" - "webpack-manifest-plugin" "^4.0.2" - "workbox-webpack-plugin" "^6.4.1" - optionalDependencies: - "fsevents" "^2.3.2" - -"react-side-effect@^2.1.0": - "integrity" "sha512-PVjOcvVOyIILrYoyGEpDN3vmYNLdy1CajSFNt4TDsVQC5KpTijDvWVoR+/7Rz2xT978D8/ZtFceXxzsPwZEDvw==" - "resolved" "https://registry.npmjs.org/react-side-effect/-/react-side-effect-2.1.2.tgz" - "version" "2.1.2" - -"react-slidedown@^2.4.5": - "integrity" "sha512-HGDfrqo70r1WVE0DwrySPdCT27/2wcZaJYh5kOnmuPSCtjDDJrNkDdn4Ep/cma2VVfwupeAGhbc2pbrGThU6VQ==" - "resolved" "https://registry.npmjs.org/react-slidedown/-/react-slidedown-2.4.7.tgz" - "version" "2.4.7" - dependencies: - "tslib" "^2.0.0" - -"react-textarea-autosize@^8.3.2": - "integrity" "sha512-CdtmP8Dc19xL8/R6sWvtknD/eCXkQr30dtvC4VmGInhRsfF8X/ihXCq6+9l9qbxmKRiq407/7z5fxE7cVWQNgQ==" - "resolved" "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.3.4.tgz" - "version" "8.3.4" - dependencies: - "@babel/runtime" "^7.10.2" - "use-composed-ref" "^1.3.0" - "use-latest" "^1.2.1" - -"react-timeago@^6.2.1": - "integrity" "sha512-b9EObWO8wy4qwfOzj+g/RQZRrPvtMv1Pz12FCdAWKWCXbDGt0rZLyiyTGEr0Lh1O8w5xa48CtRpl3LI+CtGCyw==" - "resolved" "https://registry.npmjs.org/react-timeago/-/react-timeago-6.2.1.tgz" - "version" "6.2.1" - -"react-transition-state@^2.1.0": - "integrity" "sha512-kQx5g1FVu9knoz1T1WkapjUgFz08qQ/g1OmuWGi3/AoEFfS0kStxrPlZx81urjCXdz2d+1DqLpU6TyLW/Ro04Q==" - "resolved" "https://registry.npmjs.org/react-transition-state/-/react-transition-state-2.1.1.tgz" - "version" "2.1.1" - -"react@*", "react@^15.0.2 || ^16.0.0 || ^17.0.0", "react@^16.0.0 || ^17.0.0", "react@^16.3.0 || ^17.0.0 || ^18.0.0", "react@^16.3.0 || 17", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^17.0.0 || ^16.3.0 || ^15.5.4", "react@^17.0.0 || ^18.0.0", "react@^17.0.2", "react@>= 16", "react@>=16", "react@>=16.14.0", "react@>=16.3.0", "react@>=16.8", "react@>=16.8.0", "react@>16.0.0", "react@17.0.2": - "integrity" "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==" - "resolved" "https://registry.npmjs.org/react/-/react-17.0.2.tgz" - "version" "17.0.2" - dependencies: - "loose-envify" "^1.1.0" - "object-assign" "^4.1.1" - -"reactjs-popup@2.0.5": - "integrity" "sha512-b5hv9a6aGsHEHXFAgPO5s1Jw1eSkopueyUVxQewGdLgqk2eW0IVXZrPRpHR629YcgIpC2oxtX8OOZ8a7bQJbxA==" - "resolved" "https://registry.npmjs.org/reactjs-popup/-/reactjs-popup-2.0.5.tgz" - "version" "2.0.5" - -"read-cache@^1.0.0": - "integrity" "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==" - "resolved" "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "pify" "^2.3.0" - -"read-cmd-shim@^2.0.0": - "integrity" "sha512-HJpV9bQpkl6KwjxlJcBoqu9Ba0PQg8TqSNIOrulGt54a0uup0HtevreFHzYzkm0lpnleRdNBzXznKrgxglEHQw==" - "resolved" "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-2.0.0.tgz" - "version" "2.0.0" - -"read-config-file@6.2.0": - "integrity" "sha512-gx7Pgr5I56JtYz+WuqEbQHj/xWo+5Vwua2jhb1VwM4Wid5PqYmZ4i00ZB0YEGIfkVBsCv9UrjgyqCiQfS/Oosg==" - "resolved" "https://registry.npmjs.org/read-config-file/-/read-config-file-6.2.0.tgz" - "version" "6.2.0" - dependencies: - "dotenv" "^9.0.2" - "dotenv-expand" "^5.1.0" - "js-yaml" "^4.1.0" - "json5" "^2.2.0" - "lazy-val" "^1.0.4" - -"read-package-json-fast@^2.0.1": - "integrity" "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==" - "resolved" "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz" - "version" "2.0.3" - dependencies: - "json-parse-even-better-errors" "^2.3.0" - "npm-normalize-package-bin" "^1.0.1" - -"read-package-json@^2.0.0": - "integrity" "sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA==" - "resolved" "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.2.tgz" - "version" "2.1.2" - dependencies: - "glob" "^7.1.1" - "json-parse-even-better-errors" "^2.3.0" - "normalize-package-data" "^2.0.0" - "npm-normalize-package-bin" "^1.0.0" - -"read-package-json@^3.0.0": - "integrity" "sha512-aLcPqxovhJTVJcsnROuuzQvv6oziQx4zd3JvG0vGCL5MjTONUc4uJ90zCBC6R7W7oUKBNoR/F8pkyfVwlbxqng==" - "resolved" "https://registry.npmjs.org/read-package-json/-/read-package-json-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "glob" "^7.1.1" - "json-parse-even-better-errors" "^2.3.0" - "normalize-package-data" "^3.0.0" - "npm-normalize-package-bin" "^1.0.0" - -"read-package-json@^4.1.1": - "integrity" "sha512-P82sbZJ3ldDrWCOSKxJT0r/CXMWR0OR3KRh55SgKo3p91GSIEEC32v3lSHAvO/UcH3/IoL7uqhOFBduAnwdldw==" - "resolved" "https://registry.npmjs.org/read-package-json/-/read-package-json-4.1.1.tgz" - "version" "4.1.1" - dependencies: - "glob" "^7.1.1" - "json-parse-even-better-errors" "^2.3.0" - "normalize-package-data" "^3.0.0" - "npm-normalize-package-bin" "^1.0.0" - -"read-package-tree@^5.3.1": - "integrity" "sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw==" - "resolved" "https://registry.npmjs.org/read-package-tree/-/read-package-tree-5.3.1.tgz" - "version" "5.3.1" - dependencies: - "read-package-json" "^2.0.0" - "readdir-scoped-modules" "^1.0.0" - "util-promisify" "^2.1.0" - -"read-pkg-up@^3.0.0": - "integrity" "sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==" - "resolved" "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "find-up" "^2.0.0" - "read-pkg" "^3.0.0" - -"read-pkg-up@^7.0.1": - "integrity" "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==" - "resolved" "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz" - "version" "7.0.1" - dependencies: - "find-up" "^4.1.0" - "read-pkg" "^5.2.0" - "type-fest" "^0.8.1" - -"read-pkg@^3.0.0": - "integrity" "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==" - "resolved" "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "load-json-file" "^4.0.0" - "normalize-package-data" "^2.3.2" - "path-type" "^3.0.0" - -"read-pkg@^5.2.0": - "integrity" "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==" - "resolved" "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz" - "version" "5.2.0" - dependencies: - "@types/normalize-package-data" "^2.4.0" - "normalize-package-data" "^2.5.0" - "parse-json" "^5.0.0" - "type-fest" "^0.6.0" - -"read@~1.0.1", "read@1": - "integrity" "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==" - "resolved" "https://registry.npmjs.org/read/-/read-1.0.7.tgz" - "version" "1.0.7" - dependencies: - "mute-stream" "~0.0.4" - -"readable-stream@^2.0.1", "readable-stream@^2.0.6", "readable-stream@^2.2.2", "readable-stream@~2.3.6": - "integrity" "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==" - "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" - "version" "2.3.7" - 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" - -"readable-stream@^3.0.0": - "integrity" "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==" - "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" - "version" "3.6.0" - dependencies: - "inherits" "^2.0.3" - "string_decoder" "^1.1.1" - "util-deprecate" "^1.0.1" - -"readable-stream@^3.0.2": - "integrity" "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==" - "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" - "version" "3.6.0" - dependencies: - "inherits" "^2.0.3" - "string_decoder" "^1.1.1" - "util-deprecate" "^1.0.1" - -"readable-stream@^3.0.6": - "integrity" "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==" - "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" - "version" "3.6.2" - dependencies: - "inherits" "^2.0.3" - "string_decoder" "^1.1.1" - "util-deprecate" "^1.0.1" - -"readable-stream@^3.4.0": - "integrity" "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==" - "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" - "version" "3.6.0" - dependencies: - "inherits" "^2.0.3" - "string_decoder" "^1.1.1" - "util-deprecate" "^1.0.1" - -"readable-stream@^3.6.0": - "integrity" "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==" - "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" - "version" "3.6.0" - dependencies: - "inherits" "^2.0.3" - "string_decoder" "^1.1.1" - "util-deprecate" "^1.0.1" - -"readable-stream@3": - "integrity" "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==" - "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" - "version" "3.6.0" - dependencies: - "inherits" "^2.0.3" - "string_decoder" "^1.1.1" - "util-deprecate" "^1.0.1" - -"readdir-scoped-modules@^1.0.0": - "integrity" "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==" - "resolved" "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz" - "version" "1.1.0" - dependencies: - "debuglog" "^1.0.1" - "dezalgo" "^1.0.0" - "graceful-fs" "^4.1.2" - "once" "^1.3.0" - -"readdirp@~3.6.0": - "integrity" "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==" - "resolved" "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" - "version" "3.6.0" - dependencies: - "picomatch" "^2.2.1" - -"rechoir@^0.6.2": - "integrity" "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==" - "resolved" "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz" - "version" "0.6.2" - dependencies: - "resolve" "^1.1.6" - -"recursive-readdir@^2.2.2": - "integrity" "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==" - "resolved" "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz" - "version" "2.2.3" - dependencies: - "minimatch" "^3.0.5" - -"redent@^3.0.0": - "integrity" "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==" - "resolved" "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "indent-string" "^4.0.0" - "strip-indent" "^3.0.0" - -"reflect-metadata@^0.1.12", "reflect-metadata@^0.1.13": - "integrity" "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" - "resolved" "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz" - "version" "0.1.13" - -"regenerate-unicode-properties@^10.0.1": - "integrity" "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==" - "resolved" "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz" - "version" "10.0.1" - dependencies: - "regenerate" "^1.4.2" - -"regenerate@^1.4.2": - "integrity" "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" - "resolved" "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz" - "version" "1.4.2" - -"regenerator-runtime@^0.13.4", "regenerator-runtime@^0.13.7", "regenerator-runtime@^0.13.9": - "integrity" "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" - "resolved" "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz" - "version" "0.13.9" - -"regenerator-runtime@^0.14.0": - "integrity" "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" - "resolved" "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz" - "version" "0.14.0" - -"regenerator-transform@^0.15.0": - "integrity" "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==" - "resolved" "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz" - "version" "0.15.0" - dependencies: - "@babel/runtime" "^7.8.4" - -"regex-parser@^2.2.11": - "integrity" "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==" - "resolved" "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz" - "version" "2.2.11" - -"regexp.prototype.flags@^1.4.1", "regexp.prototype.flags@^1.5.0": - "integrity" "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==" - "resolved" "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz" - "version" "1.5.0" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.2.0" - "functions-have-names" "^1.2.3" - -"regexpp@^3.1.0": - "integrity" "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==" - "resolved" "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz" - "version" "3.2.0" - -"regexpu-core@^5.1.0": - "integrity" "sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA==" - "resolved" "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.1.0.tgz" - "version" "5.1.0" - dependencies: - "regenerate" "^1.4.2" - "regenerate-unicode-properties" "^10.0.1" - "regjsgen" "^0.6.0" - "regjsparser" "^0.8.2" - "unicode-match-property-ecmascript" "^2.0.0" - "unicode-match-property-value-ecmascript" "^2.0.0" - -"registry-auth-token@^4.0.0": - "integrity" "sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==" - "resolved" "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz" - "version" "4.2.2" - dependencies: - "rc" "1.2.8" - -"registry-url@^5.0.0": - "integrity" "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==" - "resolved" "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz" - "version" "5.1.0" - dependencies: - "rc" "^1.2.8" - -"regjsgen@^0.6.0": - "integrity" "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==" - "resolved" "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz" - "version" "0.6.0" - -"regjsparser@^0.8.2": - "integrity" "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==" - "resolved" "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz" - "version" "0.8.4" - dependencies: - "jsesc" "~0.5.0" - -"relateurl@^0.2.7": - "integrity" "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==" - "resolved" "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz" - "version" "0.2.7" - -"remove-accents@0.4.2": - "integrity" "sha512-7pXIJqJOq5tFgG1A2Zxti3Ht8jJF337m4sowbuHsW30ZnkQFnDzy9qBNhgzX8ZLW4+UBcXiiR7SwR6pokHsxiA==" - "resolved" "https://registry.npmjs.org/remove-accents/-/remove-accents-0.4.2.tgz" - "version" "0.4.2" - -"renderkid@^3.0.0": - "integrity" "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==" - "resolved" "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "css-select" "^4.1.3" - "dom-converter" "^0.2.0" - "htmlparser2" "^6.1.0" - "lodash" "^4.17.21" - "strip-ansi" "^6.0.1" - -"request@^2.88.0", "request@^2.88.2": - "integrity" "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==" - "resolved" "https://registry.npmjs.org/request/-/request-2.88.2.tgz" - "version" "2.88.2" - dependencies: - "aws-sign2" "~0.7.0" - "aws4" "^1.8.0" - "caseless" "~0.12.0" - "combined-stream" "~1.0.6" - "extend" "~3.0.2" - "forever-agent" "~0.6.1" - "form-data" "~2.3.2" - "har-validator" "~5.1.3" - "http-signature" "~1.2.0" - "is-typedarray" "~1.0.0" - "isstream" "~0.1.2" - "json-stringify-safe" "~5.0.1" - "mime-types" "~2.1.19" - "oauth-sign" "~0.9.0" - "performance-now" "^2.1.0" - "qs" "~6.5.2" - "safe-buffer" "^5.1.2" - "tough-cookie" "~2.5.0" - "tunnel-agent" "^0.6.0" - "uuid" "^3.3.2" - -"require-directory@^2.1.1": - "integrity" "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" - "resolved" "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" - "version" "2.1.1" - -"require-from-string@^2.0.2": - "integrity" "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" - "resolved" "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" - "version" "2.0.2" - -"require-main-filename@^2.0.0": - "integrity" "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" - "resolved" "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz" - "version" "2.0.0" - -"requires-port@^1.0.0": - "integrity" "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" - "resolved" "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" - "version" "1.0.0" - -"resize-observer-polyfill@^1.5.1": - "integrity" "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" - "resolved" "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz" - "version" "1.5.1" - -"resolve-cwd@^3.0.0": - "integrity" "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==" - "resolved" "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "resolve-from" "^5.0.0" - -"resolve-from@^4.0.0": - "integrity" "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" - "resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" - "version" "4.0.0" - -"resolve-from@^5.0.0": - "integrity" "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" - "resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" - "version" "5.0.0" - -"resolve-url-loader@^4.0.0": - "integrity" "sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA==" - "resolved" "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "adjust-sourcemap-loader" "^4.0.0" - "convert-source-map" "^1.7.0" - "loader-utils" "^2.0.0" - "postcss" "^7.0.35" - "source-map" "0.6.1" - -"resolve.exports@^1.1.0": - "integrity" "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==" - "resolved" "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz" - "version" "1.1.1" - -"resolve@^1.1.6", "resolve@^1.1.7", "resolve@^1.10.0", "resolve@^1.14.2", "resolve@^1.19.0", "resolve@^1.20.0", "resolve@^1.22.2", "resolve@^1.22.4": - "integrity" "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==" - "resolved" "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz" - "version" "1.22.4" - dependencies: - "is-core-module" "^2.13.0" - "path-parse" "^1.0.7" - "supports-preserve-symlinks-flag" "^1.0.0" - -"resolve@^2.0.0-next.3": - "integrity" "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==" - "resolved" "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz" - "version" "2.0.0-next.4" - dependencies: - "is-core-module" "^2.9.0" - "path-parse" "^1.0.7" - "supports-preserve-symlinks-flag" "^1.0.0" - -"responselike@^1.0.2": - "integrity" "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==" - "resolved" "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "lowercase-keys" "^1.0.0" - -"restore-cursor@^3.1.0": - "integrity" "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==" - "resolved" "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "onetime" "^5.1.0" - "signal-exit" "^3.0.2" - -"retry@^0.12.0": - "integrity" "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==" - "resolved" "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz" - "version" "0.12.0" - -"retry@^0.13.1": - "integrity" "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==" - "resolved" "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz" - "version" "0.13.1" - -"reusify@^1.0.4": - "integrity" "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" - "resolved" "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" - "version" "1.0.4" - -"rfdc@^1.3.0": - "integrity" "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==" - "resolved" "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz" - "version" "1.3.0" - -"rimraf@^2.6.3": - "integrity" "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==" - "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz" - "version" "2.7.1" - dependencies: - "glob" "^7.1.3" - -"rimraf@^3.0.0", "rimraf@^3.0.2", "rimraf@3.0.2": - "integrity" "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==" - "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" - "version" "3.0.2" - dependencies: - "glob" "^7.1.3" - -"roarr@^2.15.3": - "integrity" "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==" - "resolved" "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz" - "version" "2.15.4" - dependencies: - "boolean" "^3.0.1" - "detect-node" "^2.0.4" - "globalthis" "^1.0.1" - "json-stringify-safe" "^5.0.1" - "semver-compare" "^1.0.0" - "sprintf-js" "^1.1.2" - -"rollup-plugin-terser@^7.0.0": - "integrity" "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==" - "resolved" "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz" - "version" "7.0.2" - dependencies: - "@babel/code-frame" "^7.10.4" - "jest-worker" "^26.2.1" - "serialize-javascript" "^4.0.0" - "terser" "^5.0.0" - -"rollup@^1.20.0 || ^2.0.0", "rollup@^1.20.0||^2.0.0", "rollup@^2.0.0", "rollup@^2.43.1": - "integrity" "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==" - "resolved" "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz" - "version" "2.79.1" - optionalDependencies: - "fsevents" "~2.3.2" - -"run-async@^2.4.0": - "integrity" "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==" - "resolved" "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz" - "version" "2.4.1" - -"run-parallel@^1.1.9": - "integrity" "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==" - "resolved" "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" - "version" "1.2.0" - dependencies: - "queue-microtask" "^1.2.2" - -"rxjs@*": - "integrity" "sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==" - "resolved" "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz" - "version" "7.5.7" - dependencies: - "tslib" "^2.1.0" - -"rxjs@^6.0.0 || ^7.2.0", "rxjs@^7.0.0", "rxjs@^7.1.0", "rxjs@^7.2.0", "rxjs@^7.5.1", "rxjs@^7.5.4", "rxjs@^7.5.5": - "integrity" "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==" - "resolved" "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz" - "version" "7.5.6" - dependencies: - "tslib" "^2.1.0" - -"rxjs@^6.6.0": - "integrity" "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==" - "resolved" "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz" - "version" "6.6.7" - dependencies: - "tslib" "^1.9.0" - -"rxjs@6.6.7": - "integrity" "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==" - "resolved" "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz" - "version" "6.6.7" - dependencies: - "tslib" "^1.9.0" - -"safe-array-concat@^1.0.0": - "integrity" "sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==" - "resolved" "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "call-bind" "^1.0.2" - "get-intrinsic" "^1.2.0" - "has-symbols" "^1.0.3" - "isarray" "^2.0.5" - -"safe-buffer@^5.0.1", "safe-buffer@^5.1.0", "safe-buffer@^5.1.2", "safe-buffer@^5.2.1", "safe-buffer@>=5.1.0", "safe-buffer@~5.2.0", "safe-buffer@5.2.1": - "integrity" "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - "version" "5.2.1" - -"safe-buffer@~5.1.0", "safe-buffer@~5.1.1": - "integrity" "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" - "version" "5.1.2" - -"safe-buffer@5.1.2": - "integrity" "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" - "version" "5.1.2" - -"safe-regex-test@^1.0.0": - "integrity" "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==" - "resolved" "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "call-bind" "^1.0.2" - "get-intrinsic" "^1.1.3" - "is-regex" "^1.1.4" - -"safer-buffer@^2.0.2", "safer-buffer@^2.1.0", "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", "safer-buffer@~2.1.0": - "integrity" "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - "resolved" "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" - "version" "2.1.2" - -"sanitize-filename@^1.6.3": - "integrity" "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==" - "resolved" "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz" - "version" "1.6.3" - dependencies: - "truncate-utf8-bytes" "^1.0.0" - -"sanitize.css@*": - "integrity" "sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA==" - "resolved" "https://registry.npmjs.org/sanitize.css/-/sanitize.css-13.0.0.tgz" - "version" "13.0.0" - -"sass-loader@^12.3.0": - "integrity" "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==" - "resolved" "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz" - "version" "12.6.0" - dependencies: - "klona" "^2.0.4" - "neo-async" "^2.6.2" - -"sass@^1.3.0", "sass@^1.42.1": - "integrity" "sha512-C4zp79GCXZfK0yoHZg+GxF818/aclhp9F48XBu/+bm9vXEVAYov9iU3FBVRMq3Hx3OA4jfKL+p2K9180mEh0xQ==" - "resolved" "https://registry.npmjs.org/sass/-/sass-1.54.0.tgz" - "version" "1.54.0" - dependencies: - "chokidar" ">=3.0.0 <4.0.0" - "immutable" "^4.0.0" - "source-map-js" ">=0.6.2 <2.0.0" - -"sax@^1.2.4", "sax@>=0.6.0", "sax@~1.2.4": - "integrity" "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - "resolved" "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz" - "version" "1.2.4" - -"saxes@^5.0.1": - "integrity" "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==" - "resolved" "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz" - "version" "5.0.1" - dependencies: - "xmlchars" "^2.2.0" - -"scheduler@^0.20.2": - "integrity" "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==" - "resolved" "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz" - "version" "0.20.2" - dependencies: - "loose-envify" "^1.1.0" - "object-assign" "^4.1.1" - -"schema-utils@^2.6.5": - "integrity" "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==" - "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz" - "version" "2.7.1" - dependencies: - "@types/json-schema" "^7.0.5" - "ajv" "^6.12.4" - "ajv-keywords" "^3.5.2" - -"schema-utils@^3.0.0", "schema-utils@^3.1.0", "schema-utils@^3.1.1": - "integrity" "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==" - "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz" - "version" "3.1.1" - dependencies: - "@types/json-schema" "^7.0.8" - "ajv" "^6.12.5" - "ajv-keywords" "^3.5.2" - -"schema-utils@^3.2.0": - "integrity" "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==" - "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" - "version" "3.3.0" - dependencies: - "@types/json-schema" "^7.0.8" - "ajv" "^6.12.5" - "ajv-keywords" "^3.5.2" - -"schema-utils@^4.0.0": - "integrity" "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==" - "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz" - "version" "4.2.0" - dependencies: - "@types/json-schema" "^7.0.9" - "ajv" "^8.9.0" - "ajv-formats" "^2.1.1" - "ajv-keywords" "^5.1.0" - -"schema-utils@2.7.0": - "integrity" "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==" - "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "@types/json-schema" "^7.0.4" - "ajv" "^6.12.2" - "ajv-keywords" "^3.4.1" - -"select-hose@^2.0.0": - "integrity" "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==" - "resolved" "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz" - "version" "2.0.0" - -"selfsigned@^2.1.1": - "integrity" "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==" - "resolved" "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz" - "version" "2.1.1" - dependencies: - "node-forge" "^1" - -"semver-compare@^1.0.0": - "integrity" "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==" - "resolved" "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz" - "version" "1.0.0" - -"semver-diff@^3.1.1": - "integrity" "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==" - "resolved" "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz" - "version" "3.1.1" - dependencies: - "semver" "^6.3.0" - -"semver@^5.6.0": - "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" - "version" "5.7.1" - -"semver@^5.7.0": - "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" - "version" "5.7.1" - -"semver@^5.7.1": - "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" - "version" "5.7.1" - -"semver@^6.0.0": - "integrity" "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" - "version" "6.3.0" - -"semver@^6.1.1": - "integrity" "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" - "version" "6.3.0" - -"semver@^6.1.2": - "integrity" "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" - "version" "6.3.0" - -"semver@^6.2.0": - "integrity" "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" - "version" "6.3.0" - -"semver@^6.3.0": - "integrity" "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" - "version" "6.3.0" - -"semver@^6.3.1": - "integrity" "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" - "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" - "version" "6.3.1" - -"semver@^7.1.1", "semver@^7.1.3", "semver@^7.2.1", "semver@^7.3.2", "semver@^7.3.4", "semver@^7.3.5", "semver@^7.3.7", "semver@^7.3.8", "semver@^7.5.3", "semver@7.x": - "integrity" "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==" - "resolved" "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz" - "version" "7.5.4" - dependencies: - "lru-cache" "^6.0.0" - -"semver@2 || 3 || 4 || 5": - "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" - "version" "5.7.1" - -"semver@7.0.0": - "integrity" "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==" - "resolved" "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz" - "version" "7.0.0" - -"send@0.18.0": - "integrity" "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==" - "resolved" "https://registry.npmjs.org/send/-/send-0.18.0.tgz" - "version" "0.18.0" - 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" - -"seq-queue@^0.0.5": - "integrity" "sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q==" - "resolved" "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz" - "version" "0.0.5" - -"serialize-error@^7.0.1": - "integrity" "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==" - "resolved" "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz" - "version" "7.0.1" - dependencies: - "type-fest" "^0.13.1" - -"serialize-javascript@^4.0.0": - "integrity" "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==" - "resolved" "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "randombytes" "^2.1.0" - -"serialize-javascript@^6.0.0", "serialize-javascript@^6.0.1": - "integrity" "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==" - "resolved" "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz" - "version" "6.0.1" - dependencies: - "randombytes" "^2.1.0" - -"serve-index@^1.9.1": - "integrity" "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==" - "resolved" "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz" - "version" "1.9.1" - 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" - -"serve-static@1.15.0": - "integrity" "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==" - "resolved" "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz" - "version" "1.15.0" - dependencies: - "encodeurl" "~1.0.2" - "escape-html" "~1.0.3" - "parseurl" "~1.3.3" - "send" "0.18.0" - -"set-blocking@^2.0.0", "set-blocking@~2.0.0": - "integrity" "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" - "resolved" "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" - "version" "2.0.0" - -"setimmediate@^1.0.5": - "integrity" "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" - "resolved" "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" - "version" "1.0.5" - -"setprototypeof@1.1.0": - "integrity" "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" - "resolved" "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz" - "version" "1.1.0" - -"setprototypeof@1.2.0": - "integrity" "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - "resolved" "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" - "version" "1.2.0" - -"sha.js@^2.4.11": - "integrity" "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==" - "resolved" "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz" - "version" "2.4.11" - dependencies: - "inherits" "^2.0.1" - "safe-buffer" "^5.0.1" - -"sha3@^2.1.4": - "integrity" "sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg==" - "resolved" "https://registry.npmjs.org/sha3/-/sha3-2.1.4.tgz" - "version" "2.1.4" - dependencies: - "buffer" "6.0.3" - -"shallow-clone@^3.0.0": - "integrity" "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==" - "resolved" "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "kind-of" "^6.0.2" - -"shebang-command@^2.0.0": - "integrity" "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==" - "resolved" "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "shebang-regex" "^3.0.0" - -"shebang-regex@^3.0.0": - "integrity" "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" - "resolved" "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" - "version" "3.0.0" - -"shell-env@^0.3.0": - "integrity" "sha512-VrC6OSm5riGAFWvlYExA80Rrlfi4STsztNXjyet9Jf20hbiVeeKvJIesb92gJk7zlmpQjB0wOZpy8ClzVdPVWQ==" - "resolved" "https://registry.npmjs.org/shell-env/-/shell-env-0.3.0.tgz" - "version" "0.3.0" - dependencies: - "default-shell" "^1.0.0" - "execa" "^0.5.0" - "strip-ansi" "^3.0.0" - -"shell-path@^2.1.0": - "integrity" "sha512-w+mbrnpA+r5jSFS4MgFfxZJ1Wx8qMKkR4gvQ+wgaZEoZCMMYZ6Yl/dcNjW/zLMfmx5a9IVIFwGAtUJcnDMmFrg==" - "resolved" "https://registry.npmjs.org/shell-path/-/shell-path-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "shell-env" "^0.3.0" - -"shell-quote@^1.7.3": - "integrity" "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==" - "resolved" "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz" - "version" "1.7.3" - -"shelljs@0.8.5": - "integrity" "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==" - "resolved" "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz" - "version" "0.8.5" - dependencies: - "glob" "^7.0.0" - "interpret" "^1.0.0" - "rechoir" "^0.6.2" - -"shellwords@^0.1.1": - "integrity" "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==" - "resolved" "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz" - "version" "0.1.1" - -"side-channel@^1.0.4": - "integrity" "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==" - "resolved" "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" - "version" "1.0.4" - dependencies: - "call-bind" "^1.0.0" - "get-intrinsic" "^1.0.2" - "object-inspect" "^1.9.0" - -"signal-exit@^3.0.0", "signal-exit@^3.0.2", "signal-exit@^3.0.3": - "integrity" "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==" - "resolved" "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz" - "version" "3.0.5" - -"signal-exit@^3.0.7": - "integrity" "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - "resolved" "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" - "version" "3.0.7" - -"sisteransi@^1.0.5": - "integrity" "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" - "resolved" "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" - "version" "1.0.5" - -"slash@^3.0.0": - "integrity" "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" - "resolved" "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" - "version" "3.0.0" - -"slash@^4.0.0": - "integrity" "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==" - "resolved" "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz" - "version" "4.0.0" - -"slice-ansi@^3.0.0": - "integrity" "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==" - "resolved" "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "ansi-styles" "^4.0.0" - "astral-regex" "^2.0.0" - "is-fullwidth-code-point" "^3.0.0" - -"slice-ansi@^4.0.0": - "integrity" "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==" - "resolved" "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "ansi-styles" "^4.0.0" - "astral-regex" "^2.0.0" - "is-fullwidth-code-point" "^3.0.0" - -"slice-ansi@^5.0.0": - "integrity" "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==" - "resolved" "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "ansi-styles" "^6.0.0" - "is-fullwidth-code-point" "^4.0.0" - -"slide@^1.1.6": - "integrity" "sha512-NwrtjCg+lZoqhFU8fOwl4ay2ei8PaqCBOUV3/ektPY9trO1yQ1oXEfmHAhKArUVUr/hOHvy5f6AdP17dCM0zMw==" - "resolved" "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz" - "version" "1.1.6" - -"smart-buffer@^4.0.2", "smart-buffer@^4.1.0": - "integrity" "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==" - "resolved" "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz" - "version" "4.2.0" - -"sockjs@^0.3.24": - "integrity" "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==" - "resolved" "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz" - "version" "0.3.24" - dependencies: - "faye-websocket" "^0.11.3" - "uuid" "^8.3.2" - "websocket-driver" "^0.7.4" - -"socks-proxy-agent@^5.0.0": - "integrity" "sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ==" - "resolved" "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz" - "version" "5.0.1" - dependencies: - "agent-base" "^6.0.2" - "debug" "4" - "socks" "^2.3.3" - -"socks-proxy-agent@^6.0.0": - "integrity" "sha512-57e7lwCN4Tzt3mXz25VxOErJKXlPfXmkMLnk310v/jwW20jWRVcgsOit+xNkN3eIEdB47GwnfAEBLacZ/wVIKg==" - "resolved" "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.0.tgz" - "version" "6.1.0" - dependencies: - "agent-base" "^6.0.2" - "debug" "^4.3.1" - "socks" "^2.6.1" - -"socks@^2.3.3", "socks@^2.6.1": - "integrity" "sha512-kLQ9N5ucj8uIcxrDwjm0Jsqk06xdpBjGNQtpXy4Q8/QY2k+fY7nZH8CARy+hkbG+SGAovmzzuauCpBlb8FrnBA==" - "resolved" "https://registry.npmjs.org/socks/-/socks-2.6.1.tgz" - "version" "2.6.1" - dependencies: - "ip" "^1.1.5" - "smart-buffer" "^4.1.0" - -"sort-keys@^2.0.0": - "integrity" "sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==" - "resolved" "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "is-plain-obj" "^1.0.0" - -"sort-keys@^4.0.0": - "integrity" "sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg==" - "resolved" "https://registry.npmjs.org/sort-keys/-/sort-keys-4.2.0.tgz" - "version" "4.2.0" - dependencies: - "is-plain-obj" "^2.0.0" - -"source-list-map@^2.0.0", "source-list-map@^2.0.1": - "integrity" "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" - "resolved" "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz" - "version" "2.0.1" - -"source-map-js@^1.0.1", "source-map-js@^1.0.2", "source-map-js@>=0.6.2 <2.0.0": - "integrity" "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" - "resolved" "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" - "version" "1.0.2" - -"source-map-loader@^3.0.0": - "integrity" "sha512-BokxPoLjyl3iOrgkWaakaxqnelAJSS+0V+De0kKIq6lyWrXuiPgYTGp6z3iHmqljKAaLXwZa+ctD8GccRJeVvg==" - "resolved" "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.2.tgz" - "version" "3.0.2" - dependencies: - "abab" "^2.0.5" - "iconv-lite" "^0.6.3" - "source-map-js" "^1.0.1" - -"source-map-resolve@^0.6.0": - "integrity" "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==" - "resolved" "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz" - "version" "0.6.0" - dependencies: - "atob" "^2.1.2" - "decode-uri-component" "^0.2.0" - -"source-map-support@^0.5.19", "source-map-support@^0.5.6", "source-map-support@~0.5.20", "source-map-support@0.5.21": - "integrity" "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==" - "resolved" "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" - "version" "0.5.21" - dependencies: - "buffer-from" "^1.0.0" - "source-map" "^0.6.0" - -"source-map@^0.6.0", "source-map@^0.6.1", "source-map@~0.6.0", "source-map@~0.6.1", "source-map@0.6.1": - "integrity" "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" - "version" "0.6.1" - -"source-map@^0.7.3": - "integrity" "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==" - "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" - "version" "0.7.4" - -"source-map@^0.8.0-beta.0": - "integrity" "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==" - "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz" - "version" "0.8.0-beta.0" - dependencies: - "whatwg-url" "^7.0.0" - -"source-map@0.7.3": - "integrity" "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" - "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz" - "version" "0.7.3" - -"sourcemap-codec@^1.4.4": - "integrity" "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" - "resolved" "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz" - "version" "1.4.8" - -"spawn-command@^0.0.2-1": - "integrity" "sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==" - "resolved" "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz" - "version" "0.0.2-1" - -"spdx-correct@^3.0.0": - "integrity" "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==" - "resolved" "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz" - "version" "3.1.1" - dependencies: - "spdx-expression-parse" "^3.0.0" - "spdx-license-ids" "^3.0.0" - -"spdx-exceptions@^2.1.0": - "integrity" "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" - "resolved" "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz" - "version" "2.3.0" - -"spdx-expression-parse@^3.0.0", "spdx-expression-parse@^3.0.1": - "integrity" "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==" - "resolved" "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "spdx-exceptions" "^2.1.0" - "spdx-license-ids" "^3.0.0" - -"spdx-license-ids@^3.0.0": - "integrity" "sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==" - "resolved" "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz" - "version" "3.0.10" - -"spdy-transport@^3.0.0": - "integrity" "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==" - "resolved" "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz" - "version" "3.0.0" - 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" - -"spdy@^4.0.2": - "integrity" "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==" - "resolved" "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz" - "version" "4.0.2" - 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" - -"split-on-first@^1.0.0": - "integrity" "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==" - "resolved" "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz" - "version" "1.1.0" - -"split@^1.0.0": - "integrity" "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==" - "resolved" "https://registry.npmjs.org/split/-/split-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "through" "2" - -"split2@^3.0.0": - "integrity" "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==" - "resolved" "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz" - "version" "3.2.2" - dependencies: - "readable-stream" "^3.0.0" - -"sprintf-js@^1.1.2": - "integrity" "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==" - "resolved" "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz" - "version" "1.1.2" - -"sprintf-js@~1.0.2": - "integrity" "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" - "resolved" "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" - "version" "1.0.3" - -"sqlite3@^5.0.10", "sqlite3@^5.0.11", "sqlite3@^5.0.3": - "integrity" "sha512-4akFOr7u9lJEeAWLJxmwiV43DJcGV7w3ab7SjQFAFaTVyknY3rZjvXTKIVtWqUoY4xwhjwoHKYs2HDW2SoHVsA==" - "resolved" "https://registry.npmjs.org/sqlite3/-/sqlite3-5.0.11.tgz" - "version" "5.0.11" - dependencies: - "@mapbox/node-pre-gyp" "^1.0.0" - "node-addon-api" "^4.2.0" - "tar" "^6.1.11" - optionalDependencies: - "node-gyp" "8.x" - -"sqlstring@^2.3.2": - "integrity" "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==" - "resolved" "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz" - "version" "2.3.3" - -"sshpk@^1.7.0": - "integrity" "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==" - "resolved" "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz" - "version" "1.16.1" - dependencies: - "asn1" "~0.2.3" - "assert-plus" "^1.0.0" - "bcrypt-pbkdf" "^1.0.0" - "dashdash" "^1.12.0" - "ecc-jsbn" "~0.1.1" - "getpass" "^0.1.1" - "jsbn" "~0.1.0" - "safer-buffer" "^2.0.2" - "tweetnacl" "~0.14.0" - -"ssri@^8.0.0", "ssri@^8.0.1": - "integrity" "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==" - "resolved" "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz" - "version" "8.0.1" - dependencies: - "minipass" "^3.1.1" - -"stable@^0.1.8": - "integrity" "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" - "resolved" "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz" - "version" "0.1.8" - -"stack-utils@^2.0.3": - "integrity" "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==" - "resolved" "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz" - "version" "2.0.6" - dependencies: - "escape-string-regexp" "^2.0.0" - -"stackframe@^1.3.4": - "integrity" "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==" - "resolved" "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz" - "version" "1.3.4" - -"stat-mode@^1.0.0": - "integrity" "sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg==" - "resolved" "https://registry.npmjs.org/stat-mode/-/stat-mode-1.0.0.tgz" - "version" "1.0.0" - -"statuses@>= 1.4.0 < 2": - "integrity" "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==" - "resolved" "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" - "version" "1.5.0" - -"statuses@2.0.1": - "integrity" "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" - "resolved" "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" - "version" "2.0.1" - -"streamsearch@^1.1.0": - "integrity" "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==" - "resolved" "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz" - "version" "1.1.0" - -"strict-uri-encode@^2.0.0": - "integrity" "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==" - "resolved" "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz" - "version" "2.0.0" - -"string_decoder@^1.1.1": - "integrity" "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==" - "resolved" "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" - "version" "1.3.0" - dependencies: - "safe-buffer" "~5.2.0" - -"string_decoder@~1.1.1": - "integrity" "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==" - "resolved" "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" - "version" "1.1.1" - dependencies: - "safe-buffer" "~5.1.0" - -"string-argv@^0.3.1", "string-argv@0.3.1": - "integrity" "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==" - "resolved" "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz" - "version" "0.3.1" - -"string-length@^4.0.1": - "integrity" "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==" - "resolved" "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz" - "version" "4.0.2" - dependencies: - "char-regex" "^1.0.2" - "strip-ansi" "^6.0.0" - -"string-length@^5.0.1": - "integrity" "sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow==" - "resolved" "https://registry.npmjs.org/string-length/-/string-length-5.0.1.tgz" - "version" "5.0.1" - dependencies: - "char-regex" "^2.0.0" - "strip-ansi" "^7.0.1" - -"string-natural-compare@^3.0.1": - "integrity" "sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==" - "resolved" "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz" - "version" "3.0.1" - -"string-width@^1.0.1": - "integrity" "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==" - "resolved" "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "code-point-at" "^1.0.0" - "is-fullwidth-code-point" "^1.0.0" - "strip-ansi" "^3.0.0" - -"string-width@^1.0.2 || 2 || 3 || 4", "string-width@^4.0.0", "string-width@^4.1.0", "string-width@^4.2.0", "string-width@^4.2.2", "string-width@^4.2.3": - "integrity" "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==" - "resolved" "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" - "version" "4.2.3" - dependencies: - "emoji-regex" "^8.0.0" - "is-fullwidth-code-point" "^3.0.0" - "strip-ansi" "^6.0.1" - -"string-width@^3.0.0", "string-width@^3.1.0": - "integrity" "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==" - "resolved" "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "emoji-regex" "^7.0.1" - "is-fullwidth-code-point" "^2.0.0" - "strip-ansi" "^5.1.0" - -"string-width@^5.0.0": - "integrity" "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==" - "resolved" "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz" - "version" "5.1.2" - dependencies: - "eastasianwidth" "^0.2.0" - "emoji-regex" "^9.2.2" - "strip-ansi" "^7.0.1" - -"string.prototype.matchall@^4.0.6", "string.prototype.matchall@^4.0.7": - "integrity" "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==" - "resolved" "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz" - "version" "4.0.7" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.3" - "es-abstract" "^1.19.1" - "get-intrinsic" "^1.1.1" - "has-symbols" "^1.0.3" - "internal-slot" "^1.0.3" - "regexp.prototype.flags" "^1.4.1" - "side-channel" "^1.0.4" - -"string.prototype.trim@^1.2.7": - "integrity" "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==" - "resolved" "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz" - "version" "1.2.7" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.20.4" - -"string.prototype.trimend@^1.0.6": - "integrity" "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==" - "resolved" "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz" - "version" "1.0.6" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.20.4" - -"string.prototype.trimstart@^1.0.6": - "integrity" "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==" - "resolved" "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz" - "version" "1.0.7" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.2.0" - "es-abstract" "^1.22.1" - -"stringify-object@^3.3.0", "stringify-object@3.3.0": - "integrity" "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==" - "resolved" "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz" - "version" "3.3.0" - dependencies: - "get-own-enumerable-property-symbols" "^3.0.0" - "is-obj" "^1.0.1" - "is-regexp" "^1.0.0" - -"strip-ansi@^3.0.0", "strip-ansi@^3.0.1": - "integrity" "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==" - "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "ansi-regex" "^2.0.0" - -"strip-ansi@^5.0.0", "strip-ansi@^5.1.0", "strip-ansi@^5.2.0": - "integrity" "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==" - "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz" - "version" "5.2.0" - dependencies: - "ansi-regex" "^4.1.0" - -"strip-ansi@^6.0.0", "strip-ansi@^6.0.1": - "integrity" "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==" - "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" - "version" "6.0.1" - dependencies: - "ansi-regex" "^5.0.1" - -"strip-ansi@^7.0.1": - "integrity" "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==" - "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz" - "version" "7.1.0" - dependencies: - "ansi-regex" "^6.0.1" - -"strip-bom@^3.0.0": - "integrity" "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==" - "resolved" "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" - "version" "3.0.0" - -"strip-bom@^4.0.0": - "integrity" "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==" - "resolved" "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz" - "version" "4.0.0" - -"strip-comments@^2.0.1": - "integrity" "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==" - "resolved" "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz" - "version" "2.0.1" - -"strip-eof@^1.0.0": - "integrity" "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==" - "resolved" "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz" - "version" "1.0.0" - -"strip-final-newline@^2.0.0": - "integrity" "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" - "resolved" "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" - "version" "2.0.0" - -"strip-final-newline@^3.0.0": - "integrity" "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==" - "resolved" "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz" - "version" "3.0.0" - -"strip-indent@^3.0.0": - "integrity" "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==" - "resolved" "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "min-indent" "^1.0.0" - -"strip-json-comments@^3.1.0", "strip-json-comments@^3.1.1": - "integrity" "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" - "resolved" "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" - "version" "3.1.1" - -"strip-json-comments@~2.0.1": - "integrity" "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==" - "resolved" "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz" - "version" "2.0.1" - -"strong-log-transformer@^2.1.0": - "integrity" "sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==" - "resolved" "https://registry.npmjs.org/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "duplexer" "^0.1.1" - "minimist" "^1.2.0" - "through" "^2.3.4" - -"style-loader@^3.3.1": - "integrity" "sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw==" - "resolved" "https://registry.npmjs.org/style-loader/-/style-loader-3.3.3.tgz" - "version" "3.3.3" - -"style-mod@^4.0.0": - "integrity" "sha512-OPhtyEjyyN9x3nhPsu76f52yUGXiZcgvsrFVtvTkyGRQJ0XK+GPc6ov1z+lRpbeabka+MYEQxOYRnt5nF30aMw==" - "resolved" "https://registry.npmjs.org/style-mod/-/style-mod-4.0.0.tgz" - "version" "4.0.0" - -"stylehacks@^5.1.1": - "integrity" "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==" - "resolved" "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz" - "version" "5.1.1" - dependencies: - "browserslist" "^4.21.4" - "postcss-selector-parser" "^6.0.4" - -"sucrase@^3.32.0": - "integrity" "sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==" - "resolved" "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz" - "version" "3.34.0" - dependencies: - "@jridgewell/gen-mapping" "^0.3.2" - "commander" "^4.0.0" - "glob" "7.1.6" - "lines-and-columns" "^1.1.6" - "mz" "^2.7.0" - "pirates" "^4.0.1" - "ts-interface-checker" "^0.1.9" - -"sumchecker@^3.0.1": - "integrity" "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==" - "resolved" "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "debug" "^4.1.0" - -"superagent@^8.0.0": - "integrity" "sha512-iudipXEel+SzlP9y29UBWGDjB+Zzag+eeA1iLosaR2YHBRr1Q1kC29iBrF2zIVD9fqVbpZnXkN/VJmwFMVyNWg==" - "resolved" "https://registry.npmjs.org/superagent/-/superagent-8.0.0.tgz" - "version" "8.0.0" - dependencies: - "component-emitter" "^1.3.0" - "cookiejar" "^2.1.3" - "debug" "^4.3.4" - "fast-safe-stringify" "^2.1.1" - "form-data" "^4.0.0" - "formidable" "^2.0.1" - "methods" "^1.1.2" - "mime" "2.6.0" - "qs" "^6.10.3" - "readable-stream" "^3.6.0" - "semver" "^7.3.7" - -"supertest@^6.1.3": - "integrity" "sha512-M8xVnCNv+q2T2WXVzxDECvL2695Uv2uUj2O0utxsld/HRyJvOU8W9f1gvsYxSNU4wmIe0/L/ItnpU4iKq0emDA==" - "resolved" "https://registry.npmjs.org/supertest/-/supertest-6.2.4.tgz" - "version" "6.2.4" - dependencies: - "methods" "^1.1.2" - "superagent" "^8.0.0" - -"supports-color@^5.3.0": - "integrity" "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" - "version" "5.5.0" - dependencies: - "has-flag" "^3.0.0" - -"supports-color@^7.0.0", "supports-color@^7.1.0": - "integrity" "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" - "version" "7.2.0" - dependencies: - "has-flag" "^4.0.0" - -"supports-color@^8.0.0": - "integrity" "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" - "version" "8.1.1" - dependencies: - "has-flag" "^4.0.0" - -"supports-color@^8.1.0": - "integrity" "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" - "version" "8.1.1" - dependencies: - "has-flag" "^4.0.0" - -"supports-color@^9.2.2": - "integrity" "sha512-XC6g/Kgux+rJXmwokjm9ECpD6k/smUoS5LKlUCcsYr4IY3rW0XyAympon2RmxGrlnZURMpg5T18gWDP9CsHXFA==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-9.2.2.tgz" - "version" "9.2.2" - -"supports-color@8.1.1": - "integrity" "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" - "version" "8.1.1" - dependencies: - "has-flag" "^4.0.0" - -"supports-hyperlinks@^2.0.0": - "integrity" "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==" - "resolved" "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz" - "version" "2.3.0" - dependencies: - "has-flag" "^4.0.0" - "supports-color" "^7.0.0" - -"supports-preserve-symlinks-flag@^1.0.0": - "integrity" "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" - "resolved" "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" - "version" "1.0.0" - -"svg-parser@^2.0.2": - "integrity" "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==" - "resolved" "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz" - "version" "2.0.4" - -"svgo@^1.2.2": - "integrity" "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==" - "resolved" "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz" - "version" "1.3.2" - dependencies: - "chalk" "^2.4.1" - "coa" "^2.0.2" - "css-select" "^2.0.0" - "css-select-base-adapter" "^0.1.1" - "css-tree" "1.0.0-alpha.37" - "csso" "^4.0.2" - "js-yaml" "^3.13.1" - "mkdirp" "~0.5.1" - "object.values" "^1.1.0" - "sax" "~1.2.4" - "stable" "^0.1.8" - "unquote" "~1.1.1" - "util.promisify" "~1.0.0" - -"svgo@^2.4.0", "svgo@^2.7.0", "svgo@^2.8.0": - "integrity" "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==" - "resolved" "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz" - "version" "2.8.0" - dependencies: - "@trysound/sax" "0.2.0" - "commander" "^7.2.0" - "css-select" "^4.1.3" - "css-tree" "^1.1.3" - "csso" "^4.2.0" - "picocolors" "^1.0.0" - "stable" "^0.1.8" - -"swagger-ui-dist@>=4.11.0": - "integrity" "sha512-H29YxoXWNFT5gHhgK2m7MiZM3fVzTw4t5zWfRJBXnn37leHKWjezo8AHLApZxrGs3mRuQLFhZ3LRgy/S955kNg==" - "resolved" "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-4.13.1.tgz" - "version" "4.13.1" - -"swagger-ui-express@*", "swagger-ui-express@^4.1.6": - "integrity" "sha512-DHk3zFvsxrkcnurGvQlAcLuTDacAVN1JHKDgcba/gr2NFRE4HGwP1YeHIXMiGznkWR4AeS7X5vEblNn4QljuNA==" - "resolved" "https://registry.npmjs.org/swagger-ui-express/-/swagger-ui-express-4.5.0.tgz" - "version" "4.5.0" - dependencies: - "swagger-ui-dist" ">=4.11.0" - -"symbol-observable@4.0.0": - "integrity" "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==" - "resolved" "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz" - "version" "4.0.0" - -"symbol-tree@^3.2.4": - "integrity" "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" - "resolved" "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz" - "version" "3.2.4" - -"table@^6.0.9": - "integrity" "sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==" - "resolved" "https://registry.npmjs.org/table/-/table-6.8.0.tgz" - "version" "6.8.0" - dependencies: - "ajv" "^8.0.1" - "lodash.truncate" "^4.4.2" - "slice-ansi" "^4.0.0" - "string-width" "^4.2.3" - "strip-ansi" "^6.0.1" - -"tailwindcss@^3.0.2": - "integrity" "sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w==" - "resolved" "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.3.tgz" - "version" "3.3.3" - dependencies: - "@alloc/quick-lru" "^5.2.0" - "arg" "^5.0.2" - "chokidar" "^3.5.3" - "didyoumean" "^1.2.2" - "dlv" "^1.1.3" - "fast-glob" "^3.2.12" - "glob-parent" "^6.0.2" - "is-glob" "^4.0.3" - "jiti" "^1.18.2" - "lilconfig" "^2.1.0" - "micromatch" "^4.0.5" - "normalize-path" "^3.0.0" - "object-hash" "^3.0.0" - "picocolors" "^1.0.0" - "postcss" "^8.4.23" - "postcss-import" "^15.1.0" - "postcss-js" "^4.0.1" - "postcss-load-config" "^4.0.1" - "postcss-nested" "^6.0.1" - "postcss-selector-parser" "^6.0.11" - "resolve" "^1.22.2" - "sucrase" "^3.32.0" - -"tapable@^1.0.0": - "integrity" "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" - "resolved" "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz" - "version" "1.1.3" - -"tapable@^2.0.0", "tapable@^2.1.1", "tapable@^2.2.0", "tapable@^2.2.1": - "integrity" "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" - "resolved" "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz" - "version" "2.2.1" - -"tar@^4.4.12": - "integrity" "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==" - "resolved" "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz" - "version" "4.4.19" - dependencies: - "chownr" "^1.1.4" - "fs-minipass" "^1.2.7" - "minipass" "^2.9.0" - "minizlib" "^1.3.3" - "mkdirp" "^0.5.5" - "safe-buffer" "^5.2.1" - "yallist" "^3.1.1" - -"tar@^6.0.2", "tar@^6.1.0", "tar@^6.1.11", "tar@^6.1.2": - "integrity" "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==" - "resolved" "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz" - "version" "6.1.11" - dependencies: - "chownr" "^2.0.0" - "fs-minipass" "^2.0.0" - "minipass" "^3.0.0" - "minizlib" "^2.1.1" - "mkdirp" "^1.0.3" - "yallist" "^4.0.0" - -"temp-dir@^1.0.0": - "integrity" "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==" - "resolved" "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz" - "version" "1.0.0" - -"temp-dir@^2.0.0": - "integrity" "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==" - "resolved" "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz" - "version" "2.0.0" - -"temp-file@^3.4.0": - "integrity" "sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg==" - "resolved" "https://registry.npmjs.org/temp-file/-/temp-file-3.4.0.tgz" - "version" "3.4.0" - dependencies: - "async-exit-hook" "^2.0.1" - "fs-extra" "^10.0.0" - -"temp-write@^4.0.0": - "integrity" "sha512-HIeWmj77uOOHb0QX7siN3OtwV3CTntquin6TNVg6SHOqCP3hYKmox90eeFOGaY1MqJ9WYDDjkyZrW6qS5AWpbw==" - "resolved" "https://registry.npmjs.org/temp-write/-/temp-write-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "graceful-fs" "^4.1.15" - "is-stream" "^2.0.0" - "make-dir" "^3.0.0" - "temp-dir" "^1.0.0" - "uuid" "^3.3.2" - -"tempy@^0.6.0": - "integrity" "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==" - "resolved" "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz" - "version" "0.6.0" - dependencies: - "is-stream" "^2.0.0" - "temp-dir" "^2.0.0" - "type-fest" "^0.16.0" - "unique-string" "^2.0.0" - -"term-size@^2.2.1": - "integrity" "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==" - "resolved" "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz" - "version" "2.2.1" - -"terminal-link@^2.0.0": - "integrity" "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==" - "resolved" "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz" - "version" "2.1.1" - dependencies: - "ansi-escapes" "^4.2.1" - "supports-hyperlinks" "^2.0.0" - -"terser-webpack-plugin@^5.1.3", "terser-webpack-plugin@^5.2.5", "terser-webpack-plugin@^5.3.7": - "integrity" "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==" - "resolved" "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz" - "version" "5.3.9" - dependencies: - "@jridgewell/trace-mapping" "^0.3.17" - "jest-worker" "^27.4.5" - "schema-utils" "^3.1.1" - "serialize-javascript" "^6.0.1" - "terser" "^5.16.8" - -"terser@^5.0.0", "terser@^5.10.0", "terser@^5.16.8", "terser@^5.2.0": - "integrity" "sha512-6p1DjHeuluwxDXcuT9VR8p64klWJKo1ILiy19s6C9+0Bh2+NWTX6nD9EPppiER4ICkHDVB1RkVpin/YW2nQn/g==" - "resolved" "https://registry.npmjs.org/terser/-/terser-5.19.4.tgz" - "version" "5.19.4" - dependencies: - "@jridgewell/source-map" "^0.3.3" - "acorn" "^8.8.2" - "commander" "^2.20.0" - "source-map-support" "~0.5.20" - -"test-exclude@^6.0.0": - "integrity" "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==" - "resolved" "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "@istanbuljs/schema" "^0.1.2" - "glob" "^7.1.4" - "minimatch" "^3.0.4" - -"text-extensions@^1.0.0": - "integrity" "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==" - "resolved" "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz" - "version" "1.9.0" - -"text-table@^0.2.0": - "integrity" "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" - "resolved" "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" - "version" "0.2.0" - -"thenify-all@^1.0.0": - "integrity" "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==" - "resolved" "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz" - "version" "1.6.0" - dependencies: - "thenify" ">= 3.1.0 < 4" - -"thenify@>= 3.1.0 < 4": - "integrity" "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==" - "resolved" "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz" - "version" "3.3.1" - dependencies: - "any-promise" "^1.0.0" - -"throat@^6.0.1": - "integrity" "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==" - "resolved" "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz" - "version" "6.0.2" - -"through@^2.3.4", "through@^2.3.6", "through@^2.3.8", "through@>=2.2.7 <3", "through@2": - "integrity" "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" - "resolved" "https://registry.npmjs.org/through/-/through-2.3.8.tgz" - "version" "2.3.8" - -"through2@^2.0.0": - "integrity" "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==" - "resolved" "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz" - "version" "2.0.5" - dependencies: - "readable-stream" "~2.3.6" - "xtend" "~4.0.1" - -"through2@^4.0.0": - "integrity" "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==" - "resolved" "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz" - "version" "4.0.2" - dependencies: - "readable-stream" "3" - -"thunky@^1.0.2": - "integrity" "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" - "resolved" "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz" - "version" "1.1.0" - -"timsort@^0.3.0": - "integrity" "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==" - "resolved" "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz" - "version" "0.3.0" - -"tiny-warning@^1.0.2": - "integrity" "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" - "resolved" "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz" - "version" "1.0.3" - -"tmp-promise@^3.0.2": - "integrity" "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==" - "resolved" "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz" - "version" "3.0.3" - dependencies: - "tmp" "^0.2.0" - -"tmp@^0.0.33": - "integrity" "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==" - "resolved" "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz" - "version" "0.0.33" - dependencies: - "os-tmpdir" "~1.0.2" - -"tmp@^0.2.0": - "integrity" "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==" - "resolved" "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz" - "version" "0.2.1" - dependencies: - "rimraf" "^3.0.0" - -"tmpl@1.0.5": - "integrity" "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==" - "resolved" "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz" - "version" "1.0.5" - -"to-fast-properties@^2.0.0": - "integrity" "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" - "resolved" "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" - "version" "2.0.0" - -"to-readable-stream@^1.0.0": - "integrity" "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" - "resolved" "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz" - "version" "1.0.0" - -"to-regex-range@^5.0.1": - "integrity" "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==" - "resolved" "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" - "version" "5.0.1" - dependencies: - "is-number" "^7.0.0" - -"toggle-selection@^1.0.6": - "integrity" "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==" - "resolved" "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz" - "version" "1.0.6" - -"toidentifier@1.0.1": - "integrity" "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" - "resolved" "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" - "version" "1.0.1" - -"toposort@^2.0.2": - "integrity" "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==" - "resolved" "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz" - "version" "2.0.2" - -"tough-cookie@^4.0.0": - "integrity" "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==" - "resolved" "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz" - "version" "4.1.3" - dependencies: - "psl" "^1.1.33" - "punycode" "^2.1.1" - "universalify" "^0.2.0" - "url-parse" "^1.5.3" - -"tough-cookie@~2.5.0": - "integrity" "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==" - "resolved" "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz" - "version" "2.5.0" - dependencies: - "psl" "^1.1.28" - "punycode" "^2.1.1" - -"tr46@^1.0.1": - "integrity" "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==" - "resolved" "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "punycode" "^2.1.0" - -"tr46@^2.1.0": - "integrity" "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==" - "resolved" "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "punycode" "^2.1.1" - -"tr46@~0.0.3": - "integrity" "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - "resolved" "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" - "version" "0.0.3" - -"tree-kill@^1.2.2", "tree-kill@1.2.2": - "integrity" "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==" - "resolved" "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz" - "version" "1.2.2" - -"trim-newlines@^3.0.0": - "integrity" "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==" - "resolved" "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz" - "version" "3.0.1" - -"truncate-utf8-bytes@^1.0.0": - "integrity" "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==" - "resolved" "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "utf8-byte-length" "^1.0.1" - -"tryer@^1.0.1": - "integrity" "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==" - "resolved" "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz" - "version" "1.0.1" - -"ts-interface-checker@^0.1.9": - "integrity" "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==" - "resolved" "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz" - "version" "0.1.13" - -"ts-jest@^27.0.3": - "integrity" "sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA==" - "resolved" "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.5.tgz" - "version" "27.1.5" - dependencies: - "bs-logger" "0.x" - "fast-json-stable-stringify" "2.x" - "jest-util" "^27.0.0" - "json5" "2.x" - "lodash.memoize" "4.x" - "make-error" "1.x" - "semver" "7.x" - "yargs-parser" "20.x" - -"ts-loader@^9.2.3": - "integrity" "sha512-OkyShkcZTsTwyS3Kt7a4rsT/t2qvEVQuKCTg4LJmpj9fhFR7ukGdZwV6Qq3tRUkqcXtfGpPR7+hFKHCG/0d3Lw==" - "resolved" "https://registry.npmjs.org/ts-loader/-/ts-loader-9.3.1.tgz" - "version" "9.3.1" - dependencies: - "chalk" "^4.1.0" - "enhanced-resolve" "^5.0.0" - "micromatch" "^4.0.0" - "semver" "^7.3.4" - -"ts-node@^10.0.0", "ts-node@^10.7.0", "ts-node@>=9.0.0": - "integrity" "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==" - "resolved" "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz" - "version" "10.9.1" - dependencies: - "@cspotcode/source-map-support" "^0.8.0" - "@tsconfig/node10" "^1.0.7" - "@tsconfig/node12" "^1.0.7" - "@tsconfig/node14" "^1.0.0" - "@tsconfig/node16" "^1.0.2" - "acorn" "^8.4.1" - "acorn-walk" "^8.1.1" - "arg" "^4.1.0" - "create-require" "^1.1.0" - "diff" "^4.0.1" - "make-error" "^1.1.1" - "v8-compile-cache-lib" "^3.0.1" - "yn" "3.1.1" - -"ts-poet@^4.15.0": - "integrity" "sha512-sLLR8yQBvHzi9d4R1F4pd+AzQxBfzOSSjfxiJxQhkUoH5bL7RsAC6wgvtVUQdGqiCsyS9rT6/8X2FI7ipdir5g==" - "resolved" "https://registry.npmjs.org/ts-poet/-/ts-poet-4.15.0.tgz" - "version" "4.15.0" - dependencies: - "lodash" "^4.17.15" - "prettier" "^2.5.1" - -"ts-proto-descriptors@1.7.1": - "integrity" "sha512-oIKUh3K4Xts4v29USGLfUG+2mEk32MsqpgZAOUyUlkrcIdv34yE+k2oZ2Nzngm6cV/JgFdOxRCqeyvmWHuYAyw==" - "resolved" "https://registry.npmjs.org/ts-proto-descriptors/-/ts-proto-descriptors-1.7.1.tgz" - "version" "1.7.1" - dependencies: - "long" "^4.0.0" - "protobufjs" "^6.8.8" - -"ts-proto@^1.121.1": - "integrity" "sha512-lO7rT+fmXT6HzfTtClAgjmBLU9bxb6fLsSSpWyYTZgsHbbmowC4zB5JO6PiTcVTKhW3jNlTekwgoSStJM7PrmQ==" - "resolved" "https://registry.npmjs.org/ts-proto/-/ts-proto-1.121.1.tgz" - "version" "1.121.1" - dependencies: - "@types/object-hash" "^1.3.0" - "dataloader" "^1.4.0" - "object-hash" "^1.3.1" - "protobufjs" "^6.11.3" - "ts-poet" "^4.15.0" - "ts-proto-descriptors" "1.7.1" - -"ts-protoc-gen@^0.15.0": - "integrity" "sha512-TycnzEyrdVDlATJ3bWFTtra3SCiEP0W0vySXReAuEygXCUr1j2uaVyL0DhzjwuUdQoW5oXPwk6oZWeA0955V+g==" - "resolved" "https://registry.npmjs.org/ts-protoc-gen/-/ts-protoc-gen-0.15.0.tgz" - "version" "0.15.0" - dependencies: - "google-protobuf" "^3.15.5" - -"tsconfig-paths-webpack-plugin@3.5.2": - "integrity" "sha512-EhnfjHbzm5IYI9YPNVIxx1moxMI4bpHD2e0zTXeDNQcwjjRaGepP7IhTHJkyDBG0CAOoxRfe7jCG630Ou+C6Pw==" - "resolved" "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-3.5.2.tgz" - "version" "3.5.2" - dependencies: - "chalk" "^4.1.0" - "enhanced-resolve" "^5.7.0" - "tsconfig-paths" "^3.9.0" - -"tsconfig-paths@^3.10.1", "tsconfig-paths@^3.9.0", "tsconfig-paths@3.14.1": - "integrity" "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==" - "resolved" "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz" - "version" "3.14.1" - dependencies: - "@types/json5" "^0.0.29" - "json5" "^1.0.1" - "minimist" "^1.2.6" - "strip-bom" "^3.0.0" - -"tsconfig-paths@^3.14.2": - "integrity" "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==" - "resolved" "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz" - "version" "3.14.2" - dependencies: - "@types/json5" "^0.0.29" - "json5" "^1.0.2" - "minimist" "^1.2.6" - "strip-bom" "^3.0.0" - -"tslib@^1.10.0": - "integrity" "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - "resolved" "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" - "version" "1.14.1" - -"tslib@^1.8.1": - "integrity" "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - "resolved" "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" - "version" "1.14.1" - -"tslib@^1.9.0": - "integrity" "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - "resolved" "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" - "version" "1.14.1" - -"tslib@^1.9.3": - "integrity" "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - "resolved" "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" - "version" "1.14.1" - -"tslib@^2.0.0", "tslib@^2.0.1", "tslib@^2.0.3", "tslib@^2.1.0", "tslib@^2.3.1", "tslib@^2.4.0", "tslib@2.4.0": - "integrity" "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" - "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz" - "version" "2.4.0" - -"tslib@2.3.1": - "integrity" "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" - "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz" - "version" "2.3.1" - -"tsutils@^3.21.0": - "integrity" "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==" - "resolved" "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz" - "version" "3.21.0" - dependencies: - "tslib" "^1.8.1" - -"tunnel-agent@^0.6.0": - "integrity" "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==" - "resolved" "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz" - "version" "0.6.0" - dependencies: - "safe-buffer" "^5.0.1" - -"tunnel@^0.0.6": - "integrity" "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==" - "resolved" "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz" - "version" "0.0.6" - -"tweetnacl@^0.14.3", "tweetnacl@~0.14.0": - "integrity" "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" - "resolved" "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" - "version" "0.14.5" - -"type-check@^0.4.0": - "integrity" "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==" - "resolved" "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" - "version" "0.4.0" - dependencies: - "prelude-ls" "^1.2.1" - -"type-check@~0.4.0": - "integrity" "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==" - "resolved" "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" - "version" "0.4.0" - dependencies: - "prelude-ls" "^1.2.1" - -"type-detect@4.0.8": - "integrity" "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" - "resolved" "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" - "version" "4.0.8" - -"type-fest@^0.13.1": - "integrity" "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==" - "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz" - "version" "0.13.1" - -"type-fest@^0.16.0": - "integrity" "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==" - "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz" - "version" "0.16.0" - -"type-fest@^0.18.0": - "integrity" "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==" - "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz" - "version" "0.18.1" - -"type-fest@^0.20.2", "type-fest@>=0.17.0 <5.0.0": - "integrity" "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" - "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" - "version" "0.20.2" - -"type-fest@^0.21.3": - "integrity" "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" - "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" - "version" "0.21.3" - -"type-fest@^0.4.1": - "integrity" "sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw==" - "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.4.1.tgz" - "version" "0.4.1" - -"type-fest@^0.6.0": - "integrity" "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==" - "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz" - "version" "0.6.0" - -"type-fest@^0.8.1": - "integrity" "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" - "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz" - "version" "0.8.1" - -"type-is@^1.6.4", "type-is@~1.6.18": - "integrity" "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==" - "resolved" "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" - "version" "1.6.18" - dependencies: - "media-typer" "0.3.0" - "mime-types" "~2.1.24" - -"typed-array-buffer@^1.0.0": - "integrity" "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==" - "resolved" "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "call-bind" "^1.0.2" - "get-intrinsic" "^1.2.1" - "is-typed-array" "^1.1.10" - -"typed-array-byte-length@^1.0.0": - "integrity" "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==" - "resolved" "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "call-bind" "^1.0.2" - "for-each" "^0.3.3" - "has-proto" "^1.0.1" - "is-typed-array" "^1.1.10" - -"typed-array-byte-offset@^1.0.0": - "integrity" "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==" - "resolved" "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "available-typed-arrays" "^1.0.5" - "call-bind" "^1.0.2" - "for-each" "^0.3.3" - "has-proto" "^1.0.1" - "is-typed-array" "^1.1.10" - -"typed-array-length@^1.0.4": - "integrity" "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==" - "resolved" "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz" - "version" "1.0.4" +"aggregate-error@^3.0.0": + "integrity" "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==" + "resolved" "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz" + "version" "3.1.0" dependencies: - "call-bind" "^1.0.2" - "for-each" "^0.3.3" - "is-typed-array" "^1.1.9" + "clean-stack" "^2.0.0" + "indent-string" "^4.0.0" -"typed-emitter@^2.1.0": - "integrity" "sha512-g/KzbYKbH5C2vPkaXGu8DJlHrGKHLsM25Zg9WuC9pMGfuvT+X25tZQWo5fK1BjBm8+UrVE9LDCvaY0CQk+fXDA==" - "resolved" "https://registry.npmjs.org/typed-emitter/-/typed-emitter-2.1.0.tgz" - "version" "2.1.0" - optionalDependencies: - "rxjs" "*" +"ansi-colors@^4.1.1": + "integrity" "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==" + "resolved" "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz" + "version" "4.1.3" -"typedarray-to-buffer@^3.1.5": - "integrity" "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==" - "resolved" "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz" - "version" "3.1.5" +"ansi-escapes@^4.3.0": + "integrity" "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==" + "resolved" "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" + "version" "4.3.2" dependencies: - "is-typedarray" "^1.0.0" + "type-fest" "^0.21.3" -"typedarray@^0.0.6": - "integrity" "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" - "resolved" "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" - "version" "0.0.6" +"ansi-regex@^5.0.1": + "integrity" "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" + "version" "5.0.1" -"typeorm@^0.3.0": - "integrity" "sha512-MsPJeP6Zuwfe64c++l80+VRqpGEGxf0CkztIEnehQ+CMmQPSHjOnFbFxwBuZ2jiLqZTjLk2ZqQdVF0RmvxNF3Q==" - "resolved" "https://registry.npmjs.org/typeorm/-/typeorm-0.3.7.tgz" - "version" "0.3.7" - dependencies: - "@sqltools/formatter" "^1.2.2" - "app-root-path" "^3.0.0" - "buffer" "^6.0.3" - "chalk" "^4.1.0" - "cli-highlight" "^2.1.11" - "date-fns" "^2.28.0" - "debug" "^4.3.3" - "dotenv" "^16.0.0" - "glob" "^7.2.0" - "js-yaml" "^4.1.0" - "mkdirp" "^1.0.4" - "reflect-metadata" "^0.1.13" - "sha.js" "^2.4.11" - "tslib" "^2.3.1" - "uuid" "^8.3.2" - "xml2js" "^0.4.23" - "yargs" "^17.3.1" +"ansi-regex@^6.0.1": + "integrity" "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" + "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz" + "version" "6.0.1" -"typeorm@^0.3.6": - "integrity" "sha512-MsPJeP6Zuwfe64c++l80+VRqpGEGxf0CkztIEnehQ+CMmQPSHjOnFbFxwBuZ2jiLqZTjLk2ZqQdVF0RmvxNF3Q==" - "resolved" "https://registry.npmjs.org/typeorm/-/typeorm-0.3.7.tgz" - "version" "0.3.7" +"ansi-styles@^4.0.0": + "integrity" "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==" + "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + "version" "4.3.0" dependencies: - "@sqltools/formatter" "^1.2.2" - "app-root-path" "^3.0.0" - "buffer" "^6.0.3" - "chalk" "^4.1.0" - "cli-highlight" "^2.1.11" - "date-fns" "^2.28.0" - "debug" "^4.3.3" - "dotenv" "^16.0.0" - "glob" "^7.2.0" - "js-yaml" "^4.1.0" - "mkdirp" "^1.0.4" - "reflect-metadata" "^0.1.13" - "sha.js" "^2.4.11" - "tslib" "^2.3.1" - "uuid" "^8.3.2" - "xml2js" "^0.4.23" - "yargs" "^17.3.1" - -"typescript@*", "typescript@^3.2.1 || ^4", "typescript@^3.4.5 || ^4.3.5", "typescript@^4.3.5", "typescript@^4.4.3", "typescript@>= 2.7", "typescript@>=2.7", "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta", "typescript@>=3.8 <5.0", "typescript@>3.6.0", "typescript@4.7.4": - "integrity" "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==" - "resolved" "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz" - "version" "4.7.4" - -"ua-parser-js@^0.7.30": - "integrity" "sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==" - "resolved" "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.31.tgz" - "version" "0.7.31" - -"uglify-js@^3.1.4": - "integrity" "sha512-rtPMlmcO4agTUfz10CbgJ1k6UAoXM2gWb3GoMPPZB/+/Ackf8lNWk11K4rYi2D0apgoFRLtQOZhb+/iGNJq26A==" - "resolved" "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.2.tgz" - "version" "3.14.2" - -"uid-number@0.0.6": - "integrity" "sha512-c461FXIljswCuscZn67xq9PpszkPT6RjheWFQTgCyabJrTUozElanb0YEqv2UGgk247YpcJkFBuSGNvBlpXM9w==" - "resolved" "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz" - "version" "0.0.6" + "color-convert" "^2.0.1" -"umask@^1.1.0": - "integrity" "sha512-lE/rxOhmiScJu9L6RTNVgB/zZbF+vGC0/p6D3xnkAePI2o0sMyFG966iR5Ki50OI/0mNi2yaRnxfLsPmEZF/JA==" - "resolved" "https://registry.npmjs.org/umask/-/umask-1.1.0.tgz" - "version" "1.1.0" +"ansi-styles@^6.0.0": + "integrity" "sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==" + "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.1.0.tgz" + "version" "6.1.0" -"unbox-primitive@^1.0.2": - "integrity" "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==" - "resolved" "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz" - "version" "1.0.2" +"api@file:/Users/bartkozorog/Projects/flowser/packages/api": + "resolved" "file:packages/api" + "version" "1.0.0" dependencies: - "call-bind" "^1.0.2" - "has-bigints" "^1.0.2" - "has-symbols" "^1.0.3" - "which-boxed-primitive" "^1.0.2" + "config" "*" -"unicode-canonical-property-names-ecmascript@^2.0.0": - "integrity" "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==" - "resolved" "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz" +"astral-regex@^2.0.0": + "integrity" "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==" + "resolved" "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz" "version" "2.0.0" -"unicode-match-property-ecmascript@^2.0.0": - "integrity" "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==" - "resolved" "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz" - "version" "2.0.0" +"braces@^3.0.2": + "integrity" "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==" + "resolved" "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" + "version" "3.0.2" dependencies: - "unicode-canonical-property-names-ecmascript" "^2.0.0" - "unicode-property-aliases-ecmascript" "^2.0.0" - -"unicode-match-property-value-ecmascript@^2.0.0": - "integrity" "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==" - "resolved" "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz" - "version" "2.0.0" + "fill-range" "^7.0.1" -"unicode-property-aliases-ecmascript@^2.0.0": - "integrity" "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==" - "resolved" "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz" - "version" "2.0.0" +"clean-stack@^2.0.0": + "integrity" "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" + "resolved" "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz" + "version" "2.2.0" -"unique-filename@^1.1.1": - "integrity" "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==" - "resolved" "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz" - "version" "1.1.1" +"cli-cursor@^3.1.0": + "integrity" "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==" + "resolved" "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" + "version" "3.1.0" dependencies: - "unique-slug" "^2.0.0" + "restore-cursor" "^3.1.0" -"unique-slug@^2.0.0": - "integrity" "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==" - "resolved" "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz" - "version" "2.0.2" +"cli-truncate@^2.1.0": + "integrity" "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==" + "resolved" "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz" + "version" "2.1.0" dependencies: - "imurmurhash" "^0.1.4" + "slice-ansi" "^3.0.0" + "string-width" "^4.2.0" -"unique-string@^2.0.0": - "integrity" "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==" - "resolved" "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz" - "version" "2.0.0" +"cli-truncate@^3.1.0": + "integrity" "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==" + "resolved" "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz" + "version" "3.1.0" dependencies: - "crypto-random-string" "^2.0.0" - -"universal-user-agent@^6.0.0": - "integrity" "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==" - "resolved" "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz" - "version" "6.0.0" - -"universalify@^0.1.0": - "integrity" "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" - "resolved" "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" - "version" "0.1.2" - -"universalify@^0.2.0": - "integrity" "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==" - "resolved" "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz" - "version" "0.2.0" - -"universalify@^2.0.0": - "integrity" "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" - "resolved" "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz" - "version" "2.0.0" + "slice-ansi" "^5.0.0" + "string-width" "^5.0.0" -"unload@2.2.0": - "integrity" "sha512-B60uB5TNBLtN6/LsgAf3udH9saB5p7gqJwcFfbOEZ8BcBHnGwCf6G/TGiEqkRAxX7zAFIUtzdrXQSdL3Q/wqNA==" - "resolved" "https://registry.npmjs.org/unload/-/unload-2.2.0.tgz" - "version" "2.2.0" +"color-convert@^2.0.1": + "integrity" "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==" + "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" + "version" "2.0.1" dependencies: - "@babel/runtime" "^7.6.2" - "detect-node" "^2.0.4" - -"unpipe@~1.0.0", "unpipe@1.0.0": - "integrity" "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" - "resolved" "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" - "version" "1.0.0" - -"unquote@~1.1.1": - "integrity" "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==" - "resolved" "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz" - "version" "1.1.1" + "color-name" "~1.1.4" -"upath@^1.2.0": - "integrity" "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" - "resolved" "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz" - "version" "1.2.0" +"color-name@~1.1.4": + "integrity" "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + "version" "1.1.4" -"upath@^2.0.1": - "integrity" "sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==" - "resolved" "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz" - "version" "2.0.1" +"colorette@^2.0.16": + "integrity" "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==" + "resolved" "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz" + "version" "2.0.19" -"update-browserslist-db@^1.0.11": - "integrity" "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==" - "resolved" "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz" - "version" "1.0.11" - dependencies: - "escalade" "^3.1.1" - "picocolors" "^1.0.0" +"commander@^9.3.0": + "integrity" "sha512-sRPT+umqkz90UA8M1yqYfnHlZA7fF6nSphDtxeywPZ49ysjxDQybzk13CL+mXekDRG92skbcqCLVovuCusNmFw==" + "resolved" "https://registry.npmjs.org/commander/-/commander-9.4.0.tgz" + "version" "9.4.0" -"update-notifier@^5.1.0": - "integrity" "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==" - "resolved" "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz" - "version" "5.1.0" - dependencies: - "boxen" "^5.0.0" - "chalk" "^4.1.0" - "configstore" "^5.0.1" - "has-yarn" "^2.1.0" - "import-lazy" "^2.1.0" - "is-ci" "^2.0.0" - "is-installed-globally" "^0.4.0" - "is-npm" "^5.0.0" - "is-yarn-global" "^0.3.0" - "latest-version" "^5.1.0" - "pupa" "^2.1.1" - "semver" "^7.3.4" - "semver-diff" "^3.1.1" - "xdg-basedir" "^4.0.0" +"config@*", "config@file:/Users/bartkozorog/Projects/flowser/packages/config": + "resolved" "file:packages/config" + "version" "0.0.0" -"uri-js@^4.2.2": - "integrity" "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==" - "resolved" "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" - "version" "4.4.1" +"cross-spawn@^7.0.3": + "integrity" "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==" + "resolved" "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" + "version" "7.0.3" dependencies: - "punycode" "^2.1.0" + "path-key" "^3.1.0" + "shebang-command" "^2.0.0" + "which" "^2.0.1" -"url-parse-lax@^3.0.0": - "integrity" "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==" - "resolved" "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz" - "version" "3.0.0" +"debug@^4.3.4": + "integrity" "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==" + "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" + "version" "4.3.4" dependencies: - "prepend-http" "^2.0.0" + "ms" "2.1.2" -"url-parse@^1.5.3": - "integrity" "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==" - "resolved" "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz" - "version" "1.5.10" - dependencies: - "querystringify" "^2.1.1" - "requires-port" "^1.0.0" +"eastasianwidth@^0.2.0": + "integrity" "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + "resolved" "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" + "version" "0.2.0" -"use-composed-ref@^1.3.0": - "integrity" "sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==" - "resolved" "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.3.0.tgz" - "version" "1.3.0" +"emoji-regex@^8.0.0": + "integrity" "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" + "version" "8.0.0" -"use-isomorphic-layout-effect@^1.1.1": - "integrity" "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==" - "resolved" "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz" - "version" "1.1.2" +"emoji-regex@^9.2.2": + "integrity" "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" + "version" "9.2.2" -"use-latest@^1.2.1": - "integrity" "sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==" - "resolved" "https://registry.npmjs.org/use-latest/-/use-latest-1.2.1.tgz" - "version" "1.2.1" +"enquirer@>= 2.3.0 < 3": + "integrity" "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==" + "resolved" "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz" + "version" "2.3.6" dependencies: - "use-isomorphic-layout-effect" "^1.1.1" - -"usehooks-ts@^2.9.1": - "integrity" "sha512-2FAuSIGHlY+apM9FVlj8/oNhd+1y+Uwv5QNkMQz1oSfdHk4PXo1qoCw9I5M7j0vpH8CSWFJwXbVPeYDjLCx9PA==" - "resolved" "https://registry.npmjs.org/usehooks-ts/-/usehooks-ts-2.9.1.tgz" - "version" "2.9.1" - -"utf8-byte-length@^1.0.1": - "integrity" "sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==" - "resolved" "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz" - "version" "1.0.4" - -"util-deprecate@^1.0.1", "util-deprecate@^1.0.2", "util-deprecate@~1.0.1": - "integrity" "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - "resolved" "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - "version" "1.0.2" + "ansi-colors" "^4.1.1" -"util-promisify@^2.1.0": - "integrity" "sha512-K+5eQPYs14b3+E+hmE2J6gCZ4JmMl9DbYS6BeP2CHq6WMuNxErxf5B/n0fz85L8zUuoO6rIzNNmIQDu/j+1OcA==" - "resolved" "https://registry.npmjs.org/util-promisify/-/util-promisify-2.1.0.tgz" - "version" "2.1.0" +"execa@^5.1.1": + "integrity" "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==" + "resolved" "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" + "version" "5.1.1" dependencies: - "object.getownpropertydescriptors" "^2.0.3" + "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" -"util.promisify@~1.0.0": - "integrity" "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==" - "resolved" "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz" - "version" "1.0.1" +"fill-range@^7.0.1": + "integrity" "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==" + "resolved" "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" + "version" "7.0.1" dependencies: - "define-properties" "^1.1.3" - "es-abstract" "^1.17.2" - "has-symbols" "^1.0.1" - "object.getownpropertydescriptors" "^2.1.0" - -"utila@~0.4": - "integrity" "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==" - "resolved" "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz" - "version" "0.4.0" - -"utility-types@^3.10.0": - "integrity" "sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==" - "resolved" "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz" - "version" "3.10.0" - -"utils-merge@1.0.1": - "integrity" "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" - "resolved" "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" - "version" "1.0.1" - -"uuid@^3.3.2": - "integrity" "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" - "resolved" "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz" - "version" "3.4.0" - -"uuid@^8.3.0", "uuid@^8.3.2", "uuid@8.3.2": - "integrity" "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" - "resolved" "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" - "version" "8.3.2" + "to-regex-range" "^5.0.1" -"v8-compile-cache-lib@^3.0.1": - "integrity" "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==" - "resolved" "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz" - "version" "3.0.1" +"get-stream@^6.0.0": + "integrity" "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" + "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" + "version" "6.0.1" -"v8-compile-cache@^2.0.0", "v8-compile-cache@^2.0.3": - "integrity" "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==" - "resolved" "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz" - "version" "2.3.0" +"human-signals@^2.1.0": + "integrity" "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" + "resolved" "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" + "version" "2.1.0" -"v8-to-istanbul@^8.1.0": - "integrity" "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==" - "resolved" "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz" - "version" "8.1.1" - dependencies: - "@types/istanbul-lib-coverage" "^2.0.1" - "convert-source-map" "^1.6.0" - "source-map" "^0.7.3" +"husky@^7.0.2", "husky@^8.0.1": + "integrity" "sha512-xs7/chUH/CKdOCs7Zy0Aev9e/dKOMZf3K1Az1nar3tzlv0jfqnYtu235bstsWTmXOR0EfINrPa97yy4Lz6RiKw==" + "resolved" "https://registry.npmjs.org/husky/-/husky-8.0.1.tgz" + "version" "8.0.1" -"validate-npm-package-license@^3.0.1", "validate-npm-package-license@^3.0.4": - "integrity" "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==" - "resolved" "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz" - "version" "3.0.4" - dependencies: - "spdx-correct" "^3.0.0" - "spdx-expression-parse" "^3.0.0" +"indent-string@^4.0.0": + "integrity" "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" + "resolved" "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" + "version" "4.0.0" -"validate-npm-package-name@^3.0.0": - "integrity" "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==" - "resolved" "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz" +"is-fullwidth-code-point@^3.0.0": + "integrity" "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" "version" "3.0.0" - dependencies: - "builtins" "^1.0.3" - -"validator@^13.7.0": - "integrity" "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==" - "resolved" "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz" - "version" "13.7.0" -"vary@^1", "vary@~1.1.2": - "integrity" "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" - "resolved" "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" - "version" "1.1.2" - -"verror@^1.10.0": - "integrity" "sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==" - "resolved" "https://registry.npmjs.org/verror/-/verror-1.10.1.tgz" - "version" "1.10.1" - dependencies: - "assert-plus" "^1.0.0" - "core-util-is" "1.0.2" - "extsprintf" "^1.2.0" - -"verror@1.10.0": - "integrity" "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==" - "resolved" "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz" - "version" "1.10.0" - dependencies: - "assert-plus" "^1.0.0" - "core-util-is" "1.0.2" - "extsprintf" "^1.2.0" +"is-fullwidth-code-point@^4.0.0": + "integrity" "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==" + "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz" + "version" "4.0.0" -"w3c-hr-time@^1.0.2": - "integrity" "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==" - "resolved" "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "browser-process-hrtime" "^1.0.0" +"is-number@^7.0.0": + "integrity" "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + "resolved" "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" + "version" "7.0.0" -"w3c-keyname@^2.2.4": - "integrity" "sha512-f+fciywl1SJEniZHD6H+kUO8gOnwIr7f4ijKA6+ZvJFjeGi1r4PDLl53Ayud9O/rk64RqgoQine0feoeOU0kXg==" - "resolved" "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.6.tgz" - "version" "2.2.6" +"is-stream@^2.0.0": + "integrity" "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" + "resolved" "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" + "version" "2.0.1" -"w3c-xmlserializer@^2.0.0": - "integrity" "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==" - "resolved" "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz" +"isexe@^2.0.0": + "integrity" "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + "resolved" "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" "version" "2.0.0" - dependencies: - "xml-name-validator" "^3.0.0" - -"wait-on@^6.0.1": - "integrity" "sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw==" - "resolved" "https://registry.npmjs.org/wait-on/-/wait-on-6.0.1.tgz" - "version" "6.0.1" - dependencies: - "axios" "^0.25.0" - "joi" "^17.6.0" - "lodash" "^4.17.21" - "minimist" "^1.2.5" - "rxjs" "^7.5.4" -"walker@^1.0.7": - "integrity" "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==" - "resolved" "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz" - "version" "1.0.8" - dependencies: - "makeerror" "1.0.12" +"lilconfig@2.0.5": + "integrity" "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==" + "resolved" "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz" + "version" "2.0.5" -"watchpack@^2.3.1", "watchpack@^2.4.0": - "integrity" "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==" - "resolved" "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz" - "version" "2.4.0" +"lint-staged@^11.1.2", "lint-staged@^12.4.2", "lint-staged@^13.0.3": + "integrity" "sha512-BKLUjWDsKquV/JuIcoQW4MSAI3ggwEImF1+sB4zaKvyVx1wBk3FsG7UK9bpnmBTN1pm7EH2BBcMwINJzCRv12g==" + "resolved" "https://registry.npmjs.org/lint-staged/-/lint-staged-12.5.0.tgz" + "version" "12.5.0" dependencies: - "glob-to-regexp" "^0.4.1" - "graceful-fs" "^4.1.2" + "cli-truncate" "^3.1.0" + "colorette" "^2.0.16" + "commander" "^9.3.0" + "debug" "^4.3.4" + "execa" "^5.1.1" + "lilconfig" "2.0.5" + "listr2" "^4.0.5" + "micromatch" "^4.0.5" + "normalize-path" "^3.0.0" + "object-inspect" "^1.12.2" + "pidtree" "^0.5.0" + "string-argv" "^0.3.1" + "supports-color" "^9.2.2" + "yaml" "^1.10.2" -"wbuf@^1.1.0", "wbuf@^1.7.3": - "integrity" "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==" - "resolved" "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz" - "version" "1.7.3" +"listr2@^4.0.5": + "integrity" "sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA==" + "resolved" "https://registry.npmjs.org/listr2/-/listr2-4.0.5.tgz" + "version" "4.0.5" dependencies: - "minimalistic-assert" "^1.0.0" + "cli-truncate" "^2.1.0" + "colorette" "^2.0.16" + "log-update" "^4.0.0" + "p-map" "^4.0.0" + "rfdc" "^1.3.0" + "rxjs" "^7.5.5" + "through" "^2.3.8" + "wrap-ansi" "^7.0.0" -"wcwidth@^1.0.0", "wcwidth@^1.0.1": - "integrity" "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==" - "resolved" "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz" - "version" "1.0.1" +"log-update@^4.0.0": + "integrity" "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==" + "resolved" "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz" + "version" "4.0.0" dependencies: - "defaults" "^1.0.3" - -"weak-lru-cache@^1.2.2": - "integrity" "sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==" - "resolved" "https://registry.npmjs.org/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz" - "version" "1.2.2" - -"web-vitals@^1.1.2": - "integrity" "sha512-PFMKIY+bRSXlMxVAQ+m2aw9c/ioUYfDgrYot0YUa+/xa0sakubWhSDyxAKwzymvXVdF4CZI71g06W+mqhzu6ig==" - "resolved" "https://registry.npmjs.org/web-vitals/-/web-vitals-1.1.2.tgz" - "version" "1.1.2" - -"webidl-conversions@^3.0.0": - "integrity" "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - "resolved" "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" - "version" "3.0.1" - -"webidl-conversions@^4.0.2": - "integrity" "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" - "resolved" "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz" - "version" "4.0.2" - -"webidl-conversions@^5.0.0": - "integrity" "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==" - "resolved" "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz" - "version" "5.0.0" + "ansi-escapes" "^4.3.0" + "cli-cursor" "^3.1.0" + "slice-ansi" "^4.0.0" + "wrap-ansi" "^6.2.0" -"webidl-conversions@^6.1.0": - "integrity" "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==" - "resolved" "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz" - "version" "6.1.0" +"merge-stream@^2.0.0": + "integrity" "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + "resolved" "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" + "version" "2.0.0" -"webpack-dev-middleware@^5.3.1": - "integrity" "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==" - "resolved" "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz" - "version" "5.3.3" +"micromatch@^4.0.5": + "integrity" "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==" + "resolved" "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" + "version" "4.0.5" dependencies: - "colorette" "^2.0.10" - "memfs" "^3.4.3" - "mime-types" "^2.1.31" - "range-parser" "^1.2.1" - "schema-utils" "^4.0.0" + "braces" "^3.0.2" + "picomatch" "^2.3.1" -"webpack-dev-server@^4.6.0", "webpack-dev-server@3.x || 4.x": - "integrity" "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==" - "resolved" "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz" - "version" "4.15.1" - dependencies: - "@types/bonjour" "^3.5.9" - "@types/connect-history-api-fallback" "^1.3.5" - "@types/express" "^4.17.13" - "@types/serve-index" "^1.9.1" - "@types/serve-static" "^1.13.10" - "@types/sockjs" "^0.3.33" - "@types/ws" "^8.5.5" - "ansi-html-community" "^0.0.8" - "bonjour-service" "^1.0.11" - "chokidar" "^3.5.3" - "colorette" "^2.0.10" - "compression" "^1.7.4" - "connect-history-api-fallback" "^2.0.0" - "default-gateway" "^6.0.3" - "express" "^4.17.3" - "graceful-fs" "^4.2.6" - "html-entities" "^2.3.2" - "http-proxy-middleware" "^2.0.3" - "ipaddr.js" "^2.0.1" - "launch-editor" "^2.6.0" - "open" "^8.0.9" - "p-retry" "^4.5.0" - "rimraf" "^3.0.2" - "schema-utils" "^4.0.0" - "selfsigned" "^2.1.1" - "serve-index" "^1.9.1" - "sockjs" "^0.3.24" - "spdy" "^4.0.2" - "webpack-dev-middleware" "^5.3.1" - "ws" "^8.13.0" +"mimic-fn@^2.1.0": + "integrity" "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + "resolved" "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" + "version" "2.1.0" -"webpack-manifest-plugin@^4.0.2": - "integrity" "sha512-YXUAwxtfKIJIKkhg03MKuiFAD72PlrqCiwdwO4VEXdRO5V0ORCNwaOwAZawPZalCbmH9kBDmXnNeQOw+BIEiow==" - "resolved" "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-4.1.1.tgz" - "version" "4.1.1" - dependencies: - "tapable" "^2.0.0" - "webpack-sources" "^2.2.0" +"ms@2.1.2": + "integrity" "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" + "version" "2.1.2" -"webpack-node-externals@3.0.0": - "integrity" "sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==" - "resolved" "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz" +"normalize-path@^3.0.0": + "integrity" "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + "resolved" "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" "version" "3.0.0" -"webpack-sources@^1.4.3": - "integrity" "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==" - "resolved" "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz" - "version" "1.4.3" - dependencies: - "source-list-map" "^2.0.0" - "source-map" "~0.6.1" - -"webpack-sources@^2.2.0": - "integrity" "sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==" - "resolved" "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz" - "version" "2.3.1" +"npm-run-path@^4.0.1": + "integrity" "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==" + "resolved" "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" + "version" "4.0.1" dependencies: - "source-list-map" "^2.0.1" - "source-map" "^0.6.1" - -"webpack-sources@^3.2.3": - "integrity" "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==" - "resolved" "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz" - "version" "3.2.3" + "path-key" "^3.0.0" -"webpack@^4.0.0 || ^5.0.0", "webpack@^4.37.0 || ^5.0.0", "webpack@^4.4.0 || ^5.9.0", "webpack@^4.44.2 || ^5.47.0", "webpack@^5.0.0", "webpack@^5.1.0", "webpack@^5.20.0", "webpack@^5.64.4", "webpack@>= 4", "webpack@>=2", "webpack@>=4.43.0 <6.0.0": - "integrity" "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==" - "resolved" "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz" - "version" "5.88.2" - dependencies: - "@types/eslint-scope" "^3.7.3" - "@types/estree" "^1.0.0" - "@webassemblyjs/ast" "^1.11.5" - "@webassemblyjs/wasm-edit" "^1.11.5" - "@webassemblyjs/wasm-parser" "^1.11.5" - "acorn" "^8.7.1" - "acorn-import-assertions" "^1.9.0" - "browserslist" "^4.14.5" - "chrome-trace-event" "^1.0.2" - "enhanced-resolve" "^5.15.0" - "es-module-lexer" "^1.2.1" - "eslint-scope" "5.1.1" - "events" "^3.2.0" - "glob-to-regexp" "^0.4.1" - "graceful-fs" "^4.2.9" - "json-parse-even-better-errors" "^2.3.1" - "loader-runner" "^4.2.0" - "mime-types" "^2.1.27" - "neo-async" "^2.6.2" - "schema-utils" "^3.2.0" - "tapable" "^2.1.1" - "terser-webpack-plugin" "^5.3.7" - "watchpack" "^2.4.0" - "webpack-sources" "^3.2.3" +"object-inspect@^1.12.2": + "integrity" "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==" + "resolved" "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz" + "version" "1.12.3" -"webpack@^5.11.0", "webpack@5.73.0": - "integrity" "sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA==" - "resolved" "https://registry.npmjs.org/webpack/-/webpack-5.73.0.tgz" - "version" "5.73.0" +"onetime@^5.1.0", "onetime@^5.1.2": + "integrity" "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==" + "resolved" "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" + "version" "5.1.2" dependencies: - "@types/eslint-scope" "^3.7.3" - "@types/estree" "^0.0.51" - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/wasm-edit" "1.11.1" - "@webassemblyjs/wasm-parser" "1.11.1" - "acorn" "^8.4.1" - "acorn-import-assertions" "^1.7.6" - "browserslist" "^4.14.5" - "chrome-trace-event" "^1.0.2" - "enhanced-resolve" "^5.9.3" - "es-module-lexer" "^0.9.0" - "eslint-scope" "5.1.1" - "events" "^3.2.0" - "glob-to-regexp" "^0.4.1" - "graceful-fs" "^4.2.9" - "json-parse-even-better-errors" "^2.3.1" - "loader-runner" "^4.2.0" - "mime-types" "^2.1.27" - "neo-async" "^2.6.2" - "schema-utils" "^3.1.0" - "tapable" "^2.1.1" - "terser-webpack-plugin" "^5.1.3" - "watchpack" "^2.3.1" - "webpack-sources" "^3.2.3" + "mimic-fn" "^2.1.0" -"websocket-driver@^0.7.4", "websocket-driver@>=0.5.1": - "integrity" "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==" - "resolved" "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz" - "version" "0.7.4" +"p-map@^4.0.0": + "integrity" "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==" + "resolved" "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz" + "version" "4.0.0" dependencies: - "http-parser-js" ">=0.5.1" - "safe-buffer" ">=5.1.0" - "websocket-extensions" ">=0.1.1" + "aggregate-error" "^3.0.0" -"websocket-extensions@>=0.1.1": - "integrity" "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==" - "resolved" "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz" - "version" "0.1.4" +"path-key@^3.0.0": + "integrity" "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + "resolved" "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" + "version" "3.1.1" -"whatwg-encoding@^1.0.5": - "integrity" "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==" - "resolved" "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz" - "version" "1.0.5" - dependencies: - "iconv-lite" "0.4.24" +"path-key@^3.1.0": + "integrity" "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + "resolved" "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" + "version" "3.1.1" -"whatwg-fetch@^3.6.2": - "integrity" "sha512-ltN7j66EneWn5TFDO4L9inYC1D+Czsxlrw2SalgjMmEMkLfA5SIZxEFdE6QtHFiiM6Q7WL32c7AkI3w6yxM84Q==" - "resolved" "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.18.tgz" - "version" "3.6.18" +"picomatch@^2.3.1": + "integrity" "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + "resolved" "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" + "version" "2.3.1" -"whatwg-mimetype@^2.3.0": - "integrity" "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" - "resolved" "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz" - "version" "2.3.0" +"pidtree@^0.5.0": + "integrity" "sha512-9nxspIM7OpZuhBxPg73Zvyq7j1QMPMPsGKTqRc2XOaFQauDvoNz9fM1Wdkjmeo7l9GXOZiRs97sPkuayl39wjA==" + "resolved" "https://registry.npmjs.org/pidtree/-/pidtree-0.5.0.tgz" + "version" "0.5.0" -"whatwg-url@^5.0.0": - "integrity" "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==" - "resolved" "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "tr46" "~0.0.3" - "webidl-conversions" "^3.0.0" +"prettier@^2.3.2", "prettier@^2.4.1", "prettier@^2.5.1": + "integrity" "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==" + "resolved" "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz" + "version" "2.7.1" -"whatwg-url@^7.0.0": - "integrity" "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==" - "resolved" "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz" - "version" "7.1.0" +"restore-cursor@^3.1.0": + "integrity" "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==" + "resolved" "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" + "version" "3.1.0" dependencies: - "lodash.sortby" "^4.7.0" - "tr46" "^1.0.1" - "webidl-conversions" "^4.0.2" + "onetime" "^5.1.0" + "signal-exit" "^3.0.2" -"whatwg-url@^8.0.0", "whatwg-url@^8.4.0", "whatwg-url@^8.5.0": - "integrity" "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==" - "resolved" "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz" - "version" "8.7.0" - dependencies: - "lodash" "^4.7.0" - "tr46" "^2.1.0" - "webidl-conversions" "^6.1.0" +"rfdc@^1.3.0": + "integrity" "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==" + "resolved" "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz" + "version" "1.3.0" -"which-boxed-primitive@^1.0.2": - "integrity" "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==" - "resolved" "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" - "version" "1.0.2" +"rxjs@^7.2.0", "rxjs@^7.5.5": + "integrity" "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==" + "resolved" "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz" + "version" "7.5.6" dependencies: - "is-bigint" "^1.0.1" - "is-boolean-object" "^1.1.0" - "is-number-object" "^1.0.4" - "is-string" "^1.0.5" - "is-symbol" "^1.0.3" + "tslib" "^2.1.0" -"which-module@^2.0.0": - "integrity" "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==" - "resolved" "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz" +"shebang-command@^2.0.0": + "integrity" "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==" + "resolved" "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" "version" "2.0.0" - -"which-typed-array@^1.1.10", "which-typed-array@^1.1.11": - "integrity" "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==" - "resolved" "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz" - "version" "1.1.11" - dependencies: - "available-typed-arrays" "^1.0.5" - "call-bind" "^1.0.2" - "for-each" "^0.3.3" - "gopd" "^1.0.1" - "has-tostringtag" "^1.0.0" - -"which@^1.2.9", "which@^1.3.1": - "integrity" "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==" - "resolved" "https://registry.npmjs.org/which/-/which-1.3.1.tgz" - "version" "1.3.1" - dependencies: - "isexe" "^2.0.0" - -"which@^2.0.1": - "integrity" "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==" - "resolved" "https://registry.npmjs.org/which/-/which-2.0.2.tgz" - "version" "2.0.2" dependencies: - "isexe" "^2.0.0" + "shebang-regex" "^3.0.0" -"which@^2.0.2": - "integrity" "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==" - "resolved" "https://registry.npmjs.org/which/-/which-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "isexe" "^2.0.0" +"shebang-regex@^3.0.0": + "integrity" "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + "resolved" "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" + "version" "3.0.0" -"wide-align@^1.1.0", "wide-align@^1.1.2", "wide-align@^1.1.5": - "integrity" "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==" - "resolved" "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz" - "version" "1.1.5" - dependencies: - "string-width" "^1.0.2 || 2 || 3 || 4" +"signal-exit@^3.0.2", "signal-exit@^3.0.3": + "integrity" "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==" + "resolved" "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz" + "version" "3.0.5" -"widest-line@^3.1.0": - "integrity" "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==" - "resolved" "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz" - "version" "3.1.0" +"slice-ansi@^3.0.0": + "integrity" "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==" + "resolved" "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz" + "version" "3.0.0" dependencies: - "string-width" "^4.0.0" + "ansi-styles" "^4.0.0" + "astral-regex" "^2.0.0" + "is-fullwidth-code-point" "^3.0.0" -"windows-release@^4.0.0": - "integrity" "sha512-OxmV4wzDKB1x7AZaZgXMVsdJ1qER1ed83ZrTYd5Bwq2HfJVg3DJS8nqlAG4sMoJ7mu8cuRmLEYyU13BKwctRAg==" - "resolved" "https://registry.npmjs.org/windows-release/-/windows-release-4.0.0.tgz" +"slice-ansi@^4.0.0": + "integrity" "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==" + "resolved" "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz" "version" "4.0.0" dependencies: - "execa" "^4.0.2" - -"wordwrap@^1.0.0": - "integrity" "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==" - "resolved" "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz" - "version" "1.0.0" - -"workbox-background-sync@6.6.0": - "integrity" "sha512-jkf4ZdgOJxC9u2vztxLuPT/UjlH7m/nWRQ/MgGL0v8BJHoZdVGJd18Kck+a0e55wGXdqyHO+4IQTk0685g4MUw==" - "resolved" "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.6.0.tgz" - "version" "6.6.0" - dependencies: - "idb" "^7.0.1" - "workbox-core" "6.6.0" + "ansi-styles" "^4.0.0" + "astral-regex" "^2.0.0" + "is-fullwidth-code-point" "^3.0.0" -"workbox-broadcast-update@6.6.0": - "integrity" "sha512-nm+v6QmrIFaB/yokJmQ/93qIJ7n72NICxIwQwe5xsZiV2aI93MGGyEyzOzDPVz5THEr5rC3FJSsO3346cId64Q==" - "resolved" "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.6.0.tgz" - "version" "6.6.0" +"slice-ansi@^5.0.0": + "integrity" "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==" + "resolved" "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz" + "version" "5.0.0" dependencies: - "workbox-core" "6.6.0" + "ansi-styles" "^6.0.0" + "is-fullwidth-code-point" "^4.0.0" -"workbox-build@6.6.0": - "integrity" "sha512-Tjf+gBwOTuGyZwMz2Nk/B13Fuyeo0Q84W++bebbVsfr9iLkDSo6j6PST8tET9HYA58mlRXwlMGpyWO8ETJiXdQ==" - "resolved" "https://registry.npmjs.org/workbox-build/-/workbox-build-6.6.0.tgz" - "version" "6.6.0" - dependencies: - "@apideck/better-ajv-errors" "^0.3.1" - "@babel/core" "^7.11.1" - "@babel/preset-env" "^7.11.0" - "@babel/runtime" "^7.11.2" - "@rollup/plugin-babel" "^5.2.0" - "@rollup/plugin-node-resolve" "^11.2.1" - "@rollup/plugin-replace" "^2.4.1" - "@surma/rollup-plugin-off-main-thread" "^2.2.3" - "ajv" "^8.6.0" - "common-tags" "^1.8.0" - "fast-json-stable-stringify" "^2.1.0" - "fs-extra" "^9.0.1" - "glob" "^7.1.6" - "lodash" "^4.17.20" - "pretty-bytes" "^5.3.0" - "rollup" "^2.43.1" - "rollup-plugin-terser" "^7.0.0" - "source-map" "^0.8.0-beta.0" - "stringify-object" "^3.3.0" - "strip-comments" "^2.0.1" - "tempy" "^0.6.0" - "upath" "^1.2.0" - "workbox-background-sync" "6.6.0" - "workbox-broadcast-update" "6.6.0" - "workbox-cacheable-response" "6.6.0" - "workbox-core" "6.6.0" - "workbox-expiration" "6.6.0" - "workbox-google-analytics" "6.6.0" - "workbox-navigation-preload" "6.6.0" - "workbox-precaching" "6.6.0" - "workbox-range-requests" "6.6.0" - "workbox-recipes" "6.6.0" - "workbox-routing" "6.6.0" - "workbox-strategies" "6.6.0" - "workbox-streams" "6.6.0" - "workbox-sw" "6.6.0" - "workbox-window" "6.6.0" +"string-argv@^0.3.1": + "integrity" "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==" + "resolved" "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz" + "version" "0.3.1" -"workbox-cacheable-response@6.6.0": - "integrity" "sha512-JfhJUSQDwsF1Xv3EV1vWzSsCOZn4mQ38bWEBR3LdvOxSPgB65gAM6cS2CX8rkkKHRgiLrN7Wxoyu+TuH67kHrw==" - "resolved" "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.6.0.tgz" - "version" "6.6.0" +"string-width@^4.1.0", "string-width@^4.2.0": + "integrity" "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==" + "resolved" "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + "version" "4.2.3" dependencies: - "workbox-core" "6.6.0" - -"workbox-core@6.6.0": - "integrity" "sha512-GDtFRF7Yg3DD859PMbPAYPeJyg5gJYXuBQAC+wyrWuuXgpfoOrIQIvFRZnQ7+czTIQjIr1DhLEGFzZanAT/3bQ==" - "resolved" "https://registry.npmjs.org/workbox-core/-/workbox-core-6.6.0.tgz" - "version" "6.6.0" + "emoji-regex" "^8.0.0" + "is-fullwidth-code-point" "^3.0.0" + "strip-ansi" "^6.0.1" -"workbox-expiration@6.6.0": - "integrity" "sha512-baplYXcDHbe8vAo7GYvyAmlS4f6998Jff513L4XvlzAOxcl8F620O91guoJ5EOf5qeXG4cGdNZHkkVAPouFCpw==" - "resolved" "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.6.0.tgz" - "version" "6.6.0" +"string-width@^5.0.0": + "integrity" "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==" + "resolved" "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz" + "version" "5.1.2" dependencies: - "idb" "^7.0.1" - "workbox-core" "6.6.0" + "eastasianwidth" "^0.2.0" + "emoji-regex" "^9.2.2" + "strip-ansi" "^7.0.1" -"workbox-google-analytics@6.6.0": - "integrity" "sha512-p4DJa6OldXWd6M9zRl0H6vB9lkrmqYFkRQ2xEiNdBFp9U0LhsGO7hsBscVEyH9H2/3eZZt8c97NB2FD9U2NJ+Q==" - "resolved" "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.6.0.tgz" - "version" "6.6.0" +"strip-ansi@^6.0.0", "strip-ansi@^6.0.1": + "integrity" "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==" + "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + "version" "6.0.1" dependencies: - "workbox-background-sync" "6.6.0" - "workbox-core" "6.6.0" - "workbox-routing" "6.6.0" - "workbox-strategies" "6.6.0" + "ansi-regex" "^5.0.1" -"workbox-navigation-preload@6.6.0": - "integrity" "sha512-utNEWG+uOfXdaZmvhshrh7KzhDu/1iMHyQOV6Aqup8Mm78D286ugu5k9MFD9SzBT5TcwgwSORVvInaXWbvKz9Q==" - "resolved" "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.6.0.tgz" - "version" "6.6.0" +"strip-ansi@^7.0.1": + "version" "7.0.1" dependencies: - "workbox-core" "6.6.0" + "ansi-regex" "^6.0.1" -"workbox-precaching@6.6.0": - "integrity" "sha512-eYu/7MqtRZN1IDttl/UQcSZFkHP7dnvr/X3Vn6Iw6OsPMruQHiVjjomDFCNtd8k2RdjLs0xiz9nq+t3YVBcWPw==" - "resolved" "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.6.0.tgz" - "version" "6.6.0" - dependencies: - "workbox-core" "6.6.0" - "workbox-routing" "6.6.0" - "workbox-strategies" "6.6.0" +"strip-final-newline@^2.0.0": + "integrity" "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" + "resolved" "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" + "version" "2.0.0" -"workbox-range-requests@6.6.0": - "integrity" "sha512-V3aICz5fLGq5DpSYEU8LxeXvsT//mRWzKrfBOIxzIdQnV/Wj7R+LyJVTczi4CQ4NwKhAaBVaSujI1cEjXW+hTw==" - "resolved" "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.6.0.tgz" - "version" "6.6.0" - dependencies: - "workbox-core" "6.6.0" +"supports-color@^9.2.2": + "integrity" "sha512-XC6g/Kgux+rJXmwokjm9ECpD6k/smUoS5LKlUCcsYr4IY3rW0XyAympon2RmxGrlnZURMpg5T18gWDP9CsHXFA==" + "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-9.2.2.tgz" + "version" "9.2.2" -"workbox-recipes@6.6.0": - "integrity" "sha512-TFi3kTgYw73t5tg73yPVqQC8QQjxJSeqjXRO4ouE/CeypmP2O/xqmB/ZFBBQazLTPxILUQ0b8aeh0IuxVn9a6A==" - "resolved" "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.6.0.tgz" - "version" "6.6.0" - dependencies: - "workbox-cacheable-response" "6.6.0" - "workbox-core" "6.6.0" - "workbox-expiration" "6.6.0" - "workbox-precaching" "6.6.0" - "workbox-routing" "6.6.0" - "workbox-strategies" "6.6.0" +"through@^2.3.8": + "integrity" "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + "resolved" "https://registry.npmjs.org/through/-/through-2.3.8.tgz" + "version" "2.3.8" -"workbox-routing@6.6.0": - "integrity" "sha512-x8gdN7VDBiLC03izAZRfU+WKUXJnbqt6PG9Uh0XuPRzJPpZGLKce/FkOX95dWHRpOHWLEq8RXzjW0O+POSkKvw==" - "resolved" "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.6.0.tgz" - "version" "6.6.0" +"to-regex-range@^5.0.1": + "integrity" "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==" + "resolved" "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" + "version" "5.0.1" dependencies: - "workbox-core" "6.6.0" + "is-number" "^7.0.0" -"workbox-strategies@6.6.0": - "integrity" "sha512-eC07XGuINAKUWDnZeIPdRdVja4JQtTuc35TZ8SwMb1ztjp7Ddq2CJ4yqLvWzFWGlYI7CG/YGqaETntTxBGdKgQ==" - "resolved" "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.6.0.tgz" - "version" "6.6.0" - dependencies: - "workbox-core" "6.6.0" +"tslib@^2.1.0": + "integrity" "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz" + "version" "2.4.0" -"workbox-streams@6.6.0": - "integrity" "sha512-rfMJLVvwuED09CnH1RnIep7L9+mj4ufkTyDPVaXPKlhi9+0czCu+SJggWCIFbPpJaAZmp2iyVGLqS3RUmY3fxg==" - "resolved" "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.6.0.tgz" - "version" "6.6.0" - dependencies: - "workbox-core" "6.6.0" - "workbox-routing" "6.6.0" +"turbo-darwin-arm64@1.10.4": + "integrity" "sha512-N0XPFLXsZRLE6gKDa5MREpPQp0drOz9PrADaaMXTlspxWS/tmmxyH+ZQ/uGqKC/0mqsNIhZuSFsEVZe1PGaqxw==" + "resolved" "https://registry.npmjs.org/turbo-darwin-arm64/-/turbo-darwin-arm64-1.10.4.tgz" + "version" "1.10.4" -"workbox-sw@6.6.0": - "integrity" "sha512-R2IkwDokbtHUE4Kus8pKO5+VkPHD2oqTgl+XJwh4zbF1HyjAbgNmK/FneZHVU7p03XUt9ICfuGDYISWG9qV/CQ==" - "resolved" "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.6.0.tgz" - "version" "6.6.0" +"turbo@1.10.4": + "integrity" "sha512-EVBt762wVGyZAXtp1UWQptRG2N/9TThUJ1tRawvt/pmB62VmdzgDuz80SQYXK5U5yKEID6OJdqAzq8HnIQVA6g==" + "resolved" "https://registry.npmjs.org/turbo/-/turbo-1.10.4.tgz" + "version" "1.10.4" + optionalDependencies: + "turbo-darwin-64" "1.10.4" + "turbo-darwin-arm64" "1.10.4" + "turbo-linux-64" "1.10.4" + "turbo-linux-arm64" "1.10.4" + "turbo-windows-64" "1.10.4" + "turbo-windows-arm64" "1.10.4" -"workbox-webpack-plugin@^6.4.1": - "integrity" "sha512-xNZIZHalboZU66Wa7x1YkjIqEy1gTR+zPM+kjrYJzqN7iurYZBctBLISyScjhkJKYuRrZUP0iqViZTh8rS0+3A==" - "resolved" "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-6.6.0.tgz" - "version" "6.6.0" - dependencies: - "fast-json-stable-stringify" "^2.1.0" - "pretty-bytes" "^5.4.1" - "upath" "^1.2.0" - "webpack-sources" "^1.4.3" - "workbox-build" "6.6.0" +"type-fest@^0.21.3": + "integrity" "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" + "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" + "version" "0.21.3" -"workbox-window@6.6.0": - "integrity" "sha512-L4N9+vka17d16geaJXXRjENLFldvkWy7JyGxElRD0JvBxvFEd8LOhr+uXCcar/NzAmIBRv9EZ+M+Qr4mOoBITw==" - "resolved" "https://registry.npmjs.org/workbox-window/-/workbox-window-6.6.0.tgz" - "version" "6.6.0" - dependencies: - "@types/trusted-types" "^2.0.2" - "workbox-core" "6.6.0" +"typescript@^4.3.5", "typescript@^4.4.3": + "integrity" "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==" + "resolved" "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz" + "version" "4.7.4" -"wrap-ansi@^5.1.0": - "integrity" "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==" - "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz" - "version" "5.1.0" +"which@^2.0.1": + "integrity" "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==" + "resolved" "https://registry.npmjs.org/which/-/which-2.0.2.tgz" + "version" "2.0.2" dependencies: - "ansi-styles" "^3.2.0" - "string-width" "^3.0.0" - "strip-ansi" "^5.0.0" + "isexe" "^2.0.0" "wrap-ansi@^6.2.0": "integrity" "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==" @@ -17956,256 +526,7 @@ "string-width" "^4.1.0" "strip-ansi" "^6.0.0" -"wrappy@1": - "integrity" "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - "resolved" "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - "version" "1.0.2" - -"write-file-atomic@^2.4.2": - "integrity" "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==" - "resolved" "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz" - "version" "2.4.3" - dependencies: - "graceful-fs" "^4.1.11" - "imurmurhash" "^0.1.4" - "signal-exit" "^3.0.2" - -"write-file-atomic@^3.0.0", "write-file-atomic@^3.0.3": - "integrity" "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==" - "resolved" "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz" - "version" "3.0.3" - dependencies: - "imurmurhash" "^0.1.4" - "is-typedarray" "^1.0.0" - "signal-exit" "^3.0.2" - "typedarray-to-buffer" "^3.1.5" - -"write-json-file@^3.2.0": - "integrity" "sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ==" - "resolved" "https://registry.npmjs.org/write-json-file/-/write-json-file-3.2.0.tgz" - "version" "3.2.0" - dependencies: - "detect-indent" "^5.0.0" - "graceful-fs" "^4.1.15" - "make-dir" "^2.1.0" - "pify" "^4.0.1" - "sort-keys" "^2.0.0" - "write-file-atomic" "^2.4.2" - -"write-json-file@^4.3.0": - "integrity" "sha512-PxiShnxf0IlnQuMYOPPhPkhExoCQuTUNPOa/2JWCYTmBquU9njyyDuwRKN26IZBlp4yn1nt+Agh2HOOBl+55HQ==" - "resolved" "https://registry.npmjs.org/write-json-file/-/write-json-file-4.3.0.tgz" - "version" "4.3.0" - dependencies: - "detect-indent" "^6.0.0" - "graceful-fs" "^4.1.15" - "is-plain-obj" "^2.0.0" - "make-dir" "^3.0.0" - "sort-keys" "^4.0.0" - "write-file-atomic" "^3.0.0" - -"write-pkg@^4.0.0": - "integrity" "sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA==" - "resolved" "https://registry.npmjs.org/write-pkg/-/write-pkg-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "sort-keys" "^2.0.0" - "type-fest" "^0.4.1" - "write-json-file" "^3.2.0" - -"ws@^7.4.6": - "integrity" "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==" - "resolved" "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz" - "version" "7.5.9" - -"ws@^8.13.0": - "integrity" "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==" - "resolved" "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz" - "version" "8.13.0" - -"xdg-basedir@^4.0.0": - "integrity" "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==" - "resolved" "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz" - "version" "4.0.0" - -"xml-name-validator@^3.0.0": - "integrity" "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" - "resolved" "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz" - "version" "3.0.0" - -"xml2js@^0.4.23": - "integrity" "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==" - "resolved" "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz" - "version" "0.4.23" - dependencies: - "sax" ">=0.6.0" - "xmlbuilder" "~11.0.0" - -"xmlbuilder@^15.1.1", "xmlbuilder@>=11.0.1": - "integrity" "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==" - "resolved" "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz" - "version" "15.1.1" - -"xmlbuilder@~11.0.0": - "integrity" "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==" - "resolved" "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz" - "version" "11.0.1" - -"xmlchars@^2.2.0": - "integrity" "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" - "resolved" "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz" - "version" "2.2.0" - -"xtend@^4.0.0", "xtend@~4.0.1": - "integrity" "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" - "resolved" "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" - "version" "4.0.2" - -"xxhash-wasm@^0.4.2": - "integrity" "sha512-/eyHVRJQCirEkSZ1agRSCwriMhwlyUcFkXD5TPVSLP+IPzjsqMVzZwdoczLp1SoQU0R3dxz1RpIK+4YNQbCVOA==" - "resolved" "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-0.4.2.tgz" - "version" "0.4.2" - -"y18n@^4.0.0": - "integrity" "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" - "resolved" "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz" - "version" "4.0.3" - -"y18n@^5.0.5": - "integrity" "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" - "resolved" "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" - "version" "5.0.8" - -"yallist@^2.1.2": - "integrity" "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" - "resolved" "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz" - "version" "2.1.2" - -"yallist@^3.0.0", "yallist@^3.1.1": - "integrity" "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - "resolved" "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" - "version" "3.1.1" - -"yallist@^4.0.0": - "integrity" "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - "resolved" "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" - "version" "4.0.0" - -"yaml@^1.10.0", "yaml@^1.10.2", "yaml@^1.7.2": +"yaml@^1.10.2": "integrity" "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" "resolved" "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" "version" "1.10.2" - -"yaml@^2.1.1": - "integrity" "sha512-o96x3OPo8GjWeSLF+wOAbrPfhFOGY0W00GNaxCDv+9hkcDJEnev1yh8S7pgHF0ik6zc8sQLuL8hjHjJULZp8bw==" - "resolved" "https://registry.npmjs.org/yaml/-/yaml-2.1.1.tgz" - "version" "2.1.1" - -"yargs-parser@^13.1.2": - "integrity" "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==" - "resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz" - "version" "13.1.2" - dependencies: - "camelcase" "^5.0.0" - "decamelize" "^1.2.0" - -"yargs-parser@^20.2.2", "yargs-parser@^20.2.3", "yargs-parser@20.2.4": - "integrity" "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==" - "resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz" - "version" "20.2.4" - -"yargs-parser@^21.0.0": - "integrity" "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==" - "resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz" - "version" "21.0.1" - -"yargs-parser@20.x": - "integrity" "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" - "resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" - "version" "20.2.9" - -"yargs@^13.3.0": - "integrity" "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==" - "resolved" "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz" - "version" "13.3.2" - dependencies: - "cliui" "^5.0.0" - "find-up" "^3.0.0" - "get-caller-file" "^2.0.1" - "require-directory" "^2.1.1" - "require-main-filename" "^2.0.0" - "set-blocking" "^2.0.0" - "string-width" "^3.0.0" - "which-module" "^2.0.0" - "y18n" "^4.0.0" - "yargs-parser" "^13.1.2" - -"yargs@^16.0.0", "yargs@^16.2.0": - "integrity" "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==" - "resolved" "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz" - "version" "16.2.0" - dependencies: - "cliui" "^7.0.2" - "escalade" "^3.1.1" - "get-caller-file" "^2.0.5" - "require-directory" "^2.1.1" - "string-width" "^4.2.0" - "y18n" "^5.0.5" - "yargs-parser" "^20.2.2" - -"yargs@^17.0.1": - "integrity" "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==" - "resolved" "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz" - "version" "17.5.1" - 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" - -"yargs@^17.3.1": - "integrity" "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==" - "resolved" "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz" - "version" "17.5.1" - 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" - -"yauzl@^2.10.0": - "integrity" "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==" - "resolved" "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz" - "version" "2.10.0" - dependencies: - "buffer-crc32" "~0.2.3" - "fd-slicer" "~1.1.0" - -"yn@3.1.1": - "integrity" "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==" - "resolved" "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz" - "version" "3.1.1" - -"yocto-queue@^0.1.0": - "integrity" "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" - "resolved" "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" - "version" "0.1.0" - -"yup@^0.32.11": - "integrity" "sha512-Z2Fe1bn+eLstG8DRR6FTavGD+MeAwyfmouhHsIUgaADz8jvFKbO/fXc2trJKZg+5EBjh4gGm3iU/t3onKlXHIg==" - "resolved" "https://registry.npmjs.org/yup/-/yup-0.32.11.tgz" - "version" "0.32.11" - dependencies: - "@babel/runtime" "^7.15.4" - "@types/lodash" "^4.14.175" - "lodash" "^4.17.21" - "lodash-es" "^4.17.21" - "nanoclone" "^0.2.1" - "property-expr" "^2.0.4" - "toposort" "^2.0.2" From d8e9dbaabe49424cea8ec522008c4bfc26ffd260 Mon Sep 17 00:00:00 2001 From: Bart Date: Sun, 1 Oct 2023 15:41:54 +0200 Subject: [PATCH 002/100] migrate first batch of flow services, add example in-memory index implementation --- .../controllers/contracts.controller.ts | 2 +- .../src/data-processing/processor.service.ts | 8 +- backend/src/flow/flow.controller.ts | 2 +- backend/src/flow/flow.module.ts | 12 +- backend/src/flow/services/cli.service.ts | 2 +- backend/src/flow/services/storage.service.ts | 2 +- backend/src/flow/tests/cli.service.spec.ts | 2 +- backend/src/projects/projects.service.ts | 8 +- backend/src/wallet/wallet.service.ts | 4 +- packages/api/src/capabilities.ts | 7 +- packages/config/tsconfig.json | 1 + packages/core/package.json | 21 + .../core/src/flow}/fcl-values.ts | 33 +- .../core/src/flow/flow-config.service.ts | 25 +- .../core/src/flow/flow-emulator.service.ts | 169 ++- .../core/src/flow/flow-gateway.service.ts | 47 +- packages/core/src/in-memory-index.ts | 41 + packages/core/src/index.ts | 1 + packages/core/tsconfig.json | 3 + shared/src/utils/index.ts | 2 +- tsconfig.json | 9 +- yarn.lock | 1321 ++++++++++++++++- 22 files changed, 1560 insertions(+), 162 deletions(-) create mode 100644 packages/core/package.json rename {shared/src/utils => packages/core/src/flow}/fcl-values.ts (88%) rename backend/src/flow/services/config.service.ts => packages/core/src/flow/flow-config.service.ts (91%) rename backend/src/flow/services/emulator.service.ts => packages/core/src/flow/flow-emulator.service.ts (58%) rename backend/src/flow/services/gateway.service.ts => packages/core/src/flow/flow-gateway.service.ts (86%) create mode 100644 packages/core/src/in-memory-index.ts create mode 100644 packages/core/src/index.ts create mode 100644 packages/core/tsconfig.json diff --git a/backend/src/accounts/controllers/contracts.controller.ts b/backend/src/accounts/controllers/contracts.controller.ts index e48897c8f..7b83f0025 100644 --- a/backend/src/accounts/controllers/contracts.controller.ts +++ b/backend/src/accounts/controllers/contracts.controller.ts @@ -18,7 +18,7 @@ import { AccountContract, } from "@flowser/shared"; import { AccountContractEntity } from "../entities/contract.entity"; -import { FlowConfigService } from "../../flow/services/config.service"; +import { FlowConfigService } from "../../../../packages/core/src/flow/flow-config.service"; @Controller() export class ContractsController { diff --git a/backend/src/data-processing/processor.service.ts b/backend/src/data-processing/processor.service.ts index 6a73f7e3c..469c2e272 100644 --- a/backend/src/data-processing/processor.service.ts +++ b/backend/src/data-processing/processor.service.ts @@ -10,7 +10,7 @@ import { FlowSignableObject, FlowTransaction, FlowTransactionStatus, -} from "../flow/services/gateway.service"; +} from "../../../packages/core/src/flow/flow-gateway.service"; import { BlocksService } from "../blocks/blocks.service"; import { TransactionsService } from "../transactions/transactions.service"; import { AccountsService } from "../accounts/services/accounts.service"; @@ -30,9 +30,7 @@ import { import { getDataSourceInstance } from "../database"; import { ProjectContextLifecycle } from "../flow/utils/project-context"; import { ProjectEntity } from "../projects/project.entity"; -import { - FlowAccountStorageService, -} from "../flow/services/storage.service"; +import { FlowAccountStorageService } from "../flow/services/storage.service"; import { AccountStorageService } from "../accounts/services/storage.service"; import { FlowCoreEventType, @@ -56,7 +54,7 @@ import { FlowEmulatorEvent, FlowEmulatorService, WellKnownAddressesOptions, -} from "../flow/services/emulator.service"; +} from "../../../packages/core/src/flow/flow-emulator.service"; import { AsyncIntervalScheduler } from "../core/async-interval-scheduler"; import { GoBindingsService } from "../go-bindings/go-bindings.service"; diff --git a/backend/src/flow/flow.controller.ts b/backend/src/flow/flow.controller.ts index 18923c36e..cd1a9c29c 100644 --- a/backend/src/flow/flow.controller.ts +++ b/backend/src/flow/flow.controller.ts @@ -22,7 +22,7 @@ import { } from "@flowser/shared"; import { PollingResponseInterceptor } from "../core/interceptors/polling-response.interceptor"; import { FlowTemplatesService } from "./services/templates.service"; -import { FlowConfigService } from "./services/config.service"; +import { FlowConfigService } from "../../../packages/core/src/flow/flow-config.service"; @Controller("flow") export class FlowController { diff --git a/backend/src/flow/flow.module.ts b/backend/src/flow/flow.module.ts index 2380ac6c3..8a52fddda 100644 --- a/backend/src/flow/flow.module.ts +++ b/backend/src/flow/flow.module.ts @@ -1,18 +1,18 @@ import { Module } from "@nestjs/common"; import { TypeOrmModule } from "@nestjs/typeorm"; -import { FlowGatewayService } from "./services/gateway.service"; +import { FlowGatewayService } from "../../../packages/core/src/flow/flow-gateway.service"; import { FlowController } from "./flow.controller"; -import { FlowEmulatorService } from "./services/emulator.service"; +import { FlowEmulatorService } from "../../../packages/core/src/flow/flow-emulator.service"; import { FlowCliService } from "./services/cli.service"; -import { FlowConfigService } from "./services/config.service"; +import { FlowConfigService } from "../../../packages/core/src/flow/flow-config.service"; import { FlowAccountStorageService } from "./services/storage.service"; import { SnapshotEntity } from "./entities/snapshot.entity"; import { FlowSnapshotService } from "./services/snapshot.service"; import { ProcessesModule } from "../processes/processes.module"; import { CoreModule } from "../core/core.module"; import { BlocksModule } from "../blocks/blocks.module"; -import { FlowTemplatesService } from './services/templates.service'; -import { GoBindingsModule } from '../go-bindings/go-bindings.module'; +import { FlowTemplatesService } from "./services/templates.service"; +import { GoBindingsModule } from "../go-bindings/go-bindings.module"; @Module({ imports: [ @@ -24,7 +24,7 @@ import { GoBindingsModule } from '../go-bindings/go-bindings.module'; // to access data removal service from snapshots service. // Otherwise, this module shouldn't depend on many other modules. CoreModule, - GoBindingsModule + GoBindingsModule, ], controllers: [FlowController], providers: [ diff --git a/backend/src/flow/services/cli.service.ts b/backend/src/flow/services/cli.service.ts index fa8578be5..682cf3469 100644 --- a/backend/src/flow/services/cli.service.ts +++ b/backend/src/flow/services/cli.service.ts @@ -7,7 +7,7 @@ import { ProjectContextLifecycle } from "../utils/project-context"; import { ProjectEntity } from "../../projects/project.entity"; import { ManagedProcessEntity } from "../../processes/managed-process.entity"; import { ProcessOutputSource } from "@flowser/shared"; -import { FlowConfigService } from "./config.service"; +import { FlowConfigService } from "../../../../packages/core/src/flow/flow-config.service"; import { ProcessManagerService } from "../../processes/process-manager.service"; import { HashAlgorithm, diff --git a/backend/src/flow/services/storage.service.ts b/backend/src/flow/services/storage.service.ts index 1f052b9ae..cffc619d2 100644 --- a/backend/src/flow/services/storage.service.ts +++ b/backend/src/flow/services/storage.service.ts @@ -1,5 +1,5 @@ import { Injectable } from "@nestjs/common"; -import { FlowGatewayService } from "./gateway.service"; +import { FlowGatewayService } from "../../../../packages/core/src/flow/flow-gateway.service"; import { AccountStorageItemEntity } from "../../accounts/entities/storage-item.entity"; import { ensurePrefixedAddress } from "../../utils/common-utils"; import { diff --git a/backend/src/flow/tests/cli.service.spec.ts b/backend/src/flow/tests/cli.service.spec.ts index c5dbcbe97..ff462ca74 100644 --- a/backend/src/flow/tests/cli.service.spec.ts +++ b/backend/src/flow/tests/cli.service.spec.ts @@ -1,5 +1,5 @@ import { FlowCliService } from "../services/cli.service"; -import { FlowConfigService } from "../services/config.service"; +import { FlowConfigService } from "../../../../packages/core/src/flow/flow-config.service"; import { ProcessManagerService } from "../../processes/process-manager.service"; import { ProjectEntity } from "../../projects/project.entity"; import { Emulator, Gateway } from "@flowser/shared"; diff --git a/backend/src/projects/projects.service.ts b/backend/src/projects/projects.service.ts index 4ca792474..c3b9ee3f1 100644 --- a/backend/src/projects/projects.service.ts +++ b/backend/src/projects/projects.service.ts @@ -10,11 +10,11 @@ import { UpdateProjectDto } from "./dto/update-project.dto"; import { MoreThan, Repository } from "typeorm"; import { ProjectEntity } from "./project.entity"; import { InjectRepository } from "@nestjs/typeorm"; -import { FlowGatewayService } from "../flow/services/gateway.service"; +import { FlowGatewayService } from "../../../packages/core/src/flow/flow-gateway.service"; import { ProcessorService } from "../data-processing/processor.service"; -import { FlowEmulatorService } from "../flow/services/emulator.service"; +import { FlowEmulatorService } from "../../../packages/core/src/flow/flow-emulator.service"; import { FlowCliService } from "../flow/services/cli.service"; -import { FlowConfigService } from "../flow/services/config.service"; +import { FlowConfigService } from "../../../packages/core/src/flow/flow-config.service"; import { ProjectContextLifecycle } from "../flow/utils/project-context"; import { Gateway, @@ -269,7 +269,7 @@ export class ProjectsService { } getDefaultProject() { - const defaultEmulator = FlowEmulatorService.getDefaultFlags(); + const defaultEmulator = FlowEmulatorService.getDefaultConfig(); return Project.fromPartial({ name: "New Project", diff --git a/backend/src/wallet/wallet.service.ts b/backend/src/wallet/wallet.service.ts index c4e5fee62..af6982784 100644 --- a/backend/src/wallet/wallet.service.ts +++ b/backend/src/wallet/wallet.service.ts @@ -18,14 +18,14 @@ import { KeysService } from "../accounts/services/keys.service"; import { FlowAuthorizationFunction, FlowGatewayService, -} from "../flow/services/gateway.service"; +} from "../../../packages/core/src/flow/flow-gateway.service"; import { FclArgumentWithMetadata, FclValues, SendTransactionRequest, SendTransactionResponse, } from "@flowser/shared"; -import { FlowConfigService } from "../flow/services/config.service"; +import { FlowConfigService } from "../../../packages/core/src/flow/flow-config.service"; import { ProjectContextLifecycle } from "../flow/utils/project-context"; import { ProjectEntity } from "src/projects/project.entity"; const fcl = require("@onflow/fcl"); diff --git a/packages/api/src/capabilities.ts b/packages/api/src/capabilities.ts index 19169d2c5..254822a31 100644 --- a/packages/api/src/capabilities.ts +++ b/packages/api/src/capabilities.ts @@ -1,6 +1,9 @@ +import { IdentifiableResource } from "./resources"; + export interface IResourceIndexReader { fetchAll(): Promise; - search(): Promise; + // TODO(restructure): Add searching capabilities + // search(): Promise; } export interface IResourceIndexWriter { @@ -9,7 +12,7 @@ export interface IResourceIndexWriter { delete(resource: Resource): Promise; } -// TODO: Consider defining resource-specific interfaces for fetchers +// TODO(restructure): Consider defining resource-specific interfaces for fetchers export interface IResourceFetcher { fetchById(id: string): Promise; } diff --git a/packages/config/tsconfig.json b/packages/config/tsconfig.json index 39d8145ab..3921df4c9 100644 --- a/packages/config/tsconfig.json +++ b/packages/config/tsconfig.json @@ -1,5 +1,6 @@ { "compilerOptions": { + "lib": ["ES2015"], "strict": true, "module": "commonjs", "declaration": true, diff --git a/packages/core/package.json b/packages/core/package.json new file mode 100644 index 000000000..b45c6c746 --- /dev/null +++ b/packages/core/package.json @@ -0,0 +1,21 @@ +{ + "name": "services", + "version": "1.0.0", + "description": "", + "main": "./src/index.ts", + "types": "./src/index.ts", + "scripts": {}, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "@nestjs/common": "^8.0.0", + "@onflow/fcl": "^1.6.0", + "config": "*", + "node-abort-controller": "^3.0.1" + }, + "devDependencies": { + "@types/node": "^16.11.6", + "typescript": "^4.3.5" + } +} diff --git a/shared/src/utils/fcl-values.ts b/packages/core/src/flow/fcl-values.ts similarity index 88% rename from shared/src/utils/fcl-values.ts rename to packages/core/src/flow/fcl-values.ts index 6aa8b0050..9c3a9a69a 100644 --- a/shared/src/utils/fcl-values.ts +++ b/packages/core/src/flow/fcl-values.ts @@ -1,7 +1,32 @@ -import { - CadenceType, - CadenceTypeKind, -} from "../generated/entities/interactions"; +export enum CadenceTypeKind { + CADENCE_TYPE_UNKNOWN = 0, + CADENCE_TYPE_FIXED_POINT_NUMBER = 1, + CADENCE_TYPE_INTEGER_NUMBER = 2, + CADENCE_TYPE_TEXTUAL = 3, + CADENCE_TYPE_BOOLEAN = 4, + CADENCE_TYPE_ADDRESS = 5, + CADENCE_TYPE_ARRAY = 6, + CADENCE_TYPE_DICTIONARY = 7, + CADENCE_TYPE_PATH = 8, +} + +export interface CadenceType { + kind: CadenceTypeKind; + rawType: string; + optional: boolean; + array: CadenceType_Array | undefined; + dictionary: CadenceType_Dictionary | undefined; +} + +export interface CadenceType_Array { + element: CadenceType | undefined; + size: number; +} + +export interface CadenceType_Dictionary { + key: CadenceType | undefined; + value: CadenceType | undefined; +} // https://developers.flow.com/tooling/fcl-js/api#argumentfunction export type FclArgBuilder = (value: FclValue, type: unknown) => void; diff --git a/backend/src/flow/services/config.service.ts b/packages/core/src/flow/flow-config.service.ts similarity index 91% rename from backend/src/flow/services/config.service.ts rename to packages/core/src/flow/flow-config.service.ts index 9725ec0c7..e02d12ca1 100644 --- a/backend/src/flow/services/config.service.ts +++ b/packages/core/src/flow/flow-config.service.ts @@ -6,11 +6,9 @@ import { } from "@nestjs/common"; import { readFile, writeFile, watch } from "fs/promises"; import * as path from "path"; -import { ProjectContextLifecycle } from "../utils/project-context"; -import { ProjectEntity } from "../../projects/project.entity"; import { AbortController } from "node-abort-controller"; import * as fs from "fs"; -import { isObject } from "../../utils/common-utils"; +import { isObject } from "../../../../backend/src/utils/common-utils"; type FlowAddress = string; @@ -87,21 +85,25 @@ export type FlowAbstractContractConfig = { absolutePath: string; }; +type FlowConfigServiceConfig = { + workingDirectoryPath: string; +}; + @Injectable() -export class FlowConfigService implements ProjectContextLifecycle { +export class FlowConfigService { private logger = new Logger(FlowConfigService.name); private fileListenerController: AbortController | undefined; private config: FlowCliConfig | undefined; private configFileName = "flow.json"; - private projectContext: ProjectEntity | undefined; + private workingDirectoryPath: string | undefined; - public async onEnterProjectContext(project: ProjectEntity) { - this.projectContext = project; + public async configure(config: FlowConfigServiceConfig) { + this.workingDirectoryPath = config.workingDirectoryPath; await this.reload(); } public onExitProjectContext() { - this.projectContext = undefined; + this.workingDirectoryPath = undefined; this.detachListeners(); } @@ -256,11 +258,10 @@ export class FlowConfigService implements ProjectContextLifecycle { if (!pathPostfix) { throw new InternalServerErrorException("Postfix path not provided"); } - if (!this.projectContext) { - throw new Error("Project context not found"); + if (!this.workingDirectoryPath) { + throw new Error("FlowConfigService not configured"); } - // TODO(milestone-3): Detect if pathPostfix is absolute or relative and use it accordingly - return path.join(this.projectContext.filesystemPath, pathPostfix); + return path.join(this.workingDirectoryPath, pathPostfix); } private missingConfigError(path: string) { diff --git a/backend/src/flow/services/emulator.service.ts b/packages/core/src/flow/flow-emulator.service.ts similarity index 58% rename from backend/src/flow/services/emulator.service.ts rename to packages/core/src/flow/flow-emulator.service.ts index ca8e3819d..30ba82fd2 100644 --- a/backend/src/flow/services/emulator.service.ts +++ b/packages/core/src/flow/flow-emulator.service.ts @@ -1,19 +1,11 @@ import { Injectable, InternalServerErrorException } from "@nestjs/common"; +import { ProcessOutputSource } from "@flowser/shared"; +import { ProcessManagerService } from "../../../../backend/src/processes/process-manager.service"; +import { ManagedProcessEntity } from "../../../../backend/src/processes/managed-process.entity"; import { - ServiceStatus, - hashAlgorithmToJSON, - signatureAlgorithmToJSON, - Emulator, - SignatureAlgorithm, - HashAlgorithm, - ProcessOutputSource, -} from "@flowser/shared"; -import { ProjectContextLifecycle } from "../utils/project-context"; -import { ProjectEntity } from "../../projects/project.entity"; -import { ProcessManagerService } from "../../processes/process-manager.service"; -import { ManagedProcessEntity } from "../../processes/managed-process.entity"; -import { FlowGatewayService } from "./gateway.service"; -import { isDefined, waitForMs } from "../../utils/common-utils"; + isDefined, + waitForMs, +} from "../../../../backend/src/utils/common-utils"; import { EventEmitter } from "node:events"; type FlowWellKnownAddresses = { @@ -32,31 +24,65 @@ export enum FlowEmulatorEvent { APIS_STARTED = "APIS_STARTED", } +export type FlowEmulatorConfig = { + workingDirectoryPath: string; + verboseLogging: boolean; + logFormat: string; + restServerPort: number; + grpcServerPort: number; + adminServerPort: number; + blockTime: number; + servicePrivateKey: string; + databasePath: string; + tokenSupply: number; + transactionExpiry: number; + storagePerFlow: number; + minAccountBalance: number; + transactionMaxGasLimit: number; + scriptGasLimit: number; + serviceSignatureAlgorithm: SignatureAlgorithm; + serviceHashAlgorithm: HashAlgorithm; + storageLimit: boolean; + transactionFees: boolean; + persist: boolean; + withContracts: boolean; + enableGrpcDebug: boolean; + enableRestDebug: boolean; + useSimpleAddresses: boolean; + snapshot: boolean; +}; + +// https://docs.onflow.org/cadence/language/crypto/#hashing +export enum SignatureAlgorithm { + // Enum values must be kept unchanged. + ECDSA_P256 = "ECDSA_P256", + ECDSA_secp256k1 = "ECDSA_secp256k1", + BLS_BLS12_381 = "BLS_BLS12_381", +} + +// https://docs.onflow.org/cadence/language/crypto/#hashing +export enum HashAlgorithm { + // Enum values must be kept unchanged. + SHA2_256 = "SHA2_256", + SHA2_384 = "SHA2_384", + SHA3_256 = "SHA3_256", + SHA3_384 = "SHA3_384", + KMAC128_BLS_BLS12_381 = "KMAC128_BLS_BLS12_381", + KECCAK_256 = "KECCAK_256", +} + @Injectable() -export class FlowEmulatorService - extends EventEmitter - implements ProjectContextLifecycle -{ +export class FlowEmulatorService extends EventEmitter { public static readonly processId = "emulator"; - private projectContext: ProjectEntity | undefined; private process: ManagedProcessEntity | undefined; + private config: FlowEmulatorConfig; constructor(private processManagerService: ProcessManagerService) { super(); + this.config = this.getDefaultConfig(); } - async onEnterProjectContext(project: ProjectEntity) { - this.projectContext = project; - const accessNodeStatus = await FlowGatewayService.getApiStatus( - this.projectContext.gateway - ); - if (accessNodeStatus !== ServiceStatus.SERVICE_STATUS_ONLINE) { - await this.start(); - } - } - - async onExitProjectContext() { - this.projectContext = undefined; + async stopAndCleanup() { await this.processManagerService.remove(FlowEmulatorService.processId); this.processManagerService.get(FlowEmulatorService.processId)?.clearLogs(); } @@ -72,15 +98,11 @@ export class FlowEmulatorService public getWellKnownAddresses( options?: WellKnownAddressesOptions ): FlowWellKnownAddresses { - if (!this.projectContext?.emulator) { - throw new Error("Emulator settings not found on project context"); - } // When "simple-addresses" flag is provided, // a monotonic address generation mechanism is used: // https://github.com/onflow/flow-emulator/blob/ebb90a8e721344861bb7e44b58b934b9065235f9/emulator/blockchain.go#L336-L342 const useMonotonicAddresses = - options?.overrideUseMonotonicAddresses ?? - this.projectContext.emulator.useSimpleAddresses; + options?.overrideUseMonotonicAddresses ?? this.config.useSimpleAddresses; return { serviceAccountAddress: useMonotonicAddresses ? "0x0000000000000001" @@ -97,18 +119,15 @@ export class FlowEmulatorService }; } - async start() { - if (!this.projectContext) { - throw new Error("Project context not found"); - } + async start(config: FlowEmulatorConfig) { this.process = new ManagedProcessEntity({ id: FlowEmulatorService.processId, name: "Flow emulator", command: { name: "flow", - args: ["emulator", ...this.getAppliedFlags()], + args: ["emulator", ...this.getProcessFlags(config)], options: { - cwd: this.projectContext.filesystemPath, + cwd: config.workingDirectoryPath, }, }, }); @@ -120,9 +139,11 @@ export class FlowEmulatorService this.emit(FlowEmulatorEvent.APIS_STARTED); } - public static getDefaultFlags(): Emulator { + public getDefaultConfig(): FlowEmulatorConfig { // Some default values vary from the ones used in Flow CLI. return { + // TODO(restructure): Would it make sense to store dir path in a separate struct? + workingDirectoryPath: "", verboseLogging: false, enableRestDebug: false, restServerPort: 8888, @@ -192,13 +213,7 @@ export class FlowEmulatorService } } - private getAppliedFlags(): string[] { - const { emulator } = this.projectContext ?? {}; - - if (!emulator) { - throw new Error("Emulator not found in project context"); - } - + private getProcessFlags(config: FlowEmulatorConfig): string[] { const toFixedPoint = (tokenSupply: number) => tokenSupply.toFixed(1); const flag = (name: string, userValue: any, defaultValue?: any) => { const value = userValue || defaultValue; @@ -208,36 +223,30 @@ export class FlowEmulatorService // keep those parameters up to date with the currently used flow-cli version // https://github.com/onflow/flow-emulator#configuration return [ - flag("port", emulator.grpcServerPort), - flag("rest-port", emulator.restServerPort), - flag("admin-port", emulator.adminServerPort), - flag("verbose", emulator.verboseLogging), - flag("log-format", emulator.logFormat), - flag("block-time", emulator.blockTime), - flag("contracts", emulator.withContracts), - flag("service-priv-key", emulator.servicePrivateKey), - flag( - "service-sig-algo", - signatureAlgorithmToJSON(emulator.serviceSignatureAlgorithm) - ), - flag( - "service-hash-algo", - hashAlgorithmToJSON(emulator.serviceHashAlgorithm) - ), - flag("rest-debug", emulator.enableRestDebug), - flag("grpc-debug", emulator.enableGrpcDebug), - flag("persist", emulator.persist), - flag("snapshot", emulator.snapshot), - flag("dbpath", emulator.databasePath), - flag("simple-addresses", emulator.useSimpleAddresses), - flag("token-supply", toFixedPoint(emulator.tokenSupply)), - flag("transaction-expiry", emulator.transactionExpiry), - flag("storage-limit", emulator.storageLimit), - flag("storage-per-flow", toFixedPoint(emulator.storagePerFlow)), - flag("min-account-balance", emulator.minAccountBalance), - flag("transaction-fees", emulator.transactionFees), - flag("transaction-max-gas-limit", emulator.transactionMaxGasLimit), - flag("script-gas-limit", emulator.scriptGasLimit), + flag("port", config.grpcServerPort), + flag("rest-port", config.restServerPort), + flag("admin-port", config.adminServerPort), + flag("verbose", config.verboseLogging), + flag("log-format", config.logFormat), + flag("block-time", config.blockTime), + flag("contracts", config.withContracts), + flag("service-priv-key", config.servicePrivateKey), + flag("service-sig-algo", config.serviceSignatureAlgorithm), + flag("service-hash-algo", config.serviceHashAlgorithm), + flag("rest-debug", config.enableRestDebug), + flag("grpc-debug", config.enableGrpcDebug), + flag("persist", config.persist), + flag("snapshot", config.snapshot), + flag("dbpath", config.databasePath), + flag("simple-addresses", config.useSimpleAddresses), + flag("token-supply", toFixedPoint(config.tokenSupply)), + flag("transaction-expiry", config.transactionExpiry), + flag("storage-limit", config.storageLimit), + flag("storage-per-flow", toFixedPoint(config.storagePerFlow)), + flag("min-account-balance", config.minAccountBalance), + flag("transaction-fees", config.transactionFees), + flag("transaction-max-gas-limit", config.transactionMaxGasLimit), + flag("script-gas-limit", config.scriptGasLimit), ].filter(isDefined); } } diff --git a/backend/src/flow/services/gateway.service.ts b/packages/core/src/flow/flow-gateway.service.ts similarity index 86% rename from backend/src/flow/services/gateway.service.ts rename to packages/core/src/flow/flow-gateway.service.ts index ba5294580..27b098a37 100644 --- a/backend/src/flow/services/gateway.service.ts +++ b/packages/core/src/flow/flow-gateway.service.ts @@ -1,21 +1,13 @@ -import { - Injectable, - Logger, - PreconditionFailedException, -} from "@nestjs/common"; +import { Injectable } from "@nestjs/common"; import * as http from "http"; -import { ProjectContextLifecycle } from "../utils/project-context"; -import { ProjectEntity } from "../../projects/project.entity"; import { FclArgBuilder, FclArgumentWithMetadata, FclTypeLookup, FclValues, - Gateway, - ServiceStatus, -} from "@flowser/shared"; +} from "./fcl-values"; import * as fcl from "@onflow/fcl"; -import { FlowConfigService } from "./config.service"; +import { FlowConfigService } from "./flow-config.service"; // https://docs.onflow.org/fcl/reference/api/#collectionguaranteeobject export type FlowCollectionGuarantee = { @@ -145,34 +137,29 @@ type FlowTxStatusSubscription = { onceSealed: () => Promise; }; -@Injectable() -export class FlowGatewayService implements ProjectContextLifecycle { - private static readonly logger = new Logger(FlowGatewayService.name); - private projectContext: ProjectEntity | undefined; +export type FlowGatewayConfig = { + restServerAddress: string; +}; +enum ServiceStatus { + SERVICE_STATUS_ONLINE = 1, + SERVICE_STATUS_OFFLINE = 2, +} + +@Injectable() +export class FlowGatewayService { constructor(private readonly flowConfigService: FlowConfigService) {} - onEnterProjectContext(project: ProjectEntity): void { - this.projectContext = project; - const { restServerAddress } = this.projectContext.gateway ?? {}; - if (!restServerAddress) { - throw new PreconditionFailedException("HTTP Access API address unset"); - } - FlowGatewayService.logger.debug( - `@onflow/fcl listening on ${restServerAddress}` - ); + configure(config: FlowGatewayConfig): void { fcl .config({ - "accessNode.api": restServerAddress, + "accessNode.api": config.restServerAddress, "flow.network": "emulator", }) .load({ flowJSON: this.flowConfigService.getRawConfig(), }); } - onExitProjectContext(): void { - this.projectContext = undefined; - } public async executeScript(options: ExecuteFlowScriptOptions) { return await fcl.query({ @@ -254,7 +241,9 @@ export class FlowGatewayService implements ProjectContextLifecycle { return { ...account, balance: account.balance / Math.pow(10, 8), address }; } - static async getApiStatus(gateway: Gateway): Promise { + static async getApiStatus( + gateway: FlowGatewayConfig + ): Promise { const { hostname, port } = new URL(gateway.restServerAddress); return new Promise((resolve) => { const req = http diff --git a/packages/core/src/in-memory-index.ts b/packages/core/src/in-memory-index.ts new file mode 100644 index 000000000..4484f3fce --- /dev/null +++ b/packages/core/src/in-memory-index.ts @@ -0,0 +1,41 @@ +import { + IdentifiableResource, + IResourceIndexReader, + IResourceIndexWriter, +} from "api"; + +export class InMemoryIndex + implements IResourceIndexReader, IResourceIndexWriter +{ + private readonly lookup: Map; + + constructor() { + this.lookup = new Map(); + } + + async add(resource: Resource): Promise { + if (this.lookup.has(resource.id)) { + throw new Error("Resource already exists"); + } else { + this.lookup.set(resource.id, resource); + } + } + + async delete(resource: Resource): Promise { + if (!this.lookup.has(resource.id)) { + throw new Error("Resource not found"); + } + this.lookup.delete(resource.id); + } + + async update(resource: Resource): Promise { + if (!this.lookup.has(resource.id)) { + throw new Error("Resource not found"); + } + this.lookup.set(resource.id, resource); + } + + async fetchAll(): Promise { + return Array.from(this.lookup.values()); + } +} diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts new file mode 100644 index 000000000..c8719a66d --- /dev/null +++ b/packages/core/src/index.ts @@ -0,0 +1 @@ +export * from "./in-memory-index"; diff --git a/packages/core/tsconfig.json b/packages/core/tsconfig.json new file mode 100644 index 000000000..65e818d95 --- /dev/null +++ b/packages/core/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "config/tsconfig.json" +} diff --git a/shared/src/utils/index.ts b/shared/src/utils/index.ts index 0065fcd3c..8ccdfb847 100644 --- a/shared/src/utils/index.ts +++ b/shared/src/utils/index.ts @@ -1 +1 @@ -export * from "./fcl-values"; +export * from "../../../packages/core/src/flow/fcl-values"; diff --git a/tsconfig.json b/tsconfig.json index da545b7d6..6d4cd7a86 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,9 +1,16 @@ { "compilerOptions": { + "experimentalDecorators": true, "baseUrl": "./", "paths": { "@flowser/*": ["./*/src"] - } + }, + "lib": [ + "dom", + "es5", + "scripthost", + "es2015" + ] }, "references": [ { "path": "shared"}, diff --git a/yarn.lock b/yarn.lock index 4629650de..2a018f1da 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,303 @@ # yarn lockfile v1 +"@aashutoshrathi/word-wrap@^1.2.3": + "integrity" "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==" + "resolved" "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz" + "version" "1.2.6" + +"@babel/code-frame@7.12.11": + "integrity" "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==" + "resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz" + "version" "7.12.11" + dependencies: + "@babel/highlight" "^7.10.4" + +"@babel/helper-validator-identifier@^7.22.20": + "integrity" "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==" + "resolved" "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz" + "version" "7.22.20" + +"@babel/highlight@^7.10.4": + "integrity" "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==" + "resolved" "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz" + "version" "7.22.20" + dependencies: + "@babel/helper-validator-identifier" "^7.22.20" + "chalk" "^2.4.2" + "js-tokens" "^4.0.0" + +"@babel/runtime@^7.18.6": + "integrity" "sha512-hC2v6p8ZSI/W0HUzh3V8C5g+NwSKzKPtJwSpTjwl0o297GP9+ZLQSkdvHz46CM3LqyoXxq+5G9komY+eSqSO0g==" + "resolved" "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.1.tgz" + "version" "7.23.1" + dependencies: + "regenerator-runtime" "^0.14.0" + +"@es-joy/jsdoccomment@~0.37.0": + "integrity" "sha512-5vxWJ1gEkEF0yRd0O+uK6dHJf7adrxwQSX8PuRiPfFSAbNLnY0ZJfXaZucoz14Jj2N11xn2DnlEPwWRpYpvRjg==" + "resolved" "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.37.1.tgz" + "version" "0.37.1" + dependencies: + "comment-parser" "1.3.1" + "esquery" "^1.5.0" + "jsdoc-type-pratt-parser" "~4.0.0" + +"@eslint-community/eslint-utils@^4.2.0": + "integrity" "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==" + "resolved" "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz" + "version" "4.4.0" + dependencies: + "eslint-visitor-keys" "^3.3.0" + +"@eslint-community/regexpp@^4.6.1": + "integrity" "sha512-zJmuCWj2VLBt4c25CfBIbMZLGLyhkvs7LznyVX5HfpzeocThgIj5XQK4L+g3U36mMcx8bPMhGyPpwCATamC4jQ==" + "resolved" "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.0.tgz" + "version" "4.9.0" + +"@eslint/eslintrc@^0.4.3": + "integrity" "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==" + "resolved" "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz" + "version" "0.4.3" + dependencies: + "ajv" "^6.12.4" + "debug" "^4.1.1" + "espree" "^7.3.0" + "globals" "^13.9.0" + "ignore" "^4.0.6" + "import-fresh" "^3.2.1" + "js-yaml" "^3.13.1" + "minimatch" "^3.0.4" + "strip-json-comments" "^3.1.1" + +"@eslint/eslintrc@^2.1.2": + "integrity" "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==" + "resolved" "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz" + "version" "2.1.2" + dependencies: + "ajv" "^6.12.4" + "debug" "^4.3.2" + "espree" "^9.6.0" + "globals" "^13.19.0" + "ignore" "^5.2.0" + "import-fresh" "^3.2.1" + "js-yaml" "^4.1.0" + "minimatch" "^3.1.2" + "strip-json-comments" "^3.1.1" + +"@eslint/js@8.50.0": + "integrity" "sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ==" + "resolved" "https://registry.npmjs.org/@eslint/js/-/js-8.50.0.tgz" + "version" "8.50.0" + +"@humanwhocodes/config-array@^0.11.11": + "integrity" "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==" + "resolved" "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz" + "version" "0.11.11" + dependencies: + "@humanwhocodes/object-schema" "^1.2.1" + "debug" "^4.1.1" + "minimatch" "^3.0.5" + +"@humanwhocodes/config-array@^0.5.0": + "integrity" "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==" + "resolved" "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz" + "version" "0.5.0" + dependencies: + "@humanwhocodes/object-schema" "^1.2.0" + "debug" "^4.1.1" + "minimatch" "^3.0.4" + +"@humanwhocodes/module-importer@^1.0.1": + "integrity" "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==" + "resolved" "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" + "version" "1.0.1" + +"@humanwhocodes/object-schema@^1.2.0", "@humanwhocodes/object-schema@^1.2.1": + "integrity" "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" + "resolved" "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz" + "version" "1.2.1" + +"@nestjs/common@^8.0.0": + "integrity" "sha512-m/YsbcBal+gA5CFrDpqXqsSfylo+DIQrkFY3qhVIltsYRfu8ct8J9pqsTO6OPf3mvqdOpFGrV5sBjoyAzOBvsw==" + "resolved" "https://registry.npmjs.org/@nestjs/common/-/common-8.4.7.tgz" + "version" "8.4.7" + dependencies: + "axios" "0.27.2" + "iterare" "1.2.1" + "tslib" "2.4.0" + "uuid" "8.3.2" + +"@nodelib/fs.scandir@2.1.5": + "integrity" "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==" + "resolved" "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" + "version" "2.1.5" + dependencies: + "@nodelib/fs.stat" "2.0.5" + "run-parallel" "^1.1.9" + +"@nodelib/fs.stat@2.0.5": + "integrity" "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" + "resolved" "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" + "version" "2.0.5" + +"@nodelib/fs.walk@^1.2.8": + "integrity" "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==" + "resolved" "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" + "version" "1.2.8" + dependencies: + "@nodelib/fs.scandir" "2.1.5" + "fastq" "^1.6.0" + +"@onflow/config@^1.1.1", "@onflow/config@^1.1.2": + "integrity" "sha512-Jnorp86YkGFJLpCE4ufY8wva5vW8MJxkPzLRITW+aqUDVH9FQvYuTCLHsujy/Mrr9+WgrClf6MQrA2bUCE2zEg==" + "resolved" "https://registry.npmjs.org/@onflow/config/-/config-1.1.2.tgz" + "version" "1.1.2" + dependencies: + "@babel/runtime" "^7.18.6" + "@onflow/util-actor" "^1.2.0" + "eslint" "^8.34.0" + "eslint-plugin-jsdoc" "^40.0.0" + +"@onflow/fcl@^1.6.0": + "integrity" "sha512-ksZFzf0JRtSYDNgCJKeuOt1R39DfBs62uym+GVPW9B5ahWjShoD2D9KYHVZiDbvMX19wUmB9vkgkiUvYfYEobw==" + "resolved" "https://registry.npmjs.org/@onflow/fcl/-/fcl-1.6.0.tgz" + "version" "1.6.0" + dependencies: + "@babel/runtime" "^7.18.6" + "@onflow/config" "^1.1.2" + "@onflow/interaction" "0.0.11" + "@onflow/rlp" "^1.1.0" + "@onflow/sdk" "^1.2.2" + "@onflow/types" "^1.1.0" + "@onflow/util-actor" "^1.2.0" + "@onflow/util-address" "^1.1.0" + "@onflow/util-invariant" "^1.1.0" + "@onflow/util-logger" "^1.2.2" + "@onflow/util-template" "^1.1.0" + "@onflow/util-uid" "^1.1.0" + "cross-fetch" "^3.1.6" + +"@onflow/interaction@0.0.11": + "integrity" "sha512-Xuq1Mmx6Wyba/F/L+QLQs0yJeQDsIDwy5SKk5vrCuVgIj0yD8k506g5L8ODrbM1LWll8i0tQsoOi0F85vNl5sA==" + "resolved" "https://registry.npmjs.org/@onflow/interaction/-/interaction-0.0.11.tgz" + "version" "0.0.11" + +"@onflow/rlp@^1.1.0": + "integrity" "sha512-JJj4dZpKaWmCOXnado+D3RU5xYAXui9kHOmCVfdLReYHIsYBgxwHCDO/hDiQjrbmfLpiybbJKTaIldu+xkCU3Q==" + "resolved" "https://registry.npmjs.org/@onflow/rlp/-/rlp-1.1.0.tgz" + "version" "1.1.0" + dependencies: + "@babel/runtime" "^7.18.6" + "buffer" "^6.0.3" + +"@onflow/sdk@^1.2.2": + "integrity" "sha512-OGwp98C7iP7KUGFoBxgnEr52hnr7vxBTCu/TI/w1giF8USPgjgQXNxJdHVauY54Yu/ruoT6XfdSMAS4PACCB/w==" + "resolved" "https://registry.npmjs.org/@onflow/sdk/-/sdk-1.2.2.tgz" + "version" "1.2.2" + dependencies: + "@babel/runtime" "^7.18.6" + "@onflow/config" "^1.1.1" + "@onflow/rlp" "^1.1.0" + "@onflow/transport-http" "^1.7.1" + "@onflow/util-actor" "^1.2.0" + "@onflow/util-address" "^1.1.0" + "@onflow/util-invariant" "^1.1.0" + "@onflow/util-logger" "^1.2.1" + "@onflow/util-template" "^1.1.0" + "deepmerge" "^4.2.2" + "sha3" "^2.1.4" + +"@onflow/transport-http@^1.7.1": + "integrity" "sha512-enSKRDf2OMIH61ltyZe5pxLB8KifdRdVpWwE0MU2S0Vq5DmNN3FfwUZVh1nrK2aJZkLdryJrNJtvv7ot2NPrYA==" + "resolved" "https://registry.npmjs.org/@onflow/transport-http/-/transport-http-1.7.1.tgz" + "version" "1.7.1" + dependencies: + "@babel/runtime" "^7.18.6" + "@onflow/util-address" "^1.1.0" + "@onflow/util-invariant" "^1.1.0" + "@onflow/util-logger" "^1.2.1" + "@onflow/util-template" "^1.1.0" + "abort-controller" "^3.0.0" + "cross-fetch" "^3.1.6" + +"@onflow/types@^1.1.0": + "integrity" "sha512-UUd2ZAFqdd8BHW//uTg+YRlh3EIH9Na+UYJ9qXpt6y87qjW0Lf4Zkhn6H5IqvhIJsjK17QYnXLFpoXItD/+ToQ==" + "resolved" "https://registry.npmjs.org/@onflow/types/-/types-1.1.0.tgz" + "version" "1.1.0" + dependencies: + "@babel/runtime" "^7.18.6" + +"@onflow/util-actor@^1.2.0": + "integrity" "sha512-voyHXE3qYNC+P75vzv55pGDDwpxxWKWH0aToR/3g9Bq8nKGcGoszxaMJkVy+fKX1akfdT0yKr/GxXRkjCS9SBg==" + "resolved" "https://registry.npmjs.org/@onflow/util-actor/-/util-actor-1.2.0.tgz" + "version" "1.2.0" + dependencies: + "@babel/runtime" "^7.18.6" + "queue-microtask" "1.2.3" + +"@onflow/util-address@^1.1.0": + "integrity" "sha512-HhJOIfNaYAoeYuTNUe85jt4fqnJhFmSbYqyufiJBrplwd3eKmNsan0NYvVYO4U1ecu3KyuY4D9R/NtjGpHjMlA==" + "resolved" "https://registry.npmjs.org/@onflow/util-address/-/util-address-1.1.0.tgz" + "version" "1.1.0" + dependencies: + "@babel/runtime" "^7.18.6" + +"@onflow/util-invariant@^1.1.0": + "integrity" "sha512-5uxweKl5tqeqB1QLzs3dWWLtpNo7H4PgcmgnRIcC2oItAkELcnVCybDdlfYjKB4n/dlg3rIym8cJQE2tBeOpZQ==" + "resolved" "https://registry.npmjs.org/@onflow/util-invariant/-/util-invariant-1.1.0.tgz" + "version" "1.1.0" + dependencies: + "@babel/runtime" "^7.18.6" + +"@onflow/util-logger@^1.2.1", "@onflow/util-logger@^1.2.2": + "integrity" "sha512-qgOZFfp4NvGuIwZ6zMPiskt/xBNo6wG+L4k/nt3v4/eVzNZeUR5OZ7XlcA0fjtr2a3W9CNt83bmFSq/11ZGgCw==" + "resolved" "https://registry.npmjs.org/@onflow/util-logger/-/util-logger-1.2.2.tgz" + "version" "1.2.2" + dependencies: + "@babel/runtime" "^7.18.6" + +"@onflow/util-template@^1.1.0": + "integrity" "sha512-gGqJJH5OTPPRmHk6YxMw4t5Ecy7iHnj00ZlCE7lnlOnpGUNdHrNNfoeE//hO8TBGNNVpOkEQERWiLDph+/oIxg==" + "resolved" "https://registry.npmjs.org/@onflow/util-template/-/util-template-1.1.0.tgz" + "version" "1.1.0" + dependencies: + "@babel/runtime" "^7.18.6" + +"@onflow/util-uid@^1.1.0": + "integrity" "sha512-HmWfKCOXoz1/TIu7fRx6iR7Nfhq6q5Tmn4YWc868SIfFeWv/inpvVJyrKX0nORf87csSnRSqdDzrJGBowgcXVA==" + "resolved" "https://registry.npmjs.org/@onflow/util-uid/-/util-uid-1.1.0.tgz" + "version" "1.1.0" + dependencies: + "@babel/runtime" "^7.18.6" + +"@types/node@^16.11.6": + "integrity" "sha512-Y1zz/LIuJek01+hlPNzzXQhmq/Z2BCP96j18MSXC0S0jSu/IG4FFxmBs7W4/lI2vPJ7foVfEB0hUVtnOjnCiTg==" + "resolved" "https://registry.npmjs.org/@types/node/-/node-16.18.55.tgz" + "version" "16.18.55" + +"abort-controller@^3.0.0": + "integrity" "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==" + "resolved" "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "event-target-shim" "^5.0.0" + +"acorn-jsx@^5.3.1", "acorn-jsx@^5.3.2": + "integrity" "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==" + "resolved" "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" + "version" "5.3.2" + +"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", "acorn@^7.4.0": + "integrity" "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" + "resolved" "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" + "version" "7.4.1" + +"acorn@^8.9.0": + "integrity" "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==" + "resolved" "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz" + "version" "8.10.0" + "aggregate-error@^3.0.0": "integrity" "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==" "resolved" "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz" @@ -10,6 +307,36 @@ "clean-stack" "^2.0.0" "indent-string" "^4.0.0" +"ajv@^6.10.0": + "integrity" "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==" + "resolved" "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" + "version" "6.12.6" + 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" + +"ajv@^6.12.4": + "integrity" "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==" + "resolved" "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" + "version" "6.12.6" + 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" + +"ajv@^8.0.1": + "integrity" "sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==" + "resolved" "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz" + "version" "8.9.0" + dependencies: + "fast-deep-equal" "^3.1.1" + "json-schema-traverse" "^1.0.0" + "require-from-string" "^2.0.2" + "uri-js" "^4.2.2" + "ansi-colors@^4.1.1": "integrity" "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==" "resolved" "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz" @@ -32,7 +359,14 @@ "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz" "version" "6.0.1" -"ansi-styles@^4.0.0": +"ansi-styles@^3.2.1": + "integrity" "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==" + "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" + "version" "3.2.1" + dependencies: + "color-convert" "^1.9.0" + +"ansi-styles@^4.0.0", "ansi-styles@^4.1.0": "integrity" "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==" "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" "version" "4.3.0" @@ -50,11 +384,54 @@ dependencies: "config" "*" +"argparse@^1.0.7": + "integrity" "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==" + "resolved" "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" + "version" "1.0.10" + dependencies: + "sprintf-js" "~1.0.2" + +"argparse@^2.0.1": + "integrity" "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + "resolved" "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" + "version" "2.0.1" + "astral-regex@^2.0.0": "integrity" "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==" "resolved" "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz" "version" "2.0.0" +"asynckit@^0.4.0": + "integrity" "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + "resolved" "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" + "version" "0.4.0" + +"axios@0.27.2": + "integrity" "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==" + "resolved" "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz" + "version" "0.27.2" + dependencies: + "follow-redirects" "^1.14.9" + "form-data" "^4.0.0" + +"balanced-match@^1.0.0": + "integrity" "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + "resolved" "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" + "version" "1.0.2" + +"base64-js@^1.3.1": + "integrity" "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + "resolved" "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" + "version" "1.5.1" + +"brace-expansion@^1.1.7": + "integrity" "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==" + "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" + "version" "1.1.11" + dependencies: + "balanced-match" "^1.0.0" + "concat-map" "0.0.1" + "braces@^3.0.2": "integrity" "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==" "resolved" "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" @@ -62,6 +439,49 @@ dependencies: "fill-range" "^7.0.1" +"buffer@^6.0.3", "buffer@6.0.3": + "integrity" "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==" + "resolved" "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz" + "version" "6.0.3" + dependencies: + "base64-js" "^1.3.1" + "ieee754" "^1.2.1" + +"callsites@^3.0.0": + "integrity" "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + "resolved" "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" + "version" "3.1.0" + +"chalk@^2.4.2": + "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==" + "resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + "version" "2.4.2" + dependencies: + "ansi-styles" "^3.2.1" + "escape-string-regexp" "^1.0.5" + "supports-color" "^5.3.0" + +"chalk@^4.0.0": + "integrity" "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==" + "resolved" "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + "version" "4.1.2" + dependencies: + "ansi-styles" "^4.1.0" + "supports-color" "^7.1.0" + +"class-transformer@*": + "integrity" "sha512-ETWD/H2TbWbKEi7m9N4Km5+cw1hNcqJSxlSYhsLsNjQzWWiZIYA1zafxpK9PwVfaZ6AqR5rrjPVUBGESm5tQUA==" + "resolved" "https://registry.npmjs.org/class-transformer/-/class-transformer-0.4.0.tgz" + "version" "0.4.0" + +"class-validator@*": + "integrity" "sha512-yBUcQy07FPlGzUjoLuUfIOXzgynnQPPruyK1Ge2B74k9ROwnle1E+NxLWnUv5OLU8hA/qL5leAE9XnXq3byaBw==" + "resolved" "https://registry.npmjs.org/class-validator/-/class-validator-0.13.2.tgz" + "version" "0.13.2" + dependencies: + "libphonenumber-js" "^1.9.43" + "validator" "^13.7.0" + "clean-stack@^2.0.0": "integrity" "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" "resolved" "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz" @@ -90,6 +510,13 @@ "slice-ansi" "^5.0.0" "string-width" "^5.0.0" +"color-convert@^1.9.0": + "integrity" "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==" + "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" + "version" "1.9.3" + dependencies: + "color-name" "1.1.3" + "color-convert@^2.0.1": "integrity" "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==" "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" @@ -102,21 +529,50 @@ "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" "version" "1.1.4" +"color-name@1.1.3": + "integrity" "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + "version" "1.1.3" + "colorette@^2.0.16": "integrity" "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==" "resolved" "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz" "version" "2.0.19" +"combined-stream@^1.0.8": + "integrity" "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==" + "resolved" "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" + "version" "1.0.8" + dependencies: + "delayed-stream" "~1.0.0" + "commander@^9.3.0": "integrity" "sha512-sRPT+umqkz90UA8M1yqYfnHlZA7fF6nSphDtxeywPZ49ysjxDQybzk13CL+mXekDRG92skbcqCLVovuCusNmFw==" "resolved" "https://registry.npmjs.org/commander/-/commander-9.4.0.tgz" "version" "9.4.0" +"comment-parser@1.3.1": + "integrity" "sha512-B52sN2VNghyq5ofvUsqZjmk6YkihBX5vMSChmSK9v4ShjKf3Vk5Xcmgpw4o+iIgtrnM/u5FiMpz9VKb8lpBveA==" + "resolved" "https://registry.npmjs.org/comment-parser/-/comment-parser-1.3.1.tgz" + "version" "1.3.1" + +"concat-map@0.0.1": + "integrity" "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + "resolved" "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + "version" "0.0.1" + "config@*", "config@file:/Users/bartkozorog/Projects/flowser/packages/config": "resolved" "file:packages/config" "version" "0.0.0" -"cross-spawn@^7.0.3": +"cross-fetch@^3.1.6": + "integrity" "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==" + "resolved" "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz" + "version" "3.1.8" + dependencies: + "node-fetch" "^2.6.12" + +"cross-spawn@^7.0.2", "cross-spawn@^7.0.3": "integrity" "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==" "resolved" "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" "version" "7.0.3" @@ -125,13 +581,35 @@ "shebang-command" "^2.0.0" "which" "^2.0.1" -"debug@^4.3.4": +"debug@^4.0.1", "debug@^4.1.1", "debug@^4.3.2", "debug@^4.3.4": "integrity" "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==" "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" "version" "4.3.4" dependencies: "ms" "2.1.2" +"deep-is@^0.1.3": + "integrity" "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + "resolved" "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" + "version" "0.1.4" + +"deepmerge@^4.2.2": + "integrity" "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==" + "resolved" "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz" + "version" "4.3.1" + +"delayed-stream@~1.0.0": + "integrity" "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + "resolved" "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" + "version" "1.0.0" + +"doctrine@^3.0.0": + "integrity" "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==" + "resolved" "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "esutils" "^2.0.2" + "eastasianwidth@^0.2.0": "integrity" "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" "resolved" "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" @@ -147,13 +625,237 @@ "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" "version" "9.2.2" -"enquirer@>= 2.3.0 < 3": +"encoding@^0.1.0": + "integrity" "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==" + "resolved" "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz" + "version" "0.1.13" + dependencies: + "iconv-lite" "^0.6.2" + +"enquirer@^2.3.5", "enquirer@>= 2.3.0 < 3": "integrity" "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==" "resolved" "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz" "version" "2.3.6" dependencies: "ansi-colors" "^4.1.1" +"escape-string-regexp@^1.0.5": + "integrity" "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" + "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + "version" "1.0.5" + +"escape-string-regexp@^4.0.0": + "integrity" "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" + "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" + "version" "4.0.0" + +"eslint-plugin-jsdoc@^40.0.0": + "integrity" "sha512-EhCqpzRkxoT2DUB4AnrU0ggBYvTh3bWrLZzQTupq6vSVE6XzNwJVKsOHa41GCoevnsWMBNmoDVjXWGqckjuG1g==" + "resolved" "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-40.3.0.tgz" + "version" "40.3.0" + dependencies: + "@es-joy/jsdoccomment" "~0.37.0" + "comment-parser" "1.3.1" + "debug" "^4.3.4" + "escape-string-regexp" "^4.0.0" + "esquery" "^1.5.0" + "semver" "^7.3.8" + "spdx-expression-parse" "^3.0.1" + +"eslint-scope@^5.1.1": + "integrity" "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==" + "resolved" "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" + "version" "5.1.1" + dependencies: + "esrecurse" "^4.3.0" + "estraverse" "^4.1.1" + +"eslint-scope@^7.2.2": + "integrity" "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==" + "resolved" "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz" + "version" "7.2.2" + dependencies: + "esrecurse" "^4.3.0" + "estraverse" "^5.2.0" + +"eslint-utils@^2.1.0": + "integrity" "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==" + "resolved" "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "eslint-visitor-keys" "^1.1.0" + +"eslint-visitor-keys@^1.1.0": + "integrity" "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==" + "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz" + "version" "1.3.0" + +"eslint-visitor-keys@^1.3.0": + "integrity" "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==" + "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz" + "version" "1.3.0" + +"eslint-visitor-keys@^2.0.0": + "integrity" "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==" + "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz" + "version" "2.1.0" + +"eslint-visitor-keys@^3.3.0": + "integrity" "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==" + "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" + "version" "3.4.3" + +"eslint-visitor-keys@^3.4.1", "eslint-visitor-keys@^3.4.3": + "integrity" "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==" + "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" + "version" "3.4.3" + +"eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^7.0.0 || ^8.0.0": + "integrity" "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==" + "resolved" "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz" + "version" "7.32.0" + dependencies: + "@babel/code-frame" "7.12.11" + "@eslint/eslintrc" "^0.4.3" + "@humanwhocodes/config-array" "^0.5.0" + "ajv" "^6.10.0" + "chalk" "^4.0.0" + "cross-spawn" "^7.0.2" + "debug" "^4.0.1" + "doctrine" "^3.0.0" + "enquirer" "^2.3.5" + "escape-string-regexp" "^4.0.0" + "eslint-scope" "^5.1.1" + "eslint-utils" "^2.1.0" + "eslint-visitor-keys" "^2.0.0" + "espree" "^7.3.1" + "esquery" "^1.4.0" + "esutils" "^2.0.2" + "fast-deep-equal" "^3.1.3" + "file-entry-cache" "^6.0.1" + "functional-red-black-tree" "^1.0.1" + "glob-parent" "^5.1.2" + "globals" "^13.6.0" + "ignore" "^4.0.6" + "import-fresh" "^3.0.0" + "imurmurhash" "^0.1.4" + "is-glob" "^4.0.0" + "js-yaml" "^3.13.1" + "json-stable-stringify-without-jsonify" "^1.0.1" + "levn" "^0.4.1" + "lodash.merge" "^4.6.2" + "minimatch" "^3.0.4" + "natural-compare" "^1.4.0" + "optionator" "^0.9.1" + "progress" "^2.0.0" + "regexpp" "^3.1.0" + "semver" "^7.2.1" + "strip-ansi" "^6.0.0" + "strip-json-comments" "^3.1.0" + "table" "^6.0.9" + "text-table" "^0.2.0" + "v8-compile-cache" "^2.0.3" + +"eslint@^8.34.0": + "integrity" "sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg==" + "resolved" "https://registry.npmjs.org/eslint/-/eslint-8.50.0.tgz" + "version" "8.50.0" + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.2" + "@eslint/js" "8.50.0" + "@humanwhocodes/config-array" "^0.11.11" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + "ajv" "^6.12.4" + "chalk" "^4.0.0" + "cross-spawn" "^7.0.2" + "debug" "^4.3.2" + "doctrine" "^3.0.0" + "escape-string-regexp" "^4.0.0" + "eslint-scope" "^7.2.2" + "eslint-visitor-keys" "^3.4.3" + "espree" "^9.6.1" + "esquery" "^1.4.2" + "esutils" "^2.0.2" + "fast-deep-equal" "^3.1.3" + "file-entry-cache" "^6.0.1" + "find-up" "^5.0.0" + "glob-parent" "^6.0.2" + "globals" "^13.19.0" + "graphemer" "^1.4.0" + "ignore" "^5.2.0" + "imurmurhash" "^0.1.4" + "is-glob" "^4.0.0" + "is-path-inside" "^3.0.3" + "js-yaml" "^4.1.0" + "json-stable-stringify-without-jsonify" "^1.0.1" + "levn" "^0.4.1" + "lodash.merge" "^4.6.2" + "minimatch" "^3.1.2" + "natural-compare" "^1.4.0" + "optionator" "^0.9.3" + "strip-ansi" "^6.0.1" + "text-table" "^0.2.0" + +"espree@^7.3.0", "espree@^7.3.1": + "integrity" "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==" + "resolved" "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz" + "version" "7.3.1" + dependencies: + "acorn" "^7.4.0" + "acorn-jsx" "^5.3.1" + "eslint-visitor-keys" "^1.3.0" + +"espree@^9.6.0", "espree@^9.6.1": + "integrity" "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==" + "resolved" "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz" + "version" "9.6.1" + dependencies: + "acorn" "^8.9.0" + "acorn-jsx" "^5.3.2" + "eslint-visitor-keys" "^3.4.1" + +"esprima@^4.0.0": + "integrity" "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + "resolved" "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" + "version" "4.0.1" + +"esquery@^1.4.0", "esquery@^1.4.2", "esquery@^1.5.0": + "integrity" "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==" + "resolved" "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz" + "version" "1.5.0" + dependencies: + "estraverse" "^5.1.0" + +"esrecurse@^4.3.0": + "integrity" "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==" + "resolved" "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" + "version" "4.3.0" + dependencies: + "estraverse" "^5.2.0" + +"estraverse@^4.1.1": + "integrity" "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" + "version" "4.3.0" + +"estraverse@^5.1.0", "estraverse@^5.2.0": + "integrity" "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" + "version" "5.3.0" + +"esutils@^2.0.2": + "integrity" "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + "resolved" "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" + "version" "2.0.3" + +"event-target-shim@^5.0.0": + "integrity" "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" + "resolved" "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz" + "version" "5.0.1" + "execa@^5.1.1": "integrity" "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==" "resolved" "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" @@ -169,6 +871,35 @@ "signal-exit" "^3.0.3" "strip-final-newline" "^2.0.0" +"fast-deep-equal@^3.1.1", "fast-deep-equal@^3.1.3": + "integrity" "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + "resolved" "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" + "version" "3.1.3" + +"fast-json-stable-stringify@^2.0.0": + "integrity" "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + "resolved" "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" + "version" "2.1.0" + +"fast-levenshtein@^2.0.6": + "integrity" "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" + "resolved" "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" + "version" "2.0.6" + +"fastq@^1.6.0": + "integrity" "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==" + "resolved" "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz" + "version" "1.15.0" + dependencies: + "reusify" "^1.0.4" + +"file-entry-cache@^6.0.1": + "integrity" "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==" + "resolved" "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" + "version" "6.0.1" + dependencies: + "flat-cache" "^3.0.4" + "fill-range@^7.0.1": "integrity" "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==" "resolved" "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" @@ -176,26 +907,173 @@ dependencies: "to-regex-range" "^5.0.1" +"find-up@^5.0.0": + "integrity" "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==" + "resolved" "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "locate-path" "^6.0.0" + "path-exists" "^4.0.0" + +"flat-cache@^3.0.4": + "integrity" "sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==" + "resolved" "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "flatted" "^3.2.7" + "keyv" "^4.5.3" + "rimraf" "^3.0.2" + +"flatted@^3.2.7": + "integrity" "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==" + "resolved" "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz" + "version" "3.2.9" + +"follow-redirects@^1.14.9": + "integrity" "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==" + "resolved" "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz" + "version" "1.15.3" + +"form-data@^4.0.0": + "integrity" "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==" + "resolved" "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "asynckit" "^0.4.0" + "combined-stream" "^1.0.8" + "mime-types" "^2.1.12" + +"fs.realpath@^1.0.0": + "integrity" "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + "resolved" "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + "version" "1.0.0" + +"functional-red-black-tree@^1.0.1": + "integrity" "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==" + "resolved" "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz" + "version" "1.0.1" + "get-stream@^6.0.0": "integrity" "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" "version" "6.0.1" +"glob-parent@^5.1.2": + "integrity" "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==" + "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + "version" "5.1.2" + dependencies: + "is-glob" "^4.0.1" + +"glob-parent@^6.0.2": + "integrity" "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==" + "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" + "version" "6.0.2" + dependencies: + "is-glob" "^4.0.3" + +"glob@^7.1.3": + "integrity" "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==" + "resolved" "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + "version" "7.2.3" + dependencies: + "fs.realpath" "^1.0.0" + "inflight" "^1.0.4" + "inherits" "2" + "minimatch" "^3.1.1" + "once" "^1.3.0" + "path-is-absolute" "^1.0.0" + +"globals@^13.19.0", "globals@^13.6.0", "globals@^13.9.0": + "integrity" "sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw==" + "resolved" "https://registry.npmjs.org/globals/-/globals-13.22.0.tgz" + "version" "13.22.0" + dependencies: + "type-fest" "^0.20.2" + +"graphemer@^1.4.0": + "integrity" "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==" + "resolved" "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz" + "version" "1.4.0" + +"has-flag@^3.0.0": + "integrity" "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" + "version" "3.0.0" + +"has-flag@^4.0.0": + "integrity" "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" + "version" "4.0.0" + "human-signals@^2.1.0": "integrity" "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" "resolved" "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" "version" "2.1.0" -"husky@^7.0.2", "husky@^8.0.1": +"husky@^8.0.1": "integrity" "sha512-xs7/chUH/CKdOCs7Zy0Aev9e/dKOMZf3K1Az1nar3tzlv0jfqnYtu235bstsWTmXOR0EfINrPa97yy4Lz6RiKw==" "resolved" "https://registry.npmjs.org/husky/-/husky-8.0.1.tgz" "version" "8.0.1" +"iconv-lite@^0.6.2": + "integrity" "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==" + "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" + "version" "0.6.3" + dependencies: + "safer-buffer" ">= 2.1.2 < 3.0.0" + +"ieee754@^1.2.1": + "integrity" "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + "resolved" "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" + "version" "1.2.1" + +"ignore@^4.0.6": + "integrity" "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" + "resolved" "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz" + "version" "4.0.6" + +"ignore@^5.2.0": + "integrity" "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==" + "resolved" "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz" + "version" "5.2.4" + +"import-fresh@^3.0.0", "import-fresh@^3.2.1": + "integrity" "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==" + "resolved" "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" + "version" "3.3.0" + dependencies: + "parent-module" "^1.0.0" + "resolve-from" "^4.0.0" + +"imurmurhash@^0.1.4": + "integrity" "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" + "resolved" "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" + "version" "0.1.4" + "indent-string@^4.0.0": "integrity" "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" "resolved" "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" "version" "4.0.0" +"inflight@^1.0.4": + "integrity" "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==" + "resolved" "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" + "version" "1.0.6" + dependencies: + "once" "^1.3.0" + "wrappy" "1" + +"inherits@2": + "integrity" "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" + "version" "2.0.4" + +"is-extglob@^2.1.1": + "integrity" "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" + "resolved" "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" + "version" "2.1.1" + "is-fullwidth-code-point@^3.0.0": "integrity" "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" @@ -206,11 +1084,23 @@ "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz" "version" "4.0.0" +"is-glob@^4.0.0", "is-glob@^4.0.1", "is-glob@^4.0.3": + "integrity" "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==" + "resolved" "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" + "version" "4.0.3" + dependencies: + "is-extglob" "^2.1.1" + "is-number@^7.0.0": "integrity" "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" "resolved" "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" "version" "7.0.0" +"is-path-inside@^3.0.3": + "integrity" "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" + "resolved" "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" + "version" "3.0.3" + "is-stream@^2.0.0": "integrity" "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" "resolved" "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" @@ -221,12 +1111,82 @@ "resolved" "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" "version" "2.0.0" +"iterare@1.2.1": + "integrity" "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==" + "resolved" "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz" + "version" "1.2.1" + +"js-tokens@^3.0.0 || ^4.0.0", "js-tokens@^4.0.0": + "integrity" "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + "resolved" "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" + "version" "4.0.0" + +"js-yaml@^3.13.1": + "integrity" "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==" + "resolved" "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" + "version" "3.14.1" + dependencies: + "argparse" "^1.0.7" + "esprima" "^4.0.0" + +"js-yaml@^4.1.0": + "integrity" "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==" + "resolved" "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "argparse" "^2.0.1" + +"jsdoc-type-pratt-parser@~4.0.0": + "integrity" "sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==" + "resolved" "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz" + "version" "4.0.0" + +"json-buffer@3.0.1": + "integrity" "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + "resolved" "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz" + "version" "3.0.1" + +"json-schema-traverse@^0.4.1": + "integrity" "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "resolved" "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" + "version" "0.4.1" + +"json-schema-traverse@^1.0.0": + "integrity" "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + "resolved" "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" + "version" "1.0.0" + +"json-stable-stringify-without-jsonify@^1.0.1": + "integrity" "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" + "resolved" "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" + "version" "1.0.1" + +"keyv@^4.5.3": + "integrity" "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==" + "resolved" "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz" + "version" "4.5.3" + dependencies: + "json-buffer" "3.0.1" + +"levn@^0.4.1": + "integrity" "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==" + "resolved" "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" + "version" "0.4.1" + dependencies: + "prelude-ls" "^1.2.1" + "type-check" "~0.4.0" + +"libphonenumber-js@^1.9.43": + "integrity" "sha512-eeHcvGafEYCaKB4fo2uBINfG7j7PcGwBHUaTVfbwl/6KcjCgIKNlIOsSXVRp9BH10NQwmvvk+nQ1e/Yp4BGB7w==" + "resolved" "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.10.45.tgz" + "version" "1.10.45" + "lilconfig@2.0.5": "integrity" "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==" "resolved" "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz" "version" "2.0.5" -"lint-staged@^11.1.2", "lint-staged@^12.4.2", "lint-staged@^13.0.3": +"lint-staged@^12.4.2": "integrity" "sha512-BKLUjWDsKquV/JuIcoQW4MSAI3ggwEImF1+sB4zaKvyVx1wBk3FsG7UK9bpnmBTN1pm7EH2BBcMwINJzCRv12g==" "resolved" "https://registry.npmjs.org/lint-staged/-/lint-staged-12.5.0.tgz" "version" "12.5.0" @@ -260,6 +1220,23 @@ "through" "^2.3.8" "wrap-ansi" "^7.0.0" +"locate-path@^6.0.0": + "integrity" "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==" + "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "p-locate" "^5.0.0" + +"lodash.merge@^4.6.2": + "integrity" "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + "resolved" "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" + "version" "4.6.2" + +"lodash.truncate@^4.4.2": + "integrity" "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==" + "resolved" "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz" + "version" "4.4.2" + "log-update@^4.0.0": "integrity" "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==" "resolved" "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz" @@ -270,6 +1247,20 @@ "slice-ansi" "^4.0.0" "wrap-ansi" "^6.2.0" +"loose-envify@^1.1.0": + "integrity" "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==" + "resolved" "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" + "version" "1.4.0" + dependencies: + "js-tokens" "^3.0.0 || ^4.0.0" + +"lru-cache@^6.0.0": + "integrity" "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==" + "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "yallist" "^4.0.0" + "merge-stream@^2.0.0": "integrity" "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" "resolved" "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" @@ -283,16 +1274,47 @@ "braces" "^3.0.2" "picomatch" "^2.3.1" +"mime-db@1.52.0": + "integrity" "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + "resolved" "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" + "version" "1.52.0" + +"mime-types@^2.1.12": + "integrity" "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==" + "resolved" "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" + "version" "2.1.35" + dependencies: + "mime-db" "1.52.0" + "mimic-fn@^2.1.0": "integrity" "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" "resolved" "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" "version" "2.1.0" +"minimatch@^3.0.4", "minimatch@^3.0.5", "minimatch@^3.1.1", "minimatch@^3.1.2": + "integrity" "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==" + "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" + "version" "3.1.2" + dependencies: + "brace-expansion" "^1.1.7" + "ms@2.1.2": "integrity" "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" "version" "2.1.2" +"natural-compare@^1.4.0": + "integrity" "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" + "resolved" "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" + "version" "1.4.0" + +"node-fetch@^2.6.12": + "integrity" "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==" + "resolved" "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz" + "version" "2.7.0" + dependencies: + "whatwg-url" "^5.0.0" + "normalize-path@^3.0.0": "integrity" "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" "resolved" "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" @@ -305,11 +1327,23 @@ dependencies: "path-key" "^3.0.0" +"object-assign@^4.1.1": + "integrity" "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" + "resolved" "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + "version" "4.1.1" + "object-inspect@^1.12.2": "integrity" "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==" "resolved" "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz" "version" "1.12.3" +"once@^1.3.0": + "integrity" "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==" + "resolved" "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + "version" "1.4.0" + dependencies: + "wrappy" "1" + "onetime@^5.1.0", "onetime@^5.1.2": "integrity" "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==" "resolved" "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" @@ -317,6 +1351,32 @@ dependencies: "mimic-fn" "^2.1.0" +"optionator@^0.9.1", "optionator@^0.9.3": + "integrity" "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==" + "resolved" "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz" + "version" "0.9.3" + dependencies: + "@aashutoshrathi/word-wrap" "^1.2.3" + "deep-is" "^0.1.3" + "fast-levenshtein" "^2.0.6" + "levn" "^0.4.1" + "prelude-ls" "^1.2.1" + "type-check" "^0.4.0" + +"p-limit@^3.0.2": + "integrity" "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==" + "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "yocto-queue" "^0.1.0" + +"p-locate@^5.0.0": + "integrity" "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==" + "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "p-limit" "^3.0.2" + "p-map@^4.0.0": "integrity" "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==" "resolved" "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz" @@ -324,6 +1384,23 @@ dependencies: "aggregate-error" "^3.0.0" +"parent-module@^1.0.0": + "integrity" "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==" + "resolved" "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "callsites" "^3.0.0" + +"path-exists@^4.0.0": + "integrity" "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + "resolved" "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" + "version" "4.0.0" + +"path-is-absolute@^1.0.0": + "integrity" "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" + "resolved" "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + "version" "1.0.1" + "path-key@^3.0.0": "integrity" "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" "resolved" "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" @@ -344,11 +1421,64 @@ "resolved" "https://registry.npmjs.org/pidtree/-/pidtree-0.5.0.tgz" "version" "0.5.0" -"prettier@^2.3.2", "prettier@^2.4.1", "prettier@^2.5.1": +"prelude-ls@^1.2.1": + "integrity" "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" + "resolved" "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" + "version" "1.2.1" + +"prettier@^2.5.1": "integrity" "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==" "resolved" "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz" "version" "2.7.1" +"progress@^2.0.0": + "integrity" "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" + "resolved" "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz" + "version" "2.0.3" + +"punycode@^2.1.0": + "integrity" "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==" + "resolved" "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz" + "version" "2.3.0" + +"queue-microtask@^1.2.2", "queue-microtask@1.2.3": + "integrity" "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" + "resolved" "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" + "version" "1.2.3" + +"react@^17.0.0 || ^18.0.0": + "integrity" "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==" + "resolved" "https://registry.npmjs.org/react/-/react-17.0.2.tgz" + "version" "17.0.2" + dependencies: + "loose-envify" "^1.1.0" + "object-assign" "^4.1.1" + +"reflect-metadata@^0.1.12": + "integrity" "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" + "resolved" "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz" + "version" "0.1.13" + +"regenerator-runtime@^0.14.0": + "integrity" "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + "resolved" "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz" + "version" "0.14.0" + +"regexpp@^3.1.0": + "integrity" "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==" + "resolved" "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz" + "version" "3.2.0" + +"require-from-string@^2.0.2": + "integrity" "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" + "resolved" "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" + "version" "2.0.2" + +"resolve-from@^4.0.0": + "integrity" "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + "resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" + "version" "4.0.0" + "restore-cursor@^3.1.0": "integrity" "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==" "resolved" "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" @@ -357,18 +1487,62 @@ "onetime" "^5.1.0" "signal-exit" "^3.0.2" +"reusify@^1.0.4": + "integrity" "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" + "resolved" "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" + "version" "1.0.4" + "rfdc@^1.3.0": "integrity" "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==" "resolved" "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz" "version" "1.3.0" -"rxjs@^7.2.0", "rxjs@^7.5.5": +"rimraf@^3.0.2": + "integrity" "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==" + "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" + "version" "3.0.2" + dependencies: + "glob" "^7.1.3" + +"run-parallel@^1.1.9": + "integrity" "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==" + "resolved" "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" + "version" "1.2.0" + dependencies: + "queue-microtask" "^1.2.2" + +"rxjs@^7.1.0", "rxjs@^7.5.5": "integrity" "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==" "resolved" "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz" "version" "7.5.6" dependencies: "tslib" "^2.1.0" +"safer-buffer@>= 2.1.2 < 3.0.0": + "integrity" "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "resolved" "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" + "version" "2.1.2" + +"semver@^7.2.1", "semver@^7.3.8": + "integrity" "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==" + "resolved" "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz" + "version" "7.5.4" + dependencies: + "lru-cache" "^6.0.0" + +"services@file:/Users/bartkozorog/Projects/flowser/packages/services": + "resolved" "file:packages/services" + "version" "1.0.0" + dependencies: + "config" "*" + +"sha3@^2.1.4": + "integrity" "sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg==" + "resolved" "https://registry.npmjs.org/sha3/-/sha3-2.1.4.tgz" + "version" "2.1.4" + dependencies: + "buffer" "6.0.3" + "shebang-command@^2.0.0": "integrity" "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==" "resolved" "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" @@ -412,12 +1586,35 @@ "ansi-styles" "^6.0.0" "is-fullwidth-code-point" "^4.0.0" +"spdx-exceptions@^2.1.0": + "integrity" "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" + "resolved" "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz" + "version" "2.3.0" + +"spdx-expression-parse@^3.0.1": + "integrity" "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==" + "resolved" "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "spdx-exceptions" "^2.1.0" + "spdx-license-ids" "^3.0.0" + +"spdx-license-ids@^3.0.0": + "integrity" "sha512-lpT8hSQp9jAKp9mhtBU4Xjon8LPGBvLIuBiSVhMEtmLecTh2mO0tlqrAMp47tBXzMr13NJMQ2lf7RpQGLJ3HsQ==" + "resolved" "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.15.tgz" + "version" "3.0.15" + +"sprintf-js@~1.0.2": + "integrity" "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + "resolved" "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" + "version" "1.0.3" + "string-argv@^0.3.1": "integrity" "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==" "resolved" "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz" "version" "0.3.1" -"string-width@^4.1.0", "string-width@^4.2.0": +"string-width@^4.1.0", "string-width@^4.2.0", "string-width@^4.2.3": "integrity" "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==" "resolved" "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" "version" "4.2.3" @@ -452,11 +1649,46 @@ "resolved" "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" "version" "2.0.0" +"strip-json-comments@^3.1.0", "strip-json-comments@^3.1.1": + "integrity" "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" + "resolved" "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" + "version" "3.1.1" + +"supports-color@^5.3.0": + "integrity" "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==" + "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" + "version" "5.5.0" + dependencies: + "has-flag" "^3.0.0" + +"supports-color@^7.1.0": + "integrity" "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==" + "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" + "version" "7.2.0" + dependencies: + "has-flag" "^4.0.0" + "supports-color@^9.2.2": "integrity" "sha512-XC6g/Kgux+rJXmwokjm9ECpD6k/smUoS5LKlUCcsYr4IY3rW0XyAympon2RmxGrlnZURMpg5T18gWDP9CsHXFA==" "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-9.2.2.tgz" "version" "9.2.2" +"table@^6.0.9": + "integrity" "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==" + "resolved" "https://registry.npmjs.org/table/-/table-6.8.1.tgz" + "version" "6.8.1" + dependencies: + "ajv" "^8.0.1" + "lodash.truncate" "^4.4.2" + "slice-ansi" "^4.0.0" + "string-width" "^4.2.3" + "strip-ansi" "^6.0.1" + +"text-table@^0.2.0": + "integrity" "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" + "resolved" "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" + "version" "0.2.0" + "through@^2.3.8": "integrity" "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" "resolved" "https://registry.npmjs.org/through/-/through-2.3.8.tgz" @@ -469,7 +1701,12 @@ dependencies: "is-number" "^7.0.0" -"tslib@^2.1.0": +"tr46@~0.0.3": + "integrity" "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + "resolved" "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" + "version" "0.0.3" + +"tslib@^2.1.0", "tslib@2.4.0": "integrity" "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz" "version" "2.4.0" @@ -491,16 +1728,63 @@ "turbo-windows-64" "1.10.4" "turbo-windows-arm64" "1.10.4" +"type-check@^0.4.0", "type-check@~0.4.0": + "integrity" "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==" + "resolved" "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" + "version" "0.4.0" + dependencies: + "prelude-ls" "^1.2.1" + +"type-fest@^0.20.2": + "integrity" "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" + "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" + "version" "0.20.2" + "type-fest@^0.21.3": "integrity" "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" "version" "0.21.3" -"typescript@^4.3.5", "typescript@^4.4.3": +"typescript@^4.3.5": "integrity" "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==" "resolved" "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz" "version" "4.7.4" +"uri-js@^4.2.2": + "integrity" "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==" + "resolved" "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" + "version" "4.4.1" + dependencies: + "punycode" "^2.1.0" + +"uuid@8.3.2": + "integrity" "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + "resolved" "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" + "version" "8.3.2" + +"v8-compile-cache@^2.0.3": + "integrity" "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==" + "resolved" "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz" + "version" "2.4.0" + +"validator@^13.7.0": + "integrity" "sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==" + "resolved" "https://registry.npmjs.org/validator/-/validator-13.11.0.tgz" + "version" "13.11.0" + +"webidl-conversions@^3.0.0": + "integrity" "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + "resolved" "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" + "version" "3.0.1" + +"whatwg-url@^5.0.0": + "integrity" "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==" + "resolved" "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "tr46" "~0.0.3" + "webidl-conversions" "^3.0.0" + "which@^2.0.1": "integrity" "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==" "resolved" "https://registry.npmjs.org/which/-/which-2.0.2.tgz" @@ -526,7 +1810,22 @@ "string-width" "^4.1.0" "strip-ansi" "^6.0.0" +"wrappy@1": + "integrity" "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + "resolved" "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "version" "1.0.2" + +"yallist@^4.0.0": + "integrity" "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "resolved" "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" + "version" "4.0.0" + "yaml@^1.10.2": "integrity" "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" "resolved" "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" "version" "1.10.2" + +"yocto-queue@^0.1.0": + "integrity" "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" + "resolved" "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" + "version" "0.1.0" From cfe3929c627eb6bb0d85d72a15e4b94c6b68af8e Mon Sep 17 00:00:00 2001 From: Bart Date: Sat, 7 Oct 2023 14:48:30 +0200 Subject: [PATCH 003/100] move most of flow services to core package --- .../src/data-processing/processor.service.ts | 14 +- backend/src/flow/entities/snapshot.entity.ts | 48 --- backend/src/flow/flow.controller.ts | 12 +- backend/src/flow/flow.module.ts | 20 +- backend/src/flow/services/snapshot.service.ts | 285 ------------------ backend/src/flow/tests/cli.service.spec.ts | 6 +- .../src/go-bindings/go-bindings.controller.ts | 2 +- backend/src/go-bindings/go-bindings.module.ts | 8 +- .../go-bindings/go-bindings.service.spec.ts | 2 +- backend/src/index.ts | 2 +- .../processes/process-manager.controller.ts | 4 +- backend/src/processes/processes.module.ts | 2 +- backend/src/projects/projects.service.ts | 10 +- backend/src/wallet/wallet.service.ts | 5 +- packages/core/package.json | 3 +- packages/core/src/flow/common.ts | 72 +++++ packages/core/src/flow/fcl-values.ts | 30 +- .../core/src/flow/flow-cli.service.ts | 125 +++----- packages/core/src/flow/flow-config.service.ts | 2 +- .../core/src/flow/flow-emulator.service.ts | 28 +- .../core/src/flow/flow-gateway.service.ts | 1 + .../src/flow/flow-interactions.service.ts | 46 +-- .../core/src/flow/flow-snapshots.service.ts | 133 ++++++++ .../core/src/flow/flow-storage.service.ts | 30 +- .../core/src/flow}/go-bindings.service.ts | 28 +- packages/core/src/flow/resources.ts | 5 + .../core/src/processes/managed-process.ts | 54 ++-- .../src/processes/process-manager.service.ts | 17 +- packages/core/src/workspace.service.ts | 10 + yarn.lock | 22 +- 30 files changed, 436 insertions(+), 590 deletions(-) delete mode 100644 backend/src/flow/entities/snapshot.entity.ts delete mode 100644 backend/src/flow/services/snapshot.service.ts create mode 100644 packages/core/src/flow/common.ts rename backend/src/flow/services/cli.service.ts => packages/core/src/flow/flow-cli.service.ts (63%) rename backend/src/flow/services/templates.service.ts => packages/core/src/flow/flow-interactions.service.ts (70%) create mode 100644 packages/core/src/flow/flow-snapshots.service.ts rename backend/src/flow/services/storage.service.ts => packages/core/src/flow/flow-storage.service.ts (88%) rename {backend/src/go-bindings => packages/core/src/flow}/go-bindings.service.ts (85%) create mode 100644 packages/core/src/flow/resources.ts rename backend/src/processes/managed-process.entity.ts => packages/core/src/processes/managed-process.ts (84%) rename {backend => packages/core}/src/processes/process-manager.service.ts (93%) create mode 100644 packages/core/src/workspace.service.ts diff --git a/backend/src/data-processing/processor.service.ts b/backend/src/data-processing/processor.service.ts index 469c2e272..7c7b0a643 100644 --- a/backend/src/data-processing/processor.service.ts +++ b/backend/src/data-processing/processor.service.ts @@ -30,7 +30,7 @@ import { import { getDataSourceInstance } from "../database"; import { ProjectContextLifecycle } from "../flow/utils/project-context"; import { ProjectEntity } from "../projects/project.entity"; -import { FlowAccountStorageService } from "../flow/services/storage.service"; +import { FlowAccountStorageService } from "../../../packages/core/src/flow/flow-storage.service"; import { AccountStorageService } from "../accounts/services/storage.service"; import { FlowCoreEventType, @@ -44,11 +44,11 @@ import { import { ProcessManagerEvent, ProcessManagerService, -} from "../processes/process-manager.service"; +} from "../../../packages/core/src/processes/process-manager.service"; import { - ManagedProcessEntity, + ManagedProcess, ManagedProcessEvent, -} from "../processes/managed-process.entity"; +} from "../../../packages/core/src/processes/managed-process"; import { CacheRemovalService } from "../core/services/cache-removal.service"; import { FlowEmulatorEvent, @@ -56,7 +56,7 @@ import { WellKnownAddressesOptions, } from "../../../packages/core/src/flow/flow-emulator.service"; import { AsyncIntervalScheduler } from "../core/async-interval-scheduler"; -import { GoBindingsService } from "../go-bindings/go-bindings.service"; +import { GoBindingsService } from "services/src/flow/go-bindings.service"; type BlockData = { block: FlowBlock; @@ -82,7 +82,7 @@ export type ExtendedFlowEvent = FlowEvent & { @Injectable() export class ProcessorService implements ProjectContextLifecycle { private projectContext: ProjectEntity | undefined; - private emulatorProcess: ManagedProcessEntity | undefined; + private emulatorProcess: ManagedProcess | undefined; private readonly logger = new Logger(ProcessorService.name); private readonly pollingDelay = 500; private processingScheduler: AsyncIntervalScheduler; @@ -146,7 +146,7 @@ export class ProcessorService implements ProjectContextLifecycle { ); } - private onProcessAddedOrUpdated(process: ManagedProcessEntity) { + private onProcessAddedOrUpdated(process: ManagedProcess) { const isEmulatorProcess = process.id === FlowEmulatorService.processId; if (isEmulatorProcess) { this.logger.debug(`Emulator was started or updated`); diff --git a/backend/src/flow/entities/snapshot.entity.ts b/backend/src/flow/entities/snapshot.entity.ts deleted file mode 100644 index 5a445a283..000000000 --- a/backend/src/flow/entities/snapshot.entity.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { Column, Entity, PrimaryColumn } from "typeorm"; -import { PollingEntity } from "../../core/entities/polling.entity"; -import { EmulatorSnapshot } from "@flowser/shared"; -import { BlockContextEntity } from "../../blocks/entities/block-context.entity"; -import { PollingEntityInitArguments } from "../../utils/type-utils"; - -type SnapshotEntityInitArgs = PollingEntityInitArguments; - -@Entity() -export class SnapshotEntity - extends PollingEntity - implements BlockContextEntity -{ - // aka. "snapshot name" - @PrimaryColumn() - id: string; - - @Column() - description: string; - - @Column() - blockId: string; - - // Set to nullable for backward compatability - @Column({ nullable: true }) - projectId: string; - - // Entities are also automatically initialized by TypeORM. - // In those cases no constructor arguments are provided. - constructor(args: SnapshotEntityInitArgs | undefined) { - super(); - this.id = args?.id ?? ""; - this.description = args?.description ?? ""; - this.blockId = args?.blockId ?? ""; - this.projectId = args?.projectId ?? ""; - } - - toProto(): EmulatorSnapshot { - return { - id: this.id, - description: this.description, - blockId: this.blockId, - projectId: this.projectId, - createdAt: this.createdAt.toISOString(), - updatedAt: this.updatedAt.toISOString(), - }; - } -} diff --git a/backend/src/flow/flow.controller.ts b/backend/src/flow/flow.controller.ts index cd1a9c29c..189a47358 100644 --- a/backend/src/flow/flow.controller.ts +++ b/backend/src/flow/flow.controller.ts @@ -6,8 +6,8 @@ import { Put, UseInterceptors, } from "@nestjs/common"; -import { FlowCliService } from "./services/cli.service"; -import { FlowSnapshotService } from "./services/snapshot.service"; +import { FlowCliService } from "../../../packages/core/src/flow/flow-cli.service"; +import { FlowSnapshotsService } from "../../../packages/core/src/flow/flow-snapshots.service"; import { GetFlowCliInfoResponse, GetPollingEmulatorSnapshotsResponse, @@ -21,7 +21,7 @@ import { GetFlowConfigResponse, } from "@flowser/shared"; import { PollingResponseInterceptor } from "../core/interceptors/polling-response.interceptor"; -import { FlowTemplatesService } from "./services/templates.service"; +import { FlowInteractionsService } from "../../../packages/core/src/flow/flow-interactions.service"; import { FlowConfigService } from "../../../packages/core/src/flow/flow-config.service"; @Controller("flow") @@ -29,8 +29,8 @@ export class FlowController { constructor( private flowCliService: FlowCliService, private flowConfigService: FlowConfigService, - private flowSnapshotService: FlowSnapshotService, - private flowTemplatesService: FlowTemplatesService + private flowSnapshotService: FlowSnapshotsService, + private flowTemplatesService: FlowInteractionsService ) {} @Get("config") @@ -49,7 +49,7 @@ export class FlowController { @Get("templates") async getInteractionTemplates() { - const templates = await this.flowTemplatesService.getLocalTemplates(); + const templates = await this.flowTemplatesService.getInteractionTemplates(); return GetFlowInteractionTemplatesResponse.toJSON({ templates, }); diff --git a/backend/src/flow/flow.module.ts b/backend/src/flow/flow.module.ts index 8a52fddda..3c1c18ed6 100644 --- a/backend/src/flow/flow.module.ts +++ b/backend/src/flow/flow.module.ts @@ -3,20 +3,20 @@ import { TypeOrmModule } from "@nestjs/typeorm"; import { FlowGatewayService } from "../../../packages/core/src/flow/flow-gateway.service"; import { FlowController } from "./flow.controller"; import { FlowEmulatorService } from "../../../packages/core/src/flow/flow-emulator.service"; -import { FlowCliService } from "./services/cli.service"; +import { FlowCliService } from "../../../packages/core/src/flow/flow-cli.service"; import { FlowConfigService } from "../../../packages/core/src/flow/flow-config.service"; -import { FlowAccountStorageService } from "./services/storage.service"; -import { SnapshotEntity } from "./entities/snapshot.entity"; -import { FlowSnapshotService } from "./services/snapshot.service"; +import { FlowAccountStorageService } from "../../../packages/core/src/flow/flow-storage.service"; +import { FlowSnapshot } from "../../../packages/core/src/flow/flow-snapshot"; +import { FlowSnapshotsService } from "../../../packages/core/src/flow/flow-snapshots.service"; import { ProcessesModule } from "../processes/processes.module"; import { CoreModule } from "../core/core.module"; import { BlocksModule } from "../blocks/blocks.module"; -import { FlowTemplatesService } from "./services/templates.service"; +import { FlowInteractionsService } from "../../../packages/core/src/flow/flow-interactions.service"; import { GoBindingsModule } from "../go-bindings/go-bindings.module"; @Module({ imports: [ - TypeOrmModule.forFeature([SnapshotEntity]), + TypeOrmModule.forFeature([FlowSnapshot]), ProcessesModule, // We need this to perform blockchain cache removal in snapshot service. BlocksModule, @@ -28,22 +28,22 @@ import { GoBindingsModule } from "../go-bindings/go-bindings.module"; ], controllers: [FlowController], providers: [ - FlowTemplatesService, + FlowInteractionsService, FlowGatewayService, FlowEmulatorService, FlowCliService, FlowConfigService, FlowAccountStorageService, - FlowSnapshotService, + FlowSnapshotsService, ], exports: [ - FlowTemplatesService, + FlowInteractionsService, FlowGatewayService, FlowEmulatorService, FlowCliService, FlowConfigService, FlowAccountStorageService, - FlowSnapshotService, + FlowSnapshotsService, ], }) export class FlowModule {} diff --git a/backend/src/flow/services/snapshot.service.ts b/backend/src/flow/services/snapshot.service.ts deleted file mode 100644 index 5a2cb3459..000000000 --- a/backend/src/flow/services/snapshot.service.ts +++ /dev/null @@ -1,285 +0,0 @@ -import { - Injectable, - PreconditionFailedException, - InternalServerErrorException, - NotFoundException, - Logger, -} from "@nestjs/common"; -import { InjectRepository } from "@nestjs/typeorm"; -import { MoreThan, Repository } from "typeorm"; -import { SnapshotEntity } from "../entities/snapshot.entity"; -import axios, { Method } from "axios"; -import { randomUUID } from "crypto"; -import { CacheRemovalService } from "../../core/services/cache-removal.service"; -import { - CreateEmulatorSnapshotRequest, - GetPollingEmulatorSnapshotsRequest, - RevertToEmulatorSnapshotRequest, - RollbackToHeightRequest, -} from "@flowser/shared"; -import { ProjectContextLifecycle } from "../utils/project-context"; -import { ProjectEntity } from "src/projects/project.entity"; -import { computeEntitiesDiff } from "../../utils/common-utils"; -import { BlocksService } from "../../blocks/blocks.service"; - -type CreateSnapshotRequest = { - name: string; -}; - -type JumpToBlockHeightRequest = { - height: number; -}; - -type JumpToSnapshotRequest = { - name: string; -}; - -type ListSnapshotsResponse = { - names: string[]; -}; - -type SnapshotInfoResponse = { - context: string; - blockId: string; - height: number; -}; - -@Injectable() -export class FlowSnapshotService implements ProjectContextLifecycle { - private logger = new Logger(FlowSnapshotService.name); - - constructor( - @InjectRepository(SnapshotEntity) - private readonly snapshotRepository: Repository, - private readonly cacheRemovalService: CacheRemovalService, - private readonly blocksService: BlocksService - ) {} - - async onEnterProjectContext(project: ProjectEntity): Promise { - await this.syncSnapshotsCache(project); - } - - async onExitProjectContext(): Promise { - // Do nothing - } - - async rollback(request: RollbackToHeightRequest) { - await this.jumpToHeight({ - height: request.blockHeight, - }); - - const allBlocks = await this.blocksService.findAll(); - - const blockIdsUntilTargetHeight = allBlocks - .filter((block) => block.blockHeight > request.blockHeight) - .map((block) => block.blockId); - - await this.cacheRemovalService.removeByBlockIds(blockIdsUntilTargetHeight); - } - - async create(request: CreateEmulatorSnapshotRequest) { - const createdSnapshot = await this.createSnapshot({ - name: randomUUID(), - }); - - const existingSnapshot = await this.snapshotRepository.findOneBy({ - blockId: createdSnapshot.blockId, - projectId: request.projectId, - }); - - if (existingSnapshot) { - throw new PreconditionFailedException( - "Snapshot already exists at this block" - ); - } - - const snapshotEntity = new SnapshotEntity({ - id: createdSnapshot.context, - blockId: createdSnapshot.blockId, - projectId: request.projectId, - description: request.description, - }); - - return this.snapshotRepository.save(snapshotEntity); - } - - async checkout(request: RevertToEmulatorSnapshotRequest) { - const existingSnapshot = await this.snapshotRepository.findOneBy({ - projectId: request.projectId, - blockId: request.blockId, - }); - - if (!existingSnapshot) { - throw new NotFoundException("Snapshot not found"); - } - - await this.jumpToSnapshot({ - name: existingSnapshot.id, - }); - - const historicBlocks = await this.blocksService.findAll(); - - const targetHistoricBlock = historicBlocks.find( - (block) => block.blockId === request.blockId - ); - - if (targetHistoricBlock) { - // Target block is in the past, selectively remove blockchain data until the target. - const blockIdsUntilTargetHeight = historicBlocks - .filter((block) => block.blockHeight > targetHistoricBlock.blockHeight) - .map((block) => block.blockId); - - await this.cacheRemovalService.removeByBlockIds( - blockIdsUntilTargetHeight - ); - } else { - // Target block could either be: - // - a block in the future (we won't have to do anything) - // - a block on another chain branch (we would have to remove data until a common block where history diverges) - // For now just remove all data, - // since we don't know where the common branching block is. - // Note that this will also remove all managed accounts, - // which is not ideal and may require a better solution. - // TODO(snapshots-revamp): Would it make sense to persist all blocks ever recorded to fix this issue? - await this.cacheRemovalService.removeAll(); - } - - return existingSnapshot; - } - - findAll(request: { projectId: string }): Promise { - return this.snapshotRepository.find({ - where: { - projectId: request.projectId, - }, - order: { createdAt: "DESC" }, - }); - } - - findAllByProjectNewerThanTimestamp( - request: GetPollingEmulatorSnapshotsRequest - ): Promise { - return this.snapshotRepository.find({ - where: { - createdAt: MoreThan(new Date(request.timestamp)), - projectId: request.projectId, - }, - order: { createdAt: "DESC" }, - }); - } - - private async syncSnapshotsCache(project: ProjectEntity) { - const [emulatorSnapshots, cachedSnapshots] = await Promise.all([ - this.listSnapshots(), - this.findAll({ projectId: project.id }), - ]); - - const emulatorSnapshotIds = emulatorSnapshots.names.map((name) => ({ - id: name, - })); - const cachedSnapshotIds = cachedSnapshots.map((snapshot) => ({ - id: snapshot.id, - })); - - const diff = computeEntitiesDiff<{ id: string }>({ - newEntities: emulatorSnapshotIds, - oldEntities: cachedSnapshotIds, - primaryKey: "id", - }); - - if (diff.created.length > 0) { - this.logger.debug( - `Found unseen snapshots on project startup: ${diff.created - .map((e) => e.id) - .join(", ")}` - ); - } - - if (diff.deleted.length > 0) { - this.logger.debug( - `Removing ${diff.deleted.length} removed snapshots on startup` - ); - await this.snapshotRepository.delete(diff.deleted.map((e) => e.id)); - } - } - - private async createSnapshot( - request: CreateSnapshotRequest - ): Promise { - // https://github.com/onflow/flow-emulator/blob/0ca87170b7792b68941da368a839b9b74615d659/server/utils/emulator.go#L208-L233 - const response = await this.emulatorRequest({ - method: "post", - endpoint: `/snapshots?name=${request.name}`, - }); - - if (response.status !== 200) { - throw new InternalServerErrorException("Failed creating snapshot"); - } - - return response.data; - } - - private async jumpToHeight(request: JumpToBlockHeightRequest): Promise { - // https://github.com/onflow/flow-emulator/blob/0ca87170b7792b68941da368a839b9b74615d659/server/utils/emulator.go#L118-L136 - const response = await this.emulatorRequest({ - method: "post", - endpoint: `/rollback?height=${request.height}`, - }); - - if (response.status !== 200) { - throw new InternalServerErrorException("Failed to jump to height"); - } - } - - private async jumpToSnapshot( - request: JumpToSnapshotRequest - ): Promise { - // https://github.com/onflow/flow-emulator/blob/0ca87170b7792b68941da368a839b9b74615d659/server/utils/emulator.go#L183-L206 - const response = await this.emulatorRequest({ - method: "put", - endpoint: `/snapshots/${request.name}`, - }); - - if (response.status === 404) { - throw new NotFoundException("Snapshot not found"); - } - - if (response.status !== 200) { - throw new InternalServerErrorException("Failed to jump to snapshot"); - } - - return response.data; - } - - private async listSnapshots(): Promise { - // https://github.com/onflow/flow-emulator/blob/0ca87170b7792b68941da368a839b9b74615d659/server/utils/emulator.go#L138-L156 - const response = await this.emulatorRequest({ - method: "get", - endpoint: "/snapshots", - }); - - if (response.status !== 200) { - throw new InternalServerErrorException("Failed to list snapshots"); - } - - const emptyResponse: ListSnapshotsResponse = { - names: [], - }; - - // Emulator returns `null` when no snapshots exist. - return response.data ? { names: response.data } : emptyResponse; - } - - private emulatorRequest(options: { - method: Method; - endpoint: string; - }) { - return axios.request({ - method: options.method, - url: `http://localhost:8080/emulator${options.endpoint}`, - // Prevent axios from throwing on certain http response codes - // https://github.com/axios/axios/issues/41 - validateStatus: () => true, - }); - } -} diff --git a/backend/src/flow/tests/cli.service.spec.ts b/backend/src/flow/tests/cli.service.spec.ts index ff462ca74..b8a51d3a1 100644 --- a/backend/src/flow/tests/cli.service.spec.ts +++ b/backend/src/flow/tests/cli.service.spec.ts @@ -1,6 +1,6 @@ -import { FlowCliService } from "../services/cli.service"; +import { FlowCliService } from "../../../../packages/core/src/flow/flow-cli.service"; import { FlowConfigService } from "../../../../packages/core/src/flow/flow-config.service"; -import { ProcessManagerService } from "../../processes/process-manager.service"; +import { ProcessManagerService } from "../../../../packages/core/src/processes/process-manager.service"; import { ProjectEntity } from "../../projects/project.entity"; import { Emulator, Gateway } from "@flowser/shared"; @@ -20,7 +20,7 @@ describe("FlowCliService", function () { name: "", startBlockHeight: 0, }); - await cliService.onEnterProjectContext(mockProject); + await cliService.start(mockProject); }); it("should return the generated key", async function () { diff --git a/backend/src/go-bindings/go-bindings.controller.ts b/backend/src/go-bindings/go-bindings.controller.ts index 829f13d92..52c543a61 100644 --- a/backend/src/go-bindings/go-bindings.controller.ts +++ b/backend/src/go-bindings/go-bindings.controller.ts @@ -5,7 +5,7 @@ import { GetAddressIndexResponse, } from "@flowser/shared"; import { Body, Controller, Post } from "@nestjs/common"; -import { GoBindingsService } from "./go-bindings.service"; +import { GoBindingsService } from "services/src/flow/go-bindings.service"; @Controller("go-bindings") export class GoBindingsController { diff --git a/backend/src/go-bindings/go-bindings.module.ts b/backend/src/go-bindings/go-bindings.module.ts index e96043701..eaca582ee 100644 --- a/backend/src/go-bindings/go-bindings.module.ts +++ b/backend/src/go-bindings/go-bindings.module.ts @@ -1,10 +1,10 @@ -import { Module } from '@nestjs/common'; -import { GoBindingsService } from './go-bindings.service'; -import { GoBindingsController } from './go-bindings.controller'; +import { Module } from "@nestjs/common"; +import { GoBindingsService } from "services/src/flow/go-bindings.service"; +import { GoBindingsController } from "./go-bindings.controller"; @Module({ providers: [GoBindingsService], controllers: [GoBindingsController], - exports: [GoBindingsService] + exports: [GoBindingsService], }) export class GoBindingsModule {} diff --git a/backend/src/go-bindings/go-bindings.service.spec.ts b/backend/src/go-bindings/go-bindings.service.spec.ts index 71fa4a990..71aac5cfd 100644 --- a/backend/src/go-bindings/go-bindings.service.spec.ts +++ b/backend/src/go-bindings/go-bindings.service.spec.ts @@ -1,5 +1,5 @@ import { Test, TestingModule } from "@nestjs/testing"; -import { GoBindingsService } from "./go-bindings.service"; +import { GoBindingsService } from "services/src/flow/go-bindings.service"; describe("InteractionsService", () => { let service: GoBindingsService; diff --git a/backend/src/index.ts b/backend/src/index.ts index 23caaff7c..de771d476 100644 --- a/backend/src/index.ts +++ b/backend/src/index.ts @@ -8,7 +8,7 @@ import { AppModule } from "./app.module"; import { HttpExceptionFilter } from "./core/filters/http-exception.filter"; import { Config, ConfigService } from "./core/services/config.service"; -export { ProcessManagerService } from "./processes/process-manager.service"; +export { ProcessManagerService } from "../../packages/core/src/processes/process-manager.service"; export { ProjectsService } from "./projects/projects.service"; export { ProjectEntity } from "./projects/project.entity"; diff --git a/backend/src/processes/process-manager.controller.ts b/backend/src/processes/process-manager.controller.ts index bba323328..1f1937e6f 100644 --- a/backend/src/processes/process-manager.controller.ts +++ b/backend/src/processes/process-manager.controller.ts @@ -6,14 +6,14 @@ import { Post, UseInterceptors, } from "@nestjs/common"; -import { ProcessManagerService } from "./process-manager.service"; +import { ProcessManagerService } from "../../../packages/core/src/processes/process-manager.service"; import { GetPollingOutputsResponse, GetAllManagedProcessesResponse, GetPollingManagedProcessesResponse, GetPollingManagedProcessesRequest, GetPollingOutputsRequest, -} from "@flowser/shared"; +} from "../../../shared/src"; import { PollingResponseInterceptor } from "../core/interceptors/polling-response.interceptor"; @Controller("processes") diff --git a/backend/src/processes/processes.module.ts b/backend/src/processes/processes.module.ts index 3c8e9e22a..496b1b4cf 100644 --- a/backend/src/processes/processes.module.ts +++ b/backend/src/processes/processes.module.ts @@ -1,5 +1,5 @@ import { Module } from "@nestjs/common"; -import { ProcessManagerService } from "./process-manager.service"; +import { ProcessManagerService } from "../../../packages/core/src/processes/process-manager.service"; import { ProcessManagerController } from "./process-manager.controller"; @Module({ diff --git a/backend/src/projects/projects.service.ts b/backend/src/projects/projects.service.ts index c3b9ee3f1..23063c404 100644 --- a/backend/src/projects/projects.service.ts +++ b/backend/src/projects/projects.service.ts @@ -13,7 +13,7 @@ import { InjectRepository } from "@nestjs/typeorm"; import { FlowGatewayService } from "../../../packages/core/src/flow/flow-gateway.service"; import { ProcessorService } from "../data-processing/processor.service"; import { FlowEmulatorService } from "../../../packages/core/src/flow/flow-emulator.service"; -import { FlowCliService } from "../flow/services/cli.service"; +import { FlowCliService } from "../../../packages/core/src/flow/flow-cli.service"; import { FlowConfigService } from "../../../packages/core/src/flow/flow-config.service"; import { ProjectContextLifecycle } from "../flow/utils/project-context"; import { @@ -27,8 +27,8 @@ import { import * as fs from "fs"; import { CacheRemovalService } from "../core/services/cache-removal.service"; import { WalletService } from "../wallet/wallet.service"; -import { FlowSnapshotService } from "../flow/services/snapshot.service"; -import { FlowTemplatesService } from "../flow/services/templates.service"; +import { FlowSnapshotsService } from "../../../packages/core/src/flow/flow-snapshots.service"; +import { FlowInteractionsService } from "../../../packages/core/src/flow/flow-interactions.service"; const commandExists = require("command-exists"); const semver = require("semver"); @@ -71,8 +71,8 @@ export class ProjectsService { private flowConfigService: FlowConfigService, private commonService: CacheRemovalService, private walletService: WalletService, - private flowSnapshotsService: FlowSnapshotService, - private flowTemplatesService: FlowTemplatesService + private flowSnapshotsService: FlowSnapshotsService, + private flowTemplatesService: FlowInteractionsService ) {} getCurrentProject(): ProjectEntity | undefined { diff --git a/backend/src/wallet/wallet.service.ts b/backend/src/wallet/wallet.service.ts index af6982784..cc191cf86 100644 --- a/backend/src/wallet/wallet.service.ts +++ b/backend/src/wallet/wallet.service.ts @@ -6,7 +6,10 @@ import { } from "@nestjs/common"; import { ec as EC } from "elliptic"; import { SHA3 } from "sha3"; -import { FlowCliService, KeyWithWeight } from "../flow/services/cli.service"; +import { + FlowCliService, + KeyWithWeight, +} from "../../../packages/core/src/flow/flow-cli.service"; import { AccountsService } from "../accounts/services/accounts.service"; import { AccountEntity } from "../accounts/entities/account.entity"; import { ensurePrefixedAddress } from "../utils/common-utils"; diff --git a/packages/core/package.json b/packages/core/package.json index b45c6c746..c16a65968 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -12,7 +12,8 @@ "@nestjs/common": "^8.0.0", "@onflow/fcl": "^1.6.0", "config": "*", - "node-abort-controller": "^3.0.1" + "node-abort-controller": "^3.0.1", + "axios": "^0.21.4" }, "devDependencies": { "@types/node": "^16.11.6", diff --git a/packages/core/src/flow/common.ts b/packages/core/src/flow/common.ts new file mode 100644 index 000000000..7cf72c947 --- /dev/null +++ b/packages/core/src/flow/common.ts @@ -0,0 +1,72 @@ +// https://docs.onflow.org/cadence/language/crypto/#hashing +export enum SignatureAlgorithm { + // Enum values must be kept unchanged. + ECDSA_P256 = "ECDSA_P256", + ECDSA_secp256k1 = "ECDSA_secp256k1", + BLS_BLS12_381 = "BLS_BLS12_381", +} + +// https://docs.onflow.org/cadence/language/crypto/#hashing +export enum HashAlgorithm { + // Enum values must be kept unchanged. + SHA2_256 = "SHA2_256", + SHA2_384 = "SHA2_384", + SHA3_256 = "SHA3_256", + SHA3_384 = "SHA3_384", + KMAC128_BLS_BLS12_381 = "KMAC128_BLS_BLS12_381", + KECCAK_256 = "KECCAK_256", +} + +export enum CadenceTypeKind { + CADENCE_TYPE_UNKNOWN = 0, + CADENCE_TYPE_FIXED_POINT_NUMBER = 1, + CADENCE_TYPE_INTEGER_NUMBER = 2, + CADENCE_TYPE_TEXTUAL = 3, + CADENCE_TYPE_BOOLEAN = 4, + CADENCE_TYPE_ADDRESS = 5, + CADENCE_TYPE_ARRAY = 6, + CADENCE_TYPE_DICTIONARY = 7, + CADENCE_TYPE_PATH = 8, +} + +export enum InteractionKind { + INTERACTION_SCRIPT = 1, + INTERACTION_TRANSACTION = 2, +} + +export interface CadenceInteraction { + kind: InteractionKind; + parameters: CadenceParameter[]; + transaction: CadenceInteraction_Transaction | undefined; +} + +export interface CadenceInteraction_Transaction { + /** + * Number of authorizers, specified in prepare statement. + * https://developers.flow.com/concepts/start-here/transaction-signing + */ + authorizerCount: number; +} + +export interface CadenceParameter { + identifier: string; + type: CadenceType | undefined; +} + +export interface CadenceType { + kind: CadenceTypeKind; + rawType: string; + optional: boolean; + array: CadenceType_Array | undefined; + dictionary: CadenceType_Dictionary | undefined; +} + +export interface CadenceType_Array { + element: CadenceType | undefined; + size: number; +} + +export interface CadenceType_Dictionary { + key: CadenceType | undefined; + value: CadenceType | undefined; +} diff --git a/packages/core/src/flow/fcl-values.ts b/packages/core/src/flow/fcl-values.ts index 9c3a9a69a..960289f39 100644 --- a/packages/core/src/flow/fcl-values.ts +++ b/packages/core/src/flow/fcl-values.ts @@ -1,32 +1,4 @@ -export enum CadenceTypeKind { - CADENCE_TYPE_UNKNOWN = 0, - CADENCE_TYPE_FIXED_POINT_NUMBER = 1, - CADENCE_TYPE_INTEGER_NUMBER = 2, - CADENCE_TYPE_TEXTUAL = 3, - CADENCE_TYPE_BOOLEAN = 4, - CADENCE_TYPE_ADDRESS = 5, - CADENCE_TYPE_ARRAY = 6, - CADENCE_TYPE_DICTIONARY = 7, - CADENCE_TYPE_PATH = 8, -} - -export interface CadenceType { - kind: CadenceTypeKind; - rawType: string; - optional: boolean; - array: CadenceType_Array | undefined; - dictionary: CadenceType_Dictionary | undefined; -} - -export interface CadenceType_Array { - element: CadenceType | undefined; - size: number; -} - -export interface CadenceType_Dictionary { - key: CadenceType | undefined; - value: CadenceType | undefined; -} +import { CadenceType, CadenceTypeKind } from "./common"; // https://developers.flow.com/tooling/fcl-js/api#argumentfunction export type FclArgBuilder = (value: FclValue, type: unknown) => void; diff --git a/backend/src/flow/services/cli.service.ts b/packages/core/src/flow/flow-cli.service.ts similarity index 63% rename from backend/src/flow/services/cli.service.ts rename to packages/core/src/flow/flow-cli.service.ts index 682cf3469..fb05c3a1a 100644 --- a/backend/src/flow/services/cli.service.ts +++ b/packages/core/src/flow/flow-cli.service.ts @@ -1,27 +1,11 @@ +import { Injectable, NotFoundException } from "@nestjs/common"; import { - Injectable, - NotFoundException, - PreconditionFailedException, -} from "@nestjs/common"; -import { ProjectContextLifecycle } from "../utils/project-context"; -import { ProjectEntity } from "../../projects/project.entity"; -import { ManagedProcessEntity } from "../../processes/managed-process.entity"; -import { ProcessOutputSource } from "@flowser/shared"; -import { FlowConfigService } from "../../../../packages/core/src/flow/flow-config.service"; -import { ProcessManagerService } from "../../processes/process-manager.service"; -import { - HashAlgorithm, - hashAlgorithmToJSON, - SignatureAlgorithm, - signatureAlgorithmToJSON, -} from "@flowser/shared/dist/src/generated/entities/common"; + ManagedProcess, + ProcessOutputSource, +} from "../processes/managed-process"; +import { ProcessManagerService } from "../processes/process-manager.service"; import { randomUUID } from "crypto"; - -export type GenerateKeyOptions = { - derivationPath?: string; - mnemonicSeed?: string; - signatureAlgorithm?: SignatureAlgorithm; -}; +import { HashAlgorithm, SignatureAlgorithm } from "./common"; export type GeneratedKey = { derivationPath: string; @@ -35,14 +19,6 @@ export type KeyWithWeight = { publicKey: string; }; -type CreateAccountOptions = { - keys: KeyWithWeight[]; - // Account name from configuration used to sign the transaction (default "emulator-account") - signer?: string; - hashAlgorithm?: HashAlgorithm; - signatureAlgorithm?: SignatureAlgorithm; -}; - export type CreatedAccount = { // Address, without '0x' prefix. address: string; @@ -69,52 +45,52 @@ type RunCliCommandOptions = { // Every command should have a unique human-readable name. name: string; // Should this command be run in the project folder. - useProjectAsCwd: boolean; + cwd?: string; flowFlags: FlowCliFlag[]; }; +type InitOptions = { + projectRootPath: string; +}; + +type GenerateKeyOptions = { + derivationPath?: string; + mnemonicSeed?: string; + signatureAlgorithm?: SignatureAlgorithm; + projectRootPath: string; +}; + +type CreateAccountOptions = { + keys: KeyWithWeight[]; + // Account name from configuration used to sign the transaction (default "emulator-account") + signer?: string; + hashAlgorithm?: HashAlgorithm; + signatureAlgorithm?: SignatureAlgorithm; + projectRootPath: string; +}; + @Injectable() -export class FlowCliService implements ProjectContextLifecycle { +export class FlowCliService { static readonly processId = "flow-init-config"; - private projectContext: ProjectEntity | undefined; - - constructor( - private configService: FlowConfigService, - private processManagerService: ProcessManagerService - ) {} - - async onEnterProjectContext(project: ProjectEntity) { - this.projectContext = project; - if (!this.configService.hasConfigFile()) { - await this.initConfig(); - await this.configService.reload(); - } - } - async onExitProjectContext() { - this.processManagerService.get(FlowCliService.processId)?.clearLogs(); - this.projectContext = undefined; - } + constructor(private processManagerService: ProcessManagerService) {} - async initConfig() { - if (!this.projectContext) { - throw new Error("Project context not found"); - } - const childProcess = new ManagedProcessEntity({ + async init(options: InitOptions) { + const childProcess = new ManagedProcess({ id: FlowCliService.processId, name: "Flow init", command: { name: "flow", args: ["init"], options: { - cwd: this.projectContext.filesystemPath, + cwd: options.projectRootPath, }, }, }); await this.processManagerService.runUntilTermination(childProcess); } - async generateKey(options?: GenerateKeyOptions): Promise { + async generateKey(options: GenerateKeyOptions): Promise { return this.runAndGetJsonOutput({ name: "Flow generate key", flowFlags: [ @@ -130,12 +106,10 @@ export class FlowCliService implements ProjectContextLifecycle { }, { key: "--sig-algo", - value: options?.signatureAlgorithm - ? signatureAlgorithmToJSON(options?.signatureAlgorithm) - : undefined, + value: options?.signatureAlgorithm, }, ], - useProjectAsCwd: true, + cwd: options.projectRootPath, }); } @@ -151,15 +125,11 @@ export class FlowCliService implements ProjectContextLifecycle { }, { key: "--hash-algo", - value: options.hashAlgorithm - ? hashAlgorithmToJSON(options.hashAlgorithm) - : undefined, + value: options.hashAlgorithm, }, { key: "--sig-algo", - value: options?.signatureAlgorithm - ? signatureAlgorithmToJSON(options?.signatureAlgorithm) - : undefined, + value: options?.signatureAlgorithm, }, ...options.keys .map((key): FlowCliFlag[] => [ @@ -168,7 +138,7 @@ export class FlowCliService implements ProjectContextLifecycle { ]) .flat(), ], - useProjectAsCwd: true, + cwd: options.projectRootPath, }); } @@ -176,7 +146,6 @@ export class FlowCliService implements ProjectContextLifecycle { const output = await this.runAndGetOutput({ name: "Flow version", flowFlags: ["version"], - useProjectAsCwd: false, }); const stdout = output.filter( (log) => log.source === ProcessOutputSource.OUTPUT_SOURCE_STDOUT @@ -211,17 +180,13 @@ export class FlowCliService implements ProjectContextLifecycle { } private async runAndGetOutput(options: RunCliCommandOptions) { - const childProcess = new ManagedProcessEntity({ + const childProcess = new ManagedProcess({ id: randomUUID(), name: options.name, command: { name: "flow", args: options.flowFlags.map((flag) => this.buildFlag(flag)).flat(), - options: options.useProjectAsCwd - ? { - cwd: this.getRequiredProjectCwd(), - } - : undefined, + options: options.cwd ? { cwd: options.cwd } : undefined, }, }); return this.processManagerService.runUntilTermination(childProcess); @@ -242,14 +207,4 @@ export class FlowCliService implements ProjectContextLifecycle { return []; } - - private getRequiredProjectCwd() { - if (!this.projectContext) { - throw new PreconditionFailedException( - "Project context not set", - "Missing project context when retrieving project path" - ); - } - return this.projectContext.filesystemPath; - } } diff --git a/packages/core/src/flow/flow-config.service.ts b/packages/core/src/flow/flow-config.service.ts index e02d12ca1..c9225e71b 100644 --- a/packages/core/src/flow/flow-config.service.ts +++ b/packages/core/src/flow/flow-config.service.ts @@ -102,7 +102,7 @@ export class FlowConfigService { await this.reload(); } - public onExitProjectContext() { + public cleanup() { this.workingDirectoryPath = undefined; this.detachListeners(); } diff --git a/packages/core/src/flow/flow-emulator.service.ts b/packages/core/src/flow/flow-emulator.service.ts index 30ba82fd2..96d7b010a 100644 --- a/packages/core/src/flow/flow-emulator.service.ts +++ b/packages/core/src/flow/flow-emulator.service.ts @@ -1,12 +1,13 @@ import { Injectable, InternalServerErrorException } from "@nestjs/common"; import { ProcessOutputSource } from "@flowser/shared"; -import { ProcessManagerService } from "../../../../backend/src/processes/process-manager.service"; -import { ManagedProcessEntity } from "../../../../backend/src/processes/managed-process.entity"; +import { ProcessManagerService } from "../processes/process-manager.service"; +import { ManagedProcess } from "../processes/managed-process"; import { isDefined, waitForMs, } from "../../../../backend/src/utils/common-utils"; import { EventEmitter } from "node:events"; +import { HashAlgorithm, SignatureAlgorithm } from "./common"; type FlowWellKnownAddresses = { serviceAccountAddress: string; @@ -52,29 +53,10 @@ export type FlowEmulatorConfig = { snapshot: boolean; }; -// https://docs.onflow.org/cadence/language/crypto/#hashing -export enum SignatureAlgorithm { - // Enum values must be kept unchanged. - ECDSA_P256 = "ECDSA_P256", - ECDSA_secp256k1 = "ECDSA_secp256k1", - BLS_BLS12_381 = "BLS_BLS12_381", -} - -// https://docs.onflow.org/cadence/language/crypto/#hashing -export enum HashAlgorithm { - // Enum values must be kept unchanged. - SHA2_256 = "SHA2_256", - SHA2_384 = "SHA2_384", - SHA3_256 = "SHA3_256", - SHA3_384 = "SHA3_384", - KMAC128_BLS_BLS12_381 = "KMAC128_BLS_BLS12_381", - KECCAK_256 = "KECCAK_256", -} - @Injectable() export class FlowEmulatorService extends EventEmitter { public static readonly processId = "emulator"; - private process: ManagedProcessEntity | undefined; + private process: ManagedProcess | undefined; private config: FlowEmulatorConfig; constructor(private processManagerService: ProcessManagerService) { @@ -120,7 +102,7 @@ export class FlowEmulatorService extends EventEmitter { } async start(config: FlowEmulatorConfig) { - this.process = new ManagedProcessEntity({ + this.process = new ManagedProcess({ id: FlowEmulatorService.processId, name: "Flow emulator", command: { diff --git a/packages/core/src/flow/flow-gateway.service.ts b/packages/core/src/flow/flow-gateway.service.ts index 27b098a37..f7cfd6372 100644 --- a/packages/core/src/flow/flow-gateway.service.ts +++ b/packages/core/src/flow/flow-gateway.service.ts @@ -150,6 +150,7 @@ enum ServiceStatus { export class FlowGatewayService { constructor(private readonly flowConfigService: FlowConfigService) {} + // TODO(restructure): Pass this config to constructor instead? configure(config: FlowGatewayConfig): void { fcl .config({ diff --git a/backend/src/flow/services/templates.service.ts b/packages/core/src/flow/flow-interactions.service.ts similarity index 70% rename from backend/src/flow/services/templates.service.ts rename to packages/core/src/flow/flow-interactions.service.ts index c470bca25..2dd7184ca 100644 --- a/backend/src/flow/services/templates.service.ts +++ b/packages/core/src/flow/flow-interactions.service.ts @@ -1,32 +1,36 @@ -import { InteractionKind, InteractionTemplate } from "@flowser/shared"; -import { Injectable, InternalServerErrorException } from "@nestjs/common"; -import { ProjectContextLifecycle } from "../utils/project-context"; -import { ProjectEntity } from "../../projects/project.entity"; +import { Injectable } from "@nestjs/common"; import * as fs from "fs/promises"; import * as path from "path"; -import { GoBindingsService } from "../../go-bindings/go-bindings.service"; -import { isDefined } from "../../utils/common-utils"; +import { GoBindingsService } from "./go-bindings.service"; +import { isDefined } from "../../../../backend/src/utils/common-utils"; +import { InteractionKind } from "./common"; -@Injectable() -export class FlowTemplatesService implements ProjectContextLifecycle { - private projectContext: ProjectEntity | undefined; +export interface InteractionTemplate { + id: string; + name: string; + code: string; + source: InteractionTemplate_Source | undefined; + createdDate: string; + updatedDate: string; +} - constructor(private readonly goBindings: GoBindingsService) {} +interface InteractionTemplate_Source { + filePath: string; +} - public async onEnterProjectContext(project: ProjectEntity) { - this.projectContext = project; - } +type GetInteractionTemplatesOptions = { + projectRootPath: string; +}; - public onExitProjectContext() { - this.projectContext = undefined; - } +@Injectable() +export class FlowInteractionsService { + constructor(private readonly goBindings: GoBindingsService) {} - public async getLocalTemplates(): Promise { - if (!this.projectContext) { - throw new InternalServerErrorException("Project context not found"); - } + public async getInteractionTemplates( + options: GetInteractionTemplatesOptions + ): Promise { const potentialCadenceFilePaths = await this.findAllCadenceFiles( - this.projectContext.filesystemPath + options.projectRootPath ); const templates = await Promise.all( potentialCadenceFilePaths.map((potentialCadenceFilePath) => diff --git a/packages/core/src/flow/flow-snapshots.service.ts b/packages/core/src/flow/flow-snapshots.service.ts new file mode 100644 index 000000000..6d6fa185c --- /dev/null +++ b/packages/core/src/flow/flow-snapshots.service.ts @@ -0,0 +1,133 @@ +import { + Injectable, + InternalServerErrorException, + NotFoundException, +} from "@nestjs/common"; +import axios, { Method } from "axios"; + +type CreateSnapshotRequest = { + name: string; +}; + +type JumpToBlockHeightRequest = { + height: number; +}; + +type JumpToSnapshotRequest = { + name: string; +}; + +type ListSnapshotsResponse = { + names: string[]; +}; + +type SnapshotInfoResponse = { + context: string; + blockId: string; + height: number; +}; + +@Injectable() +export class FlowSnapshotsService { + constructor() {} + + async rollback(blockHeight: number) { + await this.jumpToHeight({ + height: blockHeight, + }); + + // const blockIdsUntilTargetHeight = allBlocks + // .filter((block) => block.blockHeight > blockHeight) + // .map((block) => block.blockId); + + // TODO(restructure): Invalidate data associated with the above blocks + } + + async checkout(snapshotId: string) { + await this.jumpToSnapshot({ + name: snapshotId, + }); + + // TODO(restructure): Invalidate (all) blockchain data + } + + private async create( + request: CreateSnapshotRequest + ): Promise { + // https://github.com/onflow/flow-emulator/blob/0ca87170b7792b68941da368a839b9b74615d659/server/utils/emulator.go#L208-L233 + const response = await this.emulatorRequest({ + method: "post", + endpoint: `/snapshots?name=${request.name}`, + }); + + if (response.status !== 200) { + throw new InternalServerErrorException("Failed creating snapshot"); + } + + return response.data; + } + + private async jumpToHeight(request: JumpToBlockHeightRequest): Promise { + // https://github.com/onflow/flow-emulator/blob/0ca87170b7792b68941da368a839b9b74615d659/server/utils/emulator.go#L118-L136 + const response = await this.emulatorRequest({ + method: "post", + endpoint: `/rollback?height=${request.height}`, + }); + + if (response.status !== 200) { + throw new InternalServerErrorException("Failed to jump to height"); + } + } + + private async jumpToSnapshot( + request: JumpToSnapshotRequest + ): Promise { + // https://github.com/onflow/flow-emulator/blob/0ca87170b7792b68941da368a839b9b74615d659/server/utils/emulator.go#L183-L206 + const response = await this.emulatorRequest({ + method: "put", + endpoint: `/snapshots/${request.name}`, + }); + + if (response.status === 404) { + throw new NotFoundException("Snapshot not found"); + } + + if (response.status !== 200) { + throw new InternalServerErrorException("Failed to jump to snapshot"); + } + + return response.data; + } + + private async listSnapshots(): Promise { + // https://github.com/onflow/flow-emulator/blob/0ca87170b7792b68941da368a839b9b74615d659/server/utils/emulator.go#L138-L156 + const response = await this.emulatorRequest({ + method: "get", + endpoint: "/snapshots", + }); + + if (response.status !== 200) { + throw new InternalServerErrorException("Failed to list snapshots"); + } + + const emptyResponse: ListSnapshotsResponse = { + names: [], + }; + + // Emulator returns `null` when no snapshots exist. + return response.data ? { names: response.data } : emptyResponse; + } + + private emulatorRequest(options: { + method: Method; + endpoint: string; + }) { + return axios.request({ + method: options.method, + url: `http://localhost:8080/emulator${options.endpoint}`, + // Prevent axios from throwing on certain http response codes + // https://github.com/axios/axios/issues/41 + validateStatus: () => true, + }); + } +} diff --git a/backend/src/flow/services/storage.service.ts b/packages/core/src/flow/flow-storage.service.ts similarity index 88% rename from backend/src/flow/services/storage.service.ts rename to packages/core/src/flow/flow-storage.service.ts index cffc619d2..28e5e266b 100644 --- a/backend/src/flow/services/storage.service.ts +++ b/packages/core/src/flow/flow-storage.service.ts @@ -1,12 +1,8 @@ import { Injectable } from "@nestjs/common"; -import { FlowGatewayService } from "../../../../packages/core/src/flow/flow-gateway.service"; -import { AccountStorageItemEntity } from "../../accounts/entities/storage-item.entity"; -import { ensurePrefixedAddress } from "../../utils/common-utils"; -import { - AccountStorageDomain, - CadenceType, - CadenceTypeKind, -} from "@flowser/shared"; +import { FlowGatewayService } from "./flow-gateway.service"; +import { AccountStorageItemEntity } from "../../../../backend/src/accounts/entities/storage-item.entity"; +import { ensurePrefixedAddress } from "../../../../backend/src/utils/common-utils"; +import { CadenceTypeKind } from "./common"; /** * For more info on the account storage model and API, see: @@ -17,6 +13,17 @@ import { * https://github.com/onflow/flow-emulator/blob/3fbe8ad9dc841abdc13056e20e7b15fc0e32a749/server/backend/backend.go#L584-L590 */ +/** + * Every account storage path consists of a domain and identifier: // + * See official docs: https://developers.flow.com/cadence/language/accounts#paths + */ +enum AccountStorageDomain { + STORAGE_DOMAIN_UNKNOWN = 0, + STORAGE_DOMAIN_PRIVATE = 1, + STORAGE_DOMAIN_PUBLIC = 2, + STORAGE_DOMAIN_STORAGE = 3, +} + type CapabilityPathItem = { address: string; path: string; @@ -183,10 +190,13 @@ export class FlowAccountStorageService { arguments: [ { value: address, - type: CadenceType.fromPartial({ + type: { rawType: "Address", kind: CadenceTypeKind.CADENCE_TYPE_ADDRESS, - }), + optional: false, + array: undefined, + dictionary: undefined, + }, identifier: "address", }, ], diff --git a/backend/src/go-bindings/go-bindings.service.ts b/packages/core/src/flow/go-bindings.service.ts similarity index 85% rename from backend/src/go-bindings/go-bindings.service.ts rename to packages/core/src/flow/go-bindings.service.ts index f3205b1ee..83045d585 100644 --- a/backend/src/go-bindings/go-bindings.service.ts +++ b/packages/core/src/flow/go-bindings.service.ts @@ -1,13 +1,27 @@ import { Injectable, InternalServerErrorException } from "@nestjs/common"; -import { - GetParsedInteractionRequest, - GetParsedInteractionResponse, - GetAddressIndexRequest, - GetAddressIndexResponse, -} from "@flowser/shared"; import { spawn } from "node:child_process"; import * as path from "path"; import * as os from "os"; +import { CadenceInteraction } from './common'; + +export interface GetParsedInteractionRequest { + sourceCode: string; +} + +export interface GetParsedInteractionResponse { + interaction: CadenceInteraction | undefined; + program: { [key: string]: any } | undefined; + error: string; +} + +export interface GetAddressIndexRequest { + chainId: string; + hexAddress: string; +} + +export interface GetAddressIndexResponse { + index: number; +} type ExecuteGoBinRequest = { command: string; @@ -30,7 +44,7 @@ export class GoBindingsService { stdIn: request.sourceCode, }); - return GetParsedInteractionResponse.fromJSON(JSON.parse(response.raw)); + return JSON.parse(response.raw); } public async getAddressIndex( diff --git a/packages/core/src/flow/resources.ts b/packages/core/src/flow/resources.ts new file mode 100644 index 000000000..846f1406a --- /dev/null +++ b/packages/core/src/flow/resources.ts @@ -0,0 +1,5 @@ +export interface FlowStateSnapshot { + id: string; + description: string; + blockId: string; +} diff --git a/backend/src/processes/managed-process.entity.ts b/packages/core/src/processes/managed-process.ts similarity index 84% rename from backend/src/processes/managed-process.entity.ts rename to packages/core/src/processes/managed-process.ts index 35beec324..73ed792fa 100644 --- a/backend/src/processes/managed-process.entity.ts +++ b/packages/core/src/processes/managed-process.ts @@ -3,13 +3,6 @@ import { spawn, SpawnOptionsWithoutStdio, } from "child_process"; -import { - ProcessOutputSource, - ManagedProcess, - ManagedProcessOutput, - ManagedProcessState, - managedProcessStateToJSON, -} from "@flowser/shared"; import { randomUUID } from "crypto"; import { Logger } from "@nestjs/common"; import { EventEmitter } from "node:events"; @@ -24,12 +17,32 @@ export type ManagedProcessOptions = { }; }; +export enum ProcessOutputSource { + OUTPUT_SOURCE_STDOUT = 1, + OUTPUT_SOURCE_STDERR = 2, +} + +export enum ManagedProcessState { + MANAGED_PROCESS_STATE_NOT_RUNNING = "not_running", + MANAGED_PROCESS_STATE_RUNNING = "running", + MANAGED_PROCESS_STATE_ERROR = "error", +} + +export interface ManagedProcessOutput { + id: string; + processId: string; + data: string; + source: ProcessOutputSource; + createdAt: string; + updatedAt: string; +} + export enum ManagedProcessEvent { STATE_CHANGE = "state_change", } -export class ManagedProcessEntity extends EventEmitter { - private readonly logger = new Logger(ManagedProcessEntity.name); +export class ManagedProcess extends EventEmitter { + private readonly logger = new Logger(ManagedProcess.name); public readonly id: string; private readonly name: string; public options: ManagedProcessOptions; @@ -116,19 +129,6 @@ export class ManagedProcessEntity extends EventEmitter { this.output = []; } - public toProto(): ManagedProcess { - const { name, args } = this.options.command; - return { - id: this.id, - name: this.name, - command: { name, args: args ?? [] }, - state: this.state, - output: this.output, - updatedAt: this.updatedAt.toISOString(), - createdAt: this.createdAt.toISOString(), - }; - } - private attachEventListeners() { if (!this.childProcess) { return; @@ -183,15 +183,13 @@ export class ManagedProcessEntity extends EventEmitter { this.output.push(...logs); } - private setState(state: ManagedProcessState) { + private setState(newState: ManagedProcessState) { this.logger.debug( - `Process ${this.id} state changed from ${managedProcessStateToJSON( - this.state - )} to ${managedProcessStateToJSON(state)}` + `Process ${this.id} state changed from ${this.state} to ${newState}` ); this.updatedAt = new Date(); - this.state = state; - this.emit(ManagedProcessEvent.STATE_CHANGE, state); + this.state = newState; + this.emit(ManagedProcessEvent.STATE_CHANGE, newState); } public isRunning() { diff --git a/backend/src/processes/process-manager.service.ts b/packages/core/src/processes/process-manager.service.ts similarity index 93% rename from backend/src/processes/process-manager.service.ts rename to packages/core/src/processes/process-manager.service.ts index 93e51fda5..e194ec142 100644 --- a/backend/src/processes/process-manager.service.ts +++ b/packages/core/src/processes/process-manager.service.ts @@ -1,6 +1,9 @@ import { Injectable, NotFoundException } from "@nestjs/common"; -import { ManagedProcessEntity } from "./managed-process.entity"; -import { ProcessOutputSource, ManagedProcessOutput } from "@flowser/shared"; +import { + ManagedProcess, + ProcessOutputSource, + ManagedProcessOutput, +} from "./managed-process"; import { EventEmitter } from "node:events"; export enum ProcessManagerEvent { @@ -10,7 +13,7 @@ export enum ProcessManagerEvent { @Injectable() export class ProcessManagerService extends EventEmitter { - private readonly processLookupById: Map; + private readonly processLookupById: Map; constructor() { super(); @@ -26,7 +29,7 @@ export class ProcessManagerService extends EventEmitter { process.exit(0); } - findAllProcessesNewerThanTimestamp(timestamp: Date): ManagedProcessEntity[] { + findAllProcessesNewerThanTimestamp(timestamp: Date): ManagedProcess[] { return this.getAll().filter((process) => { const isUpdatedLater = process.updatedAt.getTime() > timestamp.getTime(); const isCreatedLater = process.createdAt.getTime() > timestamp.getTime(); @@ -71,7 +74,7 @@ export class ProcessManagerService extends EventEmitter { return this.processLookupById.get(processId); } - async start(process: ManagedProcessEntity) { + async start(process: ManagedProcess) { const isExisting = this.processLookupById.has(process.id); if (isExisting) { await this.startExisting(process.id); @@ -80,7 +83,7 @@ export class ProcessManagerService extends EventEmitter { } } - async startNew(process: ManagedProcessEntity) { + async startNew(process: ManagedProcess) { this.processLookupById.set(process.id, process); this.emit(ProcessManagerEvent.PROCESS_ADDED, process); await process.start(); @@ -103,7 +106,7 @@ export class ProcessManagerService extends EventEmitter { * If process exists with non-zero exit code, an error is thrown. */ async runUntilTermination( - process: ManagedProcessEntity + process: ManagedProcess ): Promise { await this.start(process); await process.waitOnExit(); diff --git a/packages/core/src/workspace.service.ts b/packages/core/src/workspace.service.ts new file mode 100644 index 000000000..cb0ecb12f --- /dev/null +++ b/packages/core/src/workspace.service.ts @@ -0,0 +1,10 @@ +import { FlowGatewayConfig } from "./flow/flow-gateway.service"; +import { FlowEmulatorConfig } from './flow/flow-emulator.service'; + +export class FlowserWorkspace { + id: string; + name: string; + filesystemPath: string; + gateway: FlowGatewayConfig; + emulator: FlowEmulatorConfig; +} diff --git a/yarn.lock b/yarn.lock index 2a018f1da..f56303f97 100644 --- a/yarn.lock +++ b/yarn.lock @@ -406,6 +406,13 @@ "resolved" "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" "version" "0.4.0" +"axios@^0.21.4": + "integrity" "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==" + "resolved" "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz" + "version" "0.21.4" + dependencies: + "follow-redirects" "^1.14.0" + "axios@0.27.2": "integrity" "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==" "resolved" "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz" @@ -929,7 +936,7 @@ "resolved" "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz" "version" "3.2.9" -"follow-redirects@^1.14.9": +"follow-redirects@^1.14.0", "follow-redirects@^1.14.9": "integrity" "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==" "resolved" "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz" "version" "1.15.3" @@ -1308,6 +1315,11 @@ "resolved" "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" "version" "1.4.0" +"node-abort-controller@^3.0.1": + "integrity" "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==" + "resolved" "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz" + "version" "3.1.1" + "node-fetch@^2.6.12": "integrity" "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==" "resolved" "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz" @@ -1530,11 +1542,15 @@ dependencies: "lru-cache" "^6.0.0" -"services@file:/Users/bartkozorog/Projects/flowser/packages/services": - "resolved" "file:packages/services" +"services@file:/Users/bartkozorog/Projects/flowser/packages/core": + "resolved" "file:packages/core" "version" "1.0.0" dependencies: + "@nestjs/common" "^8.0.0" + "@onflow/fcl" "^1.6.0" + "axios" "^0.21.4" "config" "*" + "node-abort-controller" "^3.0.1" "sha3@^2.1.4": "integrity" "sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg==" From b7512a8d00b35179151f6c070eb607c9f5cfb6e8 Mon Sep 17 00:00:00 2001 From: Bart Date: Sat, 7 Oct 2023 15:31:15 +0200 Subject: [PATCH 004/100] move more services to modules --- .../data-processing/data-processing.module.ts | 2 +- backend/src/go-bindings/go-bindings.module.ts | 2 +- .../go-bindings/go-bindings.service.spec.ts | 18 --- .../processes/process-manager.controller.ts | 8 +- backend/src/projects/projects.service.ts | 4 +- backend/src/wallet/wallet.controller.ts | 2 +- backend/src/wallet/wallet.module.ts | 2 +- packages/api/package.json | 2 +- packages/api/src/resources.ts | 149 ++++++++++++++++- packages/config/package.json | 2 +- packages/core/package.json | 5 +- packages/core/src/flow/common.ts | 72 --------- packages/core/src/flow/fcl-values.ts | 2 +- packages/core/src/flow/flow-cli.service.ts | 2 +- .../core/src/flow/flow-emulator.service.ts | 2 +- .../core/src/flow/flow-gateway.service.ts | 2 +- .../src/flow/flow-interactions.service.ts | 2 +- .../core/src/flow/flow-storage.service.ts | 2 +- packages/core/src/flow/go-bindings.service.ts | 2 +- packages/core/src/index.ts | 1 - packages/core/src/workspace.service.ts | 10 -- packages/indexer/index.ts | 1 + packages/indexer/package.json | 19 +++ .../indexer/src}/async-interval-scheduler.ts | 0 .../{core => indexer}/src/in-memory-index.ts | 2 +- .../indexer/src}/processor.service.ts | 82 +++++----- packages/indexer/tsconfig.json | 3 + packages/wallet/package.json | 20 +++ .../wallet/src}/wallet.service.ts | 67 ++++---- yarn.lock | 151 ++++++++++++++---- 30 files changed, 401 insertions(+), 237 deletions(-) delete mode 100644 backend/src/go-bindings/go-bindings.service.spec.ts delete mode 100644 packages/core/src/flow/common.ts delete mode 100644 packages/core/src/index.ts delete mode 100644 packages/core/src/workspace.service.ts create mode 100644 packages/indexer/index.ts create mode 100644 packages/indexer/package.json rename {backend/src/core => packages/indexer/src}/async-interval-scheduler.ts (100%) rename packages/{core => indexer}/src/in-memory-index.ts (97%) rename {backend/src/data-processing => packages/indexer/src}/processor.service.ts (91%) create mode 100644 packages/indexer/tsconfig.json create mode 100644 packages/wallet/package.json rename {backend/src/wallet => packages/wallet/src}/wallet.service.ts (85%) diff --git a/backend/src/data-processing/data-processing.module.ts b/backend/src/data-processing/data-processing.module.ts index 7ef33260d..5fd866fa3 100644 --- a/backend/src/data-processing/data-processing.module.ts +++ b/backend/src/data-processing/data-processing.module.ts @@ -4,7 +4,7 @@ import { AccountsModule } from "../accounts/accounts.module"; import { EventsModule } from "../events/events.module"; import { TransactionsModule } from "../transactions/transactions.module"; import { CoreModule } from "../core/core.module"; -import { ProcessorService } from "./processor.service"; +import { ProcessorService } from "@onflowser/indexer/src/processor.service"; import { FlowModule } from "../flow/flow.module"; import { ProcessesModule } from "../processes/processes.module"; import { WalletModule } from "../wallet/wallet.module"; diff --git a/backend/src/go-bindings/go-bindings.module.ts b/backend/src/go-bindings/go-bindings.module.ts index eaca582ee..24d284f25 100644 --- a/backend/src/go-bindings/go-bindings.module.ts +++ b/backend/src/go-bindings/go-bindings.module.ts @@ -1,5 +1,5 @@ import { Module } from "@nestjs/common"; -import { GoBindingsService } from "services/src/flow/go-bindings.service"; +import { GoBindingsService } from "@onflowser/core/src/flow/go-bindings.service"; import { GoBindingsController } from "./go-bindings.controller"; @Module({ diff --git a/backend/src/go-bindings/go-bindings.service.spec.ts b/backend/src/go-bindings/go-bindings.service.spec.ts deleted file mode 100644 index 71aac5cfd..000000000 --- a/backend/src/go-bindings/go-bindings.service.spec.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Test, TestingModule } from "@nestjs/testing"; -import { GoBindingsService } from "services/src/flow/go-bindings.service"; - -describe("InteractionsService", () => { - let service: GoBindingsService; - - beforeEach(async () => { - const module: TestingModule = await Test.createTestingModule({ - providers: [GoBindingsService], - }).compile(); - - service = module.get(GoBindingsService); - }); - - it("should be defined", () => { - expect(service).toBeDefined(); - }); -}); diff --git a/backend/src/processes/process-manager.controller.ts b/backend/src/processes/process-manager.controller.ts index 1f1937e6f..9a6927607 100644 --- a/backend/src/processes/process-manager.controller.ts +++ b/backend/src/processes/process-manager.controller.ts @@ -6,14 +6,14 @@ import { Post, UseInterceptors, } from "@nestjs/common"; -import { ProcessManagerService } from "../../../packages/core/src/processes/process-manager.service"; +import { ProcessManagerService } from "@onflowser/core/src/processes/process-manager.service"; import { GetPollingOutputsResponse, GetAllManagedProcessesResponse, GetPollingManagedProcessesResponse, GetPollingManagedProcessesRequest, GetPollingOutputsRequest, -} from "../../../shared/src"; +} from "@flowser/shared"; import { PollingResponseInterceptor } from "../core/interceptors/polling-response.interceptor"; @Controller("processes") @@ -50,14 +50,14 @@ export class ProcessManagerController { this.processManagerService.findAllProcessesNewerThanTimestamp( new Date(request.timestamp) ); - return processes.map((process) => process.toProto()); + return processes.map((process) => process); } @Get() async getAllProcesses() { const processes = this.processManagerService.getAll(); return GetAllManagedProcessesResponse.toJSON({ - processes: processes.map((process) => process.toProto()), + processes: processes, }); } diff --git a/backend/src/projects/projects.service.ts b/backend/src/projects/projects.service.ts index 23063c404..600e36517 100644 --- a/backend/src/projects/projects.service.ts +++ b/backend/src/projects/projects.service.ts @@ -11,7 +11,7 @@ import { MoreThan, Repository } from "typeorm"; import { ProjectEntity } from "./project.entity"; import { InjectRepository } from "@nestjs/typeorm"; import { FlowGatewayService } from "../../../packages/core/src/flow/flow-gateway.service"; -import { ProcessorService } from "../data-processing/processor.service"; +import { ProcessorService } from "@onflowser/indexer/src/processor.service"; import { FlowEmulatorService } from "../../../packages/core/src/flow/flow-emulator.service"; import { FlowCliService } from "../../../packages/core/src/flow/flow-cli.service"; import { FlowConfigService } from "../../../packages/core/src/flow/flow-config.service"; @@ -26,7 +26,7 @@ import { } from "@flowser/shared"; import * as fs from "fs"; import { CacheRemovalService } from "../core/services/cache-removal.service"; -import { WalletService } from "../wallet/wallet.service"; +import { WalletService } from "../../../packages/wallet/src/wallet.service"; import { FlowSnapshotsService } from "../../../packages/core/src/flow/flow-snapshots.service"; import { FlowInteractionsService } from "../../../packages/core/src/flow/flow-interactions.service"; diff --git a/backend/src/wallet/wallet.controller.ts b/backend/src/wallet/wallet.controller.ts index 4dcd59b78..7b40e08d8 100644 --- a/backend/src/wallet/wallet.controller.ts +++ b/backend/src/wallet/wallet.controller.ts @@ -1,5 +1,5 @@ import { Body, Controller, Post } from "@nestjs/common"; -import { WalletService } from "./wallet.service"; +import { WalletService } from "../../../packages/wallet/src/wallet.service"; import { SendTransactionRequest, SendTransactionResponse, diff --git a/backend/src/wallet/wallet.module.ts b/backend/src/wallet/wallet.module.ts index a352fe386..0fb84ed55 100644 --- a/backend/src/wallet/wallet.module.ts +++ b/backend/src/wallet/wallet.module.ts @@ -2,7 +2,7 @@ import { Module } from "@nestjs/common"; import { FlowModule } from "../flow/flow.module"; import { AccountsModule } from "../accounts/accounts.module"; import { WalletController } from "./wallet.controller"; -import { WalletService } from "./wallet.service"; +import { WalletService } from "../../../packages/wallet/src/wallet.service"; @Module({ imports: [FlowModule, AccountsModule], diff --git a/packages/api/package.json b/packages/api/package.json index a7c06baf2..6c8d08ef0 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -1,5 +1,5 @@ { - "name": "api", + "name": "@onflowser/api", "version": "1.0.0", "description": "", "main": "./src/index.ts", diff --git a/packages/api/src/resources.ts b/packages/api/src/resources.ts index 75266490a..c467b78d1 100644 --- a/packages/api/src/resources.ts +++ b/packages/api/src/resources.ts @@ -1,8 +1,39 @@ -import { - CollectionGuarantee, - HashAlgorithm, - SignatureAlgorithm, -} from "@flowser/shared"; +export enum CadenceTypeKind { + CADENCE_TYPE_UNKNOWN = 0, + CADENCE_TYPE_FIXED_POINT_NUMBER = 1, + CADENCE_TYPE_INTEGER_NUMBER = 2, + CADENCE_TYPE_TEXTUAL = 3, + CADENCE_TYPE_BOOLEAN = 4, + CADENCE_TYPE_ADDRESS = 5, + CADENCE_TYPE_ARRAY = 6, + CADENCE_TYPE_DICTIONARY = 7, + CADENCE_TYPE_PATH = 8, +} + + +export enum InteractionKind { + INTERACTION_SCRIPT = 1, + INTERACTION_TRANSACTION = 2, +} + +export interface CadenceInteraction { + kind: InteractionKind; + parameters: CadenceParameter[]; + transaction: CadenceInteraction_Transaction | undefined; +} + +export interface CadenceInteraction_Transaction { + /** + * Number of authorizers, specified in prepare statement. + * https://developers.flow.com/concepts/start-here/transaction-signing + */ + authorizerCount: number; +} + +export interface CadenceParameter { + identifier: string; + type: CadenceType | undefined; +} export interface PollingResource { createdAt: Date; @@ -26,6 +57,25 @@ export interface FlowAccount { isDefaultAccount: boolean; } +// https://docs.onflow.org/cadence/language/crypto/#hashing +export enum SignatureAlgorithm { + // Enum values must be kept unchanged. + ECDSA_P256 = "ECDSA_P256", + ECDSA_secp256k1 = "ECDSA_secp256k1", + BLS_BLS12_381 = "BLS_BLS12_381", +} + +// https://docs.onflow.org/cadence/language/crypto/#hashing +export enum HashAlgorithm { + // Enum values must be kept unchanged. + SHA2_256 = "SHA2_256", + SHA2_384 = "SHA2_384", + SHA3_256 = "SHA3_256", + SHA3_384 = "SHA3_384", + KMAC128_BLS_BLS12_381 = "KMAC128_BLS_BLS12_381", + KECCAK_256 = "KECCAK_256", +} + export interface FlowAccountKey { index: number; accountAddress: string; @@ -69,7 +119,96 @@ export interface FlowBlock { signatures: string[]; } +export interface CollectionGuarantee { + collectionId: string; + signatures: string[]; +} + export interface FlowTransaction { + id: string; + script: string; + blockId: string; + referenceBlockId: string; + gasLimit: number; + payer: string; + proposalKey: TransactionProposalKey; + status: TransactionStatus; + arguments: FlowTransactionArgument[]; + authorizers: string[]; + envelopeSignatures: SignableObject[]; + payloadSignatures: SignableObject[]; + createdAt: string; + updatedAt: string; +} + +export interface TransactionProposalKey { + address: string; + keyId: number; + sequenceNumber: number; +} + +export interface FlowTransactionArgument { + identifier: string; + type: CadenceType | undefined; + valueAsJson: string; +} + +export interface CadenceType { + kind: CadenceTypeKind; + rawType: string; + optional: boolean; + array: CadenceType_Array | undefined; + dictionary: CadenceType_Dictionary | undefined; +} + +export interface CadenceType_Array { + element: CadenceType | undefined; + size: number; +} + +export interface CadenceType_Dictionary { + key: CadenceType | undefined; + value: CadenceType | undefined; +} + +export interface SignableObject { + address: string; + keyId: number; + signature: string; +} + +export interface TransactionStatus { + executionStatus: ExecutionStatusCode; + grcpStatus: GrcpStatusCode; + errorMessage: string; +} + +/** https://github.com/onflow/flow-go/issues/4494#issuecomment-1601995168 */ +export enum GrcpStatusCode { + GRCP_STATUS_OK = 0, + GRCP_STATUS_FAILED = 1, + UNRECOGNIZED = -1, +} + +/** https://docs.onflow.org/fcl/reference/api/#transaction-statuses */ +export enum ExecutionStatusCode { + EXECUTION_STATUS_UNKNOWN = 0, + /** EXECUTION_STATUS_PENDING - Transaction Pending - Awaiting Finalization */ + EXECUTION_STATUS_PENDING = 1, + /** EXECUTION_STATUS_FINALIZED - Transaction Finalized - Awaiting Execution */ + EXECUTION_STATUS_FINALIZED = 2, + /** EXECUTION_STATUS_EXECUTED - Transaction Executed - Awaiting Sealing */ + EXECUTION_STATUS_EXECUTED = 3, + /** + * EXECUTION_STATUS_SEALED - Transaction Sealed - Transaction Complete. At this point the transaction + * result has been committed to the blockchain. + */ + EXECUTION_STATUS_SEALED = 4, + /** EXECUTION_STATUS_EXPIRED - Transaction Expired */ + EXECUTION_STATUS_EXPIRED = 5, +} + +export interface FlowEvent { transactionId: string; blockId: string; eventIndex: number; diff --git a/packages/config/package.json b/packages/config/package.json index e4689f351..90ad3122a 100644 --- a/packages/config/package.json +++ b/packages/config/package.json @@ -1,5 +1,5 @@ { - "name": "config", + "name": "@onflowser/config", "version": "0.0.0", "private": true, "files": [ diff --git a/packages/core/package.json b/packages/core/package.json index c16a65968..66d0d7bb0 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,8 +1,7 @@ { - "name": "services", + "name": "@onflowser/core", "version": "1.0.0", "description": "", - "main": "./src/index.ts", "types": "./src/index.ts", "scripts": {}, "keywords": [], @@ -11,7 +10,7 @@ "dependencies": { "@nestjs/common": "^8.0.0", "@onflow/fcl": "^1.6.0", - "config": "*", + "@onflowser/config": "*", "node-abort-controller": "^3.0.1", "axios": "^0.21.4" }, diff --git a/packages/core/src/flow/common.ts b/packages/core/src/flow/common.ts deleted file mode 100644 index 7cf72c947..000000000 --- a/packages/core/src/flow/common.ts +++ /dev/null @@ -1,72 +0,0 @@ -// https://docs.onflow.org/cadence/language/crypto/#hashing -export enum SignatureAlgorithm { - // Enum values must be kept unchanged. - ECDSA_P256 = "ECDSA_P256", - ECDSA_secp256k1 = "ECDSA_secp256k1", - BLS_BLS12_381 = "BLS_BLS12_381", -} - -// https://docs.onflow.org/cadence/language/crypto/#hashing -export enum HashAlgorithm { - // Enum values must be kept unchanged. - SHA2_256 = "SHA2_256", - SHA2_384 = "SHA2_384", - SHA3_256 = "SHA3_256", - SHA3_384 = "SHA3_384", - KMAC128_BLS_BLS12_381 = "KMAC128_BLS_BLS12_381", - KECCAK_256 = "KECCAK_256", -} - -export enum CadenceTypeKind { - CADENCE_TYPE_UNKNOWN = 0, - CADENCE_TYPE_FIXED_POINT_NUMBER = 1, - CADENCE_TYPE_INTEGER_NUMBER = 2, - CADENCE_TYPE_TEXTUAL = 3, - CADENCE_TYPE_BOOLEAN = 4, - CADENCE_TYPE_ADDRESS = 5, - CADENCE_TYPE_ARRAY = 6, - CADENCE_TYPE_DICTIONARY = 7, - CADENCE_TYPE_PATH = 8, -} - -export enum InteractionKind { - INTERACTION_SCRIPT = 1, - INTERACTION_TRANSACTION = 2, -} - -export interface CadenceInteraction { - kind: InteractionKind; - parameters: CadenceParameter[]; - transaction: CadenceInteraction_Transaction | undefined; -} - -export interface CadenceInteraction_Transaction { - /** - * Number of authorizers, specified in prepare statement. - * https://developers.flow.com/concepts/start-here/transaction-signing - */ - authorizerCount: number; -} - -export interface CadenceParameter { - identifier: string; - type: CadenceType | undefined; -} - -export interface CadenceType { - kind: CadenceTypeKind; - rawType: string; - optional: boolean; - array: CadenceType_Array | undefined; - dictionary: CadenceType_Dictionary | undefined; -} - -export interface CadenceType_Array { - element: CadenceType | undefined; - size: number; -} - -export interface CadenceType_Dictionary { - key: CadenceType | undefined; - value: CadenceType | undefined; -} diff --git a/packages/core/src/flow/fcl-values.ts b/packages/core/src/flow/fcl-values.ts index 960289f39..c62b23b2a 100644 --- a/packages/core/src/flow/fcl-values.ts +++ b/packages/core/src/flow/fcl-values.ts @@ -1,4 +1,4 @@ -import { CadenceType, CadenceTypeKind } from "./common"; +import { CadenceType, CadenceTypeKind } from "@onflowser/api"; // https://developers.flow.com/tooling/fcl-js/api#argumentfunction export type FclArgBuilder = (value: FclValue, type: unknown) => void; diff --git a/packages/core/src/flow/flow-cli.service.ts b/packages/core/src/flow/flow-cli.service.ts index fb05c3a1a..166c7a563 100644 --- a/packages/core/src/flow/flow-cli.service.ts +++ b/packages/core/src/flow/flow-cli.service.ts @@ -5,7 +5,7 @@ import { } from "../processes/managed-process"; import { ProcessManagerService } from "../processes/process-manager.service"; import { randomUUID } from "crypto"; -import { HashAlgorithm, SignatureAlgorithm } from "./common"; +import { HashAlgorithm, SignatureAlgorithm } from "@onflowser/api"; export type GeneratedKey = { derivationPath: string; diff --git a/packages/core/src/flow/flow-emulator.service.ts b/packages/core/src/flow/flow-emulator.service.ts index 96d7b010a..af2f09705 100644 --- a/packages/core/src/flow/flow-emulator.service.ts +++ b/packages/core/src/flow/flow-emulator.service.ts @@ -7,7 +7,7 @@ import { waitForMs, } from "../../../../backend/src/utils/common-utils"; import { EventEmitter } from "node:events"; -import { HashAlgorithm, SignatureAlgorithm } from "./common"; +import { HashAlgorithm, SignatureAlgorithm } from "@onflowser/api"; type FlowWellKnownAddresses = { serviceAccountAddress: string; diff --git a/packages/core/src/flow/flow-gateway.service.ts b/packages/core/src/flow/flow-gateway.service.ts index f7cfd6372..25dc785bf 100644 --- a/packages/core/src/flow/flow-gateway.service.ts +++ b/packages/core/src/flow/flow-gateway.service.ts @@ -242,7 +242,7 @@ export class FlowGatewayService { return { ...account, balance: account.balance / Math.pow(10, 8), address }; } - static async getApiStatus( + public async getApiStatus( gateway: FlowGatewayConfig ): Promise { const { hostname, port } = new URL(gateway.restServerAddress); diff --git a/packages/core/src/flow/flow-interactions.service.ts b/packages/core/src/flow/flow-interactions.service.ts index 2dd7184ca..82859f998 100644 --- a/packages/core/src/flow/flow-interactions.service.ts +++ b/packages/core/src/flow/flow-interactions.service.ts @@ -3,7 +3,7 @@ import * as fs from "fs/promises"; import * as path from "path"; import { GoBindingsService } from "./go-bindings.service"; import { isDefined } from "../../../../backend/src/utils/common-utils"; -import { InteractionKind } from "./common"; +import { InteractionKind } from "@onflowser/api"; export interface InteractionTemplate { id: string; diff --git a/packages/core/src/flow/flow-storage.service.ts b/packages/core/src/flow/flow-storage.service.ts index 28e5e266b..5b42a219a 100644 --- a/packages/core/src/flow/flow-storage.service.ts +++ b/packages/core/src/flow/flow-storage.service.ts @@ -2,7 +2,7 @@ import { Injectable } from "@nestjs/common"; import { FlowGatewayService } from "./flow-gateway.service"; import { AccountStorageItemEntity } from "../../../../backend/src/accounts/entities/storage-item.entity"; import { ensurePrefixedAddress } from "../../../../backend/src/utils/common-utils"; -import { CadenceTypeKind } from "./common"; +import { CadenceTypeKind } from "@onflowser/api"; /** * For more info on the account storage model and API, see: diff --git a/packages/core/src/flow/go-bindings.service.ts b/packages/core/src/flow/go-bindings.service.ts index 83045d585..07f967bd8 100644 --- a/packages/core/src/flow/go-bindings.service.ts +++ b/packages/core/src/flow/go-bindings.service.ts @@ -2,7 +2,7 @@ import { Injectable, InternalServerErrorException } from "@nestjs/common"; import { spawn } from "node:child_process"; import * as path from "path"; import * as os from "os"; -import { CadenceInteraction } from './common'; +import { CadenceInteraction } from '@onflowser/api'; export interface GetParsedInteractionRequest { sourceCode: string; diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts deleted file mode 100644 index c8719a66d..000000000 --- a/packages/core/src/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./in-memory-index"; diff --git a/packages/core/src/workspace.service.ts b/packages/core/src/workspace.service.ts deleted file mode 100644 index cb0ecb12f..000000000 --- a/packages/core/src/workspace.service.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { FlowGatewayConfig } from "./flow/flow-gateway.service"; -import { FlowEmulatorConfig } from './flow/flow-emulator.service'; - -export class FlowserWorkspace { - id: string; - name: string; - filesystemPath: string; - gateway: FlowGatewayConfig; - emulator: FlowEmulatorConfig; -} diff --git a/packages/indexer/index.ts b/packages/indexer/index.ts new file mode 100644 index 000000000..6eed4c03a --- /dev/null +++ b/packages/indexer/index.ts @@ -0,0 +1 @@ +export * from "./src/in-memory-index"; diff --git a/packages/indexer/package.json b/packages/indexer/package.json new file mode 100644 index 000000000..968f138cc --- /dev/null +++ b/packages/indexer/package.json @@ -0,0 +1,19 @@ +{ + "name": "@onflowser/indexer", + "version": "1.0.0", + "description": "", + "main": "../indexer/index.ts", + "types": "./src/index.ts", + "scripts": {}, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "@onflowser/config": "*", + "@onflowser/core": "*" + }, + "devDependencies": { + "@types/node": "^16.11.6", + "typescript": "^4.3.5" + } +} diff --git a/backend/src/core/async-interval-scheduler.ts b/packages/indexer/src/async-interval-scheduler.ts similarity index 100% rename from backend/src/core/async-interval-scheduler.ts rename to packages/indexer/src/async-interval-scheduler.ts diff --git a/packages/core/src/in-memory-index.ts b/packages/indexer/src/in-memory-index.ts similarity index 97% rename from packages/core/src/in-memory-index.ts rename to packages/indexer/src/in-memory-index.ts index 4484f3fce..d80dc64b3 100644 --- a/packages/core/src/in-memory-index.ts +++ b/packages/indexer/src/in-memory-index.ts @@ -2,7 +2,7 @@ import { IdentifiableResource, IResourceIndexReader, IResourceIndexWriter, -} from "api"; +} from "@onflowser/api"; export class InMemoryIndex implements IResourceIndexReader, IResourceIndexWriter diff --git a/backend/src/data-processing/processor.service.ts b/packages/indexer/src/processor.service.ts similarity index 91% rename from backend/src/data-processing/processor.service.ts rename to packages/indexer/src/processor.service.ts index 7c7b0a643..33cd52285 100644 --- a/backend/src/data-processing/processor.service.ts +++ b/packages/indexer/src/processor.service.ts @@ -10,28 +10,26 @@ import { FlowSignableObject, FlowTransaction, FlowTransactionStatus, -} from "../../../packages/core/src/flow/flow-gateway.service"; -import { BlocksService } from "../blocks/blocks.service"; -import { TransactionsService } from "../transactions/transactions.service"; -import { AccountsService } from "../accounts/services/accounts.service"; -import { ContractsService } from "../accounts/services/contracts.service"; -import { EventsService } from "../events/events.service"; -import { AccountEntity } from "../accounts/entities/account.entity"; -import { EventEntity } from "../events/event.entity"; -import { TransactionEntity } from "../transactions/transaction.entity"; -import { BlockEntity } from "../blocks/entities/block.entity"; -import { AccountContractEntity } from "../accounts/entities/contract.entity"; -import { KeysService } from "../accounts/services/keys.service"; -import { AccountKeyEntity } from "../accounts/entities/key.entity"; +} from "@onflowser/core/src/flow/flow-gateway.service"; +import { BlocksService } from "../../../backend/src/blocks/blocks.service"; +import { TransactionsService } from "../../../backend/src/transactions/transactions.service"; +import { AccountsService } from "../../../backend/src/accounts/services/accounts.service"; +import { ContractsService } from "../../../backend/src/accounts/services/contracts.service"; +import { EventsService } from "../../../backend/src/events/events.service"; +import { AccountEntity } from "../../../backend/src/accounts/entities/account.entity"; +import { EventEntity } from "../../../backend/src/events/event.entity"; +import { TransactionEntity } from "../../../backend/src/transactions/transaction.entity"; +import { BlockEntity } from "../../../backend/src/blocks/entities/block.entity"; +import { AccountContractEntity } from "../../../backend/src/accounts/entities/contract.entity"; +import { KeysService } from "../../../backend/src/accounts/services/keys.service"; +import { AccountKeyEntity } from "../../../backend/src/accounts/entities/key.entity"; import { ensureNonPrefixedAddress, ensurePrefixedAddress, -} from "../utils/common-utils"; -import { getDataSourceInstance } from "../database"; -import { ProjectContextLifecycle } from "../flow/utils/project-context"; -import { ProjectEntity } from "../projects/project.entity"; -import { FlowAccountStorageService } from "../../../packages/core/src/flow/flow-storage.service"; -import { AccountStorageService } from "../accounts/services/storage.service"; +} from "../../../backend/src/utils/common-utils"; +import { getDataSourceInstance } from "../../../backend/src/database"; +import { FlowAccountStorageService } from "@onflowser/core/src/flow/flow-storage.service"; +import { AccountStorageService } from "../../../backend/src/accounts/services/storage.service"; import { FlowCoreEventType, GetParsedInteractionResponse, @@ -44,19 +42,20 @@ import { import { ProcessManagerEvent, ProcessManagerService, -} from "../../../packages/core/src/processes/process-manager.service"; +} from "@onflowser/core/src/processes/process-manager.service"; import { ManagedProcess, ManagedProcessEvent, -} from "../../../packages/core/src/processes/managed-process"; -import { CacheRemovalService } from "../core/services/cache-removal.service"; +} from "@onflowser/core/src/processes/managed-process"; +import { CacheRemovalService } from "../../../backend/src/core/services/cache-removal.service"; import { FlowEmulatorEvent, FlowEmulatorService, WellKnownAddressesOptions, -} from "../../../packages/core/src/flow/flow-emulator.service"; -import { AsyncIntervalScheduler } from "../core/async-interval-scheduler"; -import { GoBindingsService } from "services/src/flow/go-bindings.service"; +} from "@onflowser/core/src/flow/flow-emulator.service"; +import { AsyncIntervalScheduler } from "./async-interval-scheduler"; +import { FlowGatewayConfig } from "@onflowser/core/src/flow/flow-gateway.service"; +import { GoBindingsService } from "@onflowser/core/src/flow/go-bindings.service"; type BlockData = { block: FlowBlock; @@ -80,14 +79,14 @@ export type ExtendedFlowEvent = FlowEvent & { }; @Injectable() -export class ProcessorService implements ProjectContextLifecycle { - private projectContext: ProjectEntity | undefined; +export class ProcessorService { private emulatorProcess: ManagedProcess | undefined; private readonly logger = new Logger(ProcessorService.name); private readonly pollingDelay = 500; private processingScheduler: AsyncIntervalScheduler; constructor( + gatewayConfig: FlowGatewayConfig, private blockService: BlocksService, private transactionService: TransactionsService, private accountService: AccountsService, @@ -100,7 +99,7 @@ export class ProcessorService implements ProjectContextLifecycle { private processManagerService: ProcessManagerService, private commonService: CacheRemovalService, private flowEmulatorService: FlowEmulatorService, - private interactionService: GoBindingsService + private goBindings: GoBindingsService ) { this.processingScheduler = new AsyncIntervalScheduler({ name: "Blockchain processing", @@ -109,9 +108,8 @@ export class ProcessorService implements ProjectContextLifecycle { }); } - onEnterProjectContext(project: ProjectEntity): void { + start(): void { this.processingScheduler?.start(); - this.projectContext = project; this.emulatorProcess = this.processManagerService.get( FlowEmulatorService.processId ); @@ -129,9 +127,8 @@ export class ProcessorService implements ProjectContextLifecycle { ); } - onExitProjectContext(): void { + stop(): void { this.processingScheduler?.stop(); - this.projectContext = undefined; this.processManagerService.removeListener( ProcessManagerEvent.PROCESS_ADDED, this.onProcessAddedOrUpdated.bind(this) @@ -179,12 +176,9 @@ export class ProcessorService implements ProjectContextLifecycle { return latestUnprocessedBlockHeight - (nextBlockHeightToProcess - 1); } - async processBlockchainData(): Promise { - if (!this.projectContext) { - return; - } - const gatewayStatus = await FlowGatewayService.getApiStatus( - this.projectContext.gateway + async processBlockchainData(gatewayConfig: FlowGatewayConfig): Promise { + const gatewayStatus = await this.flowGatewayService.getApiStatus( + gatewayConfig ); if (gatewayStatus !== ServiceStatus.SERVICE_STATUS_ONLINE) { this.logger.debug("Gateway offline, pausing processing."); @@ -223,16 +217,13 @@ export class ProcessorService implements ProjectContextLifecycle { } private async getUnprocessedBlocksInfo(): Promise { - if (!this.projectContext) { - throw new Error("Project context not found"); - } const [lastStoredBlock, latestBlock] = await Promise.all([ this.blockService.findLastBlock(), this.flowGatewayService.getLatestBlock(), ]); const nextBlockHeightToProcess = lastStoredBlock ? lastStoredBlock.blockHeight + 1 - : this.projectContext.startBlockHeight ?? latestBlock.height; + : latestBlock.height; const latestUnprocessedBlockHeight = latestBlock.height; return { @@ -495,10 +486,9 @@ export class ProcessorService implements ProjectContextLifecycle { flowTransaction: FlowTransaction; flowTransactionStatus: FlowTransactionStatus; }) { - const parsedInteraction = - await this.interactionService.getParsedInteraction({ - sourceCode: options.flowTransaction.script, - }); + const parsedInteraction = await this.goBindings.getParsedInteraction({ + sourceCode: options.flowTransaction.script, + }); if (parsedInteraction.error) { this.logger.error( `Unexpected interaction parsing error: ${parsedInteraction.error}` diff --git a/packages/indexer/tsconfig.json b/packages/indexer/tsconfig.json new file mode 100644 index 000000000..65e818d95 --- /dev/null +++ b/packages/indexer/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "config/tsconfig.json" +} diff --git a/packages/wallet/package.json b/packages/wallet/package.json new file mode 100644 index 000000000..12ade71c4 --- /dev/null +++ b/packages/wallet/package.json @@ -0,0 +1,20 @@ +{ + "name": "@onflowser/wallet", + "version": "1.0.0", + "description": "", + "types": "./src/index.ts", + "scripts": {}, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "@onflowser/config": "*", + "@onflow/fcl": "^1.6.0", + "elliptic": "^6.5.4" + }, + "devDependencies": { + "@types/node": "^16.11.6", + "typescript": "^4.3.5", + "@types/elliptic": "^6.4.14" + } +} diff --git a/backend/src/wallet/wallet.service.ts b/packages/wallet/src/wallet.service.ts similarity index 85% rename from backend/src/wallet/wallet.service.ts rename to packages/wallet/src/wallet.service.ts index cc191cf86..9f4d54ae9 100644 --- a/backend/src/wallet/wallet.service.ts +++ b/packages/wallet/src/wallet.service.ts @@ -9,34 +9,50 @@ import { SHA3 } from "sha3"; import { FlowCliService, KeyWithWeight, -} from "../../../packages/core/src/flow/flow-cli.service"; -import { AccountsService } from "../accounts/services/accounts.service"; -import { AccountEntity } from "../accounts/entities/account.entity"; -import { ensurePrefixedAddress } from "../utils/common-utils"; +} from "@onflowser/core/src/flow/flow-cli.service"; +import { AccountsService } from "../../../backend/src/accounts/services/accounts.service"; +import { AccountEntity } from "../../../backend/src/accounts/entities/account.entity"; +import { ensurePrefixedAddress } from "../../../backend/src/utils/common-utils"; import { AccountKeyEntity, - defaultKeyWeight, -} from "../accounts/entities/key.entity"; -import { KeysService } from "../accounts/services/keys.service"; +} from "../../../backend/src/accounts/entities/key.entity"; +import { KeysService } from "../../../backend/src/accounts/services/keys.service"; import { FlowAuthorizationFunction, FlowGatewayService, -} from "../../../packages/core/src/flow/flow-gateway.service"; +} from "@onflowser/core/src/flow/flow-gateway.service"; +import { FlowConfigService } from "@onflowser/core/src/flow/flow-config.service"; +import { FlowTransactionArgument } from "@flowser/packages/api"; import { FclArgumentWithMetadata, FclValues, - SendTransactionRequest, - SendTransactionResponse, -} from "@flowser/shared"; -import { FlowConfigService } from "../../../packages/core/src/flow/flow-config.service"; -import { ProjectContextLifecycle } from "../flow/utils/project-context"; -import { ProjectEntity } from "src/projects/project.entity"; +} from "@onflowser/core/src/flow/fcl-values"; const fcl = require("@onflow/fcl"); +export interface SendTransactionRequest { + cadence: string; + /** Signer roles: https://developers.flow.com/concepts/start-here/transaction-signing#signer-roles */ + proposerAddress: string; + payerAddress: string; + authorizerAddresses: string[]; + arguments: FlowTransactionArgument[]; +} + +export interface SendTransactionResponse { + transactionId: string; +} + +type CreateAccountRequest = { + projectRootPath: string; +}; + const ec: EC = new EC("p256"); +// https://developers.flow.com/tooling/flow-cli/accounts/create-accounts#key-weight +const defaultKeyWeight = 1000; + @Injectable() -export class WalletService implements ProjectContextLifecycle { +export class WalletService { private readonly logger = new Logger(WalletService.name); constructor( @@ -47,16 +63,6 @@ export class WalletService implements ProjectContextLifecycle { private readonly keysService: KeysService ) {} - async onEnterProjectContext(project: ProjectEntity): Promise { - // TODO(snapshots-revamp): Re-import accounts when flow.json is updated - // (it could be the case that user is manually adding new managed accounts with `flow accounts create` command). - await this.importAccountsFromConfig(); - } - - async onExitProjectContext(): Promise { - // Nothing to do here - } - public async sendTransaction( request: SendTransactionRequest ): Promise { @@ -178,7 +184,7 @@ export class WalletService implements ProjectContextLifecycle { return authn; } - private async importAccountsFromConfig() { + public async importAccountsFromConfig() { const accountsConfig = this.flowConfig.getAccounts(); await Promise.all( accountsConfig.map(async (accountConfig) => { @@ -225,14 +231,19 @@ export class WalletService implements ProjectContextLifecycle { ); } - public async createAccount(): Promise { + public async createAccount( + options: CreateAccountRequest + ): Promise { // For now, we only support a single key per account, // but we could as well add support for attaching // multiple keys with (possibly) different weights. const generatedKeyPairs = await Promise.all([ - this.cliService.generateKey(), + this.cliService.generateKey({ + projectRootPath: options.projectRootPath, + }), ]); const generatedAccount = await this.cliService.createAccount({ + projectRootPath: options.projectRootPath, keys: generatedKeyPairs.map( (key): KeyWithWeight => ({ weight: defaultKeyWeight, diff --git a/yarn.lock b/yarn.lock index f56303f97..de59a5946 100644 --- a/yarn.lock +++ b/yarn.lock @@ -222,7 +222,7 @@ "abort-controller" "^3.0.0" "cross-fetch" "^3.1.6" -"@onflow/types@^1.1.0": +"@onflow/types@^1.0.3", "@onflow/types@^1.1.0": "integrity" "sha512-UUd2ZAFqdd8BHW//uTg+YRlh3EIH9Na+UYJ9qXpt6y87qjW0Lf4Zkhn6H5IqvhIJsjK17QYnXLFpoXItD/+ToQ==" "resolved" "https://registry.npmjs.org/@onflow/types/-/types-1.1.0.tgz" "version" "1.1.0" @@ -272,7 +272,56 @@ dependencies: "@babel/runtime" "^7.18.6" -"@types/node@^16.11.6": +"@onflowser/api@file:/Users/bartkozorog/Projects/flowser/packages/api": + "resolved" "file:packages/api" + "version" "1.0.0" + dependencies: + "config" "*" + +"@onflowser/config@*", "@onflowser/config@file:/Users/bartkozorog/Projects/flowser/packages/config": + "resolved" "file:packages/config" + "version" "0.0.0" + +"@onflowser/core@*", "@onflowser/core@file:/Users/bartkozorog/Projects/flowser/packages/core": + "resolved" "file:packages/core" + "version" "1.0.0" + dependencies: + "@nestjs/common" "^8.0.0" + "@onflow/fcl" "^1.6.0" + "@onflowser/config" "*" + "axios" "^0.21.4" + "node-abort-controller" "^3.0.1" + +"@onflowser/indexer@file:/Users/bartkozorog/Projects/flowser/packages/indexer": + "resolved" "file:packages/indexer" + "version" "1.0.0" + dependencies: + "@onflowser/config" "*" + "@onflowser/core" "*" + +"@onflowser/wallet@file:/Users/bartkozorog/Projects/flowser/packages/wallet": + "resolved" "file:packages/wallet" + "version" "1.0.0" + dependencies: + "@onflow/fcl" "^1.6.0" + "@onflowser/config" "*" + "elliptic" "^6.5.4" + +"@types/bn.js@*": + "integrity" "sha512-dkpZu0szUtn9UXTmw+e0AJFd4D2XAxDnsCLdc05SfqpqzPEBft8eQr8uaFitfo/dUUOZERaLec2hHMG87A4Dxg==" + "resolved" "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.2.tgz" + "version" "5.1.2" + dependencies: + "@types/node" "*" + +"@types/elliptic@^6.4.14": + "integrity" "sha512-tW9Z/mrlymYEbx/WWcO/Kkly0VxqPNaf/p3KcZTYKI282ZX+50efZvY/p6FoMuTpFq+QMyABQNfs6OXvdmVUhQ==" + "resolved" "https://registry.npmjs.org/@types/elliptic/-/elliptic-6.4.15.tgz" + "version" "6.4.15" + dependencies: + "@types/bn.js" "*" + +"@types/node@*", "@types/node@^12.20.27", "@types/node@^16.11.6": "integrity" "sha512-Y1zz/LIuJek01+hlPNzzXQhmq/Z2BCP96j18MSXC0S0jSu/IG4FFxmBs7W4/lI2vPJ7foVfEB0hUVtnOjnCiTg==" "resolved" "https://registry.npmjs.org/@types/node/-/node-16.18.55.tgz" "version" "16.18.55" @@ -378,12 +427,6 @@ "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.1.0.tgz" "version" "6.1.0" -"api@file:/Users/bartkozorog/Projects/flowser/packages/api": - "resolved" "file:packages/api" - "version" "1.0.0" - dependencies: - "config" "*" - "argparse@^1.0.7": "integrity" "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==" "resolved" "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" @@ -431,6 +474,11 @@ "resolved" "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" "version" "1.5.1" +"bn.js@^4.11.9": + "integrity" "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" + "version" "4.12.0" + "brace-expansion@^1.1.7": "integrity" "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==" "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" @@ -446,6 +494,11 @@ dependencies: "fill-range" "^7.0.1" +"brorand@^1.1.0": + "integrity" "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" + "resolved" "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz" + "version" "1.1.0" + "buffer@^6.0.3", "buffer@6.0.3": "integrity" "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==" "resolved" "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz" @@ -476,12 +529,12 @@ "ansi-styles" "^4.1.0" "supports-color" "^7.1.0" -"class-transformer@*": +"class-transformer@*", "class-transformer@0.4.0": "integrity" "sha512-ETWD/H2TbWbKEi7m9N4Km5+cw1hNcqJSxlSYhsLsNjQzWWiZIYA1zafxpK9PwVfaZ6AqR5rrjPVUBGESm5tQUA==" "resolved" "https://registry.npmjs.org/class-transformer/-/class-transformer-0.4.0.tgz" "version" "0.4.0" -"class-validator@*": +"class-validator@*", "class-validator@^0.13.1": "integrity" "sha512-yBUcQy07FPlGzUjoLuUfIOXzgynnQPPruyK1Ge2B74k9ROwnle1E+NxLWnUv5OLU8hA/qL5leAE9XnXq3byaBw==" "resolved" "https://registry.npmjs.org/class-validator/-/class-validator-0.13.2.tgz" "version" "0.13.2" @@ -568,7 +621,7 @@ "resolved" "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" "version" "0.0.1" -"config@*", "config@file:/Users/bartkozorog/Projects/flowser/packages/config": +"config@*": "resolved" "file:packages/config" "version" "0.0.0" @@ -622,6 +675,19 @@ "resolved" "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" "version" "0.2.0" +"elliptic@^6.5.4": + "integrity" "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==" + "resolved" "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz" + "version" "6.5.4" + dependencies: + "bn.js" "^4.11.9" + "brorand" "^1.1.0" + "hash.js" "^1.0.0" + "hmac-drbg" "^1.0.1" + "inherits" "^2.0.4" + "minimalistic-assert" "^1.0.1" + "minimalistic-crypto-utils" "^1.0.1" + "emoji-regex@^8.0.0": "integrity" "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" @@ -717,7 +783,7 @@ "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" "version" "3.4.3" -"eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^7.0.0 || ^8.0.0": +"eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^7.0.0 || ^8.0.0", "eslint@^7.32.0": "integrity" "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==" "resolved" "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz" "version" "7.32.0" @@ -1013,12 +1079,29 @@ "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" "version" "4.0.0" +"hash.js@^1.0.0", "hash.js@^1.0.3": + "integrity" "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==" + "resolved" "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz" + "version" "1.1.7" + dependencies: + "inherits" "^2.0.3" + "minimalistic-assert" "^1.0.1" + +"hmac-drbg@^1.0.1": + "integrity" "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==" + "resolved" "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "hash.js" "^1.0.3" + "minimalistic-assert" "^1.0.0" + "minimalistic-crypto-utils" "^1.0.1" + "human-signals@^2.1.0": "integrity" "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" "resolved" "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" "version" "2.1.0" -"husky@^8.0.1": +"husky@^7.0.2", "husky@^8.0.1": "integrity" "sha512-xs7/chUH/CKdOCs7Zy0Aev9e/dKOMZf3K1Az1nar3tzlv0jfqnYtu235bstsWTmXOR0EfINrPa97yy4Lz6RiKw==" "resolved" "https://registry.npmjs.org/husky/-/husky-8.0.1.tgz" "version" "8.0.1" @@ -1071,7 +1154,7 @@ "once" "^1.3.0" "wrappy" "1" -"inherits@2": +"inherits@^2.0.3", "inherits@^2.0.4", "inherits@2": "integrity" "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" "version" "2.0.4" @@ -1193,7 +1276,7 @@ "resolved" "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz" "version" "2.0.5" -"lint-staged@^12.4.2": +"lint-staged@^11.1.2", "lint-staged@^12.4.2", "lint-staged@^13.0.3": "integrity" "sha512-BKLUjWDsKquV/JuIcoQW4MSAI3ggwEImF1+sB4zaKvyVx1wBk3FsG7UK9bpnmBTN1pm7EH2BBcMwINJzCRv12g==" "resolved" "https://registry.npmjs.org/lint-staged/-/lint-staged-12.5.0.tgz" "version" "12.5.0" @@ -1298,6 +1381,16 @@ "resolved" "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" "version" "2.1.0" +"minimalistic-assert@^1.0.0", "minimalistic-assert@^1.0.1": + "integrity" "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + "resolved" "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" + "version" "1.0.1" + +"minimalistic-crypto-utils@^1.0.1": + "integrity" "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" + "resolved" "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz" + "version" "1.0.1" + "minimatch@^3.0.4", "minimatch@^3.0.5", "minimatch@^3.1.1", "minimatch@^3.1.2": "integrity" "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==" "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" @@ -1438,7 +1531,7 @@ "resolved" "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" "version" "1.2.1" -"prettier@^2.5.1": +"prettier@^2.3.2", "prettier@^2.4.1", "prettier@^2.5.1": "integrity" "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==" "resolved" "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz" "version" "2.7.1" @@ -1458,7 +1551,7 @@ "resolved" "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" "version" "1.2.3" -"react@^17.0.0 || ^18.0.0": +"react@^17.0.0 || ^18.0.0", "react@^17.0.2": "integrity" "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==" "resolved" "https://registry.npmjs.org/react/-/react-17.0.2.tgz" "version" "17.0.2" @@ -1466,7 +1559,7 @@ "loose-envify" "^1.1.0" "object-assign" "^4.1.1" -"reflect-metadata@^0.1.12": +"reflect-metadata@^0.1.12", "reflect-metadata@^0.1.13": "integrity" "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" "resolved" "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz" "version" "0.1.13" @@ -1523,7 +1616,7 @@ dependencies: "queue-microtask" "^1.2.2" -"rxjs@^7.1.0", "rxjs@^7.5.5": +"rxjs@^7.1.0", "rxjs@^7.2.0", "rxjs@^7.5.5": "integrity" "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==" "resolved" "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz" "version" "7.5.6" @@ -1535,23 +1628,13 @@ "resolved" "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" "version" "2.1.2" -"semver@^7.2.1", "semver@^7.3.8": +"semver@^7.2.1", "semver@^7.3.7", "semver@^7.3.8": "integrity" "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==" "resolved" "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz" "version" "7.5.4" dependencies: "lru-cache" "^6.0.0" -"services@file:/Users/bartkozorog/Projects/flowser/packages/core": - "resolved" "file:packages/core" - "version" "1.0.0" - dependencies: - "@nestjs/common" "^8.0.0" - "@onflow/fcl" "^1.6.0" - "axios" "^0.21.4" - "config" "*" - "node-abort-controller" "^3.0.1" - "sha3@^2.1.4": "integrity" "sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg==" "resolved" "https://registry.npmjs.org/sha3/-/sha3-2.1.4.tgz" @@ -1572,9 +1655,9 @@ "version" "3.0.0" "signal-exit@^3.0.2", "signal-exit@^3.0.3": - "integrity" "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==" - "resolved" "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz" - "version" "3.0.5" + "integrity" "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + "resolved" "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" + "version" "3.0.7" "slice-ansi@^3.0.0": "integrity" "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==" @@ -1761,7 +1844,7 @@ "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" "version" "0.21.3" -"typescript@^4.3.5": +"typescript@^4.3.5", "typescript@^4.4.3": "integrity" "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==" "resolved" "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz" "version" "4.7.4" From 844ff5ba933565e52002c0cc18b85ea4d1059e6b Mon Sep 17 00:00:00 2001 From: Bart Date: Sat, 7 Oct 2023 17:12:41 +0200 Subject: [PATCH 005/100] refactor processor service --- apps/demo-app/package.json | 19 + apps/demo-app/src/main.ts | 1 + apps/demo-app/tsconfig.json | 3 + .../data-processing/data-processing.module.ts | 6 +- backend/src/projects/projects.service.ts | 4 +- package.json | 3 +- packages/api/src/capabilities.ts | 19 +- packages/api/src/resources.ts | 17 +- packages/indexer/src/in-memory-index.ts | 15 +- ...rocessor.service.ts => indexer.service.ts} | 571 +++++++++--------- 10 files changed, 335 insertions(+), 323 deletions(-) create mode 100644 apps/demo-app/package.json create mode 100644 apps/demo-app/src/main.ts create mode 100644 apps/demo-app/tsconfig.json rename packages/indexer/src/{processor.service.ts => indexer.service.ts} (61%) diff --git a/apps/demo-app/package.json b/apps/demo-app/package.json new file mode 100644 index 000000000..768bcc39e --- /dev/null +++ b/apps/demo-app/package.json @@ -0,0 +1,19 @@ +{ + "name": "@onflowser/demo-app", + "version": "1.0.0", + "description": "", + "types": "./src/index.ts", + "scripts": {}, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "@onflowser/config": "*", + "@onflowser/indexer": "*", + "@onflowser/core": "*" + }, + "devDependencies": { + "@types/node": "^16.11.6", + "typescript": "^4.3.5" + } +} diff --git a/apps/demo-app/src/main.ts b/apps/demo-app/src/main.ts new file mode 100644 index 000000000..3a8ee341a --- /dev/null +++ b/apps/demo-app/src/main.ts @@ -0,0 +1 @@ +import {} from "@onflowser/indexer"; diff --git a/apps/demo-app/tsconfig.json b/apps/demo-app/tsconfig.json new file mode 100644 index 000000000..65e818d95 --- /dev/null +++ b/apps/demo-app/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "config/tsconfig.json" +} diff --git a/backend/src/data-processing/data-processing.module.ts b/backend/src/data-processing/data-processing.module.ts index 5fd866fa3..a0c6d2f90 100644 --- a/backend/src/data-processing/data-processing.module.ts +++ b/backend/src/data-processing/data-processing.module.ts @@ -4,7 +4,7 @@ import { AccountsModule } from "../accounts/accounts.module"; import { EventsModule } from "../events/events.module"; import { TransactionsModule } from "../transactions/transactions.module"; import { CoreModule } from "../core/core.module"; -import { ProcessorService } from "@onflowser/indexer/src/processor.service"; +import { IndexerService } from "@onflowser/indexer/src/indexer.service"; import { FlowModule } from "../flow/flow.module"; import { ProcessesModule } from "../processes/processes.module"; import { WalletModule } from "../wallet/wallet.module"; @@ -23,7 +23,7 @@ import { GoBindingsModule } from "../go-bindings/go-bindings.module"; WalletModule, GoBindingsModule, ], - providers: [ProcessorService], - exports: [ProcessorService], + providers: [IndexerService], + exports: [IndexerService], }) export class DataProcessingModule {} diff --git a/backend/src/projects/projects.service.ts b/backend/src/projects/projects.service.ts index 600e36517..4dbbd393a 100644 --- a/backend/src/projects/projects.service.ts +++ b/backend/src/projects/projects.service.ts @@ -11,7 +11,7 @@ import { MoreThan, Repository } from "typeorm"; import { ProjectEntity } from "./project.entity"; import { InjectRepository } from "@nestjs/typeorm"; import { FlowGatewayService } from "../../../packages/core/src/flow/flow-gateway.service"; -import { ProcessorService } from "@onflowser/indexer/src/processor.service"; +import { IndexerService } from "@onflowser/indexer/src/indexer.service"; import { FlowEmulatorService } from "../../../packages/core/src/flow/flow-emulator.service"; import { FlowCliService } from "../../../packages/core/src/flow/flow-cli.service"; import { FlowConfigService } from "../../../packages/core/src/flow/flow-config.service"; @@ -65,7 +65,7 @@ export class ProjectsService { @InjectRepository(ProjectEntity) private projectRepository: Repository, private flowGatewayService: FlowGatewayService, - private processorService: ProcessorService, + private processorService: IndexerService, private flowEmulatorService: FlowEmulatorService, private flowCliService: FlowCliService, private flowConfigService: FlowConfigService, diff --git a/package.json b/package.json index 23b90ce82..16501d2ee 100644 --- a/package.json +++ b/package.json @@ -40,6 +40,7 @@ }, "packageManager": "npm@8.5.5", "workspaces": [ - "packages/*" + "packages/*", + "apps/*" ] } diff --git a/packages/api/src/capabilities.ts b/packages/api/src/capabilities.ts index 254822a31..3c0abb92b 100644 --- a/packages/api/src/capabilities.ts +++ b/packages/api/src/capabilities.ts @@ -1,17 +1,28 @@ import { IdentifiableResource } from "./resources"; +export type RequireOnly = Pick< + Resource, + Key +> & + Partial; + export interface IResourceIndexReader { - fetchAll(): Promise; + findOneById(id: string): Promise; + findAll(): Promise; // TODO(restructure): Add searching capabilities // search(): Promise; } -export interface IResourceIndexWriter { +export interface IResourceIndexWriter { add(resource: Resource): Promise; - update(resource: Resource): Promise; - delete(resource: Resource): Promise; + update(resource: RequireOnly): Promise; + delete(resource: RequireOnly): Promise; } +export interface IResourceIndex + extends IResourceIndexReader, + IResourceIndexWriter {} + // TODO(restructure): Consider defining resource-specific interfaces for fetchers export interface IResourceFetcher { fetchById(id: string): Promise; diff --git a/packages/api/src/resources.ts b/packages/api/src/resources.ts index c467b78d1..fc93528a6 100644 --- a/packages/api/src/resources.ts +++ b/packages/api/src/resources.ts @@ -50,6 +50,8 @@ export interface BlockScopedResource { } export interface FlowAccount { + // ID is equal to the address. + id: string; address: string; blockId: string; balance: number; @@ -82,14 +84,16 @@ export interface FlowAccountKey { blockId: string; publicKey: string; privateKey: string; - signAlgo: SignatureAlgorithm; - hashAlgo: HashAlgorithm; + signAlgo: SignatureAlgorithm | undefined; + hashAlgo: HashAlgorithm | undefined; weight: number; sequenceNumber: number; revoked: boolean; } export interface FlowContract { + // ID is the combination of `address` and `name`. + id: string; address: string; name: string; blockId: string; @@ -104,13 +108,14 @@ export interface FlowAccountCapability { } export interface FlowAccountStorage { + id: string; address: string; path: string; type: unknown; } export interface FlowBlock { - blockId: string; + id: string; parentId: string; blockHeight: number; timestamp: Date; @@ -137,8 +142,8 @@ export interface FlowTransaction { authorizers: string[]; envelopeSignatures: SignableObject[]; payloadSignatures: SignableObject[]; - createdAt: string; - updatedAt: string; + createdAt: Date; + updatedAt: Date; } export interface TransactionProposalKey { @@ -209,6 +214,8 @@ export enum ExecutionStatusCode { } export interface FlowEvent { + // ID is the combination of `transactionId` and `eventIndex`. + id: string; transactionId: string; blockId: string; eventIndex: number; diff --git a/packages/indexer/src/in-memory-index.ts b/packages/indexer/src/in-memory-index.ts index d80dc64b3..9d657fff9 100644 --- a/packages/indexer/src/in-memory-index.ts +++ b/packages/indexer/src/in-memory-index.ts @@ -1,8 +1,8 @@ import { IdentifiableResource, IResourceIndexReader, - IResourceIndexWriter, -} from "@onflowser/api"; + IResourceIndexWriter, RequireOnly +} from '@onflowser/api'; export class InMemoryIndex implements IResourceIndexReader, IResourceIndexWriter @@ -21,21 +21,24 @@ export class InMemoryIndex } } - async delete(resource: Resource): Promise { + async delete(resource: RequireOnly): Promise { if (!this.lookup.has(resource.id)) { throw new Error("Resource not found"); } this.lookup.delete(resource.id); } - async update(resource: Resource): Promise { + async update(resource: RequireOnly): Promise { if (!this.lookup.has(resource.id)) { throw new Error("Resource not found"); } - this.lookup.set(resource.id, resource); + this.lookup.set(resource.id, { + ...this.lookup.get(resource.id), + ...resource, + }); } - async fetchAll(): Promise { + async findAll(): Promise { return Array.from(this.lookup.values()); } } diff --git a/packages/indexer/src/processor.service.ts b/packages/indexer/src/indexer.service.ts similarity index 61% rename from packages/indexer/src/processor.service.ts rename to packages/indexer/src/indexer.service.ts index 33cd52285..40f50f2af 100644 --- a/packages/indexer/src/processor.service.ts +++ b/packages/indexer/src/indexer.service.ts @@ -1,43 +1,17 @@ import { Injectable, Logger } from "@nestjs/common"; -import { - FlowAccount, - FlowBlock, - FlowTypeAnnotatedValue, - FlowCollection, - FlowEvent, - FlowGatewayService, - FlowKey, - FlowSignableObject, - FlowTransaction, - FlowTransactionStatus, -} from "@onflowser/core/src/flow/flow-gateway.service"; -import { BlocksService } from "../../../backend/src/blocks/blocks.service"; -import { TransactionsService } from "../../../backend/src/transactions/transactions.service"; -import { AccountsService } from "../../../backend/src/accounts/services/accounts.service"; -import { ContractsService } from "../../../backend/src/accounts/services/contracts.service"; -import { EventsService } from "../../../backend/src/events/events.service"; -import { AccountEntity } from "../../../backend/src/accounts/entities/account.entity"; -import { EventEntity } from "../../../backend/src/events/event.entity"; -import { TransactionEntity } from "../../../backend/src/transactions/transaction.entity"; -import { BlockEntity } from "../../../backend/src/blocks/entities/block.entity"; -import { AccountContractEntity } from "../../../backend/src/accounts/entities/contract.entity"; -import { KeysService } from "../../../backend/src/accounts/services/keys.service"; -import { AccountKeyEntity } from "../../../backend/src/accounts/entities/key.entity"; +import { FlowGatewayService } from "@onflowser/core/src/flow/flow-gateway.service"; +import * as flowResource from "@onflowser/core/src/flow/flow-gateway.service"; +import * as flowserResource from "@onflowser/api/src/resources"; import { ensureNonPrefixedAddress, ensurePrefixedAddress, } from "../../../backend/src/utils/common-utils"; import { getDataSourceInstance } from "../../../backend/src/database"; -import { FlowAccountStorageService } from "@onflowser/core/src/flow/flow-storage.service"; -import { AccountStorageService } from "../../../backend/src/accounts/services/storage.service"; import { FlowCoreEventType, - GetParsedInteractionResponse, ManagedProcessState, ServiceStatus, SignableObject, - TransactionArgument, - TransactionStatus, } from "@flowser/shared"; import { ProcessManagerEvent, @@ -55,12 +29,21 @@ import { } from "@onflowser/core/src/flow/flow-emulator.service"; import { AsyncIntervalScheduler } from "./async-interval-scheduler"; import { FlowGatewayConfig } from "@onflowser/core/src/flow/flow-gateway.service"; -import { GoBindingsService } from "@onflowser/core/src/flow/go-bindings.service"; +import { + GetParsedInteractionResponse, + GoBindingsService, +} from "@onflowser/core/src/flow/go-bindings.service"; +import { IResourceIndex } from "@flowser/packages/api"; +import { + HashAlgorithm, + SignatureAlgorithm, +} from "@onflowser/api/src/resources"; +import { FlowAccountStorageService } from "@onflowser/core/src/flow/flow-storage.service"; type BlockData = { - block: FlowBlock; + block: flowResource.FlowBlock; transactions: FlowTransactionWithStatus[]; - collections: FlowCollection[]; + collections: flowResource.FlowCollection[]; events: ExtendedFlowEvent[]; }; @@ -69,31 +52,31 @@ type UnprocessedBlockInfo = { latestUnprocessedBlockHeight: number; }; -type FlowTransactionWithStatus = FlowTransaction & { - status: FlowTransactionStatus; +type FlowTransactionWithStatus = flowResource.FlowTransaction & { + status: flowResource.FlowTransactionStatus; }; -export type ExtendedFlowEvent = FlowEvent & { +export type ExtendedFlowEvent = flowResource.FlowEvent & { blockId: string; transactionId: string; }; @Injectable() -export class ProcessorService { +export class IndexerService { private emulatorProcess: ManagedProcess | undefined; - private readonly logger = new Logger(ProcessorService.name); + private readonly logger = new Logger(IndexerService.name); private readonly pollingDelay = 500; private processingScheduler: AsyncIntervalScheduler; constructor( - gatewayConfig: FlowGatewayConfig, - private blockService: BlocksService, - private transactionService: TransactionsService, - private accountService: AccountsService, - private accountStorageService: AccountStorageService, - private accountKeysService: KeysService, - private contractService: ContractsService, - private eventService: EventsService, + private gatewayConfig: FlowGatewayConfig, + private transactionIndex: IResourceIndex, + private accountIndex: IResourceIndex, + private accountKeyIndex: IResourceIndex, + private blockIndex: IResourceIndex, + private eventIndex: IResourceIndex, + private contractIndex: IResourceIndex, + private accountStorageIndex: IResourceIndex, private flowStorageService: FlowAccountStorageService, private flowGatewayService: FlowGatewayService, private processManagerService: ProcessManagerService, @@ -104,7 +87,7 @@ export class ProcessorService { this.processingScheduler = new AsyncIntervalScheduler({ name: "Blockchain processing", pollingIntervalInMs: this.pollingDelay, - functionToExecute: this.processBlockchainData.bind(this), + functionToExecute: () => this.processBlockchainData(gatewayConfig), }); } @@ -217,12 +200,13 @@ export class ProcessorService { } private async getUnprocessedBlocksInfo(): Promise { - const [lastStoredBlock, latestBlock] = await Promise.all([ - this.blockService.findLastBlock(), + const [allBlocks, latestBlock] = await Promise.all([ + this.blockIndex.findAll(), this.flowGatewayService.getLatestBlock(), ]); - const nextBlockHeightToProcess = lastStoredBlock - ? lastStoredBlock.blockHeight + 1 + const lastIndexedBlock = this.findLatestBlock(allBlocks); + const nextBlockHeightToProcess = lastIndexedBlock + ? lastIndexedBlock.blockHeight + 1 : latestBlock.height; const latestUnprocessedBlockHeight = latestBlock.height; @@ -232,6 +216,16 @@ export class ProcessorService { }; } + private findLatestBlock(blocks: flowserResource.FlowBlock[]) { + let latestBlock: flowserResource.FlowBlock = blocks[0]; + for (const block of blocks) { + if (block.blockHeight > latestBlock.blockHeight) { + latestBlock = block; + } + } + return latestBlock; + } + private async processBlockWithHeight(height: number) { const dataSource = await getDataSourceInstance(); const queryRunner = dataSource.createQueryRunner(); @@ -240,15 +234,15 @@ export class ProcessorService { // Process events first, so that transactions can reference created users. await this.processNewEvents({ - flowEvents: blockData.events, - flowBlock: blockData.block, + events: blockData.events, + block: blockData.block, }); try { await queryRunner.startTransaction(); await this.storeBlockData(blockData); - await this.reProcessStorageForAllAccounts(); + await this.reIndexAllAccountStorage(); await queryRunner.commitTransaction(); } catch (e) { @@ -274,14 +268,14 @@ export class ProcessorService { const unsubscribe = this.flowGatewayService .getTxStatusSubscription(transactionId) .subscribe((newStatus) => - this.transactionService.updateStatus( - transactionId, - TransactionStatus.fromJSON({ + this.transactionIndex.update({ + id: transactionId, + status: { errorMessage: newStatus.errorMessage, grcpStatus: this.reMapGrcpStatus(newStatus.statusCode), executionStatus: newStatus.status, - }) - ) + }, + }) ); try { await this.flowGatewayService @@ -296,31 +290,31 @@ export class ProcessorService { } private async storeBlockData(data: BlockData) { - const blockPromise = this.blockService - .create(this.createBlockEntity({ flowBlock: data.block })) - .catch((e) => + const blockPromise = this.blockIndex + .add(this.createBlockEntity({ block: data.block })) + .catch((e: any) => this.logger.error(`block save error: ${e.message}`, e.stack) ); const transactionPromises = Promise.all( data.transactions.map((transaction) => this.processNewTransaction({ - flowBlock: data.block, - flowTransaction: transaction, - flowTransactionStatus: transaction.status, - }).catch((e) => + block: data.block, + transaction: transaction, + transactionStatus: transaction.status, + }).catch((e: any) => this.logger.error(`transaction save error: ${e.message}`, e.stack) ) ) ); const eventPromises = Promise.all( data.events.map((flowEvent) => - this.eventService - .create( + this.eventIndex + .add( this.createEventEntity({ - flowEvent, + event: flowEvent, }) ) - .catch((e) => + .catch((e: any) => this.logger.error(`event save error: ${e.message}`, e.stack) ) ) @@ -380,20 +374,20 @@ export class ProcessorService { } private async processNewEvents(options: { - flowEvents: FlowEvent[]; - flowBlock: FlowBlock; + events: flowResource.FlowEvent[]; + block: flowResource.FlowBlock; }) { - const { flowEvents, flowBlock } = options; + const { events, block } = options; // Process new accounts first, so other events can reference them. - const accountCreatedEvents = flowEvents.filter( + const accountCreatedEvents = events.filter( (event) => event.type === FlowCoreEventType.ACCOUNT_CREATED ); - const restEvents = flowEvents.filter( + const restEvents = events.filter( (event) => event.type !== FlowCoreEventType.ACCOUNT_CREATED ); await Promise.all( accountCreatedEvents.map((flowEvent) => - this.processStandardEvents({ flowEvent, flowBlock }).catch((e) => { + this.processStandardEvents({ event: flowEvent, block }).catch((e) => { this.logger.error( `flow.AccountCreated event handling error: ${ e.message @@ -405,25 +399,27 @@ export class ProcessorService { ); await Promise.all( restEvents.map((flowEvent) => - this.processStandardEvents({ flowEvent, flowBlock }).catch((e) => { - this.logger.error( - `${flowEvent.type} event handling error: ${ - e.message - } (${JSON.stringify(flowEvent)})`, - e.stack - ); - }) + this.processStandardEvents({ event: flowEvent, block: block }).catch( + (e) => { + this.logger.error( + `${flowEvent.type} event handling error: ${ + e.message + } (${JSON.stringify(flowEvent)})`, + e.stack + ); + } + ) ) ); } private async processStandardEvents(options: { - flowEvent: FlowEvent; - flowBlock: FlowBlock; + event: flowResource.FlowEvent; + block: flowResource.FlowBlock; }) { - const { flowEvent, flowBlock } = options; + const { event, block } = options; this.logger.debug( - `handling event: ${flowEvent.type} ${JSON.stringify(flowEvent.data)}` + `handling event: ${event.type} ${JSON.stringify(event.data)}` ); const monotonicAddresses = this.flowEmulatorService.getWellKnownAddresses({ @@ -439,18 +435,21 @@ export class ProcessorService { const buildFlowTokensDepositedEvent = (address: string) => `A.${ensureNonPrefixedAddress(address)}.FlowToken.TokensDeposited`; - const address = ensurePrefixedAddress(flowEvent.data.address); - switch (flowEvent.type) { + const address = ensurePrefixedAddress(event.data.address); + switch (event.type) { case FlowCoreEventType.ACCOUNT_CREATED: - return this.storeNewAccountWithContractsAndKeys({ address, flowBlock }); + return this.reIndexAccount({ + address, + block: block, + }); case FlowCoreEventType.ACCOUNT_KEY_ADDED: case FlowCoreEventType.ACCOUNT_KEY_REMOVED: - return this.updateStoredAccountKeys({ address, flowBlock }); + return this.reIndexAccount({ address, block: block }); case FlowCoreEventType.ACCOUNT_CONTRACT_ADDED: case FlowCoreEventType.ACCOUNT_CONTRACT_UPDATED: case FlowCoreEventType.ACCOUNT_CONTRACT_REMOVED: // TODO: Stop re-fetching all contracts and instead use event.data.contract to get the removed/updated/added contract - return this.updateStoredAccountContracts({ address, flowBlock }); + return this.reIndexAccount({ address, block: block }); // For now keep listening for monotonic and non-monotonic addresses, // although I think only non-monotonic ones are used for contract deployment. // See: https://github.com/onflow/flow-emulator/issues/421#issuecomment-1596844610 @@ -460,136 +459,94 @@ export class ProcessorService { ): // New emulator accounts are initialized // with a default Flow balance coming from null address. - return flowEvent.data.from - ? this.reprocessAccountFlowBalance(flowEvent.data.from) + return event.data.from + ? this.reIndexAccount(event.data.from) : undefined; case buildFlowTokensDepositedEvent(monotonicAddresses.flowTokenAddress): case buildFlowTokensDepositedEvent( nonMonotonicAddresses.flowTokenAddress ): - return this.reprocessAccountFlowBalance(flowEvent.data.to); + return this.reIndexAccount(event.data.to); default: return null; // not a standard event, ignore it } } - private async reprocessAccountFlowBalance(address: string) { - const flowAccount = await this.flowGatewayService.getAccount(address); - await this.accountService.upsert({ - address: flowAccount.address, - balance: flowAccount.balance, - }); - } - private async processNewTransaction(options: { - flowBlock: FlowBlock; - flowTransaction: FlowTransaction; - flowTransactionStatus: FlowTransactionStatus; + block: flowResource.FlowBlock; + transaction: flowResource.FlowTransaction; + transactionStatus: flowResource.FlowTransactionStatus; }) { const parsedInteraction = await this.goBindings.getParsedInteraction({ - sourceCode: options.flowTransaction.script, + sourceCode: options.transaction.script, }); if (parsedInteraction.error) { this.logger.error( `Unexpected interaction parsing error: ${parsedInteraction.error}` ); } - this.transactionService.createOrUpdate( + return this.transactionIndex.add( this.createTransactionEntity({ ...options, parsedInteraction }) ); } - private async storeNewAccountWithContractsAndKeys(options: { + private async reIndexAccount(options: { address: string; - flowBlock: FlowBlock; + block: flowResource.FlowBlock; }) { - const { address, flowBlock } = options; + const { address, block } = options; const flowAccount = await this.flowGatewayService.getAccount(address); - const unSerializedAccount = this.createAccountEntity({ - flowAccount, - flowBlock, + const flowserAccount = this.createAccountEntity({ + account: flowAccount, + block: block, }); - const allPossibleWellKnownAddresses = [ - this.getAllWellKnownAddresses({ overrideUseMonotonicAddresses: true }), - this.getAllWellKnownAddresses({ overrideUseMonotonicAddresses: false }), - ].flat(); - if (allPossibleWellKnownAddresses.includes(unSerializedAccount.address)) { - unSerializedAccount.isDefaultAccount = true; - } - const newContracts = Object.keys(flowAccount.contracts).map((name) => - this.createContractEntity({ - flowAccount, - flowBlock, - name, - code: flowAccount.contracts[name], - }) - ); - await this.accountService.upsert(unSerializedAccount); await Promise.all([ - this.accountKeysService.updateAccountKeys( - address, - unSerializedAccount.keys ?? [] - ), - this.contractService.updateAccountContracts( - unSerializedAccount.address, - newContracts + this.accountIndex.add(flowserAccount), + Promise.all( + flowAccount.keys.map((key) => + this.accountKeyIndex.add( + this.createKeyEntity({ + account: flowAccount, + key, + block: block, + }) + ) + ) ), - ]); - } - - private async updateStoredAccountKeys(options: { - address: string; - flowBlock: FlowBlock; - }) { - const { address, flowBlock } = options; - const flowAccount = await this.flowGatewayService.getAccount(address); - await Promise.all([ - this.accountService.markUpdated(address), - this.accountKeysService.updateAccountKeys( - address, - flowAccount.keys.map((flowKey) => - this.createKeyEntity({ flowAccount, flowKey, flowBlock }) + Promise.all( + Object.keys(flowAccount.contracts).map((name) => + this.contractIndex.add( + this.createContractEntity({ + account: flowAccount, + block: block, + name, + code: flowAccount.contracts[name], + }) + ) ) ), ]); } - private async updateStoredAccountContracts(options: { - address: string; - flowBlock: FlowBlock; - }) { - const { address, flowBlock } = options; - const flowAccount = await this.flowGatewayService.getAccount(address); - const newContracts = Object.keys(flowAccount.contracts).map((name) => - this.createContractEntity({ - flowAccount, - flowBlock, - name, - code: flowAccount.contracts[name], - }) - ); - - await Promise.all([ - this.accountService.markUpdated(address), - this.contractService.updateAccountContracts(address, newContracts), - ]); - } - - private async reProcessStorageForAllAccounts() { - const allAddresses = await this.accountService.findAllAddresses(); + private async reIndexAllAccountStorage() { + const allAccounts = await this.accountIndex.findAll(); this.logger.debug( - `Processing storages for accounts: ${allAddresses.join(", ")}` + `Processing storages for accounts: ${allAccounts.join(", ")}` ); await Promise.all( - allAddresses.map((address) => this.processAccountStorage(address)) + allAccounts.map((account: flowserResource.FlowAccount) => + this.reIndexAccountStorage(account.address) + ) ); } - private async processAccountStorage(address: string) { - return this.accountStorageService.updateAccountStorage( - address, - await this.flowStorageService.getAccountStorageItems(address) + private async reIndexAccountStorage(address: string) { + const storages = await this.flowStorageService.getAccountStorageItems( + address + ); + return Promise.all( + storages.map((storage) => this.accountStorageIndex.add(storage)) ); } @@ -597,7 +554,7 @@ export class ProcessorService { const { serviceAccountAddress } = this.flowEmulatorService.getWellKnownAddresses(options); try { - const serviceAccount = await this.accountService.findOneByAddress( + const serviceAccount = await this.accountIndex.findOneById( serviceAccountAddress ); @@ -635,14 +592,11 @@ export class ProcessorService { return; } - const dataSource = await getDataSourceInstance(); - const queryRunner = dataSource.createQueryRunner(); - // Afaik these well-known default accounts are // bootstrapped in a "meta-transaction", // which is hidden from the public blockchain. // See: https://github.com/onflow/flow-go/blob/master/fvm/bootstrap.go - const nonExistingBlock: FlowBlock = { + const nonExistingBlock: flowResource.FlowBlock = { id: "NULL", blockSeals: [], collectionGuarantees: [], @@ -652,23 +606,14 @@ export class ProcessorService { timestamp: 0, }; - await queryRunner.startTransaction(); - try { - await Promise.all( - this.getAllWellKnownAddresses(options).map((address) => - this.storeNewAccountWithContractsAndKeys({ - address, - flowBlock: nonExistingBlock, - }) - ) - ); - await queryRunner.commitTransaction(); - } catch (error) { - this.logger.error("Default account processing failed", error); - await queryRunner.rollbackTransaction(); - } finally { - await queryRunner.release(); - } + await Promise.all( + this.getAllWellKnownAddresses(options).map((address) => + this.reIndexAccount({ + address, + block: nonExistingBlock, + }) + ) + ); } private getAllWellKnownAddresses(options?: WellKnownAddressesOptions) { @@ -685,109 +630,128 @@ export class ProcessorService { } private createAccountEntity(options: { - flowAccount: FlowAccount; - flowBlock: FlowBlock; - }): AccountEntity { - const { flowAccount, flowBlock } = options; - return new AccountEntity({ - balance: flowAccount.balance, - address: ensurePrefixedAddress(flowAccount.address), - blockId: flowBlock.id, - isDefaultAccount: false, - contracts: [], - storage: [], - transactions: [], - code: flowAccount.code, - keys: flowAccount.keys.map((flowKey) => - this.createKeyEntity({ flowAccount, flowKey, flowBlock }) - ), - }); + account: flowResource.FlowAccount; + block: flowResource.FlowBlock; + }): flowserResource.FlowAccount { + const { account, block } = options; + + const allPossibleWellKnownAddresses = [ + this.getAllWellKnownAddresses({ overrideUseMonotonicAddresses: true }), + this.getAllWellKnownAddresses({ overrideUseMonotonicAddresses: false }), + ].flat(); + + const address = ensurePrefixedAddress(account.address); + + return { + id: address, + balance: account.balance, + address, + blockId: block.id, + isDefaultAccount: allPossibleWellKnownAddresses.includes(address), + code: account.code, + // keys: account.keys.map((flowKey) => + // this.createKeyEntity({ + // account: account, + // key: flowKey, + // block: block, + // }) + // ), + }; } private createKeyEntity(options: { - flowAccount: FlowAccount; - flowKey: FlowKey; - flowBlock: FlowBlock; - }) { - const { flowAccount, flowKey, flowBlock } = options; - return new AccountKeyEntity({ - index: flowKey.index, - accountAddress: ensurePrefixedAddress(flowAccount.address), - publicKey: flowKey.publicKey, - signAlgo: flowKey.signAlgo, - hashAlgo: flowKey.hashAlgo, - weight: flowKey.weight, - sequenceNumber: flowKey.sequenceNumber, - revoked: flowKey.revoked, - blockId: flowBlock.id, + account: flowResource.FlowAccount; + key: flowResource.FlowKey; + block: flowResource.FlowBlock; + }): flowserResource.FlowAccountKey { + const { account, key, block } = options; + + const signAlgoLookup = new Map([ + [0, SignatureAlgorithm.ECDSA_P256], + [1, SignatureAlgorithm.ECDSA_secp256k1], + ]); + + const hashAlgoLookup = new Map([ + [0, HashAlgorithm.SHA2_256], + [1, HashAlgorithm.SHA3_256], + ]); + + return { + index: key.index, + accountAddress: ensurePrefixedAddress(account.address), + publicKey: key.publicKey, + signAlgo: signAlgoLookup.get(key.signAlgo), + hashAlgo: hashAlgoLookup.get(key.hashAlgo), + weight: key.weight, + sequenceNumber: key.sequenceNumber, + revoked: key.revoked, + blockId: block.id, privateKey: "", - account: undefined, - }); + }; } private createEventEntity(options: { - flowEvent: ExtendedFlowEvent; - }): EventEntity { - const { flowEvent } = options; - return new EventEntity({ - type: flowEvent.type, - transactionIndex: flowEvent.transactionIndex, - transactionId: flowEvent.transactionId, - blockId: flowEvent.blockId, - eventIndex: flowEvent.eventIndex, - data: flowEvent.data, - }); + event: ExtendedFlowEvent; + }): flowserResource.FlowEvent { + const { event } = options; + return { + id: `${event.transactionId}.${event.eventIndex}`, + type: event.type, + transactionIndex: event.transactionIndex, + transactionId: event.transactionId, + blockId: event.blockId, + eventIndex: event.eventIndex, + data: event.data, + }; } - private createBlockEntity(options: { flowBlock: FlowBlock }): BlockEntity { - const { flowBlock } = options; - return new BlockEntity({ - blockId: flowBlock.id, - collectionGuarantees: flowBlock.collectionGuarantees, - blockSeals: flowBlock.blockSeals, + private createBlockEntity(options: { + block: flowResource.FlowBlock; + }): flowserResource.FlowBlock { + const { block } = options; + return { + id: block.id, + collectionGuarantees: block.collectionGuarantees, + blockSeals: block.blockSeals, // TODO(milestone-x): "signatures" field is not present in block response // https://github.com/onflow/fcl-js/issues/1355 - signatures: flowBlock.signatures ?? [], - timestamp: new Date(flowBlock.timestamp), - blockHeight: flowBlock.height, - parentId: flowBlock.parentId, - }); + signatures: block.signatures ?? [], + timestamp: new Date(block.timestamp), + blockHeight: block.height, + parentId: block.parentId, + }; } private createContractEntity(options: { - flowBlock: FlowBlock; - flowAccount: FlowAccount; + block: flowResource.FlowBlock; + account: flowResource.FlowAccount; name: string; code: string; - }) { - const { flowAccount, flowBlock, name, code } = options; - return new AccountContractEntity({ - blockId: flowBlock.id, - accountAddress: ensurePrefixedAddress(flowAccount.address), + }): flowserResource.FlowContract { + const { account, block, name, code } = options; + return { + id: `${account.address}.${name}`, + blockId: block.id, + address: ensurePrefixedAddress(account.address), name: name, code: code, - account: null, - }); + }; } private createTransactionEntity(options: { - flowBlock: FlowBlock; - flowTransaction: FlowTransaction; - flowTransactionStatus: FlowTransactionStatus; + block: flowResource.FlowBlock; + transaction: flowResource.FlowTransaction; + transactionStatus: flowResource.FlowTransactionStatus; parsedInteraction: GetParsedInteractionResponse; - }): TransactionEntity { - const { - flowBlock, - flowTransaction, - flowTransactionStatus, - parsedInteraction, - } = options; + }): flowserResource.FlowTransaction { + const { block, transaction, transactionStatus, parsedInteraction } = + options; // FCL-JS returns type-annotated argument values. // But we don't need the type info since we already have // our own system of representing types with `CadenceType` message. function fromTypeAnnotatedFclArguments( - object: FlowTypeAnnotatedValue + object: flowResource.FlowTypeAnnotatedValue ): unknown { const { type, value } = object; // Available type values are listed here: @@ -812,43 +776,44 @@ export class ProcessorService { } } - return new TransactionEntity({ - id: flowTransaction.id, - script: flowTransaction.script, - payerAddress: ensurePrefixedAddress(flowTransaction.payer), - blockId: flowBlock.id, - referenceBlockId: flowTransaction.referenceBlockId, - gasLimit: flowTransaction.gasLimit, - authorizers: flowTransaction.authorizers.map((address) => + return { + id: transaction.id, + script: transaction.script, + payer: ensurePrefixedAddress(transaction.payer), + blockId: block.id, + referenceBlockId: transaction.referenceBlockId, + gasLimit: transaction.gasLimit, + authorizers: transaction.authorizers.map((address) => ensurePrefixedAddress(address) ), - args: + arguments: parsedInteraction.interaction?.parameters.map( - (parameter, index): TransactionArgument => ({ + (parameter, index): flowserResource.FlowTransactionArgument => ({ identifier: parameter.identifier, type: parameter.type, valueAsJson: JSON.stringify( - fromTypeAnnotatedFclArguments(flowTransaction.args[index]) + fromTypeAnnotatedFclArguments(transaction.args[index]) ), }) ) ?? [], proposalKey: { - ...flowTransaction.proposalKey, - address: ensurePrefixedAddress(flowTransaction.proposalKey.address), + ...transaction.proposalKey, + address: ensurePrefixedAddress(transaction.proposalKey.address), }, envelopeSignatures: this.deserializeSignableObjects( - flowTransaction.envelopeSignatures + transaction.envelopeSignatures ), payloadSignatures: this.deserializeSignableObjects( - flowTransaction.payloadSignatures + transaction.payloadSignatures ), - status: TransactionStatus.fromJSON({ - errorMessage: flowTransactionStatus.errorMessage, - grcpStatus: this.reMapGrcpStatus(flowTransactionStatus.statusCode), - executionStatus: flowTransactionStatus.status, - }), - payer: undefined, - }); + status: { + errorMessage: transactionStatus.errorMessage, + grcpStatus: this.reMapGrcpStatus(transactionStatus.statusCode), + executionStatus: transactionStatus.status, + }, + createdAt: new Date(), + updatedAt: new Date(), + }; } private reMapGrcpStatus(statusCode: number) { @@ -857,7 +822,9 @@ export class ProcessorService { return [0, 1].includes(statusCode) ? statusCode : 1; } - private deserializeSignableObjects(signableObjects: FlowSignableObject[]) { + private deserializeSignableObjects( + signableObjects: flowResource.FlowSignableObject[] + ) { return signableObjects.map((signable) => SignableObject.fromJSON({ ...signable, From 6884a70abbfebfed477eda2867d5204af116ac44 Mon Sep 17 00:00:00 2001 From: Bart Date: Sun, 8 Oct 2023 10:20:53 +0200 Subject: [PATCH 006/100] remove emulator re-indexing logic from indexer service --- .../core/src/flow/flow-emulator.service.ts | 2 + .../core/src/flow/flow-gateway.service.ts | 8 +- packages/indexer/src/indexer.service.ts | 91 ++++--------------- 3 files changed, 23 insertions(+), 78 deletions(-) diff --git a/packages/core/src/flow/flow-emulator.service.ts b/packages/core/src/flow/flow-emulator.service.ts index af2f09705..9bb707b6b 100644 --- a/packages/core/src/flow/flow-emulator.service.ts +++ b/packages/core/src/flow/flow-emulator.service.ts @@ -119,6 +119,8 @@ export class FlowEmulatorService extends EventEmitter { await Promise.race([this.waitUntilApisStarted(), this.throwIfErrored()]); this.emit(FlowEmulatorEvent.APIS_STARTED); + + // TODO(restructure): Re-index all state } public getDefaultConfig(): FlowEmulatorConfig { diff --git a/packages/core/src/flow/flow-gateway.service.ts b/packages/core/src/flow/flow-gateway.service.ts index 25dc785bf..1c9dc694d 100644 --- a/packages/core/src/flow/flow-gateway.service.ts +++ b/packages/core/src/flow/flow-gateway.service.ts @@ -141,7 +141,7 @@ export type FlowGatewayConfig = { restServerAddress: string; }; -enum ServiceStatus { +export enum FlowApiStatus { SERVICE_STATUS_ONLINE = 1, SERVICE_STATUS_OFFLINE = 2, } @@ -244,7 +244,7 @@ export class FlowGatewayService { public async getApiStatus( gateway: FlowGatewayConfig - ): Promise { + ): Promise { const { hostname, port } = new URL(gateway.restServerAddress); return new Promise((resolve) => { const req = http @@ -260,12 +260,12 @@ export class FlowGatewayService { // Ideally we should send a ping request to access API // but that endpoint isn't implemented on emulator side (afaik) // https://github.com/onflow/flow/blob/master/protobuf/flow/access/access.proto#L20 - return resolve(ServiceStatus.SERVICE_STATUS_ONLINE); + return resolve(FlowApiStatus.SERVICE_STATUS_ONLINE); } ) .on("error", (err) => { req.end(); - return resolve(ServiceStatus.SERVICE_STATUS_OFFLINE); + return resolve(FlowApiStatus.SERVICE_STATUS_OFFLINE); }); }); } diff --git a/packages/indexer/src/indexer.service.ts b/packages/indexer/src/indexer.service.ts index 40f50f2af..fa77abb1f 100644 --- a/packages/indexer/src/indexer.service.ts +++ b/packages/indexer/src/indexer.service.ts @@ -1,5 +1,8 @@ import { Injectable, Logger } from "@nestjs/common"; -import { FlowGatewayService } from "@onflowser/core/src/flow/flow-gateway.service"; +import { + FlowApiStatus, + FlowGatewayService, +} from "@onflowser/core/src/flow/flow-gateway.service"; import * as flowResource from "@onflowser/core/src/flow/flow-gateway.service"; import * as flowserResource from "@onflowser/api/src/resources"; import { @@ -7,23 +10,8 @@ import { ensurePrefixedAddress, } from "../../../backend/src/utils/common-utils"; import { getDataSourceInstance } from "../../../backend/src/database"; +import { ManagedProcess } from "@onflowser/core/src/processes/managed-process"; import { - FlowCoreEventType, - ManagedProcessState, - ServiceStatus, - SignableObject, -} from "@flowser/shared"; -import { - ProcessManagerEvent, - ProcessManagerService, -} from "@onflowser/core/src/processes/process-manager.service"; -import { - ManagedProcess, - ManagedProcessEvent, -} from "@onflowser/core/src/processes/managed-process"; -import { CacheRemovalService } from "../../../backend/src/core/services/cache-removal.service"; -import { - FlowEmulatorEvent, FlowEmulatorService, WellKnownAddressesOptions, } from "@onflowser/core/src/flow/flow-emulator.service"; @@ -40,6 +28,16 @@ import { } from "@onflowser/api/src/resources"; import { FlowAccountStorageService } from "@onflowser/core/src/flow/flow-storage.service"; +// See https://developers.flow.com/cadence/language/core-events +enum FlowCoreEventType { + ACCOUNT_CREATED = "flow.AccountCreated", + ACCOUNT_KEY_ADDED = "flow.AccountKeyAdded", + ACCOUNT_KEY_REMOVED = "flow.AccountKeyRemoved", + ACCOUNT_CONTRACT_ADDED = "flow.AccountContractAdded", + ACCOUNT_CONTRACT_UPDATED = "flow.AccountContractUpdated", + ACCOUNT_CONTRACT_REMOVED = "flow.AccountContractRemoved", +} + type BlockData = { block: flowResource.FlowBlock; transactions: FlowTransactionWithStatus[]; @@ -69,7 +67,7 @@ export class IndexerService { private processingScheduler: AsyncIntervalScheduler; constructor( - private gatewayConfig: FlowGatewayConfig, + gatewayConfig: FlowGatewayConfig, private transactionIndex: IResourceIndex, private accountIndex: IResourceIndex, private accountKeyIndex: IResourceIndex, @@ -79,8 +77,6 @@ export class IndexerService { private accountStorageIndex: IResourceIndex, private flowStorageService: FlowAccountStorageService, private flowGatewayService: FlowGatewayService, - private processManagerService: ProcessManagerService, - private commonService: CacheRemovalService, private flowEmulatorService: FlowEmulatorService, private goBindings: GoBindingsService ) { @@ -93,63 +89,10 @@ export class IndexerService { start(): void { this.processingScheduler?.start(); - this.emulatorProcess = this.processManagerService.get( - FlowEmulatorService.processId - ); - this.processManagerService.on( - ProcessManagerEvent.PROCESS_ADDED, - this.onProcessAddedOrUpdated.bind(this) - ); - this.processManagerService.on( - ProcessManagerEvent.PROCESS_UPDATED, - this.onProcessAddedOrUpdated.bind(this) - ); - this.flowEmulatorService.on( - FlowEmulatorEvent.APIS_STARTED, - this.processWellKnownAccounts.bind(this) - ); } stop(): void { this.processingScheduler?.stop(); - this.processManagerService.removeListener( - ProcessManagerEvent.PROCESS_ADDED, - this.onProcessAddedOrUpdated.bind(this) - ); - this.processManagerService.removeListener( - ProcessManagerEvent.PROCESS_UPDATED, - this.onProcessAddedOrUpdated.bind(this) - ); - this.emulatorProcess?.removeListener( - ManagedProcessEvent.STATE_CHANGE, - this.onProcessStateChange.bind(this) - ); - } - - private onProcessAddedOrUpdated(process: ManagedProcess) { - const isEmulatorProcess = process.id === FlowEmulatorService.processId; - if (isEmulatorProcess) { - this.logger.debug(`Emulator was started or updated`); - // Remove any previous listeners - this.emulatorProcess?.removeListener( - ManagedProcessEvent.STATE_CHANGE, - this.onProcessStateChange.bind(this) - ); - // Update internal process instance & reattach listener - this.emulatorProcess = process; - this.emulatorProcess.on( - ManagedProcessEvent.STATE_CHANGE, - this.onProcessStateChange.bind(this) - ); - } - } - - private async onProcessStateChange(state: ManagedProcessState) { - if (state === ManagedProcessState.MANAGED_PROCESS_STATE_RUNNING) { - this.logger.debug("Emulator process was started, reindexing"); - // Reindex all blockchain data when the emulator is started (restarted) - await this.commonService.removeAll(); - } } async getTotalBlocksToProcess() { @@ -163,7 +106,7 @@ export class IndexerService { const gatewayStatus = await this.flowGatewayService.getApiStatus( gatewayConfig ); - if (gatewayStatus !== ServiceStatus.SERVICE_STATUS_ONLINE) { + if (gatewayStatus !== FlowApiStatus.SERVICE_STATUS_ONLINE) { this.logger.debug("Gateway offline, pausing processing."); return; } From 1ac6396a906c9d7a167b677773cb382aafe1f9bf Mon Sep 17 00:00:00 2001 From: Bart Date: Sun, 8 Oct 2023 10:59:38 +0200 Subject: [PATCH 007/100] fix various type issues --- packages/api/src/resources.ts | 18 ++++- .../core/src/flow/flow-storage.service.ts | 72 ++++++++----------- packages/indexer/src/indexer.service.ts | 66 ++++++----------- 3 files changed, 67 insertions(+), 89 deletions(-) diff --git a/packages/api/src/resources.ts b/packages/api/src/resources.ts index fc93528a6..1894f764b 100644 --- a/packages/api/src/resources.ts +++ b/packages/api/src/resources.ts @@ -10,7 +10,6 @@ export enum CadenceTypeKind { CADENCE_TYPE_PATH = 8, } - export enum InteractionKind { INTERACTION_SCRIPT = 1, INTERACTION_TRANSACTION = 2, @@ -57,6 +56,7 @@ export interface FlowAccount { balance: number; code: string; isDefaultAccount: boolean; + keys: FlowAccountKey[]; } // https://docs.onflow.org/cadence/language/crypto/#hashing @@ -79,6 +79,7 @@ export enum HashAlgorithm { } export interface FlowAccountKey { + id: string; index: number; accountAddress: string; blockId: string; @@ -107,11 +108,24 @@ export interface FlowAccountCapability { targetPath: string; } +/** + * Every account storage path consists of a domain and identifier: // + * See official docs: https://developers.flow.com/cadence/language/accounts#paths + */ +export enum AccountStorageDomain { + STORAGE_DOMAIN_PRIVATE = 1, + STORAGE_DOMAIN_PUBLIC = 2, + STORAGE_DOMAIN_STORAGE = 3, +} + export interface FlowAccountStorage { id: string; address: string; + domain: AccountStorageDomain; + // TODO(restructure): Split data into multiple type-specific fields + data: any; path: string; - type: unknown; + targetPath: string; } export interface FlowBlock { diff --git a/packages/core/src/flow/flow-storage.service.ts b/packages/core/src/flow/flow-storage.service.ts index 5b42a219a..10f91b9e1 100644 --- a/packages/core/src/flow/flow-storage.service.ts +++ b/packages/core/src/flow/flow-storage.service.ts @@ -1,8 +1,11 @@ import { Injectable } from "@nestjs/common"; import { FlowGatewayService } from "./flow-gateway.service"; -import { AccountStorageItemEntity } from "../../../../backend/src/accounts/entities/storage-item.entity"; import { ensurePrefixedAddress } from "../../../../backend/src/utils/common-utils"; -import { CadenceTypeKind } from "@onflowser/api"; +import { + AccountStorageDomain, + CadenceTypeKind, + FlowAccountStorage +} from '@onflowser/api'; /** * For more info on the account storage model and API, see: @@ -13,17 +16,6 @@ import { CadenceTypeKind } from "@onflowser/api"; * https://github.com/onflow/flow-emulator/blob/3fbe8ad9dc841abdc13056e20e7b15fc0e32a749/server/backend/backend.go#L584-L590 */ -/** - * Every account storage path consists of a domain and identifier: // - * See official docs: https://developers.flow.com/cadence/language/accounts#paths - */ -enum AccountStorageDomain { - STORAGE_DOMAIN_UNKNOWN = 0, - STORAGE_DOMAIN_PRIVATE = 1, - STORAGE_DOMAIN_PUBLIC = 2, - STORAGE_DOMAIN_STORAGE = 3, -} - type CapabilityPathItem = { address: string; path: string; @@ -48,38 +40,32 @@ export class FlowAccountStorageService { public async getAccountStorageItems( address: string - ): Promise { + ): Promise { const flowAccountStorage = await this.fetchStorageByAddress(address); return [ - ...flowAccountStorage.capabilityPathItems.map( - (item) => - new AccountStorageItemEntity({ - account: undefined, - accountAddress: ensurePrefixedAddress(item.address), - // Temporarily store the data type in untyped field, refactor later. - data: { - type: item.type, - }, - pathDomain: this.getStorageDomainFromPath(item.path), - path: item.path, - targetPath: item.targetPath, - }) - ), - ...flowAccountStorage.storagePathItems.map( - (item) => - new AccountStorageItemEntity({ - account: undefined, - accountAddress: ensurePrefixedAddress(item.address), - // Temporarily store the data type in untyped field, refactor later. - data: { - type: item.type, - }, - pathDomain: this.getStorageDomainFromPath(item.path), - path: item.path, - targetPath: "", - }) - ), + ...flowAccountStorage.capabilityPathItems.map((item): FlowAccountStorage => ({ + id: `${ensurePrefixedAddress(item.address)}.${item.path}`, + address: ensurePrefixedAddress(item.address), + // Temporarily store the data type in untyped field, refactor later. + data: { + type: item.type, + }, + domain: this.getStorageDomainFromPath(item.path), + path: item.path, + targetPath: item.targetPath, + })), + ...flowAccountStorage.storagePathItems.map((item): FlowAccountStorage => ({ + id: `${ensurePrefixedAddress(item.address)}.${item.path}`, + address: ensurePrefixedAddress(item.address), + // Temporarily store the data type in untyped field, refactor later. + data: { + type: item.type, + }, + domain: this.getStorageDomainFromPath(item.path), + path: item.path, + targetPath: "", + })), ]; } @@ -213,7 +199,7 @@ export class FlowAccountStorageService { case "storage": return AccountStorageDomain.STORAGE_DOMAIN_STORAGE; default: - return AccountStorageDomain.STORAGE_DOMAIN_UNKNOWN; + throw new Error(`Unknown domain: ${rawDomain}`) } } } diff --git a/packages/indexer/src/indexer.service.ts b/packages/indexer/src/indexer.service.ts index fa77abb1f..84975e15d 100644 --- a/packages/indexer/src/indexer.service.ts +++ b/packages/indexer/src/indexer.service.ts @@ -9,7 +9,6 @@ import { ensureNonPrefixedAddress, ensurePrefixedAddress, } from "../../../backend/src/utils/common-utils"; -import { getDataSourceInstance } from "../../../backend/src/database"; import { ManagedProcess } from "@onflowser/core/src/processes/managed-process"; import { FlowEmulatorService, @@ -21,7 +20,7 @@ import { GetParsedInteractionResponse, GoBindingsService, } from "@onflowser/core/src/flow/go-bindings.service"; -import { IResourceIndex } from "@flowser/packages/api"; +import { IResourceIndex } from "@onflowser/api"; import { HashAlgorithm, SignatureAlgorithm, @@ -70,7 +69,6 @@ export class IndexerService { gatewayConfig: FlowGatewayConfig, private transactionIndex: IResourceIndex, private accountIndex: IResourceIndex, - private accountKeyIndex: IResourceIndex, private blockIndex: IResourceIndex, private eventIndex: IResourceIndex, private contractIndex: IResourceIndex, @@ -88,11 +86,11 @@ export class IndexerService { } start(): void { - this.processingScheduler?.start(); + this.processingScheduler.start(); } stop(): void { - this.processingScheduler?.stop(); + this.processingScheduler.stop(); } async getTotalBlocksToProcess() { @@ -170,9 +168,6 @@ export class IndexerService { } private async processBlockWithHeight(height: number) { - const dataSource = await getDataSourceInstance(); - const queryRunner = dataSource.createQueryRunner(); - const blockData = await this.getBlockData(height); // Process events first, so that transactions can reference created users. @@ -182,18 +177,10 @@ export class IndexerService { }); try { - await queryRunner.startTransaction(); - await this.storeBlockData(blockData); await this.reIndexAllAccountStorage(); - - await queryRunner.commitTransaction(); } catch (e) { - await queryRunner.rollbackTransaction(); - - this.logger.error(`Failed to store latest data`, e); - } finally { - await queryRunner.release(); + this.logger.error(`Failed to store block (#${height}) data`, e); } try { @@ -446,17 +433,7 @@ export class IndexerService { await Promise.all([ this.accountIndex.add(flowserAccount), - Promise.all( - flowAccount.keys.map((key) => - this.accountKeyIndex.add( - this.createKeyEntity({ - account: flowAccount, - key, - block: block, - }) - ) - ) - ), + // TODO(restructure): Should we store keys/contracts within the account index or a separate one? Promise.all( Object.keys(flowAccount.contracts).map((name) => this.contractIndex.add( @@ -505,7 +482,7 @@ export class IndexerService { // but that service doesn't set the public key. // So if public key isn't present, // we know that we haven't processed this account yet. - return Boolean(serviceAccount.keys?.[0]?.publicKey); + return Boolean(serviceAccount?.keys?.[0]?.publicKey); } catch (e) { // Service account not found return false; @@ -592,13 +569,13 @@ export class IndexerService { blockId: block.id, isDefaultAccount: allPossibleWellKnownAddresses.includes(address), code: account.code, - // keys: account.keys.map((flowKey) => - // this.createKeyEntity({ - // account: account, - // key: flowKey, - // block: block, - // }) - // ), + keys: account.keys.map((flowKey) => + this.createKeyEntity({ + account: account, + key: flowKey, + block: block, + }) + ), }; } @@ -619,9 +596,12 @@ export class IndexerService { [1, HashAlgorithm.SHA3_256], ]); + const accountAddress = ensurePrefixedAddress(account.address); + return { + id: `${accountAddress}.${key.index}`, index: key.index, - accountAddress: ensurePrefixedAddress(account.address), + accountAddress, publicKey: key.publicKey, signAlgo: signAlgoLookup.get(key.signAlgo), hashAlgo: hashAlgoLookup.get(key.hashAlgo), @@ -767,12 +747,10 @@ export class IndexerService { private deserializeSignableObjects( signableObjects: flowResource.FlowSignableObject[] - ) { - return signableObjects.map((signable) => - SignableObject.fromJSON({ - ...signable, - address: ensurePrefixedAddress(signable.address), - }) - ); + ): flowserResource.SignableObject[] { + return signableObjects.map((signable) => ({ + ...signable, + address: ensurePrefixedAddress(signable.address), + })); } } From ada33ed590937a58f9c6cfe5acdba034db2249c5 Mon Sep 17 00:00:00 2001 From: Bart Date: Sun, 8 Oct 2023 12:52:45 +0200 Subject: [PATCH 008/100] setup build, remove backend, run demo app successfully --- .gitignore | 3 + apps/demo-app/package.json | 7 +- apps/demo-app/src/main.ts | 42 +- apps/demo-app/tsconfig.json | 7 +- backend/.gitignore | 55 - backend/.prettierignore | 12 - backend/.prettierrc.js | 1 - backend/README.md | 19 - backend/nest-cli.json | 4 - backend/package.json | 110 - backend/src/accounts/accounts.module.ts | 41 - .../controllers/accounts.controller.ts | 93 - .../controllers/contracts.controller.ts | 93 - .../src/accounts/entities/account.entity.ts | 131 - .../src/accounts/entities/contract.entity.ts | 57 - backend/src/accounts/entities/key.entity.ts | 112 - .../accounts/entities/storage-item.entity.ts | 82 - .../src/accounts/services/accounts.service.ts | 83 - .../accounts/services/contracts.service.ts | 116 - backend/src/accounts/services/keys.service.ts | 96 - .../src/accounts/services/storage.service.ts | 84 - backend/src/app.controller.ts | 14 - backend/src/app.module.ts | 47 - backend/src/app.service.ts | 11 - backend/src/blocks/blocks.controller.ts | 49 - backend/src/blocks/blocks.module.ts | 13 - backend/src/blocks/blocks.service.ts | 53 - .../blocks/entities/block-context.entity.ts | 25 - backend/src/blocks/entities/block.entity.ts | 63 - backend/src/core/core.module.ts | 19 - backend/src/core/entities/polling.entity.ts | 14 - .../src/core/filters/http-exception.filter.ts | 45 - .../polling-response.interceptor.ts | 68 - .../core/services/cache-removal.service.ts | 69 - backend/src/core/services/config.service.ts | 68 - .../data-processing/data-processing.module.ts | 29 - backend/src/database.ts | 44 - backend/src/docs.ts | 26 - backend/src/events/event.entity.ts | 58 - backend/src/events/events.controller.ts | 62 - backend/src/events/events.module.ts | 13 - backend/src/events/events.service.ts | 61 - backend/src/flow/flow.controller.ts | 101 - backend/src/flow/flow.module.ts | 49 - backend/src/flow/tests/cli.service.spec.ts | 41 - backend/src/flow/utils/project-context.ts | 30 - backend/src/go-bindings/README.md | 5 - .../src/go-bindings/go-bindings.controller.ts | 27 - backend/src/go-bindings/go-bindings.module.ts | 10 - backend/src/index.ts | 34 - backend/src/main.ts | 28 - .../processes/process-manager.controller.ts | 85 - backend/src/processes/processes.module.ts | 10 - .../src/projects/dto/create-project.dto.ts | 35 - .../dto/emulator-configuration.dto.ts | 77 - .../projects/dto/gateway-configuration.dto.ts | 20 - .../src/projects/dto/update-project.dto.ts | 11 - backend/src/projects/project.entity.ts | 102 - backend/src/projects/projects.controller.ts | 139 - backend/src/projects/projects.module.ts | 31 - backend/src/projects/projects.service.ts | 292 - .../src/transactions/transaction.entity.ts | 111 - .../transactions/transactions.controller.ts | 99 - .../src/transactions/transactions.module.ts | 13 - .../src/transactions/transactions.service.ts | 90 - backend/src/utils/type-utils.ts | 13 - backend/src/wallet/wallet.controller.ts | 23 - backend/src/wallet/wallet.module.ts | 13 - backend/static/icon.png | Bin 66405 -> 0 bytes backend/test/app.e2e-spec.ts | 21 - backend/test/jest-e2e.json | 9 - backend/tsconfig.build.json | 7 - backend/tsconfig.json | 24 - backend/yarn.lock | 5973 ----------------- ...ild-go-bindings.sh => build-go-bindings.sh | 2 +- packages/api/package.json | 12 +- packages/api/src/capabilities.ts | 2 +- packages/api/tsconfig.json | 7 +- packages/config/tsconfig.json | 8 +- packages/core/package.json | 15 +- packages/core/src/flow/flow-cli.service.ts | 4 +- packages/core/src/flow/flow-config.service.ts | 20 +- .../core/src/flow/flow-emulator.service.ts | 19 +- .../core/src/flow/flow-gateway.service.ts | 22 +- .../src/flow/flow-interactions.service.ts | 4 +- .../core/src/flow/flow-snapshots.service.ts | 16 +- .../core/src/flow/flow-storage.service.ts | 58 +- packages/core/src/flow/go-bindings.service.ts | 8 +- packages/core/src/flow/index.ts | 9 + packages/core/src/flow/resources.ts | 5 - packages/core/src/index.ts | 3 + packages/core/src/processes/index.ts | 2 + .../core/src/processes/managed-process.ts | 11 +- .../src/processes/process-manager.service.ts | 6 +- .../core/src/utils.spec.ts | 2 +- .../core/src/utils.ts | 32 - packages/core/tsconfig.json | 7 +- packages/indexer/index.ts | 1 - packages/indexer/package.json | 8 +- packages/indexer/src/in-memory-index.ts | 14 +- packages/indexer/src/index.ts | 2 + packages/indexer/src/indexer.service.ts | 38 +- packages/indexer/tsconfig.json | 7 +- packages/wallet/src/wallet.service.ts | 6 +- tsconfig.json | 18 - turbo.json | 1 + yarn.lock | 248 +- 107 files changed, 443 insertions(+), 9796 deletions(-) delete mode 100644 backend/.gitignore delete mode 100644 backend/.prettierignore delete mode 100644 backend/.prettierrc.js delete mode 100644 backend/README.md delete mode 100644 backend/nest-cli.json delete mode 100644 backend/package.json delete mode 100644 backend/src/accounts/accounts.module.ts delete mode 100644 backend/src/accounts/controllers/accounts.controller.ts delete mode 100644 backend/src/accounts/controllers/contracts.controller.ts delete mode 100644 backend/src/accounts/entities/account.entity.ts delete mode 100644 backend/src/accounts/entities/contract.entity.ts delete mode 100644 backend/src/accounts/entities/key.entity.ts delete mode 100644 backend/src/accounts/entities/storage-item.entity.ts delete mode 100644 backend/src/accounts/services/accounts.service.ts delete mode 100644 backend/src/accounts/services/contracts.service.ts delete mode 100644 backend/src/accounts/services/keys.service.ts delete mode 100644 backend/src/accounts/services/storage.service.ts delete mode 100644 backend/src/app.controller.ts delete mode 100644 backend/src/app.module.ts delete mode 100644 backend/src/app.service.ts delete mode 100644 backend/src/blocks/blocks.controller.ts delete mode 100644 backend/src/blocks/blocks.module.ts delete mode 100644 backend/src/blocks/blocks.service.ts delete mode 100644 backend/src/blocks/entities/block-context.entity.ts delete mode 100644 backend/src/blocks/entities/block.entity.ts delete mode 100644 backend/src/core/core.module.ts delete mode 100644 backend/src/core/entities/polling.entity.ts delete mode 100644 backend/src/core/filters/http-exception.filter.ts delete mode 100644 backend/src/core/interceptors/polling-response.interceptor.ts delete mode 100644 backend/src/core/services/cache-removal.service.ts delete mode 100644 backend/src/core/services/config.service.ts delete mode 100644 backend/src/data-processing/data-processing.module.ts delete mode 100644 backend/src/database.ts delete mode 100644 backend/src/docs.ts delete mode 100644 backend/src/events/event.entity.ts delete mode 100644 backend/src/events/events.controller.ts delete mode 100644 backend/src/events/events.module.ts delete mode 100644 backend/src/events/events.service.ts delete mode 100644 backend/src/flow/flow.controller.ts delete mode 100644 backend/src/flow/flow.module.ts delete mode 100644 backend/src/flow/tests/cli.service.spec.ts delete mode 100644 backend/src/flow/utils/project-context.ts delete mode 100644 backend/src/go-bindings/README.md delete mode 100644 backend/src/go-bindings/go-bindings.controller.ts delete mode 100644 backend/src/go-bindings/go-bindings.module.ts delete mode 100644 backend/src/index.ts delete mode 100644 backend/src/main.ts delete mode 100644 backend/src/processes/process-manager.controller.ts delete mode 100644 backend/src/processes/processes.module.ts delete mode 100644 backend/src/projects/dto/create-project.dto.ts delete mode 100644 backend/src/projects/dto/emulator-configuration.dto.ts delete mode 100644 backend/src/projects/dto/gateway-configuration.dto.ts delete mode 100644 backend/src/projects/dto/update-project.dto.ts delete mode 100644 backend/src/projects/project.entity.ts delete mode 100644 backend/src/projects/projects.controller.ts delete mode 100644 backend/src/projects/projects.module.ts delete mode 100644 backend/src/projects/projects.service.ts delete mode 100644 backend/src/transactions/transaction.entity.ts delete mode 100644 backend/src/transactions/transactions.controller.ts delete mode 100644 backend/src/transactions/transactions.module.ts delete mode 100644 backend/src/transactions/transactions.service.ts delete mode 100644 backend/src/utils/type-utils.ts delete mode 100644 backend/src/wallet/wallet.controller.ts delete mode 100644 backend/src/wallet/wallet.module.ts delete mode 100644 backend/static/icon.png delete mode 100644 backend/test/app.e2e-spec.ts delete mode 100644 backend/test/jest-e2e.json delete mode 100644 backend/tsconfig.build.json delete mode 100644 backend/tsconfig.json delete mode 100644 backend/yarn.lock rename backend/build-go-bindings.sh => build-go-bindings.sh (96%) create mode 100644 packages/core/src/flow/index.ts delete mode 100644 packages/core/src/flow/resources.ts create mode 100644 packages/core/src/index.ts create mode 100644 packages/core/src/processes/index.ts rename backend/src/utils/common-utils.spec.ts => packages/core/src/utils.spec.ts (95%) rename backend/src/utils/common-utils.ts => packages/core/src/utils.ts (80%) delete mode 100644 packages/indexer/index.ts create mode 100644 packages/indexer/src/index.ts delete mode 100644 tsconfig.json diff --git a/.gitignore b/.gitignore index 05b7d9e21..861317b25 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,6 @@ flow.json .envrc server/certbot .envrc +dist +.turbo +*.tsbuildinfo diff --git a/apps/demo-app/package.json b/apps/demo-app/package.json index 768bcc39e..19acb4362 100644 --- a/apps/demo-app/package.json +++ b/apps/demo-app/package.json @@ -3,14 +3,17 @@ "version": "1.0.0", "description": "", "types": "./src/index.ts", - "scripts": {}, + "scripts": { + "build": "tsc" + }, "keywords": [], "author": "", "license": "ISC", "dependencies": { "@onflowser/config": "*", "@onflowser/indexer": "*", - "@onflowser/core": "*" + "@onflowser/core": "*", + "@onflowser/api": "*" }, "devDependencies": { "@types/node": "^16.11.6", diff --git a/apps/demo-app/src/main.ts b/apps/demo-app/src/main.ts index 3a8ee341a..210c3116f 100644 --- a/apps/demo-app/src/main.ts +++ b/apps/demo-app/src/main.ts @@ -1 +1,41 @@ -import {} from "@onflowser/indexer"; +import { IndexerService, InMemoryIndex } from "@onflowser/indexer"; +import { + FlowGatewayService, + FlowAccountStorageService, + FlowEmulatorService, + ProcessManagerService, + GoBindingsService, +} from "@onflowser/core"; +import * as flowserResource from "@onflowser/api"; + +const flowGatewayService = new FlowGatewayService(); +const flowAccountStorageService = new FlowAccountStorageService( + flowGatewayService +); +const processManagerService = new ProcessManagerService(); +const flowEmulatorService = new FlowEmulatorService(processManagerService); +const goBindingsService = new GoBindingsService(); + +const indexes = { + transaction: new InMemoryIndex(), + block: new InMemoryIndex(), + account: new InMemoryIndex(), + event: new InMemoryIndex(), + contract: new InMemoryIndex(), + accountStorage: new InMemoryIndex(), +}; + +const indexer = new IndexerService( + indexes.transaction, + indexes.account, + indexes.block, + indexes.event, + indexes.contract, + indexes.accountStorage, + flowAccountStorageService, + flowGatewayService, + flowEmulatorService, + goBindingsService +); + +indexer.start(); diff --git a/apps/demo-app/tsconfig.json b/apps/demo-app/tsconfig.json index 65e818d95..52bcf60e1 100644 --- a/apps/demo-app/tsconfig.json +++ b/apps/demo-app/tsconfig.json @@ -1,3 +1,8 @@ { - "extends": "config/tsconfig.json" + "extends": "@onflowser/config/tsconfig.json", + "include": ["src"], + "exclude": ["dist", "build", "node_modules"], + "compilerOptions": { + "outDir": "./dist", + } } diff --git a/backend/.gitignore b/backend/.gitignore deleted file mode 100644 index 06fd2241a..000000000 --- a/backend/.gitignore +++ /dev/null @@ -1,55 +0,0 @@ -# compiled output -dist/* -/tmp -/out-tsc - -# dependencies -/node_modules - -# IDEs and editors -/.idea -.project -.classpath -.c9/ -.vscode -*.launch -.settings/ -*.sublime-workspace - -# IDE - VSCode -*.code-workspace -/.vscode -.vscode/* -!.vscode/settings.json -!.vscode/tasks.json -!.vscode/launch.json -!.vscode/extensions.json - -# misc -/.sass-cache -/connect.lock -/coverage -/libpeerconnection.log -npm-debug.log -testem.log -/typings - -# e2e -/e2e/*.js -/e2e/*.map - -# System Files -.DS_Store -Thumbs.db - -# Mock API -/api/node_modules - -# compiled templates -src/app/homepage/pages/**/*.html - -.env.development -*.sqlite - -openapi.json -src/go-bindings/bin diff --git a/backend/.prettierignore b/backend/.prettierignore deleted file mode 100644 index 6f03e2af3..000000000 --- a/backend/.prettierignore +++ /dev/null @@ -1,12 +0,0 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. - -# dependencies -/node_modules -/.pnp -.pnp.js - -# testing -/coverage - -# production -/build diff --git a/backend/.prettierrc.js b/backend/.prettierrc.js deleted file mode 100644 index f053ebf79..000000000 --- a/backend/.prettierrc.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = {}; diff --git a/backend/README.md b/backend/README.md deleted file mode 100644 index 04fea8fcd..000000000 --- a/backend/README.md +++ /dev/null @@ -1,19 +0,0 @@ -# Flowser backend - -## Dependencies - -If you want to use the sqlite database (e.g. along with `better-sqlite3` datasource), you will need to follow the steps described in https://github.com/WiseLibs/better-sqlite3#installation. - -## Configuration - -| Name | Required | Default | -|----------------------------|----------|-----------| -| `DATABASE_TYPE` | | mysql | -| `DATABASE_HOST` | | localhost | -| `DATABASE_PORT` | | 3306 | -| `DATABASE_USERNAME` | ✅ | | -| `DATABASE_PASSWORD` | ✅ | | -| `DATABASE_NAME` | ✅ | | -| `DATA_FETCH_INTERVAL` | | 3000 (ms) | -| `FLOW_STORAGE_SERVER_PORT` | | 8899 | -| `GENERATE_API_DOCS_FILE` | | false | diff --git a/backend/nest-cli.json b/backend/nest-cli.json deleted file mode 100644 index 56167b36a..000000000 --- a/backend/nest-cli.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "collection": "@nestjs/schematics", - "sourceRoot": "src" -} diff --git a/backend/package.json b/backend/package.json deleted file mode 100644 index 8f096e38a..000000000 --- a/backend/package.json +++ /dev/null @@ -1,110 +0,0 @@ -{ - "name": "@flowser/backend", - "version": "0.0.1", - "description": "", - "author": "", - "private": true, - "license": "UNLICENSED", - "main": "dist/index.js", - "types": "dist/index.d.ts", - "scripts": { - "prebuild": "rimraf dist", - "copy-static-assets": "cp -r ./static ./dist", - "cleanup": "rm -rf node_modules && rm -rf dist", - "build": "nest build --path ./tsconfig.build.json && yarn run copy-static-assets && npm run build:bin", - "build:bin": "sh build-go-bindings.sh", - "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"", - "start": "rm -rf dist && mkdir -p dist && yarn run copy-static-assets && npm run build:bin && nest start --debug --watch --preserveWatchOutput", - "start:prod": "node dist/main", - "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix", - "test": "jest", - "test:watch": "jest --watch", - "test:cov": "jest --coverage", - "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand", - "test:e2e": "jest --config ./test/jest-e2e.json" - }, - "dependencies": { - "@flowser/shared": "^0.0.1", - "@nestjs/cli": "^8.1.1", - "@nestjs/common": "^8.0.0", - "@nestjs/config": "^2.1.0", - "@nestjs/core": "^8.0.0", - "@nestjs/mapped-types": "*", - "@nestjs/platform-express": "^8.0.0", - "@nestjs/schedule": "^2.0.1", - "@nestjs/serve-static": "^3.0.0", - "@nestjs/swagger": "^5.1.1", - "@nestjs/typeorm": "^8.1.0", - "@onflow/fcl": "^1.6.0", - "@onflow/types": "^1.0.3", - "axios": "^0.21.4", - "class-transformer": "0.4.0", - "class-validator": "^0.13.1", - "command-exists": "^1.2.9", - "elliptic": "^6.5.4", - "envalid": "^7.3.1", - "node-abort-controller": "^3.0.1", - "reflect-metadata": "^0.1.13", - "rimraf": "^3.0.2", - "rxjs": "^7.2.0", - "semver": "^7.3.7", - "swagger-ui-express": "^4.1.6", - "typeorm": "^0.3.6" - }, - "peerDependencies": { - "mysql2": "^2.3.3", - "sqlite3": "^5.0.10" - }, - "devDependencies": { - "@nestjs/schematics": "^8.0.0", - "@nestjs/testing": "^8.0.0", - "@types/cron": "^1.7.3", - "@types/elliptic": "^6.4.14", - "@types/express": "^4.17.13", - "@types/jest": "^27.0.2", - "@types/node": "^16.11.6", - "@types/supertest": "^2.0.11", - "@typescript-eslint/eslint-plugin": "^4.28.2", - "@typescript-eslint/parser": "^4.28.2", - "eslint": "^7.32.0", - "eslint-config-prettier": "^8.3.0", - "eslint-plugin-prettier": "^3.4.0", - "husky": "^8.0.1", - "jest": "^27.0.6", - "lint-staged": "^13.0.3", - "prettier": "^2.3.2", - "supertest": "^6.1.3", - "ts-jest": "^27.0.3", - "ts-loader": "^9.2.3", - "ts-node": "^10.0.0", - "tsconfig-paths": "^3.10.1", - "typescript": "^4.3.5" - }, - "jest": { - "moduleFileExtensions": [ - "js", - "json", - "ts" - ], - "rootDir": "src", - "testRegex": ".*\\.spec\\.ts$", - "transform": { - "^.+\\.(t|j)s$": "ts-jest" - }, - "collectCoverageFrom": [ - "**/*.(t|j)s" - ], - "coverageDirectory": "../coverage", - "testEnvironment": "node" - }, - "husky": { - "hooks": { - "pre-commit": "lint-staged" - } - }, - "lint-staged": { - "*.{ts,js,json}": [ - "prettier --write" - ] - } -} diff --git a/backend/src/accounts/accounts.module.ts b/backend/src/accounts/accounts.module.ts deleted file mode 100644 index d224e50fb..000000000 --- a/backend/src/accounts/accounts.module.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { forwardRef, Module } from '@nestjs/common'; -import { AccountsService } from "./services/accounts.service"; -import { AccountsController } from "./controllers/accounts.controller"; -import { TypeOrmModule } from "@nestjs/typeorm"; -import { AccountEntity } from "./entities/account.entity"; -import { ContractsController } from "./controllers/contracts.controller"; -import { ContractsService } from "./services/contracts.service"; -import { TransactionEntity } from "../transactions/transaction.entity"; -import { AccountContractEntity } from "./entities/contract.entity"; -import { AccountKeyEntity } from "./entities/key.entity"; -import { AccountStorageItemEntity } from "./entities/storage-item.entity"; -import { KeysService } from "./services/keys.service"; -import { AccountStorageService } from "./services/storage.service"; -import { FlowModule } from '../flow/flow.module'; - -@Module({ - imports: [ - forwardRef(() => FlowModule), - TypeOrmModule.forFeature([ - AccountEntity, - AccountContractEntity, - AccountKeyEntity, - AccountStorageItemEntity, - TransactionEntity, - ]), - ], - controllers: [AccountsController, ContractsController], - providers: [ - AccountsService, - AccountStorageService, - ContractsService, - KeysService, - ], - exports: [ - AccountsService, - AccountStorageService, - ContractsService, - KeysService, - ], -}) -export class AccountsModule {} diff --git a/backend/src/accounts/controllers/accounts.controller.ts b/backend/src/accounts/controllers/accounts.controller.ts deleted file mode 100644 index c9455e643..000000000 --- a/backend/src/accounts/controllers/accounts.controller.ts +++ /dev/null @@ -1,93 +0,0 @@ -import { - Controller, - Get, - Param, - UseInterceptors, - Body, - Post, -} from "@nestjs/common"; -import { AccountsService } from "../services/accounts.service"; -import { PollingResponseInterceptor } from "../../core/interceptors/polling-response.interceptor"; -import { ApiParam, ApiQuery } from "@nestjs/swagger"; -import { - GetPollingAccountsResponse, - GetAllAccountsResponse, - GetSingleAccountResponse, - GetPollingKeysResponse, - GetPollingStorageResponse, - GetPollingStorageRequest, - GetPollingAccountsRequest, - GetPollingKeysRequest, -} from "@flowser/shared"; -import { KeysService } from "../services/keys.service"; -import { AccountStorageService } from "../services/storage.service"; - -@Controller("accounts") -export class AccountsController { - constructor( - private readonly accountsService: AccountsService, - private readonly keysService: KeysService, - private readonly storageService: AccountStorageService - ) {} - - @Get() - async findAll() { - const accounts = await this.accountsService.findAll(); - return GetAllAccountsResponse.toJSON({ - accounts: accounts.map((account) => account.toProto()), - }); - } - - @ApiQuery({ name: "timestamp", type: Number }) - @Post("/polling") - @UseInterceptors(new PollingResponseInterceptor(GetPollingAccountsResponse)) - async findAllNew(@Body() data: unknown) { - const request = GetPollingAccountsRequest.fromJSON(data); - const accounts = await this.accountsService.findAllNewerThanTimestamp( - new Date(request.timestamp) - ); - return accounts.map((account) => account.toProto()); - } - - @ApiParam({ name: "address", type: String }) - @Post(":address/keys/polling") - @UseInterceptors(new PollingResponseInterceptor(GetPollingKeysResponse)) - async findAllNewKeysByAccount( - @Param("address") accountAddress: string, - @Body() data: unknown - ) { - const request = GetPollingKeysRequest.fromJSON(data); - const keys = await this.keysService.findAllNewerThanTimestampByAccount( - accountAddress, - new Date(request.timestamp) - ); - return keys.map((key) => key.toProto()); - } - - @ApiParam({ name: "address", type: String }) - @Post(":address/storage/polling") - @UseInterceptors(new PollingResponseInterceptor(GetPollingStorageResponse)) - async findAllNewStorageByAccount( - @Param("address") accountAddress: string, - @Body() data: unknown - ) { - const request = GetPollingStorageRequest.fromJSON(data); - const storageItems = - await this.storageService.findAllNewerThanTimestampByAccount( - accountAddress, - new Date(request.timestamp) - ); - return storageItems.map((storageItem) => storageItem.toProto()); - } - - @ApiParam({ name: "address", type: String }) - @Get(":address") - async findOne(@Param("address") address: string) { - const account = await this.accountsService.findOneWithRelationsByAddress( - address - ); - return GetSingleAccountResponse.toJSON({ - account: account.toProto(), - }); - } -} diff --git a/backend/src/accounts/controllers/contracts.controller.ts b/backend/src/accounts/controllers/contracts.controller.ts deleted file mode 100644 index 7b83f0025..000000000 --- a/backend/src/accounts/controllers/contracts.controller.ts +++ /dev/null @@ -1,93 +0,0 @@ -import { - Controller, - Get, - Param, - UseInterceptors, - Body, - Post, -} from "@nestjs/common"; -import { ContractsService } from "../services/contracts.service"; -import { PollingResponseInterceptor } from "../../core/interceptors/polling-response.interceptor"; -import { ApiParam } from "@nestjs/swagger"; -import { - GetSingleContractResponse, - GetPollingContractsResponse, - GetAllContractsResponse, - GetPollingContractsRequest, - GetPollingContractsByAccountRequest, - AccountContract, -} from "@flowser/shared"; -import { AccountContractEntity } from "../entities/contract.entity"; -import { FlowConfigService } from "../../../../packages/core/src/flow/flow-config.service"; - -@Controller() -export class ContractsController { - constructor( - private readonly contractsService: ContractsService, - private readonly flowConfigService: FlowConfigService - ) {} - - @Get("contracts") - async findAll() { - const contracts = await this.contractsService.findAll(); - return GetAllContractsResponse.toJSON({ - contracts: contracts.map((contract) => this.toProto(contract)), - }); - } - - @Post("contracts/polling") - @UseInterceptors(new PollingResponseInterceptor(GetPollingContractsResponse)) - async findAllNew(@Body() data: unknown) { - const request = GetPollingContractsRequest.fromJSON(data); - const contracts = await this.contractsService.findAllNewerThanTimestamp( - new Date(request.timestamp) - ); - return contracts.map((contract) => this.toProto(contract)); - } - - @ApiParam({ name: "id", type: String }) - @Post("/accounts/:address/contracts/polling") - @UseInterceptors(new PollingResponseInterceptor(GetPollingContractsResponse)) - async findAllNewByAccount( - @Param("address") accountAddress: string, - @Body() data: unknown - ) { - const request = GetPollingContractsByAccountRequest.fromJSON(data); - const contracts = - await this.contractsService.findAllNewerThanTimestampByAccount( - accountAddress, - new Date(request.timestamp) - ); - return contracts.map((contract) => this.toProto(contract)); - } - - @ApiParam({ name: "id", type: String }) - @Get("contracts/:id") - async findOne(@Param("id") id: string) { - const contract = await this.contractsService.findOne(id); - return GetSingleContractResponse.toJSON({ - contract: this.toProto(contract), - }); - } - - private toProto(contract: AccountContractEntity): AccountContract { - const localContractConfig = this.flowConfigService - .getContracts() - .find((localContract) => localContract.name === contract.name); - - return { - id: contract.id, - accountAddress: contract.accountAddress, - name: contract.name, - code: contract.code, - createdAt: contract.createdAt.toISOString(), - updatedAt: contract.updatedAt.toISOString(), - localConfig: localContractConfig - ? { - absolutePath: localContractConfig.absolutePath, - relativePath: localContractConfig.relativePath, - } - : undefined, - }; - } -} diff --git a/backend/src/accounts/entities/account.entity.ts b/backend/src/accounts/entities/account.entity.ts deleted file mode 100644 index 4d9546f70..000000000 --- a/backend/src/accounts/entities/account.entity.ts +++ /dev/null @@ -1,131 +0,0 @@ -import { PollingEntity } from "../../core/entities/polling.entity"; -import { Column, Entity, OneToMany, PrimaryColumn } from "typeorm"; -import { AccountKeyEntity } from "./key.entity"; -import { AccountContractEntity } from "./contract.entity"; -import { Account, AccountTag } from "@flowser/shared"; -import { TransactionEntity } from "../../transactions/transaction.entity"; -import { AccountStorageItemEntity } from "./storage-item.entity"; -import { BlockContextEntity } from "../../blocks/entities/block-context.entity"; -import { PollingEntityInitArguments } from "../../utils/type-utils"; - -type AccountEntityInitArgs = PollingEntityInitArguments; - -@Entity({ name: "accounts" }) -export class AccountEntity extends PollingEntity implements BlockContextEntity { - @PrimaryColumn() - address: string; - - // Nullable for backward compatability - to not cause not null constraint failure on migration. - @Column({ nullable: true }) - blockId: string; - - @Column({ type: "bigint" }) - balance: number; - - @Column() - code: string; - - // If this account is one of the default accounts - // already created by the emulator itself. - @Column({ default: false }) - isDefaultAccount: boolean; - - @OneToMany(() => AccountKeyEntity, (key) => key.account, { - eager: true, - }) - keys?: AccountKeyEntity[]; - - @OneToMany(() => AccountStorageItemEntity, (storage) => storage.account, { - eager: true, - }) - storage?: AccountStorageItemEntity[]; - - @OneToMany(() => AccountContractEntity, (contract) => contract.account, { - eager: true, - }) - contracts?: AccountContractEntity[]; - - @OneToMany(() => TransactionEntity, (key) => key.payer, { - eager: true, - }) - transactions?: TransactionEntity[]; - - // Entities are also automatically initialized by TypeORM. - // In those cases no constructor arguments are provided. - constructor(args: AccountEntityInitArgs | undefined) { - super(); - this.address = args?.address ?? ""; - this.blockId = args?.blockId ?? ""; - this.balance = args?.balance ?? 0; - this.code = args?.code ?? ""; - this.isDefaultAccount = args?.isDefaultAccount ?? false; - if (args?.keys) { - this.keys = args.keys; - } - if (args?.storage) { - this.storage = args.storage; - } - if (args?.contracts) { - this.contracts = args.contracts; - } - if (args?.transactions) { - this.transactions = args.transactions; - } - } - - /** - * Creates an account with default values (where applicable). - * It doesn't pre-set the values that should be provided. - */ - static createDefault(): AccountEntity { - return new AccountEntity({ - balance: 0, - address: "", - blockId: "", - isDefaultAccount: false, - code: "", - keys: [], - transactions: [], - contracts: [], - storage: [], - }); - } - - toProto(): Account { - const tags: AccountTag[] = []; - - if (this.isDefaultAccount) { - tags.push({ - name: "Default", - description: "This account was created automatically by the emulator.", - }); - } - - const isServiceAccount = [ - "0xf8d6e0586b0a20c7", - "0x0000000000000001", // When using monotonic addresses setting - ].includes(this.address); - - // https://developers.flow.com/concepts/flow-token/concepts#flow-service-account - if (isServiceAccount) { - tags.push({ - name: "Service", - description: - "A special account in Flow that has special permissions to manage system contracts. It is able to mint tokens, set fees, and update network-level contracts.", - }); - } - - return { - address: this.address, - balance: this.balance, - code: this.code, - storage: this.storage?.map((storage) => storage.toProto()) ?? [], - keys: this.keys?.map((key) => key.toProto()) ?? [], - transactions: - this.transactions?.map((transaction) => transaction.toProto()) ?? [], - tags, - createdAt: this.createdAt.toISOString(), - updatedAt: this.updatedAt.toISOString(), - }; - } -} diff --git a/backend/src/accounts/entities/contract.entity.ts b/backend/src/accounts/entities/contract.entity.ts deleted file mode 100644 index 7d20375c8..000000000 --- a/backend/src/accounts/entities/contract.entity.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { PollingEntity } from "../../core/entities/polling.entity"; -import { Column, Entity, ManyToOne, PrimaryColumn } from "typeorm"; -import { AccountEntity } from "./account.entity"; -import { BadRequestException } from "@nestjs/common"; -import { BlockContextEntity } from "../../blocks/entities/block-context.entity"; -import { PollingEntityInitArguments } from "../../utils/type-utils"; - -type AccountContractEntityInitArgs = Omit< - PollingEntityInitArguments, - "id" ->; - -@Entity({ name: "contracts" }) -export class AccountContractEntity - extends PollingEntity - implements BlockContextEntity -{ - @PrimaryColumn() - accountAddress: string; - - @PrimaryColumn() - name: string; - - // Nullable for backward compatability - to not cause not null constraint failure on migration. - @Column({ nullable: true }) - blockId: string; - - @Column("text") - code: string; - - @ManyToOne(() => AccountEntity, (account) => account.contracts) - account: AccountEntity | null; - - // Entities are also automatically initialized by TypeORM. - // In those cases no constructor arguments are provided. - constructor(args: AccountContractEntityInitArgs | undefined) { - super(); - this.accountAddress = args?.accountAddress ?? ""; - this.name = args?.name ?? ""; - this.blockId = args?.blockId ?? ""; - this.code = args?.code ?? ""; - this.account = args?.account ?? null; - } - - get id() { - return `${this.accountAddress}.${this.name}`; - } - - public static decodeId(id: string) { - const idParts = id.split("."); - if (idParts.length !== 2) { - throw new BadRequestException("Invalid contract id"); - } - const [accountAddress, name] = idParts; - return { accountAddress, name }; - } -} diff --git a/backend/src/accounts/entities/key.entity.ts b/backend/src/accounts/entities/key.entity.ts deleted file mode 100644 index badb4da8c..000000000 --- a/backend/src/accounts/entities/key.entity.ts +++ /dev/null @@ -1,112 +0,0 @@ -import { Column, Entity, ManyToOne, PrimaryColumn } from "typeorm"; -import { PollingEntity } from "../../core/entities/polling.entity"; -import { AccountEntity } from "./account.entity"; -import { AccountKey } from "@flowser/shared"; -import { HashAlgorithm, SignatureAlgorithm } from "@flowser/shared"; -import { BlockContextEntity } from "../../blocks/entities/block-context.entity"; -import { PollingEntityInitArguments } from "../../utils/type-utils"; - -type AccountKeyEntityInitArgs = PollingEntityInitArguments; - -// https://developers.flow.com/tooling/flow-cli/accounts/create-accounts#key-weight -export const defaultKeyWeight = 1000; - -@Entity({ name: "keys" }) -export class AccountKeyEntity - extends PollingEntity - implements BlockContextEntity -{ - @PrimaryColumn() - index: number; - - @PrimaryColumn() - accountAddress: string; - - // Nullable for backward compatability - to not cause not null constraint failure on migration. - @Column({ nullable: true }) - blockId: string = "NULL"; - - @Column() - publicKey: string; - - @Column({ nullable: true }) - privateKey: string; - - @Column() - signAlgo: SignatureAlgorithm; - - @Column() - hashAlgo: HashAlgorithm; - - @Column() - weight: number; - - @Column() - sequenceNumber: number; - - @Column() - revoked: boolean; - - @ManyToOne(() => AccountEntity, (account) => account.storage) - account?: AccountEntity; - - // Entities are also automatically initialized by TypeORM. - // In those cases no constructor arguments are provided. - constructor(args: AccountKeyEntityInitArgs | undefined) { - super(); - this.index = args?.index ?? -1; - this.accountAddress = args?.accountAddress ?? ""; - this.blockId = args?.blockId ?? ""; - this.publicKey = args?.publicKey ?? ""; - this.privateKey = args?.privateKey ?? ""; - this.signAlgo = - args?.signAlgo ?? SignatureAlgorithm.SIGNATURE_ALGORITHM_UNSPECIFIED; - this.hashAlgo = args?.hashAlgo ?? HashAlgorithm.HASH_ALGORITHM_UNSPECIFIED; - this.weight = args?.weight ?? -1; - this.sequenceNumber = args?.sequenceNumber ?? -1; - this.revoked = args?.revoked ?? false; - if (args?.account) { - this.account = args.account; - } - } - - /** - * Creates a key with default values (where applicable). - * It doesn't pre-set the values that should be provided. - */ - static createDefault(): AccountKeyEntity { - return new AccountKeyEntity({ - // https://developers.flow.com/tooling/flow-cli/accounts/create-accounts#public-key-signature-algorithm - signAlgo: SignatureAlgorithm.ECDSA_P256, - // Which has algorithm is actually used here by default? - // Flow CLI doesn't support the option to specify it as an argument, - // nor does it return this info when generating the key. - hashAlgo: HashAlgorithm.SHA3_256, - weight: defaultKeyWeight, - sequenceNumber: 0, - revoked: false, - account: undefined, - accountAddress: "", - blockId: "", - index: 0, - privateKey: "", - publicKey: "", - }); - } - - toProto(): AccountKey { - return { - index: this.index, - accountAddress: this.accountAddress, - publicKey: this.publicKey, - privateKey: this.privateKey ?? "", - signAlgo: this.signAlgo, - hashAlgo: this.hashAlgo, - weight: this.weight, - sequenceNumber: this.sequenceNumber, - revoked: this.revoked, - createdAt: this.createdAt.toISOString(), - updatedAt: this.updatedAt.toISOString(), - }; - } -} diff --git a/backend/src/accounts/entities/storage-item.entity.ts b/backend/src/accounts/entities/storage-item.entity.ts deleted file mode 100644 index ec956c646..000000000 --- a/backend/src/accounts/entities/storage-item.entity.ts +++ /dev/null @@ -1,82 +0,0 @@ -import { Column, Entity, ManyToOne, PrimaryColumn } from "typeorm"; -import { AccountEntity } from "./account.entity"; -import { AccountStorageDomain, AccountStorageItem } from "@flowser/shared"; -import { PollingEntity } from "../../core/entities/polling.entity"; -import { PollingEntityInitArguments } from "../../utils/type-utils"; - -type AccountStorageItemEntityInitArgs = Omit< - PollingEntityInitArguments, - "_id" | "id" ->; - -@Entity({ name: "storage" }) -export class AccountStorageItemEntity extends PollingEntity { - // This is a deprecated column, but removing it would cause a database migration error. - // To completely remove this we would need to write a manual migration script. - @PrimaryColumn({ name: "id" }) - _id: string = ""; - - @PrimaryColumn({ name: "pathIdentifier" }) - path: string; - - @PrimaryColumn() - pathDomain: AccountStorageDomain; - - @PrimaryColumn() - accountAddress: string; - - @Column({ type: "text", nullable: true }) - targetPath: string | null; - - @Column("simple-json") - data: any; - - @ManyToOne(() => AccountEntity, (account) => account.storage) - account?: AccountEntity; - - // Entities are also automatically initialized by TypeORM. - // In those cases no constructor arguments are provided. - constructor(args: AccountStorageItemEntityInitArgs) { - super(); - this.path = args?.path ?? ""; - this.targetPath = args?.targetPath ?? ""; - this.pathDomain = - args?.pathDomain ?? AccountStorageDomain.STORAGE_DOMAIN_UNKNOWN; - this.accountAddress = args?.accountAddress ?? ""; - this.data = args?.data ?? {}; - if (args?.account) { - this.account = args.account; - } - } - - get id() { - return `${this.accountAddress}/${this.getLowerCasedPathDomain()}/${ - this.path - }`; - } - - toProto(): AccountStorageItem { - return { - id: this.id, - path: this.path, - pathDomain: this.pathDomain, - targetPath: this.targetPath ?? "", - data: this.data, - createdAt: this.createdAt.toISOString(), - updatedAt: this.updatedAt.toISOString(), - }; - } - - getLowerCasedPathDomain() { - switch (this.pathDomain) { - case AccountStorageDomain.STORAGE_DOMAIN_PUBLIC: - return "public"; - case AccountStorageDomain.STORAGE_DOMAIN_PRIVATE: - return "private"; - case AccountStorageDomain.STORAGE_DOMAIN_STORAGE: - return "storage"; - default: - return "unknown"; - } - } -} diff --git a/backend/src/accounts/services/accounts.service.ts b/backend/src/accounts/services/accounts.service.ts deleted file mode 100644 index 889918b4a..000000000 --- a/backend/src/accounts/services/accounts.service.ts +++ /dev/null @@ -1,83 +0,0 @@ -import { Injectable } from "@nestjs/common"; -import { InjectRepository } from "@nestjs/typeorm"; -import { AccountEntity } from "../entities/account.entity"; -import { MoreThan, Repository } from "typeorm"; -import { removeByBlockIds } from "../../blocks/entities/block-context.entity"; - -type PartialAccountWithPrimaryKey = Pick & - Partial; - -@Injectable() -export class AccountsService { - constructor( - @InjectRepository(AccountEntity) - private accountRepository: Repository - ) {} - - findAll() { - return this.accountRepository.find({ - order: { createdAt: "DESC", updatedAt: "DESC" }, - }); - } - - async findAllAddresses() { - const result = await this.accountRepository - .createQueryBuilder() - .select("address") - .getRawMany(); - return result.map((result) => result.address) as string[]; - } - - findAllNewerThanTimestamp(timestamp: Date): Promise { - return this.accountRepository.find({ - where: [ - { updatedAt: MoreThan(timestamp) }, - { createdAt: MoreThan(timestamp) }, - ], - order: { - createdAt: "DESC", - }, - }); - } - - async findOneWithRelationsByAddress(address: string) { - return this.accountRepository.findOneOrFail({ - where: { address }, - relations: ["keys", "storage", "contracts", "transactions"], - }); - } - - async findOneByAddress(address: string) { - return this.accountRepository.findOneOrFail({ - where: { address }, - }); - } - - async upsert(accountToUpsert: PartialAccountWithPrimaryKey) { - const existingAccount = await this.accountRepository.findOneBy({ - address: accountToUpsert.address, - }); - return this.accountRepository.upsert( - { ...(existingAccount ?? {}), ...accountToUpsert }, - ["address"] - ); - } - - async markUpdated(address: string) { - return this.accountRepository.update( - { address }, - { updatedAt: new Date() } - ); - } - - removeAll() { - return this.accountRepository.delete({}); - } - - removeByBlockIds(blockIds: string[]) { - return removeByBlockIds({ - blockIds, - repository: this.accountRepository, - }); - } -} diff --git a/backend/src/accounts/services/contracts.service.ts b/backend/src/accounts/services/contracts.service.ts deleted file mode 100644 index 1fd24bc5f..000000000 --- a/backend/src/accounts/services/contracts.service.ts +++ /dev/null @@ -1,116 +0,0 @@ -import { Injectable } from "@nestjs/common"; -import { InjectRepository } from "@nestjs/typeorm"; -import { MoreThan, Repository } from "typeorm"; -import { AccountContractEntity } from "../entities/contract.entity"; -import { - computeEntitiesDiff, - processEntitiesDiff, -} from "../../utils/common-utils"; -import { removeByBlockIds } from "../../blocks/entities/block-context.entity"; - -@Injectable() -export class ContractsService { - constructor( - @InjectRepository(AccountContractEntity) - private contractRepository: Repository - ) {} - - async findAll() { - return this.contractRepository.find({ - order: { createdAt: "DESC" }, - }); - } - - async findAllNewerThanTimestamp( - timestamp: Date - ): Promise { - return this.contractRepository.find({ - where: [ - { updatedAt: MoreThan(timestamp) }, - { createdAt: MoreThan(timestamp) }, - ], - order: { createdAt: "DESC" }, - }); - } - - async findAllNewerThanTimestampByAccount( - accountAddress: string, - timestamp: Date - ) { - return this.contractRepository.find({ - where: [ - { updatedAt: MoreThan(timestamp), accountAddress }, - { createdAt: MoreThan(timestamp), accountAddress }, - ], - order: { createdAt: "DESC" }, - }); - } - - async getContractsByAccountAddress(address: string) { - return this.contractRepository - .createQueryBuilder("contract") - .where("contract.accountAddress = :accountAddress", { - accountAddress: address, - }) - .getMany(); - } - - async findOne(id: string) { - const { accountAddress, name } = AccountContractEntity.decodeId(id); - return this.contractRepository.findOneByOrFail({ - accountAddress, - name, - }); - } - - async update(contract: AccountContractEntity) { - contract.markUpdated(); - return this.contractRepository.update( - { accountAddress: contract.accountAddress, name: contract.name }, - // Prevent overwriting existing created date - { ...contract, createdAt: undefined } - ); - } - - async updateAccountContracts( - accountAddress: string, - newContracts: AccountContractEntity[] - ) { - const oldContracts = await this.getContractsByAccountAddress( - accountAddress - ); - const contractsDiff = computeEntitiesDiff({ - primaryKey: ["accountAddress", "name"], - oldEntities: oldContracts, - newEntities: newContracts, - }); - return processEntitiesDiff({ - create: (e) => this.create(e), - update: (e) => this.update(e), - delete: (e) => this.delete(e.accountAddress, e.name), - diff: contractsDiff, - }); - } - - async create(contract: AccountContractEntity) { - return this.contractRepository.insert(contract); - } - - async delete(accountAddress: string, contractName: string) { - return this.contractRepository.delete({ - accountAddress, - name: contractName, - }); - } - - removeAll() { - return this.contractRepository.delete({}); - } - - removeByBlockIds(blockIds: string[]) { - return removeByBlockIds({ - blockIds, - repository: this.contractRepository, - }); - } -} diff --git a/backend/src/accounts/services/keys.service.ts b/backend/src/accounts/services/keys.service.ts deleted file mode 100644 index c089dc111..000000000 --- a/backend/src/accounts/services/keys.service.ts +++ /dev/null @@ -1,96 +0,0 @@ -import { Injectable } from "@nestjs/common"; -import { InjectRepository } from "@nestjs/typeorm"; -import { AccountKeyEntity } from "../entities/key.entity"; -import { MoreThan, Repository } from "typeorm"; -import { - computeEntitiesDiff, - processEntitiesDiff, -} from "../../utils/common-utils"; -import { removeByBlockIds } from "../../blocks/entities/block-context.entity"; - -@Injectable() -export class KeysService { - constructor( - @InjectRepository(AccountKeyEntity) - private keyRepository: Repository - ) {} - - async updateAccountKeys(address: string, newKeys: AccountKeyEntity[]) { - const oldKeys = await this.findKeysByAccount(address); - const entitiesDiff = computeEntitiesDiff({ - primaryKey: ["accountAddress", "index"], - newEntities: newKeys, - oldEntities: oldKeys, - }); - return processEntitiesDiff({ - create: (e) => this.create(e), - update: (e) => this.update(e), - delete: (e) => this.delete(e.accountAddress, e.index), - diff: entitiesDiff, - }); - } - - async findAllNewerThanTimestampByAccount( - accountAddress: string, - timestamp: Date - ) { - return this.keyRepository.find({ - where: [ - { updatedAt: MoreThan(timestamp), accountAddress }, - { createdAt: MoreThan(timestamp), accountAddress }, - ], - order: { createdAt: "DESC" }, - }); - } - - async findKeysByAccount(address: string) { - return this.keyRepository.find({ - where: { accountAddress: address }, - }); - } - - async delete(accountAddress: string, keyIndex: number) { - return this.keyRepository.delete({ - accountAddress, - index: keyIndex, - }); - } - - async create(createdKey: AccountKeyEntity) { - return this.keyRepository.insert(createdKey); - } - - async update(updatedKey: AccountKeyEntity) { - const existingKey = await this.keyRepository.findOneBy({ - accountAddress: updatedKey.accountAddress, - index: updatedKey.index, - }); - updatedKey.markUpdated(); - return this.keyRepository.update( - { - accountAddress: updatedKey.accountAddress, - index: updatedKey.index, - }, - { - ...updatedKey, - // Don't override the exiting private key with an empty one. - privateKey: updatedKey.privateKey - ? updatedKey.privateKey - : existingKey?.privateKey, - // Make sure to keep the original created date. - createdAt: existingKey?.createdAt ?? updatedKey.createdAt, - } - ); - } - - removeAll() { - return this.keyRepository.delete({}); - } - - removeByBlockIds(blockIds: string[]) { - return removeByBlockIds({ - blockIds, - repository: this.keyRepository, - }); - } -} diff --git a/backend/src/accounts/services/storage.service.ts b/backend/src/accounts/services/storage.service.ts deleted file mode 100644 index b97c1d3aa..000000000 --- a/backend/src/accounts/services/storage.service.ts +++ /dev/null @@ -1,84 +0,0 @@ -import { Injectable } from "@nestjs/common"; -import { AccountStorageItemEntity } from "../entities/storage-item.entity"; -import { InjectRepository } from "@nestjs/typeorm"; -import { MoreThan, Repository } from "typeorm"; -import { - computeEntitiesDiff, - ensurePrefixedAddress, - processEntitiesDiff, -} from "../../utils/common-utils"; - -@Injectable() -export class AccountStorageService { - constructor( - @InjectRepository(AccountStorageItemEntity) - private storageRepository: Repository - ) {} - - async findAllNewerThanTimestampByAccount( - accountAddress: string, - timestamp: Date - ) { - return this.storageRepository.find({ - where: [ - { updatedAt: MoreThan(timestamp), accountAddress }, - { createdAt: MoreThan(timestamp), accountAddress }, - ], - order: { createdAt: "DESC" }, - }); - } - - async findStorageByAccount(address: string) { - return this.storageRepository.find({ - where: { accountAddress: ensurePrefixedAddress(address) }, - }); - } - - async updateAccountStorage( - address: string, - newStorageItems: AccountStorageItemEntity[] - ) { - const oldStorageItems = await this.findStorageByAccount(address); - const entitiesDiff = computeEntitiesDiff({ - primaryKey: ["path", "pathDomain", "accountAddress"], - newEntities: newStorageItems, - oldEntities: oldStorageItems, - deepCompare: true, - }); - return processEntitiesDiff({ - create: (e) => this.create(e), - update: (e) => this.update(e), - delete: (e) => this.delete(e), - diff: entitiesDiff, - }); - } - - async create(accountStorage: AccountStorageItemEntity) { - return this.storageRepository.insert(accountStorage); - } - - async update(accountStorage: AccountStorageItemEntity) { - accountStorage.markUpdated(); - return this.storageRepository.update( - { - path: accountStorage.path, - pathDomain: accountStorage.pathDomain, - accountAddress: accountStorage.accountAddress, - }, - // Prevent overwriting existing created date - { ...accountStorage, createdAt: undefined } - ); - } - - async delete(accountStorage: AccountStorageItemEntity) { - return this.storageRepository.delete({ - path: accountStorage.path, - pathDomain: accountStorage.pathDomain, - accountAddress: accountStorage.accountAddress, - }); - } - - async removeAll() { - return this.storageRepository.delete({}); - } -} diff --git a/backend/src/app.controller.ts b/backend/src/app.controller.ts deleted file mode 100644 index 7bc44930a..000000000 --- a/backend/src/app.controller.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { Controller, Get } from "@nestjs/common"; -import { AppService } from "./app.service"; -import { GetFlowserVersionResponse } from "@flowser/shared"; - -@Controller() -export class AppController { - constructor(private readonly appService: AppService) {} - - @Get("version") - getVersion() { - const version = this.appService.flowserVersion(); - return GetFlowserVersionResponse.fromJSON(version); - } -} diff --git a/backend/src/app.module.ts b/backend/src/app.module.ts deleted file mode 100644 index 79b767205..000000000 --- a/backend/src/app.module.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { Global, Module } from "@nestjs/common"; -import { ConfigModule } from "@nestjs/config"; -import { TypeOrmModule } from "@nestjs/typeorm"; -import { ScheduleModule } from "@nestjs/schedule"; - -import { AppController } from "./app.controller"; -import { AppService } from "./app.service"; -import { ProjectsModule } from "./projects/projects.module"; -import { AccountsModule } from "./accounts/accounts.module"; -import { BlocksModule } from "./blocks/blocks.module"; -import { TransactionsModule } from "./transactions/transactions.module"; -import { EventsModule } from "./events/events.module"; -import { FlowModule } from "./flow/flow.module"; -import { CoreModule } from "./core/core.module"; -import { getDatabaseOptions } from "./database"; -import { ProcessesModule } from "./processes/processes.module"; -import { ServeStaticModule } from "@nestjs/serve-static"; -import { join } from "path"; -import { WalletModule } from "./wallet/wallet.module"; -import { DataProcessingModule } from "./data-processing/data-processing.module"; -import { GoBindingsModule } from "./go-bindings/go-bindings.module"; - -@Global() -@Module({ - providers: [AppService], - imports: [ - ServeStaticModule.forRoot({ - rootPath: join(__dirname, "static"), - }), - ConfigModule.forRoot(), - TypeOrmModule.forRootAsync({ useFactory: getDatabaseOptions }), - ScheduleModule.forRoot(), - ProjectsModule, - AccountsModule, - BlocksModule, - TransactionsModule, - EventsModule, - FlowModule, - CoreModule, - ProcessesModule, - WalletModule, - DataProcessingModule, - GoBindingsModule, - ], - controllers: [AppController], -}) -export class AppModule {} diff --git a/backend/src/app.service.ts b/backend/src/app.service.ts deleted file mode 100644 index 5b43410bd..000000000 --- a/backend/src/app.service.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Injectable } from "@nestjs/common"; -const packageJsonFile = require("../package.json"); - -@Injectable() -export class AppService { - flowserVersion() { - return { - version: `v${packageJsonFile.version}`, - }; - } -} diff --git a/backend/src/blocks/blocks.controller.ts b/backend/src/blocks/blocks.controller.ts deleted file mode 100644 index 2e4ec121e..000000000 --- a/backend/src/blocks/blocks.controller.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { - Body, - Controller, - Get, - Param, - Post, - UseInterceptors, -} from "@nestjs/common"; -import { BlocksService } from "./blocks.service"; -import { PollingResponseInterceptor } from "../core/interceptors/polling-response.interceptor"; -import { ApiParam } from "@nestjs/swagger"; -import { - GetAllBlocksResponse, - GetPollingBlocksRequest, - GetPollingBlocksResponse, - GetSingleBlockResponse, -} from "@flowser/shared"; - -@Controller("blocks") -export class BlocksController { - constructor(private readonly blocksService: BlocksService) {} - - @Get() - async findAll() { - const blocks = await this.blocksService.findAll(); - return GetAllBlocksResponse.toJSON({ - blocks: blocks.map((block) => block.toProto()), - }); - } - - @Post("/polling") - @UseInterceptors(new PollingResponseInterceptor(GetPollingBlocksResponse)) - async findAllNew(@Body() data: unknown) { - const request = GetPollingBlocksRequest.fromJSON(data); - const blocks = await this.blocksService.findAllNewerThanTimestamp( - new Date(request.timestamp) - ); - return blocks.map((block) => block.toProto()); - } - - @ApiParam({ name: "id", type: String }) - @Get(":id") - async findOne(@Param("id") id: string) { - const block = await this.blocksService.findOne(id); - return GetSingleBlockResponse.toJSON({ - block: block.toProto(), - }); - } -} diff --git a/backend/src/blocks/blocks.module.ts b/backend/src/blocks/blocks.module.ts deleted file mode 100644 index e91a7cfbb..000000000 --- a/backend/src/blocks/blocks.module.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { Module } from "@nestjs/common"; -import { BlocksService } from "./blocks.service"; -import { BlocksController } from "./blocks.controller"; -import { TypeOrmModule } from "@nestjs/typeorm"; -import { BlockEntity } from "./entities/block.entity"; - -@Module({ - imports: [TypeOrmModule.forFeature([BlockEntity])], - controllers: [BlocksController], - providers: [BlocksService], - exports: [BlocksService], -}) -export class BlocksModule {} diff --git a/backend/src/blocks/blocks.service.ts b/backend/src/blocks/blocks.service.ts deleted file mode 100644 index aef19ae27..000000000 --- a/backend/src/blocks/blocks.service.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { InjectRepository } from "@nestjs/typeorm"; -import { MoreThan, Repository, Any } from "typeorm"; -import { BlockEntity } from "./entities/block.entity"; -import { removeByBlockIds } from "./entities/block-context.entity"; - -export class BlocksService { - constructor( - @InjectRepository(BlockEntity) - private blockRepository: Repository - ) {} - - async create(block: BlockEntity): Promise { - return this.blockRepository.save(block); - } - - findAll(): Promise { - return this.blockRepository.find(); - } - - findAllNewerThanTimestamp(timestamp: Date): Promise { - return this.blockRepository.find({ - where: [ - { createdAt: MoreThan(timestamp) }, - { updatedAt: MoreThan(timestamp) }, - ], - order: { blockHeight: "DESC" }, - }); - } - - findLastBlock(): Promise { - return this.blockRepository - .createQueryBuilder("block") - .select() - .orderBy("block.blockHeight", "DESC") - .limit(1) - .getOne(); - } - - async findOne(blockId: string) { - return this.blockRepository.findOneByOrFail({ blockId }); - } - - removeAll() { - return this.blockRepository.delete({}); - } - - removeByBlockIds(blockIds: string[]) { - return removeByBlockIds({ - blockIds, - repository: this.blockRepository, - }); - } -} diff --git a/backend/src/blocks/entities/block-context.entity.ts b/backend/src/blocks/entities/block-context.entity.ts deleted file mode 100644 index 020c8e343..000000000 --- a/backend/src/blocks/entities/block-context.entity.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { Repository } from "typeorm"; - -// Should be implemented by entities that are tied to a specific block. -export interface BlockContextEntity { - blockId: string; -} - -export async function removeByBlockIds(options: { - blockIds: string[]; - repository: Repository; -}) { - const { blockIds, repository } = options; - - return repository - .createQueryBuilder() - .delete() - .where(`blockId IN (${blockIds.map((id) => `'${id}'`).join(", ")})`) - .execute(); -} - -export function implementsBlockContext( - object: unknown -): object is BlockContextEntity { - return typeof object === "object" && object !== null && "blockId" in object; -} diff --git a/backend/src/blocks/entities/block.entity.ts b/backend/src/blocks/entities/block.entity.ts deleted file mode 100644 index c6fe9ebdd..000000000 --- a/backend/src/blocks/entities/block.entity.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { Column, Entity, PrimaryColumn } from "typeorm"; -import { PollingEntity } from "../../core/entities/polling.entity"; -import { Block, CollectionGuarantee } from "@flowser/shared"; -import { typeOrmProtobufTransformer } from "../../utils/common-utils"; -import { BlockContextEntity } from "./block-context.entity"; -import { PollingEntityInitArguments } from "../../utils/type-utils"; - -type BlockEntityInitArgs = PollingEntityInitArguments; - -@Entity({ name: "blocks" }) -export class BlockEntity extends PollingEntity implements BlockContextEntity { - // Use the old name for database column for backward compatability. - @PrimaryColumn({ name: "id" }) - blockId: string; - - @Column() - parentId: string; - - @Column() - blockHeight: number; - - @Column("datetime") - timestamp: Date; - - @Column("simple-json", { - transformer: typeOrmProtobufTransformer(CollectionGuarantee), - }) - collectionGuarantees: CollectionGuarantee[]; - - // TODO(milestone-x): Define type (Note: we aren't showing blockSeals anywhere) - @Column("simple-json") - blockSeals: any[]; - - @Column("simple-array") - signatures: string[]; - - // Entities are also automatically initialized by TypeORM. - // In those cases no constructor arguments are provided. - constructor(args: BlockEntityInitArgs | undefined) { - super(); - this.blockId = args?.blockId ?? ""; - this.parentId = args?.parentId ?? ""; - this.blockHeight = args?.blockHeight ?? -1; - this.timestamp = args?.timestamp ?? new Date(); - this.collectionGuarantees = args?.collectionGuarantees ?? []; - this.blockSeals = args?.blockSeals ?? []; - this.signatures = args?.signatures ?? []; - } - - toProto(): Block { - return { - id: this.blockId, - parentId: this.parentId, - height: this.blockHeight, - timestamp: this.timestamp.toISOString(), - blockSeals: this.blockSeals, - signatures: this.signatures, - collectionGuarantees: this.collectionGuarantees, - createdAt: this.createdAt.toISOString(), - updatedAt: this.updatedAt.toISOString(), - }; - } -} diff --git a/backend/src/core/core.module.ts b/backend/src/core/core.module.ts deleted file mode 100644 index 3a046c10b..000000000 --- a/backend/src/core/core.module.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { Module } from "@nestjs/common"; -import { CacheRemovalService } from "./services/cache-removal.service"; -import { AccountsModule } from "../accounts/accounts.module"; -import { BlocksModule } from "../blocks/blocks.module"; -import { TransactionsModule } from "../transactions/transactions.module"; -import { EventsModule } from "../events/events.module"; - -@Module({ - imports: [ - AccountsModule, - BlocksModule, - TransactionsModule, - EventsModule, - CoreModule, - ], - providers: [CacheRemovalService], - exports: [CacheRemovalService], -}) -export class CoreModule {} diff --git a/backend/src/core/entities/polling.entity.ts b/backend/src/core/entities/polling.entity.ts deleted file mode 100644 index 24baab3a1..000000000 --- a/backend/src/core/entities/polling.entity.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { Column, Entity } from "typeorm"; - -@Entity() -export class PollingEntity { - @Column("datetime") - createdAt = new Date(); - - @Column("datetime") - updatedAt = new Date(); - - public markUpdated() { - this.updatedAt = new Date(); - } -} diff --git a/backend/src/core/filters/http-exception.filter.ts b/backend/src/core/filters/http-exception.filter.ts deleted file mode 100644 index 0e0cb4ebb..000000000 --- a/backend/src/core/filters/http-exception.filter.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { - ArgumentsHost, - Catch, - ExceptionFilter, - HttpException, -} from "@nestjs/common"; -import { Response } from "express"; -import { ErrorResponse, FlowserError } from "@flowser/shared"; - -@Catch(HttpException) -export class HttpExceptionFilter implements ExceptionFilter { - catch(exception: HttpException, host: ArgumentsHost) { - const ctx = host.switchToHttp(); - const response = ctx.getResponse(); - const status = exception.getStatus(); - - response.status(status).json( - ErrorResponse.toJSON({ - error: getFlowserError(exception), - }) - ); - } -} - -function getFlowserError(exception: HttpException): FlowserError { - return { - name: exception.name, - message: exception.message, - description: getDescription(exception), - }; -} - -function getDescription(exception: HttpException): string { - const response = exception.getResponse() as string | Record; - - if (typeof response === "object" && "error" in response) { - return response.error; - } - - if (typeof response === "string") { - return response; - } - - return ""; -} diff --git a/backend/src/core/interceptors/polling-response.interceptor.ts b/backend/src/core/interceptors/polling-response.interceptor.ts deleted file mode 100644 index 1d52a28ab..000000000 --- a/backend/src/core/interceptors/polling-response.interceptor.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { - CallHandler, - ExecutionContext, - Injectable, - NestInterceptor, -} from "@nestjs/common"; -import { Observable } from "rxjs"; -import { map } from "rxjs/operators"; -import { PollingResponse, PollingEntity } from "@flowser/shared"; - -interface ProtoSerializer { - toJSON: (message: any) => unknown; - fromPartial: (message: any) => PollingResponse; -} - -@Injectable() -export class PollingResponseInterceptor - implements NestInterceptor -{ - constructor(private readonly serializer: ProtoSerializer) {} - - intercept( - context: ExecutionContext, - next: CallHandler - ): Observable { - return next.handle().pipe( - map((data): unknown => - this.serializer.toJSON( - this.serializer.fromPartial({ - data, - meta: { - latestTimestamp: findLatestTimestamp(data), - }, - }) - ) - ) - ); - } -} - -function findLatestTimestamp(data: T) { - let latestTimestamp = 0; - if (Array.isArray(data)) { - const latestTimestampCreated = data.reduce( - (latest, item) => - getUnixTime(item.createdAt) > latest - ? getUnixTime(item.createdAt) - : latest, - 0 - ); - const latestTimestampUpdated = data.reduce( - (latest, item) => - getUnixTime(item.updatedAt) > latest - ? getUnixTime(item.updatedAt) - : latest, - 0 - ); - latestTimestamp = - latestTimestampUpdated > latestTimestampCreated - ? latestTimestampUpdated - : latestTimestampCreated; - } - return latestTimestamp; -} - -function getUnixTime(date: string): number { - return new Date(date).getTime(); -} diff --git a/backend/src/core/services/cache-removal.service.ts b/backend/src/core/services/cache-removal.service.ts deleted file mode 100644 index d0ab1a178..000000000 --- a/backend/src/core/services/cache-removal.service.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { Injectable, Logger } from "@nestjs/common"; -import { ContractsService } from "../../accounts/services/contracts.service"; -import { AccountsService } from "../../accounts/services/accounts.service"; -import { TransactionsService } from "../../transactions/transactions.service"; -import { BlocksService } from "../../blocks/blocks.service"; -import { EventsService } from "../../events/events.service"; -import { KeysService } from "../../accounts/services/keys.service"; -import { AccountStorageService } from "../../accounts/services/storage.service"; - -/** - * Our Sqlite database acts as a cache for blockchain related data, - * which is project-based and should be revalidated (repopulated) in some cases. - * - * In the future we could avoid this pattern, by implementing multi-tenancy: - * https://www.notion.so/flowser/Multitenant-architecture-9bbc3053cade47f2bf1867626a54e074?pvs=4 - */ -@Injectable() -export class CacheRemovalService { - private readonly logger = new Logger(CacheRemovalService.name); - constructor( - private contractsService: ContractsService, - private accountsService: AccountsService, - private blocksService: BlocksService, - private transactionsService: TransactionsService, - private eventsService: EventsService, - private accountKeysService: KeysService, - private accountStorageService: AccountStorageService - ) {} - - async removeAll() { - try { - // Remove contracts before removing accounts, because of the foreign key constraint. - await Promise.all([ - this.contractsService.removeAll(), - this.accountKeysService.removeAll(), - this.accountStorageService.removeAll(), - this.transactionsService.removeAll(), - this.eventsService.removeAll(), - ]); - await Promise.all([ - this.accountsService.removeAll(), - this.blocksService.removeAll(), - ]); - } catch (e) { - this.logger.error("Failed to remove cached data", e); - throw e; - } - } - - async removeByBlockIds(blockIds: string[]) { - try { - // Remove contracts before removing accounts, because of the foreign key constraint. - await Promise.all([ - this.contractsService.removeByBlockIds(blockIds), - this.accountKeysService.removeByBlockIds(blockIds), - this.accountStorageService.removeAll(), - this.transactionsService.removeByBlockIds(blockIds), - this.eventsService.removeByBlockIds(blockIds), - ]); - await Promise.all([ - this.accountsService.removeByBlockIds(blockIds), - this.blocksService.removeByBlockIds(blockIds), - ]); - } catch (e) { - this.logger.error("Failed to remove cached data", e); - throw e; - } - } -} diff --git a/backend/src/core/services/config.service.ts b/backend/src/core/services/config.service.ts deleted file mode 100644 index b81121d1e..000000000 --- a/backend/src/core/services/config.service.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { cleanEnv, str, num } from "envalid"; -import { - InternalServerErrorException, - NestApplicationOptions, -} from "@nestjs/common"; - -export type DatabaseConfig = { - type: "mysql" | "mariadb" | "sqlite"; - name: string; - // Below options are required if using mysql or mariadb database - port?: number; - host?: string; - username?: string; - password?: string; -}; - -export type CommonConfig = { - httpServerPort: number; -}; - -export type Config = { - common: CommonConfig; - database: DatabaseConfig; -}; - -export class ConfigService { - private static config: Config; - - public static getConfig(): Config { - if (!this.config) { - throw new InternalServerErrorException("Config service not initialised"); - } - return this.config; - } - - public static setConfiguration(config: Config) { - this.config = config; - } - - public static readFromEnv(): Config { - const env = cleanEnv(process.env, { - DATABASE_TYPE: str({ - default: "sqlite", - choices: ["mysql", "mariadb", "sqlite"], - }), - DATABASE_NAME: str({ default: "database.sqlite" }), - DATABASE_HOST: str({ default: "localhost" }), - DATABASE_PORT: num({ default: 3306 }), - DATABASE_USERNAME: str({ default: "" }), - DATABASE_PASSWORD: str({ default: "" }), - - HTTP_PORT: num({ default: 6061 }), - }); - return { - database: { - type: env.DATABASE_TYPE, - name: env.DATABASE_NAME, - host: env.DATABASE_NAME, - port: env.DATABASE_PORT, - username: env.DATABASE_USERNAME, - password: env.DATABASE_PASSWORD, - }, - common: { - httpServerPort: env.HTTP_PORT, - }, - }; - } -} diff --git a/backend/src/data-processing/data-processing.module.ts b/backend/src/data-processing/data-processing.module.ts deleted file mode 100644 index a0c6d2f90..000000000 --- a/backend/src/data-processing/data-processing.module.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { Module } from "@nestjs/common"; -import { BlocksModule } from "../blocks/blocks.module"; -import { AccountsModule } from "../accounts/accounts.module"; -import { EventsModule } from "../events/events.module"; -import { TransactionsModule } from "../transactions/transactions.module"; -import { CoreModule } from "../core/core.module"; -import { IndexerService } from "@onflowser/indexer/src/indexer.service"; -import { FlowModule } from "../flow/flow.module"; -import { ProcessesModule } from "../processes/processes.module"; -import { WalletModule } from "../wallet/wallet.module"; -import { GoBindingsModule } from "../go-bindings/go-bindings.module"; - -@Module({ - imports: [ - BlocksModule, - AccountsModule, - BlocksModule, - EventsModule, - FlowModule, - TransactionsModule, - CoreModule, - ProcessesModule, - WalletModule, - GoBindingsModule, - ], - providers: [IndexerService], - exports: [IndexerService], -}) -export class DataProcessingModule {} diff --git a/backend/src/database.ts b/backend/src/database.ts deleted file mode 100644 index beb676c7a..000000000 --- a/backend/src/database.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { SqliteConnectionOptions } from "typeorm/driver/sqlite/SqliteConnectionOptions"; -import { DataSource, DataSourceOptions } from "typeorm"; -import { ConfigService } from "./core/services/config.service"; - -export function getDatabaseOptions(): DataSourceOptions { - const { database } = ConfigService.getConfig(); - const commonOptions = { - autoLoadEntities: true, - synchronize: true, - }; - switch (database.type) { - case "sqlite": - return { - type: "sqlite", - database: database.name, - ...commonOptions, - } as SqliteConnectionOptions; - case "mysql": - return { - type: database.type, - host: database.host, - port: database.port, - username: database.username, - password: database.password, - database: database.name, - timezone: "Z", - ...commonOptions, - }; - default: - throw new Error(`Database type ${database.type} not supported`); - } -} - -// TODO: reuse the existing instance created by @nestjs/typeorm -let dataSourceInstance: DataSource; -export async function getDataSourceInstance() { - if (!dataSourceInstance) { - dataSourceInstance = new DataSource(getDatabaseOptions()); - } - if (!dataSourceInstance.isInitialized) { - await dataSourceInstance.initialize(); - } - return dataSourceInstance; -} diff --git a/backend/src/docs.ts b/backend/src/docs.ts deleted file mode 100644 index 78adae753..000000000 --- a/backend/src/docs.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { writeFile } from "fs"; -import { INestApplication } from "@nestjs/common"; -import { DocumentBuilder, SwaggerModule } from "@nestjs/swagger"; -import { createApp } from "./index"; -import { ConfigService } from "./core/services/config.service"; -const packageJson = require("../package.json"); - -export function getOpenApiDocument(app: INestApplication) { - const config = new DocumentBuilder() - .setTitle("Flowser") - .setDescription("The Flowser API description") - .setVersion(packageJson.version) - .build(); - return SwaggerModule.createDocument(app, config); -} - -async function generateDocs() { - const app = await createApp({ - config: ConfigService.readFromEnv(), - }); - - const document = getOpenApiDocument(app); - writeFile("openapi.json", JSON.stringify(document, null, 4), () => - console.log("Generated openapi.json file in project root.") - ); -} diff --git a/backend/src/events/event.entity.ts b/backend/src/events/event.entity.ts deleted file mode 100644 index 862ff87f6..000000000 --- a/backend/src/events/event.entity.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { PollingEntity } from "../core/entities/polling.entity"; -import { Column, Entity, PrimaryColumn } from "typeorm"; -import { Event } from "@flowser/shared"; -import { BlockContextEntity } from "../blocks/entities/block-context.entity"; -import { PollingEntityInitArguments } from "../utils/type-utils"; - -type EventEntityInitArgs = Omit, "id">; - -@Entity({ name: "events" }) -export class EventEntity extends PollingEntity implements BlockContextEntity { - @PrimaryColumn() - transactionId: string; - - @PrimaryColumn() - blockId: string; - - @PrimaryColumn() - eventIndex: number; - - @Column() - type: string; - - @Column() - transactionIndex: number; - - @Column("simple-json") - data: object; - - // Entities are also automatically initialized by TypeORM. - // In those cases no constructor arguments are provided. - constructor(args: EventEntityInitArgs | undefined) { - super(); - this.transactionId = args?.transactionId ?? ""; - this.blockId = args?.blockId ?? ""; - this.eventIndex = args?.eventIndex ?? -1; - this.type = args?.type ?? ""; - this.transactionIndex = args?.transactionIndex ?? -1; - this.data = args?.data ?? {}; - } - - get id() { - return `${this.transactionId}.${this.eventIndex}`; - } - - toProto(): Event { - return { - id: this.id, - transactionId: this.transactionId, - blockId: this.blockId, - eventIndex: this.eventIndex, - type: this.type, - transactionIndex: this.transactionIndex, - data: this.data, - createdAt: this.createdAt.toISOString(), - updatedAt: this.updatedAt.toISOString(), - }; - } -} diff --git a/backend/src/events/events.controller.ts b/backend/src/events/events.controller.ts deleted file mode 100644 index b14059882..000000000 --- a/backend/src/events/events.controller.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { - Controller, - Get, - Param, - UseInterceptors, - Body, - Post, -} from "@nestjs/common"; -import { EventsService } from "./events.service"; -import { PollingResponseInterceptor } from "../core/interceptors/polling-response.interceptor"; -import { ApiParam } from "@nestjs/swagger"; -import { - GetAllEventsResponse, - GetPollingEventsRequest, - GetPollingEventsByTransactionRequest, - GetPollingEventsResponse, -} from "@flowser/shared"; - -@Controller() -export class EventsController { - constructor(private readonly eventsService: EventsService) {} - - @Get("/events") - async findAll() { - const events = await this.eventsService.findAll(); - return GetAllEventsResponse.toJSON({ - events: events.map((event) => event.toProto()), - }); - } - - @ApiParam({ name: "id", type: String }) - @Get("/transactions/:id/events") - async findAllByTransaction(@Param("id") transactionId: string) { - const events = await this.eventsService.findAllByTransaction(transactionId); - return GetAllEventsResponse.toJSON({ - events: events.map((event) => event.toProto()), - }); - } - - @ApiParam({ name: "id", type: String }) - @Post("/transactions/:id/events/polling") - @UseInterceptors(new PollingResponseInterceptor(GetPollingEventsResponse)) - async findAllNewByTransaction(@Param("id") transactionId: string, @Body() data: unknown) { - const request = GetPollingEventsByTransactionRequest.fromJSON(data); - const events = - await this.eventsService.findAllByTransactionNewerThanTimestamp( - transactionId, - new Date(request.timestamp) - ); - return events.map((event) => event.toProto()); - } - - @Post("/events/polling") - @UseInterceptors(new PollingResponseInterceptor(GetPollingEventsResponse)) - async findAllNew(@Body() data: unknown) { - const request = GetPollingEventsRequest.fromJSON(data); - const events = await this.eventsService.findAllNewerThanTimestamp( - new Date(request.timestamp) - ); - return events.map((event) => event.toProto()); - } -} diff --git a/backend/src/events/events.module.ts b/backend/src/events/events.module.ts deleted file mode 100644 index 1cd48793a..000000000 --- a/backend/src/events/events.module.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { Module } from "@nestjs/common"; -import { EventsService } from "./events.service"; -import { EventsController } from "./events.controller"; -import { TypeOrmModule } from "@nestjs/typeorm"; -import { EventEntity } from "./event.entity"; - -@Module({ - imports: [TypeOrmModule.forFeature([EventEntity])], - controllers: [EventsController], - providers: [EventsService], - exports: [EventsService], -}) -export class EventsModule {} diff --git a/backend/src/events/events.service.ts b/backend/src/events/events.service.ts deleted file mode 100644 index 43a467e93..000000000 --- a/backend/src/events/events.service.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { Injectable } from "@nestjs/common"; -import { InjectRepository } from "@nestjs/typeorm"; -import { EventEntity } from "./event.entity"; -import { MoreThan, Repository, Any } from "typeorm"; -import { removeByBlockIds } from '../blocks/entities/block-context.entity'; - -@Injectable() -export class EventsService { - constructor( - @InjectRepository(EventEntity) - private eventRepository: Repository - ) {} - - create(event: EventEntity) { - return this.eventRepository.save(event); - } - - findAll() { - return this.eventRepository.find({ - order: { createdAt: "DESC" }, - }); - } - - findAllNewerThanTimestamp(timestamp: Date): Promise { - return this.eventRepository.find({ - where: [ - { createdAt: MoreThan(timestamp) }, - { updatedAt: MoreThan(timestamp) }, - ], - order: { createdAt: "DESC" }, - }); - } - - findAllByTransaction(transactionId: string) { - return this.eventRepository.find({ - where: { transactionId }, - order: { createdAt: "DESC" }, - }); - } - - findAllByTransactionNewerThanTimestamp(transactionId: string, timestamp: Date) { - return this.eventRepository.find({ - where: { - createdAt: MoreThan(timestamp), - transactionId, - }, - order: { createdAt: "DESC" }, - }); - } - - removeAll() { - return this.eventRepository.delete({}); - } - - removeByBlockIds(blockIds: string[]) { - return removeByBlockIds({ - blockIds, - repository: this.eventRepository - }) - } -} diff --git a/backend/src/flow/flow.controller.ts b/backend/src/flow/flow.controller.ts deleted file mode 100644 index 189a47358..000000000 --- a/backend/src/flow/flow.controller.ts +++ /dev/null @@ -1,101 +0,0 @@ -import { - Body, - Controller, - Get, - Post, - Put, - UseInterceptors, -} from "@nestjs/common"; -import { FlowCliService } from "../../../packages/core/src/flow/flow-cli.service"; -import { FlowSnapshotsService } from "../../../packages/core/src/flow/flow-snapshots.service"; -import { - GetFlowCliInfoResponse, - GetPollingEmulatorSnapshotsResponse, - CreateEmulatorSnapshotRequest, - RevertToEmulatorSnapshotRequest, - RevertToEmulatorSnapshotResponse, - GetPollingEmulatorSnapshotsRequest, - RollbackToHeightRequest, - RollbackToHeightResponse, - GetFlowInteractionTemplatesResponse, - GetFlowConfigResponse, -} from "@flowser/shared"; -import { PollingResponseInterceptor } from "../core/interceptors/polling-response.interceptor"; -import { FlowInteractionsService } from "../../../packages/core/src/flow/flow-interactions.service"; -import { FlowConfigService } from "../../../packages/core/src/flow/flow-config.service"; - -@Controller("flow") -export class FlowController { - constructor( - private flowCliService: FlowCliService, - private flowConfigService: FlowConfigService, - private flowSnapshotService: FlowSnapshotsService, - private flowTemplatesService: FlowInteractionsService - ) {} - - @Get("config") - async getConfig() { - const flowJson = this.flowConfigService.getRawConfig(); - return GetFlowConfigResponse.toJSON({ - flowJson: flowJson ? JSON.stringify(flowJson) : "", - }); - } - - @Get("version") - async getVersion() { - const info = await this.flowCliService.getVersion(); - return GetFlowCliInfoResponse.toJSON(info); - } - - @Get("templates") - async getInteractionTemplates() { - const templates = await this.flowTemplatesService.getInteractionTemplates(); - return GetFlowInteractionTemplatesResponse.toJSON({ - templates, - }); - } - - @Post("snapshots/polling") - @UseInterceptors( - new PollingResponseInterceptor(GetPollingEmulatorSnapshotsResponse) - ) - async getSnapshotsWithPolling(@Body() data: unknown) { - const request = GetPollingEmulatorSnapshotsRequest.fromJSON(data); - const snapshots = - await this.flowSnapshotService.findAllByProjectNewerThanTimestamp( - request - ); - return snapshots.map((snapshot) => snapshot.toProto()); - } - - @Post("snapshots") - async createSnapshot(@Body() body: unknown) { - const request = CreateEmulatorSnapshotRequest.fromJSON(body); - const snapshot = await this.flowSnapshotService.create(request); - return RevertToEmulatorSnapshotResponse.toJSON( - RevertToEmulatorSnapshotResponse.fromPartial({ - snapshot: snapshot.toProto(), - }) - ); - } - - @Put("snapshots") - async checkoutSnapshot(@Body() body: unknown) { - const request = RevertToEmulatorSnapshotRequest.fromJSON(body); - const snapshot = await this.flowSnapshotService.checkout(request); - return RevertToEmulatorSnapshotResponse.toJSON( - RevertToEmulatorSnapshotResponse.fromPartial({ - snapshot: snapshot.toProto(), - }) - ); - } - - @Post("rollback") - async rollbackEmulator(@Body() body: unknown) { - const request = RollbackToHeightRequest.fromJSON(body); - await this.flowSnapshotService.rollback(request); - return RollbackToHeightResponse.toJSON( - RollbackToHeightResponse.fromPartial({}) - ); - } -} diff --git a/backend/src/flow/flow.module.ts b/backend/src/flow/flow.module.ts deleted file mode 100644 index 3c1c18ed6..000000000 --- a/backend/src/flow/flow.module.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { Module } from "@nestjs/common"; -import { TypeOrmModule } from "@nestjs/typeorm"; -import { FlowGatewayService } from "../../../packages/core/src/flow/flow-gateway.service"; -import { FlowController } from "./flow.controller"; -import { FlowEmulatorService } from "../../../packages/core/src/flow/flow-emulator.service"; -import { FlowCliService } from "../../../packages/core/src/flow/flow-cli.service"; -import { FlowConfigService } from "../../../packages/core/src/flow/flow-config.service"; -import { FlowAccountStorageService } from "../../../packages/core/src/flow/flow-storage.service"; -import { FlowSnapshot } from "../../../packages/core/src/flow/flow-snapshot"; -import { FlowSnapshotsService } from "../../../packages/core/src/flow/flow-snapshots.service"; -import { ProcessesModule } from "../processes/processes.module"; -import { CoreModule } from "../core/core.module"; -import { BlocksModule } from "../blocks/blocks.module"; -import { FlowInteractionsService } from "../../../packages/core/src/flow/flow-interactions.service"; -import { GoBindingsModule } from "../go-bindings/go-bindings.module"; - -@Module({ - imports: [ - TypeOrmModule.forFeature([FlowSnapshot]), - ProcessesModule, - // We need this to perform blockchain cache removal in snapshot service. - BlocksModule, - // We only need to import core module, - // to access data removal service from snapshots service. - // Otherwise, this module shouldn't depend on many other modules. - CoreModule, - GoBindingsModule, - ], - controllers: [FlowController], - providers: [ - FlowInteractionsService, - FlowGatewayService, - FlowEmulatorService, - FlowCliService, - FlowConfigService, - FlowAccountStorageService, - FlowSnapshotsService, - ], - exports: [ - FlowInteractionsService, - FlowGatewayService, - FlowEmulatorService, - FlowCliService, - FlowConfigService, - FlowAccountStorageService, - FlowSnapshotsService, - ], -}) -export class FlowModule {} diff --git a/backend/src/flow/tests/cli.service.spec.ts b/backend/src/flow/tests/cli.service.spec.ts deleted file mode 100644 index b8a51d3a1..000000000 --- a/backend/src/flow/tests/cli.service.spec.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { FlowCliService } from "../../../../packages/core/src/flow/flow-cli.service"; -import { FlowConfigService } from "../../../../packages/core/src/flow/flow-config.service"; -import { ProcessManagerService } from "../../../../packages/core/src/processes/process-manager.service"; -import { ProjectEntity } from "../../projects/project.entity"; -import { Emulator, Gateway } from "@flowser/shared"; - -describe("FlowCliService", function () { - let cliService: FlowCliService; - - beforeAll(async () => { - const configService = new FlowConfigMockService(); - const processManagerService = new ProcessManagerService(); - cliService = new FlowCliService(configService, processManagerService); - - const mockProject = new ProjectEntity({ - emulator: Emulator.fromPartial({}), - filesystemPath: "", - gateway: Gateway.fromPartial({}), - id: "", - name: "", - startBlockHeight: 0, - }); - await cliService.start(mockProject); - }); - - it("should return the generated key", async function () { - const generatedKey = await cliService.generateKey(); - - expect(generatedKey.private).toBeDefined(); - expect(generatedKey.public).toBeDefined(); - expect(generatedKey.derivationPath).toBeDefined(); - expect(generatedKey.mnemonic).toBeDefined(); - }); -}); - -class FlowConfigMockService extends FlowConfigService { - hasConfigFile(): boolean { - // This is to skip the flow cli initialization in tests. - return true; - } -} diff --git a/backend/src/flow/utils/project-context.ts b/backend/src/flow/utils/project-context.ts deleted file mode 100644 index 26a6b64dc..000000000 --- a/backend/src/flow/utils/project-context.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { ProjectEntity } from "../../projects/project.entity"; - -/** - * Services must implement this interface to get info on the current project. - */ -export interface ProjectContextLifecycle { - /** - * Called when project is started (e.g. user chooses a project in the UI). - * Should be used to perform setup logic. - */ - onEnterProjectContext(project: ProjectEntity): Promise | void; - - /** - * Called when project is exited. - * Should be used to perform teardown logic. - */ - onExitProjectContext(): Promise | void; -} - -// TODO: Use this to retrieve all services that implement the above interface automatically -export function implementsProjectContextLifecycle( - value: unknown -): value is ProjectContextLifecycle { - return ( - typeof value === "object" && - value !== null && - "onEnterProjectContext" in value && - "onExitProjectContext" in value - ); -} diff --git a/backend/src/go-bindings/README.md b/backend/src/go-bindings/README.md deleted file mode 100644 index a40994252..000000000 --- a/backend/src/go-bindings/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Go lib bindings - -This module contains TypeScript bindings for the Flowser internal go package `"github.com/onflowser/flowser/v2/internal`. - -The `/internal/main.go` program should be compiled under `./bin/internal` path. diff --git a/backend/src/go-bindings/go-bindings.controller.ts b/backend/src/go-bindings/go-bindings.controller.ts deleted file mode 100644 index 52c543a61..000000000 --- a/backend/src/go-bindings/go-bindings.controller.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { - GetParsedInteractionRequest, - GetParsedInteractionResponse, - GetAddressIndexRequest, - GetAddressIndexResponse, -} from "@flowser/shared"; -import { Body, Controller, Post } from "@nestjs/common"; -import { GoBindingsService } from "services/src/flow/go-bindings.service"; - -@Controller("go-bindings") -export class GoBindingsController { - constructor(private readonly service: GoBindingsService) {} - - @Post("get-parsed-interaction") - async getParsedInteraction(@Body() body: unknown) { - const request = GetParsedInteractionRequest.fromJSON(body); - const response = await this.service.getParsedInteraction(request); - return GetParsedInteractionResponse.toJSON(response); - } - - @Post("get-address-index") - async getAddressIndex(@Body() body: unknown) { - const request = GetAddressIndexRequest.fromJSON(body); - const response = await this.service.getAddressIndex(request); - return GetAddressIndexResponse.toJSON(response); - } -} diff --git a/backend/src/go-bindings/go-bindings.module.ts b/backend/src/go-bindings/go-bindings.module.ts deleted file mode 100644 index 24d284f25..000000000 --- a/backend/src/go-bindings/go-bindings.module.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Module } from "@nestjs/common"; -import { GoBindingsService } from "@onflowser/core/src/flow/go-bindings.service"; -import { GoBindingsController } from "./go-bindings.controller"; - -@Module({ - providers: [GoBindingsService], - controllers: [GoBindingsController], - exports: [GoBindingsService], -}) -export class GoBindingsModule {} diff --git a/backend/src/index.ts b/backend/src/index.ts deleted file mode 100644 index de771d476..000000000 --- a/backend/src/index.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { - INestApplication, - NestApplicationOptions, - ValidationPipe, -} from "@nestjs/common"; -import { NestFactory } from "@nestjs/core"; -import { AppModule } from "./app.module"; -import { HttpExceptionFilter } from "./core/filters/http-exception.filter"; -import { Config, ConfigService } from "./core/services/config.service"; - -export { ProcessManagerService } from "../../packages/core/src/processes/process-manager.service"; -export { ProjectsService } from "./projects/projects.service"; -export { ProjectEntity } from "./projects/project.entity"; - -export type CreateAppOptions = { - config: Config; - nest?: NestApplicationOptions; -}; - -export async function createApp( - options: CreateAppOptions -): Promise { - ConfigService.setConfiguration(options.config); - - const app = await NestFactory.create(AppModule, options.nest); - app.setGlobalPrefix("/api"); - app.useGlobalPipes(new ValidationPipe()); - app.useGlobalFilters(new HttpExceptionFilter()); - - app.enableCors(); - await app.listen(options.config.common.httpServerPort); - - return app; -} diff --git a/backend/src/main.ts b/backend/src/main.ts deleted file mode 100644 index b5b2bee39..000000000 --- a/backend/src/main.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { createApp } from "./index"; -import { ConfigService } from "./core/services/config.service"; -import { SwaggerModule } from "@nestjs/swagger"; -import { getOpenApiDocument } from "./docs"; - -declare const module: any; - -async function bootstrap() { - ConfigService.setConfiguration(ConfigService.readFromEnv()); - - const app = await createApp({ - config: ConfigService.readFromEnv(), - }); - - SwaggerModule.setup("api", app, getOpenApiDocument(app)); - - if (module.hot) { - module.hot.accept(); - module.hot.dispose(() => app.close()); - } -} - -bootstrap(); - -process.on("unhandledRejection", (reason, p) => { - console.log("Unhandled Rejection at: Promise", p, "reason:", reason); - // TODO(milestone-5): better handle errors -}); diff --git a/backend/src/processes/process-manager.controller.ts b/backend/src/processes/process-manager.controller.ts deleted file mode 100644 index 9a6927607..000000000 --- a/backend/src/processes/process-manager.controller.ts +++ /dev/null @@ -1,85 +0,0 @@ -import { - Body, - Controller, - Get, - Param, - Post, - UseInterceptors, -} from "@nestjs/common"; -import { ProcessManagerService } from "@onflowser/core/src/processes/process-manager.service"; -import { - GetPollingOutputsResponse, - GetAllManagedProcessesResponse, - GetPollingManagedProcessesResponse, - GetPollingManagedProcessesRequest, - GetPollingOutputsRequest, -} from "@flowser/shared"; -import { PollingResponseInterceptor } from "../core/interceptors/polling-response.interceptor"; - -@Controller("processes") -export class ProcessManagerController { - constructor(private processManagerService: ProcessManagerService) {} - - @Post(":id/start") - async startProcess(@Param("id") processId: string) { - return this.processManagerService.startExisting(processId); - } - - @Post(":id/stop") - async stopProcess(@Param("id") processId: string) { - return this.processManagerService.stop(processId); - } - - @Post(":id/restart") - async restartProcess(@Param("id") processId: string) { - return this.processManagerService.restart(processId); - } - - @Get("debug") - async debugInfo() { - return this.processManagerService.getAll(); - } - - @Post("/polling") - @UseInterceptors( - new PollingResponseInterceptor(GetPollingManagedProcessesResponse) - ) - async getAllProcessesNewerThanTimestamp(@Body() body: unknown) { - const request = GetPollingManagedProcessesRequest.fromJSON(body); - const processes = - this.processManagerService.findAllProcessesNewerThanTimestamp( - new Date(request.timestamp) - ); - return processes.map((process) => process); - } - - @Get() - async getAllProcesses() { - const processes = this.processManagerService.getAll(); - return GetAllManagedProcessesResponse.toJSON({ - processes: processes, - }); - } - - @Post(":outputs/polling") - @UseInterceptors(new PollingResponseInterceptor(GetPollingOutputsResponse)) - async getAllOutputsNewerThanTimestamp(@Body() data: unknown) { - const request = GetPollingOutputsRequest.fromJSON(data); - return this.processManagerService.findAllLogsNewerThanTimestamp( - new Date(request.timestamp) - ); - } - - @Post(":processId/outputs/polling") - @UseInterceptors(new PollingResponseInterceptor(GetPollingOutputsResponse)) - async getAllOutputsByProcessNewerThanTimestamp( - @Param("processId") processId: string, - @Body() data: unknown - ) { - const request = GetPollingOutputsRequest.fromJSON(data); - return this.processManagerService.findAllLogsByProcessIdNewerThanTimestamp( - processId, - new Date(request.timestamp) - ); - } -} diff --git a/backend/src/processes/processes.module.ts b/backend/src/processes/processes.module.ts deleted file mode 100644 index 496b1b4cf..000000000 --- a/backend/src/processes/processes.module.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Module } from "@nestjs/common"; -import { ProcessManagerService } from "../../../packages/core/src/processes/process-manager.service"; -import { ProcessManagerController } from "./process-manager.controller"; - -@Module({ - exports: [ProcessManagerService], - providers: [ProcessManagerService], - controllers: [ProcessManagerController], -}) -export class ProcessesModule {} diff --git a/backend/src/projects/dto/create-project.dto.ts b/backend/src/projects/dto/create-project.dto.ts deleted file mode 100644 index 91da3a9c7..000000000 --- a/backend/src/projects/dto/create-project.dto.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { GatewayConfigurationDto } from "./gateway-configuration.dto"; -import { IsNotEmpty, ValidateNested } from "class-validator"; -import { Type } from "class-transformer"; -import { EmulatorConfigurationDto } from "./emulator-configuration.dto"; -import { ApiProperty } from "@nestjs/swagger"; -import { Project } from "@flowser/shared"; - -export class CreateProjectDto implements Partial { - @ApiProperty() - @IsNotEmpty() - // @ts-ignore As this is always set automatically by the framework. - name: string; - - @ApiProperty() - @IsNotEmpty() - // @ts-ignore As this is always set automatically by the framework. - filesystemPath: string; - - @ApiProperty({ - description: "Data will be fetched from this block height forward.", - }) - // @ts-ignore As this is always set automatically by the framework. - startBlockHeight: number; - - @ApiProperty() - @ValidateNested() - @Type(() => GatewayConfigurationDto) - gateway: GatewayConfigurationDto | undefined; - - @IsNotEmpty() - @ValidateNested() - @Type(() => EmulatorConfigurationDto) - // @ts-ignore As this is always set automatically by the framework. - emulator: EmulatorConfigurationDto; -} diff --git a/backend/src/projects/dto/emulator-configuration.dto.ts b/backend/src/projects/dto/emulator-configuration.dto.ts deleted file mode 100644 index 4a42b0740..000000000 --- a/backend/src/projects/dto/emulator-configuration.dto.ts +++ /dev/null @@ -1,77 +0,0 @@ -import { ApiProperty } from "@nestjs/swagger"; -import { Emulator } from "@flowser/shared"; - -export class EmulatorConfigurationDto implements Emulator { - @ApiProperty() - // @ts-ignore As this is always set automatically by the framework. - adminServerPort: number; - @ApiProperty() - // @ts-ignore As this is always set automatically by the framework. - blockTime: number; - @ApiProperty() - // @ts-ignore As this is always set automatically by the framework. - databasePath: string; - @ApiProperty() - // @ts-ignore As this is always set automatically by the framework. - enableGrpcDebug: boolean; - @ApiProperty() - // @ts-ignore As this is always set automatically by the framework. - enableRestDebug: boolean; - @ApiProperty() - // @ts-ignore As this is always set automatically by the framework. - grpcServerPort: number; - @ApiProperty() - // @ts-ignore As this is always set automatically by the framework. - logFormat: string; - @ApiProperty() - // @ts-ignore As this is always set automatically by the framework. - minAccountBalance: number; - @ApiProperty() - // @ts-ignore As this is always set automatically by the framework. - persist: boolean; - @ApiProperty() - // @ts-ignore As this is always set automatically by the framework. - snapshot: boolean; - @ApiProperty() - // @ts-ignore As this is always set automatically by the framework. - restServerPort: number; - @ApiProperty() - // @ts-ignore As this is always set automatically by the framework. - scriptGasLimit: number; - @ApiProperty() - // @ts-ignore As this is always set automatically by the framework. - serviceHashAlgorithm: number; - @ApiProperty() - // @ts-ignore As this is always set automatically by the framework. - servicePrivateKey: string; - @ApiProperty() - // @ts-ignore As this is always set automatically by the framework. - serviceSignatureAlgorithm: number; - @ApiProperty() - // @ts-ignore As this is always set automatically by the framework. - storageLimit: boolean; - @ApiProperty() - // @ts-ignore As this is always set automatically by the framework. - storagePerFlow: number; - @ApiProperty() - // @ts-ignore As this is always set automatically by the framework. - tokenSupply: number; - @ApiProperty() - // @ts-ignore As this is always set automatically by the framework. - transactionExpiry: number; - @ApiProperty() - // @ts-ignore As this is always set automatically by the framework. - transactionFees: boolean; - @ApiProperty() - // @ts-ignore As this is always set automatically by the framework. - transactionMaxGasLimit: number; - @ApiProperty() - // @ts-ignore As this is always set automatically by the framework. - useSimpleAddresses: boolean; - @ApiProperty() - // @ts-ignore As this is always set automatically by the framework. - verboseLogging: boolean; - @ApiProperty() - // @ts-ignore As this is always set automatically by the framework. - withContracts: boolean; -} diff --git a/backend/src/projects/dto/gateway-configuration.dto.ts b/backend/src/projects/dto/gateway-configuration.dto.ts deleted file mode 100644 index 8f9fd9064..000000000 --- a/backend/src/projects/dto/gateway-configuration.dto.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { IsNotEmpty } from "class-validator"; -import { ApiProperty } from "@nestjs/swagger"; -import { Gateway, ServiceStatus } from "@flowser/shared"; - -export class GatewayConfigurationDto implements Gateway { - @ApiProperty() - @IsNotEmpty() - // @ts-ignore As this is always set automatically by the framework. - grpcServerAddress: string; - - @ApiProperty() - @IsNotEmpty() - // @ts-ignore As this is always set automatically by the framework. - restServerAddress: string; - - @ApiProperty() - @IsNotEmpty() - // @ts-ignore As this is always set automatically by the framework. - status: ServiceStatus; -} diff --git a/backend/src/projects/dto/update-project.dto.ts b/backend/src/projects/dto/update-project.dto.ts deleted file mode 100644 index 18472d159..000000000 --- a/backend/src/projects/dto/update-project.dto.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { PartialType } from "@nestjs/mapped-types"; -import { CreateProjectDto } from "./create-project.dto"; -import { IsNotEmpty } from "class-validator"; -import { ApiProperty } from "@nestjs/swagger"; - -export class UpdateProjectDto extends PartialType(CreateProjectDto) { - @ApiProperty() - @IsNotEmpty() - // @ts-ignore As this is always set automatically by the framework. - id: string; -} diff --git a/backend/src/projects/project.entity.ts b/backend/src/projects/project.entity.ts deleted file mode 100644 index 55b20474a..000000000 --- a/backend/src/projects/project.entity.ts +++ /dev/null @@ -1,102 +0,0 @@ -import { Column, Entity, PrimaryColumn } from "typeorm"; -import { BadRequestException } from "@nestjs/common"; -import { typeOrmProtobufTransformer } from "../utils/common-utils"; -import { CreateProjectDto } from "./dto/create-project.dto"; -import { PollingEntity } from "../core/entities/polling.entity"; -import { Emulator, Gateway, Project } from "@flowser/shared"; -import { UpdateProjectDto } from "./dto/update-project.dto"; -import * as crypto from "crypto"; -import { PollingEntityInitArguments } from "../utils/type-utils"; - -type ProjectEntityInitArgs = PollingEntityInitArguments; - -@Entity({ name: "projects" }) -export class ProjectEntity extends PollingEntity { - @PrimaryColumn() - id: string; - - @Column() - name: string; - - @Column() - filesystemPath: string; - - // TODO(milestone-3): gateway should be synced with network settings in flow.json - @Column("simple-json", { - nullable: true, - transformer: typeOrmProtobufTransformer(Gateway), - }) - gateway: Gateway; - - // TODO(milestone-3): emulator should be synced with settings in flow.json - @Column("simple-json", { - nullable: true, - transformer: typeOrmProtobufTransformer(Emulator), - }) - emulator: Emulator | null; - - // User can specify (on a project level) the starting block height. - // Blockchain data will be fetched from this height value if set. - @Column({ nullable: true }) - startBlockHeight: number = 0; - - // Entities are also automatically initialized by TypeORM. - // In those cases no constructor arguments are provided. - constructor(args: ProjectEntityInitArgs | undefined) { - super(); - this.id = args?.id ?? ""; - this.name = args?.name ?? ""; - this.filesystemPath = args?.filesystemPath ?? ""; - this.gateway = args?.gateway ?? Gateway.fromPartial({}); - this.emulator = args?.emulator ?? Emulator.fromPartial({}); - this.startBlockHeight = args?.startBlockHeight ?? 0; - } - - hasGatewayConfiguration() { - return this.gateway !== null; - } - - toProto(): Project { - return { - id: this.id, - name: this.name, - filesystemPath: this.filesystemPath, - startBlockHeight: this.startBlockHeight ?? -1, - gateway: this.gateway, - emulator: this.emulator ?? undefined, - createdAt: this.createdAt.toISOString(), - updatedAt: this.updatedAt.toISOString(), - }; - } - - static create(projectDto: CreateProjectDto | UpdateProjectDto) { - const isUpdateDto = "id" in projectDto && Boolean(projectDto.id); - - if (!projectDto.filesystemPath) { - throw new BadRequestException("Missing project filesystem path"); - } - if (!projectDto.name) { - throw new BadRequestException("Missing project name"); - } - if ( - projectDto.startBlockHeight === null || - projectDto.startBlockHeight === undefined - ) { - throw new BadRequestException("Missing project start block height"); - } - - return new ProjectEntity({ - id: isUpdateDto ? projectDto.id : crypto.randomUUID(), - name: projectDto.name, - startBlockHeight: projectDto.startBlockHeight, - filesystemPath: projectDto.filesystemPath, - gateway: projectDto.emulator - ? Gateway.fromPartial({ - restServerAddress: `http://localhost:${projectDto.emulator.restServerPort}`, - grpcServerAddress: `http://localhost:${projectDto.emulator.grpcServerPort}`, - }) - : Gateway.fromJSON(projectDto.gateway), - emulator: Emulator.fromJSON(projectDto.emulator), - }); - } -} diff --git a/backend/src/projects/projects.controller.ts b/backend/src/projects/projects.controller.ts deleted file mode 100644 index 2152e7fc8..000000000 --- a/backend/src/projects/projects.controller.ts +++ /dev/null @@ -1,139 +0,0 @@ -import { - Body, - Controller, - Delete, - Get, - Param, - Patch, - Post, - UseInterceptors, -} from "@nestjs/common"; -import { ProjectsService } from "./projects.service"; -import { CreateProjectDto } from "./dto/create-project.dto"; -import { UpdateProjectDto } from "./dto/update-project.dto"; -import { ApiParam } from "@nestjs/swagger"; -import { - GetAllProjectsResponse, - GetSingleProjectResponse, - GetPollingProjectsResponse, - UseProjectResponse, - UpdateProjectResponse, - CreateProjectResponse, - GetPollingProjectsRequest, - GetProjectRequirementsResponse, - GetProjectStatusResponse, -} from "@flowser/shared"; -import { PollingResponseInterceptor } from "../core/interceptors/polling-response.interceptor"; - -@Controller("projects") -export class ProjectsController { - constructor(private readonly projectsService: ProjectsService) {} - - @Post() - async create(@Body() createProjectDto: CreateProjectDto) { - const project = await this.projectsService.create(createProjectDto); - return CreateProjectResponse.toJSON( - CreateProjectResponse.fromPartial({ - project: project.toProto(), - }) - ); - } - - @Get("requirements") - async getProjectRequirements() { - return GetProjectRequirementsResponse.toJSON({ - missingRequirements: await this.projectsService.getMissingRequirements(), - }); - } - - @Get("status") - async getStatus() { - const statusResponse = await this.projectsService.getProjectStatus(); - return GetProjectStatusResponse.toJSON(statusResponse); - } - - @Get() - async findAll() { - const projects = await this.projectsService.findAll(); - return GetAllProjectsResponse.toJSON( - GetAllProjectsResponse.fromPartial({ - projects: projects.map((project) => project.toProto()), - }) - ); - } - - @Post("polling") - @UseInterceptors(new PollingResponseInterceptor(GetPollingProjectsResponse)) - async findAllNew(@Body() data: unknown) { - const request = GetPollingProjectsRequest.fromJSON(data); - const projects = await this.projectsService.findAllNewerThanTimestamp( - new Date(request.timestamp) - ); - return projects.map((project) => project.toProto()); - } - - @Get("current") - async findCurrent() { - const project = this.projectsService.getCurrentProjectOrFail(); - return GetSingleProjectResponse.toJSON( - GetSingleProjectResponse.fromPartial({ - project: project.toProto(), - }) - ); - } - - @Get("default") - async default() { - return GetSingleProjectResponse.toJSON( - GetSingleProjectResponse.fromPartial({ - project: this.projectsService.getDefaultProject(), - }) - ); - } - - @ApiParam({ name: "id", type: String }) - @Get(":id") - async findOne(@Param("id") id: string) { - const project = await this.projectsService.findOne(id); - return GetSingleProjectResponse.fromPartial({ - project: project.toProto(), - }); - } - - @ApiParam({ name: "id", type: String }) - @Patch(":id") - async update( - @Param("id") id: string, - @Body() updateProjectDto: UpdateProjectDto - ) { - const project = await this.projectsService.update(id, updateProjectDto); - return UpdateProjectResponse.toJSON( - UpdateProjectResponse.fromPartial({ - project: project.toProto(), - }) - ); - } - - @Delete("/use") - async unUseProject(@Param("id") id: string): Promise { - // no need to wait for the completion - this.projectsService.cleanupProject(); - } - - @ApiParam({ name: "id", type: String }) - @Delete(":id") - async remove(@Param("id") id: string) { - await this.projectsService.remove(id); - } - - @ApiParam({ name: "id", type: String }) - @Post("/use/:id") - async useProject(@Param("id") id: string) { - const project = await this.projectsService.useProjectById(id); - return UseProjectResponse.toJSON( - UseProjectResponse.fromPartial({ - project: project.toProto(), - }) - ); - } -} diff --git a/backend/src/projects/projects.module.ts b/backend/src/projects/projects.module.ts deleted file mode 100644 index 1da8c82c1..000000000 --- a/backend/src/projects/projects.module.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { Module } from "@nestjs/common"; -import { ProjectsService } from "./projects.service"; -import { ProjectsController } from "./projects.controller"; -import { ProjectEntity } from "./project.entity"; -import { TypeOrmModule } from "@nestjs/typeorm"; -import { FlowModule } from "../flow/flow.module"; -import { AccountsModule } from "../accounts/accounts.module"; -import { BlocksModule } from "../blocks/blocks.module"; -import { EventsModule } from "../events/events.module"; -import { TransactionsModule } from "../transactions/transactions.module"; -import { CoreModule } from "../core/core.module"; -import { WalletModule } from "../wallet/wallet.module"; -import { DataProcessingModule } from "../data-processing/data-processing.module"; - -@Module({ - imports: [ - TypeOrmModule.forFeature([ProjectEntity]), - FlowModule, - AccountsModule, - BlocksModule, - EventsModule, - TransactionsModule, - CoreModule, - WalletModule, - DataProcessingModule, - ], - controllers: [ProjectsController], - providers: [ProjectsService], - exports: [ProjectsService], -}) -export class ProjectsModule {} diff --git a/backend/src/projects/projects.service.ts b/backend/src/projects/projects.service.ts deleted file mode 100644 index 4dbbd393a..000000000 --- a/backend/src/projects/projects.service.ts +++ /dev/null @@ -1,292 +0,0 @@ -import { - Injectable, - InternalServerErrorException, - Logger, - NotFoundException, - PreconditionFailedException, -} from "@nestjs/common"; -import { CreateProjectDto } from "./dto/create-project.dto"; -import { UpdateProjectDto } from "./dto/update-project.dto"; -import { MoreThan, Repository } from "typeorm"; -import { ProjectEntity } from "./project.entity"; -import { InjectRepository } from "@nestjs/typeorm"; -import { FlowGatewayService } from "../../../packages/core/src/flow/flow-gateway.service"; -import { IndexerService } from "@onflowser/indexer/src/indexer.service"; -import { FlowEmulatorService } from "../../../packages/core/src/flow/flow-emulator.service"; -import { FlowCliService } from "../../../packages/core/src/flow/flow-cli.service"; -import { FlowConfigService } from "../../../packages/core/src/flow/flow-config.service"; -import { ProjectContextLifecycle } from "../flow/utils/project-context"; -import { - Gateway, - ServiceStatus, - GetProjectStatusResponse, - Project, - ProjectRequirement, - ProjectRequirementType, -} from "@flowser/shared"; -import * as fs from "fs"; -import { CacheRemovalService } from "../core/services/cache-removal.service"; -import { WalletService } from "../../../packages/wallet/src/wallet.service"; -import { FlowSnapshotsService } from "../../../packages/core/src/flow/flow-snapshots.service"; -import { FlowInteractionsService } from "../../../packages/core/src/flow/flow-interactions.service"; - -const commandExists = require("command-exists"); -const semver = require("semver"); - -@Injectable() -export class ProjectsService { - private currentProject: ProjectEntity | undefined; - private readonly logger = new Logger(ProjectsService.name); - - // TODO: This should be refactored sooner or later. It's a weird and bug prone system of bootstrapping services. - // For now let's not forget to manually add services with ProjectContextLifecycle interface - // Order is important, because some actions have dependencies - private readonly servicesWithProjectLifecycleContext: ProjectContextLifecycle[] = - [ - this.flowConfigService, - // Below services depend on flow config service, - // so they must be configured after the above one. - this.flowCliService, - - this.flowGatewayService, - // Must be before emulator service, - // since it's listening for events emitted by that service. - this.processorService, - this.flowEmulatorService, - // Snapshot and wallet services must be started after emulator service, - // as it depends on REST APIs that emulator process exposes. - this.flowSnapshotsService, - // Wallet service also depends on the gateway service (needs to initialize fcl). - this.walletService, - this.flowTemplatesService, - ]; - - constructor( - @InjectRepository(ProjectEntity) - private projectRepository: Repository, - private flowGatewayService: FlowGatewayService, - private processorService: IndexerService, - private flowEmulatorService: FlowEmulatorService, - private flowCliService: FlowCliService, - private flowConfigService: FlowConfigService, - private commonService: CacheRemovalService, - private walletService: WalletService, - private flowSnapshotsService: FlowSnapshotsService, - private flowTemplatesService: FlowInteractionsService - ) {} - - getCurrentProject(): ProjectEntity | undefined { - return this.currentProject; - } - - getCurrentProjectOrFail() { - if (this.currentProject) { - return this.currentProject; - } else { - throw new NotFoundException("No current project"); - } - } - - async getProjectStatus(): Promise { - if (!this.currentProject) { - throw new NotFoundException("No current project"); - } - if (!this.currentProject.gateway) { - throw new PreconditionFailedException("Gateway not configured"); - } - const flowApiStatus = await FlowGatewayService.getApiStatus( - this.currentProject.gateway - ); - const totalBlocksToProcess = - flowApiStatus === ServiceStatus.SERVICE_STATUS_ONLINE - ? await this.processorService.getTotalBlocksToProcess() - : -1; - return { - totalBlocksToProcess, - flowApiStatus, - }; - } - - async getMissingRequirements(): Promise { - const missingRequirements: ProjectRequirement[] = []; - try { - await commandExists("flow"); - } catch (e) { - missingRequirements.push( - ProjectRequirement.fromPartial({ - type: ProjectRequirementType.PROJECT_REQUIREMENT_MISSING_FLOW_CLI, - }) - ); - return missingRequirements; - } - - const flowCliInfo = await this.flowCliService.getVersion(); - const foundVersion = semver.coerce(flowCliInfo.version).version; - const minSupportedVersion = "1.0.0"; - const isSupportedFlowCliVersion = semver.lte( - minSupportedVersion, - foundVersion - ); - if (!isSupportedFlowCliVersion) { - missingRequirements.push({ - type: ProjectRequirementType.PROJECT_REQUIREMENT_UNSUPPORTED_FLOW_CLI_VERSION, - missingVersionRequirement: { - minSupportedVersion, - foundVersion, - }, - }); - } - - return missingRequirements; - } - - async cleanupProject() { - try { - // Remove all cached data of previously used project - await this.commonService.removeAll(); - } catch (e) { - throw new InternalServerErrorException("Database cleanup failed"); - } - - this.currentProject = undefined; - await Promise.all( - this.servicesWithProjectLifecycleContext.map((service) => - service.onExitProjectContext() - ) - ); - } - - async useProjectById(id: string) { - const targetProject = await this.findOne(id); - return this.useProject(targetProject); - } - - async useProject(project: ProjectEntity) { - await this.cleanupProject(); - - this.currentProject = project; - - // TODO(milestone-3): validate that project has a valid flow.json config - - // Provide project context to services that need it - for (let i = 0; i < this.servicesWithProjectLifecycleContext.length; i++) { - const service = this.servicesWithProjectLifecycleContext[i]; - try { - this.logger.debug(`Entering project context for service: ${i}`); - await service.onEnterProjectContext(this.currentProject); - } catch (error: unknown) { - this.logger.error( - `Project context initialization failed for service with index: ${i}`, - error - ); - if (error) { - throw error; - } else { - throw new InternalServerErrorException( - "Project context initialization failed" - ); - } - } - } - - this.logger.debug(`using project: ${project.id}`); - - return this.currentProject; - } - - async create(createProjectDto: CreateProjectDto) { - const projectFolderExists = fs.existsSync(createProjectDto.filesystemPath); - if (!projectFolderExists) { - throw new PreconditionFailedException("Project folder not found"); - } - const project = ProjectEntity.create(createProjectDto); - await this.projectRepository.insert(project); - return project; - } - - async findAll(): Promise { - const projects = await this.projectRepository.find({ - order: { updatedAt: "DESC" }, - }); - return Promise.all( - projects.map(async (project) => this.setComputedFields(project)) - ); - } - - findAllNewerThanTimestamp(timestamp: Date): Promise { - return this.projectRepository.find({ - where: [ - { createdAt: MoreThan(timestamp) }, - { updatedAt: MoreThan(timestamp) }, - ], - order: { updatedAt: "DESC" }, - }); - } - - async findOne(id: string): Promise { - const currentProject = this.getCurrentProject(); - // Project can be persisted only in-memory - if (currentProject?.id === id) { - return currentProject; - } - const project = await this.projectRepository.findOneByOrFail({ id }); - return this.setComputedFields(project); - } - - async update(id: string, updateProjectDto: UpdateProjectDto) { - const currentProject = this.getCurrentProject(); - const currentPersistedProject = await this.projectRepository.findOneBy({ - id, - }); - - const project = ProjectEntity.create(updateProjectDto); - project.markUpdated(); - - // Project can be persisted only in-memory - if (currentProject && currentProject.id === id) { - this.currentProject = project; - - // If this is an in-memory project, don't execute update to avoid http error. - if (!currentPersistedProject) { - return this.currentProject; - } - } - - await this.projectRepository.update( - { id }, - // Prevent overwriting existing created date - { ...project, createdAt: undefined } - ); - - return project; - } - - async remove(id: string) { - if (this.currentProject?.id === id) { - await this.cleanupProject(); - } - return this.projectRepository.delete({ id }); - } - - getDefaultProject() { - const defaultEmulator = FlowEmulatorService.getDefaultConfig(); - - return Project.fromPartial({ - name: "New Project", - gateway: Gateway.fromPartial({ - restServerAddress: `http://localhost:${defaultEmulator.restServerPort}`, - grpcServerAddress: `http://localhost:${defaultEmulator.grpcServerPort}`, - }), - emulator: defaultEmulator, - }); - } - - private async setComputedFields(project: ProjectEntity) { - if (project.hasGatewayConfiguration()) { - project.gateway.status = await FlowGatewayService.getApiStatus( - project.gateway - ); - } - return project; - } -} diff --git a/backend/src/transactions/transaction.entity.ts b/backend/src/transactions/transaction.entity.ts deleted file mode 100644 index 3b517c56e..000000000 --- a/backend/src/transactions/transaction.entity.ts +++ /dev/null @@ -1,111 +0,0 @@ -import { PollingEntity } from "../core/entities/polling.entity"; -import { Column, Entity, ManyToOne, PrimaryColumn } from "typeorm"; -import { - Transaction, - TransactionProposalKey, - SignableObject, - TransactionStatus, - TransactionArgument, -} from "@flowser/shared"; -import { typeOrmProtobufTransformer } from "../utils/common-utils"; -import { AccountEntity } from "../accounts/entities/account.entity"; -import { BlockContextEntity } from "../blocks/entities/block-context.entity"; -import { PollingEntityInitArguments } from "../utils/type-utils"; - -type TransactionEntityInitArgs = PollingEntityInitArguments; - -@Entity({ name: "transactions" }) -export class TransactionEntity - extends PollingEntity - implements BlockContextEntity -{ - @PrimaryColumn() - id: string; - - @Column("text") - script: string; - - @Column() - blockId: string; - - @Column() - referenceBlockId: string; - - @Column() - gasLimit: number; - - @Column() - payerAddress: string; // payer account address - - @ManyToOne(() => AccountEntity, (account) => account.transactions) - payer?: AccountEntity; // payer account address - - @Column("simple-array") - authorizers: string[]; // authorizers account addresses - - @Column("simple-json", { - transformer: typeOrmProtobufTransformer(TransactionArgument) - }) - args: TransactionArgument[]; - - @Column("simple-json", { - transformer: typeOrmProtobufTransformer(TransactionProposalKey), - }) - proposalKey: TransactionProposalKey; - - @Column("simple-json", { - transformer: typeOrmProtobufTransformer(SignableObject), - }) - envelopeSignatures: SignableObject[]; - - @Column("simple-json", { - transformer: typeOrmProtobufTransformer(SignableObject), - }) - payloadSignatures: SignableObject[]; - - @Column("simple-json", { - transformer: typeOrmProtobufTransformer(TransactionStatus), - }) - status: TransactionStatus; - - // Entities are also automatically initialized by TypeORM. - // In those cases no constructor arguments are provided. - constructor(args?: TransactionEntityInitArgs) { - super(); - this.id = args?.id ?? ""; - this.script = args?.script ?? ""; - this.blockId = args?.blockId ?? ""; - this.referenceBlockId = args?.referenceBlockId ?? ""; - this.gasLimit = args?.gasLimit ?? -1; - this.payerAddress = args?.payerAddress ?? ""; - if (args?.payer) { - this.payer = args.payer; - } - this.authorizers = args?.authorizers ?? []; - this.args = args?.args ?? []; - this.proposalKey = - args?.proposalKey ?? TransactionProposalKey.fromPartial({}); - this.envelopeSignatures = args?.envelopeSignatures ?? []; - this.payloadSignatures = args?.payloadSignatures ?? []; - this.status = args?.status ?? TransactionStatus.fromPartial({}); - } - - toProto(): Transaction { - return { - id: this.id, - script: this.script, - blockId: this.blockId, - referenceBlockId: this.referenceBlockId, - gasLimit: this.gasLimit, - payer: this.payerAddress, - authorizers: this.authorizers, - arguments: this.args, - proposalKey: this.proposalKey, - envelopeSignatures: this.envelopeSignatures, - payloadSignatures: this.payloadSignatures, - status: this.status, - createdAt: this.createdAt.toISOString(), - updatedAt: this.updatedAt.toISOString(), - }; - } -} diff --git a/backend/src/transactions/transactions.controller.ts b/backend/src/transactions/transactions.controller.ts deleted file mode 100644 index 625b1f68d..000000000 --- a/backend/src/transactions/transactions.controller.ts +++ /dev/null @@ -1,99 +0,0 @@ -import { - Controller, - Get, - Param, - UseInterceptors, - Body, - Post, -} from "@nestjs/common"; -import { TransactionsService } from "./transactions.service"; -import { PollingResponseInterceptor } from "../core/interceptors/polling-response.interceptor"; -import { ApiParam, ApiQuery } from "@nestjs/swagger"; - -import { - GetAllTransactionsResponse, - GetPollingTransactionsByAccountRequest, - GetPollingTransactionsByBlockRequest, - GetPollingTransactionsRequest, - GetPollingTransactionsResponse, - GetSingleTransactionResponse, -} from "@flowser/shared"; - -@Controller() -export class TransactionsController { - constructor(private readonly transactionsService: TransactionsService) {} - - @Get("/transactions") - async findAll() { - const transactions = await this.transactionsService.findAll(); - return GetAllTransactionsResponse.fromPartial({ - transactions: transactions.map((transaction) => transaction.toProto()), - }); - } - - @Post("/transactions/polling") - @UseInterceptors( - new PollingResponseInterceptor(GetPollingTransactionsResponse) - ) - async findAllNew(@Body() data: unknown) { - const request = GetPollingTransactionsRequest.fromJSON(data); - const transactions = - await this.transactionsService.findAllNewerThanTimestamp( - new Date(request.timestamp) - ); - return transactions.map((transaction) => transaction.toProto()); - } - - @ApiParam({ name: "id", type: String }) - @Get("/blocks/:id/transactions") - async findAllByBlock(@Param("id") blockId: string) { - const transactions = await this.transactionsService.findAllByBlock(blockId); - return GetAllTransactionsResponse.fromPartial({ - transactions: transactions.map((transaction) => transaction.toProto()), - }); - } - - @ApiParam({ name: "id", type: String }) - @Post("/blocks/:id/transactions/polling") - @UseInterceptors( - new PollingResponseInterceptor(GetPollingTransactionsResponse) - ) - async findAllNewByBlock(@Param("id") blockId: string, @Body() data: unknown) { - const request = GetPollingTransactionsByBlockRequest.fromJSON(data); - const transactions = - await this.transactionsService.findAllNewerThanTimestampByBlock( - blockId, - new Date(request.timestamp) - ); - return transactions.map((transaction) => transaction.toProto()); - } - - @ApiParam({ name: "id", type: String }) - @ApiQuery({ name: "timestamp", type: Number }) - @Post("/accounts/:address/transactions/polling") - @UseInterceptors( - new PollingResponseInterceptor(GetPollingTransactionsResponse) - ) - async findAllNewByAccount( - @Param("address") accountAddress: string, - @Body() data: unknown - ) { - const request = GetPollingTransactionsByAccountRequest.fromJSON(data); - const transactions = - await this.transactionsService.findAllNewerThanTimestampByAccount( - accountAddress, - new Date(request.timestamp) - ); - return transactions.map((transaction) => transaction.toProto()); - } - - @ApiParam({ name: "id", type: String }) - @Get("/transactions/:id") - async findOne(@Param("id") id: string) { - const transaction = await this.transactionsService.findOne(id); - return GetSingleTransactionResponse.fromPartial({ - // Instead of throwing an error, include empty response. - transaction: transaction?.toProto(), - }); - } -} diff --git a/backend/src/transactions/transactions.module.ts b/backend/src/transactions/transactions.module.ts deleted file mode 100644 index 89a58ce4e..000000000 --- a/backend/src/transactions/transactions.module.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { Module } from "@nestjs/common"; -import { TransactionsService } from "./transactions.service"; -import { TransactionsController } from "./transactions.controller"; -import { TypeOrmModule } from "@nestjs/typeorm"; -import { TransactionEntity } from "./transaction.entity"; - -@Module({ - imports: [TypeOrmModule.forFeature([TransactionEntity])], - controllers: [TransactionsController], - providers: [TransactionsService], - exports: [TransactionsService], -}) -export class TransactionsModule {} diff --git a/backend/src/transactions/transactions.service.ts b/backend/src/transactions/transactions.service.ts deleted file mode 100644 index 212a0142b..000000000 --- a/backend/src/transactions/transactions.service.ts +++ /dev/null @@ -1,90 +0,0 @@ -import { Injectable } from "@nestjs/common"; -import { InjectRepository } from "@nestjs/typeorm"; -import { TransactionEntity } from "./transaction.entity"; -import { MoreThan, Repository, Any } from "typeorm"; -import { TransactionStatus } from "@flowser/shared"; -import { removeByBlockIds } from '../blocks/entities/block-context.entity'; - -@Injectable() -export class TransactionsService { - constructor( - @InjectRepository(TransactionEntity) - private transactionRepository: Repository - ) {} - - createOrUpdate(transaction: TransactionEntity) { - return this.transactionRepository.save(transaction); - } - - async updateStatus(transactionId: string, status: TransactionStatus) { - const transaction = await this.findOneOrThrow(transactionId); - transaction.status = status; - await this.createOrUpdate(transaction); - } - - findAll() { - return this.transactionRepository.find({ - order: { createdAt: "DESC" }, - }); - } - - findAllByBlock(blockId: string) { - return this.transactionRepository.find({ - where: { blockId }, - order: { createdAt: "DESC" }, - }); - } - - findAllNewerThanTimestamp(timestamp: Date): Promise { - return this.transactionRepository.find({ - where: [ - { createdAt: MoreThan(timestamp) }, - { updatedAt: MoreThan(timestamp) }, - ], - order: { createdAt: "DESC" }, - }); - } - - findAllNewerThanTimestampByBlock(blockId: string, timestamp: Date) { - return this.transactionRepository.find({ - where: [ - { updatedAt: MoreThan(timestamp), blockId }, - { createdAt: MoreThan(timestamp), blockId }, - ], - order: { createdAt: "DESC" }, - }); - } - - findAllNewerThanTimestampByAccount(payerAddress: string, timestamp: Date) { - return this.transactionRepository.find({ - where: [ - { updatedAt: MoreThan(timestamp), payerAddress }, - { createdAt: MoreThan(timestamp), payerAddress }, - ], - order: { createdAt: "DESC" }, - }); - } - - async findOneOrThrow(id: string) { - return this.transactionRepository.findOneOrFail({ - where: { id }, - }); - } - - async findOne(id: string) { - return this.transactionRepository.findOne({ - where: { id }, - }); - } - - removeAll() { - return this.transactionRepository.delete({}); - } - - removeByBlockIds(blockIds: string[]) { - return removeByBlockIds({ - blockIds, - repository: this.transactionRepository - }) - } -} diff --git a/backend/src/utils/type-utils.ts b/backend/src/utils/type-utils.ts deleted file mode 100644 index 4424810af..000000000 --- a/backend/src/utils/type-utils.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { PollingEntity } from "../core/entities/polling.entity"; - -// https://stackoverflow.com/questions/58210331/exclude-function-types-from-an-object-type -type NonFunctionPropertyNames = { - [K in keyof T]: T[K] extends Function ? never : K; -}[keyof T]; -type NonFunctionProperties = Pick>; - -export type PollingEntityInitArguments = Omit< - NonFunctionProperties, - // Ignore, as these are set automatically. - "createdAt" | "updatedAt" ->; diff --git a/backend/src/wallet/wallet.controller.ts b/backend/src/wallet/wallet.controller.ts deleted file mode 100644 index 7b40e08d8..000000000 --- a/backend/src/wallet/wallet.controller.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { Body, Controller, Post } from "@nestjs/common"; -import { WalletService } from "../../../packages/wallet/src/wallet.service"; -import { - SendTransactionRequest, - SendTransactionResponse, -} from "@flowser/shared/dist/src/generated/api/wallet"; - -@Controller("wallets") -export class WalletController { - constructor(private readonly walletService: WalletService) {} - - @Post("accounts/transaction") - async sendTransaction(@Body() body: unknown) { - const request = SendTransactionRequest.fromJSON(body); - const response = await this.walletService.sendTransaction(request); - return SendTransactionResponse.toJSON(response); - } - - @Post("accounts") - async createAccount() { - await this.walletService.createAccount(); - } -} diff --git a/backend/src/wallet/wallet.module.ts b/backend/src/wallet/wallet.module.ts deleted file mode 100644 index 0fb84ed55..000000000 --- a/backend/src/wallet/wallet.module.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { Module } from "@nestjs/common"; -import { FlowModule } from "../flow/flow.module"; -import { AccountsModule } from "../accounts/accounts.module"; -import { WalletController } from "./wallet.controller"; -import { WalletService } from "../../../packages/wallet/src/wallet.service"; - -@Module({ - imports: [FlowModule, AccountsModule], - controllers: [WalletController], - providers: [WalletService], - exports: [WalletService], -}) -export class WalletModule {} diff --git a/backend/static/icon.png b/backend/static/icon.png deleted file mode 100644 index 9ed192ca78c0af7620c5983f702b13f1178d5457..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66405 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 AKL7v# diff --git a/backend/test/app.e2e-spec.ts b/backend/test/app.e2e-spec.ts deleted file mode 100644 index 42edde704..000000000 --- a/backend/test/app.e2e-spec.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { INestApplication } from '@nestjs/common'; -import * as request from 'supertest'; -import { AppModule } from '../src/app.module'; - -describe('AppController (e2e)', () => { - let app: INestApplication; - - beforeEach(async () => { - const moduleFixture: TestingModule = await Test.createTestingModule({ - imports: [AppModule], - }).compile(); - - app = moduleFixture.createNestApplication(); - await app.init(); - }); - - it('/ (GET)', () => { - return request(app.getHttpServer()).get('/').expect(200).expect('Hello World!'); - }); -}); diff --git a/backend/test/jest-e2e.json b/backend/test/jest-e2e.json deleted file mode 100644 index e9d912f3e..000000000 --- a/backend/test/jest-e2e.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "moduleFileExtensions": ["js", "json", "ts"], - "rootDir": ".", - "testEnvironment": "node", - "testRegex": ".e2e-spec.ts$", - "transform": { - "^.+\\.(t|j)s$": "ts-jest" - } -} diff --git a/backend/tsconfig.build.json b/backend/tsconfig.build.json deleted file mode 100644 index 9433babd0..000000000 --- a/backend/tsconfig.build.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "extends": "./tsconfig.json", - "exclude": ["node_modules", "test", "dist", "**/*spec.ts"], - "compilerOptions": { - "skipLibCheck": true - } -} diff --git a/backend/tsconfig.json b/backend/tsconfig.json deleted file mode 100644 index 1a4db3a8c..000000000 --- a/backend/tsconfig.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "extends": "../tsconfig.json", - "compilerOptions": { - "strict": true, - "module": "commonjs", - "declaration": true, - "removeComments": true, - "emitDecoratorMetadata": true, - "experimentalDecorators": true, - "allowSyntheticDefaultImports": true, - "target": "es2017", - "types": ["node", "jest"], - "sourceMap": true, - "outDir": "./dist", - "baseUrl": "./", - "incremental": true, - "skipLibCheck": true, - "strictNullChecks": true, - "noImplicitAny": true, - "strictBindCallApply": true, - "forceConsistentCasingInFileNames": true, - "noFallthroughCasesInSwitch": true - } -} diff --git a/backend/yarn.lock b/backend/yarn.lock deleted file mode 100644 index cb23714f3..000000000 --- a/backend/yarn.lock +++ /dev/null @@ -1,5973 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@angular-devkit/core@12.0.5": - version "12.0.5" - resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-12.0.5.tgz#3d02abd97684434f6e1ffee470b7a9c63987ae51" - integrity sha512-zVSQV+8/vjUjsUKGlj8Kf5LioA6AXJTGI0yhHW9q1dFX4dPpbW63k0R1UoIB2wJ0F/AbYVgpnPGPe9BBm2fvZA== - dependencies: - ajv "8.2.0" - ajv-formats "2.0.2" - fast-json-stable-stringify "2.1.0" - magic-string "0.25.7" - rxjs "6.6.7" - source-map "0.7.3" - -"@angular-devkit/core@13.3.5": - version "13.3.5" - resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-13.3.5.tgz#c5f32f4f99b5cad8df9cf3cf4da9c4b1335c1155" - integrity sha512-w7vzK4VoYP9rLgxJ2SwEfrkpKybdD+QgQZlsDBzT0C6Ebp7b4gkNcNVFo8EiZvfDl6Yplw2IAP7g7fs3STn0hQ== - 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" - -"@angular-devkit/core@13.3.6": - version "13.3.6" - resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-13.3.6.tgz#656284327d6f84a866a8d3cc8625895fe740602d" - integrity sha512-ZmD586B+RnM2CG5+jbXh2NVfIydTc/yKSjppYDDOv4I530YBm6vpfZMwClpiNk6XLbMv7KqX4Tlr4wfxlPYYbA== - 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" - -"@angular-devkit/schematics-cli@13.3.6": - version "13.3.6" - resolved "https://registry.yarnpkg.com/@angular-devkit/schematics-cli/-/schematics-cli-13.3.6.tgz#5246c112b6b837a9d0a348cb6b79a8c4948e90c8" - integrity sha512-5tTuu9gbXM0bMk0sin4phmWA3U1Qz53zT/rpEfzQ/+c/s8CoqZ5N1qOnYtemRct3Jxsz1kn4TBpHeriR4r5hHg== - dependencies: - "@angular-devkit/core" "13.3.6" - "@angular-devkit/schematics" "13.3.6" - ansi-colors "4.1.1" - inquirer "8.2.0" - minimist "1.2.6" - symbol-observable "4.0.0" - -"@angular-devkit/schematics@12.0.5": - version "12.0.5" - resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-12.0.5.tgz#db099b6cba1cadf064b87fd675857f6eba167b2a" - integrity sha512-iW3XuDHScr3TXuunlEjF5O01zBpwpLgfr1oEny8PvseFGDlHK4Nj8zNIoIn3Yg936aiFO4GJAC/UXsT8g5vKxQ== - dependencies: - "@angular-devkit/core" "12.0.5" - ora "5.4.0" - rxjs "6.6.7" - -"@angular-devkit/schematics@13.3.5": - version "13.3.5" - resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-13.3.5.tgz#9cb03ac99ee14173a6fa00fd7ca94fa42600c163" - integrity sha512-0N/kL/Vfx0yVAEwa3HYxNx9wYb+G9r1JrLjJQQzDp+z9LtcojNf7j3oey6NXrDUs1WjVZOa/AIdRl3/DuaoG5w== - dependencies: - "@angular-devkit/core" "13.3.5" - jsonc-parser "3.0.0" - magic-string "0.25.7" - ora "5.4.1" - rxjs "6.6.7" - -"@angular-devkit/schematics@13.3.6": - version "13.3.6" - resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-13.3.6.tgz#b02e1eff714c2cf44a54de92410d07cc8cefbb0e" - integrity sha512-yLh5xc92C/FiaAp27coPiKWpSUmwoXF7vMxbJYJTyOXlt0mUITAEAwtrZQNr4yAxW/yvgTdyg7PhXaveQNTUuQ== - dependencies: - "@angular-devkit/core" "13.3.6" - jsonc-parser "3.0.0" - magic-string "0.25.7" - ora "5.4.1" - rxjs "6.6.7" - -"@babel/code-frame@7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" - integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== - dependencies: - "@babel/highlight" "^7.10.4" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.16.7": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" - integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== - dependencies: - "@babel/highlight" "^7.18.6" - -"@babel/code-frame@^7.12.13", "@babel/code-frame@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.14.5.tgz#23b08d740e83f49c5e59945fbf1b43e80bbf4edb" - integrity sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw== - dependencies: - "@babel/highlight" "^7.14.5" - -"@babel/compat-data@^7.15.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.15.0.tgz#2dbaf8b85334796cafbb0f5793a90a2fc010b176" - integrity sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA== - -"@babel/core@^7.1.0", "@babel/core@^7.7.2", "@babel/core@^7.7.5": - version "7.15.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.15.5.tgz#f8ed9ace730722544609f90c9bb49162dc3bf5b9" - integrity sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg== - dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/generator" "^7.15.4" - "@babel/helper-compilation-targets" "^7.15.4" - "@babel/helper-module-transforms" "^7.15.4" - "@babel/helpers" "^7.15.4" - "@babel/parser" "^7.15.5" - "@babel/template" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.4" - 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" - -"@babel/generator@^7.15.4", "@babel/generator@^7.7.2": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.15.4.tgz#85acb159a267ca6324f9793986991ee2022a05b0" - integrity sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw== - dependencies: - "@babel/types" "^7.15.4" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/helper-compilation-targets@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz#cf6d94f30fbefc139123e27dd6b02f65aeedb7b9" - integrity sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ== - dependencies: - "@babel/compat-data" "^7.15.0" - "@babel/helper-validator-option" "^7.14.5" - browserslist "^4.16.6" - semver "^6.3.0" - -"@babel/helper-function-name@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz#845744dafc4381a4a5fb6afa6c3d36f98a787ebc" - integrity sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw== - dependencies: - "@babel/helper-get-function-arity" "^7.15.4" - "@babel/template" "^7.15.4" - "@babel/types" "^7.15.4" - -"@babel/helper-get-function-arity@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz#098818934a137fce78b536a3e015864be1e2879b" - integrity sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-hoist-variables@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz#09993a3259c0e918f99d104261dfdfc033f178df" - integrity sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-member-expression-to-functions@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz#bfd34dc9bba9824a4658b0317ec2fd571a51e6ef" - integrity sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-module-imports@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz#e18007d230632dea19b47853b984476e7b4e103f" - integrity sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-module-transforms@^7.15.4": - version "7.15.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.15.7.tgz#7da80c8cbc1f02655d83f8b79d25866afe50d226" - integrity sha512-ZNqjjQG/AuFfekFTY+7nY4RgBSklgTu970c7Rj3m/JOhIu5KPBUuTA9AY6zaKcUvk4g6EbDXdBnhi35FAssdSw== - dependencies: - "@babel/helper-module-imports" "^7.15.4" - "@babel/helper-replace-supers" "^7.15.4" - "@babel/helper-simple-access" "^7.15.4" - "@babel/helper-split-export-declaration" "^7.15.4" - "@babel/helper-validator-identifier" "^7.15.7" - "@babel/template" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.6" - -"@babel/helper-optimise-call-expression@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz#f310a5121a3b9cc52d9ab19122bd729822dee171" - integrity sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.8.0": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9" - integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ== - -"@babel/helper-replace-supers@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz#52a8ab26ba918c7f6dee28628b07071ac7b7347a" - integrity sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.15.4" - "@babel/helper-optimise-call-expression" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.4" - -"@babel/helper-simple-access@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz#ac368905abf1de8e9781434b635d8f8674bcc13b" - integrity sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-split-export-declaration@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz#aecab92dcdbef6a10aa3b62ab204b085f776e257" - integrity sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-validator-identifier@^7.14.5", "@babel/helper-validator-identifier@^7.14.9", "@babel/helper-validator-identifier@^7.15.7": - version "7.15.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389" - integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w== - -"@babel/helper-validator-identifier@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz#9c97e30d31b2b8c72a1d08984f2ca9b574d7a076" - integrity sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g== - -"@babel/helper-validator-option@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3" - integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow== - -"@babel/helpers@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.15.4.tgz#5f40f02050a3027121a3cf48d497c05c555eaf43" - integrity sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ== - dependencies: - "@babel/template" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.4" - -"@babel/highlight@^7.10.4", "@babel/highlight@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" - integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg== - dependencies: - "@babel/helper-validator-identifier" "^7.14.5" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/highlight@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" - integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== - dependencies: - "@babel/helper-validator-identifier" "^7.18.6" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/parser@^7.1.0", "@babel/parser@^7.15.4", "@babel/parser@^7.15.5", "@babel/parser@^7.7.2": - version "7.15.7" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.15.7.tgz#0c3ed4a2eb07b165dfa85b3cc45c727334c4edae" - integrity sha512-rycZXvQ+xS9QyIcJ9HXeDWf1uxqlbVFAUq0Rq0dbc50Zb/+wUe/ehyfzGfm9KZZF0kBejYgxltBXocP+gKdL2g== - -"@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-bigint@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" - integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" - integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-import-meta@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" - integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" - integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" - integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-top-level-await@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" - integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-typescript@^7.7.2": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz#b82c6ce471b165b5ce420cf92914d6fb46225716" - integrity sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/runtime@^7.18.6": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.9.tgz#b4fcfce55db3d2e5e080d2490f608a3b9f407f4a" - integrity sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/template@^7.15.4", "@babel/template@^7.3.3": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.15.4.tgz#51898d35dcf3faa670c4ee6afcfd517ee139f194" - integrity sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg== - dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/parser" "^7.15.4" - "@babel/types" "^7.15.4" - -"@babel/traverse@^7.1.0", "@babel/traverse@^7.15.4", "@babel/traverse@^7.7.2": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.15.4.tgz#ff8510367a144bfbff552d9e18e28f3e2889c22d" - integrity sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA== - dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/generator" "^7.15.4" - "@babel/helper-function-name" "^7.15.4" - "@babel/helper-hoist-variables" "^7.15.4" - "@babel/helper-split-export-declaration" "^7.15.4" - "@babel/parser" "^7.15.4" - "@babel/types" "^7.15.4" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/types@^7.0.0", "@babel/types@^7.15.4", "@babel/types@^7.15.6", "@babel/types@^7.3.0", "@babel/types@^7.3.3": - version "7.15.6" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.15.6.tgz#99abdc48218b2881c058dd0a7ab05b99c9be758f" - integrity sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig== - dependencies: - "@babel/helper-validator-identifier" "^7.14.9" - to-fast-properties "^2.0.0" - -"@bcoe/v8-coverage@^0.2.3": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" - integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== - -"@colors/colors@1.5.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" - integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== - -"@cspotcode/source-map-support@^0.8.0": - version "0.8.1" - resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" - integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== - dependencies: - "@jridgewell/trace-mapping" "0.3.9" - -"@eslint/eslintrc@^0.4.3": - version "0.4.3" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" - integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== - dependencies: - ajv "^6.12.4" - debug "^4.1.1" - espree "^7.3.0" - globals "^13.9.0" - ignore "^4.0.6" - import-fresh "^3.2.1" - js-yaml "^3.13.1" - minimatch "^3.0.4" - strip-json-comments "^3.1.1" - -"@humanwhocodes/config-array@^0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" - integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== - dependencies: - "@humanwhocodes/object-schema" "^1.2.0" - debug "^4.1.1" - minimatch "^3.0.4" - -"@humanwhocodes/object-schema@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz#87de7af9c231826fdd68ac7258f77c429e0e5fcf" - integrity sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w== - -"@istanbuljs/load-nyc-config@^1.0.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" - integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== - 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" - -"@istanbuljs/schema@^0.1.2": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" - integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== - -"@jest/console@^27.2.2": - version "27.2.2" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.2.2.tgz#a977245155c519ac2ef713ec0e722d13eda893c9" - integrity sha512-m7tbzPWyvSFfoanTknJoDnaeruDARsUe555tkVjG/qeaRDKwyPqqbgs4yFx583gmoETiAts1deeYozR5sVRhNA== - dependencies: - "@jest/types" "^27.1.1" - "@types/node" "*" - chalk "^4.0.0" - jest-message-util "^27.2.2" - jest-util "^27.2.0" - slash "^3.0.0" - -"@jest/core@^27.2.2": - version "27.2.2" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.2.2.tgz#9eea16101b2f04bf799dcdbdf1792d4ef7553ecf" - integrity sha512-4b9km/h9pAGdCkwWYtbfoeiOtajOlGmr5rL1Eq6JCAVbOevOqxWHxJ6daWxRJW9eF6keXJoJ1H+uVAVcdZu8Bg== - dependencies: - "@jest/console" "^27.2.2" - "@jest/reporters" "^27.2.2" - "@jest/test-result" "^27.2.2" - "@jest/transform" "^27.2.2" - "@jest/types" "^27.1.1" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - emittery "^0.8.1" - exit "^0.1.2" - graceful-fs "^4.2.4" - jest-changed-files "^27.1.1" - jest-config "^27.2.2" - jest-haste-map "^27.2.2" - jest-message-util "^27.2.2" - jest-regex-util "^27.0.6" - jest-resolve "^27.2.2" - jest-resolve-dependencies "^27.2.2" - jest-runner "^27.2.2" - jest-runtime "^27.2.2" - jest-snapshot "^27.2.2" - jest-util "^27.2.0" - jest-validate "^27.2.2" - jest-watcher "^27.2.2" - micromatch "^4.0.4" - p-each-series "^2.1.0" - rimraf "^3.0.0" - slash "^3.0.0" - strip-ansi "^6.0.0" - -"@jest/environment@^27.2.2": - version "27.2.2" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.2.2.tgz#2e57b9d2cc01028b0e35fae5833c1c63df4c5e41" - integrity sha512-gO9gVnZfn5ldeOJ5q+35Kru9QWGHEqZCB7W/M+8mD6uCwOGC9HR6mzpLSNRuDsxY/KhaGBYHpgFqtpe4Rl1gDQ== - dependencies: - "@jest/fake-timers" "^27.2.2" - "@jest/types" "^27.1.1" - "@types/node" "*" - jest-mock "^27.1.1" - -"@jest/fake-timers@^27.2.2": - version "27.2.2" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.2.2.tgz#43e6f191c95ae74e95d0ddba2ecb8470b4a288b7" - integrity sha512-gDIIqs0yxyjyxEI9HlJ8SEJ4uCc8qr8BupG1Hcx7tvyk/SLocyXE63rFxL+HQ0ZLMvSyEcJUmYnvvHH1osWiGA== - dependencies: - "@jest/types" "^27.1.1" - "@sinonjs/fake-timers" "^7.0.2" - "@types/node" "*" - jest-message-util "^27.2.2" - jest-mock "^27.1.1" - jest-util "^27.2.0" - -"@jest/globals@^27.2.2": - version "27.2.2" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.2.2.tgz#df66aaafda5c69b2bb0dae548e3cfb345f549c31" - integrity sha512-fWa/Luwod1hyehnuep+zCnOTqTVvyc4HLUU/1VpFNOEu0tCWNSODyvKSSOjtb1bGOpCNjgaDcyjzo5f7rl6a7g== - dependencies: - "@jest/environment" "^27.2.2" - "@jest/types" "^27.1.1" - expect "^27.2.2" - -"@jest/reporters@^27.2.2": - version "27.2.2" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.2.2.tgz#e2d41cd9f8088676b81b9a9908cb1ba67bdbee78" - integrity sha512-ufwZ8XoLChEfPffDeVGroYbhbcYPom3zKDiv4Flhe97rr/o2IfUXoWkDUDoyJ3/V36RFIMjokSu0IJ/pbFtbHg== - dependencies: - "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^27.2.2" - "@jest/test-result" "^27.2.2" - "@jest/transform" "^27.2.2" - "@jest/types" "^27.1.1" - chalk "^4.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.2" - graceful-fs "^4.2.4" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^4.0.3" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.0.2" - jest-haste-map "^27.2.2" - jest-resolve "^27.2.2" - jest-util "^27.2.0" - jest-worker "^27.2.2" - slash "^3.0.0" - source-map "^0.6.0" - string-length "^4.0.1" - terminal-link "^2.0.0" - v8-to-istanbul "^8.0.0" - -"@jest/source-map@^27.0.6": - version "27.0.6" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.0.6.tgz#be9e9b93565d49b0548b86e232092491fb60551f" - integrity sha512-Fek4mi5KQrqmlY07T23JRi0e7Z9bXTOOD86V/uS0EIW4PClvPDqZOyFlLpNJheS6QI0FNX1CgmPjtJ4EA/2M+g== - dependencies: - callsites "^3.0.0" - graceful-fs "^4.2.4" - source-map "^0.6.0" - -"@jest/test-result@^27.2.2": - version "27.2.2" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.2.2.tgz#cd4ba1ca9b0521e463bd4b32349ba1842277563b" - integrity sha512-yENoDEoWlEFI7l5z7UYyJb/y5Q8RqbPd4neAVhKr6l+vVaQOPKf8V/IseSMJI9+urDUIxgssA7RGNyCRhGjZvw== - dependencies: - "@jest/console" "^27.2.2" - "@jest/types" "^27.1.1" - "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" - -"@jest/test-sequencer@^27.2.2": - version "27.2.2" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.2.2.tgz#9a6d735317f525741a5913ee3cdefeffc9b0aba6" - integrity sha512-YnJqwNQP2Zeu0S4TMqkxg6NN7Y1EFq715n/nThNKrvIS9wmRZjDt2XYqsHbuvhAFjshi0iKDQ813NewFITBH+Q== - dependencies: - "@jest/test-result" "^27.2.2" - graceful-fs "^4.2.4" - jest-haste-map "^27.2.2" - jest-runtime "^27.2.2" - -"@jest/transform@^27.2.2": - version "27.2.2" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.2.2.tgz#89b16b4de84354fb48d15712b3ea34cadc1cb600" - integrity sha512-l4Z/7PpajrOjCiXLWLfMY7fgljY0H8EwW7qdzPXXuv2aQF8kY2+Uyj3O+9Popnaw1V7JCw32L8EeI/thqFDkPA== - dependencies: - "@babel/core" "^7.1.0" - "@jest/types" "^27.1.1" - babel-plugin-istanbul "^6.0.0" - chalk "^4.0.0" - convert-source-map "^1.4.0" - fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.2.4" - jest-haste-map "^27.2.2" - jest-regex-util "^27.0.6" - jest-util "^27.2.0" - micromatch "^4.0.4" - pirates "^4.0.1" - slash "^3.0.0" - source-map "^0.6.1" - write-file-atomic "^3.0.0" - -"@jest/types@^27.1.1": - version "27.1.1" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.1.1.tgz#77a3fc014f906c65752d12123a0134359707c0ad" - integrity sha512-yqJPDDseb0mXgKqmNqypCsb85C22K1aY5+LUxh7syIM9n/b0AsaltxNy+o6tt29VcfGDpYEve175bm3uOhcehA== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^16.0.0" - chalk "^4.0.0" - -"@jridgewell/gen-mapping@^0.3.0": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" - 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" - -"@jridgewell/resolve-uri@^3.0.3": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" - integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== - -"@jridgewell/set-array@^1.0.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" - integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== - -"@jridgewell/source-map@^0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.2.tgz#f45351aaed4527a298512ec72f81040c998580fb" - integrity sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw== - dependencies: - "@jridgewell/gen-mapping" "^0.3.0" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.14" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" - integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== - -"@jridgewell/trace-mapping@0.3.9": - version "0.3.9" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" - integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@jridgewell/trace-mapping@^0.3.14", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.15" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz#aba35c48a38d3fd84b37e66c9c0423f9744f9774" - integrity sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@nestjs/cli@^8.1.1": - version "8.2.8" - resolved "https://registry.yarnpkg.com/@nestjs/cli/-/cli-8.2.8.tgz#63e5b477f90e6d0238365dcc6236b95bf4f0c807" - integrity sha512-y5Imcw1EY0OxD3POAM7SLUB1rFdn5FjbfSsyJrokjKmXY+i6KcBdbRrv3Ox7aeJ4W7wXuckIXZEUlK6lC52dnA== - dependencies: - "@angular-devkit/core" "13.3.6" - "@angular-devkit/schematics" "13.3.6" - "@angular-devkit/schematics-cli" "13.3.6" - "@nestjs/schematics" "^8.0.3" - chalk "3.0.0" - chokidar "3.5.3" - cli-table3 "0.6.2" - commander "4.1.1" - fork-ts-checker-webpack-plugin "7.2.11" - inquirer "7.3.3" - node-emoji "1.11.0" - ora "5.4.1" - os-name "4.0.1" - rimraf "3.0.2" - shelljs "0.8.5" - source-map-support "0.5.21" - tree-kill "1.2.2" - tsconfig-paths "3.14.1" - tsconfig-paths-webpack-plugin "3.5.2" - typescript "4.7.4" - webpack "5.73.0" - webpack-node-externals "3.0.0" - -"@nestjs/common@^8.0.0": - version "8.0.7" - resolved "https://registry.yarnpkg.com/@nestjs/common/-/common-8.0.7.tgz#b77d904d22c6d7dd7424b306c5ff4946f183cbcb" - integrity sha512-p9dF6rFE8SYIUphzTCtQ2FoE1NVsAnX5jOPsmRvP0DlleKSfE/SizzkM6YmVUM98yyOvlGuHGV1X0NoSP3azCg== - dependencies: - axios "0.21.4" - iterare "1.2.1" - tslib "2.3.1" - uuid "8.3.2" - -"@nestjs/config@^2.1.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@nestjs/config/-/config-2.2.0.tgz#9f3da35f7c4a58724c0a0817d6f04b66e6703430" - integrity sha512-78Eg6oMbCy3D/YvqeiGBTOWei1Jwi3f2pSIZcZ1QxY67kYsJzTRTkwRT8Iv30DbK0sGKc1mcloDLD5UXgZAZtg== - dependencies: - dotenv "16.0.1" - dotenv-expand "8.0.3" - lodash "4.17.21" - uuid "8.3.2" - -"@nestjs/core@^8.0.0": - version "8.0.7" - resolved "https://registry.yarnpkg.com/@nestjs/core/-/core-8.0.7.tgz#49369272a184e62ceb4761f82626a13eeb6cec15" - integrity sha512-A8n+rw8C3yp5hpvmHeQ+x7NjPOe+m/8ITI2tiv8cJeOjPaXn2nhViSB7uwKaNUP1MBgh/7y0HVafFBHzPBZj3g== - dependencies: - "@nuxtjs/opencollective" "0.3.2" - fast-safe-stringify "2.0.8" - iterare "1.2.1" - object-hash "2.2.0" - path-to-regexp "3.2.0" - tslib "2.3.1" - uuid "8.3.2" - -"@nestjs/mapped-types@*", "@nestjs/mapped-types@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@nestjs/mapped-types/-/mapped-types-1.0.0.tgz#52a0441795f6da8144a35970d3ebc19281f31cfd" - integrity sha512-26AW5jHadLXtvHs+M+Agd9KZ92dDlBrmD0rORlBlvn2KvsWs4JRaKl2mUsrW7YsdZeAu3Hc4ukqyYyDdyCmMWQ== - -"@nestjs/platform-express@^8.0.0": - version "8.0.7" - resolved "https://registry.yarnpkg.com/@nestjs/platform-express/-/platform-express-8.0.7.tgz#78c0882c5670e4bb104ea2d3d9359b3a0dd9a332" - integrity sha512-STTF5XF+JBG9pb+uwUs15zKe3UUJ/Kg7mxPGUpaqsxlQG0v6HI/6WwiVt2ghKpF2YQi2Boshech4SVbsGLxsag== - dependencies: - body-parser "1.19.0" - cors "2.8.5" - express "4.17.1" - multer "1.4.3" - tslib "2.3.1" - -"@nestjs/schedule@^2.0.1": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@nestjs/schedule/-/schedule-2.1.0.tgz#a2e21b2078a0c3d56552d40cc97336aa5bbfecdf" - integrity sha512-4Xaw56WiW3VsxEPPnj/iDtfjcO+sUZyYAeRxD0gnF5havncxjAnv52Iw7UH3DuzzUA784xPGgGje3Fq0Gu925g== - dependencies: - cron "2.0.0" - uuid "8.3.2" - -"@nestjs/schematics@^8.0.0": - version "8.0.3" - resolved "https://registry.yarnpkg.com/@nestjs/schematics/-/schematics-8.0.3.tgz#b2247e6f5e8dd38e67969a662437f61b48841456" - integrity sha512-A5qyS9yv6v2RIBqbsyYG57NfYA8Jm/aypRV1nc7JXjhdfDHwWKqCsgQ/7/82vVjhlvVAfr5x/dpCWqcF3XYd7w== - dependencies: - "@angular-devkit/core" "12.0.5" - "@angular-devkit/schematics" "12.0.5" - fs-extra "10.0.0" - jsonc-parser "3.0.0" - pluralize "8.0.0" - -"@nestjs/schematics@^8.0.3": - version "8.0.11" - resolved "https://registry.yarnpkg.com/@nestjs/schematics/-/schematics-8.0.11.tgz#5d0c56184826660a2c01b1c326dbdbb12880e864" - integrity sha512-W/WzaxgH5aE01AiIErE9QrQJ73VR/M/8p8pq0LZmjmNcjZqU5kQyOWUxZg13WYfSpJdOa62t6TZRtFDmgZPoIg== - dependencies: - "@angular-devkit/core" "13.3.5" - "@angular-devkit/schematics" "13.3.5" - fs-extra "10.1.0" - jsonc-parser "3.0.0" - pluralize "8.0.0" - -"@nestjs/serve-static@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@nestjs/serve-static/-/serve-static-3.0.0.tgz#085e7ebbb3c6d6e35b227ea57c8e988c87847309" - integrity sha512-TpXjgs4136dQqWUjEcONqppqXDsrJhRkmKWzuBMOUAnP4HjHpNmlycvkHnDnWSoG2YD4a7Enh4ViYGWqCfHStA== - dependencies: - path-to-regexp "0.2.5" - -"@nestjs/swagger@^5.1.1": - version "5.1.1" - resolved "https://registry.yarnpkg.com/@nestjs/swagger/-/swagger-5.1.1.tgz#c5ab24f01758fbfa50e686cd7f2912659402cdb6" - integrity sha512-vdfTv/gpibGNwG9gmryG5zdVXR65ia6myteWju9FPpZaoICphzAUZotV23dF75JzpwV2Zv+CGkXOxUiqsjxCdg== - dependencies: - "@nestjs/mapped-types" "1.0.0" - lodash "4.17.21" - path-to-regexp "3.2.0" - -"@nestjs/testing@^8.0.0": - version "8.0.7" - resolved "https://registry.yarnpkg.com/@nestjs/testing/-/testing-8.0.7.tgz#0a2d3d61759c71461fbef31943567c0eb55d5313" - integrity sha512-HNWBEm19N3w/XcQ4mL4AMWI43jrb4hKjKcKSvuqIQ5jRjlY/ezCwjv0NJ9dhhpabT6IQ38zko47SNMJaJRdkmA== - dependencies: - optional "0.1.4" - tslib "2.3.1" - -"@nestjs/typeorm@^8.1.0": - version "8.1.4" - resolved "https://registry.yarnpkg.com/@nestjs/typeorm/-/typeorm-8.1.4.tgz#ab2286b39b69d1ce74e039d1847708d56c2c3e60" - integrity sha512-hKv0Y9PG7YkHQfjsrNqM1s/VajlT7Mla8gaoblmuLzgMKsOQFsZXSHlXNxXZ8CA4aCPeDUiXtvqc4zocadGiIQ== - dependencies: - uuid "8.3.2" - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@nuxtjs/opencollective@0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@nuxtjs/opencollective/-/opencollective-0.3.2.tgz#620ce1044f7ac77185e825e1936115bb38e2681c" - integrity sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA== - dependencies: - chalk "^4.1.0" - consola "^2.15.0" - node-fetch "^2.6.1" - -"@onflow/config@^1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@onflow/config/-/config-1.0.3.tgz#6e27588568628ee508535b06cd3a2d788e5dcdeb" - integrity sha512-ryO0ZXXayz8IKdEdI51PAJgs5WYo7J0Kb+ccNaTS7nRuRq752/r6O8EfqEz3/R2+KsV7XdP3FVhR2tPUhxWhag== - dependencies: - "@babel/runtime" "^7.18.6" - "@onflow/util-actor" "^1.1.1" - -"@onflow/fcl@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@onflow/fcl/-/fcl-1.2.0.tgz#cce0ec8ab3efe4ca4c86d5e968b52690b1a40fc7" - integrity sha512-vgPsDuYhRmCVEQWRcfyY3KPxHAk+EGF4MLv08VUpN4vudDUY1J3AXM/NBk/ebeBis7CfgqC5gAarLsHX1omvIg== - dependencies: - "@babel/runtime" "^7.18.6" - "@onflow/config" "^1.0.3" - "@onflow/interaction" "0.0.11" - "@onflow/rlp" "^1.0.2" - "@onflow/sdk" "^1.1.1" - "@onflow/types" "^1.0.3" - "@onflow/util-actor" "^1.1.1" - "@onflow/util-address" "^1.0.2" - "@onflow/util-invariant" "^1.0.2" - "@onflow/util-logger" "^1.1.1" - "@onflow/util-template" "^1.0.3" - "@onflow/util-uid" "^1.0.2" - -"@onflow/interaction@0.0.11": - version "0.0.11" - resolved "https://registry.yarnpkg.com/@onflow/interaction/-/interaction-0.0.11.tgz#4db8f4304039e33d6fc3b14c38b392d724113374" - integrity sha512-Xuq1Mmx6Wyba/F/L+QLQs0yJeQDsIDwy5SKk5vrCuVgIj0yD8k506g5L8ODrbM1LWll8i0tQsoOi0F85vNl5sA== - -"@onflow/rlp@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@onflow/rlp/-/rlp-1.0.2.tgz#df4a5111fc2991a547fbc15bf5b27f27bb552d50" - integrity sha512-YjIMTQZ7ewYcXsKo6S0dKjUr9uoCFy8NlpH2NX9Xy+L76MQUfJNFJksepDG0HDo8/+9UDdh/cGIbuxW7rUp3QQ== - dependencies: - "@babel/runtime" "^7.18.6" - buffer "^6.0.3" - -"@onflow/sdk@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@onflow/sdk/-/sdk-1.1.1.tgz#ac7e18e723499b6c98b4c00f0b62bf6c69bb9d61" - integrity sha512-i+ZYja6jBq6HU8Hnpq/AoeMDQOazrxhgds0yU9KqxOKAA9tZ4DUv4J47eHSQbUEv09BbUeZAcIc/ZdqVqrMjJQ== - dependencies: - "@babel/runtime" "^7.18.6" - "@onflow/config" "^1.0.3" - "@onflow/rlp" "^1.0.2" - "@onflow/transport-http" "^1.4.0" - "@onflow/util-actor" "^1.1.1" - "@onflow/util-address" "^1.0.2" - "@onflow/util-invariant" "^1.0.2" - "@onflow/util-logger" "^1.1.1" - "@onflow/util-template" "^1.0.3" - deepmerge "^4.2.2" - sha3 "^2.1.4" - -"@onflow/transport-http@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@onflow/transport-http/-/transport-http-1.4.0.tgz#7b1ab53db480b6e5d692aeedbeb5319c71238de7" - integrity sha512-8rVpGoGovZVxxenYOtyUXUrpPYDJ9N5O9sRJay+gC3mcAyRyc9EHLlbh0QJsoC9Y71sMm5t5jqjR2kBfNal7Hw== - dependencies: - "@babel/runtime" "^7.18.6" - "@onflow/util-address" "^1.0.2" - "@onflow/util-invariant" "^1.0.2" - "@onflow/util-logger" "^1.1.1" - "@onflow/util-template" "^1.0.3" - node-fetch "^2.6.7" - -"@onflow/types@^1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@onflow/types/-/types-1.0.3.tgz#5e0bce7940b96228299f9999a2a4383fcd5db528" - integrity sha512-7za7NgzRvapB50icVmrL21rVHgPaMS/0K9IKXj0FVZRMo3CSI6MV2qLoGftRVX8oDfiH0Lj/1NWD/iSUW6Ed5w== - dependencies: - "@babel/runtime" "^7.18.6" - -"@onflow/util-actor@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@onflow/util-actor/-/util-actor-1.1.1.tgz#2e62edef2ea4a1dcf9ec457f44c80af495b98b1c" - integrity sha512-y74KwQ2T8BUXiP0f+OCifAD1CrBepzCWL1C0lKdSDly7so8RVttc98Hp3oUkDJxoA0KKyAyEjshxw7DSLxYXFw== - dependencies: - "@babel/runtime" "^7.18.6" - queue-microtask "1.1.2" - -"@onflow/util-address@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@onflow/util-address/-/util-address-1.0.2.tgz#ef9bdbd295b258b0034bb5b25e5a99d6d1c9d34e" - integrity sha512-2kjRZK+DxyEoujm4+1gO0lqGFLdaTJC1DuvBF7XqgocmFdayad/OdPFVgaEi06xymmi2kfdn/JFdvBwdZHkJGQ== - dependencies: - "@babel/runtime" "^7.18.6" - -"@onflow/util-invariant@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@onflow/util-invariant/-/util-invariant-1.0.2.tgz#9327a5574d28e782bf9c30b8e4abdf482df6bc5c" - integrity sha512-Z5YPAJYUxEoSJ9hGB3jyr0C8gG1VbwX88naF0onBjiMZ89QYbbRG8nup7WWHN2fo/tWo4ElauOpCwU70see0lg== - dependencies: - "@babel/runtime" "^7.18.6" - -"@onflow/util-logger@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@onflow/util-logger/-/util-logger-1.1.1.tgz#d0ccee4121378c098585be12a005b75bc6546462" - integrity sha512-bVGzjxcLKl4cpb/kFiHtIrdkKDCpZkj1DFMXjhQzpW0MqTmmp1rKf/Fq9B0Y1dbZKh6IxJeGCd5dhNPLmSfb9g== - dependencies: - "@babel/runtime" "^7.18.6" - "@onflow/config" "^1.0.3" - -"@onflow/util-template@^1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@onflow/util-template/-/util-template-1.0.3.tgz#d1be934dbd037b7217848cc3fe6b797b5603cae5" - integrity sha512-ZBckseo1IwjKO4/F7PvEH4sKRFVAmVAYq0f10Zg79xQ29YF7oU58uXCH4MAjJ8eaZsS5/jeiEif0291bVHH5Rg== - dependencies: - "@babel/runtime" "^7.18.6" - -"@onflow/util-uid@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@onflow/util-uid/-/util-uid-1.0.2.tgz#0f157730e195ac32441bbef6d23b2dc9b394d46f" - integrity sha512-1BSM0l53QOFmEZ876AX+KdnJmXPRhGlS7vO5WiJULE8GUPyoW6WY2eyk0ZpHjxI0BnKpHOruyZeMilw1jZQSdA== - dependencies: - "@babel/runtime" "^7.18.6" - -"@sinonjs/commons@^1.7.0": - version "1.8.3" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" - integrity sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ== - dependencies: - type-detect "4.0.8" - -"@sinonjs/fake-timers@^7.0.2": - version "7.1.2" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-7.1.2.tgz#2524eae70c4910edccf99b2f4e6efc5894aff7b5" - integrity sha512-iQADsW4LBMISqZ6Ci1dupJL9pprqwcVFTcOsEmQOEhW+KLCVn/Y4Jrvg2k19fIHCp+iFprriYPTdRcQR8NbUPg== - dependencies: - "@sinonjs/commons" "^1.7.0" - -"@sqltools/formatter@^1.2.2": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@sqltools/formatter/-/formatter-1.2.3.tgz#1185726610acc37317ddab11c3c7f9066966bd20" - integrity sha512-O3uyB/JbkAEMZaP3YqyHH7TMnex7tWyCbCI4EfJdOCoN6HIhqdJBWTM6aCCiWQ/5f5wxjgU735QAIpJbjDvmzg== - -"@tootallnate/once@1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" - integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== - -"@tsconfig/node10@^1.0.7": - version "1.0.8" - resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.8.tgz#c1e4e80d6f964fbecb3359c43bd48b40f7cadad9" - integrity sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg== - -"@tsconfig/node12@^1.0.7": - version "1.0.9" - resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.9.tgz#62c1f6dee2ebd9aead80dc3afa56810e58e1a04c" - integrity sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw== - -"@tsconfig/node14@^1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.1.tgz#95f2d167ffb9b8d2068b0b235302fafd4df711f2" - integrity sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg== - -"@tsconfig/node16@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.2.tgz#423c77877d0569db20e1fc80885ac4118314010e" - integrity sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA== - -"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": - version "7.1.16" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.16.tgz#bc12c74b7d65e82d29876b5d0baf5c625ac58702" - integrity sha512-EAEHtisTMM+KaKwfWdC3oyllIqswlznXCIVCt7/oRNrh+DhgT4UEBNC/jlADNjvw7UnfbcdkGQcPVZ1xYiLcrQ== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__generator@*": - version "7.6.3" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.3.tgz#f456b4b2ce79137f768aa130d2423d2f0ccfaba5" - integrity sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA== - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - version "7.4.1" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" - integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.14.2.tgz#ffcd470bbb3f8bf30481678fb5502278ca833a43" - integrity sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA== - dependencies: - "@babel/types" "^7.3.0" - -"@types/body-parser@*": - version "1.19.1" - resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.1.tgz#0c0174c42a7d017b818303d4b5d969cb0b75929c" - integrity sha512-a6bTJ21vFOGIkwM0kzh9Yr89ziVxq4vYH2fQ6N8AeipEzai/cFK6aGMArIkUeIdRIgpwQa+2bXiLuUJCpSf2Cg== - dependencies: - "@types/connect" "*" - "@types/node" "*" - -"@types/connect@*": - version "3.4.35" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" - integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== - dependencies: - "@types/node" "*" - -"@types/cookiejar@*": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@types/cookiejar/-/cookiejar-2.1.2.tgz#66ad9331f63fe8a3d3d9d8c6e3906dd10f6446e8" - integrity sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog== - -"@types/cron@^1.7.3": - version "1.7.3" - resolved "https://registry.yarnpkg.com/@types/cron/-/cron-1.7.3.tgz#993db7d54646f61128c851607b64ba4495deae93" - integrity sha512-iPmUXyIJG1Js+ldPYhOQcYU3kCAQ2FWrSkm1FJPoii2eYSn6wEW6onPukNTT0bfiflexNSRPl6KWmAIqS+36YA== - dependencies: - "@types/node" "*" - moment ">=2.14.0" - -"@types/eslint-scope@^3.7.3": - version "3.7.4" - resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.4.tgz#37fc1223f0786c39627068a12e94d6e6fc61de16" - integrity sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA== - dependencies: - "@types/eslint" "*" - "@types/estree" "*" - -"@types/eslint@*": - version "8.4.6" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.6.tgz#7976f054c1bccfcf514bff0564c0c41df5c08207" - integrity sha512-/fqTbjxyFUaYNO7VcW5g+4npmqVACz1bB7RTHYuLj+PRjw9hrCwrUXVQFpChUS0JsyEFvMZ7U/PfmvWgxJhI9g== - dependencies: - "@types/estree" "*" - "@types/json-schema" "*" - -"@types/estree@*": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2" - integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ== - -"@types/estree@^0.0.51": - version "0.0.51" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" - integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== - -"@types/express-serve-static-core@^4.17.18": - version "4.17.24" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.24.tgz#ea41f93bf7e0d59cd5a76665068ed6aab6815c07" - integrity sha512-3UJuW+Qxhzwjq3xhwXm2onQcFHn76frIYVbTu+kn24LFxI+dEhdfISDFovPB8VpEgW8oQCTpRuCe+0zJxB7NEA== - dependencies: - "@types/node" "*" - "@types/qs" "*" - "@types/range-parser" "*" - -"@types/express@^4.17.13": - version "4.17.13" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.13.tgz#a76e2995728999bab51a33fabce1d705a3709034" - integrity sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA== - dependencies: - "@types/body-parser" "*" - "@types/express-serve-static-core" "^4.17.18" - "@types/qs" "*" - "@types/serve-static" "*" - -"@types/graceful-fs@^4.1.2": - version "4.1.5" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" - integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== - dependencies: - "@types/node" "*" - -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" - integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw== - -"@types/istanbul-lib-report@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" - integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== - dependencies: - "@types/istanbul-lib-coverage" "*" - -"@types/istanbul-reports@^3.0.0": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" - integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== - dependencies: - "@types/istanbul-lib-report" "*" - -"@types/jest@^27.0.2": - version "27.0.2" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.0.2.tgz#ac383c4d4aaddd29bbf2b916d8d105c304a5fcd7" - integrity sha512-4dRxkS/AFX0c5XW6IPMNOydLn2tEhNhJV7DnYK+0bjoJZ+QTmfucBlihX7aoEsh/ocYtkLC73UbnBXBXIxsULA== - dependencies: - jest-diff "^27.0.0" - pretty-format "^27.0.0" - -"@types/json-schema@*", "@types/json-schema@^7.0.8": - version "7.0.11" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" - integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== - -"@types/json-schema@^7.0.7": - version "7.0.9" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" - integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== - -"@types/json5@^0.0.29": - version "0.0.29" - resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" - integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== - -"@types/mime@^1": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" - integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== - -"@types/node@*", "@types/node@^16.11.6": - version "16.11.6" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.6.tgz#6bef7a2a0ad684cf6e90fcfe31cecabd9ce0a3ae" - integrity sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w== - -"@types/parse-json@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" - integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== - -"@types/prettier@^2.1.5": - version "2.4.0" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.4.0.tgz#900b13362610ccd3570fb6eefb911a6732973d00" - integrity sha512-WHRsy5nMpjXfU9B0LqOqPT06EI2+8Xv5NERy0pLxJLbU98q7uhcGogQzfX+rXpU7S5mgHsLxHrLCufZcV/P8TQ== - -"@types/qs@*": - version "6.9.7" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" - integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== - -"@types/range-parser@*": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" - integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== - -"@types/serve-static@*": - version "1.13.10" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.10.tgz#f5e0ce8797d2d7cc5ebeda48a52c96c4fa47a8d9" - integrity sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ== - dependencies: - "@types/mime" "^1" - "@types/node" "*" - -"@types/stack-utils@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" - integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== - -"@types/superagent@*": - version "4.1.13" - resolved "https://registry.yarnpkg.com/@types/superagent/-/superagent-4.1.13.tgz#0aaa3f4ff9404b94932d1dcdfb7f3d39d23997a0" - integrity sha512-YIGelp3ZyMiH0/A09PMAORO0EBGlF5xIKfDpK74wdYvWUs2o96b5CItJcWPdH409b7SAXIIG6p8NdU/4U2Maww== - dependencies: - "@types/cookiejar" "*" - "@types/node" "*" - -"@types/supertest@^2.0.11": - version "2.0.11" - resolved "https://registry.yarnpkg.com/@types/supertest/-/supertest-2.0.11.tgz#2e70f69f220bc77b4f660d72c2e1a4231f44a77d" - integrity sha512-uci4Esokrw9qGb9bvhhSVEjd6rkny/dk5PK/Qz4yxKiyppEI+dOPlNrZBahE3i+PoKFYyDxChVXZ/ysS/nrm1Q== - dependencies: - "@types/superagent" "*" - -"@types/validator@^13.1.3": - version "13.6.3" - resolved "https://registry.yarnpkg.com/@types/validator/-/validator-13.6.3.tgz#31ca2e997bf13a0fffca30a25747d5b9f7dbb7de" - integrity sha512-fWG42pMJOL4jKsDDZZREnXLjc3UE0R8LOJfARWYg6U966rxDT7TYejYzLnUF5cvSObGg34nd0+H2wHHU5Omdfw== - -"@types/yargs-parser@*": - version "20.2.1" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.1.tgz#3b9ce2489919d9e4fea439b76916abc34b2df129" - integrity sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw== - -"@types/yargs@^16.0.0": - version "16.0.4" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.4.tgz#26aad98dd2c2a38e421086ea9ad42b9e51642977" - integrity sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw== - dependencies: - "@types/yargs-parser" "*" - -"@typescript-eslint/eslint-plugin@^4.28.2": - version "4.31.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.31.2.tgz#9f41efaee32cdab7ace94b15bd19b756dd099b0a" - integrity sha512-w63SCQ4bIwWN/+3FxzpnWrDjQRXVEGiTt9tJTRptRXeFvdZc/wLiz3FQUwNQ2CVoRGI6KUWMNUj/pk63noUfcA== - dependencies: - "@typescript-eslint/experimental-utils" "4.31.2" - "@typescript-eslint/scope-manager" "4.31.2" - debug "^4.3.1" - functional-red-black-tree "^1.0.1" - regexpp "^3.1.0" - semver "^7.3.5" - tsutils "^3.21.0" - -"@typescript-eslint/experimental-utils@4.31.2": - version "4.31.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.31.2.tgz#98727a9c1e977dd5d20c8705e69cd3c2a86553fa" - integrity sha512-3tm2T4nyA970yQ6R3JZV9l0yilE2FedYg8dcXrTar34zC9r6JB7WyBQbpIVongKPlhEMjhQ01qkwrzWy38Bk1Q== - dependencies: - "@types/json-schema" "^7.0.7" - "@typescript-eslint/scope-manager" "4.31.2" - "@typescript-eslint/types" "4.31.2" - "@typescript-eslint/typescript-estree" "4.31.2" - eslint-scope "^5.1.1" - eslint-utils "^3.0.0" - -"@typescript-eslint/parser@^4.28.2": - version "4.31.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.31.2.tgz#54aa75986e3302d91eff2bbbaa6ecfa8084e9c34" - integrity sha512-EcdO0E7M/sv23S/rLvenHkb58l3XhuSZzKf6DBvLgHqOYdL6YFMYVtreGFWirxaU2mS1GYDby3Lyxco7X5+Vjw== - dependencies: - "@typescript-eslint/scope-manager" "4.31.2" - "@typescript-eslint/types" "4.31.2" - "@typescript-eslint/typescript-estree" "4.31.2" - debug "^4.3.1" - -"@typescript-eslint/scope-manager@4.31.2": - version "4.31.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.31.2.tgz#1d528cb3ed3bcd88019c20a57c18b897b073923a" - integrity sha512-2JGwudpFoR/3Czq6mPpE8zBPYdHWFGL6lUNIGolbKQeSNv4EAiHaR5GVDQaLA0FwgcdcMtRk+SBJbFGL7+La5w== - dependencies: - "@typescript-eslint/types" "4.31.2" - "@typescript-eslint/visitor-keys" "4.31.2" - -"@typescript-eslint/types@4.31.2": - version "4.31.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.31.2.tgz#2aea7177d6d744521a168ed4668eddbd912dfadf" - integrity sha512-kWiTTBCTKEdBGrZKwFvOlGNcAsKGJSBc8xLvSjSppFO88AqGxGNYtF36EuEYG6XZ9vT0xX8RNiHbQUKglbSi1w== - -"@typescript-eslint/typescript-estree@4.31.2": - version "4.31.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.31.2.tgz#abfd50594d8056b37e7428df3b2d185ef2d0060c" - integrity sha512-ieBq8U9at6PvaC7/Z6oe8D3czeW5d//Fo1xkF/s9394VR0bg/UaMYPdARiWyKX+lLEjY3w/FNZJxitMsiWv+wA== - dependencies: - "@typescript-eslint/types" "4.31.2" - "@typescript-eslint/visitor-keys" "4.31.2" - debug "^4.3.1" - globby "^11.0.3" - is-glob "^4.0.1" - semver "^7.3.5" - tsutils "^3.21.0" - -"@typescript-eslint/visitor-keys@4.31.2": - version "4.31.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.31.2.tgz#7d5b4a4705db7fe59ecffb273c1d082760f635cc" - integrity sha512-PrBId7EQq2Nibns7dd/ch6S6/M4/iwLM9McbgeEbCXfxdwRUNxJ4UNreJ6Gh3fI2GNKNrWnQxKL7oCPmngKBug== - dependencies: - "@typescript-eslint/types" "4.31.2" - eslint-visitor-keys "^2.0.0" - -"@webassemblyjs/ast@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" - integrity sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw== - dependencies: - "@webassemblyjs/helper-numbers" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - -"@webassemblyjs/floating-point-hex-parser@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz#f6c61a705f0fd7a6aecaa4e8198f23d9dc179e4f" - integrity sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ== - -"@webassemblyjs/helper-api-error@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16" - integrity sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg== - -"@webassemblyjs/helper-buffer@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5" - integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA== - -"@webassemblyjs/helper-numbers@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae" - integrity sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ== - dependencies: - "@webassemblyjs/floating-point-hex-parser" "1.11.1" - "@webassemblyjs/helper-api-error" "1.11.1" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/helper-wasm-bytecode@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1" - integrity sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q== - -"@webassemblyjs/helper-wasm-section@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a" - integrity sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-buffer" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/wasm-gen" "1.11.1" - -"@webassemblyjs/ieee754@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614" - integrity sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5" - integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff" - integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ== - -"@webassemblyjs/wasm-edit@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6" - integrity sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-buffer" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/helper-wasm-section" "1.11.1" - "@webassemblyjs/wasm-gen" "1.11.1" - "@webassemblyjs/wasm-opt" "1.11.1" - "@webassemblyjs/wasm-parser" "1.11.1" - "@webassemblyjs/wast-printer" "1.11.1" - -"@webassemblyjs/wasm-gen@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76" - integrity sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/ieee754" "1.11.1" - "@webassemblyjs/leb128" "1.11.1" - "@webassemblyjs/utf8" "1.11.1" - -"@webassemblyjs/wasm-opt@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2" - integrity sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-buffer" "1.11.1" - "@webassemblyjs/wasm-gen" "1.11.1" - "@webassemblyjs/wasm-parser" "1.11.1" - -"@webassemblyjs/wasm-parser@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199" - integrity sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-api-error" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/ieee754" "1.11.1" - "@webassemblyjs/leb128" "1.11.1" - "@webassemblyjs/utf8" "1.11.1" - -"@webassemblyjs/wast-printer@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0" - integrity sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@xtuc/long" "4.2.2" - -"@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== - -"@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== - -abab@^2.0.3, abab@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" - integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== - -accepts@~1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" - integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== - dependencies: - mime-types "~2.1.24" - negotiator "0.6.2" - -acorn-globals@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" - integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== - dependencies: - acorn "^7.1.1" - acorn-walk "^7.1.1" - -acorn-import-assertions@^1.7.6: - version "1.8.0" - resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" - integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== - -acorn-jsx@^5.3.1: - version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn-walk@^7.1.1: - version "7.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" - integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== - -acorn-walk@^8.1.1: - version "8.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" - integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== - -acorn@^7.1.1, acorn@^7.4.0: - version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== - -acorn@^8.2.4, acorn@^8.4.1: - version "8.5.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.5.0.tgz#4512ccb99b3698c752591e9bb4472e38ad43cee2" - integrity sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q== - -acorn@^8.5.0: - version "8.8.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" - integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== - -agent-base@6: - version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== - dependencies: - debug "4" - -aggregate-error@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" - integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== - dependencies: - clean-stack "^2.0.0" - indent-string "^4.0.0" - -ajv-formats@2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.0.2.tgz#69875cb99d76c74be46e9c7a4444bc232354eba0" - integrity sha512-Brah4Uo5/U8v76c6euTwtjVFFaVishwnJrQBYpev1JRh4vjA1F4HY3UzQez41YUCszUCXKagG8v6eVRBHV1gkw== - dependencies: - ajv "^8.0.0" - -ajv-formats@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" - integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== - dependencies: - ajv "^8.0.0" - -ajv-keywords@^3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" - integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== - -ajv@8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.2.0.tgz#c89d3380a784ce81b2085f48811c4c101df4c602" - integrity sha512-WSNGFuyWd//XO8n/m/EaOlNLtO0yL8EXT/74LqT4khdhpZjP7lkj/kT5uwRmGitKEVp/Oj7ZUHeGfPtgHhQ5CA== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - -ajv@8.9.0: - version "8.9.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.9.0.tgz#738019146638824dea25edcf299dcba1b0e7eb18" - integrity sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - -ajv@^6.10.0, ajv@^6.12.4, ajv@^6.12.5: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - 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" - -ajv@^8.0.0, ajv@^8.0.1: - version "8.6.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.6.0.tgz#60cc45d9c46a477d80d92c48076d972c342e5720" - integrity sha512-cnUG4NSBiM4YFBxgZIj/In3/6KX+rQ2l2YPRVcvAMQGWEPKuXoPIhxzwqh31jA3IPbI4qEOp/5ILI4ynioXsGQ== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - -ansi-colors@4.1.1, ansi-colors@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" - integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== - -ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: - version "4.3.2" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== - dependencies: - type-fest "^0.21.3" - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-regex@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" - integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -ansi-styles@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" - integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== - -ansi-styles@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.1.0.tgz#87313c102b8118abd57371afab34618bf7350ed3" - integrity sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ== - -any-promise@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" - integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== - -anymatch@^3.0.3, anymatch@~3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -app-root-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/app-root-path/-/app-root-path-3.0.0.tgz#210b6f43873227e18a4b810a032283311555d5ad" - integrity sha512-qMcx+Gy2UZynHjOHOIXPNvpf+9cjvk3cWrBBK7zg4gH9+clobJRb9NGzcT7mQTcV/6Gm/1WelUtqxVXnNlrwcw== - -append-field@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/append-field/-/append-field-1.0.0.tgz#1e3440e915f0b1203d23748e78edd7b9b5b43e56" - integrity sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw== - -arg@^4.1.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" - integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -astral-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" - integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== - -axios@0.21.4, axios@^0.21.4: - version "0.21.4" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" - integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== - dependencies: - follow-redirects "^1.14.0" - -babel-jest@^27.2.2: - version "27.2.2" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.2.2.tgz#d7e96f3f6f56be692de948092697e1bfea7f1184" - integrity sha512-XNFNNfGKnZXzhej7TleVP4s9ktH5JjRW8Rmcbb223JJwKB/gmTyeWN0JfiPtSgnjIjDXtKNoixiy0QUHtv3vFA== - dependencies: - "@jest/transform" "^27.2.2" - "@jest/types" "^27.1.1" - "@types/babel__core" "^7.1.14" - babel-plugin-istanbul "^6.0.0" - babel-preset-jest "^27.2.0" - chalk "^4.0.0" - graceful-fs "^4.2.4" - slash "^3.0.0" - -babel-plugin-istanbul@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" - integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^4.0.0" - test-exclude "^6.0.0" - -babel-plugin-jest-hoist@^27.2.0: - version "27.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.2.0.tgz#79f37d43f7e5c4fdc4b2ca3e10cc6cf545626277" - integrity sha512-TOux9khNKdi64mW+0OIhcmbAn75tTlzKhxmiNXevQaPbrBYK7YKjP1jl6NHTJ6XR5UgUrJbCnWlKVnJn29dfjw== - dependencies: - "@babel/template" "^7.3.3" - "@babel/types" "^7.3.3" - "@types/babel__core" "^7.0.0" - "@types/babel__traverse" "^7.0.6" - -babel-preset-current-node-syntax@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" - integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== - dependencies: - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-bigint" "^7.8.3" - "@babel/plugin-syntax-class-properties" "^7.8.3" - "@babel/plugin-syntax-import-meta" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-top-level-await" "^7.8.3" - -babel-preset-jest@^27.2.0: - version "27.2.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.2.0.tgz#556bbbf340608fed5670ab0ea0c8ef2449fba885" - integrity sha512-z7MgQ3peBwN5L5aCqBKnF6iqdlvZvFUQynEhu0J+X9nHLU72jO3iY331lcYrg+AssJ8q7xsv5/3AICzVmJ/wvg== - dependencies: - babel-plugin-jest-hoist "^27.2.0" - babel-preset-current-node-syntax "^1.0.0" - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -bl@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" - integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - -body-parser@1.19.0: - version "1.19.0" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" - integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== - dependencies: - bytes "3.1.0" - content-type "~1.0.4" - debug "2.6.9" - depd "~1.1.2" - http-errors "1.7.2" - iconv-lite "0.4.24" - on-finished "~2.3.0" - qs "6.7.0" - raw-body "2.4.0" - type-is "~1.6.17" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^3.0.2, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -browser-process-hrtime@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" - integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== - -browserslist@^4.14.5: - version "4.21.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.3.tgz#5df277694eb3c48bc5c4b05af3e8b7e09c5a6d1a" - integrity sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ== - dependencies: - caniuse-lite "^1.0.30001370" - electron-to-chromium "^1.4.202" - node-releases "^2.0.6" - update-browserslist-db "^1.0.5" - -browserslist@^4.16.6: - version "4.17.1" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.17.1.tgz#a98d104f54af441290b7d592626dd541fa642eb9" - integrity sha512-aLD0ZMDSnF4lUt4ZDNgqi5BUn9BZ7YdQdI/cYlILrhdSSZJLU9aNZoD5/NBmM4SK34APB2e83MOsRt1EnkuyaQ== - dependencies: - caniuse-lite "^1.0.30001259" - electron-to-chromium "^1.3.846" - escalade "^3.1.1" - nanocolors "^0.1.5" - node-releases "^1.1.76" - -bs-logger@0.x: - version "0.2.6" - resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" - integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== - dependencies: - fast-json-stable-stringify "2.x" - -bser@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" - integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== - dependencies: - node-int64 "^0.4.0" - -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - -buffer@6.0.3, buffer@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" - integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.2.1" - -buffer@^5.5.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - -busboy@^0.2.11: - version "0.2.14" - resolved "https://registry.yarnpkg.com/busboy/-/busboy-0.2.14.tgz#6c2a622efcf47c57bbbe1e2a9c37ad36c7925453" - integrity sha512-InWFDomvlkEj+xWLBfU3AvnbVYqeTWmQopiW0tWWEy5yehYm2YkGEc59sUmw/4ty5Zj/b0WHGs1LgecuBSBGrg== - dependencies: - dicer "0.2.5" - readable-stream "1.1.x" - -bytes@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" - integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== - -call-bind@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -camelcase@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" - integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== - -caniuse-lite@^1.0.30001259: - version "1.0.30001260" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001260.tgz#e3be3f34ddad735ca4a2736fa9e768ef34316270" - integrity sha512-Fhjc/k8725ItmrvW5QomzxLeojewxvqiYCKeFcfFEhut28IVLdpHU19dneOmltZQIE5HNbawj1HYD+1f2bM1Dg== - dependencies: - nanocolors "^0.1.0" - -caniuse-lite@^1.0.30001370: - version "1.0.30001387" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001387.tgz#90d2b9bdfcc3ab9a5b9addee00a25ef86c9e2e1e" - integrity sha512-fKDH0F1KOJvR+mWSOvhj8lVRr/Q/mc5u5nabU2vi1/sgvlSqEsE8dOq0Hy/BqVbDkCYQPRRHB1WRjW6PGB/7PA== - -chalk@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^2.0.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -char-regex@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" - integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== - -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - -chokidar@3.5.3, chokidar@^3.5.3: - version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== - 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" - optionalDependencies: - fsevents "~2.3.2" - -chrome-trace-event@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" - integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== - -ci-info@^3.1.1: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.2.0.tgz#2876cb948a498797b5236f0095bc057d0dca38b6" - integrity sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A== - -cjs-module-lexer@^1.0.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" - integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== - -class-transformer@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/class-transformer/-/class-transformer-0.4.0.tgz#b52144117b423c516afb44cc1c76dbad31c2165b" - integrity sha512-ETWD/H2TbWbKEi7m9N4Km5+cw1hNcqJSxlSYhsLsNjQzWWiZIYA1zafxpK9PwVfaZ6AqR5rrjPVUBGESm5tQUA== - -class-validator@^0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/class-validator/-/class-validator-0.13.1.tgz#381b2001ee6b9e05afd133671fbdf760da7dec67" - integrity sha512-zWIeYFhUitvAHBwNhDdCRK09hWx+P0HUwFE8US8/CxFpMVzkUK8RJl7yOIE+BVu2lxyPNgeOaFv78tLE47jBIg== - dependencies: - "@types/validator" "^13.1.3" - libphonenumber-js "^1.9.7" - validator "^13.5.2" - -clean-stack@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" - integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== - -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - -cli-highlight@^2.1.11: - version "2.1.11" - resolved "https://registry.yarnpkg.com/cli-highlight/-/cli-highlight-2.1.11.tgz#49736fa452f0aaf4fae580e30acb26828d2dc1bf" - integrity sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg== - dependencies: - chalk "^4.0.0" - highlight.js "^10.7.1" - mz "^2.4.0" - parse5 "^5.1.1" - parse5-htmlparser2-tree-adapter "^6.0.0" - yargs "^16.0.0" - -cli-spinners@^2.5.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.0.tgz#36c7dc98fb6a9a76bd6238ec3f77e2425627e939" - integrity sha512-t+4/y50K/+4xcCRosKkA7W4gTr1MySvLV0q+PxmG7FJ5g+66ChKurYjxBCjHggHH3HA5Hh9cy+lcUGWDqVH+4Q== - -cli-table3@0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.2.tgz#aaf5df9d8b5bf12634dc8b3040806a0c07120d2a" - integrity sha512-QyavHCaIC80cMivimWu4aWHilIpiDpfm3hGmqAmXVL1UsnbLuBSMd21hTX6VY4ZSDSM73ESLeF8TOYId3rBTbw== - dependencies: - string-width "^4.2.0" - optionalDependencies: - "@colors/colors" "1.5.0" - -cli-truncate@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" - integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== - dependencies: - slice-ansi "^3.0.0" - string-width "^4.2.0" - -cli-truncate@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-3.1.0.tgz#3f23ab12535e3d73e839bb43e73c9de487db1389" - integrity sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA== - dependencies: - slice-ansi "^5.0.0" - string-width "^5.0.0" - -cli-width@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" - integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== - -cliui@^7.0.2: - version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" - integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^7.0.0" - -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== - -collect-v8-coverage@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" - integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -colorette@^2.0.16, colorette@^2.0.17: - version "2.0.19" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798" - integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== - -combined-stream@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -command-exists@^1.2.9: - version "1.2.9" - resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" - integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== - -commander@4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" - integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== - -commander@^2.20.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -commander@^9.3.0: - version "9.4.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-9.4.0.tgz#bc4a40918fefe52e22450c111ecd6b7acce6f11c" - integrity sha512-sRPT+umqkz90UA8M1yqYfnHlZA7fF6nSphDtxeywPZ49ysjxDQybzk13CL+mXekDRG92skbcqCLVovuCusNmFw== - -component-emitter@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -concat-stream@^1.5.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -consola@^2.15.0: - version "2.15.3" - resolved "https://registry.yarnpkg.com/consola/-/consola-2.15.3.tgz#2e11f98d6a4be71ff72e0bdf07bd23e12cb61550" - integrity sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw== - -content-disposition@0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" - integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== - dependencies: - safe-buffer "5.1.2" - -content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== - -convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" - integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== - dependencies: - safe-buffer "~5.1.1" - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== - -cookie@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" - integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== - -cookiejar@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.2.tgz#dd8a235530752f988f9a0844f3fc589e3111125c" - integrity sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA== - -core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== - -cors@2.8.5: - version "2.8.5" - resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" - integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== - dependencies: - object-assign "^4" - vary "^1" - -cosmiconfig@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" - integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== - 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" - -create-require@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" - integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== - -cron@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/cron/-/cron-2.0.0.tgz#15c6bf37c1cebf6da1d7a688b9ba1c68338bfe6b" - integrity sha512-RPeRunBCFr/WEo7WLp8Jnm45F/ziGJiHVvVQEBSDTSGu6uHW49b2FOP2O14DcXlGJRLhwE7TIoDzHHK4KmlL6g== - dependencies: - luxon "^1.23.x" - -cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -cssom@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" - integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== - -cssom@~0.3.6: - version "0.3.8" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" - integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== - -cssstyle@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" - integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== - dependencies: - cssom "~0.3.6" - -data-urls@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" - integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== - dependencies: - abab "^2.0.3" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.0.0" - -date-fns@^2.28.0: - version "2.28.0" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.28.0.tgz#9570d656f5fc13143e50c975a3b6bbeb46cd08b2" - integrity sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw== - -debug@2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.3, debug@^4.3.4: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -decimal.js@^10.2.1: - version "10.3.1" - resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783" - integrity sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ== - -dedent@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" - integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== - -deep-is@^0.1.3, deep-is@~0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - -deepmerge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" - integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== - -defaults@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" - integrity sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA== - dependencies: - clone "^1.0.2" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== - -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== - -destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - integrity sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg== - -detect-newline@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" - integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== - -dicer@0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/dicer/-/dicer-0.2.5.tgz#5996c086bb33218c812c090bddc09cd12facb70f" - integrity sha512-FDvbtnq7dzlPz0wyYlOExifDEZcu8h+rErEXgfxqmLfRfC/kJidEFh4+effJRO3P0xmfqyPbSMG0LveNRfTKVg== - dependencies: - readable-stream "1.1.x" - streamsearch "0.1.2" - -diff-sequences@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.0.6.tgz#3305cb2e55a033924054695cc66019fd7f8e5723" - integrity sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ== - -diff@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -domexception@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" - integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== - dependencies: - webidl-conversions "^5.0.0" - -dotenv-expand@8.0.3: - version "8.0.3" - resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-8.0.3.tgz#29016757455bcc748469c83a19b36aaf2b83dd6e" - integrity sha512-SErOMvge0ZUyWd5B0NXMQlDkN+8r+HhVUsxgOO7IoPDOdDRD2JjExpN6y3KnFR66jsJMwSn1pqIivhU5rcJiNg== - -dotenv@16.0.1, dotenv@^16.0.0: - version "16.0.1" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.1.tgz#8f8f9d94876c35dac989876a5d3a82a267fdce1d" - integrity sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ== - -eastasianwidth@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" - integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== - -electron-to-chromium@^1.3.846: - version "1.3.850" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.850.tgz#c56c72abfeab051b4b328beb894461c5912d0456" - integrity sha512-ZzkDcdzePeF4dhoGZQT77V2CyJOpwfTZEOg4h0x6R/jQhGt/rIRpbRyVreWLtD7B/WsVxo91URm2WxMKR9JQZA== - -electron-to-chromium@^1.4.202: - version "1.4.237" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.237.tgz#c695c5fedc3bb48f04ba1b39470c5aef2aaafd84" - integrity sha512-vxVyGJcsgArNOVUJcXm+7iY3PJAfmSapEszQD1HbyPLl0qoCmNQ1o/EX3RI7Et5/88In9oLxX3SGF8J3orkUgA== - -emittery@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" - integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emoji-regex@^9.2.2: - version "9.2.2" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" - integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== - -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== - -end-of-stream@^1.1.0: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -enhanced-resolve@^5.0.0: - version "5.8.3" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz#6d552d465cce0423f5b3d718511ea53826a7b2f0" - integrity sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA== - dependencies: - graceful-fs "^4.2.4" - tapable "^2.2.0" - -enhanced-resolve@^5.7.0, enhanced-resolve@^5.9.3: - version "5.10.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz#0dc579c3bb2a1032e357ac45b8f3a6f3ad4fb1e6" - integrity sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ== - dependencies: - graceful-fs "^4.2.4" - tapable "^2.2.0" - -enquirer@^2.3.5: - version "2.3.6" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" - integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== - dependencies: - ansi-colors "^4.1.1" - -envalid@^7.3.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/envalid/-/envalid-7.3.1.tgz#5bf6bbb4effab2d64a1991d8078b4ae38924f0d2" - integrity sha512-KL1YRwn8WcoF/Ty7t+yLLtZol01xr9ZJMTjzoGRM8NaSU+nQQjSWOQKKJhJP2P57bpdakJ9jbxqQX4fGTOicZg== - dependencies: - tslib "2.3.1" - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -es-module-lexer@^0.9.0: - version "0.9.3" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" - integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - -escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -escodegen@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" - integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== - dependencies: - esprima "^4.0.1" - estraverse "^5.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - -eslint-config-prettier@^8.3.0: - version "8.3.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz#f7471b20b6fe8a9a9254cc684454202886a2dd7a" - integrity sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew== - -eslint-plugin-prettier@^3.4.0: - version "3.4.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz#e9ddb200efb6f3d05ffe83b1665a716af4a387e5" - integrity sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g== - dependencies: - prettier-linter-helpers "^1.0.0" - -eslint-scope@5.1.1, eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" - integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" - integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== - dependencies: - eslint-visitor-keys "^2.0.0" - -eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" - integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== - -eslint-visitor-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" - integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== - -eslint@^7.32.0: - version "7.32.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" - integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== - dependencies: - "@babel/code-frame" "7.12.11" - "@eslint/eslintrc" "^0.4.3" - "@humanwhocodes/config-array" "^0.5.0" - ajv "^6.10.0" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.0.1" - doctrine "^3.0.0" - enquirer "^2.3.5" - escape-string-regexp "^4.0.0" - eslint-scope "^5.1.1" - eslint-utils "^2.1.0" - eslint-visitor-keys "^2.0.0" - espree "^7.3.1" - esquery "^1.4.0" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^5.1.2" - globals "^13.6.0" - ignore "^4.0.6" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - js-yaml "^3.13.1" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.0.4" - natural-compare "^1.4.0" - optionator "^0.9.1" - progress "^2.0.0" - regexpp "^3.1.0" - semver "^7.2.1" - strip-ansi "^6.0.0" - strip-json-comments "^3.1.0" - table "^6.0.9" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" - -espree@^7.3.0, espree@^7.3.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" - integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== - dependencies: - acorn "^7.4.0" - acorn-jsx "^5.3.1" - eslint-visitor-keys "^1.3.0" - -esprima@^4.0.0, esprima@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esquery@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" - integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0, estraverse@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" - integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== - -events@^3.2.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" - integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== - -execa@^4.0.2: - version "4.1.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" - integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== - dependencies: - cross-spawn "^7.0.0" - get-stream "^5.0.0" - human-signals "^1.1.1" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.0" - onetime "^5.1.0" - signal-exit "^3.0.2" - strip-final-newline "^2.0.0" - -execa@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" - integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== - 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" - -execa@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-6.1.0.tgz#cea16dee211ff011246556388effa0818394fb20" - integrity sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.1" - human-signals "^3.0.1" - is-stream "^3.0.0" - merge-stream "^2.0.0" - npm-run-path "^5.1.0" - onetime "^6.0.0" - signal-exit "^3.0.7" - strip-final-newline "^3.0.0" - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== - -expect@^27.2.2: - version "27.2.2" - resolved "https://registry.yarnpkg.com/expect/-/expect-27.2.2.tgz#65c414697415c0867ef588813e9c729ebab8a9a9" - integrity sha512-sjHBeEk47/eshN9oLbvPJZMgHQihOXXQzSMPCJ4MqKShbU9HOVFSNHEEU4dp4ujzxFSiNvPFzB2AMOFmkizhvA== - dependencies: - "@jest/types" "^27.1.1" - ansi-styles "^5.0.0" - jest-get-type "^27.0.6" - jest-matcher-utils "^27.2.2" - jest-message-util "^27.2.2" - jest-regex-util "^27.0.6" - -express@4.17.1: - version "4.17.1" - resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" - integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== - dependencies: - accepts "~1.3.7" - array-flatten "1.1.1" - body-parser "1.19.0" - content-disposition "0.5.3" - content-type "~1.0.4" - cookie "0.4.0" - cookie-signature "1.0.6" - debug "2.6.9" - depd "~1.1.2" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "~1.1.2" - fresh "0.5.2" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "~2.3.0" - parseurl "~1.3.3" - path-to-regexp "0.1.7" - proxy-addr "~2.0.5" - qs "6.7.0" - range-parser "~1.2.1" - safe-buffer "5.1.2" - send "0.17.1" - serve-static "1.14.1" - setprototypeof "1.1.1" - statuses "~1.5.0" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" - -external-editor@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-diff@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" - integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== - -fast-glob@^3.1.1: - version "3.2.7" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" - integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q== - 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" - -fast-json-stable-stringify@2.1.0, fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== - -fast-safe-stringify@2.0.8, fast-safe-stringify@^2.0.7: - version "2.0.8" - resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.8.tgz#dc2af48c46cf712b683e849b2bbd446b32de936f" - integrity sha512-lXatBjf3WPjmWD6DpIZxkeSsCOwqI0maYMpgDlx8g4U2qi4lbjA9oH/HD2a87G+KfsUmo5WbJFmqBZlPxtptag== - -fastq@^1.6.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" - integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== - dependencies: - reusify "^1.0.4" - -fb-watchman@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" - integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== - dependencies: - bser "2.1.1" - -figures@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" - integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== - dependencies: - escape-string-regexp "^1.0.5" - -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -finalhandler@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" - integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.3" - statuses "~1.5.0" - unpipe "~1.0.0" - -find-up@^4.0.0, find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -flat-cache@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== - dependencies: - flatted "^3.1.0" - rimraf "^3.0.2" - -flatted@^3.1.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.2.tgz#64bfed5cb68fe3ca78b3eb214ad97b63bedce561" - integrity sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA== - -follow-redirects@^1.14.0: - version "1.14.4" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.4.tgz#838fdf48a8bbdd79e52ee51fb1c94e3ed98b9379" - integrity sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g== - -fork-ts-checker-webpack-plugin@7.2.11: - version "7.2.11" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-7.2.11.tgz#aff3febbc11544ba3ad0ae4d5aa4055bd15cd26d" - integrity sha512-2e5+NyTUTE1Xq4fWo7KFEQblCaIvvINQwUX3jRmEGlgCTc1Ecqw/975EfQrQ0GEraxJTnp8KB9d/c8hlCHUMJA== - dependencies: - "@babel/code-frame" "^7.16.7" - chalk "^4.1.2" - chokidar "^3.5.3" - cosmiconfig "^7.0.1" - deepmerge "^4.2.2" - fs-extra "^10.0.0" - memfs "^3.4.1" - minimatch "^3.0.4" - schema-utils "^3.1.1" - semver "^7.3.5" - tapable "^2.2.1" - -form-data@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" - integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - -formidable@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/formidable/-/formidable-1.2.2.tgz#bf69aea2972982675f00865342b982986f6b8dd9" - integrity sha512-V8gLm+41I/8kguQ4/o1D3RIHRmhYFG4pnNyonvua+40rqcEmT4+V71yaZ3B457xbbgCsCfjSPi65u/W6vK1U5Q== - -forwarded@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" - integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== - -fs-extra@10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.0.0.tgz#9ff61b655dde53fb34a82df84bb214ce802e17c1" - integrity sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-extra@10.1.0, fs-extra@^10.0.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" - integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-monkey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.3.tgz#ae3ac92d53bb328efe0e9a1d9541f6ad8d48e2d3" - integrity sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q== - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - -fsevents@^2.3.2, fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== - -gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - -get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-intrinsic@^1.0.2: - version "1.1.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" - integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - -get-package-type@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" - integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== - -get-stream@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" - integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== - dependencies: - pump "^3.0.0" - -get-stream@^6.0.0, get-stream@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - -glob-parent@^5.1.2, glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-to-regexp@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" - integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== - -glob@^7.0.0: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" - 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" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^13.6.0, globals@^13.9.0: - version "13.11.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.11.0.tgz#40ef678da117fe7bd2e28f1fab24951bd0255be7" - integrity sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g== - dependencies: - type-fest "^0.20.2" - -globby@^11.0.3: - version "11.0.4" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5" - integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.1.1" - ignore "^5.1.4" - merge2 "^1.3.0" - slash "^3.0.0" - -graceful-fs@^4.1.2, graceful-fs@^4.2.9: - version "4.2.10" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" - integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== - -graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4: - version "4.2.8" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" - integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-symbols@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" - integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== - -has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -highlight.js@^10.7.1: - version "10.7.3" - resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.7.3.tgz#697272e3991356e40c3cac566a74eef681756531" - integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A== - -html-encoding-sniffer@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" - integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== - dependencies: - whatwg-encoding "^1.0.5" - -html-escaper@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== - -http-errors@1.7.2, http-errors@~1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" - integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -http-proxy-agent@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" - integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== - dependencies: - "@tootallnate/once" "1" - agent-base "6" - debug "4" - -https-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" - integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== - dependencies: - agent-base "6" - debug "4" - -human-signals@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" - integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== - -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - -human-signals@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-3.0.1.tgz#c740920859dafa50e5a3222da9d3bf4bb0e5eef5" - integrity sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ== - -husky@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/husky/-/husky-8.0.1.tgz#511cb3e57de3e3190514ae49ed50f6bc3f50b3e9" - integrity sha512-xs7/chUH/CKdOCs7Zy0Aev9e/dKOMZf3K1Az1nar3tzlv0jfqnYtu235bstsWTmXOR0EfINrPa97yy4Lz6RiKw== - -iconv-lite@0.4.24, iconv-lite@^0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -ieee754@^1.1.13, ieee754@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== - -ignore@^5.1.4: - version "5.1.8" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" - integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== - -import-fresh@^3.0.0, import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-local@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6" - integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA== - dependencies: - pkg-dir "^4.2.0" - resolve-cwd "^3.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== - -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== - -inquirer@7.3.3: - version "7.3.3" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" - integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== - dependencies: - ansi-escapes "^4.2.1" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-width "^3.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.19" - mute-stream "0.0.8" - run-async "^2.4.0" - rxjs "^6.6.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - through "^2.3.6" - -inquirer@8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.0.tgz#f44f008dd344bbfc4b30031f45d984e034a3ac3a" - integrity sha512-0crLweprevJ02tTuA6ThpoAERAGyVILC4sS74uib58Xf/zSr1/ZWtmm7D5CI+bSQEaA04f0K7idaHpQbSWgiVQ== - 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" - -interpret@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" - integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== - -ipaddr.js@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-ci@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.0.tgz#c7e7be3c9d8eef7d0fa144390bd1e4b88dc4c994" - integrity sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ== - dependencies: - ci-info "^3.1.1" - -is-core-module@^2.2.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.6.0.tgz#d7553b2526fe59b92ba3e40c8df757ec8a709e19" - integrity sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ== - dependencies: - has "^1.0.3" - -is-core-module@^2.9.0: - version "2.10.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.10.0.tgz#9012ede0a91c69587e647514e1d5277019e728ed" - integrity sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg== - dependencies: - has "^1.0.3" - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-fullwidth-code-point@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz#fae3167c729e7463f8461ce512b080a49268aa88" - integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ== - -is-generator-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" - integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== - -is-glob@^4.0.0, is-glob@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== - dependencies: - is-extglob "^2.1.1" - -is-glob@~4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-interactive@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" - integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-potential-custom-element-name@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" - integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -is-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" - integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== - -is-typedarray@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== - -is-unicode-supported@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" - integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== - -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== - -isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -istanbul-lib-coverage@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.1.tgz#e8900b3ed6069759229cf30f7067388d148aeb5e" - integrity sha512-GvCYYTxaCPqwMjobtVcVKvSHtAGe48MNhGjpK8LtVF8K0ISX7hCKl85LgtuaSneWVyQmaGcW3iXVV3GaZSLpmQ== - -istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" - integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== - dependencies: - "@babel/core" "^7.7.5" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.0.0" - semver "^6.3.0" - -istanbul-lib-report@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" - integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== - dependencies: - istanbul-lib-coverage "^3.0.0" - make-dir "^3.0.0" - supports-color "^7.1.0" - -istanbul-lib-source-maps@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9" - integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg== - dependencies: - debug "^4.1.1" - istanbul-lib-coverage "^3.0.0" - source-map "^0.6.1" - -istanbul-reports@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b" - integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw== - dependencies: - html-escaper "^2.0.0" - istanbul-lib-report "^3.0.0" - -iterare@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/iterare/-/iterare-1.2.1.tgz#139c400ff7363690e33abffa33cbba8920f00042" - integrity sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q== - -jest-changed-files@^27.1.1: - version "27.1.1" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.1.1.tgz#9b3f67a34cc58e3e811e2e1e21529837653e4200" - integrity sha512-5TV9+fYlC2A6hu3qtoyGHprBwCAn0AuGA77bZdUgYvVlRMjHXo063VcWTEAyx6XAZ85DYHqp0+aHKbPlfRDRvA== - dependencies: - "@jest/types" "^27.1.1" - execa "^5.0.0" - throat "^6.0.1" - -jest-circus@^27.2.2: - version "27.2.2" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.2.2.tgz#a3647082f3eba1226f7664a36a2b7ebf45ceaf7b" - integrity sha512-8txlqs0EDrvPasCgwfLMkG0l3F4FxqQa6lxOsvYfOl04eSJjRw3F4gk9shakuC00nMD+VT+SMtFYXxe64f0VZw== - dependencies: - "@jest/environment" "^27.2.2" - "@jest/test-result" "^27.2.2" - "@jest/types" "^27.1.1" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - dedent "^0.7.0" - expect "^27.2.2" - is-generator-fn "^2.0.0" - jest-each "^27.2.2" - jest-matcher-utils "^27.2.2" - jest-message-util "^27.2.2" - jest-runtime "^27.2.2" - jest-snapshot "^27.2.2" - jest-util "^27.2.0" - pretty-format "^27.2.2" - slash "^3.0.0" - stack-utils "^2.0.3" - throat "^6.0.1" - -jest-cli@^27.2.2: - version "27.2.2" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.2.2.tgz#0973a717c109f23de642b63486f3cb71c5a971be" - integrity sha512-jbEythw22LR/IHYgNrjWdO74wO9wyujCxTMjbky0GLav4rC4y6qDQr4TqQ2JPP51eDYJ2awVn83advEVSs5Brg== - dependencies: - "@jest/core" "^27.2.2" - "@jest/test-result" "^27.2.2" - "@jest/types" "^27.1.1" - chalk "^4.0.0" - exit "^0.1.2" - graceful-fs "^4.2.4" - import-local "^3.0.2" - jest-config "^27.2.2" - jest-util "^27.2.0" - jest-validate "^27.2.2" - prompts "^2.0.1" - yargs "^16.0.3" - -jest-config@^27.2.2: - version "27.2.2" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.2.2.tgz#970d8466c60ac106ac9d7d0b8dcf3ff150fa713a" - integrity sha512-2nhms3lp52ZpU0636bB6zIFHjDVtYxzFQIOHZjBFUeXcb6b41sEkWojbHaJ4FEIO44UbccTLa7tvNpiFCgPE7w== - dependencies: - "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^27.2.2" - "@jest/types" "^27.1.1" - babel-jest "^27.2.2" - chalk "^4.0.0" - deepmerge "^4.2.2" - glob "^7.1.1" - graceful-fs "^4.2.4" - is-ci "^3.0.0" - jest-circus "^27.2.2" - jest-environment-jsdom "^27.2.2" - jest-environment-node "^27.2.2" - jest-get-type "^27.0.6" - jest-jasmine2 "^27.2.2" - jest-regex-util "^27.0.6" - jest-resolve "^27.2.2" - jest-runner "^27.2.2" - jest-util "^27.2.0" - jest-validate "^27.2.2" - micromatch "^4.0.4" - pretty-format "^27.2.2" - -jest-diff@^27.0.0, jest-diff@^27.2.2: - version "27.2.2" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.2.2.tgz#3992fe5f55f209676c5d3fd956e3f3d4145f76b8" - integrity sha512-o3LaDbQDSaMJif4yztJAULI4xVatxbBasbKLbEw3K8CiRdDdbxMrLArS9EKDHQFYh6Tgfrm1PC2mIYR1xhu0hQ== - dependencies: - chalk "^4.0.0" - diff-sequences "^27.0.6" - jest-get-type "^27.0.6" - pretty-format "^27.2.2" - -jest-docblock@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.0.6.tgz#cc78266acf7fe693ca462cbbda0ea4e639e4e5f3" - integrity sha512-Fid6dPcjwepTFraz0YxIMCi7dejjJ/KL9FBjPYhBp4Sv1Y9PdhImlKZqYU555BlN4TQKaTc+F2Av1z+anVyGkA== - dependencies: - detect-newline "^3.0.0" - -jest-each@^27.2.2: - version "27.2.2" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.2.2.tgz#62da8dd68b9fc61ab6e9e344692eeb1251f8c91d" - integrity sha512-ZCDhkvwHeXHsxoFxvW43fabL18iLiVDxaipG5XWG7dSd+XWXXpzMQvBWYT9Wvzhg5x4hvrLQ24LtiOKw3I09xA== - dependencies: - "@jest/types" "^27.1.1" - chalk "^4.0.0" - jest-get-type "^27.0.6" - jest-util "^27.2.0" - pretty-format "^27.2.2" - -jest-environment-jsdom@^27.2.2: - version "27.2.2" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.2.2.tgz#fb3075b4be6289961dcc4942e98f1862b3a8c4cb" - integrity sha512-mzCLEdnpGWDJmNB6WIPLlZM+hpXdeiya9TryiByqcUdpliNV1O+LGC2SewzjmB4IblabGfvr3KcPN0Nme2wnDw== - dependencies: - "@jest/environment" "^27.2.2" - "@jest/fake-timers" "^27.2.2" - "@jest/types" "^27.1.1" - "@types/node" "*" - jest-mock "^27.1.1" - jest-util "^27.2.0" - jsdom "^16.6.0" - -jest-environment-node@^27.2.2: - version "27.2.2" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.2.2.tgz#60ba7d7fee956f68964d47a785d0195ce125aaa3" - integrity sha512-XgUscWs6H6UNqC96/QJjmUGZzzpql/JyprLSXVu7wkgM8tjbJdEkSqwrVAvJPm1yu526ImrmsIoh2BTHxkwL/g== - dependencies: - "@jest/environment" "^27.2.2" - "@jest/fake-timers" "^27.2.2" - "@jest/types" "^27.1.1" - "@types/node" "*" - jest-mock "^27.1.1" - jest-util "^27.2.0" - -jest-get-type@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.0.6.tgz#0eb5c7f755854279ce9b68a9f1a4122f69047cfe" - integrity sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg== - -jest-haste-map@^27.2.2: - version "27.2.2" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.2.2.tgz#81ccb57b1e1cd513aaaadf5016aad5dab0ede552" - integrity sha512-kaKiq+GbAvk6/sq++Ymor4Vzk6+lr0vbKs2HDVPdkKsHX2lIJRyvhypZG/QsNfQnROKWIZSpUpGuv2HySSosvA== - dependencies: - "@jest/types" "^27.1.1" - "@types/graceful-fs" "^4.1.2" - "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.4" - jest-regex-util "^27.0.6" - jest-serializer "^27.0.6" - jest-util "^27.2.0" - jest-worker "^27.2.2" - micromatch "^4.0.4" - walker "^1.0.7" - optionalDependencies: - fsevents "^2.3.2" - -jest-jasmine2@^27.2.2: - version "27.2.2" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.2.2.tgz#bf87c8820a192c86b65a7c4c1a54caae52124f04" - integrity sha512-SczhZNfmZID9HbJ1GHhO4EzeL/PMRGeAUw23ddPUdd6kFijEZpT2yOxyNCBUKAsVQ/14OB60kjgnbuFOboZUNg== - dependencies: - "@babel/traverse" "^7.1.0" - "@jest/environment" "^27.2.2" - "@jest/source-map" "^27.0.6" - "@jest/test-result" "^27.2.2" - "@jest/types" "^27.1.1" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - expect "^27.2.2" - is-generator-fn "^2.0.0" - jest-each "^27.2.2" - jest-matcher-utils "^27.2.2" - jest-message-util "^27.2.2" - jest-runtime "^27.2.2" - jest-snapshot "^27.2.2" - jest-util "^27.2.0" - pretty-format "^27.2.2" - throat "^6.0.1" - -jest-leak-detector@^27.2.2: - version "27.2.2" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.2.2.tgz#5af54273efcf5114ad406f4448860c2396319e12" - integrity sha512-fQIYKkhXUs/4EpE4wO1AVsv7aNH3o0km1BGq3vxvSfYdwG9GLMf+b0z/ghLmBYNxb+tVpm/zv2caoKm3GfTazg== - dependencies: - jest-get-type "^27.0.6" - pretty-format "^27.2.2" - -jest-matcher-utils@^27.2.2: - version "27.2.2" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.2.2.tgz#a6c0a10dce6bfe8250bbed3e2f1b206568d73bde" - integrity sha512-xN3wT4p2i9DGB6zmL3XxYp5lJmq9Q6ff8XKlMtVVBS2SAshmgsPBALJFQ8dWRd2G/xf5q/N0SD0Mipt8QBA26A== - dependencies: - chalk "^4.0.0" - jest-diff "^27.2.2" - jest-get-type "^27.0.6" - pretty-format "^27.2.2" - -jest-message-util@^27.2.2: - version "27.2.2" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.2.2.tgz#cdbb1b82dfe5f601ae35f5c6a28bf7823e6bcf99" - integrity sha512-/iS5/m2FSF7Nn6APFoxFymJpyhB/gPf0CJa7uFSkbYaWvrADUfQ9NTsuyjpszKErOS2/huFs44ysWhlQTKvL8Q== - dependencies: - "@babel/code-frame" "^7.12.13" - "@jest/types" "^27.1.1" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.4" - micromatch "^4.0.4" - pretty-format "^27.2.2" - slash "^3.0.0" - stack-utils "^2.0.3" - -jest-mock@^27.1.1: - version "27.1.1" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.1.1.tgz#c7a2e81301fdcf3dab114931d23d89ec9d0c3a82" - integrity sha512-SClsFKuYBf+6SSi8jtAYOuPw8DDMsTElUWEae3zq7vDhH01ayVSIHUSIa8UgbDOUalCFp6gNsaikN0rbxN4dbw== - dependencies: - "@jest/types" "^27.1.1" - "@types/node" "*" - -jest-pnp-resolver@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" - integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== - -jest-regex-util@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.0.6.tgz#02e112082935ae949ce5d13b2675db3d8c87d9c5" - integrity sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ== - -jest-resolve-dependencies@^27.2.2: - version "27.2.2" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.2.2.tgz#7467c67cb8b5630ec28e2f0c72a0b62e56668083" - integrity sha512-nvJS+DyY51HHdZnMIwXg7fimQ5ylFx4+quQXspQXde2rXYy+4v75UYoX/J65Ln8mKCNc6YF8HEhfGaRBOrxxHg== - dependencies: - "@jest/types" "^27.1.1" - jest-regex-util "^27.0.6" - jest-snapshot "^27.2.2" - -jest-resolve@^27.2.2: - version "27.2.2" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.2.2.tgz#1bad93dbc6c20edb874e6720e82e4e48900b120b" - integrity sha512-tfbHcBs/hJTb3fPQ/3hLWR+TsLNTzzK98TU+zIAsrL9nNzWfWROwopUOmiSUqmHMZW5t9au/433kSF2/Af+tTw== - dependencies: - "@jest/types" "^27.1.1" - chalk "^4.0.0" - escalade "^3.1.1" - graceful-fs "^4.2.4" - jest-haste-map "^27.2.2" - jest-pnp-resolver "^1.2.2" - jest-util "^27.2.0" - jest-validate "^27.2.2" - resolve "^1.20.0" - slash "^3.0.0" - -jest-runner@^27.2.2: - version "27.2.2" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.2.2.tgz#e719a8ce2a16575677105f692fdff7cd00602325" - integrity sha512-+bUFwBq+yTnvsOFuxetoQtkuOnqdAk2YuIGjlLmc7xLAXn/V1vjhXrLencgij0BUTTUvG9Aul3+5XDss4Wa8Eg== - dependencies: - "@jest/console" "^27.2.2" - "@jest/environment" "^27.2.2" - "@jest/test-result" "^27.2.2" - "@jest/transform" "^27.2.2" - "@jest/types" "^27.1.1" - "@types/node" "*" - chalk "^4.0.0" - emittery "^0.8.1" - exit "^0.1.2" - graceful-fs "^4.2.4" - jest-docblock "^27.0.6" - jest-environment-jsdom "^27.2.2" - jest-environment-node "^27.2.2" - jest-haste-map "^27.2.2" - jest-leak-detector "^27.2.2" - jest-message-util "^27.2.2" - jest-resolve "^27.2.2" - jest-runtime "^27.2.2" - jest-util "^27.2.0" - jest-worker "^27.2.2" - source-map-support "^0.5.6" - throat "^6.0.1" - -jest-runtime@^27.2.2: - version "27.2.2" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.2.2.tgz#cc29d3adde948d531657a67d33c9f8d9bb58a6fc" - integrity sha512-PtTHCK5jT+KrIpKpjJsltu/dK5uGhBtTNLOk1Z+ZD2Jrxam2qQsOqDFYLszcK0jc2TLTNsrVpclqSftn7y3aXA== - dependencies: - "@jest/console" "^27.2.2" - "@jest/environment" "^27.2.2" - "@jest/fake-timers" "^27.2.2" - "@jest/globals" "^27.2.2" - "@jest/source-map" "^27.0.6" - "@jest/test-result" "^27.2.2" - "@jest/transform" "^27.2.2" - "@jest/types" "^27.1.1" - "@types/yargs" "^16.0.0" - chalk "^4.0.0" - cjs-module-lexer "^1.0.0" - collect-v8-coverage "^1.0.0" - execa "^5.0.0" - exit "^0.1.2" - glob "^7.1.3" - graceful-fs "^4.2.4" - jest-haste-map "^27.2.2" - jest-message-util "^27.2.2" - jest-mock "^27.1.1" - jest-regex-util "^27.0.6" - jest-resolve "^27.2.2" - jest-snapshot "^27.2.2" - jest-util "^27.2.0" - jest-validate "^27.2.2" - slash "^3.0.0" - strip-bom "^4.0.0" - yargs "^16.0.3" - -jest-serializer@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.0.6.tgz#93a6c74e0132b81a2d54623251c46c498bb5bec1" - integrity sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA== - dependencies: - "@types/node" "*" - graceful-fs "^4.2.4" - -jest-snapshot@^27.2.2: - version "27.2.2" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.2.2.tgz#898f0eedde658e723461d3cdcaedb404e716fa01" - integrity sha512-7ODSvULMiiOVuuLvLZpDlpqqTqX9hDfdmijho5auVu9qRYREolvrvgH4kSNOKfcqV3EZOTuLKNdqsz1PM20PQA== - dependencies: - "@babel/core" "^7.7.2" - "@babel/generator" "^7.7.2" - "@babel/parser" "^7.7.2" - "@babel/plugin-syntax-typescript" "^7.7.2" - "@babel/traverse" "^7.7.2" - "@babel/types" "^7.0.0" - "@jest/transform" "^27.2.2" - "@jest/types" "^27.1.1" - "@types/babel__traverse" "^7.0.4" - "@types/prettier" "^2.1.5" - babel-preset-current-node-syntax "^1.0.0" - chalk "^4.0.0" - expect "^27.2.2" - graceful-fs "^4.2.4" - jest-diff "^27.2.2" - jest-get-type "^27.0.6" - jest-haste-map "^27.2.2" - jest-matcher-utils "^27.2.2" - jest-message-util "^27.2.2" - jest-resolve "^27.2.2" - jest-util "^27.2.0" - natural-compare "^1.4.0" - pretty-format "^27.2.2" - semver "^7.3.2" - -jest-util@^27.0.0, jest-util@^27.2.0: - version "27.2.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.2.0.tgz#bfccb85cfafae752257319e825a5b8d4ada470dc" - integrity sha512-T5ZJCNeFpqcLBpx+Hl9r9KoxBCUqeWlJ1Htli+vryigZVJ1vuLB9j35grEBASp4R13KFkV7jM52bBGnArpJN6A== - dependencies: - "@jest/types" "^27.1.1" - "@types/node" "*" - chalk "^4.0.0" - graceful-fs "^4.2.4" - is-ci "^3.0.0" - picomatch "^2.2.3" - -jest-validate@^27.2.2: - version "27.2.2" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.2.2.tgz#e672118f1d9aa57b25b4c7998edc101dabd7020b" - integrity sha512-01mwTAs2kgDuX98Ua3Xhdhp5lXsLU4eyg6k56adTtrXnU/GbLd9uAsh5nc4MWVtUXMeNmHUyEiD4ibLqE8MuNw== - dependencies: - "@jest/types" "^27.1.1" - camelcase "^6.2.0" - chalk "^4.0.0" - jest-get-type "^27.0.6" - leven "^3.1.0" - pretty-format "^27.2.2" - -jest-watcher@^27.2.2: - version "27.2.2" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.2.2.tgz#8b00253d7e880c6637b402228a76f2fe5ea08132" - integrity sha512-7HJwZq06BCfM99RacCVzXO90B20/dNJvq+Ouiu/VrFdFRCpbnnqlQUEk4KAhBSllgDrTPgKu422SCF5KKBHDRA== - dependencies: - "@jest/test-result" "^27.2.2" - "@jest/types" "^27.1.1" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - jest-util "^27.2.0" - string-length "^4.0.1" - -jest-worker@^27.2.2: - version "27.2.2" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.2.2.tgz#636deeae8068abbf2b34b4eb9505f8d4e5bd625c" - integrity sha512-aG1xq9KgWB2CPC8YdMIlI8uZgga2LFNcGbHJxO8ctfXAydSaThR4EewKQGg3tBOC+kS3vhPGgymsBdi9VINjPw== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -jest-worker@^27.4.5: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" - integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -jest@^27.0.6: - version "27.2.2" - resolved "https://registry.yarnpkg.com/jest/-/jest-27.2.2.tgz#445a4c16aa4c4ae6e512d62fb6f8b2624cbd6c26" - integrity sha512-XAB/9akDTe3/V0wPNKWfP9Y/NT1QPiCqyRBYGbC66EA9EvgAzdaFEqhFGLaDJ5UP2yIyXUMtju9a9IMrlYbZTQ== - dependencies: - "@jest/core" "^27.2.2" - import-local "^3.0.2" - jest-cli "^27.2.2" - -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -jsdom@^16.6.0: - version "16.7.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" - integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== - dependencies: - abab "^2.0.5" - acorn "^8.2.4" - acorn-globals "^6.0.0" - cssom "^0.4.4" - cssstyle "^2.3.0" - data-urls "^2.0.0" - decimal.js "^10.2.1" - domexception "^2.0.1" - escodegen "^2.0.0" - form-data "^3.0.0" - html-encoding-sniffer "^2.0.1" - http-proxy-agent "^4.0.1" - https-proxy-agent "^5.0.0" - is-potential-custom-element-name "^1.0.1" - nwsapi "^2.2.0" - parse5 "6.0.1" - saxes "^5.0.1" - symbol-tree "^3.2.4" - tough-cookie "^4.0.0" - w3c-hr-time "^1.0.2" - w3c-xmlserializer "^2.0.0" - webidl-conversions "^6.1.0" - whatwg-encoding "^1.0.5" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.5.0" - ws "^7.4.6" - xml-name-validator "^3.0.0" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-schema-traverse@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" - integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== - -json5@2.x, json5@^2.1.2: - version "2.2.0" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" - integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== - dependencies: - minimist "^1.2.5" - -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== - dependencies: - minimist "^1.2.0" - -jsonc-parser@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.0.0.tgz#abdd785701c7e7eaca8a9ec8cf070ca51a745a22" - integrity sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA== - -jsonfile@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== - dependencies: - universalify "^2.0.0" - optionalDependencies: - graceful-fs "^4.1.6" - -kleur@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" - integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -libphonenumber-js@^1.9.7: - version "1.9.34" - resolved "https://registry.yarnpkg.com/libphonenumber-js/-/libphonenumber-js-1.9.34.tgz#ddddc778a9b2f53c70500fcf10c9483596e3574f" - integrity sha512-gHTNU9xTtVgSp30IDX/57W4pETMXDIYXFfwEOJVXiYosiY7Hc7ogJwlBjOqlCcU04X0aA8DT57hdwUC1sJBJnA== - -lilconfig@2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.5.tgz#19e57fd06ccc3848fd1891655b5a447092225b25" - integrity sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg== - -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - -lint-staged@^13.0.3: - version "13.0.3" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-13.0.3.tgz#d7cdf03a3830b327a2b63c6aec953d71d9dc48c6" - integrity sha512-9hmrwSCFroTSYLjflGI8Uk+GWAwMB4OlpU4bMJEAT5d/llQwtYKoim4bLOyLCuWFAhWEupE0vkIFqtw/WIsPug== - dependencies: - cli-truncate "^3.1.0" - colorette "^2.0.17" - commander "^9.3.0" - debug "^4.3.4" - execa "^6.1.0" - lilconfig "2.0.5" - listr2 "^4.0.5" - micromatch "^4.0.5" - normalize-path "^3.0.0" - object-inspect "^1.12.2" - pidtree "^0.6.0" - string-argv "^0.3.1" - yaml "^2.1.1" - -listr2@^4.0.5: - version "4.0.5" - resolved "https://registry.yarnpkg.com/listr2/-/listr2-4.0.5.tgz#9dcc50221583e8b4c71c43f9c7dfd0ef546b75d5" - integrity sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA== - dependencies: - cli-truncate "^2.1.0" - colorette "^2.0.16" - log-update "^4.0.0" - p-map "^4.0.0" - rfdc "^1.3.0" - rxjs "^7.5.5" - through "^2.3.8" - wrap-ansi "^7.0.0" - -loader-runner@^4.2.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" - integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -lodash.clonedeep@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" - integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ== - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lodash.truncate@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" - integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== - -lodash@4.17.21, lodash@4.x, lodash@^4.17.19, lodash@^4.17.21, lodash@^4.7.0: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -log-symbols@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" - integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== - dependencies: - chalk "^4.1.0" - is-unicode-supported "^0.1.0" - -log-update@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" - integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== - dependencies: - ansi-escapes "^4.3.0" - cli-cursor "^3.1.0" - slice-ansi "^4.0.0" - wrap-ansi "^6.2.0" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -luxon@^1.23.x: - version "1.28.0" - resolved "https://registry.yarnpkg.com/luxon/-/luxon-1.28.0.tgz#e7f96daad3938c06a62de0fb027115d251251fbf" - integrity sha512-TfTiyvZhwBYM/7QdAVDh+7dBTBA29v4ik0Ce9zda3Mnf8on1S5KJI8P2jKFZ8+5C0jhmr0KwJEO/Wdpm0VeWJQ== - -macos-release@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.5.0.tgz#067c2c88b5f3fb3c56a375b2ec93826220fa1ff2" - integrity sha512-EIgv+QZ9r+814gjJj0Bt5vSLJLzswGmSUbUpbi9AIr/fsN2IWFBl2NucV9PAiek+U1STK468tEkxmVYUtuAN3g== - -magic-string@0.25.7: - version "0.25.7" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" - integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== - dependencies: - sourcemap-codec "^1.4.4" - -make-dir@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.0.0" - -make-error@1.x, make-error@^1.1.1: - version "1.3.6" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" - integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== - -makeerror@1.0.x: - version "1.0.11" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" - integrity sha512-M/XvMZ6oK4edXjvg/ZYyzByg8kjpVrF/m0x3wbhOlzJfsQgFkqP1rJnLnJExOcslmLSSeLiN6NmF+cBoKJHGTg== - dependencies: - tmpl "1.0.x" - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== - -memfs@^3.4.1: - version "3.4.7" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.4.7.tgz#e5252ad2242a724f938cb937e3c4f7ceb1f70e5a" - integrity sha512-ygaiUSNalBX85388uskeCyhSAoOSgzBbtVCr9jA2RROssFL9Q19/ZXFqS+2Th2sr1ewNIWgFdLzLC3Yl1Zv+lw== - dependencies: - fs-monkey "^1.0.3" - -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.3.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -methods@^1.1.2, methods@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== - -micromatch@^4.0.0, micromatch@^4.0.4, micromatch@^4.0.5: - version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== - dependencies: - braces "^3.0.2" - picomatch "^2.3.1" - -mime-db@1.49.0: - version "1.49.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.49.0.tgz#f3dfde60c99e9cf3bc9701d687778f537001cbed" - integrity sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA== - -mime-db@1.52.0: - version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -mime-types@^2.1.12, mime-types@~2.1.24: - version "2.1.32" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.32.tgz#1d00e89e7de7fe02008db61001d9e02852670fd5" - integrity sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A== - dependencies: - mime-db "1.49.0" - -mime-types@^2.1.27: - version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - -mime@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mime@^2.4.6: - version "2.5.2" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.5.2.tgz#6e3dc6cc2b9510643830e5f19d5cb753da5eeabe" - integrity sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg== - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -mimic-fn@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" - integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== - -minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^3.1.1: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimist@1.2.6, minimist@^1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" - integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== - -minimist@^1.2.0, minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== - -mkdirp@^0.5.4: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== - dependencies: - minimist "^1.2.5" - -mkdirp@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -moment@>=2.14.0: - version "2.29.1" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" - integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== - -ms@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -multer@1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/multer/-/multer-1.4.3.tgz#4db352d6992e028ac0eacf7be45c6efd0264297b" - integrity sha512-np0YLKncuZoTzufbkM6wEKp68EhWJXcU6fq6QqrSwkckd2LlMgd1UqhUJLj6NS/5sZ8dE8LYDWslsltJznnXlg== - dependencies: - append-field "^1.0.0" - busboy "^0.2.11" - concat-stream "^1.5.2" - mkdirp "^0.5.4" - object-assign "^4.1.1" - on-finished "^2.3.0" - type-is "^1.6.4" - xtend "^4.0.0" - -mute-stream@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" - integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== - -mz@^2.4.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" - integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== - dependencies: - any-promise "^1.0.0" - object-assign "^4.0.1" - thenify-all "^1.0.0" - -nanocolors@^0.1.0, nanocolors@^0.1.5: - version "0.1.12" - resolved "https://registry.yarnpkg.com/nanocolors/-/nanocolors-0.1.12.tgz#8577482c58cbd7b5bb1681db4cf48f11a87fd5f6" - integrity sha512-2nMHqg1x5PU+unxX7PGY7AuYxl2qDx7PSrTRjizr8sxdd3l/3hBuWWaki62qmtYm2U5i4Z5E7GbjlyDFhs9/EQ== - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== - -negotiator@0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" - integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== - -neo-async@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - -node-abort-controller@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/node-abort-controller/-/node-abort-controller-3.0.1.tgz#f91fa50b1dee3f909afabb7e261b1e1d6b0cb74e" - integrity sha512-/ujIVxthRs+7q6hsdjHMaj8hRG9NuWmwrz+JdRwZ14jdFoKSkm+vDsCbF9PLpnSqjaWQJuTmVtcWHNLr+vrOFw== - -node-emoji@1.11.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.11.0.tgz#69a0150e6946e2f115e9d7ea4df7971e2628301c" - integrity sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A== - dependencies: - lodash "^4.17.21" - -node-fetch@^2.6.1: - version "2.6.5" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.5.tgz#42735537d7f080a7e5f78b6c549b7146be1742fd" - integrity sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ== - dependencies: - whatwg-url "^5.0.0" - -node-fetch@^2.6.7: - version "2.6.7" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" - integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== - dependencies: - whatwg-url "^5.0.0" - -node-int64@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== - -node-modules-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" - integrity sha512-JMaRS9L4wSRIR+6PTVEikTrq/lMGEZR43a48ETeilY0Q0iMwVnccMFrUM1k+tNzmYuIU0Vh710bCUqHX+/+ctQ== - -node-releases@^1.1.76: - version "1.1.76" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.76.tgz#df245b062b0cafbd5282ab6792f7dccc2d97f36e" - integrity sha512-9/IECtNr8dXNmPWmFXepT0/7o5eolGesHUa3mtr0KlgnCvnZxwh2qensKL42JJY2vQKC3nIBXetFAqR+PW1CmA== - -node-releases@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" - integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -npm-run-path@^4.0.0, npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -npm-run-path@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.1.0.tgz#bc62f7f3f6952d9894bd08944ba011a6ee7b7e00" - integrity sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q== - dependencies: - path-key "^4.0.0" - -nwsapi@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" - integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== - -object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== - -object-hash@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.2.0.tgz#5ad518581eefc443bd763472b8ff2e9c2c0d54a5" - integrity sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw== - -object-inspect@^1.12.2, object-inspect@^1.9.0: - version "1.12.2" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" - integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== - -on-finished@^2.3.0, on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww== - dependencies: - ee-first "1.1.1" - -once@^1.3.0, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -onetime@^5.1.0, onetime@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -onetime@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" - integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== - dependencies: - mimic-fn "^4.0.0" - -optional@0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/optional/-/optional-0.1.4.tgz#cdb1a9bedc737d2025f690ceeb50e049444fd5b3" - integrity sha512-gtvrrCfkE08wKcgXaVwQVgwEQ8vel2dc5DDBn9RLQZ3YtmtkBss6A2HY6BnJH4N/4Ku97Ri/SF8sNWE2225WJw== - -optionator@^0.8.1: - version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== - dependencies: - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - word-wrap "^1.2.3" - -ora@5.4.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.0.tgz#42eda4855835b9cd14d33864c97a3c95a3f56bf4" - integrity sha512-1StwyXQGoU6gdjYkyVcqOLnVlbKj+6yPNNOxJVgpt9t4eksKjiriiHuxktLYkgllwk+D6MbC4ihH84L1udRXPg== - 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" - -ora@5.4.1, ora@^5.4.1: - version "5.4.1" - resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" - integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== - 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" - -os-name@4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/os-name/-/os-name-4.0.1.tgz#32cee7823de85a8897647ba4d76db46bf845e555" - integrity sha512-xl9MAoU97MH1Xt5K9ERft2YfCAoaO6msy1OBA0ozxEC0x0TmIoE6K3QvgJMMZA9yKGLmHXNY/YZoDbiGDj4zYw== - dependencies: - macos-release "^2.5.0" - windows-release "^4.0.0" - -os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== - -p-each-series@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.2.0.tgz#105ab0357ce72b202a8a8b94933672657b5e2a9a" - integrity sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA== - -p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-map@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" - integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== - dependencies: - aggregate-error "^3.0.0" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-json@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - 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" - -parse5-htmlparser2-tree-adapter@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz#2cdf9ad823321140370d4dbf5d3e92c7c8ddc6e6" - integrity sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA== - dependencies: - parse5 "^6.0.1" - -parse5@6.0.1, parse5@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" - integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== - -parse5@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" - integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== - -parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-key@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" - integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== - -path-parse@^1.0.6, path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== - -path-to-regexp@0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.2.5.tgz#0b426991e387fc4c675de23557f358715eb66fb0" - integrity sha512-l6qtdDPIkmAmzEO6egquYDfqQGPMRNGjYtrU13HAXb3YSRrt7HSb1sJY0pKp6o2bAa86tSB6iwaW2JbthPKr7Q== - -path-to-regexp@3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-3.2.0.tgz#fa7877ecbc495c601907562222453c43cc204a5f" - integrity sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA== - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -pidtree@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.6.0.tgz#90ad7b6d42d5841e69e0a2419ef38f8883aa057c" - integrity sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g== - -pirates@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" - integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== - dependencies: - node-modules-regexp "^1.0.0" - -pkg-dir@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -pluralize@8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" - integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== - -prettier-linter-helpers@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" - integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== - dependencies: - fast-diff "^1.1.2" - -prettier@^2.3.2: - version "2.4.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.4.1.tgz#671e11c89c14a4cfc876ce564106c4a6726c9f5c" - integrity sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA== - -pretty-format@^27.0.0, pretty-format@^27.2.2: - version "27.2.2" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.2.2.tgz#c080f1ab7ac64302e4d438f208596fc649dbeeb3" - integrity sha512-+DdLh+rtaElc2SQOE/YPH8k2g3Rf2OXWEpy06p8Szs3hdVSYD87QOOlYRHWAeb/59XTmeVmRKvDD0svHqf6ycA== - dependencies: - "@jest/types" "^27.1.1" - ansi-regex "^5.0.1" - ansi-styles "^5.0.0" - react-is "^17.0.1" - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -progress@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - -prompts@^2.0.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.1.tgz#befd3b1195ba052f9fd2fde8a486c4e82ee77f61" - integrity sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ== - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.5" - -proxy-addr@~2.0.5: - version "2.0.7" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" - integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== - dependencies: - forwarded "0.2.0" - ipaddr.js "1.9.1" - -psl@^1.1.33: - version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -qs@6.7.0: - version "6.7.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" - integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== - -qs@^6.9.4: - version "6.10.1" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.1.tgz#4931482fa8d647a5aab799c5271d2133b981fb6a" - integrity sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg== - dependencies: - side-channel "^1.0.4" - -queue-microtask@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.1.2.tgz#139bf8186db0c545017ec66c2664ac646d5c571e" - integrity sha512-F9wwNePtXrzZenAB3ax0Y8TSKGvuB7Qw16J30hspEUTbfUM+H827XyN3rlpwhVmtm5wuZtbKIHjOnwDn7MUxWQ== - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" - integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== - dependencies: - bytes "3.1.0" - http-errors "1.7.2" - iconv-lite "0.4.24" - unpipe "1.0.0" - -react-is@^17.0.1: - version "17.0.2" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" - integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== - -readable-stream@1.1.x: - version "1.1.14" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" - integrity sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - -readable-stream@^2.2.2: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - 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" - -readable-stream@^3.4.0, readable-stream@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -rechoir@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - integrity sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw== - dependencies: - resolve "^1.1.6" - -reflect-metadata@^0.1.13: - version "0.1.13" - resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.13.tgz#67ae3ca57c972a2aa1642b10fe363fe32d49dc08" - integrity sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg== - -regenerator-runtime@^0.13.4: - version "0.13.9" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" - integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== - -regexpp@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" - integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== - -require-from-string@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" - integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== - -resolve-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" - integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== - dependencies: - resolve-from "^5.0.0" - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - -resolve@^1.1.6: - version "1.22.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" - integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== - dependencies: - is-core-module "^2.9.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -resolve@^1.20.0: - version "1.20.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" - integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== - dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" - -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rfdc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" - integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== - -rimraf@3.0.2, rimraf@^3.0.0, rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -run-async@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" - integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -rxjs@6.6.7, rxjs@^6.6.0: - version "6.6.7" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" - integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== - dependencies: - tslib "^1.9.0" - -rxjs@^7.2.0, rxjs@^7.5.5: - version "7.5.6" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.6.tgz#0446577557862afd6903517ce7cae79ecb9662bc" - integrity sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw== - dependencies: - tslib "^2.1.0" - -safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-buffer@^5.1.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -"safer-buffer@>= 2.1.2 < 3": - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sax@>=0.6.0: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - -saxes@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" - integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== - dependencies: - xmlchars "^2.2.0" - -schema-utils@^3.1.0, schema-utils@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" - integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== - dependencies: - "@types/json-schema" "^7.0.8" - ajv "^6.12.5" - ajv-keywords "^3.5.2" - -semver@7.x, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== - dependencies: - lru-cache "^6.0.0" - -semver@^6.0.0, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@^7.3.7: - version "7.3.7" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" - integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== - dependencies: - lru-cache "^6.0.0" - -send@0.17.1: - version "0.17.1" - resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" - integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== - dependencies: - debug "2.6.9" - depd "~1.1.2" - destroy "~1.0.4" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "~1.7.2" - mime "1.6.0" - ms "2.1.1" - on-finished "~2.3.0" - range-parser "~1.2.1" - statuses "~1.5.0" - -serialize-javascript@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" - integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== - dependencies: - randombytes "^2.1.0" - -serve-static@1.14.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" - integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.17.1" - -setprototypeof@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" - integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== - -sha.js@^2.4.11: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -sha3@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/sha3/-/sha3-2.1.4.tgz#000fac0fe7c2feac1f48a25e7a31b52a6492cc8f" - integrity sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg== - dependencies: - buffer "6.0.3" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -shelljs@0.8.5: - version "0.8.5" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" - integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== - dependencies: - glob "^7.0.0" - interpret "^1.0.0" - rechoir "^0.6.2" - -side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== - dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" - -signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: - version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - -sisteransi@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" - integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -slice-ansi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" - integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - -slice-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" - integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - -slice-ansi@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-5.0.0.tgz#b73063c57aa96f9cd881654b15294d95d285c42a" - integrity sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ== - dependencies: - ansi-styles "^6.0.0" - is-fullwidth-code-point "^4.0.0" - -source-map-support@0.5.21, source-map-support@~0.5.20: - version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-support@^0.5.6: - version "0.5.19" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" - integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map@0.7.3, source-map@^0.7.3: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - -source-map@^0.5.0: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== - -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -sourcemap-codec@^1.4.4: - version "1.4.8" - resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" - integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== - -stack-utils@^2.0.3: - version "2.0.5" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.5.tgz#d25265fca995154659dbbfba3b49254778d2fdd5" - integrity sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA== - dependencies: - escape-string-regexp "^2.0.0" - -"statuses@>= 1.5.0 < 2", statuses@~1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== - -streamsearch@0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-0.1.2.tgz#808b9d0e56fc273d809ba57338e929919a1a9f1a" - integrity sha512-jos8u++JKm0ARcSUTAZXOVC0mSox7Bhn6sBgty73P1f3JGf7yG2clTbBNHUdde/kdvP2FESam+vM6l8jBrNxHA== - -string-argv@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" - integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== - -string-length@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" - integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== - dependencies: - char-regex "^1.0.2" - strip-ansi "^6.0.0" - -string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - 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" - -string-width@^5.0.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" - integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== - dependencies: - eastasianwidth "^0.2.0" - emoji-regex "^9.2.2" - strip-ansi "^7.0.1" - -string_decoder@^1.1.1, string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -string_decoder@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ== - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.0.1.tgz#61740a08ce36b61e50e65653f07060d000975fb2" - integrity sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw== - dependencies: - ansi-regex "^6.0.1" - -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== - -strip-bom@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" - integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -strip-final-newline@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" - integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== - -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -superagent@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/superagent/-/superagent-6.1.0.tgz#09f08807bc41108ef164cfb4be293cebd480f4a6" - integrity sha512-OUDHEssirmplo3F+1HWKUrUjvnQuA+nZI6i/JJBdXb5eq9IyEQwPyPpqND+SSsxf6TygpBEkUjISVRN4/VOpeg== - dependencies: - component-emitter "^1.3.0" - cookiejar "^2.1.2" - debug "^4.1.1" - fast-safe-stringify "^2.0.7" - form-data "^3.0.0" - formidable "^1.2.2" - methods "^1.1.2" - mime "^2.4.6" - qs "^6.9.4" - readable-stream "^3.6.0" - semver "^7.3.2" - -supertest@^6.1.3: - version "6.1.6" - resolved "https://registry.yarnpkg.com/supertest/-/supertest-6.1.6.tgz#6151c518f4c5ced2ac2aadb9f96f1bf8198174c8" - integrity sha512-0hACYGNJ8OHRg8CRITeZOdbjur7NLuNs0mBjVhdpxi7hP6t3QIbOzLON5RTUmZcy2I9riuII3+Pr2C7yztrIIg== - dependencies: - methods "^1.1.2" - superagent "^6.1.0" - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.0.0, supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-color@^8.0.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - -supports-hyperlinks@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" - integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ== - dependencies: - has-flag "^4.0.0" - supports-color "^7.0.0" - -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== - -swagger-ui-dist@^3.18.1: - version "3.52.5" - resolved "https://registry.yarnpkg.com/swagger-ui-dist/-/swagger-ui-dist-3.52.5.tgz#9aa8101a2be751f5145195b9e048bc21b12fac60" - integrity sha512-8z18eX8G/jbTXYzyNIaobrnD7PSN7yU/YkSasMmajrXtw0FGS64XjrKn5v37d36qmU3o1xLeuYnktshRr7uIFw== - -swagger-ui-express@^4.1.6: - version "4.1.6" - resolved "https://registry.yarnpkg.com/swagger-ui-express/-/swagger-ui-express-4.1.6.tgz#682294af3d5c70f74a1fa4d6a9b503a9ee55ea82" - integrity sha512-Xs2BGGudvDBtL7RXcYtNvHsFtP1DBFPMJFRxHe5ez/VG/rzVOEjazJOOSc/kSCyxreCTKfJrII6MJlL9a6t8vw== - dependencies: - swagger-ui-dist "^3.18.1" - -symbol-observable@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-4.0.0.tgz#5b425f192279e87f2f9b937ac8540d1984b39205" - integrity sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ== - -symbol-tree@^3.2.4: - version "3.2.4" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" - integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== - -table@^6.0.9: - version "6.7.1" - resolved "https://registry.yarnpkg.com/table/-/table-6.7.1.tgz#ee05592b7143831a8c94f3cee6aae4c1ccef33e2" - integrity sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg== - dependencies: - ajv "^8.0.1" - lodash.clonedeep "^4.5.0" - lodash.truncate "^4.4.2" - slice-ansi "^4.0.0" - string-width "^4.2.0" - strip-ansi "^6.0.0" - -tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" - integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== - -terminal-link@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" - integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== - dependencies: - ansi-escapes "^4.2.1" - supports-hyperlinks "^2.0.0" - -terser-webpack-plugin@^5.1.3: - version "5.3.6" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz#5590aec31aa3c6f771ce1b1acca60639eab3195c" - integrity sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ== - dependencies: - "@jridgewell/trace-mapping" "^0.3.14" - jest-worker "^27.4.5" - schema-utils "^3.1.1" - serialize-javascript "^6.0.0" - terser "^5.14.1" - -terser@^5.14.1: - version "5.15.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.15.0.tgz#e16967894eeba6e1091509ec83f0c60e179f2425" - integrity sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA== - dependencies: - "@jridgewell/source-map" "^0.3.2" - acorn "^8.5.0" - commander "^2.20.0" - source-map-support "~0.5.20" - -test-exclude@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" - integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== - dependencies: - "@istanbuljs/schema" "^0.1.2" - glob "^7.1.4" - minimatch "^3.0.4" - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== - -thenify-all@^1.0.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" - integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== - dependencies: - thenify ">= 3.1.0 < 4" - -"thenify@>= 3.1.0 < 4": - version "3.3.1" - resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" - integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== - dependencies: - any-promise "^1.0.0" - -throat@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.1.tgz#d514fedad95740c12c2d7fc70ea863eb51ade375" - integrity sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w== - -through@^2.3.6, through@^2.3.8: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== - -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" - -tmpl@1.0.x: - version "1.0.5" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" - integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -toidentifier@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" - integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== - -tough-cookie@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" - integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== - dependencies: - psl "^1.1.33" - punycode "^2.1.1" - universalify "^0.1.2" - -tr46@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" - integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== - dependencies: - punycode "^2.1.1" - -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== - -tree-kill@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" - integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== - -ts-jest@^27.0.3: - version "27.0.5" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-27.0.5.tgz#0b0604e2271167ec43c12a69770f0bb65ad1b750" - integrity sha512-lIJApzfTaSSbtlksfFNHkWOzLJuuSm4faFAfo5kvzOiRAuoN4/eKxVJ2zEAho8aecE04qX6K1pAzfH5QHL1/8w== - dependencies: - bs-logger "0.x" - fast-json-stable-stringify "2.x" - jest-util "^27.0.0" - json5 "2.x" - lodash "4.x" - make-error "1.x" - semver "7.x" - yargs-parser "20.x" - -ts-loader@^9.2.3: - version "9.2.6" - resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.2.6.tgz#9937c4dd0a1e3dbbb5e433f8102a6601c6615d74" - integrity sha512-QMTC4UFzHmu9wU2VHZEmWWE9cUajjfcdcws+Gh7FhiO+Dy0RnR1bNz0YCHqhI0yRowCE9arVnNxYHqELOy9Hjw== - dependencies: - chalk "^4.1.0" - enhanced-resolve "^5.0.0" - micromatch "^4.0.0" - semver "^7.3.4" - -ts-node@^10.0.0: - version "10.9.1" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" - integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== - dependencies: - "@cspotcode/source-map-support" "^0.8.0" - "@tsconfig/node10" "^1.0.7" - "@tsconfig/node12" "^1.0.7" - "@tsconfig/node14" "^1.0.0" - "@tsconfig/node16" "^1.0.2" - acorn "^8.4.1" - acorn-walk "^8.1.1" - arg "^4.1.0" - create-require "^1.1.0" - diff "^4.0.1" - make-error "^1.1.1" - v8-compile-cache-lib "^3.0.1" - yn "3.1.1" - -tsconfig-paths-webpack-plugin@3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-3.5.2.tgz#01aafff59130c04a8c4ebc96a3045c43c376449a" - integrity sha512-EhnfjHbzm5IYI9YPNVIxx1moxMI4bpHD2e0zTXeDNQcwjjRaGepP7IhTHJkyDBG0CAOoxRfe7jCG630Ou+C6Pw== - dependencies: - chalk "^4.1.0" - enhanced-resolve "^5.7.0" - tsconfig-paths "^3.9.0" - -tsconfig-paths@3.14.1, tsconfig-paths@^3.9.0: - version "3.14.1" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a" - integrity sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ== - dependencies: - "@types/json5" "^0.0.29" - json5 "^1.0.1" - minimist "^1.2.6" - strip-bom "^3.0.0" - -tsconfig-paths@^3.10.1: - version "3.11.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.11.0.tgz#954c1fe973da6339c78e06b03ce2e48810b65f36" - integrity sha512-7ecdYDnIdmv639mmDwslG6KQg1Z9STTz1j7Gcz0xa+nshh/gKDAHcPxRbWOsA3SPp0tXP2leTcY9Kw+NAkfZzA== - dependencies: - "@types/json5" "^0.0.29" - json5 "^1.0.1" - minimist "^1.2.0" - strip-bom "^3.0.0" - -tslib@2.3.1, tslib@^2.1.0, tslib@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" - integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== - -tslib@^1.8.1, tslib@^1.9.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== - dependencies: - prelude-ls "~1.1.2" - -type-detect@4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -type-fest@^0.21.3: - version "0.21.3" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" - integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== - -type-is@^1.6.4, type-is@~1.6.17, type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -typedarray-to-buffer@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" - integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== - dependencies: - is-typedarray "^1.0.0" - -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== - -typeorm@^0.3.6: - version "0.3.7" - resolved "https://registry.yarnpkg.com/typeorm/-/typeorm-0.3.7.tgz#5776ed5058f0acb75d64723b39ff458d21de64c1" - integrity sha512-MsPJeP6Zuwfe64c++l80+VRqpGEGxf0CkztIEnehQ+CMmQPSHjOnFbFxwBuZ2jiLqZTjLk2ZqQdVF0RmvxNF3Q== - dependencies: - "@sqltools/formatter" "^1.2.2" - app-root-path "^3.0.0" - buffer "^6.0.3" - chalk "^4.1.0" - cli-highlight "^2.1.11" - date-fns "^2.28.0" - debug "^4.3.3" - dotenv "^16.0.0" - glob "^7.2.0" - js-yaml "^4.1.0" - mkdirp "^1.0.4" - reflect-metadata "^0.1.13" - sha.js "^2.4.11" - tslib "^2.3.1" - uuid "^8.3.2" - xml2js "^0.4.23" - yargs "^17.3.1" - -typescript@4.7.4: - version "4.7.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.4.tgz#1a88596d1cf47d59507a1bcdfb5b9dfe4d488235" - integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ== - -typescript@^4.3.5: - version "4.4.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.4.3.tgz#bdc5407caa2b109efd4f82fe130656f977a29324" - integrity sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA== - -universalify@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -universalify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" - integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== - -update-browserslist-db@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz#be06a5eedd62f107b7c19eb5bcefb194411abf38" - integrity sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q== - dependencies: - escalade "^3.1.1" - picocolors "^1.0.0" - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -util-deprecate@^1.0.1, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== - -uuid@8.3.2, uuid@^8.3.2: - version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - -v8-compile-cache-lib@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" - integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== - -v8-compile-cache@^2.0.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" - integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== - -v8-to-istanbul@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.0.0.tgz#4229f2a99e367f3f018fa1d5c2b8ec684667c69c" - integrity sha512-LkmXi8UUNxnCC+JlH7/fsfsKr5AU110l+SYGJimWNkWhxbN5EyeOtm1MJ0hhvqMMOhGwBj1Fp70Yv9i+hX0QAg== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^1.6.0" - source-map "^0.7.3" - -validator@^13.5.2: - version "13.6.0" - resolved "https://registry.yarnpkg.com/validator/-/validator-13.6.0.tgz#1e71899c14cdc7b2068463cb24c1cc16f6ec7059" - integrity sha512-gVgKbdbHgtxpRyR8K0O6oFZPhhB5tT1jeEHZR0Znr9Svg03U0+r9DXWMrnRAB+HtCStDQKlaIZm42tVsVjqtjg== - -vary@^1, vary@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== - -w3c-hr-time@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" - integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== - dependencies: - browser-process-hrtime "^1.0.0" - -w3c-xmlserializer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" - integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== - dependencies: - xml-name-validator "^3.0.0" - -walker@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" - integrity sha512-cF4je9Fgt6sj1PKfuFt9jpQPeHosM+Ryma/hfY9U7uXGKM7pJCsF0v2r55o+Il54+i77SyYWetB4tD1dEygRkw== - dependencies: - makeerror "1.0.x" - -watchpack@^2.3.1: - version "2.4.0" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" - integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== - dependencies: - glob-to-regexp "^0.4.1" - graceful-fs "^4.1.2" - -wcwidth@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== - dependencies: - defaults "^1.0.3" - -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== - -webidl-conversions@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" - integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== - -webidl-conversions@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" - integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== - -webpack-node-externals@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz#1a3407c158d547a9feb4229a9e3385b7b60c9917" - integrity sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ== - -webpack-sources@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" - integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== - -webpack@5.73.0: - version "5.73.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.73.0.tgz#bbd17738f8a53ee5760ea2f59dce7f3431d35d38" - integrity sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA== - dependencies: - "@types/eslint-scope" "^3.7.3" - "@types/estree" "^0.0.51" - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/wasm-edit" "1.11.1" - "@webassemblyjs/wasm-parser" "1.11.1" - acorn "^8.4.1" - acorn-import-assertions "^1.7.6" - browserslist "^4.14.5" - chrome-trace-event "^1.0.2" - enhanced-resolve "^5.9.3" - es-module-lexer "^0.9.0" - eslint-scope "5.1.1" - events "^3.2.0" - glob-to-regexp "^0.4.1" - graceful-fs "^4.2.9" - json-parse-even-better-errors "^2.3.1" - loader-runner "^4.2.0" - mime-types "^2.1.27" - neo-async "^2.6.2" - schema-utils "^3.1.0" - tapable "^2.1.1" - terser-webpack-plugin "^5.1.3" - watchpack "^2.3.1" - webpack-sources "^3.2.3" - -whatwg-encoding@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" - integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== - dependencies: - iconv-lite "0.4.24" - -whatwg-mimetype@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" - integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== - -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - -whatwg-url@^8.0.0, whatwg-url@^8.5.0: - version "8.7.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" - integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== - dependencies: - lodash "^4.7.0" - tr46 "^2.1.0" - webidl-conversions "^6.1.0" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -windows-release@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/windows-release/-/windows-release-4.0.0.tgz#4725ec70217d1bf6e02c7772413b29cdde9ec377" - integrity sha512-OxmV4wzDKB1x7AZaZgXMVsdJ1qER1ed83ZrTYd5Bwq2HfJVg3DJS8nqlAG4sMoJ7mu8cuRmLEYyU13BKwctRAg== - dependencies: - execa "^4.0.2" - -word-wrap@^1.2.3, word-wrap@~1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== - -wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -write-file-atomic@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" - integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== - dependencies: - imurmurhash "^0.1.4" - is-typedarray "^1.0.0" - signal-exit "^3.0.2" - typedarray-to-buffer "^3.1.5" - -ws@^7.4.6: - version "7.5.5" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.5.tgz#8b4bc4af518cfabd0473ae4f99144287b33eb881" - integrity sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w== - -xml-name-validator@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" - integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== - -xml2js@^0.4.23: - version "0.4.23" - resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66" - integrity sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug== - dependencies: - sax ">=0.6.0" - xmlbuilder "~11.0.0" - -xmlbuilder@~11.0.0: - version "11.0.1" - resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" - integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== - -xmlchars@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" - integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== - -xtend@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yaml@^1.10.0: - version "1.10.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" - integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== - -yaml@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.1.1.tgz#1e06fb4ca46e60d9da07e4f786ea370ed3c3cfec" - integrity sha512-o96x3OPo8GjWeSLF+wOAbrPfhFOGY0W00GNaxCDv+9hkcDJEnev1yh8S7pgHF0ik6zc8sQLuL8hjHjJULZp8bw== - -yargs-parser@20.x, yargs-parser@^20.2.2: - version "20.2.9" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== - -yargs-parser@^21.0.0: - version "21.0.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.0.1.tgz#0267f286c877a4f0f728fceb6f8a3e4cb95c6e35" - integrity sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg== - -yargs@^16.0.0, yargs@^16.0.3: - version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.0" - y18n "^5.0.5" - yargs-parser "^20.2.2" - -yargs@^17.3.1: - version "17.5.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.5.1.tgz#e109900cab6fcb7fd44b1d8249166feb0b36e58e" - integrity sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA== - 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" - -yn@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" - integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== diff --git a/backend/build-go-bindings.sh b/build-go-bindings.sh similarity index 96% rename from backend/build-go-bindings.sh rename to build-go-bindings.sh index bbec5118a..4682ed055 100644 --- a/backend/build-go-bindings.sh +++ b/build-go-bindings.sh @@ -1,5 +1,5 @@ EXEC_PATH=dist/go-bindings/bin/internal -SOURCE_PATH=../internal/main.go +SOURCE_PATH=./internal/main.go # Technically, only 64bit architectures are supported, since # Cadence can't be built for 32bit arch due to constant overflows: diff --git a/packages/api/package.json b/packages/api/package.json index 6c8d08ef0..da51794fc 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -1,15 +1,17 @@ { "name": "@onflowser/api", "version": "1.0.0", - "description": "", - "main": "./src/index.ts", - "types": "./src/index.ts", - "scripts": {}, + "files": ["dist"], + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "scripts": { + "build": "tsc" + }, "keywords": [], "author": "", "license": "ISC", "dependencies": { - "config": "*" + "@onflowser/config": "*" }, "devDependencies": { "typescript": "^4.3.5" diff --git a/packages/api/src/capabilities.ts b/packages/api/src/capabilities.ts index 3c0abb92b..f077daad6 100644 --- a/packages/api/src/capabilities.ts +++ b/packages/api/src/capabilities.ts @@ -4,7 +4,7 @@ export type RequireOnly = Pick< Resource, Key > & - Partial; + Partial>; export interface IResourceIndexReader { findOneById(id: string): Promise; diff --git a/packages/api/tsconfig.json b/packages/api/tsconfig.json index 65e818d95..a991f4ef0 100644 --- a/packages/api/tsconfig.json +++ b/packages/api/tsconfig.json @@ -1,3 +1,8 @@ { - "extends": "config/tsconfig.json" + "extends": "@onflowser/config/tsconfig.json", + "include": ["src"], + "exclude": ["dist", "node_modules"], + "compilerOptions": { + "outDir": "./dist" + } } diff --git a/packages/config/tsconfig.json b/packages/config/tsconfig.json index 3921df4c9..d330a2a03 100644 --- a/packages/config/tsconfig.json +++ b/packages/config/tsconfig.json @@ -3,6 +3,7 @@ "lib": ["ES2015"], "strict": true, "module": "commonjs", + "moduleResolution": "node", "declaration": true, "removeComments": true, "emitDecoratorMetadata": true, @@ -10,9 +11,8 @@ "allowSyntheticDefaultImports": true, "target": "es2017", "types": ["node", "jest"], + "downlevelIteration": true, "sourceMap": true, - "outDir": "./dist", - "baseUrl": "./", "incremental": true, "skipLibCheck": true, "strictNullChecks": true, @@ -20,7 +20,5 @@ "strictBindCallApply": true, "forceConsistentCasingInFileNames": true, "noFallthroughCasesInSwitch": true - }, - "include": ["src"], - "exclude": ["dist", "build", "node_modules"] + } } diff --git a/packages/core/package.json b/packages/core/package.json index 66d0d7bb0..7a95cbc29 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -2,19 +2,24 @@ "name": "@onflowser/core", "version": "1.0.0", "description": "", - "types": "./src/index.ts", - "scripts": {}, + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "scripts": { + "build": "tsc" + }, "keywords": [], "author": "", "license": "ISC", "dependencies": { + "@onflowser/config": "*", + "@onflowser/api": "*", "@nestjs/common": "^8.0.0", "@onflow/fcl": "^1.6.0", - "@onflowser/config": "*", - "node-abort-controller": "^3.0.1", - "axios": "^0.21.4" + "axios": "^0.21.4", + "node-abort-controller": "^3.0.1" }, "devDependencies": { + "@types/jest": "^29.5.5", "@types/node": "^16.11.6", "typescript": "^4.3.5" } diff --git a/packages/core/src/flow/flow-cli.service.ts b/packages/core/src/flow/flow-cli.service.ts index 166c7a563..b0229eeb0 100644 --- a/packages/core/src/flow/flow-cli.service.ts +++ b/packages/core/src/flow/flow-cli.service.ts @@ -1,4 +1,3 @@ -import { Injectable, NotFoundException } from "@nestjs/common"; import { ManagedProcess, ProcessOutputSource, @@ -69,7 +68,6 @@ type CreateAccountOptions = { projectRootPath: string; }; -@Injectable() export class FlowCliService { static readonly processId = "flow-init-config"; @@ -155,7 +153,7 @@ export class FlowCliService { // but let's handle it anyway just in case const unknownVersionMessage = "Version information unknown!"; if (!versionLog || versionLog.data === unknownVersionMessage) { - throw new NotFoundException("Flow CLI version not found"); + throw new Error("Flow CLI version not found"); } const [_, version] = versionLog?.data?.split(/: /) ?? []; return { diff --git a/packages/core/src/flow/flow-config.service.ts b/packages/core/src/flow/flow-config.service.ts index c9225e71b..bef3ae121 100644 --- a/packages/core/src/flow/flow-config.service.ts +++ b/packages/core/src/flow/flow-config.service.ts @@ -1,14 +1,8 @@ -import { - Injectable, - Logger, - InternalServerErrorException, - PreconditionFailedException, -} from "@nestjs/common"; import { readFile, writeFile, watch } from "fs/promises"; import * as path from "path"; import { AbortController } from "node-abort-controller"; import * as fs from "fs"; -import { isObject } from "../../../../backend/src/utils/common-utils"; +import { isObject } from "../utils"; type FlowAddress = string; @@ -89,9 +83,7 @@ type FlowConfigServiceConfig = { workingDirectoryPath: string; }; -@Injectable() export class FlowConfigService { - private logger = new Logger(FlowConfigService.name); private fileListenerController: AbortController | undefined; private config: FlowCliConfig | undefined; private configFileName = "flow.json"; @@ -112,7 +104,6 @@ export class FlowConfigService { } public async reload() { - this.logger.debug("Reloading flow.json config"); this.detachListeners(); await this.load(); this.attachListeners(); @@ -214,7 +205,6 @@ export class FlowConfigService { await this.load(); } } catch (error) { - this.logger.debug("watch error", error); if (isObject(error) && error["name"] !== "AbortError") { throw error; } @@ -230,7 +220,7 @@ export class FlowConfigService { const data = await this.readProjectFile(this.configFileName); this.config = JSON.parse(data); } catch (e) { - this.logger.debug("Config read error", e); + console.error("Config read error", e); } } @@ -256,7 +246,7 @@ export class FlowConfigService { private buildProjectPath(pathPostfix: string) { if (!pathPostfix) { - throw new InternalServerErrorException("Postfix path not provided"); + throw new Error("Postfix path not provided"); } if (!this.workingDirectoryPath) { throw new Error("FlowConfigService not configured"); @@ -265,8 +255,6 @@ export class FlowConfigService { } private missingConfigError(path: string) { - return new PreconditionFailedException( - `Missing flow.json configuration key: ${path}` - ); + return new Error(`Missing flow.json configuration key: ${path}`); } } diff --git a/packages/core/src/flow/flow-emulator.service.ts b/packages/core/src/flow/flow-emulator.service.ts index 9bb707b6b..f61893d3a 100644 --- a/packages/core/src/flow/flow-emulator.service.ts +++ b/packages/core/src/flow/flow-emulator.service.ts @@ -1,13 +1,12 @@ -import { Injectable, InternalServerErrorException } from "@nestjs/common"; -import { ProcessOutputSource } from "@flowser/shared"; import { ProcessManagerService } from "../processes/process-manager.service"; import { ManagedProcess } from "../processes/managed-process"; -import { - isDefined, - waitForMs, -} from "../../../../backend/src/utils/common-utils"; +import { isDefined, waitForMs } from "../utils"; import { EventEmitter } from "node:events"; -import { HashAlgorithm, SignatureAlgorithm } from "@onflowser/api"; +import { + HashAlgorithm, + ProcessOutputSource, + SignatureAlgorithm, +} from "@onflowser/api"; type FlowWellKnownAddresses = { serviceAccountAddress: string; @@ -53,7 +52,6 @@ export type FlowEmulatorConfig = { snapshot: boolean; }; -@Injectable() export class FlowEmulatorService extends EventEmitter { public static readonly processId = "emulator"; private process: ManagedProcess | undefined; @@ -187,10 +185,7 @@ export class FlowEmulatorService extends EventEmitter { while (retries >= 0) { const error = getErrorOutput(); if (error) { - throw new InternalServerErrorException( - "Emulator failed to start", - error.data - ); + throw new Error("Emulator failed to start: " + error.data); } await waitForMs(100); retries--; diff --git a/packages/core/src/flow/flow-gateway.service.ts b/packages/core/src/flow/flow-gateway.service.ts index 1c9dc694d..23613ad73 100644 --- a/packages/core/src/flow/flow-gateway.service.ts +++ b/packages/core/src/flow/flow-gateway.service.ts @@ -1,4 +1,3 @@ -import { Injectable } from "@nestjs/common"; import * as http from "http"; import { FclArgBuilder, @@ -7,7 +6,6 @@ import { FclValues, } from "./fcl-values"; import * as fcl from "@onflow/fcl"; -import { FlowConfigService } from "./flow-config.service"; // https://docs.onflow.org/fcl/reference/api/#collectionguaranteeobject export type FlowCollectionGuarantee = { @@ -137,8 +135,9 @@ type FlowTxStatusSubscription = { onceSealed: () => Promise; }; -export type FlowGatewayConfig = { +type FlowGatewayConfig = { restServerAddress: string; + flowJSON: unknown; }; export enum FlowApiStatus { @@ -146,19 +145,15 @@ export enum FlowApiStatus { SERVICE_STATUS_OFFLINE = 2, } -@Injectable() export class FlowGatewayService { - constructor(private readonly flowConfigService: FlowConfigService) {} - - // TODO(restructure): Pass this config to constructor instead? - configure(config: FlowGatewayConfig): void { + public configure(config: FlowGatewayConfig): void { fcl .config({ "accessNode.api": config.restServerAddress, "flow.network": "emulator", }) .load({ - flowJSON: this.flowConfigService.getRawConfig(), + flowJSON: config.flowJSON, }); } @@ -243,9 +238,14 @@ export class FlowGatewayService { } public async getApiStatus( - gateway: FlowGatewayConfig ): Promise { - const { hostname, port } = new URL(gateway.restServerAddress); + const restServerAddress = await fcl.config.get("accessNode.api"); + + if (!restServerAddress) { + throw new Error("accessNode.api not configured") + } + + const { hostname, port } = new URL(restServerAddress); return new Promise((resolve) => { const req = http .get( diff --git a/packages/core/src/flow/flow-interactions.service.ts b/packages/core/src/flow/flow-interactions.service.ts index 82859f998..0cae76f5e 100644 --- a/packages/core/src/flow/flow-interactions.service.ts +++ b/packages/core/src/flow/flow-interactions.service.ts @@ -1,8 +1,7 @@ -import { Injectable } from "@nestjs/common"; import * as fs from "fs/promises"; import * as path from "path"; import { GoBindingsService } from "./go-bindings.service"; -import { isDefined } from "../../../../backend/src/utils/common-utils"; +import { isDefined } from "../utils"; import { InteractionKind } from "@onflowser/api"; export interface InteractionTemplate { @@ -22,7 +21,6 @@ type GetInteractionTemplatesOptions = { projectRootPath: string; }; -@Injectable() export class FlowInteractionsService { constructor(private readonly goBindings: GoBindingsService) {} diff --git a/packages/core/src/flow/flow-snapshots.service.ts b/packages/core/src/flow/flow-snapshots.service.ts index 6d6fa185c..17f587a18 100644 --- a/packages/core/src/flow/flow-snapshots.service.ts +++ b/packages/core/src/flow/flow-snapshots.service.ts @@ -1,8 +1,3 @@ -import { - Injectable, - InternalServerErrorException, - NotFoundException, -} from "@nestjs/common"; import axios, { Method } from "axios"; type CreateSnapshotRequest = { @@ -27,7 +22,6 @@ type SnapshotInfoResponse = { height: number; }; -@Injectable() export class FlowSnapshotsService { constructor() {} @@ -61,7 +55,7 @@ export class FlowSnapshotsService { }); if (response.status !== 200) { - throw new InternalServerErrorException("Failed creating snapshot"); + throw new Error("Failed creating snapshot"); } return response.data; @@ -75,7 +69,7 @@ export class FlowSnapshotsService { }); if (response.status !== 200) { - throw new InternalServerErrorException("Failed to jump to height"); + throw new Error("Failed to jump to height"); } } @@ -89,11 +83,11 @@ export class FlowSnapshotsService { }); if (response.status === 404) { - throw new NotFoundException("Snapshot not found"); + throw new Error("Snapshot not found"); } if (response.status !== 200) { - throw new InternalServerErrorException("Failed to jump to snapshot"); + throw new Error("Failed to jump to snapshot"); } return response.data; @@ -107,7 +101,7 @@ export class FlowSnapshotsService { }); if (response.status !== 200) { - throw new InternalServerErrorException("Failed to list snapshots"); + throw new Error("Failed to list snapshots"); } const emptyResponse: ListSnapshotsResponse = { diff --git a/packages/core/src/flow/flow-storage.service.ts b/packages/core/src/flow/flow-storage.service.ts index 10f91b9e1..0687e92a5 100644 --- a/packages/core/src/flow/flow-storage.service.ts +++ b/packages/core/src/flow/flow-storage.service.ts @@ -1,11 +1,10 @@ -import { Injectable } from "@nestjs/common"; import { FlowGatewayService } from "./flow-gateway.service"; -import { ensurePrefixedAddress } from "../../../../backend/src/utils/common-utils"; +import { ensurePrefixedAddress } from "../utils"; import { AccountStorageDomain, CadenceTypeKind, - FlowAccountStorage -} from '@onflowser/api'; + FlowAccountStorage, +} from "@onflowser/api"; /** * For more info on the account storage model and API, see: @@ -34,7 +33,6 @@ type StorageTraversalResult = { storagePathItems: StoragePathItem[]; }; -@Injectable() export class FlowAccountStorageService { constructor(private readonly flowGatewayService: FlowGatewayService) {} @@ -44,28 +42,32 @@ export class FlowAccountStorageService { const flowAccountStorage = await this.fetchStorageByAddress(address); return [ - ...flowAccountStorage.capabilityPathItems.map((item): FlowAccountStorage => ({ - id: `${ensurePrefixedAddress(item.address)}.${item.path}`, - address: ensurePrefixedAddress(item.address), - // Temporarily store the data type in untyped field, refactor later. - data: { - type: item.type, - }, - domain: this.getStorageDomainFromPath(item.path), - path: item.path, - targetPath: item.targetPath, - })), - ...flowAccountStorage.storagePathItems.map((item): FlowAccountStorage => ({ - id: `${ensurePrefixedAddress(item.address)}.${item.path}`, - address: ensurePrefixedAddress(item.address), - // Temporarily store the data type in untyped field, refactor later. - data: { - type: item.type, - }, - domain: this.getStorageDomainFromPath(item.path), - path: item.path, - targetPath: "", - })), + ...flowAccountStorage.capabilityPathItems.map( + (item): FlowAccountStorage => ({ + id: `${ensurePrefixedAddress(item.address)}.${item.path}`, + address: ensurePrefixedAddress(item.address), + // Temporarily store the data type in untyped field, refactor later. + data: { + type: item.type, + }, + domain: this.getStorageDomainFromPath(item.path), + path: item.path, + targetPath: item.targetPath, + }) + ), + ...flowAccountStorage.storagePathItems.map( + (item): FlowAccountStorage => ({ + id: `${ensurePrefixedAddress(item.address)}.${item.path}`, + address: ensurePrefixedAddress(item.address), + // Temporarily store the data type in untyped field, refactor later. + data: { + type: item.type, + }, + domain: this.getStorageDomainFromPath(item.path), + path: item.path, + targetPath: "", + }) + ), ]; } @@ -199,7 +201,7 @@ export class FlowAccountStorageService { case "storage": return AccountStorageDomain.STORAGE_DOMAIN_STORAGE; default: - throw new Error(`Unknown domain: ${rawDomain}`) + throw new Error(`Unknown domain: ${rawDomain}`); } } } diff --git a/packages/core/src/flow/go-bindings.service.ts b/packages/core/src/flow/go-bindings.service.ts index 07f967bd8..028ef40b8 100644 --- a/packages/core/src/flow/go-bindings.service.ts +++ b/packages/core/src/flow/go-bindings.service.ts @@ -1,8 +1,7 @@ -import { Injectable, InternalServerErrorException } from "@nestjs/common"; import { spawn } from "node:child_process"; import * as path from "path"; import * as os from "os"; -import { CadenceInteraction } from '@onflowser/api'; +import { CadenceInteraction } from "@onflowser/api"; export interface GetParsedInteractionRequest { sourceCode: string; @@ -33,7 +32,6 @@ type ExecuteGoBinResponse = { raw: string; }; -@Injectable() export class GoBindingsService { public async getParsedInteraction( request: GetParsedInteractionRequest @@ -107,9 +105,7 @@ export class GoBindingsService { case "win32": return "internal-amd64.exe"; default: - throw new InternalServerErrorException( - `Unsupported platform: ${os.platform()}` - ); + throw new Error(`Unsupported platform: ${os.platform()}`); } } } diff --git a/packages/core/src/flow/index.ts b/packages/core/src/flow/index.ts new file mode 100644 index 000000000..acc46a5dd --- /dev/null +++ b/packages/core/src/flow/index.ts @@ -0,0 +1,9 @@ +export * from "./fcl-values"; +export * from "./flow-cli.service"; +export * from "./flow-config.service"; +export * from "./flow-gateway.service"; +export * from "./flow-emulator.service"; +export * from "./flow-snapshots.service"; +export * from "./flow-interactions.service"; +export * from "./flow-storage.service"; +export * from "./go-bindings.service"; diff --git a/packages/core/src/flow/resources.ts b/packages/core/src/flow/resources.ts deleted file mode 100644 index 846f1406a..000000000 --- a/packages/core/src/flow/resources.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface FlowStateSnapshot { - id: string; - description: string; - blockId: string; -} diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts new file mode 100644 index 000000000..728f861d2 --- /dev/null +++ b/packages/core/src/index.ts @@ -0,0 +1,3 @@ +export * from "./flow"; +export * from "./processes"; +export * from "./utils"; diff --git a/packages/core/src/processes/index.ts b/packages/core/src/processes/index.ts new file mode 100644 index 000000000..e19a81313 --- /dev/null +++ b/packages/core/src/processes/index.ts @@ -0,0 +1,2 @@ +export * from "./managed-process"; +export * from "./process-manager.service"; diff --git a/packages/core/src/processes/managed-process.ts b/packages/core/src/processes/managed-process.ts index 73ed792fa..d061302b4 100644 --- a/packages/core/src/processes/managed-process.ts +++ b/packages/core/src/processes/managed-process.ts @@ -4,7 +4,6 @@ import { SpawnOptionsWithoutStdio, } from "child_process"; import { randomUUID } from "crypto"; -import { Logger } from "@nestjs/common"; import { EventEmitter } from "node:events"; export type ManagedProcessOptions = { @@ -42,7 +41,6 @@ export enum ManagedProcessEvent { } export class ManagedProcess extends EventEmitter { - private readonly logger = new Logger(ManagedProcess.name); public readonly id: string; private readonly name: string; public options: ManagedProcessOptions; @@ -77,7 +75,8 @@ export class ManagedProcess extends EventEmitter { throw new Error("Process is already running"); } - this.logger.debug( + // TODO(restructure): Inject logger provider + console.debug( `Starting ${this.name} with command: ${command.name} ${command.args?.join( " " )}` @@ -134,11 +133,11 @@ export class ManagedProcess extends EventEmitter { return; } this.childProcess.once("spawn", () => { - this.logger.debug(`Process ${this.id} started`); + console.debug(`Process ${this.id} started`); this.setState(ManagedProcessState.MANAGED_PROCESS_STATE_RUNNING); }); this.childProcess.once("exit", (code, signal) => { - this.logger.debug( + console.debug( `Process ${this.id} exited (code=${code}, signal=${signal})` ); this.setState( @@ -184,7 +183,7 @@ export class ManagedProcess extends EventEmitter { } private setState(newState: ManagedProcessState) { - this.logger.debug( + console.debug( `Process ${this.id} state changed from ${this.state} to ${newState}` ); this.updatedAt = new Date(); diff --git a/packages/core/src/processes/process-manager.service.ts b/packages/core/src/processes/process-manager.service.ts index e194ec142..200573f37 100644 --- a/packages/core/src/processes/process-manager.service.ts +++ b/packages/core/src/processes/process-manager.service.ts @@ -1,4 +1,3 @@ -import { Injectable, NotFoundException } from "@nestjs/common"; import { ManagedProcess, ProcessOutputSource, @@ -11,7 +10,6 @@ export enum ProcessManagerEvent { PROCESS_UPDATED = "process_updated", } -@Injectable() export class ProcessManagerService extends EventEmitter { private readonly processLookupById: Map; @@ -92,7 +90,7 @@ export class ProcessManagerService extends EventEmitter { async startExisting(processId: string) { const existingProcess = this.processLookupById.get(processId); if (!existingProcess) { - throw new NotFoundException(`Existing process not found: ${processId}`); + throw new Error(`Existing process not found: ${processId}`); } await existingProcess.stop(); this.emit(ProcessManagerEvent.PROCESS_UPDATED, process); @@ -154,7 +152,7 @@ export class ProcessManagerService extends EventEmitter { async restart(processId: string) { const process = this.processLookupById.get(processId); if (!process) { - throw new NotFoundException("Process not found"); + throw new Error("Process not found"); } await process.stop(); await process.start(); diff --git a/backend/src/utils/common-utils.spec.ts b/packages/core/src/utils.spec.ts similarity index 95% rename from backend/src/utils/common-utils.spec.ts rename to packages/core/src/utils.spec.ts index 1d011fe60..1cb3e802d 100644 --- a/backend/src/utils/common-utils.spec.ts +++ b/packages/core/src/utils.spec.ts @@ -1,4 +1,4 @@ -import { computeEntitiesDiff } from "./common-utils"; +import { computeEntitiesDiff } from "./utils"; describe("Utils", function () { it("should compute entities diff using deep compare", function () { diff --git a/backend/src/utils/common-utils.ts b/packages/core/src/utils.ts similarity index 80% rename from backend/src/utils/common-utils.ts rename to packages/core/src/utils.ts index ede884da5..7aa09fe17 100644 --- a/backend/src/utils/common-utils.ts +++ b/packages/core/src/utils.ts @@ -1,6 +1,3 @@ -import { rm } from "fs/promises"; -import { ProtobufLikeObject } from "@flowser/shared"; - export function isDefined( value: Value | null | undefined ): value is Value { @@ -15,35 +12,6 @@ export function isObject(value: unknown): value is Record { return value !== null && typeof value === "object"; } -export function isArray(value: unknown): value is unknown[] { - return typeof value === "object" && value !== null && "map" in value; -} - -export async function rmdir(path: string) { - return rm(path, { force: true, recursive: true }); -} - -export function typeOrmProtobufTransformer(protobuf: ProtobufLikeObject) { - return { - from: (value: any | null) => { - if (value === null) { - return null; - } - return value?.["map"] !== undefined - ? value.map(protobuf.fromJSON) - : protobuf.fromJSON(value); - }, - to: (value: any | null) => { - if (value === null) { - return null; - } - return value?.["map"] !== undefined - ? value.map(protobuf.toJSON) - : protobuf.toJSON(value); - }, - }; -} - export function ensurePrefixedAddress(address: string | null | undefined) { return address?.startsWith("0x") ? address : `0x${address}`; } diff --git a/packages/core/tsconfig.json b/packages/core/tsconfig.json index 65e818d95..a991f4ef0 100644 --- a/packages/core/tsconfig.json +++ b/packages/core/tsconfig.json @@ -1,3 +1,8 @@ { - "extends": "config/tsconfig.json" + "extends": "@onflowser/config/tsconfig.json", + "include": ["src"], + "exclude": ["dist", "node_modules"], + "compilerOptions": { + "outDir": "./dist" + } } diff --git a/packages/indexer/index.ts b/packages/indexer/index.ts deleted file mode 100644 index 6eed4c03a..000000000 --- a/packages/indexer/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./src/in-memory-index"; diff --git a/packages/indexer/package.json b/packages/indexer/package.json index 968f138cc..62eebf2b0 100644 --- a/packages/indexer/package.json +++ b/packages/indexer/package.json @@ -2,9 +2,11 @@ "name": "@onflowser/indexer", "version": "1.0.0", "description": "", - "main": "../indexer/index.ts", - "types": "./src/index.ts", - "scripts": {}, + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "scripts": { + "build": "tsc" + }, "keywords": [], "author": "", "license": "ISC", diff --git a/packages/indexer/src/in-memory-index.ts b/packages/indexer/src/in-memory-index.ts index 9d657fff9..711113355 100644 --- a/packages/indexer/src/in-memory-index.ts +++ b/packages/indexer/src/in-memory-index.ts @@ -1,8 +1,9 @@ import { IdentifiableResource, IResourceIndexReader, - IResourceIndexWriter, RequireOnly -} from '@onflowser/api'; + IResourceIndexWriter, + RequireOnly, +} from "@onflowser/api"; export class InMemoryIndex implements IResourceIndexReader, IResourceIndexWriter @@ -29,11 +30,12 @@ export class InMemoryIndex } async update(resource: RequireOnly): Promise { - if (!this.lookup.has(resource.id)) { + const existingResource = this.lookup.get(resource.id); + if (!existingResource) { throw new Error("Resource not found"); } this.lookup.set(resource.id, { - ...this.lookup.get(resource.id), + ...existingResource, ...resource, }); } @@ -41,4 +43,8 @@ export class InMemoryIndex async findAll(): Promise { return Array.from(this.lookup.values()); } + + async findOneById(id: string): Promise { + return this.lookup.get(id); + } } diff --git a/packages/indexer/src/index.ts b/packages/indexer/src/index.ts new file mode 100644 index 000000000..3bc71192f --- /dev/null +++ b/packages/indexer/src/index.ts @@ -0,0 +1,2 @@ +export * from "./indexer.service"; +export * from "./in-memory-index"; diff --git a/packages/indexer/src/indexer.service.ts b/packages/indexer/src/indexer.service.ts index 84975e15d..e9df79c01 100644 --- a/packages/indexer/src/indexer.service.ts +++ b/packages/indexer/src/indexer.service.ts @@ -2,30 +2,23 @@ import { Injectable, Logger } from "@nestjs/common"; import { FlowApiStatus, FlowGatewayService, -} from "@onflowser/core/src/flow/flow-gateway.service"; -import * as flowResource from "@onflowser/core/src/flow/flow-gateway.service"; -import * as flowserResource from "@onflowser/api/src/resources"; -import { - ensureNonPrefixedAddress, - ensurePrefixedAddress, -} from "../../../backend/src/utils/common-utils"; -import { ManagedProcess } from "@onflowser/core/src/processes/managed-process"; -import { + GetParsedInteractionResponse, FlowEmulatorService, WellKnownAddressesOptions, -} from "@onflowser/core/src/flow/flow-emulator.service"; -import { AsyncIntervalScheduler } from "./async-interval-scheduler"; -import { FlowGatewayConfig } from "@onflowser/core/src/flow/flow-gateway.service"; -import { - GetParsedInteractionResponse, + ManagedProcess, + ensureNonPrefixedAddress, + ensurePrefixedAddress, + FlowAccountStorageService, GoBindingsService, -} from "@onflowser/core/src/flow/go-bindings.service"; -import { IResourceIndex } from "@onflowser/api"; +} from "@onflowser/core"; +import * as flowResource from "@onflowser/core"; +import * as flowserResource from "@onflowser/api"; +import { AsyncIntervalScheduler } from "./async-interval-scheduler"; import { + IResourceIndex, HashAlgorithm, SignatureAlgorithm, -} from "@onflowser/api/src/resources"; -import { FlowAccountStorageService } from "@onflowser/core/src/flow/flow-storage.service"; +} from "@onflowser/api"; // See https://developers.flow.com/cadence/language/core-events enum FlowCoreEventType { @@ -66,7 +59,6 @@ export class IndexerService { private processingScheduler: AsyncIntervalScheduler; constructor( - gatewayConfig: FlowGatewayConfig, private transactionIndex: IResourceIndex, private accountIndex: IResourceIndex, private blockIndex: IResourceIndex, @@ -81,7 +73,7 @@ export class IndexerService { this.processingScheduler = new AsyncIntervalScheduler({ name: "Blockchain processing", pollingIntervalInMs: this.pollingDelay, - functionToExecute: () => this.processBlockchainData(gatewayConfig), + functionToExecute: this.processBlockchainData.bind(this), }); } @@ -100,10 +92,8 @@ export class IndexerService { return latestUnprocessedBlockHeight - (nextBlockHeightToProcess - 1); } - async processBlockchainData(gatewayConfig: FlowGatewayConfig): Promise { - const gatewayStatus = await this.flowGatewayService.getApiStatus( - gatewayConfig - ); + async processBlockchainData(): Promise { + const gatewayStatus = await this.flowGatewayService.getApiStatus(); if (gatewayStatus !== FlowApiStatus.SERVICE_STATUS_ONLINE) { this.logger.debug("Gateway offline, pausing processing."); return; diff --git a/packages/indexer/tsconfig.json b/packages/indexer/tsconfig.json index 65e818d95..a991f4ef0 100644 --- a/packages/indexer/tsconfig.json +++ b/packages/indexer/tsconfig.json @@ -1,3 +1,8 @@ { - "extends": "config/tsconfig.json" + "extends": "@onflowser/config/tsconfig.json", + "include": ["src"], + "exclude": ["dist", "node_modules"], + "compilerOptions": { + "outDir": "./dist" + } } diff --git a/packages/wallet/src/wallet.service.ts b/packages/wallet/src/wallet.service.ts index 9f4d54ae9..c372d3832 100644 --- a/packages/wallet/src/wallet.service.ts +++ b/packages/wallet/src/wallet.service.ts @@ -12,10 +12,8 @@ import { } from "@onflowser/core/src/flow/flow-cli.service"; import { AccountsService } from "../../../backend/src/accounts/services/accounts.service"; import { AccountEntity } from "../../../backend/src/accounts/entities/account.entity"; -import { ensurePrefixedAddress } from "../../../backend/src/utils/common-utils"; -import { - AccountKeyEntity, -} from "../../../backend/src/accounts/entities/key.entity"; +import { ensurePrefixedAddress } from "../../core/src/utils"; +import { AccountKeyEntity } from "../../../backend/src/accounts/entities/key.entity"; import { KeysService } from "../../../backend/src/accounts/services/keys.service"; import { FlowAuthorizationFunction, diff --git a/tsconfig.json b/tsconfig.json deleted file mode 100644 index 6d4cd7a86..000000000 --- a/tsconfig.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "compilerOptions": { - "experimentalDecorators": true, - "baseUrl": "./", - "paths": { - "@flowser/*": ["./*/src"] - }, - "lib": [ - "dom", - "es5", - "scripthost", - "es2015" - ] - }, - "references": [ - { "path": "shared"}, - ] -} diff --git a/turbo.json b/turbo.json index 53211c8a6..be27f8844 100644 --- a/turbo.json +++ b/turbo.json @@ -2,6 +2,7 @@ "npmClient": "npm", "pipeline": { "build": { + "cache": false, "dependsOn": ["^build"], "outputs": ["dist/**", ".next/**"] }, diff --git a/yarn.lock b/yarn.lock index de59a5946..9c7546126 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7,6 +7,14 @@ "resolved" "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz" "version" "1.2.6" +"@babel/code-frame@^7.12.13": + "integrity" "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==" + "resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz" + "version" "7.22.13" + dependencies: + "@babel/highlight" "^7.22.13" + "chalk" "^2.4.2" + "@babel/code-frame@7.12.11": "integrity" "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==" "resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz" @@ -19,7 +27,7 @@ "resolved" "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz" "version" "7.22.20" -"@babel/highlight@^7.10.4": +"@babel/highlight@^7.10.4", "@babel/highlight@^7.22.13": "integrity" "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==" "resolved" "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz" "version" "7.22.20" @@ -119,6 +127,32 @@ "resolved" "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz" "version" "1.2.1" +"@jest/expect-utils@^29.7.0": + "integrity" "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==" + "resolved" "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz" + "version" "29.7.0" + dependencies: + "jest-get-type" "^29.6.3" + +"@jest/schemas@^29.6.3": + "integrity" "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==" + "resolved" "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz" + "version" "29.6.3" + dependencies: + "@sinclair/typebox" "^0.27.8" + +"@jest/types@^29.6.3": + "integrity" "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==" + "resolved" "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz" + "version" "29.6.3" + dependencies: + "@jest/schemas" "^29.6.3" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + "chalk" "^4.0.0" + "@nestjs/common@^8.0.0": "integrity" "sha512-m/YsbcBal+gA5CFrDpqXqsSfylo+DIQrkFY3qhVIltsYRfu8ct8J9pqsTO6OPf3mvqdOpFGrV5sBjoyAzOBvsw==" "resolved" "https://registry.npmjs.org/@nestjs/common/-/common-8.4.7.tgz" @@ -222,7 +256,7 @@ "abort-controller" "^3.0.0" "cross-fetch" "^3.1.6" -"@onflow/types@^1.0.3", "@onflow/types@^1.1.0": +"@onflow/types@^1.1.0": "integrity" "sha512-UUd2ZAFqdd8BHW//uTg+YRlh3EIH9Na+UYJ9qXpt6y87qjW0Lf4Zkhn6H5IqvhIJsjK17QYnXLFpoXItD/+ToQ==" "resolved" "https://registry.npmjs.org/@onflow/types/-/types-1.1.0.tgz" "version" "1.1.0" @@ -292,7 +326,15 @@ "axios" "^0.21.4" "node-abort-controller" "^3.0.1" -"@onflowser/indexer@file:/Users/bartkozorog/Projects/flowser/packages/indexer": +"@onflowser/demo-app@file:/Users/bartkozorog/Projects/flowser/apps/demo-app": + "resolved" "file:apps/demo-app" + "version" "1.0.0" + dependencies: + "@onflowser/config" "*" + "@onflowser/core" "*" + "@onflowser/indexer" "*" + +"@onflowser/indexer@*", "@onflowser/indexer@file:/Users/bartkozorog/Projects/flowser/packages/indexer": "resolved" "file:packages/indexer" "version" "1.0.0" dependencies: @@ -307,6 +349,11 @@ "@onflowser/config" "*" "elliptic" "^6.5.4" +"@sinclair/typebox@^0.27.8": + "integrity" "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==" + "resolved" "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz" + "version" "0.27.8" + "@types/bn.js@*": "integrity" "sha512-dkpZu0szUtn9UXTmw+e0AJFd4D2XAxDnsCLdc05SfqpqzPEBft8eQr8uaFitfo/dUUOZERaLec2hHMG87A4Dxg==" "resolved" "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.2.tgz" @@ -321,11 +368,55 @@ dependencies: "@types/bn.js" "*" -"@types/node@*", "@types/node@^12.20.27", "@types/node@^16.11.6": +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": + "integrity" "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==" + "resolved" "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz" + "version" "2.0.4" + +"@types/istanbul-lib-report@*": + "integrity" "sha512-gPQuzaPR5h/djlAv2apEG1HVOyj1IUs7GpfMZixU0/0KXT3pm64ylHuMUI1/Akh+sq/iikxg6Z2j+fcMDXaaTQ==" + "resolved" "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0": + "integrity" "sha512-kv43F9eb3Lhj+lr/Hn6OcLCs/sSM8bt+fIaP11rCYngfV6NVjzWXJ17owQtDQTL9tQ8WSLUrGsSJ6rJz0F1w1A==" + "resolved" "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.2.tgz" + "version" "3.0.2" + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/jest@^29.5.5": + "integrity" "sha512-ebylz2hnsWR9mYvmBFbXJXr+33UPc4+ZdxyDXh5w0FlPBTfCVN3wPL+kuOiQt3xvrK419v7XWeAs+AeOksafXg==" + "resolved" "https://registry.npmjs.org/@types/jest/-/jest-29.5.5.tgz" + "version" "29.5.5" + dependencies: + "expect" "^29.0.0" + "pretty-format" "^29.0.0" + +"@types/node@*", "@types/node@^16.11.6": "integrity" "sha512-Y1zz/LIuJek01+hlPNzzXQhmq/Z2BCP96j18MSXC0S0jSu/IG4FFxmBs7W4/lI2vPJ7foVfEB0hUVtnOjnCiTg==" "resolved" "https://registry.npmjs.org/@types/node/-/node-16.18.55.tgz" "version" "16.18.55" +"@types/stack-utils@^2.0.0": + "integrity" "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==" + "resolved" "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz" + "version" "2.0.1" + +"@types/yargs-parser@*": + "integrity" "sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ==" + "resolved" "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.1.tgz" + "version" "21.0.1" + +"@types/yargs@^17.0.8": + "integrity" "sha512-N3e3fkS86hNhtk6BEnc0rj3zcehaxx8QWhCROJkqpl5Zaoi7nAic3jH8q94jVD3zu5LGk+PUB6KAiDmimYOEQw==" + "resolved" "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.28.tgz" + "version" "17.0.28" + dependencies: + "@types/yargs-parser" "*" + "abort-controller@^3.0.0": "integrity" "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==" "resolved" "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz" @@ -422,6 +513,11 @@ dependencies: "color-convert" "^2.0.1" +"ansi-styles@^5.0.0": + "integrity" "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" + "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" + "version" "5.2.0" + "ansi-styles@^6.0.0": "integrity" "sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==" "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.1.0.tgz" @@ -529,12 +625,17 @@ "ansi-styles" "^4.1.0" "supports-color" "^7.1.0" -"class-transformer@*", "class-transformer@0.4.0": +"ci-info@^3.2.0": + "integrity" "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==" + "resolved" "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz" + "version" "3.9.0" + +"class-transformer@*": "integrity" "sha512-ETWD/H2TbWbKEi7m9N4Km5+cw1hNcqJSxlSYhsLsNjQzWWiZIYA1zafxpK9PwVfaZ6AqR5rrjPVUBGESm5tQUA==" "resolved" "https://registry.npmjs.org/class-transformer/-/class-transformer-0.4.0.tgz" "version" "0.4.0" -"class-validator@*", "class-validator@^0.13.1": +"class-validator@*": "integrity" "sha512-yBUcQy07FPlGzUjoLuUfIOXzgynnQPPruyK1Ge2B74k9ROwnle1E+NxLWnUv5OLU8hA/qL5leAE9XnXq3byaBw==" "resolved" "https://registry.npmjs.org/class-validator/-/class-validator-0.13.2.tgz" "version" "0.13.2" @@ -663,6 +764,11 @@ "resolved" "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" "version" "1.0.0" +"diff-sequences@^29.6.3": + "integrity" "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==" + "resolved" "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz" + "version" "29.6.3" + "doctrine@^3.0.0": "integrity" "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==" "resolved" "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" @@ -717,6 +823,11 @@ "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" "version" "1.0.5" +"escape-string-regexp@^2.0.0": + "integrity" "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" + "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" + "version" "2.0.0" + "escape-string-regexp@^4.0.0": "integrity" "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" @@ -783,7 +894,7 @@ "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" "version" "3.4.3" -"eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^7.0.0 || ^8.0.0", "eslint@^7.32.0": +"eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^7.0.0 || ^8.0.0": "integrity" "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==" "resolved" "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz" "version" "7.32.0" @@ -944,6 +1055,17 @@ "signal-exit" "^3.0.3" "strip-final-newline" "^2.0.0" +"expect@^29.0.0": + "integrity" "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==" + "resolved" "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz" + "version" "29.7.0" + dependencies: + "@jest/expect-utils" "^29.7.0" + "jest-get-type" "^29.6.3" + "jest-matcher-utils" "^29.7.0" + "jest-message-util" "^29.7.0" + "jest-util" "^29.7.0" + "fast-deep-equal@^3.1.1", "fast-deep-equal@^3.1.3": "integrity" "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" "resolved" "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" @@ -1064,6 +1186,11 @@ dependencies: "type-fest" "^0.20.2" +"graceful-fs@^4.2.9": + "integrity" "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + "resolved" "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" + "version" "4.2.11" + "graphemer@^1.4.0": "integrity" "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==" "resolved" "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz" @@ -1101,7 +1228,7 @@ "resolved" "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" "version" "2.1.0" -"husky@^7.0.2", "husky@^8.0.1": +"husky@^8.0.1": "integrity" "sha512-xs7/chUH/CKdOCs7Zy0Aev9e/dKOMZf3K1Az1nar3tzlv0jfqnYtu235bstsWTmXOR0EfINrPa97yy4Lz6RiKw==" "resolved" "https://registry.npmjs.org/husky/-/husky-8.0.1.tgz" "version" "8.0.1" @@ -1206,6 +1333,58 @@ "resolved" "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz" "version" "1.2.1" +"jest-diff@^29.7.0": + "integrity" "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==" + "resolved" "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz" + "version" "29.7.0" + dependencies: + "chalk" "^4.0.0" + "diff-sequences" "^29.6.3" + "jest-get-type" "^29.6.3" + "pretty-format" "^29.7.0" + +"jest-get-type@^29.6.3": + "integrity" "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==" + "resolved" "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz" + "version" "29.6.3" + +"jest-matcher-utils@^29.7.0": + "integrity" "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==" + "resolved" "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz" + "version" "29.7.0" + dependencies: + "chalk" "^4.0.0" + "jest-diff" "^29.7.0" + "jest-get-type" "^29.6.3" + "pretty-format" "^29.7.0" + +"jest-message-util@^29.7.0": + "integrity" "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==" + "resolved" "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz" + "version" "29.7.0" + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^29.6.3" + "@types/stack-utils" "^2.0.0" + "chalk" "^4.0.0" + "graceful-fs" "^4.2.9" + "micromatch" "^4.0.4" + "pretty-format" "^29.7.0" + "slash" "^3.0.0" + "stack-utils" "^2.0.3" + +"jest-util@^29.7.0": + "integrity" "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==" + "resolved" "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz" + "version" "29.7.0" + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + "chalk" "^4.0.0" + "ci-info" "^3.2.0" + "graceful-fs" "^4.2.9" + "picomatch" "^2.2.3" + "js-tokens@^3.0.0 || ^4.0.0", "js-tokens@^4.0.0": "integrity" "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" "resolved" "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" @@ -1276,7 +1455,7 @@ "resolved" "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz" "version" "2.0.5" -"lint-staged@^11.1.2", "lint-staged@^12.4.2", "lint-staged@^13.0.3": +"lint-staged@^12.4.2": "integrity" "sha512-BKLUjWDsKquV/JuIcoQW4MSAI3ggwEImF1+sB4zaKvyVx1wBk3FsG7UK9bpnmBTN1pm7EH2BBcMwINJzCRv12g==" "resolved" "https://registry.npmjs.org/lint-staged/-/lint-staged-12.5.0.tgz" "version" "12.5.0" @@ -1356,7 +1535,7 @@ "resolved" "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" "version" "2.0.0" -"micromatch@^4.0.5": +"micromatch@^4.0.4", "micromatch@^4.0.5": "integrity" "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==" "resolved" "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" "version" "4.0.5" @@ -1516,7 +1695,7 @@ "resolved" "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" "version" "3.1.1" -"picomatch@^2.3.1": +"picomatch@^2.2.3", "picomatch@^2.3.1": "integrity" "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" "resolved" "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" "version" "2.3.1" @@ -1531,11 +1710,29 @@ "resolved" "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" "version" "1.2.1" -"prettier@^2.3.2", "prettier@^2.4.1", "prettier@^2.5.1": +"prettier@^2.5.1": "integrity" "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==" "resolved" "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz" "version" "2.7.1" +"pretty-format@^29.0.0": + "integrity" "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==" + "resolved" "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz" + "version" "29.7.0" + dependencies: + "@jest/schemas" "^29.6.3" + "ansi-styles" "^5.0.0" + "react-is" "^18.0.0" + +"pretty-format@^29.7.0": + "integrity" "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==" + "resolved" "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz" + "version" "29.7.0" + dependencies: + "@jest/schemas" "^29.6.3" + "ansi-styles" "^5.0.0" + "react-is" "^18.0.0" + "progress@^2.0.0": "integrity" "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" "resolved" "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz" @@ -1551,7 +1748,12 @@ "resolved" "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" "version" "1.2.3" -"react@^17.0.0 || ^18.0.0", "react@^17.0.2": +"react-is@^18.0.0": + "integrity" "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + "resolved" "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz" + "version" "18.2.0" + +"react@^17.0.0 || ^18.0.0": "integrity" "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==" "resolved" "https://registry.npmjs.org/react/-/react-17.0.2.tgz" "version" "17.0.2" @@ -1559,7 +1761,7 @@ "loose-envify" "^1.1.0" "object-assign" "^4.1.1" -"reflect-metadata@^0.1.12", "reflect-metadata@^0.1.13": +"reflect-metadata@^0.1.12": "integrity" "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" "resolved" "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz" "version" "0.1.13" @@ -1616,7 +1818,7 @@ dependencies: "queue-microtask" "^1.2.2" -"rxjs@^7.1.0", "rxjs@^7.2.0", "rxjs@^7.5.5": +"rxjs@^7.1.0", "rxjs@^7.5.5": "integrity" "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==" "resolved" "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz" "version" "7.5.6" @@ -1628,7 +1830,7 @@ "resolved" "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" "version" "2.1.2" -"semver@^7.2.1", "semver@^7.3.7", "semver@^7.3.8": +"semver@^7.2.1", "semver@^7.3.8": "integrity" "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==" "resolved" "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz" "version" "7.5.4" @@ -1659,6 +1861,11 @@ "resolved" "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" "version" "3.0.7" +"slash@^3.0.0": + "integrity" "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + "resolved" "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" + "version" "3.0.0" + "slice-ansi@^3.0.0": "integrity" "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==" "resolved" "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz" @@ -1708,6 +1915,13 @@ "resolved" "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" "version" "1.0.3" +"stack-utils@^2.0.3": + "integrity" "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==" + "resolved" "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz" + "version" "2.0.6" + dependencies: + "escape-string-regexp" "^2.0.0" + "string-argv@^0.3.1": "integrity" "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==" "resolved" "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz" @@ -1844,7 +2058,7 @@ "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" "version" "0.21.3" -"typescript@^4.3.5", "typescript@^4.4.3": +"typescript@^4.3.5": "integrity" "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==" "resolved" "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz" "version" "4.7.4" From 122f299734d83a330e904fbeb7cd8b4c232c3a98 Mon Sep 17 00:00:00 2001 From: Bart Date: Sun, 8 Oct 2023 13:10:01 +0200 Subject: [PATCH 009/100] use axios instead of node http module --- .../core/src/flow/flow-gateway.service.ts | 50 ++++++++----------- 1 file changed, 21 insertions(+), 29 deletions(-) diff --git a/packages/core/src/flow/flow-gateway.service.ts b/packages/core/src/flow/flow-gateway.service.ts index 23613ad73..3ae463131 100644 --- a/packages/core/src/flow/flow-gateway.service.ts +++ b/packages/core/src/flow/flow-gateway.service.ts @@ -1,4 +1,3 @@ -import * as http from "http"; import { FclArgBuilder, FclArgumentWithMetadata, @@ -6,6 +5,7 @@ import { FclValues, } from "./fcl-values"; import * as fcl from "@onflow/fcl"; +import axios from "axios"; // https://docs.onflow.org/fcl/reference/api/#collectionguaranteeobject export type FlowCollectionGuarantee = { @@ -237,36 +237,28 @@ export class FlowGatewayService { return { ...account, balance: account.balance / Math.pow(10, 8), address }; } - public async getApiStatus( - ): Promise { - const restServerAddress = await fcl.config.get("accessNode.api"); + public async getApiStatus(): Promise { + const restServerUrl = await fcl.config.get("accessNode.api"); - if (!restServerAddress) { - throw new Error("accessNode.api not configured") + if (!restServerUrl) { + throw new Error("accessNode.api not configured"); } - const { hostname, port } = new URL(restServerAddress); - return new Promise((resolve) => { - const req = http - .get( - { - host: hostname, - path: "/live", - port, - }, - () => { - req.end(); - // Assume that if response is received, server is online - // Ideally we should send a ping request to access API - // but that endpoint isn't implemented on emulator side (afaik) - // https://github.com/onflow/flow/blob/master/protobuf/flow/access/access.proto#L20 - return resolve(FlowApiStatus.SERVICE_STATUS_ONLINE); - } - ) - .on("error", (err) => { - req.end(); - return resolve(FlowApiStatus.SERVICE_STATUS_OFFLINE); - }); - }); + try { + await axios.request({ + method: "GET", + url: restServerUrl, + // Prevent axios from throwing on certain http response codes + // https://github.com/axios/axios/issues/41 + validateStatus: () => true, + }); + // Assume that if response is received, server is online + // Ideally we should send a ping request to access API + // but that endpoint isn't implemented on emulator side (afaik) + // https://github.com/onflow/flow/blob/master/protobuf/flow/access/access.proto#L20 + return FlowApiStatus.SERVICE_STATUS_ONLINE; + } catch (error) { + return FlowApiStatus.SERVICE_STATUS_OFFLINE; + } } } From 904234a3ca56cf53fba853b03020454973b37a95 Mon Sep 17 00:00:00 2001 From: Bart Date: Sun, 8 Oct 2023 13:21:01 +0200 Subject: [PATCH 010/100] fix non-managed emulator processing --- packages/indexer/src/indexer.service.ts | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/packages/indexer/src/indexer.service.ts b/packages/indexer/src/indexer.service.ts index e9df79c01..e5b83f9bf 100644 --- a/packages/indexer/src/indexer.service.ts +++ b/packages/indexer/src/indexer.service.ts @@ -85,13 +85,6 @@ export class IndexerService { this.processingScheduler.stop(); } - async getTotalBlocksToProcess() { - const { nextBlockHeightToProcess, latestUnprocessedBlockHeight } = - await this.getUnprocessedBlocksInfo(); - - return latestUnprocessedBlockHeight - (nextBlockHeightToProcess - 1); - } - async processBlockchainData(): Promise { const gatewayStatus = await this.flowGatewayService.getApiStatus(); if (gatewayStatus !== FlowApiStatus.SERVICE_STATUS_ONLINE) { @@ -484,14 +477,19 @@ export class IndexerService { // we don't know if the blockchain uses monotonic or non-monotonic addresses, // so we need to try processing well-known accounts with both options. const isManagedEmulator = this.emulatorProcess?.isRunning(); - if (!isManagedEmulator) { - await this.processWellKnownAccounts({ + if (isManagedEmulator) { + return; + } + + // Ignore errors that any of the functions throw + await Promise.allSettled([ + this.processWellKnownAccounts({ overrideUseMonotonicAddresses: true, - }); - await this.processWellKnownAccounts({ + }), + this.processWellKnownAccounts({ overrideUseMonotonicAddresses: false, - }); - } + }), + ]); } private async processWellKnownAccounts(options?: WellKnownAddressesOptions) { From 178a7b1873c785dbc296973bf2d74c81538de4e1 Mon Sep 17 00:00:00 2001 From: Bart Date: Sun, 8 Oct 2023 13:42:55 +0200 Subject: [PATCH 011/100] move electron app into apps folder (first pass) --- app/.gitignore | 3 - app/src/package.json | 22 ----- apps/demo-app/src/main.ts | 84 ++++++++++++++++++ apps/electron/.gitignore | 2 + {app => apps/electron}/README.md | 0 .../buildResources}/entitlements.mac.plist | 0 .../electron/buildResources}/icon.png | Bin .../buildResources}/macos-background.png | Bin .../buildResources}/macos-background.tiff | Bin {app => apps/electron}/electron-builder.json | 0 apps/electron/package.json | 42 +++++++++ {app => apps/electron}/scripts/build.sh | 4 +- {app => apps/electron}/scripts/notarize.js | 0 {app => apps/electron}/scripts/setup.js | 0 {app => apps/electron}/scripts/yarn.lock | 0 {app => apps/electron}/yarn.lock | 0 frontend/package.json | 16 ---- 17 files changed, 130 insertions(+), 43 deletions(-) delete mode 100644 app/.gitignore delete mode 100644 app/src/package.json create mode 100644 apps/electron/.gitignore rename {app => apps/electron}/README.md (100%) rename {app/src => apps/electron/buildResources}/entitlements.mac.plist (100%) rename {app/src => apps/electron/buildResources}/icon.png (100%) rename {app/static => apps/electron/buildResources}/macos-background.png (100%) rename {app/static => apps/electron/buildResources}/macos-background.tiff (100%) rename {app => apps/electron}/electron-builder.json (100%) create mode 100644 apps/electron/package.json rename {app => apps/electron}/scripts/build.sh (83%) rename {app => apps/electron}/scripts/notarize.js (100%) rename {app => apps/electron}/scripts/setup.js (100%) rename {app => apps/electron}/scripts/yarn.lock (100%) rename {app => apps/electron}/yarn.lock (100%) diff --git a/app/.gitignore b/app/.gitignore deleted file mode 100644 index 279db52e0..000000000 --- a/app/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -/package.json -.env -build diff --git a/app/src/package.json b/app/src/package.json deleted file mode 100644 index 1f1983d14..000000000 --- a/app/src/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "flowser", - "description": "Supercharged development on Flow blockchain ⚡", - "version": "3.0.0", - "homepage": "https://flowser.dev", - "author": { - "email": "bartolomej.kozorog@gmail.com", - "name": "Flowser" - }, - "scripts": { - "build-electron": "electron-builder -c.extraMetadata.main=build/electron/targets/electron/main.js", - "build-mac": "yarn run build-electron --mac", - "build-win": "yarn run build-electron --win", - "build-linux": "yarn run build-electron --linux", - "build-all": "yarn run build-electron --linux --mac --win" - }, - "devDependencies": { - "electron-notarize": "^1.2.1", - "electron-icon-maker": "^0.0.5", - "dotenv": "^16.0.2" - } -} diff --git a/apps/demo-app/src/main.ts b/apps/demo-app/src/main.ts index 210c3116f..7ec49d20c 100644 --- a/apps/demo-app/src/main.ts +++ b/apps/demo-app/src/main.ts @@ -5,10 +5,79 @@ import { FlowEmulatorService, ProcessManagerService, GoBindingsService, + waitForMs, } from "@onflowser/core"; import * as flowserResource from "@onflowser/api"; const flowGatewayService = new FlowGatewayService(); + +flowGatewayService.configure({ + restServerAddress: "http://localhost:8888", + flowJSON: { + contracts: { + ExampleNFT: "cadence/contracts/exampleNFT/ExampleNFT.cdc", + FungibleToken: { + source: "", + aliases: { + emulator: "ee82856bf20e2aa6", + }, + }, + MetadataViews: { + source: "", + aliases: { + emulator: "f8d6e0586b0a20c7", + }, + }, + NonFungibleToken: { + source: "", + aliases: { + emulator: "f8d6e0586b0a20c7", + }, + }, + ViewResolver: "cadence/contracts/standards/ViewResolver.cdc", + }, + networks: { + emulator: "127.0.0.1:3569", + mainnet: "access.mainnet.nodes.onflow.org:9000", + sandboxnet: "access.sandboxnet.nodes.onflow.org:9000", + testnet: "access.devnet.nodes.onflow.org:9000", + }, + accounts: { + default: { + address: "f669cb8d41ce0c74", + key: "2e09fac1b3b8e128c67b2e57ba59ec8506ff8326053812135a954b4d3291096f", + }, + "emulator-account": { + address: "f8d6e0586b0a20c7", + key: "d2c3686da84d61c13627bdf2127866fe358165734f5470be792e6771901d2856", + }, + exampleNFT: { + address: "192440c99cb17282", + key: "58cfc56dcbbfa8bfb7b9898586793b0710dfebe8a0358774044968abc9acc8c2", + }, + standards: { + address: "fd43f9148d4b725d", + key: "28946711cc802634ca4520c0f8b113e065c519dc02306a05ecb204a896ee80ed", + }, + "0x01cf0e2f2f715450": { + address: "0x01cf0e2f2f715450", + key: "95b367208187ecc83a3e6c9aba61ad0edc00af3e0d678c60b39fe13ccfc5d75b", + }, + "0x179b6b1cb6755e31": { + address: "0x179b6b1cb6755e31", + key: "f1f066337d4e853311807fd94bed599739d7cede8c6e6585414703eb0e0345ed", + }, + }, + deployments: { + emulator: { + default: [], + exampleNFT: ["ExampleNFT"], + standards: ["ViewResolver"], + }, + }, + }, +}); + const flowAccountStorageService = new FlowAccountStorageService( flowGatewayService ); @@ -39,3 +108,18 @@ const indexer = new IndexerService( ); indexer.start(); + +(async function () { + while (true) { + await waitForMs(1000); + const map = await Promise.all( + Object.keys(indexes).map(async (key: any) => [ + key, + (await (indexes as any)[key].findAll()).length, + ]) + ); + // @ts-ignore + const countLookup = new Map(map); + console.log(countLookup); + } +})(); diff --git a/apps/electron/.gitignore b/apps/electron/.gitignore new file mode 100644 index 000000000..b1a3c1e3f --- /dev/null +++ b/apps/electron/.gitignore @@ -0,0 +1,2 @@ +.env +build diff --git a/app/README.md b/apps/electron/README.md similarity index 100% rename from app/README.md rename to apps/electron/README.md diff --git a/app/src/entitlements.mac.plist b/apps/electron/buildResources/entitlements.mac.plist similarity index 100% rename from app/src/entitlements.mac.plist rename to apps/electron/buildResources/entitlements.mac.plist diff --git a/app/src/icon.png b/apps/electron/buildResources/icon.png similarity index 100% rename from app/src/icon.png rename to apps/electron/buildResources/icon.png diff --git a/app/static/macos-background.png b/apps/electron/buildResources/macos-background.png similarity index 100% rename from app/static/macos-background.png rename to apps/electron/buildResources/macos-background.png diff --git a/app/static/macos-background.tiff b/apps/electron/buildResources/macos-background.tiff similarity index 100% rename from app/static/macos-background.tiff rename to apps/electron/buildResources/macos-background.tiff diff --git a/app/electron-builder.json b/apps/electron/electron-builder.json similarity index 100% rename from app/electron-builder.json rename to apps/electron/electron-builder.json diff --git a/apps/electron/package.json b/apps/electron/package.json new file mode 100644 index 000000000..6999e1385 --- /dev/null +++ b/apps/electron/package.json @@ -0,0 +1,42 @@ +{ + "name": "flowser", + "description": "Supercharged development on Flow blockchain ⚡", + "version": "3.0.0", + "homepage": "https://flowser.dev", + "author": { + "email": "bartolomej.kozorog@gmail.com", + "name": "Flowser" + }, + "scripts": { + "postinstall": "electron-builder install-app-deps", + "build:electron-main": "tsc --project tsconfig.electron.json", + "prebuild:electron": "cp src/targets/electron/index.tsx src/index.tsx", + "electron:serve": "yarn run prebuild:electron && yarn run build:electron-main && concurrently -k \"cross-env BROWSER=none yarn start:react\" \"yarn electron:start\"", + "electron:build": "yarn run prebuild:electron && yarn build:react && yarn run build:electron-main && echo \"Run app/scripts/build.sh to build the actuall electron app.\"", + "electron:start": "wait-on tcp:6060 && electron .", + "build": "yarn run electron:build", + + "build-electron": "electron-builder -c.extraMetadata.main=build/electron/targets/electron/main.js", + "build-mac": "yarn run build-electron --mac", + "build-win": "yarn run build-electron --win", + "build-linux": "yarn run build-electron --linux", + "build-all": "yarn run build-electron --linux --mac --win" + }, + "dependencies": { + "@onflowser/config": "*", + "@onflowser/indexer": "*", + "@onflowser/core": "*", + "@onflowser/api": "*", + "@sentry/electron": "^4.0.2", + "electron-is-dev": "^2.0.0", + "electron-log": "^4.4.8", + "electron-updater": "^5.3.0" + }, + "devDependencies": { + "electron-notarize": "^1.2.1", + "electron-icon-maker": "^0.0.5", + "dotenv": "^16.0.2", + "electron": "20.1.0", + "electron-builder": "^23.3.3" + } +} diff --git a/app/scripts/build.sh b/apps/electron/scripts/build.sh similarity index 83% rename from app/scripts/build.sh rename to apps/electron/scripts/build.sh index 559aa81f1..1a2aa12f3 100644 --- a/app/scripts/build.sh +++ b/apps/electron/scripts/build.sh @@ -24,9 +24,9 @@ mkdir ../release/build/@flowser mkdir -p $APP_ICON_PATH # Generate app icons -../node_modules/.bin/electron-icon-maker --input=../src/icon.png --output=$APP_ICON_PATH +../node_modules/.bin/electron-icon-maker --input=../buildResources/icon.png --output=$APP_ICON_PATH # Copy MacOS installation background image -cp ../static/macos-background.tiff $STATIC_ASSETS_PATH +cp ../buildResources/macos-background.tiff $STATIC_ASSETS_PATH yarn run "build-${PLATFORM_ARG}" diff --git a/app/scripts/notarize.js b/apps/electron/scripts/notarize.js similarity index 100% rename from app/scripts/notarize.js rename to apps/electron/scripts/notarize.js diff --git a/app/scripts/setup.js b/apps/electron/scripts/setup.js similarity index 100% rename from app/scripts/setup.js rename to apps/electron/scripts/setup.js diff --git a/app/scripts/yarn.lock b/apps/electron/scripts/yarn.lock similarity index 100% rename from app/scripts/yarn.lock rename to apps/electron/scripts/yarn.lock diff --git a/app/yarn.lock b/apps/electron/yarn.lock similarity index 100% rename from app/yarn.lock rename to apps/electron/yarn.lock diff --git a/frontend/package.json b/frontend/package.json index 38e89d36a..9d8a01f35 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -7,7 +7,6 @@ "description": "Easily start you local Flow blockchain & inspect the state.", "version": "0.0.1", "private": true, - "main": "dist/targets/electron/main.js", "homepage": "./", "dependencies": { "@codemirror/legacy-modes": "^6.1.0", @@ -16,7 +15,6 @@ "@flowser/shared": "0.0.1", "@onflow/fcl": "^1.6.0", "@onflow/types": "^1.0.3", - "@sentry/electron": "^4.0.2", "@szhsin/react-menu": "4.0.3", "@tanstack/react-table": "^8.5.11", "@testing-library/jest-dom": "^5.14.1", @@ -39,9 +37,6 @@ "copy-to-clipboard": "^3.3.1", "cross-env": "^7.0.3", "dateformat": "^5.0.1", - "electron-is-dev": "^2.0.0", - "electron-log": "^4.4.8", - "electron-updater": "^5.3.0", "fix-path": "3.0.0", "formik": "^2.2.9", "husky": "^7.0.2", @@ -61,7 +56,6 @@ "react-scripts": "5.0.0", "react-timeago": "^6.2.1", "reactjs-popup": "2.0.5", - "sqlite3": "^5.0.11", "typescript": "^4.4.3", "usehooks-ts": "^2.9.1", "wait-on": "^6.0.1", @@ -69,24 +63,16 @@ "yup": "^0.32.11" }, "scripts": { - "postinstall": "electron-builder install-app-deps", "cleanup": "rm -rf node_modules", "start": "yarn run prebuild:web && yarn run start:react", "start:react": "PORT=6060 DISABLE_ESLINT_PLUGIN=true react-scripts start", "build:react": "DISABLE_ESLINT_PLUGIN=true react-scripts build", - "build:electron-main": "tsc --project tsconfig.electron.json", "test": "react-scripts test", "eject": "react-scripts eject", "lint": "eslint '*/**/*.{js,ts,tsx}' --quiet --fix", "format": "prettier --write \"src/**/*.{ts,tsx}\"", "prepare": "cd ../ && husky install ./frontend/.husky", - "install:m1": "cd ../node_modules/sqlite3 && ../.bin/node-pre-gyp install --target_arch=arm64 --build-from-source", "prebuild:web": "cp src/targets/web/index.tsx src/index.tsx", - "prebuild:electron": "cp src/targets/electron/index.tsx src/index.tsx", - "build": "yarn run electron:build", - "electron:serve": "yarn run prebuild:electron && yarn run build:electron-main && concurrently -k \"cross-env BROWSER=none yarn start:react\" \"yarn electron:start\"", - "electron:build": "yarn run prebuild:electron && yarn build:react && yarn run build:electron-main && echo \"Run app/scripts/build.sh to build the actuall electron app.\"", - "electron:start": "wait-on tcp:6060 && electron ." }, "eslintConfig": { "extends": [ @@ -111,8 +97,6 @@ "@types/react-helmet": "^6.1.7", "@typescript-eslint/eslint-plugin": "^4.31.2", "@typescript-eslint/parser": "^4.31.2", - "electron": "20.1.0", - "electron-builder": "^23.3.3", "eslint-config-prettier": "^8.3.0", "eslint-plugin-prettier": "^4.0.0", "eslint-plugin-react": "^7.26.0", From c327b2a50bde847ea2cc9fcd613c7a73d896a96f Mon Sep 17 00:00:00 2001 From: Bart Date: Sun, 8 Oct 2023 14:26:10 +0200 Subject: [PATCH 012/100] initialize electron boierplate --- apps/electron/.editorconfig | 12 + apps/electron/.erb/configs/.eslintrc | 7 + .../.erb/configs/webpack.config.base.ts | 59 + .../.erb/configs/webpack.config.eslint.ts | 3 + .../.erb/configs/webpack.config.main.prod.ts | 83 + .../configs/webpack.config.preload.dev.ts | 71 + .../webpack.config.renderer.dev.dll.ts | 77 + .../configs/webpack.config.renderer.dev.ts | 213 + .../configs/webpack.config.renderer.prod.ts | 141 + apps/electron/.erb/configs/webpack.paths.ts | 38 + apps/electron/.erb/img/erb-banner.svg | 32 + apps/electron/.erb/img/erb-logo.png | Bin 0 -> 28783 bytes .../.erb/img/palette-sponsor-banner.svg | 6 + apps/electron/.erb/mocks/fileMock.js | 1 + apps/electron/.erb/scripts/.eslintrc | 8 + .../.erb/scripts/check-build-exists.ts | 24 + .../electron/.erb/scripts/check-native-dep.js | 54 + apps/electron/.erb/scripts/check-node-env.js | 16 + .../.erb/scripts/check-port-in-use.js | 16 + apps/electron/.erb/scripts/clean.js | 13 + .../.erb/scripts/delete-source-maps.js | 15 + .../electron/.erb/scripts/electron-rebuild.js | 20 + apps/electron/.erb/scripts/link-modules.ts | 9 + apps/electron/.erb/scripts/notarize.js | 32 + apps/electron/.eslintignore | 33 + apps/electron/.eslintrc.js | 34 + apps/electron/.gitattributes | 12 + apps/electron/.github/FUNDING.yml | 5 + .../.github/ISSUE_TEMPLATE/1-Bug_report.md | 67 + .../.github/ISSUE_TEMPLATE/2-Question.md | 19 + .../ISSUE_TEMPLATE/3-Feature_request.md | 15 + apps/electron/.github/config.yml | 6 + apps/electron/.github/stale.yml | 17 + .../.github/workflows/codeql-analysis.yml | 72 + apps/electron/.github/workflows/publish.yml | 46 + apps/electron/.github/workflows/test.yml | 34 + apps/electron/.gitignore | 31 +- apps/electron/.vscode/extensions.json | 3 + apps/electron/.vscode/launch.json | 30 + apps/electron/.vscode/settings.json | 30 + apps/electron/CHANGELOG.md | 533 + apps/electron/CODE_OF_CONDUCT.md | 76 + apps/electron/LICENSE | 21 + apps/electron/README.md | 181 +- apps/electron/assets/assets.d.ts | 35 + .../entitlements.mac.plist | 0 apps/electron/assets/icon.icns | Bin 0 -> 111909 bytes apps/electron/assets/icon.ico | Bin 0 -> 370070 bytes apps/electron/assets/icon.png | Bin 0 -> 32456 bytes apps/electron/assets/icon.svg | 23 + apps/electron/assets/icons/1024x1024.png | Bin 0 -> 159736 bytes apps/electron/assets/icons/128x128.png | Bin 0 -> 17611 bytes apps/electron/assets/icons/16x16.png | Bin 0 -> 954 bytes apps/electron/assets/icons/24x24.png | Bin 0 -> 1907 bytes apps/electron/assets/icons/256x256.png | Bin 0 -> 32456 bytes apps/electron/assets/icons/32x32.png | Bin 0 -> 2017 bytes apps/electron/assets/icons/48x48.png | Bin 0 -> 5159 bytes apps/electron/assets/icons/512x512.png | Bin 0 -> 79296 bytes apps/electron/assets/icons/64x64.png | Bin 0 -> 7454 bytes apps/electron/assets/icons/96x96.png | Bin 0 -> 12526 bytes apps/electron/buildResources/icon.png | Bin 66405 -> 0 bytes .../buildResources/macos-background.png | Bin 86426 -> 0 bytes .../buildResources/macos-background.tiff | Bin 1385894 -> 0 bytes apps/electron/electron-builder.json | 104 - apps/electron/package-lock.json | 18619 ++++++++++++++++ apps/electron/package.json | 271 +- apps/electron/release/app/package-lock.json | 14 + apps/electron/release/app/package.json | 18 + apps/electron/scripts/build.sh | 32 - apps/electron/scripts/notarize.js | 36 - apps/electron/scripts/setup.js | 105 - apps/electron/scripts/yarn.lock | 62 - apps/electron/src/__tests__/App.test.tsx | 9 + apps/electron/src/main/main.ts | 137 + apps/electron/src/main/menu.ts | 290 + apps/electron/src/main/preload.ts | 29 + apps/electron/src/main/util.ts | 13 + apps/electron/src/renderer/App.css | 62 + apps/electron/src/renderer/App.tsx | 39 + apps/electron/src/renderer/index.ejs | 14 + apps/electron/src/renderer/index.tsx | 13 + apps/electron/src/renderer/preload.d.ts | 10 + apps/electron/tsconfig.json | 18 + apps/electron/yarn.lock | 16643 -------------- 84 files changed, 21764 insertions(+), 17047 deletions(-) create mode 100644 apps/electron/.editorconfig create mode 100644 apps/electron/.erb/configs/.eslintrc create mode 100644 apps/electron/.erb/configs/webpack.config.base.ts create mode 100644 apps/electron/.erb/configs/webpack.config.eslint.ts create mode 100644 apps/electron/.erb/configs/webpack.config.main.prod.ts create mode 100644 apps/electron/.erb/configs/webpack.config.preload.dev.ts create mode 100644 apps/electron/.erb/configs/webpack.config.renderer.dev.dll.ts create mode 100644 apps/electron/.erb/configs/webpack.config.renderer.dev.ts create mode 100644 apps/electron/.erb/configs/webpack.config.renderer.prod.ts create mode 100644 apps/electron/.erb/configs/webpack.paths.ts create mode 100644 apps/electron/.erb/img/erb-banner.svg create mode 100644 apps/electron/.erb/img/erb-logo.png create mode 100644 apps/electron/.erb/img/palette-sponsor-banner.svg create mode 100644 apps/electron/.erb/mocks/fileMock.js create mode 100644 apps/electron/.erb/scripts/.eslintrc create mode 100644 apps/electron/.erb/scripts/check-build-exists.ts create mode 100644 apps/electron/.erb/scripts/check-native-dep.js create mode 100644 apps/electron/.erb/scripts/check-node-env.js create mode 100644 apps/electron/.erb/scripts/check-port-in-use.js create mode 100644 apps/electron/.erb/scripts/clean.js create mode 100644 apps/electron/.erb/scripts/delete-source-maps.js create mode 100644 apps/electron/.erb/scripts/electron-rebuild.js create mode 100644 apps/electron/.erb/scripts/link-modules.ts create mode 100644 apps/electron/.erb/scripts/notarize.js create mode 100644 apps/electron/.eslintignore create mode 100644 apps/electron/.eslintrc.js create mode 100644 apps/electron/.gitattributes create mode 100644 apps/electron/.github/FUNDING.yml create mode 100644 apps/electron/.github/ISSUE_TEMPLATE/1-Bug_report.md create mode 100644 apps/electron/.github/ISSUE_TEMPLATE/2-Question.md create mode 100644 apps/electron/.github/ISSUE_TEMPLATE/3-Feature_request.md create mode 100644 apps/electron/.github/config.yml create mode 100644 apps/electron/.github/stale.yml create mode 100644 apps/electron/.github/workflows/codeql-analysis.yml create mode 100644 apps/electron/.github/workflows/publish.yml create mode 100644 apps/electron/.github/workflows/test.yml create mode 100644 apps/electron/.vscode/extensions.json create mode 100644 apps/electron/.vscode/launch.json create mode 100644 apps/electron/.vscode/settings.json create mode 100644 apps/electron/CHANGELOG.md create mode 100644 apps/electron/CODE_OF_CONDUCT.md create mode 100644 apps/electron/LICENSE create mode 100644 apps/electron/assets/assets.d.ts rename apps/electron/{buildResources => assets}/entitlements.mac.plist (100%) create mode 100644 apps/electron/assets/icon.icns create mode 100644 apps/electron/assets/icon.ico create mode 100755 apps/electron/assets/icon.png create mode 100644 apps/electron/assets/icon.svg create mode 100755 apps/electron/assets/icons/1024x1024.png create mode 100755 apps/electron/assets/icons/128x128.png create mode 100755 apps/electron/assets/icons/16x16.png create mode 100755 apps/electron/assets/icons/24x24.png create mode 100755 apps/electron/assets/icons/256x256.png create mode 100755 apps/electron/assets/icons/32x32.png create mode 100755 apps/electron/assets/icons/48x48.png create mode 100755 apps/electron/assets/icons/512x512.png create mode 100755 apps/electron/assets/icons/64x64.png create mode 100755 apps/electron/assets/icons/96x96.png delete mode 100644 apps/electron/buildResources/icon.png delete mode 100644 apps/electron/buildResources/macos-background.png delete mode 100644 apps/electron/buildResources/macos-background.tiff delete mode 100644 apps/electron/electron-builder.json create mode 100644 apps/electron/package-lock.json create mode 100644 apps/electron/release/app/package-lock.json create mode 100644 apps/electron/release/app/package.json delete mode 100644 apps/electron/scripts/build.sh delete mode 100644 apps/electron/scripts/notarize.js delete mode 100644 apps/electron/scripts/setup.js delete mode 100644 apps/electron/scripts/yarn.lock create mode 100644 apps/electron/src/__tests__/App.test.tsx create mode 100644 apps/electron/src/main/main.ts create mode 100644 apps/electron/src/main/menu.ts create mode 100644 apps/electron/src/main/preload.ts create mode 100644 apps/electron/src/main/util.ts create mode 100644 apps/electron/src/renderer/App.css create mode 100644 apps/electron/src/renderer/App.tsx create mode 100644 apps/electron/src/renderer/index.ejs create mode 100644 apps/electron/src/renderer/index.tsx create mode 100644 apps/electron/src/renderer/preload.d.ts create mode 100644 apps/electron/tsconfig.json delete mode 100644 apps/electron/yarn.lock diff --git a/apps/electron/.editorconfig b/apps/electron/.editorconfig new file mode 100644 index 000000000..4a7ea3036 --- /dev/null +++ b/apps/electron/.editorconfig @@ -0,0 +1,12 @@ +root = true + +[*] +indent_style = space +indent_size = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.md] +trim_trailing_whitespace = false diff --git a/apps/electron/.erb/configs/.eslintrc b/apps/electron/.erb/configs/.eslintrc new file mode 100644 index 000000000..89d242ba7 --- /dev/null +++ b/apps/electron/.erb/configs/.eslintrc @@ -0,0 +1,7 @@ +{ + "rules": { + "no-console": "off", + "global-require": "off", + "import/no-dynamic-require": "off" + } +} diff --git a/apps/electron/.erb/configs/webpack.config.base.ts b/apps/electron/.erb/configs/webpack.config.base.ts new file mode 100644 index 000000000..0ef00445a --- /dev/null +++ b/apps/electron/.erb/configs/webpack.config.base.ts @@ -0,0 +1,59 @@ +/** + * Base webpack config used across other specific configs + */ + +import webpack from 'webpack'; +import TsconfigPathsPlugins from 'tsconfig-paths-webpack-plugin'; +import webpackPaths from './webpack.paths'; +import { dependencies as externals } from '../../release/app/package.json'; + +const configuration: webpack.Configuration = { + externals: [...Object.keys(externals || {})], + + stats: 'errors-only', + + module: { + rules: [ + { + test: /\.[jt]sx?$/, + exclude: /node_modules/, + use: { + loader: 'ts-loader', + options: { + // Remove this line to enable type checking in webpack builds + transpileOnly: true, + compilerOptions: { + module: 'esnext', + }, + }, + }, + }, + ], + }, + + output: { + path: webpackPaths.srcPath, + // https://github.com/webpack/webpack/issues/1114 + library: { + type: 'commonjs2', + }, + }, + + /** + * Determine the array of extensions that should be used to resolve modules. + */ + resolve: { + extensions: ['.js', '.jsx', '.json', '.ts', '.tsx'], + modules: [webpackPaths.srcPath, 'node_modules'], + // There is no need to add aliases here, the paths in tsconfig get mirrored + plugins: [new TsconfigPathsPlugins()], + }, + + plugins: [ + new webpack.EnvironmentPlugin({ + NODE_ENV: 'production', + }), + ], +}; + +export default configuration; diff --git a/apps/electron/.erb/configs/webpack.config.eslint.ts b/apps/electron/.erb/configs/webpack.config.eslint.ts new file mode 100644 index 000000000..35a631b7c --- /dev/null +++ b/apps/electron/.erb/configs/webpack.config.eslint.ts @@ -0,0 +1,3 @@ +/* eslint import/no-unresolved: off, import/no-self-import: off */ + +module.exports = require('./webpack.config.renderer.dev').default; diff --git a/apps/electron/.erb/configs/webpack.config.main.prod.ts b/apps/electron/.erb/configs/webpack.config.main.prod.ts new file mode 100644 index 000000000..472748219 --- /dev/null +++ b/apps/electron/.erb/configs/webpack.config.main.prod.ts @@ -0,0 +1,83 @@ +/** + * Webpack config for production electron main process + */ + +import path from 'path'; +import webpack from 'webpack'; +import { merge } from 'webpack-merge'; +import TerserPlugin from 'terser-webpack-plugin'; +import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer'; +import baseConfig from './webpack.config.base'; +import webpackPaths from './webpack.paths'; +import checkNodeEnv from '../scripts/check-node-env'; +import deleteSourceMaps from '../scripts/delete-source-maps'; + +checkNodeEnv('production'); +deleteSourceMaps(); + +const configuration: webpack.Configuration = { + devtool: 'source-map', + + mode: 'production', + + target: 'electron-main', + + entry: { + main: path.join(webpackPaths.srcMainPath, 'main.ts'), + preload: path.join(webpackPaths.srcMainPath, 'preload.ts'), + }, + + output: { + path: webpackPaths.distMainPath, + filename: '[name].js', + library: { + type: 'umd', + }, + }, + + optimization: { + minimizer: [ + new TerserPlugin({ + parallel: true, + }), + ], + }, + + plugins: [ + new BundleAnalyzerPlugin({ + analyzerMode: process.env.ANALYZE === 'true' ? 'server' : 'disabled', + analyzerPort: 8888, + }), + + /** + * Create global constants which can be configured at compile time. + * + * Useful for allowing different behaviour between development builds and + * release builds + * + * NODE_ENV should be production so that modules do not perform certain + * development checks + */ + new webpack.EnvironmentPlugin({ + NODE_ENV: 'production', + DEBUG_PROD: false, + START_MINIMIZED: false, + }), + + new webpack.DefinePlugin({ + 'process.type': '"browser"', + }), + ], + + /** + * Disables webpack processing of __dirname and __filename. + * If you run the bundle in node.js it falls back to these values of node.js. + * https://github.com/webpack/webpack/issues/2010 + */ + node: { + __dirname: false, + __filename: false, + }, +}; + +export default merge(baseConfig, configuration); diff --git a/apps/electron/.erb/configs/webpack.config.preload.dev.ts b/apps/electron/.erb/configs/webpack.config.preload.dev.ts new file mode 100644 index 000000000..d6679e63e --- /dev/null +++ b/apps/electron/.erb/configs/webpack.config.preload.dev.ts @@ -0,0 +1,71 @@ +import path from 'path'; +import webpack from 'webpack'; +import { merge } from 'webpack-merge'; +import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer'; +import baseConfig from './webpack.config.base'; +import webpackPaths from './webpack.paths'; +import checkNodeEnv from '../scripts/check-node-env'; + +// When an ESLint server is running, we can't set the NODE_ENV so we'll check if it's +// at the dev webpack config is not accidentally run in a production environment +if (process.env.NODE_ENV === 'production') { + checkNodeEnv('development'); +} + +const configuration: webpack.Configuration = { + devtool: 'inline-source-map', + + mode: 'development', + + target: 'electron-preload', + + entry: path.join(webpackPaths.srcMainPath, 'preload.ts'), + + output: { + path: webpackPaths.dllPath, + filename: 'preload.js', + library: { + type: 'umd', + }, + }, + + plugins: [ + new BundleAnalyzerPlugin({ + analyzerMode: process.env.ANALYZE === 'true' ? 'server' : 'disabled', + }), + + /** + * Create global constants which can be configured at compile time. + * + * Useful for allowing different behaviour between development builds and + * release builds + * + * NODE_ENV should be production so that modules do not perform certain + * development checks + * + * By default, use 'development' as NODE_ENV. This can be overriden with + * 'staging', for example, by changing the ENV variables in the npm scripts + */ + new webpack.EnvironmentPlugin({ + NODE_ENV: 'development', + }), + + new webpack.LoaderOptionsPlugin({ + debug: true, + }), + ], + + /** + * Disables webpack processing of __dirname and __filename. + * If you run the bundle in node.js it falls back to these values of node.js. + * https://github.com/webpack/webpack/issues/2010 + */ + node: { + __dirname: false, + __filename: false, + }, + + watch: true, +}; + +export default merge(baseConfig, configuration); diff --git a/apps/electron/.erb/configs/webpack.config.renderer.dev.dll.ts b/apps/electron/.erb/configs/webpack.config.renderer.dev.dll.ts new file mode 100644 index 000000000..614b90f04 --- /dev/null +++ b/apps/electron/.erb/configs/webpack.config.renderer.dev.dll.ts @@ -0,0 +1,77 @@ +/** + * Builds the DLL for development electron renderer process + */ + +import webpack from 'webpack'; +import path from 'path'; +import { merge } from 'webpack-merge'; +import baseConfig from './webpack.config.base'; +import webpackPaths from './webpack.paths'; +import { dependencies } from '../../package.json'; +import checkNodeEnv from '../scripts/check-node-env'; + +checkNodeEnv('development'); + +const dist = webpackPaths.dllPath; + +const configuration: webpack.Configuration = { + context: webpackPaths.rootPath, + + devtool: 'eval', + + mode: 'development', + + target: 'electron-renderer', + + externals: ['fsevents', 'crypto-browserify'], + + /** + * Use `module` from `webpack.config.renderer.dev.js` + */ + module: require('./webpack.config.renderer.dev').default.module, + + entry: { + renderer: Object.keys(dependencies || {}), + }, + + output: { + path: dist, + filename: '[name].dev.dll.js', + library: { + name: 'renderer', + type: 'var', + }, + }, + + plugins: [ + new webpack.DllPlugin({ + path: path.join(dist, '[name].json'), + name: '[name]', + }), + + /** + * Create global constants which can be configured at compile time. + * + * Useful for allowing different behaviour between development builds and + * release builds + * + * NODE_ENV should be production so that modules do not perform certain + * development checks + */ + new webpack.EnvironmentPlugin({ + NODE_ENV: 'development', + }), + + new webpack.LoaderOptionsPlugin({ + debug: true, + options: { + context: webpackPaths.srcPath, + output: { + path: webpackPaths.dllPath, + }, + }, + }), + ], +}; + +export default merge(baseConfig, configuration); diff --git a/apps/electron/.erb/configs/webpack.config.renderer.dev.ts b/apps/electron/.erb/configs/webpack.config.renderer.dev.ts new file mode 100644 index 000000000..a6ca87e90 --- /dev/null +++ b/apps/electron/.erb/configs/webpack.config.renderer.dev.ts @@ -0,0 +1,213 @@ +import 'webpack-dev-server'; +import path from 'path'; +import fs from 'fs'; +import webpack from 'webpack'; +import HtmlWebpackPlugin from 'html-webpack-plugin'; +import chalk from 'chalk'; +import { merge } from 'webpack-merge'; +import { execSync, spawn } from 'child_process'; +import ReactRefreshWebpackPlugin from '@pmmmwh/react-refresh-webpack-plugin'; +import baseConfig from './webpack.config.base'; +import webpackPaths from './webpack.paths'; +import checkNodeEnv from '../scripts/check-node-env'; + +// When an ESLint server is running, we can't set the NODE_ENV so we'll check if it's +// at the dev webpack config is not accidentally run in a production environment +if (process.env.NODE_ENV === 'production') { + checkNodeEnv('development'); +} + +const port = process.env.PORT || 1212; +const manifest = path.resolve(webpackPaths.dllPath, 'renderer.json'); +const skipDLLs = + module.parent?.filename.includes('webpack.config.renderer.dev.dll') || + module.parent?.filename.includes('webpack.config.eslint'); + +/** + * Warn if the DLL is not built + */ +if ( + !skipDLLs && + !(fs.existsSync(webpackPaths.dllPath) && fs.existsSync(manifest)) +) { + console.log( + chalk.black.bgYellow.bold( + 'The DLL files are missing. Sit back while we build them for you with "npm run build-dll"', + ), + ); + execSync('npm run postinstall'); +} + +const configuration: webpack.Configuration = { + devtool: 'inline-source-map', + + mode: 'development', + + target: ['web', 'electron-renderer'], + + entry: [ + `webpack-dev-server/client?http://localhost:${port}/dist`, + 'webpack/hot/only-dev-server', + path.join(webpackPaths.srcRendererPath, 'index.tsx'), + ], + + output: { + path: webpackPaths.distRendererPath, + publicPath: '/', + filename: 'renderer.dev.js', + library: { + type: 'umd', + }, + }, + + module: { + rules: [ + { + test: /\.s?(c|a)ss$/, + use: [ + 'style-loader', + { + loader: 'css-loader', + options: { + modules: true, + sourceMap: true, + importLoaders: 1, + }, + }, + 'sass-loader', + ], + include: /\.module\.s?(c|a)ss$/, + }, + { + test: /\.s?css$/, + use: ['style-loader', 'css-loader', 'sass-loader'], + exclude: /\.module\.s?(c|a)ss$/, + }, + // Fonts + { + test: /\.(woff|woff2|eot|ttf|otf)$/i, + type: 'asset/resource', + }, + // Images + { + test: /\.(png|jpg|jpeg|gif)$/i, + type: 'asset/resource', + }, + // SVG + { + test: /\.svg$/, + use: [ + { + loader: '@svgr/webpack', + options: { + prettier: false, + svgo: false, + svgoConfig: { + plugins: [{ removeViewBox: false }], + }, + titleProp: true, + ref: true, + }, + }, + 'file-loader', + ], + }, + ], + }, + plugins: [ + ...(skipDLLs + ? [] + : [ + new webpack.DllReferencePlugin({ + context: webpackPaths.dllPath, + manifest: require(manifest), + sourceType: 'var', + }), + ]), + + new webpack.NoEmitOnErrorsPlugin(), + + /** + * Create global constants which can be configured at compile time. + * + * Useful for allowing different behaviour between development builds and + * release builds + * + * NODE_ENV should be production so that modules do not perform certain + * development checks + * + * By default, use 'development' as NODE_ENV. This can be overriden with + * 'staging', for example, by changing the ENV variables in the npm scripts + */ + new webpack.EnvironmentPlugin({ + NODE_ENV: 'development', + }), + + new webpack.LoaderOptionsPlugin({ + debug: true, + }), + + new ReactRefreshWebpackPlugin(), + + new HtmlWebpackPlugin({ + filename: path.join('index.html'), + template: path.join(webpackPaths.srcRendererPath, 'index.ejs'), + minify: { + collapseWhitespace: true, + removeAttributeQuotes: true, + removeComments: true, + }, + isBrowser: false, + env: process.env.NODE_ENV, + isDevelopment: process.env.NODE_ENV !== 'production', + nodeModules: webpackPaths.appNodeModulesPath, + }), + ], + + node: { + __dirname: false, + __filename: false, + }, + + devServer: { + port, + compress: true, + hot: true, + headers: { 'Access-Control-Allow-Origin': '*' }, + static: { + publicPath: '/', + }, + historyApiFallback: { + verbose: true, + }, + setupMiddlewares(middlewares) { + console.log('Starting preload.js builder...'); + const preloadProcess = spawn('npm', ['run', 'start:preload'], { + shell: true, + stdio: 'inherit', + }) + .on('close', (code: number) => process.exit(code!)) + .on('error', (spawnError) => console.error(spawnError)); + + console.log('Starting Main Process...'); + let args = ['run', 'start:main']; + if (process.env.MAIN_ARGS) { + args = args.concat( + ['--', ...process.env.MAIN_ARGS.matchAll(/"[^"]+"|[^\s"]+/g)].flat(), + ); + } + spawn('npm', args, { + shell: true, + stdio: 'inherit', + }) + .on('close', (code: number) => { + preloadProcess.kill(); + process.exit(code!); + }) + .on('error', (spawnError) => console.error(spawnError)); + return middlewares; + }, + }, +}; + +export default merge(baseConfig, configuration); diff --git a/apps/electron/.erb/configs/webpack.config.renderer.prod.ts b/apps/electron/.erb/configs/webpack.config.renderer.prod.ts new file mode 100644 index 000000000..3cebf30d4 --- /dev/null +++ b/apps/electron/.erb/configs/webpack.config.renderer.prod.ts @@ -0,0 +1,141 @@ +/** + * Build config for electron renderer process + */ + +import path from 'path'; +import webpack from 'webpack'; +import HtmlWebpackPlugin from 'html-webpack-plugin'; +import MiniCssExtractPlugin from 'mini-css-extract-plugin'; +import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer'; +import CssMinimizerPlugin from 'css-minimizer-webpack-plugin'; +import { merge } from 'webpack-merge'; +import TerserPlugin from 'terser-webpack-plugin'; +import baseConfig from './webpack.config.base'; +import webpackPaths from './webpack.paths'; +import checkNodeEnv from '../scripts/check-node-env'; +import deleteSourceMaps from '../scripts/delete-source-maps'; + +checkNodeEnv('production'); +deleteSourceMaps(); + +const configuration: webpack.Configuration = { + devtool: 'source-map', + + mode: 'production', + + target: ['web', 'electron-renderer'], + + entry: [path.join(webpackPaths.srcRendererPath, 'index.tsx')], + + output: { + path: webpackPaths.distRendererPath, + publicPath: './', + filename: 'renderer.js', + library: { + type: 'umd', + }, + }, + + module: { + rules: [ + { + test: /\.s?(a|c)ss$/, + use: [ + MiniCssExtractPlugin.loader, + { + loader: 'css-loader', + options: { + modules: true, + sourceMap: true, + importLoaders: 1, + }, + }, + 'sass-loader', + ], + include: /\.module\.s?(c|a)ss$/, + }, + { + test: /\.s?(a|c)ss$/, + use: [MiniCssExtractPlugin.loader, 'css-loader', 'sass-loader'], + exclude: /\.module\.s?(c|a)ss$/, + }, + // Fonts + { + test: /\.(woff|woff2|eot|ttf|otf)$/i, + type: 'asset/resource', + }, + // Images + { + test: /\.(png|jpg|jpeg|gif)$/i, + type: 'asset/resource', + }, + // SVG + { + test: /\.svg$/, + use: [ + { + loader: '@svgr/webpack', + options: { + prettier: false, + svgo: false, + svgoConfig: { + plugins: [{ removeViewBox: false }], + }, + titleProp: true, + ref: true, + }, + }, + 'file-loader', + ], + }, + ], + }, + + optimization: { + minimize: true, + minimizer: [new TerserPlugin(), new CssMinimizerPlugin()], + }, + + plugins: [ + /** + * Create global constants which can be configured at compile time. + * + * Useful for allowing different behaviour between development builds and + * release builds + * + * NODE_ENV should be production so that modules do not perform certain + * development checks + */ + new webpack.EnvironmentPlugin({ + NODE_ENV: 'production', + DEBUG_PROD: false, + }), + + new MiniCssExtractPlugin({ + filename: 'style.css', + }), + + new BundleAnalyzerPlugin({ + analyzerMode: process.env.ANALYZE === 'true' ? 'server' : 'disabled', + analyzerPort: 8889, + }), + + new HtmlWebpackPlugin({ + filename: 'index.html', + template: path.join(webpackPaths.srcRendererPath, 'index.ejs'), + minify: { + collapseWhitespace: true, + removeAttributeQuotes: true, + removeComments: true, + }, + isBrowser: false, + isDevelopment: false, + }), + + new webpack.DefinePlugin({ + 'process.type': '"renderer"', + }), + ], +}; + +export default merge(baseConfig, configuration); diff --git a/apps/electron/.erb/configs/webpack.paths.ts b/apps/electron/.erb/configs/webpack.paths.ts new file mode 100644 index 000000000..e5ba57343 --- /dev/null +++ b/apps/electron/.erb/configs/webpack.paths.ts @@ -0,0 +1,38 @@ +const path = require('path'); + +const rootPath = path.join(__dirname, '../..'); + +const dllPath = path.join(__dirname, '../dll'); + +const srcPath = path.join(rootPath, 'src'); +const srcMainPath = path.join(srcPath, 'main'); +const srcRendererPath = path.join(srcPath, 'renderer'); + +const releasePath = path.join(rootPath, 'release'); +const appPath = path.join(releasePath, 'app'); +const appPackagePath = path.join(appPath, 'package.json'); +const appNodeModulesPath = path.join(appPath, 'node_modules'); +const srcNodeModulesPath = path.join(srcPath, 'node_modules'); + +const distPath = path.join(appPath, 'dist'); +const distMainPath = path.join(distPath, 'main'); +const distRendererPath = path.join(distPath, 'renderer'); + +const buildPath = path.join(releasePath, 'build'); + +export default { + rootPath, + dllPath, + srcPath, + srcMainPath, + srcRendererPath, + releasePath, + appPath, + appPackagePath, + appNodeModulesPath, + srcNodeModulesPath, + distPath, + distMainPath, + distRendererPath, + buildPath, +}; diff --git a/apps/electron/.erb/img/erb-banner.svg b/apps/electron/.erb/img/erb-banner.svg new file mode 100644 index 000000000..f7ce67079 --- /dev/null +++ b/apps/electron/.erb/img/erb-banner.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/electron/.erb/img/erb-logo.png b/apps/electron/.erb/img/erb-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..97a5661aeb0b6f20fde68d9e6dd1e899d8fda63f GIT binary patch literal 28783 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 gKKK7D8}FFy{Cfhg7$ + + + + + diff --git a/apps/electron/.erb/mocks/fileMock.js b/apps/electron/.erb/mocks/fileMock.js new file mode 100644 index 000000000..602eb23ee --- /dev/null +++ b/apps/electron/.erb/mocks/fileMock.js @@ -0,0 +1 @@ +export default 'test-file-stub'; diff --git a/apps/electron/.erb/scripts/.eslintrc b/apps/electron/.erb/scripts/.eslintrc new file mode 100644 index 000000000..35dc618d6 --- /dev/null +++ b/apps/electron/.erb/scripts/.eslintrc @@ -0,0 +1,8 @@ +{ + "rules": { + "no-console": "off", + "global-require": "off", + "import/no-dynamic-require": "off", + "import/no-extraneous-dependencies": "off" + } +} diff --git a/apps/electron/.erb/scripts/check-build-exists.ts b/apps/electron/.erb/scripts/check-build-exists.ts new file mode 100644 index 000000000..649929572 --- /dev/null +++ b/apps/electron/.erb/scripts/check-build-exists.ts @@ -0,0 +1,24 @@ +// Check if the renderer and main bundles are built +import path from 'path'; +import chalk from 'chalk'; +import fs from 'fs'; +import webpackPaths from '../configs/webpack.paths'; + +const mainPath = path.join(webpackPaths.distMainPath, 'main.js'); +const rendererPath = path.join(webpackPaths.distRendererPath, 'renderer.js'); + +if (!fs.existsSync(mainPath)) { + throw new Error( + chalk.whiteBright.bgRed.bold( + 'The main process is not built yet. Build it by running "npm run build:main"', + ), + ); +} + +if (!fs.existsSync(rendererPath)) { + throw new Error( + chalk.whiteBright.bgRed.bold( + 'The renderer process is not built yet. Build it by running "npm run build:renderer"', + ), + ); +} diff --git a/apps/electron/.erb/scripts/check-native-dep.js b/apps/electron/.erb/scripts/check-native-dep.js new file mode 100644 index 000000000..628698162 --- /dev/null +++ b/apps/electron/.erb/scripts/check-native-dep.js @@ -0,0 +1,54 @@ +import fs from 'fs'; +import chalk from 'chalk'; +import { execSync } from 'child_process'; +import { dependencies } from '../../package.json'; + +if (dependencies) { + const dependenciesKeys = Object.keys(dependencies); + const nativeDeps = fs + .readdirSync('node_modules') + .filter((folder) => fs.existsSync(`node_modules/${folder}/binding.gyp`)); + if (nativeDeps.length === 0) { + process.exit(0); + } + try { + // Find the reason for why the dependency is installed. If it is installed + // because of a devDependency then that is okay. Warn when it is installed + // because of a dependency + const { dependencies: dependenciesObject } = JSON.parse( + execSync(`npm ls ${nativeDeps.join(' ')} --json`).toString(), + ); + const rootDependencies = Object.keys(dependenciesObject); + const filteredRootDependencies = rootDependencies.filter((rootDependency) => + dependenciesKeys.includes(rootDependency), + ); + if (filteredRootDependencies.length > 0) { + const plural = filteredRootDependencies.length > 1; + console.log(` + ${chalk.whiteBright.bgYellow.bold( + 'Webpack does not work with native dependencies.', + )} +${chalk.bold(filteredRootDependencies.join(', '))} ${ + plural ? 'are native dependencies' : 'is a native dependency' + } and should be installed inside of the "./release/app" folder. + First, uninstall the packages from "./package.json": +${chalk.whiteBright.bgGreen.bold('npm uninstall your-package')} + ${chalk.bold( + 'Then, instead of installing the package to the root "./package.json":', + )} +${chalk.whiteBright.bgRed.bold('npm install your-package')} + ${chalk.bold('Install the package to "./release/app/package.json"')} +${chalk.whiteBright.bgGreen.bold( + 'cd ./release/app && npm install your-package', +)} + Read more about native dependencies at: +${chalk.bold( + 'https://electron-react-boilerplate.js.org/docs/adding-dependencies/#module-structure', +)} + `); + process.exit(1); + } + } catch (e) { + console.log('Native dependencies could not be checked'); + } +} diff --git a/apps/electron/.erb/scripts/check-node-env.js b/apps/electron/.erb/scripts/check-node-env.js new file mode 100644 index 000000000..6bf674baa --- /dev/null +++ b/apps/electron/.erb/scripts/check-node-env.js @@ -0,0 +1,16 @@ +import chalk from 'chalk'; + +export default function checkNodeEnv(expectedEnv) { + if (!expectedEnv) { + throw new Error('"expectedEnv" not set'); + } + + if (process.env.NODE_ENV !== expectedEnv) { + console.log( + chalk.whiteBright.bgRed.bold( + `"process.env.NODE_ENV" must be "${expectedEnv}" to use this webpack config`, + ), + ); + process.exit(2); + } +} diff --git a/apps/electron/.erb/scripts/check-port-in-use.js b/apps/electron/.erb/scripts/check-port-in-use.js new file mode 100644 index 000000000..398cbc179 --- /dev/null +++ b/apps/electron/.erb/scripts/check-port-in-use.js @@ -0,0 +1,16 @@ +import chalk from 'chalk'; +import detectPort from 'detect-port'; + +const port = process.env.PORT || '1212'; + +detectPort(port, (_err, availablePort) => { + if (port !== String(availablePort)) { + throw new Error( + chalk.whiteBright.bgRed.bold( + `Port "${port}" on "localhost" is already in use. Please use another port. ex: PORT=4343 npm start`, + ), + ); + } else { + process.exit(0); + } +}); diff --git a/apps/electron/.erb/scripts/clean.js b/apps/electron/.erb/scripts/clean.js new file mode 100644 index 000000000..2c7b3aeab --- /dev/null +++ b/apps/electron/.erb/scripts/clean.js @@ -0,0 +1,13 @@ +import { rimrafSync } from 'rimraf'; +import fs from 'fs'; +import webpackPaths from '../configs/webpack.paths'; + +const foldersToRemove = [ + webpackPaths.distPath, + webpackPaths.buildPath, + webpackPaths.dllPath, +]; + +foldersToRemove.forEach((folder) => { + if (fs.existsSync(folder)) rimrafSync(folder); +}); diff --git a/apps/electron/.erb/scripts/delete-source-maps.js b/apps/electron/.erb/scripts/delete-source-maps.js new file mode 100644 index 000000000..d14519cd0 --- /dev/null +++ b/apps/electron/.erb/scripts/delete-source-maps.js @@ -0,0 +1,15 @@ +import fs from 'fs'; +import path from 'path'; +import { rimrafSync } from 'rimraf'; +import webpackPaths from '../configs/webpack.paths'; + +export default function deleteSourceMaps() { + if (fs.existsSync(webpackPaths.distMainPath)) + rimrafSync(path.join(webpackPaths.distMainPath, '*.js.map'), { + glob: true, + }); + if (fs.existsSync(webpackPaths.distRendererPath)) + rimrafSync(path.join(webpackPaths.distRendererPath, '*.js.map'), { + glob: true, + }); +} diff --git a/apps/electron/.erb/scripts/electron-rebuild.js b/apps/electron/.erb/scripts/electron-rebuild.js new file mode 100644 index 000000000..0bea32793 --- /dev/null +++ b/apps/electron/.erb/scripts/electron-rebuild.js @@ -0,0 +1,20 @@ +import { execSync } from 'child_process'; +import fs from 'fs'; +import { dependencies } from '../../release/app/package.json'; +import webpackPaths from '../configs/webpack.paths'; + +if ( + Object.keys(dependencies || {}).length > 0 && + fs.existsSync(webpackPaths.appNodeModulesPath) +) { + const electronRebuildCmd = + '../../node_modules/.bin/electron-rebuild --force --types prod,dev,optional --module-dir .'; + const cmd = + process.platform === 'win32' + ? electronRebuildCmd.replace(/\//g, '\\') + : electronRebuildCmd; + execSync(cmd, { + cwd: webpackPaths.appPath, + stdio: 'inherit', + }); +} diff --git a/apps/electron/.erb/scripts/link-modules.ts b/apps/electron/.erb/scripts/link-modules.ts new file mode 100644 index 000000000..6cc31e666 --- /dev/null +++ b/apps/electron/.erb/scripts/link-modules.ts @@ -0,0 +1,9 @@ +import fs from 'fs'; +import webpackPaths from '../configs/webpack.paths'; + +const { srcNodeModulesPath } = webpackPaths; +const { appNodeModulesPath } = webpackPaths; + +if (!fs.existsSync(srcNodeModulesPath) && fs.existsSync(appNodeModulesPath)) { + fs.symlinkSync(appNodeModulesPath, srcNodeModulesPath, 'junction'); +} diff --git a/apps/electron/.erb/scripts/notarize.js b/apps/electron/.erb/scripts/notarize.js new file mode 100644 index 000000000..097ff35b7 --- /dev/null +++ b/apps/electron/.erb/scripts/notarize.js @@ -0,0 +1,32 @@ +const { notarize } = require('@electron/notarize'); +const { build } = require('../../package.json'); + +exports.default = async function notarizeMacos(context) { + const { electronPlatformName, appOutDir } = context; + if (electronPlatformName !== 'darwin') { + return; + } + + if (process.env.CI !== 'true') { + console.warn('Skipping notarizing step. Packaging is not running in CI'); + return; + } + + if ( + !('APPLE_ID' in process.env && 'APPLE_APP_SPECIFIC_PASSWORD' in process.env) + ) { + console.warn( + 'Skipping notarizing step. APPLE_ID and APPLE_APP_SPECIFIC_PASSWORD env variables must be set', + ); + return; + } + + const appName = context.packager.appInfo.productFilename; + + await notarize({ + appBundleId: build.appId, + appPath: `${appOutDir}/${appName}.app`, + appleId: process.env.APPLE_ID, + appleIdPassword: process.env.APPLE_APP_SPECIFIC_PASSWORD, + }); +}; diff --git a/apps/electron/.eslintignore b/apps/electron/.eslintignore new file mode 100644 index 000000000..7cad53588 --- /dev/null +++ b/apps/electron/.eslintignore @@ -0,0 +1,33 @@ +# Logs +logs +*.log + +# Runtime data +pids +*.pid +*.seed + +# Coverage directory used by tools like istanbul +coverage +.eslintcache + +# Dependency directory +# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git +node_modules + +# OSX +.DS_Store + +release/app/dist +release/build +.erb/dll + +.idea +npm-debug.log.* +*.css.d.ts +*.sass.d.ts +*.scss.d.ts + +# eslint ignores hidden directories by default: +# https://github.com/eslint/eslint/issues/8429 +!.erb diff --git a/apps/electron/.eslintrc.js b/apps/electron/.eslintrc.js new file mode 100644 index 000000000..85a1aa65f --- /dev/null +++ b/apps/electron/.eslintrc.js @@ -0,0 +1,34 @@ +module.exports = { + extends: 'erb', + plugins: ['@typescript-eslint'], + rules: { + // A temporary hack related to IDE not resolving correct package.json + 'import/no-extraneous-dependencies': 'off', + 'react/react-in-jsx-scope': 'off', + 'react/jsx-filename-extension': 'off', + 'import/extensions': 'off', + 'import/no-unresolved': 'off', + 'import/no-import-module-exports': 'off', + 'no-shadow': 'off', + '@typescript-eslint/no-shadow': 'error', + 'no-unused-vars': 'off', + '@typescript-eslint/no-unused-vars': 'error', + }, + parserOptions: { + ecmaVersion: 2022, + sourceType: 'module', + }, + settings: { + 'import/resolver': { + // See https://github.com/benmosher/eslint-plugin-import/issues/1396#issuecomment-575727774 for line below + node: {}, + webpack: { + config: require.resolve('./.erb/configs/webpack.config.eslint.ts'), + }, + typescript: {}, + }, + 'import/parsers': { + '@typescript-eslint/parser': ['.ts', '.tsx'], + }, + }, +}; diff --git a/apps/electron/.gitattributes b/apps/electron/.gitattributes new file mode 100644 index 000000000..20570f2f3 --- /dev/null +++ b/apps/electron/.gitattributes @@ -0,0 +1,12 @@ +* text eol=lf +*.exe binary +*.png binary +*.jpg binary +*.jpeg binary +*.ico binary +*.icns binary +*.eot binary +*.otf binary +*.ttf binary +*.woff binary +*.woff2 binary diff --git a/apps/electron/.github/FUNDING.yml b/apps/electron/.github/FUNDING.yml new file mode 100644 index 000000000..5b774d1b4 --- /dev/null +++ b/apps/electron/.github/FUNDING.yml @@ -0,0 +1,5 @@ +# These are supported funding model platforms + +github: [electron-react-boilerplate, amilajack] +patreon: amilajack +open_collective: electron-react-boilerplate-594 diff --git a/apps/electron/.github/ISSUE_TEMPLATE/1-Bug_report.md b/apps/electron/.github/ISSUE_TEMPLATE/1-Bug_report.md new file mode 100644 index 000000000..245ab770b --- /dev/null +++ b/apps/electron/.github/ISSUE_TEMPLATE/1-Bug_report.md @@ -0,0 +1,67 @@ +--- +name: Bug report +about: You're having technical issues. 🐞 +labels: 'bug' +--- + + + +## Prerequisites + + + +- [ ] Using npm +- [ ] Using an up-to-date [`main` branch](https://github.com/electron-react-boilerplate/electron-react-boilerplate/tree/main) +- [ ] Using latest version of devtools. [Check the docs for how to update](https://electron-react-boilerplate.js.org/docs/dev-tools/) +- [ ] Tried solutions mentioned in [#400](https://github.com/electron-react-boilerplate/electron-react-boilerplate/issues/400) +- [ ] For issue in production release, add devtools output of `DEBUG_PROD=true npm run build && npm start` + +## Expected Behavior + + + +## Current Behavior + + + +## Steps to Reproduce + + + + +1. + +2. + +3. + +4. + +## Possible Solution (Not obligatory) + + + +## Context + + + + + +## Your Environment + + + +- Node version : +- electron-react-boilerplate version or branch : +- Operating System and version : +- Link to your project : + + diff --git a/apps/electron/.github/ISSUE_TEMPLATE/2-Question.md b/apps/electron/.github/ISSUE_TEMPLATE/2-Question.md new file mode 100644 index 000000000..27d4d5da3 --- /dev/null +++ b/apps/electron/.github/ISSUE_TEMPLATE/2-Question.md @@ -0,0 +1,19 @@ +--- +name: Question +about: Ask a question.❓ +labels: 'question' +--- + +## Summary + + + + diff --git a/apps/electron/.github/ISSUE_TEMPLATE/3-Feature_request.md b/apps/electron/.github/ISSUE_TEMPLATE/3-Feature_request.md new file mode 100644 index 000000000..84663b6c1 --- /dev/null +++ b/apps/electron/.github/ISSUE_TEMPLATE/3-Feature_request.md @@ -0,0 +1,15 @@ +--- +name: Feature request +about: You want something added to the boilerplate. 🎉 +labels: 'enhancement' +--- + + diff --git a/apps/electron/.github/config.yml b/apps/electron/.github/config.yml new file mode 100644 index 000000000..3708b4647 --- /dev/null +++ b/apps/electron/.github/config.yml @@ -0,0 +1,6 @@ +requiredHeaders: + - Prerequisites + - Expected Behavior + - Current Behavior + - Possible Solution + - Your Environment diff --git a/apps/electron/.github/stale.yml b/apps/electron/.github/stale.yml new file mode 100644 index 000000000..5e2b3ad83 --- /dev/null +++ b/apps/electron/.github/stale.yml @@ -0,0 +1,17 @@ +# Number of days of inactivity before an issue becomes stale +daysUntilStale: 60 +# Number of days of inactivity before a stale issue is closed +daysUntilClose: 7 +# Issues with these labels will never be considered stale +exemptLabels: + - discussion + - security +# Label to use when marking an issue as stale +staleLabel: wontfix +# Comment to post when marking an issue as stale. Set to `false` to disable +markComment: > + This issue has been automatically marked as stale because it has not had + recent activity. It will be closed if no further activity occurs. Thank you + for your contributions. +# Comment to post when closing a stale issue. Set to `false` to disable +closeComment: false diff --git a/apps/electron/.github/workflows/codeql-analysis.yml b/apps/electron/.github/workflows/codeql-analysis.yml new file mode 100644 index 000000000..0d8b5cfe7 --- /dev/null +++ b/apps/electron/.github/workflows/codeql-analysis.yml @@ -0,0 +1,72 @@ +# For most projects, this workflow file will not need changing; you simply need +# to commit it to your repository. +# +# You may wish to alter this file to override the set of languages analyzed, +# or to provide custom queries or build logic. +# +# ******** NOTE ******** +# We have attempted to detect the languages in your repository. Please check +# the `language` matrix defined below to confirm you have the correct set of +# supported CodeQL languages. +# +name: "CodeQL" + +on: + push: + branches: [ "main" ] + pull_request: + # The branches below must be a subset of the branches above + branches: [ "main" ] + schedule: + - cron: '44 16 * * 4' + +jobs: + analyze: + name: Analyze + runs-on: ubuntu-latest + permissions: + actions: read + contents: read + security-events: write + + strategy: + fail-fast: false + matrix: + language: [ 'javascript' ] + # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ] + # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@v2 + with: + languages: ${{ matrix.language }} + # If you wish to specify custom queries, you can do so here or in a config file. + # By default, queries listed here will override any specified in a config file. + # Prefix the list here with "+" to use these queries and those in the config file. + + # Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs + # queries: security-extended,security-and-quality + + + # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). + # If this step fails, then you should remove it and run the build manually (see below) + - name: Autobuild + uses: github/codeql-action/autobuild@v2 + + # ℹ️ Command-line programs to run using the OS shell. + # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun + + # If the Autobuild fails above, remove it and uncomment the following three lines. + # modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance. + + # - run: | + # echo "Run, Build Application using script" + # ./location_of_script_within_repo/buildscript.sh + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v2 diff --git a/apps/electron/.github/workflows/publish.yml b/apps/electron/.github/workflows/publish.yml new file mode 100644 index 000000000..5f3f8d85d --- /dev/null +++ b/apps/electron/.github/workflows/publish.yml @@ -0,0 +1,46 @@ +name: Publish + +on: + push: + branches: + - main + +jobs: + publish: + # To enable auto publishing to github, update your electron publisher + # config in package.json > "build" and remove the conditional below + if: ${{ github.repository_owner == 'electron-react-boilerplate' }} + + runs-on: ${{ matrix.os }} + + strategy: + matrix: + os: [macos-latest] + + steps: + - name: Checkout git repo + uses: actions/checkout@v3 + + - name: Install Node and NPM + uses: actions/setup-node@v3 + with: + node-version: 18 + cache: npm + + - name: Install and build + run: | + npm install + npm run postinstall + npm run build + + - name: Publish releases + env: + # These values are used for auto updates signing + APPLE_ID: ${{ secrets.APPLE_ID }} + APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_ID_PASS }} + CSC_LINK: ${{ secrets.CSC_LINK }} + CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }} + # This is used for uploading release assets to github + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + npm exec electron-builder -- --publish always --win --mac --linux diff --git a/apps/electron/.github/workflows/test.yml b/apps/electron/.github/workflows/test.yml new file mode 100644 index 000000000..c8ea922c4 --- /dev/null +++ b/apps/electron/.github/workflows/test.yml @@ -0,0 +1,34 @@ +name: Test + +on: [push, pull_request] + +jobs: + test: + runs-on: ${{ matrix.os }} + + strategy: + matrix: + os: [macos-latest, windows-latest, ubuntu-latest] + + steps: + - name: Check out Git repository + uses: actions/checkout@v3 + + - name: Install Node.js and NPM + uses: actions/setup-node@v3 + with: + node-version: 18 + cache: npm + + - name: npm install + run: | + npm install + + - name: npm test + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + npm run package + npm run lint + npm exec tsc + npm test diff --git a/apps/electron/.gitignore b/apps/electron/.gitignore index b1a3c1e3f..da1343076 100644 --- a/apps/electron/.gitignore +++ b/apps/electron/.gitignore @@ -1,2 +1,29 @@ -.env -build +# Logs +logs +*.log + +# Runtime data +pids +*.pid +*.seed + +# Coverage directory used by tools like istanbul +coverage +.eslintcache + +# Dependency directory +# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git +node_modules + +# OSX +.DS_Store + +release/app/dist +release/build +.erb/dll + +.idea +npm-debug.log.* +*.css.d.ts +*.sass.d.ts +*.scss.d.ts diff --git a/apps/electron/.vscode/extensions.json b/apps/electron/.vscode/extensions.json new file mode 100644 index 000000000..d9165248f --- /dev/null +++ b/apps/electron/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": ["dbaeumer.vscode-eslint", "EditorConfig.EditorConfig"] +} diff --git a/apps/electron/.vscode/launch.json b/apps/electron/.vscode/launch.json new file mode 100644 index 000000000..7494aabbc --- /dev/null +++ b/apps/electron/.vscode/launch.json @@ -0,0 +1,30 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Electron: Main", + "type": "node", + "request": "launch", + "protocol": "inspector", + "runtimeExecutable": "npm", + "runtimeArgs": ["run", "start"], + "env": { + "MAIN_ARGS": "--inspect=5858 --remote-debugging-port=9223" + } + }, + { + "name": "Electron: Renderer", + "type": "chrome", + "request": "attach", + "port": 9223, + "webRoot": "${workspaceFolder}", + "timeout": 15000 + } + ], + "compounds": [ + { + "name": "Electron: All", + "configurations": ["Electron: Main", "Electron: Renderer"] + } + ] +} diff --git a/apps/electron/.vscode/settings.json b/apps/electron/.vscode/settings.json new file mode 100644 index 000000000..4a58cba04 --- /dev/null +++ b/apps/electron/.vscode/settings.json @@ -0,0 +1,30 @@ +{ + "files.associations": { + ".eslintrc": "jsonc", + ".prettierrc": "jsonc", + ".eslintignore": "ignore" + }, + + "eslint.validate": [ + "javascript", + "javascriptreact", + "html", + "typescriptreact" + ], + + "javascript.validate.enable": false, + "javascript.format.enable": false, + "typescript.format.enable": false, + + "search.exclude": { + ".git": true, + ".eslintcache": true, + ".erb/dll": true, + "release/{build,app/dist}": true, + "node_modules": true, + "npm-debug.log.*": true, + "test/**/__snapshots__": true, + "package-lock.json": true, + "*.{css,sass,scss}.d.ts": true + } +} diff --git a/apps/electron/CHANGELOG.md b/apps/electron/CHANGELOG.md new file mode 100644 index 000000000..5310ab55d --- /dev/null +++ b/apps/electron/CHANGELOG.md @@ -0,0 +1,533 @@ +# 2.1.0 + +- Migrate to `css-minifier-webpack-plugin` + +# 2.0.1 + +## Fixes + +- Fix broken css linking in production build + +# 2.0.0 + +## Breaking Changes + +- drop redux +- remove counter example app +- simplify directory structure +- move `dll` dir to `.erb` dir +- fix icon/font import paths +- migrate to `react-refresh` from `react-hot-loader` +- migrate to webpack@5 +- migrate to electron@11 +- remove e2e tests and testcafe integration +- rename `app` dir to more conventional `src` dir +- rename `resources` dir to `assets` +- simplify npm scripts +- drop stylelint +- simplify styling of boilerplate app +- remove `START_HOT` env variable +- notarize support +- landing page boilerplate +- docs updates +- restore removed debugging support + +# 1.4.0 + +- Migrate to `eslint-config-erb@2` +- Rename `dev` npm script to `start` +- GitHub Actions: only publish GitHub releases when on master branch + +# 1.3.1 + +- Fix sass building bug ([#2540](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/2540)) +- Fix CI bug related to E2E tests and network timeouts +- Move automated dependency PRs to `next` ([#2554](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/2554)) +- Bump dependencies to patch semver + +# 1.3.0 + +- Fixes E2E tests ([#2516](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/2516)) +- Fixes preload entrypoint ([#2503](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/2503)) +- Downgrade to `electron@8` +- Bump dependencies to latest semver + +# 1.2.0 + +- Migrate to redux toolkit +- Lazy load routes with react suspense +- Drop support for azure-pipelines and use only github actions +- Bump all deps to latest semver +- Remove `test-e2e` script from tests (blocked on release of https://github.com/DevExpress/testcafe-browser-provider-electron/pull/65) +- Swap `typed-css-modules-webpack-plugin` for `typings-for-css-modules-loader` +- Use latest version of `eslint-config-erb` +- Remove unnecessary file extensions from ts exclude +- Add experimental support for vscode debugging +- Revert https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/2365 as default for users, provide as opt in option + +# 1.1.0 + +- Fix #2402 +- Simplify configs (https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/2406) + +# 1.0.0 + +- Migrate to TypeScript from Flow ([#2363](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/2363)) +- Use browserslist for `@babel/preset-env` targets ([#2368](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/2368)) +- Use preload script, disable `nodeIntegration` in renderer process for [improved security](https://www.electronjs.org/docs/tutorial/security#2-do-not-enable-nodejs-integration-for-remote-content) ([#2365](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/2365)) +- Add support for azure pipelines ([#2369](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/2369)) +- Disable sourcemaps in production + +# 0.18.1 (2019.12.12) + +- Fix HMR env bug ([#2343](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/2343)) +- Bump all deps to latest semver +- Bump to `electron@7` + +# 0.18.0 (2019.11.19) + +- Bump electron to `electron@6` (`electron@7` introduces breaking changes to testcafe end to end tests) +- Revert back to [two `package.json` structure](https://www.electron.build/tutorials/two-package-structure) +- Bump all deps to latest semver + +# 0.17.1 (2018.11.20) + +- Fix `yarn test-e2e` and testcafe for single package.json structure +- Fixes incorrect path in `yarn start` script +- Bumped deps +- Bump g++ in travis +- Change clone arguments to clone only master +- Change babel config to target current electron version + +For full change list, see https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/2021 + +# 0.17.0 (2018.10.30) + +- upgraded to `babel@7` (thanks to @vikr01 🎉🎉🎉) +- migrated from [two `package.json` structure](https://www.electron.build/tutorials/two-package-structure) (thanks to @HyperSprite!) +- initial auto update support (experimental) +- migrate from greenkeeper to [renovate](https://renovatebot.com) +- added issue template +- use `babel-preset-env` to target current electron version +- add [opencollective](https://opencollective.com/electron-react-boilerplate-594) banner message display in postinstall script (help support ERB 🙏) +- fix failing ci issues + +# 0.16.0 (2018.10.3) + +- removed unused dependencies +- migrate from `react-redux-router` to `connect-react-router` +- move webpack configs to `./webpack` dir +- use `g++` on travis when testing linux +- migrate from `spectron` to `testcafe` for e2e tests +- add linting support for config styles +- changed stylelint config +- temporarily disabled flow in appveyor to make ci pass +- added necessary infra to publish releases from ci + +# 0.15.0 (2018.8.25) + +- Performance: cache webpack uglify results +- Feature: add start minimized feature +- Feature: lint and fix styles with prettier and stylelint +- Feature: add greenkeeper support + +# 0.14.0 (2018.5.24) + +- Improved CI timings +- Migrated README commands to yarn from npm +- Improved vscode config +- Updated all dependencies to latest semver +- Fix `electron-rebuild` script bug +- Migrated to `mini-css-extract-plugin` from `extract-text-plugin` +- Added `optimize-css-assets-webpack-plugin` +- Run `prettier` on json, css, scss, and more filetypes + +# 0.13.3 (2018.5.24) + +- Add git precommit hook, when git commit will use `prettier` to format git add code +- Add format code function in `lint-fix` npm script which can use `prettier` to format project js code + +# 0.13.2 (2018.1.31) + +- Hot Module Reload (HMR) fixes +- Bumped all dependencies to latest semver +- Prevent error propagation of `CheckNativeDeps` script + +# 0.13.1 (2018.1.13) + +- Hot Module Reload (HMR) fixes +- Bumped all dependencies to latest semver +- Fixed electron-rebuild script +- Fixed tests scripts to run on all platforms +- Skip redux logs in console in test ENV + +# 0.13.0 (2018.1.6) + +#### Additions + +- Add native dependencies check on postinstall +- Updated all dependencies to latest semver + +# 0.12.0 (2017.7.8) + +#### Misc + +- Removed `babel-polyfill` +- Renamed and alphabetized npm scripts + +#### Breaking + +- Changed node dev `__dirname` and `__filename` to node built in fn's (https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/1035) +- Renamed `src/bundle.js` to `src/renderer.prod.js` for consistency +- Renamed `dll/vendor.js` to `dll/renderer.dev.dll.js` for consistency + +#### Additions + +- Enable node_modules cache on CI + +# 0.11.2 (2017.5.1) + +Yay! Another patch release. This release mostly includes refactorings and router bug fixes. Huge thanks to @anthonyraymond! + +⚠️ Windows electron builds are failing because of [this issue](https://github.com/electron/electron/issues/9321). This is not an issue with the boilerplate ⚠️ + +#### Breaking + +- **Renamed `./src/main.development.js` => `./src/main.{dev,prod}.js`:** [#963](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/963) + +#### Fixes + +- **Fixed reloading when not on `/` path:** [#958](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/958) [#949](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/949) + +#### Additions + +- **Added support for stylefmt:** [#960](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/960) + +# 0.11.1 (2017.4.23) + +You can now debug the production build with devtools like so: + +``` +DEBUG_PROD=true npm run package +``` + +🎉🎉🎉 + +#### Additions + +- **Added support for debugging production build:** [#fab245a](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/941/commits/fab245a077d02a09630f74270806c0c534a4ff95) + +#### Bug Fixes + +- **Fixed bug related to importing native dependencies:** [#933](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/933) + +#### Improvements + +- **Updated all deps to latest semver** + +# 0.11.0 (2017.4.19) + +Here's the most notable changes since `v0.10.0`. Its been about a year since a release has been pushed. Expect a new release to be published every 3-4 weeks. + +#### Breaking Changes + +- **Dropped support for node < 6** +- **Refactored webpack config files** +- **Migrate to two-package.json project structure** +- **Updated all devDeps to latest semver** +- **Migrated to Jest:** [#768](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/768) +- **Migrated to `react-router@4`** +- **Migrated to `electron-builder@4`** +- **Migrated to `webpack@2`** +- **Migrated to `react-hot-loader@3`** +- **Changed default live reload server PORT to `1212` from `3000`** + +#### Additions + +- **Added support for Yarn:** [#451](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/451) +- **Added support for Flow:** [#425](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/425) +- **Added support for stylelint:** [#911](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/911) +- **Added support for electron-builder:** [#876](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/876) +- **Added optional support for SASS:** [#880](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/880) +- **Added support for eslint-plugin-flowtype:** [#911](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/911) +- **Added support for appveyor:** [#280](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/280) +- **Added support for webpack dlls:** [#860](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/860) +- **Route based code splitting:** [#884](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/884) +- **Added support for Webpack Bundle Analyzer:** [#922](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/922) + +#### Improvements + +- **Parallelize renderer and main build processes when running `npm run build`** +- **Dynamically generate electron app menu** +- **Improved vscode integration:** [#856](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/856) + +#### Bug Fixes + +- **Fixed hot module replacement race condition bug:** [#917](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/917) [#920](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/920) + +# 0.10.0 (2016.4.18) + +#### Improvements + +- **Use Babel in main process with Webpack build:** [#201](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/201) +- **Change targets to built-in support by webpack:** [#197](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/197) +- **use es2015 syntax for webpack configs:** [#195](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/195) +- **Open application when webcontent is loaded:** [#192](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/192) +- **Upgraded dependencies** + +#### Bug fixed + +- **Fix `npm list electron-prebuilt` in package.js:** [#188](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/188) + +# 0.9.0 (2016.3.23) + +#### Improvements + +- **Added [redux-logger](https://github.com/fcomb/redux-logger)** +- **Upgraded [react-router-redux](https://github.com/reactjs/react-router-redux) to v4** +- **Upgraded dependencies** +- **Added `npm run dev` command:** [#162](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/162) +- **electron to v0.37.2** + +#### Breaking Changes + +- **css module as default:** [#154](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/154). +- **set default NODE_ENV to production:** [#140](https://github.com/electron-react-boilerplate/electron-react-boilerplate/issues/140) + +# 0.8.0 (2016.2.17) + +#### Bug fixed + +- **Fix lint errors** +- **Fix Webpack publicPath for production builds**: [#119](https://github.com/electron-react-boilerplate/electron-react-boilerplate/issues/119). +- **package script now chooses correct OS icon extension** + +#### Improvements + +- **babel 6** +- **Upgrade Dependencies** +- **Enable CSS source maps** +- **Add json-loader**: [#128](https://github.com/electron-react-boilerplate/electron-react-boilerplate/issues/128). +- **react-router 2.0 and react-router-redux 3.0** + +# 0.7.1 (2015.12.27) + +#### Bug fixed + +- **Fixed npm script on windows 10:** [#103](https://github.com/electron-react-boilerplate/electron-react-boilerplate/issues/103). +- **history and react-router version bump**: [#109](https://github.com/electron-react-boilerplate/electron-react-boilerplate/issues/109), [#110](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/110). + +#### Improvements + +- **electron 0.36** + +# 0.7.0 (2015.12.16) + +#### Bug fixed + +- **Fixed process.env.NODE_ENV variable in webpack:** [#74](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/74). +- **add missing object-assign**: [#76](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/76). +- **packaging in npm@3:** [#77](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/77). +- **compatibility in windows:** [#100](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/100). +- **disable chrome debugger in production env:** [#102](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/102). + +#### Improvements + +- **redux** +- **css-modules** +- **upgrade to react-router 1.x** +- **unit tests** +- **e2e tests** +- **travis-ci** +- **upgrade to electron 0.35.x** +- **use es2015** +- **check dev engine for node and npm** + +# 0.6.5 (2015.11.7) + +#### Improvements + +- **Bump style-loader to 0.13** +- **Bump css-loader to 0.22** + +# 0.6.4 (2015.10.27) + +#### Improvements + +- **Bump electron-debug to 0.3** + +# 0.6.3 (2015.10.26) + +#### Improvements + +- **Initialize ExtractTextPlugin once:** [#64](https://github.com/electron-react-boilerplate/electron-react-boilerplate/issues/64). + +# 0.6.2 (2015.10.18) + +#### Bug fixed + +- **Babel plugins production env not be set properly:** [#57](https://github.com/electron-react-boilerplate/electron-react-boilerplate/issues/57). + +# 0.6.1 (2015.10.17) + +#### Improvements + +- **Bump electron to v0.34.0** + +# 0.6.0 (2015.10.16) + +#### Breaking Changes + +- **From react-hot-loader to react-transform** + +# 0.5.2 (2015.10.15) + +#### Improvements + +- **Run tests with babel-register:** [#29](https://github.com/electron-react-boilerplate/electron-react-boilerplate/issues/29). + +# 0.5.1 (2015.10.12) + +#### Bug fixed + +- **Fix #51:** use `path.join(__dirname` instead of `./`. + +# 0.5.0 (2015.10.11) + +#### Improvements + +- **Simplify webpack config** see [#50](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/50). + +#### Breaking Changes + +- **webpack configs** +- **port changed:** changed default port from 2992 to 3000. +- **npm scripts:** remove `start-dev` and `dev-server`. rename `hot-dev-server` to `hot-server`. + +# 0.4.3 (2015.9.22) + +#### Bug fixed + +- **Fix #45 zeromq crash:** bump version of `electron-prebuilt`. + +# 0.4.2 (2015.9.15) + +#### Bug fixed + +- **run start-hot breaks chrome refresh(CTRL+R) (#42)**: bump `electron-debug` to `0.2.1` + +# 0.4.1 (2015.9.11) + +#### Improvements + +- **use electron-prebuilt version for packaging (#33)** + +# 0.4.0 (2015.9.5) + +#### Improvements + +- **update dependencies** + +# 0.3.0 (2015.8.31) + +#### Improvements + +- **eslint-config-airbnb** + +# 0.2.10 (2015.8.27) + +#### Features + +- **custom placeholder icon** + +#### Improvements + +- **electron-renderer as target:** via [webpack-target-electron-renderer](https://github.com/chentsulin/webpack-target-electron-renderer) + +# 0.2.9 (2015.8.18) + +#### Bug fixed + +- **Fix hot-reload** + +# 0.2.8 (2015.8.13) + +#### Improvements + +- **bump electron-debug** +- **babelrc** +- **organize webpack scripts** + +# 0.2.7 (2015.7.9) + +#### Bug fixed + +- **defaultProps:** fix typos. + +# 0.2.6 (2015.7.3) + +#### Features + +- **menu** + +#### Bug fixed + +- **package.js:** include webpack build. + +# 0.2.5 (2015.7.1) + +#### Features + +- **NPM Script:** support multi-platform +- **package:** `--all` option + +# 0.2.4 (2015.6.9) + +#### Bug fixed + +- **Eslint:** typo, [#17](https://github.com/electron-react-boilerplate/electron-react-boilerplate/issues/17) and improve `.eslintrc` + +# 0.2.3 (2015.6.3) + +#### Features + +- **Package Version:** use latest release electron version as default +- **Ignore Large peerDependencies** + +#### Bug fixed + +- **Npm Script:** typo, [#6](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/6) +- **Missing css:** [#7](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/7) + +# 0.2.2 (2015.6.2) + +#### Features + +- **electron-debug** + +#### Bug fixed + +- **Webpack:** add `.json` and `.node` to extensions for imitating node require. +- **Webpack:** set `node_modules` to externals for native module support. + +# 0.2.1 (2015.5.30) + +#### Bug fixed + +- **Webpack:** #1, change build target to `atom`. + +# 0.2.0 (2015.5.30) + +#### Features + +- **Ignore:** `test`, `tools`, `release` folder and devDependencies in `package.json`. +- **Support asar** +- **Support icon** + +# 0.1.0 (2015.5.27) + +#### Features + +- **Webpack:** babel, react-hot, ... +- **Flux:** actions, api, components, containers, stores.. +- **Package:** darwin (osx), linux and win32 (windows) platform. diff --git a/apps/electron/CODE_OF_CONDUCT.md b/apps/electron/CODE_OF_CONDUCT.md new file mode 100644 index 000000000..2562267e3 --- /dev/null +++ b/apps/electron/CODE_OF_CONDUCT.md @@ -0,0 +1,76 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in our project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, sex characteristics, gender identity and expression, +level of experience, education, socio-economic status, nationality, personal +appearance, race, religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment +include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or + advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic + address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. Examples of +representing a project or community include using an official project e-mail +address, posting via an official social media account, or acting as an appointed +representative at an online or offline event. Representation of a project may be +further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting the project team at electronreactboilerplate@gmail.com. All +complaints will be reviewed and investigated and will result in a response that +is deemed necessary and appropriate to the circumstances. The project team is +obligated to maintain confidentiality with regard to the reporter of an incident. +Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, +available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see +https://www.contributor-covenant.org/faq diff --git a/apps/electron/LICENSE b/apps/electron/LICENSE new file mode 100644 index 000000000..c2885de68 --- /dev/null +++ b/apps/electron/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2015-present Electron React Boilerplate + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/apps/electron/README.md b/apps/electron/README.md index c3a889d0b..116921db8 100644 --- a/apps/electron/README.md +++ b/apps/electron/README.md @@ -1,42 +1,159 @@ -# @flowser/app + -This is a kinda hacky solution to the issues that we are experiencing when building electron app in a monorepo project. +
-Because of that, this is just a workaround solution for now. +
-## Building +
-1. Put Apple credentials (`APPLEID`, `APPLEIDPASS`) in `.env` file -2. Run `node scripts/setup.js` to prepare the workspace for building -3. Run `sh scrits/build.sh` to build the app +
+[![Build Status][github-actions-status]][github-actions-url] +[![Github Tag][github-tag-image]][github-tag-url] +[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/Fjy3vfgy5q) -## Context +[![OpenCollective](https://opencollective.com/electron-react-boilerplate-594/backers/badge.svg)](#backers) +[![OpenCollective](https://opencollective.com/electron-react-boilerplate-594/sponsors/badge.svg)](#sponsors) +[![StackOverflow][stackoverflow-img]][stackoverflow-url] -The main seems to be that `electron-builder` isn't correctly resolving node packages in a monorepo environment with yarn workspaces. +
-While electron build still succeeds, the app throws a fatal runtime error `Module x not found` when opened. +## Install -This is because the dependencies from other packages (e.g. `@flowser/backend`) weren't included in the electron build artifact. +Clone the repo and install dependencies: -## Solution - -To solve this problem, we've created a merged `package.json` file, that combines dependencies from all other packages (currently `@flowser/backend` and `@flowser/frontend`) -along with the `src/package.json` file, which acts as a template. - -Then we need to install those packages to the `app/node_modules` directory without "hoisting" them to the project root - https://classic.yarnpkg.com/blog/2018/02/15/nohoist. - -Electron builder should now correctly resolve those packages and include them in the build artifact. - -## Related - -- https://spectrum.chat/theia/general/monorepo-with-both-lerna-yarn-workspaces-and-electron-builder~663b407c-f857-4916-b2a4-f63b5c360460 - -## Known issues - -### Sqlite3 not unpacked -For some reason electron-builder doesn't automatically unpack sqlite3 bindings, -so we are enforcing that manually by providing `asarUnpack` config. - -Possible related issues: -- https://github.com/electron/electron-packager/issues/21 +```bash +git clone --depth 1 --branch main https://github.com/electron-react-boilerplate/electron-react-boilerplate.git your-project-name +cd your-project-name +npm install +``` + +**Having issues installing? See our [debugging guide](https://github.com/electron-react-boilerplate/electron-react-boilerplate/issues/400)** + +## Starting Development + +Start the app in the `dev` environment: + +```bash +npm start +``` + +## Packaging for Production + +To package apps for the local platform: + +```bash +npm run package +``` + +## Docs + +See our [docs and guides here](https://electron-react-boilerplate.js.org/docs/installation) + +## Community + +Join our Discord: https://discord.gg/Fjy3vfgy5q + +## Sponsors + + + + + +## Donations + +**Donations will ensure the following:** + +- 🔨 Long term maintenance of the project +- 🛣 Progress on the [roadmap](https://electron-react-boilerplate.js.org/docs/roadmap) +- 🐛 Quick responses to bug reports and help requests + +## Backers + +Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/electron-react-boilerplate-594#backer)] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Sponsors + +Become a sponsor and get your logo on our README on Github with a link to your site. [[Become a sponsor](https://opencollective.com/electron-react-boilerplate-594-594#sponsor)] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Maintainers + +- [Amila Welihinda](https://github.com/amilajack) +- [John Tran](https://github.com/jooohhn) +- [C. T. Lin](https://github.com/chentsulin) +- [Jhen-Jie Hong](https://github.com/jhen0409) + +## License + +MIT © [Electron React Boilerplate](https://github.com/electron-react-boilerplate) + +[github-actions-status]: https://github.com/electron-react-boilerplate/electron-react-boilerplate/workflows/Test/badge.svg +[github-actions-url]: https://github.com/electron-react-boilerplate/electron-react-boilerplate/actions +[github-tag-image]: https://img.shields.io/github/tag/electron-react-boilerplate/electron-react-boilerplate.svg?label=version +[github-tag-url]: https://github.com/electron-react-boilerplate/electron-react-boilerplate/releases/latest +[stackoverflow-img]: https://img.shields.io/badge/stackoverflow-electron_react_boilerplate-blue.svg +[stackoverflow-url]: https://stackoverflow.com/questions/tagged/electron-react-boilerplate diff --git a/apps/electron/assets/assets.d.ts b/apps/electron/assets/assets.d.ts new file mode 100644 index 000000000..251085e97 --- /dev/null +++ b/apps/electron/assets/assets.d.ts @@ -0,0 +1,35 @@ +type Styles = Record; + +declare module '*.svg' { + import React = require('react'); + + export const ReactComponent: React.FC>; + + const content: string; + export default content; +} + +declare module '*.png' { + const content: string; + export default content; +} + +declare module '*.jpg' { + const content: string; + export default content; +} + +declare module '*.scss' { + const content: Styles; + export default content; +} + +declare module '*.sass' { + const content: Styles; + export default content; +} + +declare module '*.css' { + const content: Styles; + export default content; +} diff --git a/apps/electron/buildResources/entitlements.mac.plist b/apps/electron/assets/entitlements.mac.plist similarity index 100% rename from apps/electron/buildResources/entitlements.mac.plist rename to apps/electron/assets/entitlements.mac.plist diff --git a/apps/electron/assets/icon.icns b/apps/electron/assets/icon.icns new file mode 100644 index 0000000000000000000000000000000000000000..c2213ce890a3d807acf6eaebc03b783ea246ecfa GIT binary patch literal 111909 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%0DnZe&`x56GYq2ef!@%dNjOv(emfk>^ZaJ zgZa(r-{SJ#ldwGZP~*?Pkv59U>e`Rqe%qy!hFfM6I-N$vKQn*c`~A;nsm5?Q?WHgN zT+_4u4f(6Zb6}}0s6rcCW;FR8{O}ExS)xeE$Zf?d)fFpt`c(qpxRBO!F|_&P;h|+; zInn{vH7#pNEmyRt@^mK8OXz>Uf z0GAi+e@rEcV2yriqDo(jXhjJo`3^PDaGJ^suK_NwOwr*5S?D8 z;Ig{x^Opg}7k|-~24J8q?n>8bxKH1#)$!ssjCY$TjkavDn&*kkC0Zazue=ye^V0fH%}lu}bB|pF$Q~OHOZpaE(s9Bm~XFd8kvv4Ks-W}Phz;X(stsi{h!$lbx z&q_2W^W%sQ@y1zpe_4l7JqpWnK0Jz$24MN!vzAd<*08Gg>Wiv+S3qwAEa%TFksJ#l z24NJIrIR1RiY@_T_m{!h%or^58%!!Ht za8zKKe@lW@yyl6jG)8ZRU+R)b+88X;b3Qtr@~4`V_Z=7-tTv>B$y$6$G;cH^@&HfVrW-vgy<=gz`9mDd6wF(kC3olyQLz)YnQ?|nTVfZ2EcVDW>az)Wf%%-i!t1flqEfVq75{9@fh zYKSQr1!ht+L(})KV|4(#e;xzowVlWv*{z&s%Z-Hh&ays~5H^x3nghj+f_z8_6PQ*HoYhD9|!2FyRd?~lJ2 z1LpWYM8_$>e9!)OR|7D=_{ov`#(+5*Mg9Cy3~^>p-#!Y=#iM?!r0@Jz=$j`BpndEa z3!eMt`w#zBr1miB+^5EwbK zLYFWa?Dh@C^?$)RmXN-hjN#Mo*PtRrS|F#Oz z=+BqH;``6f$jFRuGDM-*e#}+%9gi#cUBx2=PYlxhkl*P$(y?DxF+Wy7G!*pYRJc^3FaGKDbqamaPp7X@=*>S}{sLw7 zlJ?)5W{hG4(+d4v|N5!z`4tR^C^T{VPZJ2-&^N$nh(b$$T7|FRCzat4jVwP+o~yV} z8J|(;=ZAlaKqL6*9YCyP2>ld+uHXfVI12rJr~bP{Blxqwjj~rVfZzAOb;1?g0}uu5 z75ZOp`)?Vp;=RAQMy_O_FZ^eTAi~PS;qb^3Z(=T?EH}j z$a^PV&mMkH@?HJ0IzY+YQ~wXSQibug=Y9ZQKnt(p&s!#ak6g)+p!;A9ey)>hMDdAl zW)lC6T*(l1d)pysrfcr=Q3pD_4p{F{2Iap$(An{SXx|9IRNp-pw^;871pXm%U;v-v ze#yAj>^gb=;@1~W?taC~{|X{6euP@dpd`gj`|Sf-j?@0*P9^f@N0~#?52XH>C}Y&u zvOtKywdcCe*M64NDSrDLtMZDk{cjbzCGglIwhr&SC!T$N&6XWIH@&v{g{S6w+d6|m zUq4Ee+pKcm>Nnq98$^j~-+J@q`PR0^_C08-%fGC>?-hL6;V-$j)amzl1EH`SnG*8* zyna{p-}fAxiSe5Gt;i>DN0aO|HGOOGA5eUi#~bPH>h1IPPVVdN>IMg5!|fB){`C*H zuX{AK8BK1v{Eqv{R~9a$9loxv-rkQZ6~tn+R2Z1dy$#y-eB$z1^(+pd3UaZR1)J#@DhZ(IEO{)5Hd za97W0mfrdEd&53^dsAI?RYgT*Rb6A7%^U8WH@~l2?n(igh_`O{&UJGB9S9w*`9Vbw?s{S3;l><0ty&FM1u_ z*t2KTqc1*U@v&Xfld=b7_01uLnrFyZj|@z46qc zFBiOmrY>8sU@^MI7KXgxo<3h)wxl;WO+mBMG!=XonN{xI-Y{f|I8>?gpIiOp%V^pY zPc2`&zB16&6%Kdzx+_c≷k#?Is6AKs(HK(~U}ygCrOrqM{qJb_E(ux@}l*7Qd7Dq%62pz(L( zqChAR@?}6a{a9&Mqs!zS%?E>EG#_L%y262Auok;#&Rm32W}z_Vy}>{zn8QMti+!}b z7#PgZkI}F@YBM=O+$giz3ZXkn>)3%RMdU2LP#_q{!4Ko~1t>*zdvORkLjFLch!L%$ zT&#w1deNMdmtz6tQnFitS1fF|8i62MGQoJV12ZcyV{(E)f5`O*)HQYHd^p2|Jg7Mo z@ORaKug?Ze;E*OkgiWC>qD(yQhFnoHn_VV|J2HsI?2@Y5>XHmScs)m}Xw#<%dZsMw z4}>~V9scD!lyWC}7Uu+l{zyB7?ASp#gz$SHrQ4K<>v-6$pDrk63{4frC>u#qZ{GEM|t77F@GU>6m%b&AO(8tUiUVS809 z4=n6y&eTgvhsQ~LQ^c%S*xK|~A(n^3MG@H_n~C2@Na=#$TqvMD=nHs^EYFWg94ASF z!^YcT_Lyig3i;tko~gZezNY|YXRFa>h?jU*J7>5iXbO0|^p2n}XhU;was-Wwy}u1y9)(_WHUI7DJIcu3w!3zYc+|cYa9(iZYWdlfWEQ{;~}z% z&JX$gfkM0;C5BOABFaLYP=wV!Dxyt{k+@pFRk8!OBr{*!)7Mq01jQNc(0vAhjxW0f2R*_dR~S9bSCdgkh( z=^XGe*1%O-c^JUJ%gT=vn9P75kd>iFw=VdO5ZVh<@ZKxc@ z_)&5UMz^{A-cShzNjBaFEteqi1tALr%(Fk!_@qRVd( zp&g(}B(4Dv0~8im+PMU4z#A+_Ywm*@XQS4DH&jdVwrdR-C$fbhGc>p?B}0|<7JqjS z^o>=DSHkfkGVcHs0EV^2>}a1jcq^C8lXIcgRx}Akdr?v}M)yLk16h=vgJc-W2_lz2 zT4`VkX9poh(B9M4zyWmV;h>?w=Ml`%qE^YVdnP)eyp`2(9qGfzJr%PH_-) zEYLnz?^LinBfh4}d^1GFDF-vTnoQmbOcjBXSdJ_WdHfyd9td%X!f2x1?+L&WNkwLb zZ!+{0C-`bAWPg{nHvtTT5Jb27WY4W$pFbE1cZ1mqrfW~cXR9wXK}dkU#t1H;G43g_ z!%mxhUZ3k;7!Gh?2nx`6ygsL%ky!`umxVj^0?TLB1|nbtcLm+nmKtxkr_p3KLi>WP zmXVoTSYFd4d%)h2dy~4nZDl5*LNDs=qvG4yc-imqThO2vC2T+i0Z*WrvW>F7Nv~)5 zg7#o?lh+n@E|wUcY@BTqJ;!F#4s#=k*vU#?Cq+ z6qIL*{k^WaMuufG!+BtDh-`5r>=K2L7^@e#%#hqQu}uDB*Qv_PGNslnh+$+|5jVuOka2P(ogr zHkk!!Yq}z>oah{#Ph&(rJ8TP0@)pB??wHN&pKd2Gl-c4NVF9Ev&_; z93tlEjP`C{4h7Q<@L>{JqCDvG&qWnbMinZ9GRg_o3S}g~yq5!p3*+R+vF30g%hp9A zbqvh239O;0s;bz?Di)8)uUKOdhrq*>#V0{jD_a>3{f`Hp!kNyVyXQLWu zokE4b6Zo?>j~)Ut753w}twcm6vz4%}2?Yw_gtmiE6nLrt zYQylZQSK0H>-M*zX~6vs)Z};jb9Jl@#!5Vdr*uL5t_;&uvOrh)7%=6l7*MhpuCXU< z4MvB0+U-ITS88_#WjMzPgD(*@h|CMy1(43h#IvNu>-Kek8csp2KDRHEa4OgzNn zdc2+B=1Gc0ZBRr8!O(VvHEnIC6s-bDI>BhHf_P=c@{zoufGZef=4?VdXt}$I7M0mE zmTvQlkj=p)(4^#Yd*yLHl+f;VdEvMv?O?2I4CAOK++31kmy|>TUK6m66_|oZz!{7U zK%6j`8F2zVH)w=W=t zoHFfX5;(GM0HjA!9BNkKr6RG`6pgLwfaNa)x)8%SfL;|a+PawY=H zsi?{4@@4Dnqb!N0YGuZ>g7#76VK6di7+o=(sHY z=BSN};i)>8opZ4<&T?gp+vp^U)@68IzE%|HM#+CfrCz7M1Q-KnJ986DRN5IhA7`C-LVD-fU{0Y$J@jRWa6zftX&hbfk( z9G}Bqp#}f6BKD1BV>?Y#ycyvB(!?M+WIXpfRY~Wc1lE5Vm_Bj{h zt|U1(8%tVi6!o_OqeNO;?00(0(cLg{YLVo1`s#Hy$_~QcKsI#ng-)NR5rS4*!&Vp@ z&NkY`B~r$+y1H`kL0h>L2CgKal~8%IQKo^lw#ETR0f4ntVO{BScyrK0ZWJ#emD}ZM zbBszpjVQPJ0zO})g_2z1YLX}OBiYITh~mLr9>svD6Bwz%>8O{W?Z`r(2vcDqqb+wU zE^z2dJC&eo@H)LB(m=a(p#NugyKNk4ACsHt2!Ju*4VtrHg{nl<%P>%#iebl1Vg+j? z;Ez}#z=1Zx45^?eMN~QAP85Z)gG!(~JTBJ^BmnMhMDZOSryJtM70y;B1{&9A^-c)p zmPNqU05^X|xKL45Cl>|h$+^iqSr+#Ae4cPQs2k&exkd(T(uplC{FvYlDv=NzF1Ph( zs2oQ2WK;(Yp09BMdzqO=cffw3*AvWW=xT=X0xH(v<(VKmoue9qiUAmGqM$vR+entB z3AVHo&JeH;+C{}_Gd)gkn;#|IgK~WiU$xdvIp~{M5*9*UZ>Xch5h~TdD1q2ie=W%c z*jqWWCZuo#n-@5iI~kJT3Y#hg2<33lZYn`j3SC!@eg+foU!jqmo(>2GP{f3Q!eWQd z)5IFRzM6t8Jsk5UiX)j6=Vxz$_6P*L-asG&TAj%9iiVP!QoRn2ODIAn!Qsv(=rjr4 z2d9nZpy^h(%WcrXB@ZqTb{fH33>1;&cbhZHYir7~MY7q>G6D8Rjw znSvP=V*hB-R36G9SU1dYal8?XRHJN3fT(23QA)5bsIrYrq_j0&ho=PH>POLcqx)rN zv_r46kFtwrbQKZMM43qjhBQeuc?9TBCK|$cWj@{{!u|lq$W%NW7m+Kpqa9<18Z)xX z=~kov2kW4}M4@Jn!wXfmlOD=S1Iy}2nGTr5LDY=1jq)-vlwN>S5e_DnXs_0SW_o~D zsinu^?wo+`hSkq)DAVh3w-SVt^nwB~L`|ef2dFTLzvf^SR0hVr-Uv*rbS%+UqlH8d za2f=zGRb5pFYxH7 z(2UBF45v5By>?Fvin=X?Vs3>ID?4NKz{O2EsW@6&8ZOlO=s2R@XHY5@OVL>zaEOE3 z0bsIrK~*5W1kR(l93BbX97aiSE>~&TN;MqGaKXd^lH`X=wJ@!@=y7DLM*>kOI!7Sg zFp0*ItTR^&lZOkalSp;3*Wr?HKvQAMV8S%SdmM0?igLEY4Hu$7%UA+6I?yqhPNAqa zH(b0z=Zi470fm)R1Ly=4;~{NC@|Z-~Xv&lXkZA&nZ*@Do)f!0hlJQEYuB(moQ^_#Q zTfGLVNYv3jrM86*CC11Dp)Mc{D6&hw4NZd0l>`XqpQoW5q?bt2QXMY4yAegl_o9^O@#D~4R(P+6<27Dj z7E82v4QfCDIBCOI)=L_hO45>*zGj0)LqN~LsT#@M0J`ggjv>^Q9=pTw02;plC8r>x z+iv$1rW0`d2BtZRU^~3ITD7cA(x`RDs+K}R3v<#`iqIIEy-nGSRt=ZP&_%u$h(jX% za2<_~P-OuNcL8i0%tzxIV&dRLk&EFp!j4sIg^}>ej__=PMOuf)iyq2BB|4wYC7$9 zYim^|sU~35PNaYppI_T9cfuJksI4C;lL;-^3PRZbipDKbDyenafh(aUY|vgQBnfqc zgLOK!hNOJtIEsQxb>NJZMy-Vwa_SN_wQifuWkkt~VFv(3C81n+ch_jNPMwE{hO-H> zE}9@=n8my{9H-6XA6rvYK?Hizx6C>h-xwH!@|x*cfm>2v~Z zBc;+=wGn95Xoy3L!0!n2_I|G(hbxFH^X-O&t$PJ50@0}*E{;ok(ECfx!jsBEr|KR|l)6KK+{@es;Atr~LM z-PIJZ^lBHwS*}Ssok~~kasX)))Eq^}twNK;1Zc(B0;k<-b$4W{)VeU#Ev%iWQ>PnS z-8QSuRX!Q6EQx&@O^%*|;^Givb6BkoR}}{b#GVG8nlxsvL;2(|qS$y8_bi$MF5B1y z^t%R^&1!X8iz%RdLOTWIB=S4qo6XhwHxwU-rbMp>rU@u9%kH$o*Ny@*U9HnSqMfXR z(senlE)dG$D4GHiu2Hxq#GyYnxS%Y%tD~4rPtz>ZPST{M(*;Mtz3Kxx4>(tn^H)_lozueO$VPk2}HLN(@C0>GV;pn+wHE=bi32pYPk(X!Q2=1F1q!%5S*A0g<>BnZFhn~ zD!Y8Z!RfHc9oDv+I)I;Z>=hE6&W^chNsu*RGa4V42!Se-)g`U)8K~tbIC}>J2tf^| z%Cc3VwzroNH-q;b4(Oqn%`nnql9Z6J#J@;$TRI(1*@5h`Ee4v)Cfg@E0M_KzO4C1- z%Om2FW4EI?xIrK;Io^tHiu=tReO_flb8AOOXJ`vB`tBdj@bAl_y8NKK%0~h3(_0RxI5==<|DIh3cD|gAaTZ>O z&%F2h{!QSv|K#;o;j*kuG->tjy@SI;$4IKGhcmf-L`LN=s1ub9UdASbPmN14h{_;m5+@-K0I__M;PPqRS3i1 z^dU-yVDob$d2G?9gTwN%Rt*s}^w`m%y>QdYB?$F9xgP!O3}lC^ch(*lIyO9bWbpXeGXtBR2{#s+;mRG@OZyqD zNd!}Vec;It4xc`E0{9Of9X_}op)(gSJ_IiP;ll?Y#C*;E;iE%G29BORv+repnR088 zWU_cOZnc2RfMum(_j9{Wojo>iWN3K!;9D49_}7KcUq?4X*$`*ayLb5L;E^LI&i23R z&Se?VWU)lxmVp~hBEw`^S06ZYa&Ta9c=!N>gF{K@UqMqLh-Dbv^~vDTp@D%DXFgqA z$}y4*&c-18lg*P1EK}IK<@CuT1A|8gw>MWFkuf;*p;QQkKR5(p9zVS~m_g}H;F`SN zp%2G3Mat;haPq{!z|ioaH!=PK+UW%}6@UFzKSEmuA?xs&Z2==S=7;*$rLVZt47A?y z(V3(DM}~&BOTRvh@kQ|IL$LT4`xfpS9_;Twb$GFvl;HgTzxnh{21@MOd*(?0k>P`I zdTKL-bfZZy7|!9B`iGD751o3wgw!j})9Zo(6zBXTqe$jHe*%geKJqr4QotCz`d9E# zj6WD08aRC7fDew#|A<%L1Pg>+r}|;QZ$|jti zhEi;^FXD|uhYua!UPu`f@2?VL@jb`Bfw62jdFb%aR@gyLejOb9HuFKe{z(79qdN;I z!;d=lCC2j6@k9NCAELuc%Dv#&uRC}Wuk7zXG_p)vE7x>_S6=b%N1K)VIHMt;28FI@Eu72}A|gfP=s0Pfzbb+m9SNbj+cJbGAyD07P^cjU1CXw`ML}2CO$*zH#xx zWx=dW$FP$5J0HJ+sE4W_*)5>YZYux-_aA5%dgsWYgD0126n~uJk~d0B%Uc7-j~^S@ zxNI&9$BY#hzeR+r1v^K5KXVc=Co8Kx;Gl^IIgQ=7ph)C*EGrSyLlF+J8)@VeBiM6+b^GZ5}!}u*Zz>UBBo-<9>@Spf{j3 zk6N|jm_J^Y5)9PyCn^Y|$!7kgfnhs$p6ul$i`l~FKQ;W-p-0Mj8usuQ()_}?4$3&@ z=$D0YdZK3F@S%YZ&|35h@br)SHO4Lb`wyIWUZ?-g({H3(&e;jG;_07eHZkJT&(>!N z2F|nl!tqrF(5^}a{y%$f9o9zr{eKVcg}PIBm))(RaSsVj71~mRdP^0rE7YN-rLIt; zUZ_!u6%Qc^E4cZ4g0lSY0MW{Ou`wN(F*^ z*y)RyK*YZravDi2%q#xT8S&S1qMpwNvP>QGUqIbcR#|w2<>=ZG^LJ*vJx_&!jCtq> zkqUZDDZd~M8HDN|L5ws8Vjc?fO7@T;wt_|dvA{1q4o<2g?C;7rQYOwXJIHiXhy8V& zX~*9%AU@m?_qV66D-a6vBN4PO7WX$mB9Ko7c_nXH*pejFBa~!2jIN7cJ>x`H(}~l-m*g z$Aa~=C#AX2DQ_V<5dPOjk*QfCe(6Cn_iOmyiLpK31NQg_J9c-W`uAa zSQ`pTOMMy8I(HzwPfFA^@IUfu81@{n?0bz9wC;~n z^9$}EC>2nE`^cMoUReaF3aCT&zV^Kx>{b=7!*Shro{9dLm0w<2QBYD^Q|nvfU){U1 zqJ&qRbu+|gDF@`+p>XE;RV-k|I(YyN@n~7D=rdxg<^lSri*k!#|9>YBFcSy@I+quA z{7rUgb!}};RbhU9iGY`x_T@`jW;S0`R8~<{Q&CY_S&|)ldCy`d&5nD1v0Z2J+HhY= zUFj>(&Za;I*{dQBw(#>rX)ahqOHBm)?7*e5)`aJk)<~+$1SzlYoXae#yuQeNA?%!W zTexJ|>W#Y&oV)chwNO-1Q(Ik@`RKqByAyyHs)+zUh(EC37xG1+2!!qppiLtSc*T#Y z5VOLH2P%MOw<{)JQkI|g`0Q>^7kgYlNqGXqEw}?Q2_RVQVA$Ee&JVepASkP@6=%g< zX45zh(BK_l0Ecw7gqMFGDaF8mD{w2tD?LfzbbtY%>$x*lTwfZSkn9Hg-B|W^o`TZC zjZ7FQ0ZzS`E6YRX(-#NcNGPbTDSUsxiNbME6$_ya4l$^hm;VXD9Yl0f@^cHfkvJF@ zFc5-~T=KF9VoBz;t&||48%+DK^Ycl0#YLLa5r^K+wDZM5LF-5q$Ms>K%W5kV4{%_! zC>HPZ2Zn*NQjjN1AAz9(`Y7^qhER~Rl!gWH`*S(eAig9mbP<)oSW~i%?r85w3n(i| zbObV>FUWALE-0@kf8t`tB5n`7lUrN$b_79KR6gN38sU@X5>5j+j``W!I7m7r6*XfQ<+v&9B;hD81 zkq&fw=+G)OfcBy&S9lC_*APWch@mfF0?2NlyMHq!#L;8i~ly zDY-_n>!1U;|(wcxJGlLb>bFm14nlEHX%|JZ%WxyV;2jqp+KU-BNy`0B%_mARz7t;ROS(J)L#BtY9lP zDXSm>JLoGpqF0CuSXqTU73CD~!>sIO>m=m3(zzHSz(|N9c<@Rx7qPLstO1PO@kQn3 z#mW0XQwz3>(@s^xW1q;E=Cl|lBYk@g(YHvripo_%0(Qi01w2taG89UmgT#q=g}VuM zDo6nKF4qK+>{XC}J^37;cD}s)EXBc}YvMpZ2@fobIu5km<@rLtd>x^%>M+#-XaOph9Z=>?cTmv+_Jl){bJ%zZVCjL52%j%VF@&M7 zizEnnBIq<~T!8lR0f`HtYp77>>wJF2dC*x2;A(y-6$a$%h>FtP>|l`V*@MtY+I@;M z#+~VMsLup$4465BSh^JVoLoU_ZwNJg7V?DHUSy0J&}Jq_5V^rXl)i|oP66{K{7V$G4aqMU;5cnEw!P|OY= zeF4YC=m9-0>3Dfg{xe!2N88TfbFnZ$q$4cIT7(e_dJwR;%ZMa$RRjTt_~@CcD?z!W zRe3yNq9$~M8OSqXc3}W)!Nvmpx@^j_Y!3?5e}J7K>y7whP{}$_6@YQ3V^7&zArSgO z>3Nl>;SvuQaUCx4$`>{`5yaMJeF?$CIKV&x7Ga|(NB9vjfQgEU+!1CMAH~5AZxu*j zhYw3+FyH}z3h`PFZB<@*BrZ9I4Bg3?Lyr&_3i9#<`IYxs{t!cldm>#fbz?Dj5X{!) zkhTdItHb@k6R_~R3$sP9kx?)VHz47{tm1Gygcwyk0V(Pg=;J%CUP@(fiN{Oxw^|2P ztfj#uG#CWi4t{|JrIM^un0gx|N&rDC_{rvEo&&XF0Dah$gh*_*P%#B8+~J}u;e7-L zMz$eGgjt36h!E1kLg;-#Pv*`WhoDpe@2(Sr9wUy2qEeocxj}XVAh$}$N&kgpJIn%; z;^;`hw17zW-%+8WbnR>|rNDESFPH$ffQ7$MlqI@=cmP{)2-(2T5yfI`fj?$|7!ofm z6bP%HP!^_FL=f#szT!;~$g&&ARRvz)=>^JXEWDYVbQ5wQaEO6Ih*x75HnvSj&Qc2G zCJ12qLrjbmU63U_glq*8APKPqt%p=+D*OREjoxfF;Y|@QFOOfcdSh{+4;h4e-hH42 z+aYj&hd={#=dheUiu3cu9~_w+ntT3s5(n@Q;zL%f4FFozyo0WR<=LST?GQ^Hh& zKup}Cr%xR_O&Guh3mi|If;@n+Fc5hGZ4qqC3R0Qq!-y;7PS# zU_g9)AcuUXgf9^AOYTE!5Fb1zfg(1ZeeCT)65TFP6{o~)5oHS!4kG$wUk$lU*>+;ycsTIfOQ$f(1=_a~D-~e*KAzmuWg;m(HtDx&Z2u)*=i4MUJ!d&n$ z7r>YGnYJgP*F<5&sG%#eB`-(#4rGlwpab%OG+}NOXSqOhC18^ql|Z%KU$vgh!Jq@` z+JXW;KfiDt6^h-=U*vxH%CUubI;R6VV2~f@X9*7@EPxKYkcnx0UhWEzyzVHM=(yIM zhTmM6waPp6>eUll7ZM*OfttlZzz!$@ypj@L5QzaYfm?+U`!{p&Ky_fQ8bOGU;tC~Y za}ZCMWKEFQf~+DC`S0Kk*mN?LLkzC?$R>hzz5lsuXU;cP;aH9GV6|_02 z1R`^>XK1+(krN0V1@tz67Ij$RXz$|TwRW|K3zL#^jL7K#5SaMug_*)z$aug7h>&g~ zhnKyS1Y`nMXfHM)tTvJe{ShAaSTqVQIu}3~e^x&z4=%D!PAeBVyE=1ObSe!L6F-LG z;Pip40DOSrki^gCZ$T`fR3}a3eO_kaVH=3Usvrb5F|r2kP=JZEV{p@7P(YxarB7Rc z=`I4o;mg(q{f{@1w(JfT0h6K1;wSe-2*4stLCy#>g|9nV1UB(%%|Sd|XjB*YRi)v0 zyC7g2=&s8kCj~_Eby&og*KqLneT*Q0EkKJYQ+OL0dKfX723z}i*@AUA_yYh5EJ9>; z5CQxLAi<8{UloAoVAD3;aSdGBg0XU5U9n}WfCS>w?3|ojPh>hgtXr7DJfB%`3sf>x zKmrRNULA;M?`3vpG zCm>t+*}NQg(7?io1YH&`q%e0G0RZX4k5JW@Y#~sj!V*}xfa(y?^?77*d8m)j9qt%*F?PhVUs##V0UrgDd@T zU=rY9tF`Y$2MAOa2BuIJ2zTR{DnNmOy9pwZ$)k{704VfF1|l1Cvoj0!*)aFg0x@#O zKJzumm%>b80`e)8qo*jrrO_N53#LzfI%wEm{=%d|=K@B7VY^k3m6dl8=?{#8fdTSV zkjYDPBQR8q0uy(*%Fmh=0P%n5{S=#3w}VJ@+{)yv9e5%OuD!l=JqFvxyEMR-siG9f z?09|##B#I@Lt*X2v?oGH=Vgc<5)T4}G>k@lUa-;{^jx4UCY@mIcH#bV8@Q|!7#9nl zuEgW07z9MMS}uqt!Z^if1l!2`j2xaj(g#R@UdVAlW@f=*D+YiHeP9+NJABCBO|-!i z2)5Sbm6u=cCxiM8-2gQ9J)h@4-ND8C+8E&2hl^f71JKo^0>gTjC@WKN72?{kxk@8U zM<02amzkaGZ9~V@M|&{HoZBVuj&EA!?R()>>~XFQ9USQaIS2^r9_D5~zjW$cbXGw) zouXzH==h}>yo}tBy%58m7^`50SbgDT@ROXOPhzYBgMwdsBOxs{@%7~`bZaUTSOq2n zk8=&Y6_@bo*~!JWREC;WATi?v8QIxxNKarDdLll#S?Pk83_xXoRWPB`@zxZsqaDc_ z2VHMJ-I&QB+uDEt1pt2l>_8>n6QyV6oj}Y~5@wp+kO)C$y67%}LJI_70mc%> zH-L0Z2e1$Ts;+?GP^omRgg~kZjb?ixKO<8RjTmY5(8iz#9X%vQkeQKx1xEp>VIM{~ zT*2rD8qF#+KO=+xt~X*B0gJZC!1s9>83h+@$uz(lZUf$6M59_A6=i1RCe1=jfM75| zW+&!mWaMAQlW1KC2I~;`3@@FHm|jB6G{%FfDn14K*i8zaPN5v?L>Op9d{{nw5MnK6 z$Y?D<7_=rKrU*4P7o2+vE%Y0NfsUi!2LE`O%ivSpFoZ$Z6kg$y_!;TKcuz|;!r%`K z0nKW`D^W&fZu$cFyZ&kj;|w+gFXn#8%S`8I2iOv69Sj4FY`yi1AOl7lIE!cj!!X7W zG+#%&fDdMiZg8z>v`&VBW=#(l@X}!j%z~mcjc0^f^rpk&?+bHoTF12i5Wy)?1!ao+GjJ2pr7`J|hT6^Tka zPw7FUk*uv955E`Xrl)7;#VO@@Ev>9^ zc!D2sFoA%xwz9M$*ewsd`XN^YpUTMLf4L4R>cFJV8)U8~qHnB)3_tuK2eY1@BM|XE z$6PwJW6ct0SlVQ=xz3AMZ#!`D(We}t5VMh;%S$*t8PNnT33!H|EfK^3_#nOI_mX-1 zoQyOmK2InT$o z?U$yNo|%>Hm(wphD>EI|4bwBTdHn38=sn{AH!y+qUF}3@bM0O2~nmW3=dIo-mx(0f>x;ol_Mm9hm!$Mwl8;}ic zH9Ub-S_@=DK2KPn60zwZ8(NAoQgd^V9u;+Helw5`k@?paz9_8`SJz4XXEvj>b%^=<${Kl7b8DMY8PwKOscdU)Zc@}#rPz)NhER49 zgux5ChQwc^@RuXGTU29O6%SsW_9psz!GAr8e71AV^foyDt)jb?|Ggwx-5r-&UQ*>dz3O_e0-+retrRAd>5vT3f&h zh;}IQo}Jz431JjiUGZb}=QuC-34NT?00;<_+|t@C$wZJE5Gawtn2<>&@a2zn&0tjl z9@M@K@p6WZOQ1ct0P>;vFBq^85*)fXa+plVRYzZfpk$k(v8AQC9+c}Kb<;D*+13-j zcBKXiP&6u0`Nt#fEC39Afn?|nsSWL!%*FfONYM5sMH5(l3Tcph(I?oqDv&8fjqoLf z5-q*97Np=IMym!HdcrG5Cd>0eKHA=>fPzbdw^wzL3{bmor7g`0c^fJ^xq!}faqB8g z&=ceoTg*y2i9AM_+NOgauY?U>(DAGZZQw1`B#v}-4H#I9{sN@8b{ih%U zhaOyx$`wsb1qcd#0YC;6{eU6`aEb~vZ57oCBBy^WPvA^j@&TMxG?z|7K33KP$bh2p zC{og*XlQDW;;{Z4WMEusZD~-nRC*$xDQh8GzBD=lqG=L1g5)^$RS2VO#ul*Hd@N)*e`QLL4PRu0* zZBn@+5v}%K4;;fLq#X^dS2Q%reJI~>46yOU@hiuGfEb4+P(1#s4fekF`cCwf)h$wm z?2a#r>;#Ho*PNF%NLf=ugYpmwWJ$kL3@pZ?^;_00wu4=+T_^_FOiI^cIdr8MDBBwq z(#C2C;}2N}6oU;?jbt`8)T1{^SWpq87+f3}dy?f!Wotv;&2=n0H#ZfDoqbz}rtW0gF9>ka zb6vn?c}4Qt{88=ZH=c|x3G@|u)y&;zbU=vigS7=~Ygn_cP zQP$ANN0O1@fG`-30hvsRT!Ox)bVV2#zUY3+0u{pG=EAhUg{CaFb7mi_M4KP4V8E28 zMi|J^(q$kn@D*WjAl`!NXt;r*hJ65G=!+yEg2sA96|ASjLR|;Kz|2mA*t;5Gp!w8D zwz$N$qoQ4Od$&%6fzFGgc0m}}j>6{p#!|!^RZ;c8TwH08Nzk)I&}8pG7@Sxel)elM zVF1YjH^6f0^HKDr8_TVeU|?>MuIfTCIFN$d>Kha=Q6i>5Fqk4&k^DwUOO86I@9&`J zOukkLF*-HDu#g303#U8!9iI=eOoZG3&B83 ze@ppFFwjr6wab(t^sfX1<$N-|3&B9yq-bc6KSt1j7{OqOL_sx5TGOztcbx=-Q`LE@ zi<)3ygelRQ&6m*Av<`xSy-wiPK`>xDK`C#P5=99z3o!tM0b=>Vl7{-$AW~O^fxSWw z)u%=nXklo3)p`cwI(nGafiO5{d$GD83|z`aMT1m!4MF?B5|Sp&qREQ7=A2)(0i2kd z72cfy1O22@S+jxR=1hBl?xsW10{|G9@q6e_T>u8^$F@2JABYzWV9-I4pDJZ_%1|Oi zsXFuvoalSxD>?uM+WywIhV2X$!0=wNhNT7=sL%IPy8sMizZQwC&Pxq2bVHH*vU+(r zY}fk=FgVcy8$gyu1u!tS%350YV#tmjC=d%uUAP?p110JZ1)FOi7^?ypa+@TISOm3K z0SwoWTt%JoA+ZaDwJp#6_k_p0cYSYtN+vqFi>tCz{>3a80-lb z+w0`TNMA$?7Gr_mu&b8UH*Uwsh)#fk2B#0H93hpF18jJra3J&AeF)-lO|Y#|4BJiU zB`QqCDu973!m4;Dzt9sh9yM;Z<}CBO6w4FKK?Y6H(z+k**;3OijtSr6VMnE5LQC{(YaylS zS8{<%IIFCcix9G!To_m`s{`rnujGOuh$T_E)z{CbR>5>^)+m>^)>i|aTU=URRoBo6 zx2I;9FlI|t+TEa~3<{fjZAn*dfkRp2E7h*DLr^U>w-6u!X>kY-c5(}Pj$A6!`v!KO zYp$#>OnH8_q6vMpc-i6wZf*+}xqEtT3p{bw7ctlbwiXcNB+ako4FEw_-}SSO2A zaSKr24;8g7A1EE%LO*+Z3Og`fj<(86KSTzuap77YY*pqtFrh8FgEkB7N`t*AY;LkV z{6(G=@*e7mM@e0UR{|vz>(pl z@NGB!;AY3f`yPA_PbZl>$iLDHPKEONTJNv)!mc`rLhzMdVAF4-idzea7`4l``I@!ezdf~FHw&fE=MKAaP z6~UoCLjH7k(3yzG9&Ay5r@}{cAj3t{{j!e>$+fp=V4f!j- zKzQ6%qj=C!8`1Kb)`x_z`~v9;n&3hK9RuJONT+2B?N}agKed_(69w=K3|RV7^9!^+ zt#Us_cgaf1>SZ8?0I5B^lh7JSfYHe>;3L|q<#9+X!~@?WuffPAd?&v^-i0RH(N+8c zePzpD8ue~_`(3gV#xKygn-3lFaipsF1-3_BlT_Bw&bPN)rREo4<6LB`Y!^ljsQCr_ z;g%ZN7sMT`Y(x@eH7&<+92LKiSG|C4kMRq1!5iF)npW`=;1~St2RhIKa+=!Pn?*+% zDu96s*$<8ekyoZmgB(AtRx9DgVM?W3CX=_KcNi*w;RG+g;R}eIcLEG}f29xrMS1cN=zt0_dNEC&JuBN(XuN_m5yT&JM{4aHDW zeR~R*b+COSwF65h`s2~PPqI4m>17cWSQztFy0}w-gLv6!GNbiAZ z6zH&+g?I5C6a)E$QeLCdP13TbZ&U=!wHw-k0P^7II1$jWy>3{-wJ4ucr%DFIFGk4Y*jfPAn`8YI(}qTxg+Q;*ABthfNe`YQ1Q zW>G8_8C63J>O#$7s?tE95*juUIv@tz^Hj)hgFy^jN?f~i15I7-A*H(9izMix+V;fQ ze1;lgAjI(~5DkP76h<3VNu(wHp-@w3xEi?+o~?!$$QvscV|&0ch=IPMR@S^n&0J8o zHa1}Hw(ZB*2wi*fZlx+hjX@0fCw!_JVjy|e)=7&@q1a(amaMwb7uNwX;NouCs38V> z!g;hton?2ElWej!f4!$+>=$c-omLk z226B;_$Gx4TP?jkC=93|rDCVW5p+F84KmP96t}>FmiQv3TF?nHfJ%b+DvqlH8OYGR zIza}u?WvZkhB$-*RsxYQSyj`kE+7Nxd79(lVrlJ57Y3vU$OVw0@Ds)Y4djqq0>i@h zEh4E%1_s&5i44kIT*B*Y3e**7x>(*TwEGohu)W<0h|t*NF;$Og`F9Pz9^=k;K?GI9fxoT8qZC(D3KYpSWQm$Z5Nv^4F3yib&@9BMGM2;|TJ z!8i4%-~WW zlYj}O|2ec6?ru1w&FEnQbhWQA1J;x4>ub<(0<0Pr-oTPz*fDLEBqTUNHVPFlVE|Vz z@Vsm$@*c*-U?ioXs`;4BSC}EaskUBH+q&rm`j&>l41^aoj%t{J^rB57l}cJ6l{p9h zHjxN0gDv}fW+;KCh8ZC5y`oww1ek#ZU8%D9p=}4uK-||Zm(-)_XNu8tb148bFcwOq z@hX^sa8Fqa3$MxtL=G2sp_E0!J05*|!_~GEX0W*gjT(nchx_McNPx6jmc#lLW(X;3 zsEg&SlFA<(^jSc`QEZN*TSx#i^y5%AG%D)q6wNT~IJg~kOIDnYKDXG0&ItmK3}9RI z$HppI7~%vhgAX#TOj297h5$+5)xrz}=M5`pwmX`tyf$5Y@E~m0V#51;Na+A91BZOD zrmd~^Fo8~{F?ToI4cX4IrD5EGnq?rnK}oQxu>s~dau=4tHlVSpUZ{gS$5;j% z~swr{FksBnqKXa+3p zt@GL?E(=`jfpehHS=8JcHowvgjs=oxi9dpeQr$I>-1^F<(^$k-O*7!5&pz16b(Qa@F+S1xzSK5`|_1$AUs4vZSB-F1JS$X z1`cQjT{g|l6BIrCRX77a`H{_6oPqF0A(p*DMgq?8GeWDXt!~(2+krFSqtV0QlnQ6S z9Yhb>s&EFH(|X9=h2ac@lxQ2k8G?b;AS|n{#YW~VcyuRpN0J)Ejn8aVyXyf&u)T#I z!r5UwgY8x2R$K?qz}d!Ofa-z{iOANF2^%EfCk%e z^tg>0Xdt|htpYFtfClC+kXujz4Wjeb?5{wBbCIN~Asm?i)WBc_;n#~B@7Z($4Q$&( z=mpzOpn;N5w+xQ~4FL-&ps0ZX4OB-l5KJ9F1Jn9^Q>CP26f!~uG>k@0Hb5;cBS2{? zu>}@>Bl-Z>0W{DUsWl!1I`g1Aq-9e94Uns>9*8SUZ9xSzI2G1cHrz*s4(SE1^+${a zlFFt>Hl08N#ib@y1vF3?Nz&D{Qyv5r&|q`Cg7XzKAqb4KM5OITJCUfrb0{-j<~jTwoBERMb{B+(iZ&0MO7wRXMT*HPFDa zIg0MLWvhS&iw#-wP&@@1SQiMdhP{9+V2TS2o0vv%UGaFNj|ylQj9pE{jmNAyfdxjN{sZ9)}8Ou#75YQq@2M(|Wh8s#1Cm83aIsp%IcKt*k9u)Cn}$ zoJRLsveiHXn{4Iv{0M<=ySAvx4@ZF9NSNvZ+iH{YkPYw*`#?m3YzIwT51VWu!6yI> zy%Bmvtyun!0D*g;ENIk3g_i{bF6%=Wc*{k1Uazu(u7hXXX--&cYeNBKg2kj-uBwmi z1RAWP8pSoWUPyny1^OTn(#p!FGZtTg1}C0;FTu(dkGHlYc}Jz5AQNCFGhkA!*CZ-F z`P<`stqg4JPB$fW0U9g=<&~AvCrEc~3}|?$Yk;Im#nqC{){rs=fCeUs`@AhDY`fQ{ z{kK!o!tAZ+kX#mk20U)_JBc{)-lc1CRZTZLfd&R{8JwMj-xnk=bil*z2%)UDLQ>$0 z?*JOexb;s2uxs~A)GmeBde;A zrO-(#paH}ea8_h{XAaTQhQ>UA@eCwu2uV|HEeV}G1BLKfUQt0#2m1avjngF);?70kl-0>_UmSLYBAI;#Z!5Zm~F3Q2{P^!ru*4Jc9|mvfgxrdHxx$1+Eikz*{hn@Z>dR6}7c5hJk26C(dAOfVgGW*Ho0( zDDp2YvbKb5M{1nG%F^WwPhMAEUR|H(jp!MJJcD63MBfO}J5dA+VdXXQ@~1mlmX-vt zK>1dl!H?1xeo3^lplymSlGm1(SJjtY1`@~sBN_&n=p&Bk6Y?vAM1wg1E4n7y$fP^P^|fL+8F{_n z*$Hn4f|Z4(wJi?sOEf1C@HW%xNt+=MHzNYZqp-GT?q??h7Y?!2>V}_9pW*!$m z3d(CGpb=1AU0Ep>SHf38F+fsRAxgaJ1=(T{gYKPVgMN1-jBGH(?F@UAkS&0H?xm%$ z?_Zdc7<18&u1aTN(8B=825pRNfb5TY-Fm=-kb!=`akJ)I%%0HS5F;D9o9cfh8-RH- zGV5uoA{%tO_3Un}2WhN;Y%tT((bLm6G%_|eGSt`8)6x0{ZP=trL}m2{iKu>`tl|It z=Ks~ew>6-lp@kiqni`NPT=fz%eSG_o@AeMt{h=vv2_#Iu?*TSc1`LMHb?^>6dFjTT zyEiYN-n-t(Vx+O^51N1M+kfMg>io1u*abypNq?J0N1prmkkeQ|p&-}PA6C!5bpcXX zA&4pdzy~0ButN#_5dcT(e>-yYG$x&(_rhHG&l>_O(Exv1h*@q2Na}Zq&)R{QQq@UG z1hX4f3IFzdyM7hyqJhtuDDt%VGG0@KXb;{Jyhkj3lMl>gBIEd*DH{tpfR zjhpRlXtfiTuI`^6(DT+b{#h!sZ%q6jZy+<7KU}8&p?wVv?fw6v<-7U>Rd4}r&;OAF z062&L>$>lBqP-P;)cqeh0Ey?W|7YgG4M=*~=N~wrpxMp4#92*^0)3GREI* z0u4>wi2tJJb#<;4jrlfJ-(UEm_4hI(b}jz@e%*>*)BAhFPz#b6{i{jmkDX~l5C5%+ zNDE=Nz&*r&f2i_={zbK`|D=gbF8MooEdRNG?Wok||LlVrnr3m|qxLa(+t4h~bo}cY z&_ecpFY}lKmvsL6zEl&TVjBm(*P%q+|GE!q^iBFcjjuic@t_{@+i6 zT0Q?pcKEKP{O_-oXo~so8bE7K-H)k$Yzk^){B~tRQ)knUs(!2o9)Z1!-yGWAqkl~A z$C^!vejM~$`;!WPRP|#GAhqn8=NkedI`-JY*^fHf(Y3nY%)wd)K|ikfRktDCAb#`f zq1`*`$2GsI1DJnfUuO(#Ciqdck9B~upT6k;x|Tm|^kZiUGk_h?s9z5aeU~5C`P2@q zGwjjJ@VK_beN81-$s{@uQ7YwIo{%HHxh zb^s-sJ-_GI-Uly?#$5i9_S?{y$);WH>kjq#fo%_`dUQmW;Rmq9KnDEEco}Bj0DLJoCHvfOfRPb#j+G z->kgh1?6WzlmGhA=sBDDU7khYvg}{PJ^ph9Nr~33w;B6?HNM&Ygy#s6&| zfCtWPxWAbAzO4(xNjUGy|Iz^^+OQixy~~2rxAuPb&UgwQsOSF-f>WY(+X*vG|M;r= zJLB*R4dbc!6~h0j29#*UM#4{Kf8RVfU^1DoAQ1(2_Fo_Eu-3PNFykMbJys(cM&k*b z2Pk~`UmkD@aV~_Z-TukhtD3}clr8l*(BJ>63c&xCOHBNDP#gZohn~3=d0o!Gssg~j zi*`_KhIa{d`~x?%`}{(3xY_hSW6*H&ZBG`E<_`EK)cFq_(Cjt=PuY?QRq#JF0`?`L zFO4vz`)@-1|G)u|{FqDPhQbDj-|e^gKe{Dmz3!qj$zmv$Q2KvAw9F>hk{4eCEDzf9 zZy!pq-Vn8djGx@|?_6>I(mlQYGl`UCHz8H>-)sie$Lb%frV@V{^zTky?U$zUkl94) z((`%H3I0zP)E_9i;z=XU8*cJ{U+w?$)I0yEWioUYk>cd{94Z0U?*D901T+!WPbG2t zT&cvlBmW4p>MZe}{?sxtpJ_{`FFp98R5cX96d3z@sNSi1hdA!|a?m&Vd8p~XZuoC~ z)HLWjelCH`ShzjneNnT@)^Gl4DgAU6(j<}y^C$K<`j2Y<8y|GK4VpL?N20LYyn`=1 zj?XHrlE@ny<@MFY*`J4b$aYPcC4l=V#SFBmP zc8#a|0!KSKnMAa;m^o$u>_h%OwmVA&ZTP-J$4#3x-^vz8P#t(%Ym3>_#}DggX7C?3 zdZ*3b{?yRcGcxVbr~kk~=H`P3_3zWe)JRYJdo=lP4gcmnY`Xn%`)+?@`~SWD|3wX~ zbe}p46zMr|GRCV|Lx-9e?!{K;dM)4Nvu@S8=|i!T?D)xqpPulx&q_~^4RDJJFX4Y} zJ@r$Ssk`@@4eGIvEinvt_gJu;17?QQeY2aqcJ+Wh2w!H(x)1y~d7? z;?-|3Ga4FS|3f{H5r~HEhGk1Od2g6Al(J+aYuSdO4$C%dTRXzhT1`T z6095@ZEZvYg)}u*RwNRu>woA1q?g7Y{#Nr3f2;NT-yTC$i<$W#B!PzH`$=@KY)RPn z=6sZ0@bG=}$JDt0#5lV*+THE;_AL)|dy4GY!KA8veP+gAeH&)^Zo&J=y91tvKFw_E z$$V@cbLDAWzW-3Y(uRq%E-sqZ+wiqh5oOB0IkOz=PYgJ382u)`Z9;e3!tetBPAT%3-9Fm zUR|j5@)y4({V(2a@0TaPe?8mo@uZnqMIPtwhj?7rK6U|b!Uo9`1%D}duKwAENpbv{ zi~ZgtuFPm^aeq3_GM>NLQj6DS=KIS?pBcru^9T07J|y|W)b|ZDYWxQ+rnk5Z-#vYI z#q^(TE(gp<<}MpEa!F)e7`dVwZgFtbYQHdfTg;9zYlJgbdp_bBCB68mWo1w0l*<`~ z=NHY=PipAz=0aTTuNAy2>DHxz@8e4ESj|1Rp~WwVdD2Js%jcTRxsO@Cf3o@W^jF3Yu8lS1YHhYX{xojd+mX(n^c%V@P4hhNGx+T? zx{Jm6T|D-?)Y$gj`VSi@zpy9n38Wi+eq~(Q-`scR>w?yMRxjS&o=ZycXkWRB)iNwL z=JX!h?(ggBJXUMxU9Qsdc|7&h?sGdMdSs1?9rkXF&FlwfiIYNULblGwV=htKQcouC z-qX#M^u_bb#05duN0;oAZkjSV!?=Rz^LhS7T*rcnlcmLWQRX-b?Q=qTe7Ua z^4fb%Eq{E;fLGg+9=p=do-CX+sAX)cWon#eTiW%qGjLXuA0&^q$`#y`gyJ3)8u;-| ztNVKom^Ea$U}Ju9m3#&s9-sa|M->5%UuwC&buHPQ%^iy=l340qKoym0L zmTDN!Lq^VYw`6(vh4i@;+cvf2vjgRGKB9MBK6m|M{D;r)n$M(IYq)TzoG)_5rn#K1zxLLU*YVbh0P3%B@<^>Ad@_x$nx+SZ9 z_6^xXPe5#vCQdlzRX3KYqvQNy!iZ5zSw5qAghAe+^IPVYhT2O#Usq~XT#a!vx|s3& z(QEt!&d(>j-bS|kvdm}4o>1Q}E(yCtvmaKyPT!wD%*i}6{qFen?SAe}$KOv3o|NQB zKl3qa&t@m)!JYOi(BW~01MIhsv``qOzI}c4$*ZGpKOeYHLCF!Hvilu)8zCL<^8Cj0 znNIx@6C*n#}Ge0}{#e|+yoQK=!DZ8axXZ1RDjXS=| zVvkX1Wxp8m*$wNi?a;kYwDDHejW@LyM^@1axVgv&$2;?8uCHBB+A&K!Wli^$;r=!< zhP#91weUV6Tkm zw_3y9#RfS^(bJwt_wCUew8Hk1Q_7bmJnI^*VE&U8JC{*gN=C+Nj+p4$JTUZqn1f$z zLqrQY{mLVHXfDdK*Z8<5C!n@xOAO=VQWh^HX+W!VXQGcYyIT5XEZ zB$HpRjT%|KRC~{e%QGK8kvYwpw|3{m+=k(yH~7axK9c9zj19T!Xq~3?8#{+M*`i%~ zZQYa`EkcD$ksz2zv#DZ*IM|5d(!7~c8lF7NvutF(bj=G#@n1++1655 zc6uNou({^dqx}qV5=WADbFVDreLv2uMeYtc!&3d4a_XG*;^*#s?Qitf^T1D&7FX^%>|2WqX%zu2k)iE$H^bk#YtKon$#2Gz#s7@OOSR)>=|iLJq8!?Wh?Z#8~LtYp5Y{g5}=W9jynV zsR6R!Zb!@5vUQDnj_6pKPb`3#A&-cf4TLT6cNce zHJ)rd{>;InZ!6mkgQkx@q_MRjHR`VYmqFRKN!w2E*f=jJV28EmQpx1HSvk0sQGzoO zuL^3nF=(`rl_^$ci#E;6kbHjkan7_mGUG>P>>d3|*F1fDY>n;({jvvd2e=K`oqH;; zE^EV+xPkPN)%s80`uM)sv#HO@J~4Y=Pu_FTld*5s%tcRoFD#f_tsu* zwFRna&+CFwqJE$4*EkR2Zng2JnC57IWX3)H9J6*udW58AB(H(!@$yt!S$jYnv*)0} z6K{<&+ci?z%e*Nk_W1aw&9_AFX0~pQ`?)Oh+1;2(eB}_t#NI#||1>HnY~{)s%l!-v zwJo{JTx>Y^w!C6<%(kPXq)`u7N%qVrGBDwFkDt5F`4{){<8DTJ=Z0=}<<9ar8J1Qa zRMzx#2XeUey>jT$64yifc)gr%&(D20_WUWQX&(~}Q+oCJtf*p(-kiM~{4pZcAvwY5 zSwPdM9tBM4sp0x=V@_HXvuW39mML*jZ?4Q;WOdSS*QgOU-VA!`k4xJ}&_18Pa7KFG z8o&1H(%v{t(*xo074B~-lk%op-{`KNC-G;|aIbdV3VEVsIU@lX`lUzVnJ2WqR|d{l zw#R3~`Z>;L)||QMam*@bx_9-o2NTXTi=Ycv9-G}W_os(~ep60f`Gs-mf|+OD$TN1r zfaT-*20SA&KWN=GlBKSjCpvOs&y>E@Q@KaG+crFEyRf8jk!P=hqHeuXLiwyS2bmMm zZN)X=J6;XqdS4v9Kh3ldx6a{l)RQ5zdtA6RWC2~cZT!7li#z+C)ypP(jv-r+{q7Ie zGK@Id`aCr!u<6W^wWkl9e&ki2HJtBt*dJHW*S!1tGOrjvy(Nb;Y?O3|<@RSn&Yi_S zT)5nRwHHo~o1$BBGP?gbm$i5AZ0z5lUpPK>p7|YFkl54X=Q$Hz=_%i@+xB>p(>b|o zna#fPc#W#*t92$`WbFyuG-Ttp&32!6?tJ|A9$QK}T)wE0SwynyeS756sR47Q?WOHD zFTFMJ!N|Uu+N&O2+B|rvG3j-mP+RwrGlYS$O=%;0*Q_0`Ir>tT!S+K7b7p&gF%Kcm zTq}&fRR1pVvF_P@l%r+&b9e4~di&6jQR6Z^o?fN&=8r#J@w&$z?mPP-`Qdt&hK81g zNEkh<-%PRp)TP2k)WtY0e4K04x-oYxXYS68VvH*}@~Y8maJ{^Vtf@b$e$S^Bv1i7N zkJ_mhzeCjBzh|QDnd8c}rnfAzPJ5RP>q*|ea^0aRdW2Dt{s$;ey5BQ9QosDtqD|L) z&Tez{JpA*G*GuNtYwhgrX_Dw?WPNTeQF9$o)=X4#XQdsjWb(dhE|alhc< zd->MUvO(AH-ng(LZ)UQ|&b{X8ANMA^&A2&x#%IYSxt+PD%gXorY8H%o zVY#lQ7Cq}C6NWB&ZTD!1t;xLV6FKXTdD>q=vAdB z7Eq3DY2Vb(@=9Rxg;w49!#+N+Fxv0BazS}`_?>>mhe?<3p0;p^Dl1(xxLa+)`BAgl z?>0tfx!PQtH#Yj>m>vF zTfdnI1m{r;r`37 zy^`MEb+0`@??atVcCu*c6Wz2h>d4oT`DuyIXT)wM`@IV&t>}L}*29lUA7am+(l)Y& z{g|H6q#1PJ%GDQTpTr(VQ=^(jAF*4$VfAkQh`COqU2hLMgN!%b^L%TP-p$;BDLFmc zhDDV3Lx=3F%C`u-ah00j_NBkq=bmQIJ;%>@zh%euqpdr%`)GcyU4Q*eqyO$Z@5Y_} z95&Ivx{5n8uSLwu*i%QcU|;mmtV@{q_{Ntzn!9?97+u$sSDzYP>ojNf`bWWoeHOTm zWHW;FV$X+W4r;1jJtgX)k{=lPkz$-^HZXSb;3L`1#{1oJ*VJ~K=4R^rzK`dqQ|leC zbl-h`)H}+9?i|AKaG#Hfp{(tq_>$I7$rZE2Oif(h`1EO}W+9tr@o%k9-0@(+)d$0D z+~2=AKQ_m`d(ohgk53S!ym#jD?i)s2>NA14xa#NR0}<61ADQ=hz^t0C*=7|z(B7ka zTEv5ptkFMBsh?guLz{4lYh!lR&E24|-=Onb=bJ7aT5G|yaEvug?RWM)t;}jI;Z1bp zr((@t$_(BP3X5KHuJ%Lzg;|Al2QL2<;`HV0Aiv2%Zl&ppm6vwvhkH5Zj(C9|FP*b@ zT;;+GXZQCD36DCIQnRO@Vpmy`*`uNDj*-@pFB!HMcLi%XWFe1qUY}B;{mL!dwGX+b z?zb?15xHbe|Krb^{jTxFsj*|zdVB~H9mVrdt)6cuUa-8;9My|?lASQ*v3Ym)7^Aq+ z5g#?!Eh%}V0_OA=p$Ck9N*FT#l;Q4|Pff&m`;OuaMka2YbpHJLtNVSm9>qi!b-RI! zjvG>7c#EYre9jJ`;*@7<*zL!1iSKWS-U$o_}F?n=+ zdBRkiRoia&&F}l{Y{sz>ypSt{*&Ux!XLuD4V)vGu znvv~(+sD_<@$^yeWS!+>u0Q4%#NRy|SNXogBK!U%%|}5$8C{q~Jfx8v(#?^DbC|De3AZcPy`Qk%z~Hf~ z^VRKJx9A-nEa0AKpS4DCC2!vL8sqUH&!et#Bun}Gqk4{FjZ9iGDRL+p|e#d60cjwaDEY}C!<=^hrwQ+1@Hz1u=g?b%fOG}tX-!$(e5#AEj;&1kzy z>8H|Djp*R<4{YylGj|v;Z`HszSC)1k_r91`P}k$mC)c5l)`^zsfghe88TW*0VQU^H zzm;lVy>LThS?$zi)UBoscIBofQNkC&!uC>GRq{`##68Y!Dm~FOt?W_wC;|88spu>v zZorhfZlf=S3RY4!Q%B23U&J@}J0#mc9=ABNvO3LPv}ReatRvS}+r3U+v&!j4*`_lm zUb&eKo7&KSOpm*bs|M^|w#L-QVr|W?GrfPBIg`T`zaICz@#d|7lo3Zh31?M2FEnz$ z+?s!L-y)a(y(@DG%ioN6vpX-7&2!7OG`hWU`%dHe{7=NHlLQfQy& zR9TGmmv>vaK|ioEV8n=r*GVn?HIwg1-{BvKp-ZRV8Ml4<-i67X~Z`*>o&+M4MihqG$R9{ET;OmYwIxS)FF&Snsf z_;kM?hfYAS^Oy6#B0SHoTbP8|j6!6Q2u#a1*f?YGqQ?C*EddgU{fGdI^(`<{A38fc zEE^Q;^GIRR7B|?Hw1b|5zJtJ~eTqd7eOx5JlO*rhUK>Y)_(gWnwHD`=47y_fHd%S$ z&SJuigmx$nF6CexU<+Zx0^I%Dz_bt(s!D=fi%V`&9GBM{2>=KnTqbKNB z{W-GDqhp2L_K#D*C050yPe$;R#p@f-r_sq~q~^WqxMF?57D-(n)JGX;t|z=<@NV-A zJbfmicWsaTq|xZRunVY{L%_&}i|{!!ZDb#3!OZOEGq23;`rC5xLJGXWB3naY zAyNm{aizXeOKvf=9~skw+pjLYu#!19@Ssja+bR&HIBs6bD+KjJ(Y@v!h;Q;VP&08| zpE3Z5if+y)nqL9Dr`@NfgJU;x{x6EAvRQGI6e@{H0V2hcz^%AS#u%ZCU*`96zrh#J z&$=kgeI7tBqON3S1i;hwPj2}&iW3R$RR{kpm@h|0BaepM?MiH@ApNteZWJ<@X=r`E|mQFiuIsDy$nQf?(4 z(M%#Hn36ir9#G`QaLk!Nz^f#8v93AZH>=zLsI#NQRV7hX7e~=$QXEENzPhY@yQ}>n ztR};);GXC8;fsmt!MF)XVdrpG(l4iWPM8WC^b7h%VAUFcdx_?umW=I2Vu#@@kqz)b z8Z(!oeU}o&Ey++NxYW?&yjKO6*O0)~^@d zJD&}3`HS)%fc#}JPaB+-x45xvs%JmvO$ook`z!-I0T6H^GuaD@&^j2`SRo2_?UWf*t5 zR1HkITl}I~6SFVN{!p10BE^r3GlW2mzwB`l$1|SQ$pp!O_}Cp6M2W)OPm+DM1@_t9 zIXmEFW8YN4LrcKz;1jzGOr3JR3rIu17^7_1r7f$(jr+BlZw$znC6ex0b6Qz3$9C9d z7w8ffB1_BomiJTA?h`GJ^3&rk(^>;hnIeiPfj0W? z=vKyGnh}m${1GQnN1$4J#@_i^z@z)sp8#@k;gI$bk{1_qT-BB13uy`B zq~x!`{}-}qd^|h{LKV;`DmQk{JsTB8|9-$wC`^b2CqvHmoRIy>cRd~ee zpC-7}kiTyHgz-8WRmxk4NHii$iLuyksh7B1fIgo;3i1l-5+v2QfU?ct;GA@6`^ zm6+}{7%ibf9`8JF8`dY?<@+@u4?nnrqpo{SyG3c%2n>cHP8lDXGJ2D;u(8t0z@u;Jye>A23ctaUD9SRUT@cn z=@Uu3L+|A*Z~u5oG7P>1dK8HgdW+KrR6i z#e+?RqI$G#1rnKJhRUubEAZoq+&0esyIP%}>{Etk8pbld>wELS#UBivUSsa`KJ;ha zFQ;n!s@lywU5YLgyAdZ*UwOQ!AMadIY3)!QDj}Te%vF@~SE8@A^>2Tz`lphFYOD)r zAM}3(kekT7bM(Yn&2Duge7Tb!>=nPEhxjn;pc0}Q8`nNoT#?t==sgHheZ*+~G}MNz zny%Dez!|qtZUw&F!8nwX+?CWSlu%;gDRR?fwMjw`5$t~wwq8oRFvPf*6@W`rZzquZ zd6c&YGxF*gtRyg-@OD5KXdHr!c%FAi#}X&$O#!?a=3Y9Od$6ujGvna_^QBd53w7BX zXg9r#gzi0{mx;nVwW6#5KonrHmCCmMZG$C!0ffD{02&mynI+eQ^(MXsGzS<6EN)e{zf4N_}k5R zMhM|tnW!I{4+zB7q*mnidu>UAtM(SOm`;irk;Yw|%}C9D=wgNL=TWFiNx$PGBD*B0 z53oWck<)Vqmwi88ZwmVB0}6k|zZ?hfi&AoK^z8U>NToNC&vW*id= z_vPt!xzFEt#Lg)PT!L9azCBD^$~4Uu0leDJaTf!9U<6$SYuwC1|mZ!doZe4Mk zYlpz6A7QHB(C0mBqk1336_;vcXt$zy+lc(V$6joDV|wEyd)@%iwyN{OpJ%0SQkiUp z1=x?rR;jSBl|Q!$Fft`3MA8|JtiM-I5Z3L;#IFjjD?IIHc=$1CU1dB>1Q$(=oSjMI z>_0^MT@CN#sX#qcg$gx(G% zcx-yVcR)Y3C*e8Wk=mlVb+U+d_S;+b+741|DYATzz8cs5ys$j{29+H%gdwuWc~}h* zs^!ZvBq%;e(C|F;d_?+u$#`EtB;9CFY4jcx4ok-&!p^+>8)+(3J0Ic??wlA;Y?8WV zog@TR6IDk`Y0O6}RKopLkBO8%d7NnvdD&KY>?Jd4OB8c`Q40`ec`SmsdxZq4sz25? z1H%S!K2JVZ$-cRECaIAPgX8!&O%vubk{}5zY~qv`88^@Z2WibcQm`T>VkcS_Oansm zg!=CoY2OHGEklX@SGqD`1Fz2u{{gAfske|A2Itz&dL=%a?7d6}h7gbIrN9rDnb1=N zWjX4fHZ?kHUs#sPU6I-#n`E+MrlNMJcPl`JMZB-tJp{Mfg*BeWWZ>BGx{cat!3gJ5 zYsMX>S3*3QKl*kd;nh*D#}0~Wr4PI@3u)5r+?ur`=ab4+b&c{;10DsPX=$e7id?Q& zBc$>A&(Z*uYTjv$j83}(P1^>6pU)?cya7C{l|jh%{~aWX=q(yvSwDdV6PXMG;2(LghV^W zdrIH8=6iTE(!NQ6WtNyHER{+E6`GJF=n4_m4u}Jw!ZDMrHd;*Lw6NL5={u`W@(2Wi z-6Lz)szvG+>fj1LBHUy@%IV0=Ggr8~%xtdH4yh9YLFC;==d|lfzI>94 z;Ld8$j;L*Jt8$Tvb`rvABl1GgjOWqK6~}2uCdS-3qY|-z!NBA(k3`kWL@>H|LS}5t z3`d>uRtpXV+FVbu;vEY3y*$Z&3-EC~nwk#%8BLnjHyg|NakoMfmXdvXQ>oGIsTZIL zFttlUzo~5Bzr`V;VnLc4atQY3dHLZ8uzM+G4>Jr(0A~=}AwD4Nm>1a7Kp!mp&EW-! zD*MQHT?14kNHK!@$aCI~`gXZXnd0^H_YB5hJQrK*QmJnb_ord&lM>NrLIHXPgXZ?} z>i3`iZ^6sah4F;=tW?-uDDG5pOWAw{n;r6{C{wX0)A==4zZh6Q4Z8;^FrR{O1$zkXOuK?JC zpXVgD@?DP*_XTi7eVhZ$3KrE*0!=JtyMoUkC|oN{N>04w?4m?Rmk22s{}1>X|RFb2ww$P0W%r zc$NWA>qz{e`|dHy3lPO`nTMSHxGLe4@I~|T;ZE&(_H+r+aqr?`*!{LTopCEeAGHD* z@4f9^CuveLufU&$?@#Tf#>27VzL8zL2CmR0q71-U$GRg_5|=|F1~(y%-i!4G+^obA$=B8g9VHSp4tClS^L?)&%*yt!uyZH^04!KN=4m>`o4-jew0>XwM*Tu^qlEImE9Q84Ne=W-aO|8A&Trh4Opc%w`pzb;y z?5Vd4QykWTGbUqkUO9rCybDfTL*@t=%Ov{WjB2xpm0~$)v*2zaCuEV#vc`p5TKwEn zV(agh$GvzmZOK4w2|iNBg=djnCikt-$nt{{$GLIHl%To37P5VL)zTi@{|ps3I~x6& zA&ff#))*L$ZSS63%lUkP9sBz0S7i3LPo1N4F`YsJ03)K&&G2!rN#|llaep99dXXsv zuCFEn?+w#t;D(!bC)zOFmZOXXebYJldwzGt2Pt}=K2F4;4jd<~A^5%tCaekxM8A`@ zMWChVSAN(_k^Pvwpyqou^1Jy_bvw0US_I4yI|AT4xTbd?ig*EWwegn?v?8|+zuIia z2>I^olgcbRnw2N}c3#Z$$$A!B&hC?XZ!P4WVn!48Lpmc~i2`Ab3gP83a zo2Md0YhUPp>z|_{pR*4|L6qEB8OED}fB%9gxz<&f`vO?*S>g>^T@${?QUwZ2=^#X4 zQe!IM8_v9~Byxr@x9wl#6frUf&U;XoQ4h^lB=%w~6PQU>_g4}^p{nvKJOT>N0@WQ!%1uQa&1>g$?)-Gj(kV0SM`GOzKGGlx z8XSkz7t{DDFY5_^{>qqFiXwoVS)Ay`4WbK3JTF={#s*qf)IC(qN*uj0mOr=IwX83G z-|JCRjl?fbI#aU?Aaz=$gWYF(VDLLDR1Y_Q*e{#M{Zy8o(gX$;E&I~epYn@&W}hnr zyM?QRm&e=b{|~p*<{xjT;NuE&GN0FS1Lau@Z4dIzXqkP?@G6feW-4ZK_OqFV(QdsC2KXPa5d?sA)r0PDXv+pg)x!rxtF5UpVb?pd_;T|PA`uC|CY9b!F#p4xlrx-f`l zYp~Gzo(@~`M&j05{eQSnRRJE|q>#$jS^&2U-g7a} zu5Q@8TZ4~AGh#Ybv8CeMgKG0}XI3hkVeBV4Xz z7FQNA7F{h1tP^$UQ=11KRr3l`pOF3-9uO?v&5vJzSH~oD{@$gI;xREJFxIw5fMeT+ zWq-S9#>FOjpvg{GK-p*ws23b`N?H=p?*QPsn|1MSf4do6vKT)dQ!SB4vD}^VIL&TB zp%fr!Ys<|8TGa#Vw0Obs;o37NU@Zf)!a?lR9T(F8inOZk+QIG}ww6{_vOMe(Gg*&&y{b;z= z?z5$@IGXKMMM=qmcU9fwDl(}rU*IAsQAVPV#B;6w=%qfX9`qzFFq}d?;+d7BdvhS3 z9LT=pdV3613-02o7HlOO`SG6tha-gQQ?8NGm^Kl`9SUlD%EK=90j~)EWbB28prh_0 zi}E+sbdr4-RL0%*l2#uXS9=HFtMg{nev0D=n!az7!h)`Z1 z^zj-+;BF&HL4D`2Th2b+e}d;})@kV9g`wO3?So16lMA_q3}8A}={dFzGdHgh3xzbTwjsg&Ry0 z(xpCX)m>3E55F7|9}I=08Lx+eH}BZKgoioZc2P0d2${Zr3C4$wY>ACd%L}zl_wq9n zhj3JM)|3uEJ0U+<{gU$TQS*@FnvgaE#Br6E#?X!bed1Hh`h#RK2OBY;!9XRe8Gql9 zAhn-UP|_aCNa=f~`xKKZ zZ|-+-*6OQB1@(xdDaY~!8%LW})Z9nN{-5X*+N?cbV5+J%+5qd=tQWNozov)6D%`PE z?F-{JOoM@J$FiwH_HZ<^4QJPEY@NQl+>S^*J!5S9q=?7Z);^2+e-BxoMx1SJB| z$$-1=_c5kmIc5&7wX$jxFxL=9U;=zeo*__$c7~q1S|OiyHBPV-UOd6w-5q(t>5rfJ z6NzmGy=cOl83FYSo=aq9*7b45@IfN_ua}UB#$9^53Rli{f)rD&3gxweIO^e zjLORJ7*WMGk0+*ZS>B+EGY+imRd94n0cN64|A|9SVunpHjY%;{X=p(dZ!c;pruXJ$ zgC-!cHlqmP0=lExKQgw@o)XpHDSF`nO=wM*bZuaUvZ}OK>-?+J(>1WT`#CXAh;p&F z*K?xj6>Ru835nrC`D1u|P>tq+wHwwt+uVJfot`LypX)1zBzLLhZ*#MV)4o30fl_~{ ze0w5L*tDVeof~LCfu~{hW=bG|HgbDOSrOXfl#S9H5IRo0azl+}BviSFZXn zOHy(-JOY_zp;Xb+p?}ivAD5i^8dUz9 z0^*lehlx}J$Iv#n4#OH`P&vUsZCjeKN3kCj$icXQc!36vErcQ%3HTHI9L!J*>E&B` z`-3y72kRM#$b>NuepJrDa=BJ+wDmyQAB~ODu_nJ392%V%58?xe=N@G5?+9<)G}_L= zIQ&a3VQ)9U5s_j1#^7g^PFILyJDck)aA zF?Xbq;>s4v<1Fz_FYQjnw%y$!FW{trp^!R9OT9oYvyN22yNnPX(rtysC!>&*W_dFO zjTq*=!@Ur;i~G@>Z0E*!^4Xr1aM_Um7M!txB`@dL4>j#9f+J*F3 zqYG8y&rj}OSbj?S?kceZZDZxlQhIVsmC5tO z#Q^cP!CP$rydDt;DdM~KZw`H&wS%2r-WN{CpZBQEgs9dw|4nne+KtQ%=|#1ic8AuG z>3C6@J@egHxR)t(-cg+UcPe7edl`@uqt}M4^Pz3 z!W_S3+&}&MW8aBJg##FuGSvQD@Vqd*|0x%cR1&l0>nty z@fN*9q~`7__;s9}L0{#vADqqxQOfUdVA`%e5+TXC4KEZk6{i*Atv_dDV&v zJUBSo!lKiq{W9{p1ubt;sv+Yp^y2)f*IT7=^I8s_Uf(v_U*w0RGdex+?0Y)U1?+OC z!+mT_qHR0Maa^8ebi2elH;6W!4xvwy6{u_eiffdnHY0xs9G6uth9U=bOcz;Zuda{1 zNIC$z8}v(F1R}&6ePRhH9Lt>IPj@<~E}h86+w=}PH`4OURc5e|S$X4#wT^HoLg4q!gx9aW6AGpKT6C*|ea3rDEg^B>}6eD6r(Wvy!$UR=|h7dr~6Ew;?)J59fjU+zy|*m0Bnv&sOLfS z*G<+oP-1QWP(O2-<<(U?l9!%X#g>}uM(PB#{rge9j=<)r?>eTV+N9M~N-?@p-?$4g zq0iJkB(vmh99sH4c)eRRCn|lvQGFz|;2o&rGCJb}`v7W)qdyqt53hdY5KK)czUeo(~=_%#p9<}J!r5QF0>a=*+fbM_?% z*Ev>|VX>_-7!ao}E#aswrkPkj8FpK=NuW^_bWq8*5w!~_Ki_{Oj!-< zhdh@aO6;U6SzgB0x#|C4@45K;$uzi+(G8JP)te!F=ZkKX_Gs1d(P3bdrw-%9w&r<>xH!y^*DDWcGt0Q<;WXx(2az(F z<7c^a>uGkR%~uXq%!Wg zd?Llhtg;m8{t9)RcB4Ai{R{AlSxIlu>**5{_UL1C3xAze(I};gKpaYcu8Xmo~rxEhY3gUT8%o( z+ADI{2C{q!XentoIThc(!pWkZFNafL{f1tCHY!EzD2bi7Nt4d;|C2l&sOY;|eQdpy?{e-l>XDimRCGc%!zS{e$- z9V^gs;4SMrS|J$aEpwPEfu~M@=k+!*N?PXxQ>+ADX=@T)Y$EXWn!j&;*Ef?R%$*dc9>=x0hQZj zekNZotPn?tAJ@I#QL6!Et@H0{RVm^HXG=r022&&b=%H996JNAJB5ZP76)O=p$ei=awk?$>fOAJ646U^=nWa3fA=oZ69NPkgRv-VW0|Y& z-A=hHK!^hUmS=9#MEA&L8ZVRPz}9}v#0r#r!V>rk^#ED6_ zp@;OQ+ynLj6Dl$xzs-T?loODxFgIrl%}EY3ngSe_5L*uzTXCtQB9knyei$xa5Tx^6 z5?gjqhdd34^g-5^!bF4QLZqp!9-e+UfGW@HltVFnsK%9Ymv>iYsKuJew77FeNBJ!idYKTHB^2(bM>N&VH&0FVK`{`GuLU%!z7#y>29R!b2gBz08A^K6CCmYP zIs!FBJ+;bY-P@%Iu%EOhmVF=qaGS<6&DN@~X1qHeX%=6#te`w)=ML4krr&6ZyskU6 zjzj4#B6I1+d`Hj9e0$VrhAm6eKXX5)PB@-t=zGe~>JE1;n#}}XjWj@ftZ7-yw3-Y* zC|2U$)E)tXSr#f%5PJcuE0rafH^B=SeFbQ9epVENo1=ZVgfnr26T9v;eHTE!>i*x{ zqd+*wF|K(EqM2=F{~Tcxlzw|oe2;X;Ui~ixbPq+Z6AV-&ofR0L<+}5`P_B|5bw4+j z4NlLMr{Gt-tmDpK-B2Hhbu03omMViKZ`Mr{8a zpGRGe>M4JeuD|`#;xpK?3K>-yY*V zq}zL`ieAXUXWVG}diwXrwn7Vuz+DQm-z$z%{lq|*52HJDS^*P_5GK}~OQGELz4fvDwqqbTI!+aAr$tgN8hEYY|SQ&MVl=_j`BKpd_>WtG(m%dwHeNj*8 zB7As9^au=G>vI*z)QZd#@M6n%ij>-eQLRHhvWnk=J(iWJV}WEgyZld$go+oxH7V!? zZ*lSHYC{>lFm*^*L0(6MjzgjufWX46Iv*h8&$;YI3zk8Wz2eHgF}I&36YnlYpMVWp z9AJDzO2UnfS*rd|KzbTChinP^8s?PSnIBbThE1fCF5%*2J6p}|co>z00r^v225z@c zK;Ez@r+X~93w8vGK1y?(N!g?%!R_DiKN=czi%9+V3jKs`T(>(|U&eDJrBr5{Z>Mr9w_sUsfUqc?|%$z#CSaaF*VVqO3EG?Ud!<#DX!HU6uU0twt z#tWTNEDHwia*`FZ)poxcC3TFMF$0VxoV|-$=M(>OBddu-+wlg{ zj3|oZQUw-)0K`CyFbp=<3hm!7HTh?X0D#317kUNoVr&yx7l%IDFG$z9oNl+3Rz+%>W0JNDvX8qeZxV7pNT72))H5V<(V0`O-PL09vq+;JSY)X8g; z7X55341%z9V$%(Vq2<_2;VkCT&6U^TxGt=W!iBtM&8S3a1A~u28=d3iuqRneV2I%5*iQjVgyEi%J)t^CD14n@aB%zkX=6$N&538 zfvHVDop#3GGUy?nRemo~-;&A@erd}p=I|_8D3FJVG&R&+IG~!cYll~yOQm}()QX(T ztOWV#$=#WLet82CF=HQ(`Z>i}4ZhF}BqrgoYiu&$qlfy*lG=K;i)oeUo^y(HR5xfI zeSHvYmzW^Xw}iHy6s~-5Vu$cbA2U34YBPM8)StPC8f4m!yxGXf?6PQ-05P z#iH)8$z5Z$$&zWIG|M33e~GooI*1b+G5ag@CT}>+rx`wPH~%38t=L~`4BBzo?q*u# zK4br8%xoc_Tzfgc!amHUXm3DhEi3t%YqJ>2gt}F2h;&i~Usb60-@TmsnwPl9J9ha= zA}TgD%X@$^*1f1cJWt`#)Qw&FPGRoZ04IqbvkQ-HSc!cPlG8~?V&kqbQ&gCf`+Ut( z*9R{IJ6bF)*axA)Fg;+}t_FozVacpr1Fw7jf^?A~s`J@Ch0GrlI&(aMwM zb!6YL6LpMNrmQ{3HQn5?D=nJIQf z*79m|C+zsMK8IQ#tv>;4jG=oZ5)&S%zO z&WS4`v&0K7m=#huF7l>NdO>#@FIU$7{7EZ5^8N91$N7?*yydg2Rp5Btxfwj)*$eh- zUD2X-@?i-gAh9mdM$T~IL*-pr!;(6^{W~Sv44$QlCC|UzH}wIxqS0SKC+>ia#F{uk zC>{2!u1jZ4*fzz@Vx!pdJwpNTeZ7TB7aDk&wyUUtn?xQ(<^jVmL_lF#+f*L>zZ$O2 zHD9wc6@TdFnz5(AOm9y|QA@;`O%(Ao(wj z?74Lb!#Z?Meca=HS{H!eDqms%Vl}CX%>OZFP(MqgYqF78Q9)DKg`DEBKFZL7=`D05 zB1zJUiQ<{J!oT+NT5C_FfDvy%EUQmprPY-v^kU9Om)HDoaaOz3b4;d_iN54xyvx&& z`1(GCu4@#~%}>w4vR+LhPjIo#?mm1kp@1K2rT}N*L^6r4Rf5c6TA`tMB}Zu{&n>ob zU>Jkz+-6-CGcY-^MIMf3dtVfbs2*B-zY{Hw&7B9Sdi`p;CR- z52a~6*~tcfxA|X98O9& z!Rz{n=~ew+8(DURnRknnsk6NlSo(~_`~0aFtfaXgKx4X^?j=9;97U#%#5ad?n&p!f z(uxSt#rM{Qm&Fn|JSek;*jRI9!{_V6tdfqdTAHk(QJVt`K!%Qi?}=|-kaIhi<-w|2 zg)kOahg8{2$QPL8nz_EP3$^bJL;Ikq>JnTkm;VRQl$_8$PW{s^^86$VK+my+D~KF1 z4#WpUem5qeMxC#6=l?%_8HD;0~Us~o$( z&%@Y)ejdcJ_5v5AF;9#Z5sqr#@smZO}I+mW3qwZi&q?q{SiPe z*#d!BE)6I$?WIO=$uOB-TKd#(fG%hpQdfbbj=dK9F&`*m^M9@p6lhrV0it*Fq~h}~ z4*;x-XE5_TiF-Cde4Jb^g*mYNKg&(6x06FY>7yibUOMLo6%DffGCj)o9m`#+3LXv zF&1zT_D_}=(s^p!#|rcD>CmRr8Qk;y&tbHf){=TeMt_&f8B7Jd8S-sV)*gHD#N5XA zg51g)@<_ct22)At?6(5SA-@93bwC2rEkQ|35A{DWEmtXfQ0l2+%8N9b*Jy$=;INfi zdE;FO0_c`7(5=6s7@-mC-BXs-*M}$dl?6Vhy1BeNlEGX-DMwriyLowzoH-b6uI-PMBk~N4U_6)fy-j)FHtw;%JP9xeQWu z9Bw5js!2am9L=rE+W7vo`%*)EHx==Xg;P8=YtRpTIfEq&&Xt9TFPYchfnRVEMNr!E zrefQOi*ra4|Me4ggX(MFXnXI$DupSIS6oWwfOJpjj(q4ivV;Dxo(N@_N#hhEmRyl z!xfuCA_YmB^uxxJVA#cWnlwuWD#8U_5xhkBrhEdq1~S=n+BCuG_DroiD)rS~lT;wAwpBZu02Lcj(ATlDLqOetyDB)+0j}kKll8)4qpAR$f!X zjceZINi#o|d?Yj&IEHPwqvw+q=6c_Yn}}*ZI;{N3`7nLd7eH_rTel*YaPz_ zcW1ceM4PwWY=9V@aq#zR!lLhn{FXD*t!-`;p?~b1le_>%|~`;`albN`0|Y zy8Zsb%Nm=yx`tLt#g6YfD#c{yR}JNi7_?RGl1D4Gnh+e54S-RMhsSDZJF&>OyCnOj zdRBP;{$67eM!?cA|9{P6Q)G{-77-H7L^dqv{(>r{_Z9y-ps&ik^rr0+yh&}qsVLI> z^4$E%NEW^7X*C|d>qhKQjpJd<198+TSpo}PS4Evr^<&LJ5*dC*j<@5W@NE)q`3R;rLI@uRA@uu zo;1K?B{BM%{xi~w@A%Ha0zIrfv38a+#G;cl+M{^DX?8=qeZAEgWQp*SSd=xe^T(4J zMNvT3H|bRj1+$r()bh5C_FI~MZ!4O{ggas%n+=v(0j!kGf&43)Y#%pHgfyG4fs;tQSGLse}gWAI&Yf<4$yyYqT$3}OvNSW-o_h? zBqY$Ik5sHEb0r=eBGvpS1tCY>W$_xEMpv8(5C47y-xqiWV|RK;rD1v|E|ZX^3#7%k zT&{sHyG&tKR+!INLy#RQ7bRziXAq)c^MS1|Hx9@~7=%ofi!+`8&anyZr9`VqVJdZ||1-^vjq=6?iq!w95tqo7dB9U|EBm75{T+9i4Sa0h3cx3K~yZuKR8Oc-j;w#ekT{<(OUldA`sg`+o5MU8; zLfrBJts>q**7bbXH7mQCF9#3%WsuOEfEkY2eng~NkiZQphop4je4Ed>f-7h)C9q)@ z5wdUHT|Cfom?{^lX#~=Zn^?Lp2E9gf;?{L|x5_uyRkPLyzN8zA0PHTrOvd!_DS`PC zVreh>%O96yLiju2!RkH$~^X}%sEKM^^JpKo{Gj?SV3s~5ESF7Ms@e?B+qbyADX>u>uU?J(g7mg9O zf7@NU6%JiFT`#rCg+&zU%0f0+M+JP^ROp>@xM0sphRv>4#$68w0ILpQLxw`()cqLC zbRKqD(PHCTpDA_$QEG|=FZdy-ARZIF=;HhL(>0lfFml#*3HFpkE;WPd=ztl11OpisFUO-Z?Hl~2_pD2E-~P3_ zx@D`K;Xq;LUFm*UhYw;)-34LYi#zal&O9d94QdJ0(H&^5$D$D))KM^eLRw{ryP3qL9KI`UG zTDlN(g9d%JFdf*!U}24d+$-N*=MF#6>8Q(DD1N9rW5+%;&~Ev8fd3O{Cj43IN2H(` zLx|v4^`#Uq-2V&NRgZdJJP3US4l=EJjhNS-WeG?et^3TbpqC#%D&@?7Pl4zp>GSGG zSSIFjPJ6J&ht5}pp?&dGK{Dr(W?ms=P{`a)s(H^n(v(51pvvpeqQd9D=t7*nT3;^uyxmwih`9uP$98$|n{woA+pC(mC)bH~%@n=5ADkRsEu zLrDIT={ePp{*b$HDv9s=9C)%@*7gdZ8m+pSz4Vlw>)HyWMN)0O`~yL4yzuZAIvDy` z>WK1BoW8NA3L5D&#@MG|McB>|&W#NX{VODdPQVz(RN$oo`fZae)gGR6Yp9GvgHHO% z3#ZJrYl{5?sp?<@{h!vK0{L0+c@xeo>BiWTr*Ad?f6xs*)Ntr)D1bS<#+v!N^qEEU z;6HD#SBb%dKkUOg_9FwL1GeFG0A33Kb#m{Y&zunWjX}-An;35@tYbt>5vZi#Kyq02y z^xziVP3)hKS-$thj4c)Ur86x~#<5ig=1{^JB^SPhj~FIRqPyj<@kOKKRXLtkJwA2( zf-+JX_&d3;Ipn-EpdrjSMB9@*Q`Yu=pFf-))^JCcUzC>}c=F>P@H~Kf{bY%uBK{H? zP@U^CLK|u)z?Vl@q(or3e955t6NO{-E7f=vCtOT?H|X?7GwTyc(DZO!=KGm`+pptS zKp$K--x%02VOiRg{_cXkT24jxKr=P@KOq({yy#txYYGByasb4Dy4XP;3-27`-Fd0FC{ z4d>(ze2Cj{ZjA$hr2`*NBNiY9xg6uJxrOpNM3iGm5uz#l6Wun2pWeQYqUL+i2hqCI z9t;$jb8P3jaTOu}CVgzE*AQ5QqNx?k!<%=O9DnO5NU``w2LsR#B3VYf!(vK0NRF1Q zgv22wj8O%{W$hsK)IL!KLw^caK_y-o1PfuEa!$XbHvc#@=cc@PQY9xQOF+O;4yx(c zfD5T>h-X%*stvZjLnsL%U;-iCTPJ7}gXO^@t9r?-wwBT6PeoM@o98Ro7C?i*4aG9M ztHujSk$z^QP(P%pHx+y=^Vo5pvA?>f7tZ%Fs}r}Jro6UkmDwhT1zkHW0rILmL?uAN}0EdENpj5JlWWa5MyGJQPz{L!i;*~0m>nG5w-~?5}0El2UQ)Y}g@R*O&0)`inP2P4q)sEx65w5EX2cGO18sjPARhf1KqXh0oK z=kiewcxJQ2{@3f|`DVFR9KjDbW#oAHWQAY^!CGt@7?|1GDThTha>upbxA#50W}Xr zBO&)iwwRo&u~9A^A9U&>gK$qu%7mB+yge)~T>I8}8Knv`TxT4u-O$z}ZD_)wm9fe2jeG(Z~L_CYtgqeSQuxJ8qFh9jmwcw~z z*>Fcu2kxreW11^hpjdPEaAG^Q(L5rgsZ7}_qay*Q$i%*@gYW68?S70VktP3BKgi4x zW?6XFd(?CyG3(1A2KzE^w3X9)T1`7Bc(%mZZyEI0megarNiBJqd zA@lVl%=nI4ut3=Yt%UOyQDUMFQ}|rsbm)fyWxCIouLHG`6{*(_?e^%<@?Ae!@sMxY zbbQjQe=Px;h`E|32zcfN$OkgD0;6h5kdHL%B#m+KJPqE|=c3OMfdq^Y{yBMm@f1 z0l57`$o&Y^Tq#gVpur{&WnDkaz5S#c*bp}NRP z%0qDUK%6UgCtVevh4*HYh$k`lB?;qBu1RPno{?A@BA4^QzGG;Q@zz~FhR2~=!vr0` z7awr4h;8*2wl3#Vkn(BvRH#CM1{KIiGVyyQd6m*VrHx8m+I2uF8%(evVMHDg^MSzc zcwFRZ<&9Yi?rq_ZnmvQ~zSI>;eF0SE0cY*Ulfj&f=lRg7nCk z<5`RRL3MJ6Z2o?K`sR&r|9nvP8eV)`J+20PYr1+=ja6#Ec?p3+Z@==BQwq`ByPys& zy%3blBanV)ZZb>8l4F3d-CKN@a#U4|XKOZggGChiS0#i*5fX_mWAk>Zl`~L` zypV9`cnr33T%6G!oS4yvf6}}_=n0t>Oo5{lKhCSB(C|v`iy~^nL=*MtH+xhACsol5 z=>jfTx_dzwbXMz%OcJ9&NA*H(m8FV5t*sK^Ao!E1K4g~fo)b7Pnz<#W4sNn~=d!rX z!(KIDaRB&2xA_C1LTYM#&Cq@4aorpjn2KU=!L&wgRp6A7wzjFFS=1y26daK&(#Lg+HdCxk`Fsjr76`QY}?gKHJDCPEIB7Se z9AtgiUL>$)j-i!}{#AiKPUFZi3tYiq7;4d|wwOxu2%p0d0n=_mg|OI_6ro^2Kf{)9 zXvx88ivcWR;lJCHM6%<&!cAqKc~bDJ2+)Rd6zeU|!QTf`El)OdPwtMp*U<+I|1RRh zUDePiXXq&~@nqLlW9h0qdvPDZS8bw!Ij$7`lm2!5B@^mWHi!m(IuS8%LCJU%yx{!Bw|tvlxu+?9bAlvG84;z(Df1k-tiJ(5S`clSxRf6EY@bQWidQ3uMywI7vKVq9`FK4is_?DiOXc3 zWgbwg=%ZFk(U@dkB$@1NNt%g5|GAL$l(}vqT2&BO+>cr^;^nSo~GI3yJp8AG5)@# z_W)6rlG8>Z!H3w$K1&7*iu|KVYXWB&l@pPBjUcp)-3M37>J*tpsS}IDKZvS7TWqtP zWUtd79{LtwSUO$VLT2uCPV`%*H8sYn5ooS#A9+m>Rsry4%T?k~&>$r-md7Y|AbUZ1zG z`|9gH`nu7>_VthZdc*y_R9{z8;PvM^H}@rPZQJbQPjpLnqv>9B zx5)ZkdRbx|wE`Ve;Kh zd|c}tpU|EvZ}k-nGOw!O#W4gzR+wI({x)TU()~k#PWQe<9xy0&`L^b&2Hqg+o3W0S zAi%-$o-0j#H^&)XB43<-U3%J>9Ev(_B7ggJTg0Q7#?x~|Bw#aKFC(TfPlB8I7P9|w z`U#J`IlKsWHkk{E^VT=!tS*M$?$HO&wQnEB@X92G(Nvl|$jIirM`iCrA~a9-71+M3 z%amTgh}Hb<@*Y^iwx4S+p^dR}mf@VUQ)Po|_0RMAzh%}zb{tJKnpNwi!kv0-i@I=* z%NdSCq9f0uS)1jn!CZ+q1a8NATaYw3-`bAVl(IGs33lIEiKxq=Hsi4qS5({)#NZN9 z?6*!NZBrye8wV!w}MphvgiQ~nkm`}5Y@ zO*UE|d?Y}58sQZm5XL7m{azG)ow6;U1F_;NL|C0&?rQgd^Zw?uXqo)vvPsD}u#m_& zS4`ea)~i{I`kHF`S2AF2K&))Vhy&?u!5qiGqi7b50&L6bCC6x6$cPSXlrAAu^e1c) z^F^rOVuDT4NBk!0}30rTfU#M%V*g2uCo6X<&?@aT6J6)oua19^Zp zltJ%sT#vvi_1>|`(3sumbD2*xBTqc~r3!dcfNgN#e|O(JTn_ppP$Tn+X)0tyK*g(4 z1;O4Gnq7EwtU!uC`#%O*gRi>@kLTfLgC@k%{gqX#w8SQq0Nz~m?r%Sv4JKF_M=c_5 zkTf7mK7-j`-WORXMDo02bJAZUE3OQtwAqN#L%k08%F%9EbaE9u#FG)Z@b(ZmQ6Rt3 zevBAOb=&?bdguf5Kost2^Xd<5eli0B{-%0E0j%HI!X>G%YM*DCLe8P|{j=lwwL!|1 zM&r+uc`Rm!4GcIyt9zQD;5x2(Ldmo}t?kHv*qJ1n~dhA^FEM-fMa?H3S2RBoGd>6Omh zUTN|8SvEDxjxcLUt7vuTB~E5C0H}cJ7^OI*1q|GVnStj$gysBq4Ne65Nw9tCM#VEx zoDLP`Q&xOY&gcmw_Mi#JnF#dVN#Rdx->x>g1UaE;hHp_GG>H)I@P$T2f6mqhYpg7d zTVpXJPO-~^E7UYr)3|>8?t~*b@M(Ik1ee{+)rFAUS&%imD1wtD8@EU!QU>u@5ainsu5u!$q9ck$+86{;F1pr(5 zxeP2Z7*!NMo;rrnaDH3WE)t=yI`e8%M}I_$aSPnHfTM14!L2edE~R~NQ`0=oHSD{q ztDE(z2P_~ZsRHWwq_<3TGb^Xpz}qb0uePppTe?Mpl&^aO=;N2eKQeW$ zYuJccMjV0U6|N<;UR4WxPW&$l>b+?{rOYZ$YUL)PaG*I-`XHQ&P@bb~&~O05!g8WK z)Q4DuZcUw}Zw}#A7XVVY>vcKvwVXY4`jQ(FF|*2QRNAjD?Cf)@F??_^sCIQZ$P%*L z*T)6en&Wj>!$CZ^m;2l?q0T^=511v?{sPmifm<>y6vd!zmcE9f5XPr}3IAK3D6c=z zRujP8g{y&wCf%e>#a=;5tO|-o^MI!Y7P*mEhT0)Sy5voazdMdn=EL56T z%Q=H7j`JA;+FTSzs7FTMS z+*10~rfjhLz z%>fIDy^Z=#W_()oDN*gN=Xr#4u>q2MRe3n*!9r*;7wvifgAOFM&~WGSawO`#>tzvf z3c)9Z>-d*Vbvylp-8QT=aSvJuGhvEMIiE~}Np;D*wxAxmlN9_d6Z@Gq&HQh+vQHT`>YVZ(*sca#B` zxy@sYO$Ls#6W_2Eh_=Qv-%X5@@tfTlB3TsYyW-mL8|4Jd zsYzg#p4Am`Gl$rz!j#!}(>qx~=pI%0Z~@6ecH$wW{gjFfjxIq?{JhjWvaA#tfm)>* zb{K(RKR>Ks`eihh{RSQo6C>-)`EI?2; zXNhn{@~j)|W`^u~Ex6<2%Vqy$r5u2nrxPPR{(dTWlT*SUO`a9t0*GAaheogAtSXI< zqCuLIbjquUAkG%9;I9N>AHELh@V_IMGWkZxNzJQzwKbQtT-$$v5id`Q422%CZGKrt zwe~o4RO4R1hREd_Z!+jgB`C)3BLp%9z?j8xgt^#&CTkt(tt}cuH9Qgp9}fvjc?N5< zI;M<@Fi0K7Hnn|^`J2^B8a{NK+RvUTM#o-Kz2>!d=P&(P2ywLeTFmtmj4gM2?OdES zaJ$It0b!HSi+_8>s81M#0pHGouIMU*Sudbwx|IKByYrsBGIcnf{42wf9IaS6QpXy1 z^-WHd5%5##2CHbrcu$tW*g&rPAHN&@8p%LKU~dU|6)Y25my@80clk_zkMmfLj1RP* zdwky&)N<_U;z=%wEBiVT%=|w6y}I#GXV|`gf_{Rx<|RLNiC%`IUQPJu->9}4?MT2q zRvG9l*kUZ6@SX1yE&?Afm_@bU^Ey8|L%Z!R0BFl>Q*Wv(2{F!*5ayYTm?7)ru<`2Ja!&8H{qG`JIYU zzysAu%#tB@>|PLEp3Wq~Fr)+kLW$o@rRt6t9_q=#`T^L0)0F0`<;jkiJ|#dTCWxf4 zU?pjTCDnP!FL5h{wVpgrvons_0ofYY~d9o@l2DM2?8m2^MKD1O1@n2g#U4xjfTRjrPRTgMA2|Q%tT! z`)6-Rv$YKyu85lXfdGw$NbKQU6MMdY?IET20u+f*UHU6_#4Ws75-@+eJ0i)ueajP}RqD|5+Oy$M{^? ztI;s_UsQEQnDTfJExF{ zLavtUDF1o%Sm}Pj?!Gtl7I)l%Y5}}t_jEFot3C!F2iJ?e(Qjx}YSF1p3EZJPhzM!U zL?!Ax-*d{``BRjNR}WH@flP<@sRJLqAsxu8m&Ao%#U0(_9FI1nQRkTyIk#gVW4}rO z6&-*zZQE$QN18$RUbRuM{=4lagH=1mlE%D>^B3+-pyCkC#$={EV z<8FjBRMcA*yctX@YyWVdp3!okM+B~_<-c1r$kD1S&aV>B3$W?k$F`^=F!Aq2(&&fm zwzOfF1oPR%(9s`~O{6Y%cH)j8o;h}(&gB!uQ;||B=|rMyz~@U>th4sXugAtZ!t8gL zJ8k2uK+=DqsVYg4QNU1r&{8;QOD|f{zV$_(V3g&LIdso}ELXsPcK|Tomxw7k7IO@F z`-vC0+(CC6HeyIKso_E)D4=Bt+=A2x=Od#+T^mYJR z8-<&2ZH5^AI7Uj|P*D`dGR4v`lbiLcz`;n@n4ofNPwQ{cwv~(XpoxP=Nn=Cljd8BC zys<8{$|sWSsky1kpG{*fakMy2ZlTieq4)dnU49enkhJ%Tk)*ZHvg(ZBt>t@;P$=%{ zw~gia&@@6XFE;cwdMT?7X!BQVwjyJm&0TN%Se|G_fir<>x(&_dIi7l#+Yqp=vyW;8 z@-~1ehBV_%yW1rF3WWOr@+}$n%Cxw z1mDz$p$k%87n`WC{wcLXjeHKA$C&*1Tq5?<1mRv`{}p9?XQ$i);!-$)`tpSr$i^dA zR1$dFQZNtw#7+?nUNaIQN}Zj{#48}F>n^qR^=#o{VQ9av5MD}9iuxasVJ4yMB)L30 z@sahebUK0|jVr}z8o8@dK4;72{cKce1f`L^H|Qy8uY79z#2bs(`Sy_y=|hsJS|(oP zlZxNE6rhPg<$Fmth$b;}aQ4v*aG6IBr-Fu2CQKVtTj^D(!M=WSo^JKV4O}%2ZT5Ns z^ZWlYVjM(CFo;nB42^?gG67ph`m&L6Bj@R{48tivLoBGZyXgcBz=yMn!x!Q~wkwWA z6m&A(4Xr%rXkr*rb+HO1ChMcYH+T=pO>A-=CRhzO?GmxfsyZCE>N0-P3VR{}R?-u; zUL0A9GFYp1b3O~hh|uGI1cpDf;`N{5qls8WS6}p6K9pGXWH=cjD3n_#6HE7HgLY+0 z)U^1L=9fM_0UiUEJP_%OWWKJ)>K!*ql!5q3J2(&tB8wkYQch=(oyQ5SD4Fz&QATy4 z(|Yl70fu(gD?*OQy%w6)uCBIhJI3aBuV(~+8na6tF}SEX+^}+0wU|IMVN+)lj_X<& z4MkZu+U3*?x?bz28HY%6I9@Um*#fx#TyL7W%`qr1EGC0@ZEfSxwDAO%|B^ zy&O)&I+>cKd#ZV?L_3fs0aXwBwq+sB8G$KlfWMHD@(ogNn` zy6+hA_OOO!mJ9Sv^p92k$+c(^(X9g;C%fvY=#zz3?zT`oItt*Gz6E#uCb9MC(ooIQ z_#H9s!gJO0eT0g2y%IHrLK#R_)v0xt9rn<52xp(u@eb2$)sA#$S;zjm>~IiSNT1Zy zUjIu-mk#iSHT^OD(*tM5op@46F;QzkstHDaKRQXiSPYM6Y)r_SkKb>h+|_F{azzHx zb>6|cUq^YbdbxlQpeyN@BirwYFd=q^EKm42M&-2RLcSDn^G=c|i<-)yMiZaDbI=y@aT-3VIXJC*DQeMoY*y}VIcHAMTb z;cM|XYP9?WeI^?A^v-iyGA>4N0O2)x?=Hf(!P8v z^EM#0d=@aY1kd(8x7LRzo8xC7bYeCWQQ}r8bxR9d#91#3xBC;eXca&(&bwmo|5g)r zxCTQv8n_6|SZv&P$R{zx6k!#$uk9hJ$uFlRROQ%}ZZjt%=5(%SL_S?T?suxYOhdv4 z<{B)mz{L=$-y*@7D-S%fsI>dxKuoE|Q4P)zAX65?V1`TfLlAx6Hj!+4JbQ@b`ij%f zZMjzEsWYGv9luzU3;wKhkk!@T=ud)tgsHM?wg~O6JD4GodsI}&|>nng&N#^5&lN&qn43HQ4~wcFpy z!@R3j$oJ0O1BnWOy_^xBntcg@A!<{ffcuFYHj?svOvB zbndc#rg99my`wd*6Gi@1new5K5gs6rX;d^SBlfS^T)I?>q|fnW32pE$v@rD70D=D= z6s9lDSvMg@!hd~Edg~Gjp3L3zrTZ=wpu<28=CeU=SHED5C71Q$e6I{)o$@%;ndWgD zq4UPTn;?8*VnTQ2u^LSb3sERosy-lMGV0-mbf2^e4)bR4!CFiM-z~0WLAGV0(M`YT zPsk_^ZJZF<>4N`nWNoSK2R~B$k+>#tVs6C!(g)4i9bf7yxcXI6W$t*ke>4_gbINCt zZ%ZpBi=v2j+%=J|(6OhBEOmEQgOj+-$|j=h0z?fOMScrWvO2KjfwKUM8@ysZ&4Fu3 z9k+MdV#wRI)Xix56o=y9$jxi|*Y;tpQqH<`U=gFCM8_p@nKs;Atr@#@&aTVjwKxp* z?tRbaW=p`kF%?EO^EK1_$#|FCr!s?j!-P&I`SM*(`a!z2DV#^mhIgi*i$J;D@JKy@ zj@(&TsSV5GAL!`xoyhRbI}y4o;}%qIjmEqRo`c=N;Fh+eM?KbcIrXf*@KILBG1pQ~ zJ;K}JcUG2)NsMzyfm*-2MYf_6GDiipYmsXl|3+)~pGp2+d*HkIqxjQufx1HfUtI9R zA_=8tlrSO$HYFM_DEK~Klk|Z91@rmxTG*tW0KyPn60GDuOsJQyyb8uozE2qcTwPQm z)&|_=gEnWoYtqw->2CC9@cYvYpeiF!c5V}i-rM3o1L_Bm1VE+xEW3}GPnn*uHL z#_g(;K%rl{YIg0QqTEMfSZW%i5+zJp_;Nwbw?kAKHuZ z7=={F&v<2pzsDH2R|EV^B(|W_^Q4=0MWLL3+K_nhO{(?n6Oo=rI=8$6Nx^(r>sMiu z6}afirFU2frQ;Y=i{0RLMkae2Wm>lvBCk^d^HM#M;NYkt8O>#!>FV9a(jSX!KBn=s zZDpHcI>>5AU+95HX@J7`z4Kh{82BXrE@3I(U#t=J`zlvpwp0w0CRro@Vkfu{HWJqN zx!;v4r$G~xpc&V%{v@p<0|hjD`a4u!$b*Wtvc7a$AxG0|s5qJ`BW0-wWH0uh%235p zk~O_XP+6q!@4H?feQ2{b#v$;tzrm@tBu4>fb|N$s^rXH=!gEy!E-NBr<}NG$U7wTr zHd@zC{7R*IgU8L@^E~1KAjV?UEmO^h2kb;xe@^^-z`kN5dT=Phx6FhV462F?FxJD(8R>DQWQX44E$gBezkG@Rg9zzZF|Cjo)&uXzgvrtd z7{sf#D!AMc63j4V%+{1zw%-3GwgjXJ2ONQZ+$2oN8lE<6Qfske9M;{d@L=kXU5*qCmb97cleTXC)_6th=+gYg)YgCLzf zK5#{H=xhot{1wAG(Qq0o@-9a^NgDaNKF-7HP!U2#}twAM^eNpqfQ- zcpy>wixj%WaAisRg`0>*@B&_&986ohB>EqH=;$ZJNYv~g#r{lrwUCb{^KT68Xr%@N zuKqlBi*5r-+E{)ZNLdaLS`EkS^?{X ze(fXW*==VHsH=?%>Ym}7`a`|C{p$~ZgqzjNAe~yLKobct{S-!URMwEngLahd;~{8i zE0Yt5!MVDt5Vw0GyF4c8*+V1ebjCEXfkx!zi>3@L+`0A3a)s?H*Vg!XlHX1eCl8JJ9f z;fhq*1e9hTp9l2n66}m!DqjM3)xmi|XIk?tU0PIiFM#703mjC;c|Y*4|goKe0rv}-C_rF-#ufjTzq9`tDgdb zyAE0KT$;hba?+JjN#PDc*$>K-z_=Q2fE2Gq6JCr^SWfSLM)rs`h4ahLV>jZC&2G$< zHF(zMF@Y-1ADcjS;k3EPxD5E^@i(XbaYfxvm(8>^nxom;35x*%w71NIR+ugy*iOs# z|AfOc^5%=YQXv`hCm`Ily#POzZlS#CWSZHzWXd3pIR1uMVNe*eN&pT0)Qm_zrf!JWg_jz^JP06#LHoIvfLX&9A8;F$PPg z@Y7>mf^L?-b`pcGcFo$=7=j*d6r4nJ$P(!mM>8;h1)$b`1Mb&`36SZo{JYNB<2tCG zmY_=9Sty91yrc_}Iuu4S*~Fvwp~igjN#2+^sTrP)OZPRJ19lUClX3N*3O1`kJ%~Mv@O-y#2pTK%=~QPtI9AH7d<7h zUCIa`LKB&FmLn$3-IQ%*GsA?{EgObyk3oZ%tL+rCv6v>HM69WBxyx=S#CaQC!cg6 zI~2`(jeF_U z;P6Md8?AzFyVPafn`=1YbSemASZ$ye~-D~;Ri z&q|^mtxG~H8z8O_nA4-#OP=o2Tx4KwLGm^XW(stcEzY-c!wiw|olliPOEg%6rUwWA zVnugAhcElE>q=Y6>0(DUz*D5SQJpqSd0NTh#h%Nr)`<)l)NMUrb@CEdw8mh54Wd~F zF1J;o+&|*&R@Ehd2q^iWc8^%CrTZPR*cNzrKXn?}ot|gK^NUj$W8PK2|sO@9yOr^nOed;lm zGt)XXAJ5FK%EsPmkS4Sb0Oj zF}U3nF;W$3n+bG)Tu%*k7mE6OIa7L>k2$z&D(epo2U&Q+j9)Xo_KGg2@Q#(;1!Y{b zkte9F4y>z(fDzxYg57dJHK&tvj+1fQ9xw>ABYD!Bm}HJCthp(=T^ui6SLwWTvrhaZ zvQ#i-kZltnI}Q=$B=`IJ`Xd;mpr&z0i8`4$ePw{rs7iE93bgXw81@$Nl<#)u*wg8M zLyR0e#z$lWC&C=+)qmQt>K_w-z!%8CkI?`>|K8 ztJNm2n^7B@UhH{xA|T&if@5;Oiu zu)q=d^8vDJ>Q^?RzPwo8MdPY&ojJDoj2I>8E4+{aAjZ&V?NHVFD>5RCMC1S+#Ip)H zC~S;!826!jJkD0zW7|TEM5jb8QVIUrRbH(vYq@iV)@&9u&ws_j~ zZv?{D!H#i8ajs+d;;CZImiAwikr%C~DFQukM>6u*RCNR+%mGT#_@d`{@5u?!ZB&ls zI_p)(P7OX&U(#PqVHuOV_D9Qd;?X?&wTqlThM0h0I*kGnMy%i=4zB#~?45kuyGK26 z@&kMoF)YJ{%Lqv_=kH0Pm84xauNt`X9~qT}o{p_1sC)QYiNR8Jhg;9*gJzW?PCl(r zmUl3U4YPTyL`m9I5s@;(i zxof2YeI*;E+*OvA+5=#LrIA6Jx6fyqO8vb2{8;IKy8`2FciI!q?b9;%v2{W6QZ9kF zsskW0FA{PDO%en;)HrkNv;@Q;2mFiz3eWm0vL;zCs9#_TN7~2vy|(`RgC)MUk1#5W zL@G+UMW8kMS`2>j-OKIkE&gI%r8J&0k{AyWEy84LfcoSM*1pvpF;`=)E zc{ygRt?B$ExceBbDFV#UI0#1m(IDr|#qR+Z)js;a-9^@eQiT+#)~menVpBXfwu|5M zLKson_B}SgI8FVEX{I)J*pX4>QO62BvR+`4O9Ui)jwyzwFiQw%OD^e1vGUJO#zfrI zVSpePCH>1YNp}t}~IjI`@nj*FKRs6DhEEWQ(l0%gXg{($$I;dZ&t(s$6T` zYYn=Atn49;j*=;G-4l~oW;^<)64^xg+#qgzX=%iA{!M$(*DMo}jRQ*Xn)`a)eTWJr zep*pPK8$X$SdkVsG`PTvGv|rqe>K!Rh2qXke{$b~PyTL#!&|-gQS9!I2;$!+?u9gL z7TA-5tJaJH_l3JI;7d|shvJ_SF;#Kh*9v_@-9aA;@*2Lol*`MF&;D;-!oYLkX)L>G z>+tZ6{M7(!VhFq zvmGe=V$hBR35zUVkT1M%q5>n?gPg&gc9xo}V7=;2i|{kJB^FQb5+Zs4%HqfiAu;hcE?R;nL?LbRd%iL>jMt=nAGDg4K(lAj|( z36>-8uRvT=5U0ZCj)d@tO>yB={ZoRiaUG$0+_e!({V&kVRnj?&5SlHiN$pZ`AaT9c z^|1YptA#J=i^xKBy&yV<-VV|Q!ROML zIlJ5Kt2xg|K9rT(@xo8q6MaCf+~0CgOaD%x-_saXEnYi`!Z^c`Lri&T%k6$g0EA|W|ly2(3Ce=16hjRhW`7X(kwC~4y(_{} zE#y449mmVVGr#A@k!H8b+e4jM>Z~ido6-u}BnUD^TH2dUsy^AB0dki<)CTzlVvyl3 ze|}axeAkrvemBGa){pQ)AsLT-^0rk`#9Fq1I@1 z$*c;47|>IC5Gd=feuO5TwQq?|#j+{E?v%gyvr$uJ8Z5GGo^GLMJCXJM7y09{OfjZ_ zoMPwUU`UAqa{o;NEW@3$`6J_=b9c_zkfW`S+Yp(B(Mx~K4) z`%E))>GevwoFqLNUV_Bqwa^nZEaV#9yu~b|DVPt~n7Qv!twRs&{V9HF3)a18x zboS(8TM@x2dj;ES?))$}S~~0>o&+geY_sl$oP3Nh6(MRb65CF|G1d{Q(~{O`;VDR^ zweht3id^H&&kwt+n-)q?D{+%X1PDSO!qH2=gYMvYovOr!ytm{tk`lc(vSAU-Kp(CS zwMeX4%C&~$2xx^K;)3I`XCHcg;=fB57l= z$)=ykxh-097Gzyb#In`N$NJ$FN$54@R@QF0Wn9~Uh&BAb(@)wzH4}<3LOP%wvNT{N zZ=7}2-O`!`zime4Hm5Y~nlZz>+RhXA;?7w=Px1a>e|I;VzCVppB~q z_4$CR82$-W|Z8VW*6MzKz+7j4{e81 zH!gW++Tn{IkCqRp^~boo-T*;p(V(gM+%`tzlo zaL`()WVjV3ZUCuhY?*L&JDtpJB5%~7{0gN`O9{xz))^jaX6z{6#m**j4|QFhzzD+6 zs2SdkN|%N8WB8m~u1Po&dSTZJ93oxUk%TgazX%*W1i#+XmablXp;g71J~o*We9loT-(POFlL z+`(Fz-Y-%oQc<5KGXGKwppOa7gQ$^$i>ZWFRHYZ&q%VRtc_rI@3z5MCw4OZ*mw=kyc2^$f`DId}YH#HBUM(EZ_eZA~ zyH}mb%MWlznIoX9v3YscJ80kB(#g*J1K$*i=h9?n@s#<5rEBrIP*>+j`}Ooz)G-P_ zktqQ&hs6^Yj0^2I_l{0WEv2I;$`h9(9gKRS8I=e3@#;y2+%ct4_BxmRhf>uxq{_=Qd#<6d*Qk&-sgdKE8(wr;P~^|3U*5yvT<)$2L*J`>g!HW&r-jx2XHAp-bl=KcsiL-=8jCa zk%BU;oiybWN%s~VFm>0RBQ#O*tt0qJ{v`E2gPlq!ky&3Or*>?imC5b6^2a27us;zt zxu4K3bl45m_8hn@88fHNmyv9W5Oz)N~6w&m6{X9D- zmJ^-x)Dy#BdV*R=5L&NA)xoX|jDzZo0_NV?{e{mGBIx(VnjzD=%G$=~ zv)VlWK7(pt3_6^~v#FBTQj%c$_hn!wrhQS=3m#0_RP()*|1neBBE8|W&(dq@%P}jz z)v-G5i=0b+4+U-A4ZdpgK^G|~M}igrK|sF0E~|=Jx_N@Ppc44Uz09)rAGUNsx1Uu! zD)ws#izasJIg5acU|q{`e_aO0q|4vCYGPsIVVa&LOCT&Cdc5|G#1|RqbO=( z+@M3N{R*#x&`^ai{`pP4TJ_)g7G^`p1`z3wJ7|{lOJPay*_QQ>bElGy&!btcBJ^Xp zpI(H8BWfk)@mU%*6J-K$8{rft?zwK#2EdhZ25r=DiS~ccZ#DZbK0JRn&d%k52+YIi zG&iX{+{e)d?xjQ4P-M-e9AO}nDVkp%Y5&Io+_)bz5?}`!@QMR7EqVB>{1I{2K zG47oN$ngsi^5;g9AAuP0n>X5qSBl>ZA>SP2<1Ez9KpHbqw)(TSLJ22}Q5PR;Y1M>J zl9sf;Guo%Z&Oi^}mJOs~e23C#*Vf7b%gFF6W$o^|d@Z^$Bl9wU4@xQQ3EZK1-5-bo zx?;lH8cB+bc0R~<>^8aqe%llo47*9IvGSe1rx8xGmRM-C#FV8rM@{1cbxbaHUN~F8 zHnoEO162Nxfrs6H@7YO~SN}hGJbzu1@EA^86?b;(?-{usge;=&8g#x{4X41j;pSH*!_RBsUSfn6tVC`R+Uj4!O|fStol)`G+_d> zX@gkqBVP}IpC?OvfQNxCd|~rR$JwR*;>w1?aG1Z_@Eey;t_MwZf+3jq(V^;;N6kOfN9E+s`}~_B zYY?^@FO?litBTKXyya-GHQg~hGLr#pTt}L1Mxmh;;3{7r(-QYgZIU+y1V1IdQhW<^ z8e%;GRNpV7W1eKEEDl;Y_^#T&5AS7H!lcH_>Rmo2d=0`-8KO)L1gz|D$IHpd)fGbV zVBLRkPY%YcS{gng{IYqQ&FLC5t5Zi`vtSp^mgpTZWt9pHM_TT><|n@zCx?YuOWdEg zQojquv;uO{^lSG+8F7(* zD$Z`poavv+N$Y~%i2M5h>QA0D%Aj=n&<+1>>2+?S+7hm``Ey$zmNoJq^=LEs7iA_>QaNLiF($B1Dc=B)=7 zC`1o06C9}a$(Qyta)=>Tf5Hdp?>sH503t--*@O&0tP8=M2o=_ih^OsATx~?|4v9*0 zL;Lw_Tc+ypj8Hg5;bxYq&E*7V-%elcpOSeS(#=hEA!pL^*)O$jI?i#vNAe@H3|?cHilIz4Xd?@XCD7< zy*XD|g#;b%hh;e6Ics_IqaW7vT{JHj9vy^g()Q(&4ea*psS=p4!+!WSIOI%86b+@5 z)A0_|Y^Rz(EY_0%XzPH0!=9H}l763;x&GcNIK9b?K*QnY$|Bnj6VHrvB+pBh9L%|m zI-!a5(OYdkX)@vgzxe#r?*dB7!e6H?%^hoULbabABtqQyh33oQ2+qb=cB<;I^>Yq* zb`0+xAXF*p?hn;ge{MvgN$DuO&M$06wPC|A@nWXH)m+`!iPUWSRfZ-c=?A7t{yl2? zd=2tV*1l1&S*!wC1}6Yztua~v8ZvI)3S$_tM>*9JS+Ss0r8j90YYN~P(oGRUW|%^` z>w)7r*@-U@(uoi*etc^<#VU-1CRe~_85atpD_9x+<6?;w+D7-Y>Hup(;1$|CBlElSa2&w3 z)o^F^+z+RT+py8s6E5*run}Ebp%62nh*9lA!IHb9#+l4OW?}@VoYqH?&a74FhCyWl zbYHrW{YFnWYR8xS`4agd<4@W#DoFBL`Pl&Fxid-_+53=rV+E^}bp^_1)4q{}Wm03& z0V5@&SMV?{kDKTphW|R2PHmHe5^!SqGeO%m(+W$)W1%zzadxGeS!4d*NkGvZl?l}V zu=AZKH9iD8Bu_s#jnuA0mcmQ@s*T*0ug^+oqzeo*s^Z~9ueO58{8{EHq)R!cTr5kv zd~5V!p0lVH@o*pk%3nYW?xiGg+_qIHP7j=leq%h}oYahh+x&~gmi`2jz@F>&>NI?K zPiscG;^I7d|6ubUTQ{vML^?By@eh?*49NgjB;aTNczq=TkS{MPyeI!rA>%kW8!fHP z85~(QuRG-v!+ar$Vn(EpWQz(lxo!$7Zwey1HkD!k+A<{XNLV_L*4ppE=>z`Qu)ti{ z=HSyZCIAv^$h4+#U%8;-a+dX$_!h6JDFX<UWqroX9rgas^@Pk{&F3Wy&9uq07RhLJx!XIt-+l5)iDbJ#-AQddsbov4~U z0LjxSHu$IkE}?c$3hdD3Wy5N6qvd}Ajx+k^_QWjw=@doU&>?uHjT4!iHi3!644I?U zSphkY;nW@fFn#B>7?$Mm)vb;X<}~GqWkc_0fq*ou*y)p$D$?OsC_K%=x)Znczpr& zwwy#@m@x_xsF#BDZNgZGcDxWpM0HtNfN|3$xdA{RXX?vpfE*2KPPImuG7Gs$^Y{XPZ-^gjh(iagSFaCz{n8xTK4Iw<7GgxS=vdiT-P+~rql(+9?{JkAn8`J$uq%w5@n3mXga@ty$;`fg^nk(HEZP{}Mi=Re*e?M87%H9a zA4`D-KzNecH>`W8-3$;Qa+JdTgE(QB>-Q}AMQ*KhZMS@oYxElSQK56L?QC?`4fC%vfqiO)5JKTJ*L{nzidtEUE_2f8qIVu|_IqZ9PoDg9 z;{|M|)*=e`1k-E=`Ntii`tjxr?`?ps&ae_V4cI0T2;2MqCn0XD;QqrfhLVpXlj>Wl z2U~f#Dwzy2^g5;9=HEjNYN#B(eu+x;jjhRu{L{2LmG|MK4S9~?`jAdl$gByl)xWfZ zmPj6i8Z*Ug-z%whkM}o_4uuNo0wAB|C+N$8Q{x&Bx&rJhb^IuN*tv`RLnM^Ja|+c# zX#=!b5;RVuea2I%i!FL6#A^w~w0XeHunS|GaEJ<`w|X;rH|pbdELhl^OranAP6;Ss z1@$Xr{+-nmK;(O1B%V7GO|>F(rgriS%eN0KzT6#$a+-{)@+(R|*eNAKd<%6GpS6kc z%1R6#W{=~6trJmH1?5y_Pxvo_50MiB78SBOCaKeR2(1t+;T6R#qYxZB84{ikNI8>P zrn_Q-o$6WdfJ`TL?CFP*VtQ+-iv2u!JV*113Ldr38O9()7U{#%z=c7Dzv_;uo;Zfn z6))Y5RnHhe!UYro)p`kzZ#YsQ_dMd)??{a^r_$H3YW9;Pp`9nIJ$-5T=7Cd>hr!8TO1ydj#P&+n_0%FF(C7-uYgCkY zC_t>8_7rL;-mJW7v^j%J99#vVk}#Dhj_y41{MtztatG75;Rz&kMtp-0GgJyGj}0SXed?m~g%+2y8M)ths0o#7h7szO#HF<{8 zrCfl@52K~Mp3inFp13t{wc4x-BhJRWM(f6MpK$VHB+v=9Qo~m@&V6;5mwUcb&LDS2 z*2efbweJSEl5ADvD7PJU;!jR z2_H+F1MvEO{K+Vp&`*4i_*cML`EvVf2a_|4>?7~zjJ*^E8BmU~8+o(I*(HzUE+ZVN zOQ0BqzK!If`W&-&-lc%rCO-qhjlWl*mLGm0nK2f4+wg~yZ4>QktQE002D49`Ht)`S zS>*u*UW-)>0hlL|kkcG$i19WAcLtd_5XyiZGJN?3xTk za)aDHaHmS~@HW1pJ^X_P-7np|i_h9k6Tv|gkY# zLqfvB=1UiUU}(YKENuLvLK&32d&Rj9Ea;RC6&SwwyCgWrd=jPqHrrD`=V)3@BfH0!L^0D$V;`_y%Nf)~8O@lKgi73xn?4SMeh-kDKL z>xxZ&I8SwcW5O!sF3}!z0*|p7u;1neN~evize`uM88))Rw?Sk-Yg%OE4c~w|y&jky zE-fx1q8dDJolHFRflUt#bl6fR6Ti5~30bvhce(RQX6DVA%MsazbXDW*0Ey!_^A~mq z`Zv+ca%lUg+mU0ChGVB8u3p8c+b3NmTy3_@DB#-+Zjcb4vsNlv1=RwMolhFwlqO^O zz+yOVIrcrTW>=Amh3b@M9QA_bX47I-mLx%EZgOF#f_;6{Dgh$v2FKYSWUb>j^^k(F zN5v@vJ?Do6!TqKH^)|?)kLb!66X&WlFk=WkW3M1}{{wHfZe%gMWc}}MSz)I<)uow7 z33TLm<|h*c{TpBce-wnSAU0q@Rv3?OT~xewNx+{A4{ZAL zW7Xn1x8MQ=jIWU>(=DXkKWKNu;}rFCqkJ)33eDNY9DLy)gPQq;TJl%CRVd2C2`<`% z^yUhEC3h8zJ8sRJ0~Wg3uT`u)M-Z6L?GiYC;s(g?$o?wq4%|j=Tk_U>?x38I2oH3bL>qXx0HMC42xJ_nS(m@Zk z2Wg&_25)%B#+J7K523tfXDbzw!wO~eY|ABJGcAno&oK)!%zV7+rso-ol4+0PltVWl zhyL?^PHr>1g_?PE1CINm?0nA`JWRgRiV@9l{QUZDT*UOWe^10AM3RVInEko+WP z#=`8qYy(7W!7>R*q=WHqoqQ?CXjke8nk8evf8^T;>+N$8sc}IWep|mPZ0a?WG8#55 zY>n+J1_uYM*@t{2lt9LK)hm9!BpzgZj0J%6_s7R@aIuqzXgY#SMfMOM6N$ixRgnSB zt1(r5zr(78iD)@8vKoaeU@hBvB?zt>4!QE*!`0ngqP)T)G^ZDnR`yecCJ?s5Yalk$ zA)Usme3DrnN?GQM6fw^Vh|uI0VVbUKz@ItQU_4(-DxTb!wA<;y9c~K4^(u-9FHchK z`h-%ut34)-ttwIgNiXp0_bTS;|4szJ#$N4!r-c@tf-3T=jN~{se>8Wloa5X1@CsHd z&~dsMlTAmR1P@f3FJ2kx1Sv<;{86&W!DJ0SErq|-B{+L%8*N8mnB!?_X`!7!wk4@i z-o!=*thUnY&bgWXzrCW#J9l<&@yhNiB(Vky4e9}D(xkvgF8|G}`XTO0=f&XsHS3F75?x|gyMX`e$Xmt&>U9wBe${~3MCU|R^v2nQibLZS?!}*m+W6z+k zfG^IbbK5%L5oR(RL8k4$^yPbUNAJJTYE&g(qau@)jCIgiOX1tpfT_#5tC4G;nEMI^ zn6&f9R5HK<1TY=(l0RG@r77~=>CMJ^!K?QSjx$R&vR6az*PFmizKo0|jw96N)N$Sg z`rS&?fXp|Xm!MvY%KI5*e=r7gay*f>j%%cldI7y4mK?j>m3AQ3t2BfF!g>G^R1UBR z$%(R`;zPbdvc@hED(|Iz^1h}(M>}uMcRsWK2u8O?aVKHb?^cSj)>1;=`7ytX5k~Ib0>c30`Z5MPu!QJ=56u z=cg^EQEG9Lk1DY!3OP0yp}3Y5?0Z_VDum}$PJ7DUGxA!twb!f|(rW3~WX3Z&^THRQ zNUBd#a&eB6i1=(;DNmPe{cG$EG-=1&PbtSH$m4m$i2o2y*3|Zh8`)b#v$qmC*=|To zPLF+dlEG_I5p}Q>zp5}aYiVeQa`Mt8n5LEoP7bfm4?$4F z?hs?@5}EF!NK$}vc9Dd=>4IiaHh}ofrILA@G{<`?L%grjUn48745~8Qvg@d8kq|T3 z3$(Lj`Qis+vv)M+6vlDNS7kE)K67ca{0h$?2pb<5f4^@r!#1}Fwd`s6N)h}gEPb~X zr0pv#X&^cz7JwUtERrZ8*!+WSgWjdPIk#Ngm&@cg3RatY@yQE~*+!fwkv%Iw6ldw( zXT^DJ!w!U^>U_W4L{%%O(7%!8iMD?AAI*{ueEE1rD`Y=Dh<+SEChYi0g)jOY@E%R1 z(Z{kVw6IxXKahMsci6W1l6o}WV*g&Yj;c$ljSi%PF6C0Lk@f~K-C1; z@8dCpKG*oiCvjx7Z>r>t^Pym-GNsTTXy?7aMM}bB(v~=Fe2G?z>CM)=0MCTlm+Ty2 zy;)~E{7|*rK~-loUFO6o{V$#u#nFo2*z>6WaA1Tge6o%~`q~o020$)ra|6K}HoE=_ zV-QK8015S~--9#ME3mLiwQ^OsK&l%b3KOInQ!^e6B}xz@-MF|Bm~Kw7y^dSmm)|x# zvKn}eyKb~BC|e=6Qu@&tQTRz2m9!ZcTc_r$ty3lBi?USjz?%yPq}^q zw$Tp_cz=~rZ>Te@B)ASg1?sX*?^`K7GWm}mHi9eb_8(2_5!VLcwbfgOeEZYx5TwG& z+&Its|AimM7j26AHL)iLe(ofgNCg`6I9I?iku!_jL~#TyNYEKg!d*7{3bpuMws@K6 z#irt`h$Pr>_6yUhTaNPx4zB}o!T}nX|1Jv9nFN4}FM$nZM~xM#R=a~mgL4Fv>E3l1 z51w9WoUZXAnjlR?BRt?QrlAAWOA+3xPl-1R)+>qV4C?l(B*fQ{J=#4n&0N%Xk)3A( z)rXz{k>bo1<@dMNskN1zaqh4Kw?>7q(T5tku-~Hhg@hom(eE3>zMOQs#r#H~@(@o% zW@gB;O0mzC2=`*~R;tBvRJp*VfF$TU7_f=JL}Cfv#@7y;58hm)W2MRox@L!V$m9@Ivf zsfeRWF>66-T58|ipo&-?#_2uCZleEwi1$pSmkl70?OriLzcN0>Vj1)V?`AY6QCfAm z#^L}@7P7mk)>oFW&ixxv2PdsrePe&;`=d#h%jda{@0;jrd}KG&olW1gLz3_|*jx{W zsx1Pjq_?BAYWi>(8D0V>0A{xM8L>qv6GQY$R?LW?1b=CLXUJ4A(E!*G+7p#-QA4;7 z_9ALVXytKMW)W!M%QJr`CpN%l9U74=PN;5Ru@**h{4&}}8`?Ny+#k$okf?0>*Txvo zH1Eh}u7Mp5o*kU>dbvJ6RtmF#s1@c78~1N0FSSfOGhyS{8dz#Adt;82!8jl4Iv7lZSYh4r$|01XVSCHdZ?AyukJ8Np9$9p-H*7 zQ(H^IEu@I(G!jqKaIEGmBKHyc5ctfn_x4a{{|P2O7~40sP=VZ~rQD!+-{B@rv>Q~4 ze@Cii7qW-m4qcIE&=9Yu>Vk+U<3-1{mk=y~eCVB?#!6P)vL!ZKaeegO4cATENRXrg z4L(-|m9D;(s8KG&WMsQgJjvT1*WV08GV(I2LYu6M343mE3tSug2mBRD<-g=v`darQ zvKQpa0}&JVCPs(Xb1x3om?e?G6uvrYA~Mfz?#g&%Jbd`%<_@g{7^;1|t} z?&9SIsR}SIecWwN!n<(r&+D@%`jYV79c!1ABow^Rt)7_Dtu)-Kb4mHTGEYM&#?^MiKj^7V-?q}pm_^0G4($!Q*mi%UhiU>0RLcbynCMA;~l921| zr3HpWr;)hIQLk|mLs!S+Fo}aYIEvjCm4FFJNyCO$rmd6gY9g}GME0Ll2)NOeZr$q6 zV4>Mk-1|sYFJnPAzdPyg(>3pmRdgvx=&&L)uP_2Hs;+)lEXHPxA2DxYLxJv{*9%vU z<#ZHx?L`*O03;A1rJ{PfJ?ImCL{-H%*}iHO;M+Cu(-_;Tl?)>kshHH}QM!T793%`Q zy(ah<`Y=mgCxw19Vi#WDf0IJ zKD_&01Ry_wCVpU;c6A|+#A&DmxDtJ7O9W5b*55Dn)&jO1*?31~IV=`okC20a8fn#^ zv%n$E97N9%q|cQ|B~h%rmg6gA#1*j3O0`!M4i-8y&YT~woWet)|5M&MgryxW<~5!M zMfaxehv4FW_m`T}0WLwX^S zEORa2C$vMfuj#Y2v74^BsZO}a%1F63*vUib(!7{aOf872jEHav&qVzmux;XOb9Ta2NuZ9g1M0eTvcA-TB3N*4vWoE#LD1W#!V?ou}8Ot8&`eWDCo4x);8Pt@YzOdO!OdTXX<*N%fzf$BU$_8 z=FBC$v<|_4CCz@^hExE1Uc90UEUa{QgeF(_Mhf_jPCsKqfwG6CjQ3Qgw&wF)jRR`k zO$aYvG$2sJ{p~Nx@zzqffP|A*+#Q~7XwR3|=4+-`E0j~J<&!x^gwO76&bQOQGTtXt zVcLCJ@UFUqwULY9P3%Q78NTkrV{_Wc9 zvxb!IWQEDu&@%eB1C$F9BnZEGGAN%S?RCa~ZQ2TDo7$Q!*HHR&bECLRc}0UpTNde9 zbeq@yU8jhi2}@->MOHZiXG9Id`)P(*aH{Sn_)Iy=>s90u&g+aff{J?X!n3OIoY0Ip z97Qzh(Y{vRd-RY}QG-rJG?9~j{_eHTR(%{9?17KpWRdg|6;UMRryCo=yyqrEEA*gh zaB5&EpSWHga@~;uuH2#N_B)J|$$e-ke%>2mvrV{@ndSfQtEd`)QHWv3HA`@3NKKn6uI_txJgIS z9bi0q%BEM0NVq3Wwy!TX0lGIbN&`vAxjTtQ-oF1Cm~t_D@N@y_>_B&)hneIKh#LBG z(7}B|E*OaIo0dg@pIq5^X+PeFx+``z zxU<1>H!YB4UwyAw2Y4TyKbGWaA*n=n_J_LF4k{8nHc?U(%b3sos9zXsV_gr*Rd3sv zye<|%rKQ9EJ4o#CM$5a;=T|8uA8vHa@lwQ}2J@x2AzKo3g{c+Y=q_f$5szZxVFA9G zcKkO5*Npv_m*zCH%|r|u)~8D-)-v1Bo^ zBDI7NE{nP$iN{@;6Q&KCY1ztKt6r(ilf#4q@SmPjk2Jl~Z}}3>@#$Ne(0w0-%cUCv zINUmkZI8(K7F}hmR;qfJvaCZqNvC?raAoO^np&`WuW(rqzjP1D;g)af7l#JDA{zs> zZ2{-Yjm)rzq}HL((7>~)z|QSeG}BOKeM~P<~K+4=FRRXoePpNCCM?jNXqxM)&nPtdToJ37*qn=w2x z$CWg!T1ijI^>8(o*%*@2nC~vzS|V{1HxI)d0>9Y%Mf(#S_`F=c`6dcZpoOj-o82=E zVkG=h39*ZB1Uv}GMtUH;iP<&?n$0IB|7;F>BQGQ#kK-FhEp6W4oNVvW=+$IOE|i$j za3>+}FZ21=kv+kn%H7TrcX~u7btwiS}%Uy~@ubl5*!7|1gmT?@RL^<0KPXl71LQQhUkOYxYlt zxQR9YBoI#b&)e%eUtv!DwWes4B31!MIKXuQL!LAaL9|f;bPU@y=^r^emccrbN?ajK zwDI>zl28`Ucg=VKZ^1p!%=l;p~`W#45fQSH`KkY8PGzYJpTq6Hr02@jiM@E71^Br_Y6G!*m!xo zdj-L58N6KxB)N42IbaO-F`bM&)xsM5DQz3#YORJ+%aEL?Z4UDc^ z0E{$)T&b43z@I)1o6=RS4|_!U=>fwQ4lW|ujNl>v6^pCdpBfzuWngMW8J=E*A_Dw) z7d5h}6DTxiC?I&=A;3HFo{3QV6h$Uz`s$KEOE> z8I&oVFU@yB3@NQac9?#d*jbVb1FZ!OxP60}cXhF6eLQJV|60jJTa0KkFwZ_DOK0~O z+WYmYL4=9UI{LLR136@c%sp|w)`xi!J9bq$kv*+FC<^5$Ea$ZqJw(owA!j~a?GU=foY`)Q4Ko>Bz`3RoxKk->>qqkt9+f--3H z#hAf1S8jA%K3kqvCfb2t3v)UNo3_4?h?90chHN`v+!nr-ye|ggy809$U~*=-a$J`x zcDH9Af!=NioF_%6Ik~~K1si0&JH_3uhtlI1Pn$(I5+NQZjpGc4g(DSB$A#r6zc0hX zI`<#<(5(B)=lChzwioLWmBhWb5cVlx@$+LZm9t;N)yuBS{!c`T@*A_PvOS|5INYRO zxxrZ;6iZTg-(N%6`BF?`vfZ0Z*Qf`_a(!5CQ}K%)pYi-r4`N8`op3D{Ad&z zP^a3;E9GohS{mEFp_IF9Iw*UYVED%f{N?$#lOA5gA=jW>9I~Z> zEb*xTG+v`gz$8h_HE&o?$BScSPevPeCA0*)<>0FrS4>tq-+P8L$ql&Ox{S_<0#eMfeY1Xrhv zls)mh3|rb|t*#r@b+7%AnZlJ|;Mj?W{ZWeD+9W`i!b%d^2fh82A(n58Gv-bN>zO7* z*zzx5`Fw8&t5n>gM$r`YLXfa-yczIIDc1cSm0|jEG0?!jxN{LV!bG&k1BN7W(gvB7 z4>kbxZ5>W6D^DNh`J;^Bsu$YtY(Gd zK1_q%#nCc;AlSXA(ys1Q8WRFV6ls4$(aGDxhmg=yE2y0Ck`cfQOYN*ydhk<=C&F ze^p~=D>Jl%B+k?mb>&s1>v2*KU(Cf!RJxwAwnlCG75`Q7({lcP`;U|E`LHPU$4TD5 zpnPPng+lw7&ZBh|=#yj`S+T zUPW9jYmx?rPp|naeam$APt#vZmxuRN(gK|a8kox-rlAxjWN)UhD$OR{zp>{|LDHH= z3wmEl!YFHq@}VCdb5xahXYO~KfCC#Ou|cu5|8U3mp9?`&)Por*^OCBWRmsbc0>Ax) zfJC#M2EF^k$^C#obq>_@qR`WCmhN$%BUI9=u}WnxyTzJ%3%KE;^`kSK@Ytm*y|~5t z5lhR}GGRS&^J#!1gEykEFcWyKoqX*iRU4J>&;x5zTpUupeYFC=PnBBar95@RkTC7f zuvO{p26oI>;yDNOMdKXkPx!U$Z2ft*PPW!6OGDmDxUFF*WF@=nEqFY{m&j4+ug28F|pRd**l8?V!i&XcfZt-CK6>)vge+XVqFP7~SW*{O$(LVD1I`={gv z;4J!eZGt;ySh+88s=?3xPR?NbX3>B;gwI_#76J`l9@{dhHP(9Hw>epx4eIfUr}UGIYuC6M(=K z9sA#Q&%0U2U4&1y8S#zFnpvM+D5^eap0i>?!#p;=$pQCnt%=kLQ(Z!LssAufh2S3I zR&djv9&CWXvmPHMD=fVWzC)Y15JGcc!!t{hE-pLizlL# za?6`k@nvhnPSEE!-!RJ2jjFTnu>G~N5`)avIrv9G`~iAnDD4+O78s5O-A*yIfUna*_Mm0zVg zP`jYCu{UP%=&Fom+E~IyxZQmhvdERjXyGc-VX3^}P0vlso)E!wiujdY8^^b&%dqL1 z2JL|85ZqiiFr-erXnoJ2HsABjs+4p&!<1=ihwO=>fwJHI#Jw@yGA-l63w z-$#1^2#7h==8!_;SL_N#C|k&cUc3GDz{NC+^<5zRH-SAcW~b$B<7JuxRpFMw;`BJ6 zN2NzCpP{Pi$WgqFfN0O!$0^{q-98aT!vcKW3TfS*EtZ}ai#2a=;-Zb~l~H$p70sLh z4E!F>Er7shg(b8@NFxs@kuVon=)7|$BKJ yy;kMF%Y-7ayVzP*K9-S8?i_H z88XaLA=m>lfmk){A8@kIrwtGcN0(hlZ5J#VDxHebQ{c~l918899NdF#a~S%@K}?8! z8j0D|4JWz_K+N(jU->K4f^K6}nW;E=#G*}Fkkn{em|>Ge`cXY-Mqvjmm94`|9>rta zwbtccO=@eDfGYR{uh3-Fu3wwwYJ*aL#P&lo2_(mNy4Rr5uqWHrVmtP_Ur^~p-W(TZ zsL}Ty*XVL4-TTuT1y!e_Y~l9z?A5aGD2z;&S? zhtFhILmS|B{x>R{s~R_>W>jksem#pZ{mlVhkg(zHp{6gBToN_#CFyMwx_S|KA zlfPlog#x#RxnN(p&5YhwSP!VCFFZnA>@Jv1lMTXN{7#oes5hcic)Vf=mNw$e5`^#!j7L)P?wrK>l3lX`Z4icH;WKV&k5a$`6wzGEg0+#HzHvVt&E9;k2(Vy z`I&&>K*o(()snc56*%zcwA$H(W&~%i+MG5ePjkRF8GJA$4K8niQ}}vYch2CRy9xt# z9c(TBYl48^<@hyf_d@_o>=SqocnWA{8T`^}IbQ+W#!N+k&)`rYLM$7&jIozgW2TAv z%R>&;tIpgrB5swWoFpN}owp*?pr?>4yfr!a`UTcaV5LOqzA~u_GBzc*KAwV1<9Rsh zwXIE;K)7Q+drA${(Nh;U{>GIOb6eaqNquf==U-obf)GoSxoL4*-rQE9M2$+MM&#D` zj=vNcwid}nBbviN@Sp@Qv;PS$7P2rKF^ivv!0Wl$M+DE>zqp(U2<$A5o#dfVi5hrL z30Y12J?BNxe)2#l4%E0)1qqC{UjdX#6ZZV}GH^Jzc2EktMOXgK0O+cmpT8oYSGI<{ z(xz7W*|O{UHNlb!74^qM;3fk9 z4QZ=z+r}9*v zAw@2k&98JCV_Uz7cWvw;f51bD;G!t}r#ZUvvqOC%=oacAPs>4~t-7fHPg0nfnb6&K zlA+Qc9oLSLCpA6mq(p?6Yf`OvMW$DZS(rFKa1I6`3jSh$OSDj!wswXj&KMFafUR27 z$Fg;;&u*w8e^SH*t!pdshKMi3l`B`nkDX7mfPlQ__ zV(kDDYxY_HMu&EAtzNfVjwXG}} zXmB+O7QwJBdI~>{*5iPz`@o1Z20VYremVP%eSa^Rs$^{(XR7z(xxf$V=pYIq`i#%* zjw%96VGP@9;{}@BtH_Q4gwe9n@8@(b^hnvviwgg7J@5d^`{e7kdKAvaOWmwxZ%cF# zq;W0i#8f4u`C9I)Ydw1G0OoIsc$a}fQ+${-r%MTSk)S<&DiRz}^0O=gtu-9^%YGvA z?c4ZXmbEXa5IYB@xh}v%-ZRF&vQ)N9qV$dbPail-oShieOb`t&i>YKZLQYtZbH{yhVio$WP5gGVi^Csl@*`fxM$Xk{DbZMWy^(STFB%JNm@O$@sdI?E1`s>45)Md5uudNBh4#ESBY07;`zel zxp`|(yvEc9Y;sS?$_>sRTtqH#77(%u5wC>OOzGe)nW;W0JeNEMgoL_(Xz}JBqS8Uq zq{mT&EbR4~{WQ#SWR|SES9L5c&9uB@cTQz}0Lb0WCy*nIKGK#kLH}9Xy|?=rtkr+) zQG4JsB|gyOqq!oASU|`u?l-EVAQwoWRwh&9YNcZ8VG5zj`=PoCLo#WkDIOA-igDo0 zpgU38Pzu7P8a*(0X*-vo4f{CE2gLHtv52C#1VM5@r{Ctww{u)2B$f%p!6N|d4mF*a za9|_6#nffamnD_AxkQf2(BzNJV#31?im^*mlPD`_+`0EFQHEJX*$DVW56Ta zXvN27&4q9gDHlUp%=l~H%pjY7r$~vXT4+j1%96|k3at_L(xskPYv?j`xs_eTbX%1a z8=U17`Rj-lsclu6r?avm`zknA9Ip6%AjXYpy70e9quqJWPPmD?9yC6_m+a@94Y|I9Lz{zuVN-zSvG@v#h=>WQ>f#iGK77ma_ssZ z?s7Wc4zEF%FOa*%xyr+iAVTs!o;Mg+k&72-KJ5Ek7J%d-%BegLR@+etsh_W@A~y(h zo?86tALae012gU1F+HZ!%TOb7e&A{DT3x@7Zp|b0a(*^W&OH#Fp%1Dngdm6xf({$6 z3mYT^l1kVO1Mjdk?9def^CRckgDIY2U@@^3o87!~?7C0-m(0S$fVa1Is^oU3CR2Xh z4BrYMD3u`KDAwd8&4kJ~y_{`nN||6jGRd~Bay>im;QTgZZzV6)8x{1rGb6-G@eod# z!hAN+ourPKiI@=c!do@{Aem~os=)E(-85xwf)#soI1+XDltq;H{hNQS2Z~DWJCOO3 zLlr3$J6D;g?BcaEv6QQ^wnlAr!Br52vd^X+`p^m&jsnYxofNCyhY?~D;6AA&4vUnH z@$;?rXuDHXjrmazoyPra?QZoV0SD@~(E6DO zI@QmsiWOClz6Oan?0PD?<7*T(ML8%B%XZX-42!dm4)d0QDnWobC~8dO4^9SGY!lXP zu1LfZJDSD=-KU^ef3p zj_*J+bflU<`$!Le`&!<^PO((P^!geJ{IcJ?nQA6N7Xe@sHN(11ZvAu!p;>ttmPoqc z%!%?Jgnd(A$T_!p3=vDfe74{h z@)w_^Xkh7{$!suZ?dq(K9Q+cO?F;Ykjtw*SYJkY(F|eZSK>{i9e7-gT$2YJKR&!O_ zCbY4+7_T~^`Uo3P{`MGxgi_(=LWHGD(rZo{*TtMJPd4t(ZJKEA!CF9KfeJ(mZGcbX z_THbi@%_3p`*edJw%z@C+oM>1+f(-0*VS}iRm$*SB+(1uQ^x1wf>Q*m%SDb@ z5$@&iSYOu8$#mN{o{D%bCpO;Bg~N4q98X}8`gg|jekKyXrX(%I;W5nXf&niJ(DVhm z->?E4J#`FFdHZ50vU#c};b7R(opf}89b18C#CD_U1?^nT-(XP+AY}Al>1)GJEtUae zCNmrYmzyEW8N-E#TAm(0g?K8pS%#f`eB=KNN-Z?<#8s@?DDYCmynsppkF66KmT{f43Xtm0k%WKJG;GH62(`~_?J!L#k2j(Qv#$;G%ZP?iewY&yp7N! zCbY6&weC@*$UGW;aG7LAHn)Oo#nA_juosFP?{Gq37ILZ$(#^G-e8HB1boODO#ts*g z*NZtmerf_UA9M>y`QD#w>PlUQoEdhl3gJ(?vtCvVt76T>z%sAW^sow@r{FKRO$RLqL(*l?

VLgyi%86X5?670uxb04Qdtm=zpgtkDjLJe~@fz*19xG3N2g zjj9M$zH#mp-Hg`+s1($0RwIJaWchx5W@pvNpt-f%KZe7hZUU!ii{|38ETsFEciA|Z z`Ho{^*URYa%eJpS-5t#j{2Gowu{uh2Gx|Ybe)(l*(( zLxm8Tq6e`{)&8Qp(OCa<9P7h7LZSf16Bt9nrQRj(ZRBkYHh|k7T9;MPhtY+(9~xP4 zH^}{MT5>pWeBfCwyq_8yzz2#u;Mm_%j@B$imOQ=}HruYS+!l1&L|t*TY6n)*wB(1t zK6f9YbuS9Bl}H8Sc}{1)CC}#7_Mi6$PEYMqPBBrE-@o0k4W|DWx&0rfEpv zj>!S(NfG8yApF%VC|e2o&~Dbj9VGR#7Re@KdcrRTnC`*Vc#6~2`tu^6V)(Siy1MF0 zu~vREv(7axy}?lvrKhgmdqK%nUWxO0)aY8*ML3)i)fP_g+4AZ5K7X9U)A9^5rIaSK z2FQGPHnd22XvWm;s>hKwmj-+QKRprSVB>N??s-Bwt?MoFt9-*NQmr6Au>rzPzr~-4 zVmTTjsImfm>nzI360H-c71?W_F-4hbc8Ba^fhxoRp1*s~Gz~+Ug8~m9z->K_2&Xz_ z*}@LLifwiSHO{5%7Dx`~^>FB_0 z%b-__A!g2^m=3NpB3#Kh7>m6^=D#mCSTE`e1DF3)p+&Mn3QFy^2efAbuCFv-PEZMR znbeb84B=qeI}H_xSF%f|Ou~}rWsG?r#v!sit?0T_R2W;AM*E~9M`#hWpF%88-L-#t zUCcd5!TgaMaUwQWpV!vK{`gA+ddzhW%4ydLOK!)&EkdMxuH*T&)CVy8h`agUJN7aG zC9V!X^OSPeu^;4NpZ2E`>I<4#Y{o4f&(I0VRqio(7ySX&a5w8oDzHKO7>-EN5Iz=C z0#7DY26t?0L4hlCCoq0WccGa@+&|K@BE7gaO}lpQ34iu2qd~+&?y0U=zWNCgJOYK` zY>?q|`b>f)j{iOJ+_i{bp&Y79wN-~t9U?v4o(~7k(D?}WOU1%+>6TaD0u`sr8`NWV zuzu@159WzGO1RTaBh?Qj%&iI%X-|h8tKd{6yBNQ_{6zpq#{S< zEdJlJs>S{FhA=@yH*FUnJfFwJSq7;mH??#Zrt2s9TBHP}{uzc#yZ5HESOHYX@SX?= zv)~bg3pY#?2azricblvuAQQ9S%%Vq{?9u%3IW!gk1NI&z^fVm400kAu3^VDWJZ0wG zyh)k_N*>k~fa^|+3;Qz(ucC(~d}wv+cwr)=>qG-fT2PJ@<&g^ zh{Ss_lD=5JMOO?TRAGJy7W@W*&F&7tlcQoMRit_3g#i*y5t5QoWKB*<8(2fyNUXQ| z4ptEQkw9!a<-MhFt6l+<9Kfrvj1yGplcMYQt%bN>k9@zMH1@F`9d&!2{-FhSq92)?A zlYI6VQhV@IULWA2uj9;nGuPc_BWW5x~+K`ycBots#@SGIDOxxYAIurfU$ zP^JWd9F9k;kS*`q0hm(?Sw=WlF;P|@0O~GfGVjsyalVG{r5*nM++Yyy*Y@7#0f4+W zk)RdhYLdZ_{2%FYlu4+}YTg=#fIT28U5r>q`mgZh1z#wy$XDe^fAN*c88i%d29EyE zg_A(C_p_0jMF*lLlz71%JFuxTh@!!f&?pDiT4S}tYB5NHI<-AMRlIyWD04RFQu}5m zaJU5~J_*@LswD9v|%u*r%<1h)KI$Xsoj(t5A;NQ1h@EmQ8(nu7Nm);#o|x zKWZn~_dS&s#UUZQCuwC@r9NV#7)4*U;_aqI#9RGQD?tjSG2t)AxPy`I`X}3U6Niug E*=&X%`v3p{ literal 0 HcmV?d00001 diff --git a/apps/electron/assets/icon.ico b/apps/electron/assets/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..98948ea682c47f298f588b92fd54bfbe30a653e5 GIT binary patch literal 370070 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%0Ac{tp15`}K1EcXn`;VNH`g_M+Zx$3Me}I1 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


Gq$%jzd8n6e**YAz(E%q?3xJQdC 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 literal 0 HcmV?d00001 diff --git a/apps/electron/assets/icon.png b/apps/electron/assets/icon.png new file mode 100755 index 0000000000000000000000000000000000000000..755a6e51d53e9252f90c19cdb4a373bebb80af98 GIT binary patch literal 32456 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 + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/electron/assets/icons/1024x1024.png b/apps/electron/assets/icons/1024x1024.png new file mode 100755 index 0000000000000000000000000000000000000000..5940b65a3d42d62f38317f14270b28fd8dd568a5 GIT binary patch literal 159736 zcmbTdc|26_8#jJtj9no_NrM*3o@|L3lqG8$rR-TsOp<+>u_aqnN{FF_q9WO{&1B6k zvM(e1KGrd2Ip;^8@ALfsd(J=3YhH8i`&!=D`+eQl88H@S2K%@Ua{&Ob&&cq?6#zi& z-XZ`Fw%tEiF_{Pejv*Lb(7EP6wDc1O+x-xi1Qx7tz<2NdA1~Zs1k2t+fH>5zZ*l$q z{TldICI~o)#D)(4sYGD6q=Yip5nX z&lucBI13(W>G1RT*>N;5be4y!arS$N-|7)6giVPSCXvZI$9Ap2{oG8YTPWkhjm(uF zT|W?Og0CgJCuj~nkT`qRQ1!UD`0jUhFXB|?jCTE>N`38-_qpcT`C`s(#SEnZC*FO+ zjBz3_cU2PZ!GGVhH#^|DE*62jzaplGIULaR+4XSCnMdt}Ico!M-D#WFL(xi}?x6x3 ze!7uFB9WJK2}k5*{|AiS=Uu-2-ZriASn-G;rw6vSY0iY4b_%r#|EgBpWkJE7SOojj z6Mnqbi4c$!$<{HvVb6~6HMEarL9qO{x3Wo|K1pq-=4V-Zwa3!#{^|b1g(O9zxZ`(k znssz*a&uv-367l}yj4H2(`nnhq%sPT_lJ33A1WF9*~{jq+H$%oeolJqO8@nmtw){4 zQLZ#w1==S+%;jRN-DM|8v*9WYRR4RbSsN&R0~_th}So*HjQ1v)9~iAI3L+TDv!L7@FES-qyn* zxU@>-b82q@a`plRjr8K)NKDeV!)bo{6=tNg@ zFKg4S4YdsFhfPe~7~RsVCo0j{nk_N8)HZK;XT$L7#aTBiXV?4oR#x|mD>Qurz8Y_I z1)o)DH{bXZtb%E`Tg=+(s&ES_HnUdHR4-&$a1Wfl|K>@GH@9$8q zD${D3%Xn&>SLB=sk9NdbAKHDnxi;|g1+OQg!eepf>ZroO%w=rl`+!yN)RA>>LW$L* zc#4%zljE6MX^p$1#i7;)Uvm4dFXsF71-g%xfJ5xZq!o4H$HX7hhFuH)KYI~({iPJV zNpjy*e*ej&#wQ$eh{0<7YUB}Sr&S{nyUsja@?$ZXHaJHF{aYD+XWmzybJFV_oy2zd zz0ekYAJP@-W><_Fl3Gron9_4Y{)C=nLs+th3GBaP7^96ard;QL zcRq)kt$!CVU+rJgdQg_>K)T{rV=XuD>`}L+@CY2c+AAaq%^t6CUpjL#$jm6{)#?_t zoN}F>AJP}!x;v*=fX14>CJPY7`Fas101aj6zHy4@a1{S=xrCBm$qT@}74 z`AoF;WDRKeh*^pZ@@*Ra#jD+~I$|-X(I<>if}EZkB`Y#EPV&9>zbHIc6T1p}Y=kerUs%WdbYnF}UcE(jI@F_yoh zaQ;(+XtX5Xzol_d(`qz+CD&NTh2%ME7i{j;yY3S$+Siiw^6Wmb;X&e3I?tf@!$OaLviMm+!xY_01jn8T0Dyg|2>9eq z$r^iFNC{b?W0biPn_#D+Rn0UZ*A(^rt?3tv((D}dYzQF(PcrLKk$GB27VO(XI>6Th0*=!Fj%h& z4kHI2v|cUAMUM8ZE{ZyPq?ldzjo&Xi)BMbRMTzPbs2jGr9sWMhYBV3*3d$m}Pp*Z{ z^B}$^&Fu$pgaOTTzVr#jcm)nJ`pOz5w@Q@?Wl)Yn=;#BEK)XD?XA ze|&t!gErbqkC$U!=7Bz6+)5W-soV;-qBPKr(|jmu>*ir2$|Lt_2Ggez>NVJxmOrls zpXw0A#A-I!?b_qzoV9sIC-y%Iicw>(ScOiq5j5&Bhe9*7G${*pFZC%A~b!Qvrn{`&81DeBTCcHC6OCH^?U zvRJ!@Zxb31oQX(b#R`_s&f)*F$nh-mX$eGXbLj$EUw-GZP_Fxig<)X znU^KaSud@Txe7m&TL#N?BzT4KRkAEyhW#%zO6lOZEMcp~jx_co=kMU^-O*#)!rKkf ze#R^AsZMjvqXE#nR|=GH84A(Gzz5ChsA4=%~maae7QQd9~Dedp$3TzqJ?F|Bi`Z#{* z=QZPii#rzsTx|3<9!`s4G3bC;So}XKLBH(WGEifRrptfsI4^cC=-#TkdDAU&f8;#= zK4VMcgBVZ@r40WX#`cf};ioaQo&i>iGbz%fVxHjn%i!gsv=m2x{!d@BhGuEGMtzh} zgCJk?CA3TkbXjmCQzFmTETKZY7~~#y&s@^D?-w!Q|71aPGNQ$fQ>X_ ze2gP-3=R+mHB-i=^Q3tSZdN2;uv)ocAwPJdqGunsjSkNDG1)V|ds4O`#V%FEX(?v^$-(Ijw$`2ej@(+GiMfzj<4wfi!S4 zq1<6iDcODEIuA%{z<6n-$=dP z_4+`T2q-?w(zV&dGk56GJ{ns_#F)S8lv^}rje zt{<}>Xd5AwPHR6akMdw2m=HW8-6&eeXX~VD6&E?$|G3hEPYRo$tk8UVJ@{f#cE`1B zQnp{0)*SMYqDDZL%0=A1{}~=np)79Dq|8pG6^{Q&{5@BKD&TRVei6R+AzJ?I2I!qF zK~!xi%`OEkm6wK;=)q(HCc$w$5BRCfXl^83MMGH;U3J%X;OhU!&c9>eA3a7>f@q2r zt$Ds*G>B&Ybw%v(`XH6PeRDRrfY9_~>y?+ekBR2jH?upzleC^1XjKg{a1{}r#!d8g z0yg<7I6@-L_N!gQy@T(1&ZldrA5VDROj=sD>Rap#`r%yXz2!<*ZSv$9Ib$1Ht;#m8 z{L35sG6t=thte^hogO==?W+i>VbaG6P>cjXpJ`RYuDpY%k9wn}vQxTD=cFF}$&j>9 z;OesEv)2RmcHn5fgF)F^{vL*|O}oxYwibZD6Fz(kR$)*c+Q1YU*=pc1m9|qsQ^SGm zCwzCF7T=zG@p9Db=5L>iX*D&{`=lzSm+Nebrp8m&XQB;0`1a=(xzS;%q#wrjRF{&| zw*7upJ@vR!?HPBW&olW~npsTomz0*i{h#8$y!auveC2ml3MN!>02Wlj_Z2I$xF5ejuvwP5ZGDubN^V*mD!E zm<-daTIiO$nW@-foS5;ff~Cp%_tV7pIo`P!hSVxkIb0q(VqkPV!Q0Mx-{o2D{661_8ZW5B+f5zJ z*tl&i51u5~v)8_sA?86p#V7@f&kJB$QD1fK49=YXKd?Lt9(}x1nabE2120TL5}!cR>Q8sj+PE$+``gsy&d(+m8$ZDlx`L}7hL-?pRAVVc*fnUI=L;u z@b9K$d-<*5Pc=aa_cQUqgikAWqo^tt6)?Q*wk%e`n-Mjp>$i0omT1X0z6tCVA>Uza19iBL@zMkgcyXx(|3zzbc>lW<3UO_k?T?Y3hxTXjJc;9fJzLFI#9@T+Ekn>Blx9z6Z(*H|c&HnYJz^2+q=iIV7_dsGz4vsL&8qCO zn^WApaZ`u*<|y&;KYNmnWReQ@ZS?moD~$QNJ*@jMY|v{0g3&J22ob0LDXGl68&TSK z&j*+tBx_0bl09A)Im>kvZiU~ySn;#Jz2@N2$4lwQ5RIM#{TSw`;o)na(L32kE@w(x zB`dTXnof9#%+H4*G_o$=+_$^4NCi*GW3yX5EU%^hQPOdPctUEs9dZVx{Veh{VZy@i zc;IpYx2HLQp4u>my^s_H8K|t;EpB1&G?ZEW)>}GWBIABzo<~_hTJ}%dJFCfpbn75| z5$gC~CMY*a4&6Q=?U#&NfGw~rur9DK82O5_EI~3bLx$_Um-y@j1vrf-kmTar0Tawos!?~+12x6AY2o$uES+_c|YwfQk@BdiC&~TTR2Fz1Q1-u*hBg_8TAfr9x8>zTE9Ftc+r|OKLRuArXJgam)dEXR^^UlF$B13c#P3vnA5_QD zq5>b&9tTF#W(~CV_v8Ua!-w|uG9audZJ$_lrf3h#$a&bkTC^(SpCllZzTve9DD2Fb zLhP%pO}{TIV!>G=%=@Z{_vt>GhTb4DUjo=DUF5~rp4&Df-~YYTy_6ObWLD7|x4bgR z0cf&^`;OeRKa_yhx)5@q`U3NUmRQUhuVV!611c@lxrI8s5B>xneH7iFP43$HyN*zF z5Z_6x-r!8gkFBL%GUPgAm@RaVvw`n|aFl$ksLpM{+fT|(OdY|qM$TDAZTRluQX`XZ z^+ryzmy%y4`(9RBFtc#~aN)zfc-5DD!e*e`N7jq)P1D9_&XHal)J{e!D+iD}DwRpR z+B5Ck%Z~oDncEpbvt(zhulJVgMO!nTug;R*U88ee*+r4<7S0Bl`>u1=iGBpu?;{q zJMR3~sIwaicJwH(qmv;yA@Cdj;p!C6Btgc~vNYF;kx~;jwN4KIz5R9haOlptg)8y# zV^L6B{b!A}-`9K2oON8drD^~6t!(?7hrX!S;b_2sLto$j>ss)nM$^XA+00>>tS9>_ z_oQ|sb_zDda_~P*{33I*%%s0T z$(wqI5U}>aT9^l08U-9g6sgf@WT{S2^HbhX#pVV{gQj!t=;K+kyA-Uvhr^=AwSYhC zd}y5RQM5MN)?VUYsn!Qf62=C|pZsTQ1YX3YbjW`myBd!=zD(!6Iy81us$KhRa+NFX zt7%#Xx0Q+a_9^m!mY)gXK2?K`xBF41f=0dKTMJXysT%(STfPQZ#ln3pS$ze=GF_S2bO$4Q|e9yttDf)w!Oy!XF-Wg@bETQVKaTft7_lpbe*%AY# zSmIXEq^+{n6OmI<17mA=akhs%>K%|{M-xq948QDVm^0)V?I$)Au)5cMww|EsB_@;> za^e1XOIK*?I#7{hkYt`@^-vmdo~Zk;GkFqi&xi^E4~atSu6S%!&_o%x>#WtQOA(r<+w+^mzt#hxN_(tKjKmgPQ;()zcJ5_NL5|76=^sryCVb1Ea&04K^ z{#Ni&dm-#?+p&%`vq0aq=`rOQd!KzKkHx+E>|{8~Z}W_|VQbzC-zgRly}i6| z9Qw++7F&LiA^G%O;bG$TC@lsE6JkknO~NGkm0EL*-}@KP!tW5&deZpnP|hL9CTQF0 zNTm|pav^F754iZh7dD))e943;R`78MRI4s4pJWL2bcG7)>#8x=mk76pfzAEUn94qa zW)nxn7z;X4nOq}ZuRL*hEkV8PE@SyCFi_>-KCU~a1L_>@=7!A&Teb+W{Oc(v@eyl@ zFH=xMK9l_y96fh1(WnlTzSf zYkoWh;`zOV@kO=0gH~;RAn*5sH450Xa(c&dTKb9RFSTV(*;L-4R0o~!>s+n{-rE?M zS~J|%Qois(BJ7Gs?Qe4oEy>(U|J(sa*PI3dICnS$xOVQzVV3__;}>77cYnXPO%e|4*qJ*Pv7ueu0sd46ey0taPO1CD7-G*g}hRz?| zhAK<;p(|&tk-#Z1oUf5Jo>xRF{Pa1OGdY7REPR10=uF)j-7#HI_vnTY+|gPBmjLJ7 zEw_oO&xD7spwbdHBi^sod|Jufl!Qh?aq%O+#gb2xm^L{DYh^G!Jyetqv8XYblc@AQ z?^#n*r|*scT!sVv^&s4BmAgRN;-eO`{Xd*Db z^KSAMue>cJ5f+K^TtmsB8xN<>lV{o&F$By|Wl-J=j=2e}#7S^ztH9g?re6COo#Q$ure)mYs z>99)`sSc*wo$|kw#VXDQBeuxH&$tSkLYk8~?{d{L-`fd`e-9!FU~Lh9v`bp{C!GVP z1$@~l?7oJ-0gD5WzY4H4dw~ODL$PDo3G9&7IVIfxHu__NC!Fmr5Kk`l>ff9&^gV?= z_OsrO^YCOIyekSS+K_P>kLYZR)1*!C(tLU$K3CA`!!J9JlTg|X`(H!A*VeM*96^Xm z1pT;;?IqXe%>0?-z`U$dE$JuuCuH=FIf_M^e;^9Ga*`tlz)d8qRqYU<%w^tdr6pOYX9f*TqOYyO_&I%oR*3m>tp zxR{#EFm|bSiZHRN&e^@X)ppyQL_EmSRkdkC1c6 zrT!|!ZNd)Q(182g|Mr#~dkD>ifbGny!adO`o;Fv*#gX-pqa4Kk4ZGMRlLL+Navv+R z{q|E?09rT+nyfEwNun|Q9MMJMS$@UBsf8HLL@Xjm*gy!U`nSQ@F1dZQrqn%9Vjtnq zMI_Dx_77#(;?FeFH0TUXl=kSeACD$o=@S?$-WOQKzJBQ2h@3LDw|M@j$uKbZ)fd^~ zjI;TfB+qhVoz&6{=+0w5PGEIz!|hq^#!yxFpr`V)lYz|bGxI6I$1JI)RP&2Sd!PH_ z!|=U8hClf>Vz;tEN;@17JXedn>Xbre%sO^-0}pf}K<9tlMJ-~s-k{u=x>KM?|yvi?KCW!2Mi z+hrkO`q7|?><|)kF0*}_EUf_6*s@(Cmq4u;)Ba2rj=;EidOpF}P4;Xr_5*JfW%nIw zX%~SXlJ@~(LtNI5f`Xw!VDAEpn+NPO+rQMjjkm&9 zkB}%k!UK#UwOMxk(4C+U>aSr@o!SZ-!D)2ek^EGG6S-!tIw{b zz-|Aw4Zla##{o+=u3M`Ui6I|It|tH)SYL!ZU5cL~;44UZq$LB_?Sk=bzgjI@tz0GW z55W(Qci!ChuVPIYav74?*a}n&pW4csG^ED!R+33SuP)V8qw&)~C0dG^9^}-KQB<@#JU)hEzs$*M7ba zSDJ)dC<^BsTpchDeyv@wRa=g(d6e<4*LAB+tF5)gK(3*<0o#GSlDG&S<~!mhiQQIF z@fcE0*YvyyUYff^3&F78aKE4Y;+?Tt`oxs`XWmm${QcLnn3QMci_uzsBp;st)vsxt7IVKd@cb)aOhhS0R zpNrOAT#`>TPmPve>56(gd^QGVtkQcrM>)zP}VQIHkz8?&SD7pd(CeYlo3&vZE=@XQFl<{S}W9~z!31oQjLyGmL0fv6Z_c` z9_n!bR~7&*-v;ryXT)WC@Z0oicbLB%wEc&RuYXDTid2Wgn2UcaS11>(ma~jBNX3H6Y zAs_>3^mP8sCN0!W?9S-bPC`>RR_j;a_nl`qQNo`>v_tWmD{8|EC z*e?SQu1mHPRgFI~uJ0T7;KIHC^6r4IC`Huw2&KyMc+xQz&b=7lgrEe9m&jgK`?7G)0YUjIJ-d4CjL+v&JHWR>OeFUTFO!=CLR@Kix_8& zZMWaN$kWwu9Cuw{ckSDU5B>VD{%;K5g!XwAlfD*&1~@U+yLIy-{`w!l&2j9Hh6cK5sFhx%C4sDl1`VY~D!B4{TEnx$?&!b28hnURG-_x=`uRJB%4JpgP zMFPhEAph>Pxbe^?t)bi3WYEXQwBng8lixoO?Z#dxSAYm`lRNC?b;J~grK^T?RR|a` zRIBw~O>}K#LO*hWU&)=AstEPnBcg4wJRoiJe)iH6TY=-F9sEy$Z9Oo2cMAV%Ug1Ul zDQ45cDQb$P`5?Ac4(Lw3(Rc#r`&G^!1XS89P*eJI_$kOxbhs*Uxuh4k&-qWToOH3) zeGn*BiTwNqkH@hTz6ytaHxp`&oyd`%662W5gDAJ_92Ti+o)w$O{Oxf&u2PRHg!t7* zhj5V0m^_Q%Wiz#_0P(FgY|}VwT8IMktHgglrupW&Vcmqvp2Nt#!R zz~QIZouz@cc6U~G@J4$wggo!3QWZQkT3Avh{4|poUIacICp!pcodjL2*wLYsa}L!IwsQr_T+H6~EkdRDWFwuDS@V#wI?^rId*~Ml!n{2&-t~v%usX-i!MGX``V@?V zT`Ya_IvT_-dH|n}F^k5uEU22JG4SxU!F1`YULvZ5_NknR3L^MMjpCR%vAaIwq+esI zFIRcTrHFPP(*+;6CZO%5SmArc{#HmAOY{EETaBIJIqGM{v4Zj?f~Anfn~1ZO zB9vgp#kt|q>Subn2xb&FV6CuK79x?9`SN8E7+M6;zDt<`7WrI-B1`UHPCPq!i{;+@ z-NWeL)6h+FT071rEF>)BlrcNn{fkWUs^~b1n21ANzPhilrsgmX9=0crzt3e8ZjwbiE)zd~oI~FtyFHIt=aT!-B6?{TYUs zTQ~}-Q~kjBA(O|LOSDBLvtE+twnC=Q6KaHdr2n7W-59$f1F1)>o2-xYZwO2Ox9!Im z2N9-6n)WxZdmv5s&Sk!kEo3OUzA3lp+nB2Po8C3plOOP;UIF6Wja*x1v~q7R7V&rDLU%NNgkDuR~g;X_u>aKVAYrV#Vu0y8dBZ<%M0tsJWygs zL4=tw6A!KoZf%(>hty?aZ(Rc4rGjGAh2T=3*-VF%;9sr28|a(U+;<2Z_Lmqvl^lgK zbekc##WdM9tLNtPKL-JQWi(+ONnjB_-+y94VB$|<6Y#mC!jiKZHVR`tQ|36bk1cHH z8Ln$zmKLz)cM(?0X{1Q-w`p`ca7Mqv+~Z9(K!-@j~mYD3?O;YOiCuBw z`}hplOCN`#4Y>RYI`fVoM-HhuA;N5z9l5VOkGU^E++=Ls?~mb)4*{EP5I1W34iFgW zKy5P$!n}Yavy3@W+o}L*3rP+Z1(xuB7$zRS8ohn;NqH1CO5Hceh(K^DyMC1EGk<#1 z@RN@Hjv-O(Fy|hZ{#nOkcFO$d1)Oq_G6C}D{;AfmKu`#O^*uz&_4_vuO~>O5Qz>S^ z&_oKBf+WXtV(;}rI?Ah~??MhGJy$?;i2`rFWm?WB=r@eOEmRNtR$e%wcV6#yK2l&= zPV;Q!(dGoi=P=ta&)bh zow*XVu}0H0z+>l7|{zK?Zi`tNyNb_J_Xvv9-Mo2@`%S zg9=q^mgzCrt7lK!ByXD3KPZv{hqm!x6i`MdFvaeuvHiJ(jw_Y0e{tcBURAy)+^xy# zoNn&ALYo&4ag!u@}BAW z^-#Im;J%qgw7)uZ2OBsPAC zk9|=DHu1g!kk-~KLle+VQ~K~MjAgVjPVs=a-5xr#jW@vj*bOjy8ap~EiVU1?Le&^3 z?mG*Y|HO+U!3xPeJ%d+o1$i6?8#~{AVJWu0HE0Dqev!(!1uP+iU1x_u z{fa_JoJb><;vFoxU-GEsJi`7j+U5X<7>kyGKAgu6cYXceS=(}^ia?m)m3!!y?Yt5* zNxpyX40iI8_L`bJ{Ki~|)ImQQ20L#b^0S^mc@N|*5EaO0{u*$%OVOlIS! zT6qd1Tsd;+rka=U+VSuYIuoz3SSBf3S$MZ1s%0fxjcB5WS;x((b@M)~ie(Jt>yRdf zV)ZQ8h(L0vwPkK+ri!@FkOFfnd8qj6e9kYs^UBt;%WxY`dC8AY${$Kd3VP*=s!4vb zq~~Sd^SF}#-0`lQVR3Jc0zcx@+X;QI%Yv-@Kf|rB@qM;0`Tdc3`IKPZw*#V4S88Tt z*&ZjRlh@bB)JUmS-s6fJroIw?GlOP3e!LUVjIFkV4m4eLH*Y;H#*)EO{e9#kdgtFD zCZAG`JwHL7`R(D3PiMOKxoz+U&BlM{Q}mu7O~hD{PWQ>hR6Kje|Eiu;$t=)Zvs*E7 z0<2sZuFN+9JmW+Z%Y%66GwF~MzqoCH8w5QRg?2KoaC$=XPs(GcG3wST)+s0c`juR& ziXIDFi7{Yp5#F06+}I*B>z)v{FjaKopS7rf*=lUC8HtwYv%c}}V$hNjo5ah|B|LNl zC%4vlcM17x5hM%4ra*EPB&7<)ZI5{aeZO(ybZH`DY6SrFeg{udRqK1+ctR;QPP*G@ zDDraHf6!!`sD>u-;OfNYrv`4JWiV{;IF#{Y$8oVOtmp|WwE|d>;~3EGJ5c#K{smiy zJb*o7Pjxv2sjaGkHi58@OhV>+$B4m3px z=g>Px026>~5=29W@&enhyKtNpA5l$j!p2+P~ zGWc*g%w5(F5c)T+dpkwKlCgCei=IOplMJO}9D&6Luw1^O+E(#?w))+j0gK2v67WG5 zQ7`k$mcyP5JlS4~0#f0=C|0yKz+3|W_SqTIHq2fgQLm)3q*H&Zel)%U2-X$WL0;d1 zf8^LZE?B5Dhh4CgU}zYhS>bfI2D+;zG8A^!_AYfv`1{46R!f=rrj`*{Ql0?Oi27-F zRM@l)nM4667}fr;RX_OD8BXFkr_+e{vRqTo8CF`H=#h(z_Bjol`P{L&<8vqGa*7mi z&ig-d?kTu#j|*1s@;dh79g5!;&1!$?Hqwsj%BlwT-9wCQ>V!_TNBsPYDwMUp#!(mt zFhT)}+}n5{NCrN42)%z2VnpIAw@BJfSO~w~haY5g#^R?{_|}BI%A4cDJaZ0)$!EXF zN|Cg~$z1w$Y{0q@e96&m;Vn*R_vH-y znh=~Xkw0bUBruTHcw+OwBY{nUN7n|ASX}(a(|2>BR{nUN@2D!LN?-b4{Qfouh178L zITkbKd1Zw*{(WMM(s(1-A0BmTr>rBboaw3pY-R!vgxDEVsIl)th-Aj_G5$ljzyPN< z0cJm-T*k~b0~2%=nafy)jf=X$ZT(;uW3aBqT~|#9rDLFDerN`#*JYQ+x0lwl3A|P=o2xPm;EpWY*wtVE<8jWhzx7-##ZpOhz16Vx+@IJ#&7osnO|Yq(}`|3&bR2c@6O z1?#nLr%JEP-xwObN|0y7*k5PKKfMw%yFmhN<2^|?Pbi*80)3^>dO(X8ZnuT7We1e^ z>8YN39O*lb0o%VlVK_n55Fl6qNcuL4G#Q2QkvFzrt1;?N{cSN5WKD4U10N8=n&JGK zrST%pe*eI8jjX*^H@^ppz+lhROx+HuF^{R)wvq9x@%vcrs#nSV?DCGbSC>AdLp(uAHV~+rABODCXt%h&G+ELg1u{G4mI&Nf zMg8vRv+?@H-!Fe&#m((=DG%Y~K8$NP2p_VzbXUeG&2mBi zcNDkr?R#FAE#BKaVYSkiwH|J)xcrPQ;coaxW=B|nv&ag5@iPk=nU9$_X9ywP1ZU8$@+@i*bA!Pe_D*;vHlvcVIkrx2g1+&xES==b zKSub=o8K=)99!?ag6JwFJgmb!>)fP^om|R=#*_tmMt90k-}eKLz7B46WK?cD5)wx_ zlOnt9EcvsvB#5WsZt8p4Y9k15^lQ&!6-{U)#j~4p&wkh`=quCBu2;7>5~+jU4HSJR zIVsS7zY=b2-aJ->SXh(;OdVk1cy&l=Mg*M!md)Kxv`>KD(PoklPBv>&JITol{XJNW z`962@{j-H+tGiUKF9#C39J-u5IAIZ8?y;PE2iemxJKQfo(5g^k}7gHbY|!n`e1?RA{V3gnbv zRKS7@q1yR>4IhBASsV@Ek5vw5H)XZz>f#*#b?`^q2*{1?fnQ@%X18~kxfhnfjL#2R zpajP|(9hHDs2hD?XCLdh4{N>sQ!gCjE>J4rMBp0#9CC-!YR>EhkxiSEA^X1rS5iYh z_Z|Itk5=b>J#s(p=*O1LGL+PbM~60V-ZaUI-D~8}Ku>qdoWRUrpNUV+$b;Cg8yy7v zkHwAE9pi?l!uom2AVt~I2S_#mikbl5RzcUJU{mNm^cTo%6RG5V30UQVQ`_DEIF*J^ zSkDN+Nf4gJp2cnH#Q4Mo?{e+Bo52Y?z1JN5Vw9yrVfJ8kJd`VyQ)*^w!`PQ@VtV`C zTGRGtLH4oqhR4Xbu}>&>c68ob+=~cP8xH$3poTE~%?omk`?jkb!aw7Lc-g!H#B|o) zF&|y&wB}f4TWl2HggvUg=L+2DZ05{htDX^rsTK>t*sdY=4i0J?WLE}ivn@us)6CA! z+VK8no%e|dD2Gsab4fe+eCbZ7GaEWpJYJ`1^=dj+F_#0Kq_Mv+g#%r66(JtB<2M6L zB_oLEcTmok#icfonEg1@ImBGl=K>ZJ8@e~FVju0xJC4Fn$|wI*p;X8;LkT-f}#uY(uNa3f|=9hx}gKWebX25U6?K}eSZ7z|6sy&0Lk~5UIaS! zH6(Wo8C-;M2@POPH*DWr_chI|sJT}4aAuUFmMF&NR_*k`M>n}hoM_Ec7*E(Ts{@X; zu_}&Dhc1xX$7k;_GVmy_9&+1y*10t@MLXy3c04Lb(B3}Q5qN~ytiRWWV$Gh+n$23Q zl0+LL_oEf^_By97)C>f>e?TFWIvDn1qZRw?zI{d`X?jYHAoy-FdLjmXE7E@%T53eG zEtg_JDoP5TG)9g1(FU8_&1T_Jh?yRc8V#H20r6whAiGH<+>Kmtieq<-q;rmiD7AUy zk=Ul#qs)Jn_xrUFh^1Fh}$6^%SpVG6cA4iyo6W3{7xlJ6L{3CaM8_=;e)Q;G{qLkg38rICuOasIV1Fpr4zKOwG)*eJ z%vbbiKd>^JU|N0Ao?(o?X%78N_QGZPtan~&wNUhfO{H;IsPdV61L~Tv8}s!6-Lp`x z27gdSR2x-NX?go>)`ULK zz@^I%Bvg??m0qr2OfND-youbCt8GDJ>1}O6nJK%Y&yL$?-p4(f(U{dnKA~Sa2~7O- zs*iSnBj8~~w^%5|c@3IqSzw>9%krUh&d$pR2fce8K)VTB!>~!&4veXzZ*2yhfj=2f zQH53grpKV@+fF2ft&1qpzn@;MlRQoW!iD4#Rc~`s(!48C~XaVem-t4)5^6fPD@v18JNpI_gErHf$=58yp}Zk z9=Nr%;m$0^UU88$nzqLJ(nycT3o6-O(t*P6bF7m4bT5~eqmh+H{ATPC>4R+)ydPxFqBj=GB%&{!UEQF`*q@DY}|FFb(E z;0t*c>4Jr;Fhe9z(SL$n&dGinSePJ?GT~n!{Cg?f)I8xEDUH*@=6VC+1mil-?mt2z z6HO%KC2q!@JBjwuqHLMBKH-kxER-_Ap~d+`Bz*(d6H~PK=|z)}t@^f-c6r|Mw{}me z=-8B#xYLXGVy_!rAgFtUy}41AJGO@BWV(UUHPA8Ompx{wqVcyTUl)eGm52D|f; z5A>lQy>ZZ^jc+w$cU^nWSLnu#Yg4(4mj#&v+kcpL)i8UXueU& zBkodh4ZU_Bq+qz-8+;euJn`rEa{339@!JfiskpTw^X;M>Vyz!am>r*9AOKEl`5Z%Q zv1G-`;&jYvIGlr6K8nKThol17fL|9hgf}R*W8~SJJhm6GHZDeOObmt#ZB=V$x7m+H z37LcW{ZDT35z1Qt!wXd+CwDW%p)L${2GiQ-KP>uz^WL;X_Y5Q8Qx7y<;uyGcN|O4a zfnd!B@xc+dPqP6PXrL|`82KD%v!}Y8@TeU znYRFs47(3~NWjU@IUmNAn~B*JzG-JPjp=qhURFb;{p9x=V#`Tp)wP8 zSO&g2SDxDA<2Yn+B*I_cbTx%+D(QKF@jv$jAoJUdiI;Lx+X|A@o@$;%Tk2EB%zwboq>^6tEJNeb`16GF zZ#z=96Or@N3eWf-OjU2Zno}rn&f~yZ?$7dMEBuY~cm+S6Cknf}bz^^$vJkQ0GEo`+ z*;T+Bk8F4fwVVLzgS{od82+JHVi_wT^dPQi_jwaWN(|NIh7V*dsV7$QVuP?yQ{w3JqcBPfc!MzN!(aw zD3DdUI_pCG$c_EHG<(2r{k#&(NcUAxe=e#6r%*k3PJQl~RG6_cJ%KUdxtB zeva9UXKn3pL-%;Z$X9+M9acQb*LC$EE+gKqLn@9I_(sP+**=Cqe(A57& z)t3fB^?(20nX&J?N|vl;NhR6Mq-2kjT@5N^t(2V^rLt5+NMa;Qwrts#8A~Z-M0OdZ z>}Kr4%-s8*&-eG}KTq$2_i|q6b#uyx8)%p~ylQ z`vvnlPDK!HZ;8Fv_5LYmrQZKGv1m$1j_K+BcEPur-IzbqA-!5Yt?HT7+8>L_lsW^L z@&it@xKGVK^lk~*@*d1amECRW_YJdHU8~;`7mSnHe@x z4mDsQM_6t(?lOqOGzmky(PDyV*?u13|JbNW916+kf?A>0STbhj#Z~^+n%zk?S!y|B zHXf3WJ|Tre_D^kg=`LJ1rq-kYcEP7vvBS;F8Hh2sT)C9?K@>nGV*T~W_;G3L{n0E4 ztxh*M3)XyUmI;G;<1oE84(kZFqt181-sxJVP{#OY-h9F7;kut=g?9$eG4@$cJbLsp z7Ave*qp11b=Zg_)<8k>l<+Q@Lb-MQ!yNWfG6lMr~%3PP|*Gd#7CQ7_tl^nCxy+?`U z?vJ^vJ-V|wZP48swD)r#$`_s-Vt2MjRh-ZYyV8#rds>dFxNL36iVhWPEEwNG> zurlUvLKu?#kpRsyOoFA5(B9GUhAdHrQy=yZ>3T78e=x@L3I3@Wa2hU5OP4<|1KiGC zAmDwuS+~i9v4*r8$}=80+y`8r_t`seNw8l+^gT2tG35!SAxD`#cRcEbYzN7X(~T|{ z8OSzse&)jX6U>IL7J{JFt|#sefAEIW?e^{4!!1;DLL6jRKhEdA6?J#+@3W%lH+Umf zB$?-%7+dJ-DtX6%*xGPtHfb+U)9Dg`WYnJ`0D?lQPTRg3aL1;I;~-C$sbgLUlsNr2 zh8?_<#e(%Z>CHjs9tDyRh5){tuwFFdDR7&9+ z`~n-Km2;!8`tg9t(+ArZuGVa2ObRf@t)ZfRy0bJc^c;BM8!wFaFrX@6^LEio2RP9Q zXl8@Y=8XP`0#I4YqEb7?LU0vATg)N#7#T-E_WYcE;%;Cyl&Hs0B76M6+5oo;M!b4BEqmxr6HKYiNp^^h;3S~F&QK1Wn!2W*5;J;!# z#&Zb>{ga4WzDZMb76rlUy-P@$hi7Hv9yKC>PE3X>{WcEVx{RgV$p%nE{>}=ZM$j{$c?&{a+oq~PR5+?NY zl%x#jQ_+%fkk#0&W*Uv0N#9Kh^7oq`52l=my zAYTm_V5NwSk3uW~HhNq(H&-yq7qHo&Z=+D|F$M`a2@4gXrsR%b_$XH>wq9^QE=%li zAImAke=8;wK{x25vU5;6+sH`~h<9pZVicdPC~?2^5-Oz_Ffq(7PcqyPfi`@nd1S1s z9AIbTpw|wtv0`M-kx%gCqPL}hC&!yHr6SPdi(xPPqbCh1&Jd$JNR1U^N&z%HQ0Ny( zgx%nZKJo_eZNDj}h~jM--2|B6x1_7P)U}}K6(Lzm_I{seNF69Tz5^MiMOY~!j+lJi zdwuKx)?yLB@XAB`@BxA}r%oszji8X6^?6x1hBsga^iJY(^QDjsg@aB_-Xdt?KEQFu66ujw7gg&C`mVtTnq#7) zR0;WseB|&6B4<+b+L2~}B43C#y&&VD1qd>fUjV2Ng231}f=@nZ!EV9GNU&L4I0~8A zLQk;P-(I~1tywU|01jT^Q^bvZz}yM(O1ne5OEzcamyL0dX@Oa4U{NMuZ*OlW2ua3J z(TC$8-hiQ&wdty;&h9oGr16TP&e(=#*o&5v3TdZRn?jTtxluQ1m`|w~t0Ksc{suiH zPhH!_n=7IsuWNWEFT8bB<3F3#%}L z7m>ZvJur$2rOf^bvMomSIsi~rLd!H@=k%hR`!{||1;WQdQB3Yrjs>68fUQ)ruiJos z%A{}Y#P4TBS8y<}kaH61ZQ3GFf?mms0r7rC1drcha(=1uj|1tu8dvKz?=EmlM{S)HgigdFEt1sUZdqSqD4d4P zCn4s~W75PS!84YFHLTniLqSvtMQa0{wvAzUVlm;~O=R>oi!D1WrS*oZKrS@m!!{3u zic=j_&SRZoF%7%w5u-xR4x+|N4^ysmA3L;ys?7a()7V(DSUXE5^QW^)w!#a6EPaG*?*6mRqKAQ z-=M-Kw1E7nl{oDiGx~@WK$-HNX>FIPyup%ekZbgQ@#UiQ-T_Ih1@t2AFOKKD=pj+t z<=3FhH9&_is>#;MimaMNEkf5xeT79X0{MH6789`WAQo>S`7KR8f+p#se zH8iu`LKk-by|kV~79ZfcA-!Num&0OWo;eM{;`9K3;!JU&xKe)ePV0#!0M+c*j*Das zuV83hRa#Qc&a^e+0sryjP${;Ff1TdvXPyv8OCv%I9G8t3ejFs}H)leD;ZllYk!8b| zv9E=~mZv@_xLrMu;>1T)VvzR(Y-e#!fzB)v_mr>j0FiM}!QO}(0Q0bWCpqIjbJK4f z-@u28jAzA?9xaR{05kZT?T1muz!RgNVa@ol73g2oR)|{p^_FDQgDRodq6mHZ-=yIv zjhfrS7+Vg4&u0Nt*9%t>7V{YS{ZHEf{SgT)MG%s{p)*vWj%8kj6!4s&1Ah%v+!_lV zAgG5zo%)8&U7+F7c`1O{dXK0P@@OxBLh8N6|Iy}nlgD0t!H;$I-2?nw`edMX%l-8S z*VGh{ADv>M%DQ!NrsR8~Dx%+flRw$Kl`~Wj?Cb$8ImLm}IxO8jg=Fu1dH1SK2budZ zJ;KG<%t{{Vo>z+ssJXn`xeDoxw}!haPQt zGlmFw^`GG>o_pdE4D^u}(BzUygfTO1@-nqo56CwLl5%vfS`pW(?yryv3BKcO zr*5c;vB6)d-r-&R&Xz1Mn_bJn^0r_8kRu!8xo;&O%=$Z0uSS0hXHK^Whn}@QoJEdk z7EMAR5Y3h|l8;Efz>z$4pd}6?M6_etAN%fNKkUe2S7D-D#$Ib6-#hx!AMK5#9E<0O z&&prm7NqR*;Pt3Jf<=EV13l()nf}Ks_wyl{Oh}8n&~ZJCN9LUw%K)2WH5#*CLY0=; zz@N3nlhO$(QR?Z~5ia=5of%)NIgC3_!VElupgZhhxt@3ojWgB^z+shQY2!0o$p-sL zrC)kg7E0KqNN6idOGk6&8opxK$1mZI4_V`gTaUQC1mB2pY`><~M}4(_$i{3t-6 zC!ZRqzSO;6C=MpNg@Cwv+D(O{1&81!2s9#4ZVkF{$+_VzT;K7(74uetF~{~vhWpD| z%^9N@s8nG;aO;|yB1=O{c-z~sIUsD~%}*HR7HrXu<^w-?g}N;Ut)u@`|E6o4M*XIHEdr-FC|Z<; zhMJmuZq)O69qOsjdzI{dL2Sv#nZT-4I_MUKDq3#cnxA+~0yh!+?y8yFMQFZO{NC)s z%VhEAPTZ){Kftsq5Hr<*u~eAMVs#Tw1*2*TPn&FR{%qcaQ+TF2sH`Utl2ErTiW&=4Vj#B}NZF}Fh5Q-2g^kgs%Pu{6lQ>68Q>R?~z59F?tGxR4Pe{GY$iwd^XKWnQ!i1(E{BAgj}}?;>F*J1fu{)y8;WbARY<1=^mC!1qV5iX5jBo&;`%%%7M~Tp-@&Lg47#MBQ~maBUi7x#M#@4 zL<`EJuWhzV7^$Dr)JT<1F^-&KWkb>Yx~jr@yD6kloChy|Ra%YE*67yIJg?&P=jPMxbCIQ)loN zJ|T~N3-|H%t~|$x_%}nB;X_8C#|oE zX8(@he1!joN6zVBf0-lKqi0p<8%GGPUok)0zPNtDlMkCPb$vPQf+s7sn3??WyEE55 zD)Y|$>?)GHN+^I`C5)%00?X{V@84hfI|Uup+mk-SXlA_B%iss^F1fPWVIr&sVU+n@ zttgC$%?|nppn}3uOew%O97p8>MZ?SmHV}-}1srNO^dp&^WF+5%=eL)6)P<6?0#7BY zKmBzXAn6osNC$2qRjCE2N3&>eIV^t{qEv|fJq740ig#!(#7ZHtI{(|lDaUdr}GHS_--$_?nmTWF9Je=Q7ezIF8@m zpUY9_oTMQXMi3b|fb}Uve=5WtIdY`f3R<0ls+opaF*IyxHmb5lWsZ3J=~IkrdN5r_ zP=fJ5n;le%IO8>ot2;>2gU#DRReu^=D{3f7!gT84Wtlhqd+i!B)RlKEgkenlOGsw~ z$SYUf?a}0vDL6>7eA>u?xwfOO%ZF;IjNFk98a7AKCr-1vdNP1t{{u(-5-xC^q{;9d z-`N#*>9?e3eOyMzvlCRFz0680b-pr*9AippL~~yY0t5Qn$5?yW_SX} ze+pD`#3>1(p9_Hd!tk#8_z=B9tcB}U)DB``VBn+AIrfB6f5!|YWrm{fbAD^kE4RO zeD^XI>FVDZBnMX+Q!$2d3am>!UhC^Ma40T%m3`(d{G?*er)YqQ$uDpsgNWBefBu$9 z!_(SdbiVlErT9td6WBa@yzKC}pd5A0DUTnZ00LF;FBLEa1fcK7&eK2i*V$}lt!QKOPXm7RXXjf^d$P#Tw1JI)IZ{`r zBob>}Pd%U~OJiTcy}iA)hoPA%2u_-U{JF(XN*{r?Tnl?JHC4dp^$OL<%-hK#-%cL< zRbaU*i{di6cvjr#;yXR;BBvtDXBEJ1s0vNEM#63Q(*=FOgn(8V(_n@*@B9H#&}|z1 zda+1lbO+<@d(}@!CfGn`v&_6FF&-n#&rgM^a_qyr#j#JHetrE9q~Ue7F~vxt~Y&Ek(l5(Q6!*C{dXE9SrckHN0VF`aoKUZrcq^MLbUzn|tL=!qiv+ z-_Ps2GJvyZ&ni3bKU)B$!~Xo9uBsUgu)Mk>&8!WRPrkL2yuQ&PodgIpWWr=0qt?Fz zVWqGtc2s{k;C)s`>c!Kg@B^osfR%uuy%EDLdRtN-;n}mkQkXQ#xpaUXNCS0O>3f{?mLSMIM%|41=ax395yR;VQ8-ZgaVA1Ip7=-^ zaOiQU_Qr;6G|+T}8IC%g_7_Nd(r;<_mG`21Bv<463LiFb5l;&-lC8wqB)v=5ErB(= zN0f}8g4iEW;Z>^1KJ2sM!JDON%A=+6+HSuIDE=^b@LF`wsd8=GPJ{Zl;k|t4)r!^t z-H322-w(4~N}_a*zpPD7J4IGpzsd&#Unw0HkgAx=;Q=@Ut|($t03qO~jN#I0*4PfD z%NZ<{ieV-qf!9V4M|~6!GBUq%P4vX^s6~r{I@{u3&+3*hq#Q(#!Wk)r>{ADmPC(z^H zyYa~_|2uccLH}Sb&+FTEu8$bGN}2G_WHm`)9T7b#3d2xf*9Hx$Gu$J)-|XE_DnclM zk>c3XCu~l)Xz9e_M&Xq@oWNZ(K-?AP$6jhK*=8(L!Jdr1a^WHIWms1Pn`nfN>& zA83F=mwlMia`ETJiIUYxV^+J`1j~3AEFoDPmcj2Pdc#mN2AhXeqx|2g3KHO^pCLRkMc2r>bh*aW^Qy0Dm8^B#a z%mqD`!X9A_H7$eP{+=>|8JdE0`AJPA-R+Oh$l+9}e~D5N)obzKe)HblpZUN&jS3WP zsdtxo!16EY;2uD*lf)*w*Zt|~QO|!`WfsT>DVlyBinC&SegmD?FD#v# z2yZUEzq|yC)67+MvSpyxH1_Z}vS?8I+h@|C*+O5rZ^JEH9@2APa-Y|0 zr)zIj^N9L-8c<;MdKKqXWd4h6Kv4-8qK$>b)PpyPue{3j zW`unWYdR8Xx!Q(u#d%v{<5EP8hI%4Bm?_ zIUMz}UMF0FQNaOA0Ck4nWO36sq@B!(DUKq2Z>jd28Y{djT((uq{);V#B`|OMPr&9LbgjfqY8qg7{y#wQIc#kp0Z3&%GpRW=-D7NH zsyT9UdYAa3Zalv0CZ~kpEuKRzw~VHWyYqakbp$GqRSPz?|MUA^;%4B(qrFJYJ*bmR zr&pnOT^pl%73ZXzwOV&SHNEMS1vjS0;fke!56>{2>_G`ahVlv9H>K|rzE9+t^_te1 zABi)No_<1Sd39B@1oQ;|Jvv`4&Tgt zeCXII&V;9%3_DCS*UacRYmbxo zAEh7pi6r-LZ4!%ydKNphukSA~!6_{>hk+4J(~#M#&se)~aTj(vUTdQ0FSVsMT0D6h zZa5)&j$>7wJofi6=@{cwCH8{_@$#mDUkZ~E`$0X$AFqr%`dcf{j=C?y?|u;_1W-E6 zj`~RphPqv>)3SvMvShXuPkjLR`TA6D_BYU0-#Iv8a5g)BnY!o81K+)`tDpYx@{hF5 z=u*;0+LZpz4aeLVe&qX~Pa@7Iuq>Ow4bN9n()NOId3oMJ6R9re;cB3i`P<3U4oT#i zCEDTxS()870x4kU+l`5L*&h;tggI!_3~%)v3n(+}@4#4W_ecNyc-Q0H^})UmTKVr- zH~xp>|Db_?T0^HfeXo1ow*N&T%M`O3WHu^ufr_XH9vHJE*Bsm{=0>&F{ARNur4Di? z+X=jvG$AhELbDJ3!!;-p2GWR}^M<-0mmTlw`;I2I4%e;pva;L72{)$?`F|CVfBa~F zm(*secD1{B<=3;bq5JmLP4Le_9*c%SPn2oFvmq7{LaJ2hGc`5EWv$QNDkaU5+m+hq z^=Gx(9B2bm;<0)%^<`&7A7LgUiiBW34wb*RNaZ7#XdWP9ARYiVj?dYu#At)!qCcOr zl)*;-N02I{%|L(sUc6nYz5i;%_V~LVnF)JFg>=OCicRSUX9xk3fK>1b@a9R%cF67{ zoWqwer{m*4tsd9Z|LDS5vsCH=zZd>_PsVg!n;5yE^X2w?+KYuS7R2)6Pw~Q!E89H3 z`VP+#72$M4Eh8NczsWuLZIik}gMF*XWz6N1cB@D8MjWgMC{yBv{X(PeEz;W&M((#} zRjg5zqg{wjSw^3vufdYmoyi89{ca~^h>iLM_mEwwTmojZ5kVsvW?yh6IwC%a`l6hw z2S4nfoj`*;7tpTlG^6FkytH@J3jFp=%HH>`r>7wDTUMEw6bddn*o<8!$72WaetrL* zI<+l>V^%9?M-pWb-Mx|c=H}BxfFs!sr76|nLoo~t+mYw}G40s|XbB4kg z<$YHAdMBpOQkkT)_;8H=#X>)-(UrSLG+QLjxOatYd&AD3dEFUhP`V0T=?}1e2Sydg zo%1(}^pV_mK)I4{@>1if*mH zs4wAR&k>tTuv_2FD@HJmPv{Lhb3YR6?4iU7nx%%L_A}VfROTA<9oq-?nOJ6qaq368 z;ze+)r?fcYz{mC*5~#=ib9i|*->^g_;%10Ym{iz>J@_gkSZ!)c&ev558&34N1->kD zx*J=~%{7#Bwwdoi`n6r2t3??c60L$-PFdyva?=_A-Tq+F4yJtM01s0`?UkQz zOB%`jHd{|SyBTODn>+jMitDH7Q$KDO2Mv5+&NG7=Rol4dN%DE~6WZ8EV59pqMoEK= z(|-DI-R41L!hQ1|#;<0Fi)VoRlPY+u&n4XBVAPZ#pud$3c)BS@(m>=KNmzF65SOy= zPXllwWT0@mcLH)J zB+jAy7?ZLwFv3a*IV`e=*dMfM>swbiP*c}7Sy&S*|i_HH*^n5Im;hv-@F>?dEZxOv z%Yl5wVuBk1V2mQzA<3)X>|BBiw=pp6$ zO*w~o)YILJ1GK@HBbe4+^WC-Ehf2rm7V7;NF~~|Qb)1p0)CcYpc|_veO3SHJ z`zI66)%}~GRdD}QDuH^8j3~8obgaW5Mi~@|X%O8gwH?N^$xRczS&yfEhO3?`2Rt)1 z@dZ$?{d(kkD;cP(vrDh+H>irq6-%V{a^hWI7V6GA{N~0cJ1mnCGI=FRX=#o-&-poycT>X5+yvOI$ig3ud8{C!#Gc-`_#^d zXiUmptK>dA|D*XVa@D#xy5<|>yuB8krSnazTUj1<=&Vs$OI^+|&+`t7z<1cko37T( zyuYp2$M$C9A=u_~jj{0;f-uJP<;D7oO!Quw_`nl2v+KI>xyLHj021se5HUh5#@J8YklSIYP1j z^C#&BFmaGspcjAHQv%W34w+-;Cu_>e&YXW0jn!>teYL&v$nP*_IL>hA$bcEB?$7S{ zd)#+th4e$G;c|8u?#tWBVlIjE2j4YLk)2uQ)~?(CeF#UIlnA|Bi<DSqF z<&{H)au=wF#Y*C?rrKPqpkIZ+k2m&<6k!`R%U$S}y&iT{p>{1|&atb;_!tNvy%M(s zA+I|4n_?yc3!pwo=++v`5`@Uxh87TdC2Z;>25x@V=9>J$B`V_equ-t5z4pLxDWt0e zzgyQlmvO6W=S=O6rN=2TB!go~4)05NaK}Br&q=&1SsQWw` zpvlQ7+e&%Va^FL-8&^$s=qn{G$?wwA=qvdwlpKnlHH$WE&gm}?4AuqBz?__6QUcB} zf|B`}YXDA5nF&PO4+rYz5ZTHir0tgbm2;y|$`fu(<^I~Zuk6Nxp2_L2@H$ETf3LTL zLW^0FUqx#iCg{nbhRu+N2cDMtj#IuQ-Ok5ZvVA5aA2m)sk!8qITLXpQp^^!9)xo_N z{kMCr$FTexl^uxKJeoM7wV(4@9R5DR+?3&-ybwDtywLGukBngm`A%%8D%yNB+AP*s z5{0|<7=PG-G^r!co|wVk(ez#mycWz&$ORcczigoYE+a)P!Zf!?#T^e$eh0d0Z=^;= zv*mkH01E8;HLUTB;2pzzfu1VZE3h}W)58ZLA&Di(_9UYMv)^|ka^F}ag2#pKQzv{8sEsJQ?}nOW2X+N)+b~9ImF-a(dB@`2{LO{jZ^#z-Kz)|_hIoh(>=gbv z?925?jGcb_?Z2`*ePJE|_$j?;ucq2r!G#WL=R&oHl!;amV=4+u*+sZ z0<}3)Kp?~fUqq0)~XLrW?o3i5}vFCeHWqG#^1k1$F zp2lW(v{>=Dy`KAep`x;?6e`q*9hKAB|CA|qs{3B_p&+gBrSzI5-pHaK(EW~)Olzk- zi;Ak{>0`+r2B!F+CFJ_Ii>N=lztij6*CJB@Z#7gF?6jht*U=%pz@mXufcjH_HUYL~%*2%LNxrMWU$n_MP!fjH=o>n&P?!-TL zHznzg^&>}u*Hu{dLuy2^B?qMe0;YD1s+DA(+~C_+>UYd0OOT{5xnYZRRh0_g?MHM( zaDKZ32%z!{a~{5w7XJbF4}O~)tRKSifiudQVtngmVAtoTueG~z%reiJUZxzl*YqMG z0;M%*olKt+NKiUuK;T@;$eG0mxs1MgvHj=rLL<~L6tgM}q6|}^p?q9AG=zHRVmYYZ z%B~I|neHS7Px|J~>gdJ;`*Fs?U{k%H4*7%^E{qPQ2==?1 zSZ$J_PJBW|+^_~Jdr@08%lT*rRv`BSJMiebDb;w6e~hiab4a?%JE}&a3mv>`p@-d8 zT}PFmP%oZ>87Uf(lV5{EsxNGe^3&t!CET5=4;W6MWEDud`OrG85TD>Z5m zD5ftcKwk9xJ~SF+50|Mr{K<(KEc-Q}ow9?WSoA|{puzHAu`gHuB z6D%6Y0os6Rna}V@V`kF#=zl?q`4zD#YLW$n4|so8ZE1h{>v!L)Ec+SR*NyG&m)Xpd zEcgNQ-K6W{(tw9yWrsiT;BFzyxz;mxlxRfdG|9G5ZUg9xJQTeJlOY~mvxa|X$nId$?Tt^l zAI)C8uO|hh#INqNU%h5|l=)>AX)nnLaQGbfAqtp!$AYS5nMZWB1~@=ZYBaD)SoQp{ z3nxNZ0$FFCVhcqHsx>WW*?qiH;x^RAvjnAle(mLSi)@iqtZwMewU{7|>ZZoiRlv_& z1QksHKg3#{ixU3^Kb?jpXs6Qk%vo}gb=9pJlYM^hoGip#E!h&T)3L!ad3W)RvCIik zU`?1X47@jey__UYwp*H9@Dd!XOVEt!^rNh@UpB@6rna>JnkKD(@1n(cmdvTyC4g&p z$ue_%+t)NdWx$s4d1*|9Rv@(w=~_TlEAosCfoN+pe1o{MAeK7HI*RcDk-QXE%G0wL z$CRI3chTwg*a(8jb1vq&^ozmX0;r=8V;U+2Zfcoh#xNTrCOXL&hcv*fcR12mzR-6^ zdZ7FuP@E%<%$&QL_6f`|&bv#_5X9Ws!Iya1uvS~2fKgk?eXuWkbN&*Jq^{4ZFt-I! zfMXiaa`a#nhF#xD8quuGL0-Nx82xJIDiXOtw5_4d{;R;$q9d({v=Gsl%{b$KN|JV< zaoOa~qmp@aa77j!cY#@U(uNTv2cBXgiQ;h>LH6d~Y^S_53D9_R6Y1kiy@QLTrfWBu z6?3VQbH`syu)ls-hO7zYeEX8!Xdn>49H+#QMMA$McoYDanE;VsD}YjRpqOolmc01@*LXjlWmCFsWKcBs;eAZw zH{=S3Ou%|t0Nb~A1Hf;Yi(rlr>YVxMAU}?2WJi(S-*msKx`BOBE8hyFR|;X-xpeoW zP#CI*KcZL&&=|lh9-8=6W!cp5sqSkHO_@v-g=Idk5Bmq*$1LH|>!mhg4p3F2MBAoY z#gBYkGG=ps7V09FI0 zdj6Qrii9B_PG4Q4@I#l@^PgIzo$Bo0_ilr1ISbVguVGbI(?N*hM#c&F#leczRpe~* zaERra65hcA0oMnTIht^x_IW@uJBwT7+wp;%mjJ+js_5_)IQp3t& z!~favvP{Ov(ndeA0DivgrmulwC8l=LjmN;+pn_Rt(Q1qJK*=(c=1HGru@bM;oLB*w z6w><->a?zBLeW04^?%apTP(N2Q{ETdnqJ&0*ZbOPu!Xy%79sPH;WLO~xg3r&d|v(7 zT!yB62|L#sFwk1ELOB2Lu`Im6=DPsqlYGq+YHv%FpA7i#F>H!~_BsVDcw}F~D*T^) z@(3#SF+(zz7fzo6g*T?+KxeIC1g^^A1sh;(~;c{h6N%!-T3M&Jqa$^QIr zZGI3u_CD~kg)IDYOm8s~NM~w(PTg zJweO<|ITr4{wtReo1~TQ?^+Cgl7*pjcGA zuQ8z;R%218ioPEesM$i;aB!X7clxnWkCeTYeq`?b3n?D<+fGsAwba_%5p9Z-i~bR_ zs>cpQW*5?y>66_>Do|j&aP(typiL=$lrTcVzZYRy%+~Qqpwx`|KQTSUt&koY6|)s7|^gJCGtVY#+r6PO>Yeqf<3*IRALhAeN2hK$2&glV3Doj?G#GQIqbPtn7VYa4)w-! zMszcYJ6nH&@tE#k^B}!UO5#7ra6QGM?-c+64esBl#BRieAZg;Ao`Z}jNw=*)>#TG} z)(Q*31rD#vg!S}2W>UeN-$@$ANR5V@)Onw>!(RcrbB#rN5Dh=0rW4qmS${j$(KVxu zPxi)j2X(n^W#0#q-jbP{g<^)O#}92E!!YVbYstk0GCK~hz$`uvn`-sxMDJAzBhG8{ zjOvGHap$&>1jQ|+3#t!#jy-Nsi&*e1kOB6{3H%gpoR{{0By-A}9^x=YRsRMie#P*U z^~M}L=hTfF)n*oP(6WK8i`V@>w+evp_7}b!sy1x-ho>6MxR>>k8A+GHXXx-$Va&d- z-w6LY>r4wwdiIB4DU%2b2Fv&bV5Mm&nA$2-_vzu7@0>VR3Sr!SB2aRPp`W9L(e9F)4!5W6cRzj>4YGcG!mVAsv zQQ;HL#c+-hKRcNB7Ry-pT;%*?Rc98@`{l|c^y>-53Sh?n+oSP)#PQs!W`6k_@zli8 zFpPD8^beC``#lv}JA9$S8G&5nV(H_l-qO7ey0c0J8nIL*6-EZ@@e_4;UGdiI%c=OE z{`Br^x9+fC-53Wp==oO|%n=%k0R1%Dq6i1l(Y2fBRk{SY(t)&8gJpTLiSy49d~WJOH6c|X-; zV?bck>cVa4iV^cmCR#cemBH!8h1N;x0d*eti|UdOxb1+j*oVGm$dQMh;Fp#Bn4r(I zeMojHTPQo#ks2Gz=wm&mm?7X|H4%Ri1(Ra5e7DCRZME^a5-FSitT{+^C z(hnj$Iq`JeH~zBFxdXtI@8LlYaDdY*9@r(LZ}|7J*$t|@+}xbX7lrkU%djPHTsnv3 z3yWU;Ymui8>k}(?ac1JH3wvfU>&W+w2)m$uiMyM`w3KN07>1$JsYl=SaKzDj=% zdDMJA1B~;G35Zk<9kr2%m{X@=fp;`_){%13H`w{`*L?n=hviTG_=m-+aK>Su_6OkQ zXD+GA8tjhHZv1|_n=*|r4jIUxV?5r``SGDugVi9HnnrADDo2&F8ug~*`r@PCm({g%~dBFKYcrh5-Y_R5{OTjT_|wL8DUC)}UqjNz}TKfSp- zC93I^t%ZY%mI^XFU$Wtbvs=32>4`)jdmbI>$#qM}=;{mLrVy*+RHIoYy>mnN8a3c7 zNqy?DtCS~pGa^$OtH59xXsb*5eYW ze}dPglgp4-MA>tn!y6r(Eqd$8FVdE9+F5||95J7caetY~%$IqDyv}_@hQ&`{d^eaC zwP_d#lbYLjbxnfX`YKd(_j=ZMa%x%@ zx$s(KMe7RxR%c6EX^L7;QmDh&Eyh*le8KhvE4|kvgP&H`1v_nyPrSr5EGT}Z3z`69 z-SnkZDy>FvUYgL>v{m>E!#%Lh3V?!ftd=!Z*x<4ECw2pWvZJq^J_aghLaub+!3B9x zvHg}X%69N@)HXUZe2=7nexE0Fy$ff<;w=L{I88{Qy93whpGx=g&azLbLkFUEmlysb zKc_;<_1fuzTnhJ#a0iFF;XrNw^T^W#20b0jGWYda8p)Q6Vj;Nl15E%y@?wqr$uMXt z0XBy2eE}e9E@PjKIimDd2ZU)_LrDzZmT)NKhkC@AkKA+f!Jw`EWQ-AOt{E@NuFmQO zTbEz8j@vKen1tW#%*(TD?KXM4jri3#_00;lBhKNshct@iO4of+bn=oHU+DaExwnY) zR{W5|A@9zE_M$jd%Ljwjy$65y%9@~`snJI)R-9jt{MtDG^=9! zEBr-h3|)UcLPldh(SrGwPo4?Pq5ptsvg!f3HJnz$5Px27iM)sXyxicia*{pqS4-H| zsi0lhz$`23;#B2R(?wzCNYuD7ky8dkno#qGX(Nz~FFBJwh!Ir))H|$&F{MHr&z|#i z(T$DUTz+5nty?jBm6k#NC2jDbb%hiePWXO8+01pWA^`YSbO@yq-=(AIt$pwOo$G34 zfp$ua?QY?MLo(ArPgM`BTi72Qh9&I1!$zI^ORbQck(*JNQ936!z^9kD2wHeR^mRzJ zeq#617NHaQ2SqR7wyasXW`J>TvIcczUH>|;ci6RAVZR#!7wdxNl?W-x<_Y`@DUU&;{vDkwg%XCLmH2 zA(0|r1F3>ErAiSHkxl}LfP$c)h>Ag_cTuDW1f)p~qIBuK6KX<|bKX3^|IGU#A2OL_ zHoMned!N0x2w&6PF1rpYodnx{K`>j8h}3U)tkl~}^@IU!R)vllR_rh_XSik3Z|}Q6 zRP<9%o{$u;{l>|!<=@Ybh=D4Go`8sN{^gW5PBq89n_luynF=T5_?X{By}<6?1SZ@dODp}6gwlAH5j zzKZjNcMWOo1Jv(-n(41NIyp8W?7%VTB)a5U>q`bm)ful&A=sMH znQfCG$Q(WnS({#Ga1uut^}C-0bRvfMzE#Tg*^CCp1^4ha&W&s@csrleAXR4=qY2jOv&^8Tg z-vFe|mTdV;rU5hF(MkaCLG}kW(|{$dd3fW?l}gew_{?7WP_#-HKCy z!*O3>48?MgpSIsN(-v2?F@+_5l>@ZA4<=VZ*1M1y0}lBgazaSQ$`rNy4)ty*h5a~g zSfQLIsc_BP5?~BWd)zAl!1iC@+%DaR8(c7KrenvaRCBK18;jKdHl&b_yACb8jxgw!flPW&T*7dtH2uB?c`w@{_R06urjZDUsx{_Jhy9TTYR#G0xeS z&DIz!2LK;9fMa^t2`RTGGk^P^yin@~^cZu1eQK>8 zCOGholdh9HY__`92za_XO zluXEuCNfz7{KX8H8>1VFJ*lIj)%xhzda@tX{@!8xvW8wL7|nck8C`na7!fbLEW?Hl z>&N3bfD58dJq^yC%((aSu43wa7H0vs$Q1riQQ5C8ShlIPdbjOlNw$u`J?mGXDsX4J z{R?U;a`U-7_Qk5tO)rhT%KW{_xo)ia5AcE(^!K-kYBHi43cBv@`$Z0pE5lVWgfef= z2QJ?h#GNn}q%yGD&i$K?->@Vu)SYu39lL)3i8?5p;lR<}=AtOVW!EhjwOEPFOxK<> z&y~TmG{Rhl@^?lfxVEwD6F^-m!h;#7#^o}_+_w%ooW8$$L%#yKOhh)?z%cv~Znr9D z13Y_THLh0gfHMK`%klv5RRB0lAjno=v9DzTV6ELo5NNb+yxr({QCu~GO|X%i#nH%! zO)tF1p)Yr8AyxVYwqs~fXMXpAHIj1aGAPv!8>RyB1hL&#ct53@hDt`A9Y*3N&NZ0Z zeEvr-8;(ffUlzu9u)&~N;M{MML(Qh{HL*M}f8rdjw<{=_0aMx0opU*XXU;G4%?GNlYa+;Ltle@KHjvy`OT?M z7fVYO;$@;r=0qE$n0Z`Eku5 zHC-+EaKTrjIi^ZZ$>D|=P;&TOaER{BJA`VV8P^>`ZQp|2evEwM^_>$hx%p{?F8R*h ztdk!QCx4Vu@e!5QM8@?wv&W)9!Ii^5IciVaN5*dRL;oN3wl*8Rz z$@t;8X@6GiNjxWCQOAtOf+fl=NJ9&xN3(X-ycf+ z-g7**yyzv6jm$?Uy{7HFYDAjb-5`ay{KEyL<$es4Y;g>?08-;O$@xH=jUcYxto{(K z?zD%!;7YVY>U4NXN6Z8Kiy6@Bwkt-!#1R1^1LbX8Fa}Fnm6c%W45j ztds-7lJ-}ibHb|9y}_G$8qfAkNz?t$6-#-E(eLdDPqA_tul1`~C4WvN#{4vCogd^PzSFZR&3Nb6Cj z6#We?COg$%A6dDN5=LL0UuKZ z@aFHuMVA-lNy0NKE$;C{w-`FT?6rr!ev^*hI(1wi?ytD zjD`ap;PMBS86_tPAVnO0a93q&<9DUuA;J<`rJiBTSm*0NOE}|bvFg#PEF)L9e}yN< z2WNW(L1zRb%oLj$ZJ(@_&v{Pu>>mJ$=y}wi>!GdV!KX5Ko#vZ#A|tOB9bUc0l0`OX zCZk0NBug^_!E+DMx_Vgz7K+mOYzn)^hs zg1?_1>+Wz|@z(LrV5{b3$a=Y@)2pXodv=JY(E*q~uu`BbvcrGp>pZjz0sChMo5s!- zLBZXQGtM1X06KTsXTey|}7@=3V5hL@9()4_E??WkI#U#7l!@QAJ=_q;KvF7N_ge&Reht8m|MFX2k3xASb@G7pAg4zazK>s*e9=nOYy(b6ENQe>$z0 zfNTO5)Vap7-cKox^nyF?4xtxNP(xg*zVgem6L*Xn9zVu;DB=3oe+1)Yn>5JXvI;L9 z?#wd5EQO`6vo@ABpHe+b#I<(4*6MNh<(XFJ8!OfJdp&S&#TuBJ#IpopC9i{I9jTO8 zKZX;ylTT@-E_c6{qaRoi>Mel&GD~(;!3?(?1S~HL5De9sahnN4)wH%y*l?E>WH|t- zX(J|o$32lOe2ghp0gDH)*&NF6$j+9HT~gpJL8l8Nd1^VMFgdNT2zE5KZtvgq1s%n5 zW`H2Q6z-oO2eZX%oZm9zLxjj%X(=MA;ysQh`ING|`P=__hT3;3V|u+mJ4r}jJER;T zg$M(WN(Ud}Ev%q>C7N5QbKk$BN&@+Q>3I13m7p$ud7r(49+fnuiQn79$B>h{0^DpF z)Z@K}w}fP_MT8A5H2vVFo%NWSxZ0GPYW+TBDhtK|-1`ixVN?wAMlp3r!p+^zIqfiJ zmBuENIrJrT5W-D>zB4Ecd!rSK+wj2jB`_ZID`>vEBpvJ@{o~l*H}m&|j^G7$Q?p6h zj8P;RkL{ZzbYMQ8Z_ahGv^ujEVC$M9KqXGpze8l!rG1g&9ZSsmY;cm$c%~n5~Lv{ z*IzcqY3lkx(*G3d(wawOw^T^OS@Q&uN(@Q{f0Vuq-J|dpA=y+QqD=TzoCk6W*UXz;P3^ZM{@sR^g zRi(PXPoLo}ub>~9M5Ru81ti$E{fzBTK%?lLVYpxMlC(E{tTOo@X|THkNjIpKyqJn+ z{zwqa1-)+EFCNBcxx1cMW2NdwL>!9W6%3rBax*H1r_{M=)K_pYMDHqLwja&9eKLwC`9`2YYonpz<$L5R^!O)*RS_Ca(A#3 zpSW3YLP*@`#1XP-lj)waaa3X4HDL?whh``HS+myOm0~z>wVxN4_6iFvSELc;N6t@P zeS&{avkB|FGhbW%F}83q-dp}d`{uOA#YasY9k&awSp^&83OAFV93HNxnVu~2gaf~Lc}wz&t>sN4v$qSEbjPxde|=T5-E%Ag3oR_=ezJr)Yniq;skh-y zXtimID7Tf4>An==W4qZA^W^(2S&okw6bFZKaBN-Y=Ns9lEbgV6*?zPt%-t~#$oVZZ zc|NEtXrosn%<#fnt)Tj~QquDcN<#qgWP@H^dl5i;(FMolQnB;F<4~ca&-&0qXkhpr z2PVQAuQ)xF*eU`ox1GU>1q|4X3IR7CMHd!%aqr7RDA~vm z76Gq|c_%c=Y>p?^1vR9N)Ae^Z!lm-xn#UYW6-hKA_eJW@VCmDT?t18$8$FA0*+}B_ zm)-kle38gDaq(~Xb@QF-2?dS_>O{(SW?V|1E^u567fZtD>*BOM?C}dixKC9Gp3UF+ zK&hAs^VAUl_De3o) zzHxC&`$q2IWSKm?rFfeE2uzU>o)%QFZO7A?jo7q)UCfD@>z516a-AERo=nYsM(kxm zb;J=j!SOQ^du>N)EB`8e(g#+#V_9PMe4br8*}8HdBYaEh^GTYZ!Qsfr8d$f`GNSPA zkQ8ESB+O6Adlw)`Nk1ne1!G)7+>RMMkSziP$~m$QmNLv+u-7aBIlew&813XG5PP$j ziml0|LPNKTRUOi2TNc!T(N-ZR10Jr2pWEAWu(=zfD{`F z`f1N#NrBI$RYtP{n92w6U82PWr(9D&{TO5Zpblb_#Vzg${{VLaB5ouPHeOIH?=vb-ZBA>H_vH7o|aden9? zy>K>p213<3L~L$p%HdWS&&U&;eaM%LyYseMsLFi6>vF`-`+>Y(I0pScgd!Bx-iVaqZd|oiN)4eCTt2m&hawz(AW2xb7V9B&=AEx3oW@Fc#9c zLN5!APDHnRTT2r4k&|eO^R$|vQ{cfu>3Z1LzZApqNMi$_0rb00eqmxh z7?lm(iyov(y@FQHbFh$5GkUyAZ^g}Fc7mk5j+VS?jz&ZHp=8lGM0`^HI1nNT%t#N= z@n`AJk;NDM_v@sl7vGf2I{A#fJeR<5jVWeafa}QY(FovF2n_WTZzI__VP7UH2wcGa zNL8|6G{%EX9mzlS6Z;;-w7$d7>x*_!*;@;l*`CrQ%iyQzLplV{{WYf%yu(m^h|&eEK%~8AUnsgq z0EoayItXrAUYIq`Xko~$)lMdguY-`;}~XX#s-&^XrqqrfTX#lgC=(-f&E@FmQBk#!@&;5QjeX5K=lqiscz9 z-++c>uD{*QocG0Uf0<7=7$Q|&jxa%w^VnUI!M=n=bSEBPa(!@Yo7UD+*9o3eTh?&M5vx8Apw_dgNKe%C#|fyU3y?#82^!_w~3+84>1 z*ZXQGpOaS?i=V+-;^KvQ(G10VNr(q#Si{JYS6LZa|5XcFKPKOeU;X4csCaUNlThQpoZGwn7z)2tCYJ@P<=E z+4&(k+`@ER!rBGBvF7C4YelSu0IqOUw|u7Yht+1)PR5ClR4_nbb;FS)jrI0^HE8xn z6Ya%;yLb#z(fkFb7cl`|cipc5wvg6Yuo>l`PdhzhT%}*PTpMp_-(&#@%L(F?0P^Rx zajX#CaG+53=ANf*eA$y~#lrg$KNh!Gu^;-+dQhaWG8wZPI(kQ!`{I zIfa*TCcG+3vWX})I9_EH-95QT<;O(*6&MKQN;p^ys|_7b4gW_;7oz61EvXFs#)d0k z4!M&6`=~)i-gdKU4Rq#Fl86)_WsgZroKu{+X&!IgDhaFq5AL!+{s!SGXg&@VoNVCR z1hE9?`Fj3SAk90It$cgfuqoNS_u+L~P9XGRws?W`Hy({{)(0rDz<~j-M!PHN7t~h} zAl-sbe(_I@*fJTtb)4wRmlT0$`ZXNlo(VA*?l@ll+wH|^g{1P-S(ms+eS1z=pY+Xn zOIv0`n=&t{koPCQ9W3QGRnDJ+JZ^mIK%#%ZAJEeO(TBS8IBX$)Zoj|uc2s1G1<-=e zWvKoslZ71M2y7YFbVFxMx3PnCJi}j0p9ey|TqL!^`+;Jbl$Z1ApXW%}p5%+u6{BoV zfx9Vb98>jxnK6rBGDVM@!8KOmp?K|~LN-&9(P_5$eWo`Dm|I4NU4#H5P=#aXc8uCd z75RPD#5xE+)ewd6dPG}HzVm7G02*WPIv-~2iA>iz4X=@h{rkob$Olryn3wok5YiP8 zA)6UCW7v`^(eTiV5o7~filhxMJ~MThCHyPHyvF3W==UaMCZm^Mh?oHAs zxLI$|b_h}^&`1za;c;68U2c?6;Xr9<=V_o?i7o4&y**R%IYHp1$%Uq$TqX?h5BJ68 z7bXqtm5@l0rqhZTtaO^al%I*aiE{YL`(|zEovLBV>d)$eX@2PR{@0Yd(NAUOC3lCj z%z_@J%qwY65HB7e5i+ocI@D;d{$xJixtEc}aMOU&Upkph$F5s!5LR^o5-@{MzYR-4 z+x$jF>R(JCo3*^V|2+7wg&=$W|Ak$f1dw{o<%UXz0W>bM3KBiUw6~7S_xnyGa2&Ap z+n2}ruytw}p>l5A4_#ci8s_DBzFRIi@XmckOUy%`Nv}(XBVtR5mO|6*kHu3%bvDKK z)-(0P<#9CU?sdCkw6$FZFt0V=;V`uK3KRMP1}8F7!xx~&7x};=W1#*Aclu{4HwV0? zi>72fEyG=yqcNl^)IV0z*ZV~4Q;=wYJvHi2Zkcy<0Z^-1MJ zp0)|<#ZD!UO2f5z{f57!sYPxS`@@xes@HiK=k*VrPjo$<*gsBCOM3^9Ve0lpfA zS*=C(Fcvkxq0B55DLOq`2j1^euY;8DfrhxIs$_X);DY+ak2~Zg{H!T65N{zm*Dc5K zOzYDZNk>~rsO$Us?qyLdY03HTq~m^=Son@!h48}yf@3Dl`6u?{9!+w)EY{BanRk+O z6lQD$+9_Fd1S(IA9?%v$gb5cR`$9O%A?r7bQ!WRNZ1#m?YC$5o_KXcPj{>aOPnN1w z43(a?wX$d>ha|3i%4sdp_RV}R;CNpv3OLVUFW+LY>50NMS7C7HryR7VMpo-Jvy!ra z7n(T$W_3z4SfOMP$HRlMF&AS)-5Oxe|E$pYky!i!5+v3wWokPt&SL+DmPIHb6E~Qx zVu5OVre}w-XCwD?pa&L^ydh0hu@?YA8x|qh0}@- zmG;e9Nm4V{4L}R~Ide;c$iUcgCQeJ>PPH3d77lVjK9jN;K!~8hOf$d<+;*^^As)ntpknSWIJQ3OskXv2)JPr6IBYpa zaiq`)Oegn`c0siFgJByZl|%0x(ID9U@b(hP9az6{_lBV4W~7{b-e%8Gh6Ge7gl%Af z+nG~^w<Zqo%kQUgA7wdLKFTkzhauW@%=q(N4OhHu=0#w`*Z#{0hndFDku z)4z(ys_|_}YGv^P$a5SxHDK)-Ecz)>RtY4&glcvkq>zvNtx|#|rx#*S>v2y3HP|H= zsnc%ypi^Jg_b;-?F8KXBM%l!=$`y9ZFV)nyc4F&t_a=U*qjS>t+VSW^@bQO8;P0q@ z<0@W<(ExkOKF{l&@F)*?r=A(O$2KjeAJ8)CPQ=2B6J9CCBfIr!Fvv*wgwpkmQ=rA% zO${jpSlJC*IEzZ7^7~5gotoF+dUCkm!tt;cM~4PgzbXBPGK%UOd{|SRc`g#MPy!g) z3udEA;A+~W=K)MZj#}no>pT>-h4{txK2i`E~wKs%E(}$NR2WS9i05En(&oVvhGBx(A zVVYrW;Wx!&w;ws9CiH2tx8P4+kou~?F5gi#riP_9dl-{Y$q1VeAY%_>)A<1hZUr!J zq1jMw6rX~u(h~dgfT_77kept72IF_c=u03#t?5EAt5L$wZ5`f`$oWz|p4`>}ZOygc zT&KB_XcLmw9({%HZyi5)sI;^!Z&+?Jzr!sK7WN(N34i5%=nEb99Js=7l=q|=dWoez z!iMixts%p}AMhFW3Wn2{M3K$Uzs6nSR8CYVfeNel95?yJGINv#>jdTHr%DvD2%Ma#(Ms1ao%KD(YT-ki})E-;}2ZheNLXYG2 zulYUjR1i@XDx2IZ@mW(NC)d8V3iVy1&ji#S4v%OSg%O^o;Mamr(@m-t@sszD&Ha+F z&%15KW%*&gy$aEV-W-5Jlp6&|2O1(cc^k@_*v8YL%8$)?j7&n$ItY0u(XLF4f(n4F)U!-KBa-VcSE6b`k_1euaxpV_( zck6SJYYG>+X%|zMX6keijPa!D-EnJ#%LGDnCZ6PkS#A8>Um5y)Yt(5k?pH%yL<&-a z`BZ+l5uxf8P#Qyq_rb~$GbSyc|8u`H+ofGsY~W7-jL5yGko_rM=*PK}pml2tbbmc~ zdg`mt8NPq`fL-r%Red7AW3}CT#opS(SCSvp^8tH#q=+y&v@Ha~!_I=QobN#S4D#6B zx@WHM_#N2^@&3J9`$GBsE|_`zJE~vlxwRNdBzcIG>#F@BHN3d092b3GrXl@3nnGEd z)DY|uywA3@(~J*59iDZ1hZf*be%`hr*k4&2F`oNS5b|eO9PTx29H(@cVBxX$!hjeL2EEq64m%da>T!IG5gtX}UUa=Mi#F%>;bCX$TUvbr ziy8!Z57(G^ulLg4@M$*9*Ka6tbIHB*f)H>Y$;=~=aU--MSP{{MK^hm)lOmyd>p3{%fcO(RQP>?46GJP+#tO0vD8%MPd?>% z*poYd4mW2W?@d}tF)UCM5bot`HG++-i|jzGNd&zme=Y=uzCyI>cQ6=K1SH;re=D2( z#1NT$@NHcP7zna&6N zCSAQFiHgFRt5tn;ON4gQR|4M`v;xx`cF*m={>nozX-xhkEq@3K?*`qO`)({-?jwDE zh;gDOaJJ7F-YP&UWa!$O!GTKuG59TE=&CKmP9m_%=!E{E#YV{khtkjCGmLfgxHl1{ z0MM@B0iQA=D7oN?1zK>0k=-;iAj@~s!m0&Nghy>1_u$UTsCf2w`=pV~JJ@twJ6XL_ z6woc@6)E?}(roXDMs9AC!h?9s-0%U)NANsK^OgLQM z`VxS4HK3(ZpAGr2j9~K=VU(XMpQTWJKzZ8UP!Q{uqO$21b<6?&kt{P{wUJStIsftn z9mVFMjKMTe^;mDDNl<7a_{wvz+NzC|grS-@%dA!Rm{cBAeyN|~jl4fa!JZSks_<{f zIGO+O@Q)Pz*t*e((;B_(O6kDWDq5x4Jl686Ej|YDdq^l|;#9{{0K9^D0ws8SHB^_ixNS$rBlnjZ8>$6JTF3p^4IS1SbRpL-Jy~sUB?AVy%Ik6j8);c zhXWQgb}F9PF>zs{=CZ;8^4EQq zJ}CjpA~U$62&b3n32u&-2?694eTyk%n^L12!X^Jx50?|OEl)2zCE9zS_4cxVO^BS@ znu+ascWiy|#maEefrG0Xc)J37Rz3)fxZ;l8r74@u8xmP{iiEu<<4O(i$Qex;|67#B zx6CO8zwx9dz(30GXS4wdfx*X@eQ;tKHe{$40X+J17t}atc{P}C4H~~%^d*0E96ruP z`=uFsn;ifm75mCYd2wISz>`P=K@BkrPC!g!{#n`D)gODzYz4HpYQR}u+AIb~c%&_Z z{m%LJ_briGt?{8*6^hDvntM28Oeq?a0VBk8GrpnJZsaJgUm|*PtUPl2LC|D|wan(j zVgI^dDI}yY^O<93DEqa%&)&9J4|4Y1zkmQfP#n1p>+5zQ)DFS@M-bM%)#O0@jq=Uy zAs@kyj{j1tnV4I&s~F|$tnW(IqkhfBsqPlBFs1dt&67&5z;G|?+ppmwcWd|98C4Be zJO32<(hxX)qXll%%7Wfu$jeFQ+QHA@erOptL~VwkpKW@glhoQ(Y@UpepbSW-2^@tA z??b#tSbfct;w(;pu4Mrwj9oo*+|3Q$bHrNEi#75*?N5VKL_IGIn311RND$4kX6btt z+@p&41_OQszNR?(;wg@=y>wNERiQB7o_!8}Y2!+B4NByVQby;U%sCCRaJ$j_DMztC z$y$(q`%}boPkiDKJ7*6T-@5-f}7=fWk zXr`t#3y@2ib32U7!na+E#g5!PnGhUZ4bO&FdHr7#IsMAJ?%3$4HctF!2KzhUVh+UZ z_vZ#n&ArpjVq7MfHID`#1DL}3Y=GYXOWaxs03Zbf{Ab8q17OE!kaSiqG5`B>L6TvC z*dNJn5#Wjg5Lqw?$mq`QNNe@(5coAcf742?15Zw#Q>~s5Y!FYt=wzt^0)hT0^Tw94 zjU&z;;BhwktpJV9muY}l%B2SHi%0vAfA@z{*#jX^<dV)GaUTnT(U*G z%@C*Gn=Z!~J4V~lE7&bn%#T1uq2O=Y=AJnHkZ?O|=#!z$W!Nr*T_FgDFUtosuN?k0~;L9=w3=B96&;*p60zlq#s z|9(=INAXCPaDuS+*gNv8$gN`>K)LC3n-2rop6gFblf3HDXDO9*P|MKcOXtI;R^9)E ze4_a*_*u1lBWF3j>t22QShy=d9073S7L3vP{(lT=nRmg>)m1vW?>Em-;!F=W+P6UU z&I5&dKY8sdi4z@?VPaQc7Jmvg-C=BD>rZeMJHgDbEw58o))$2VHYBRN2zuUWOZ14r zdLC%Ft!eIR!IqAaeE*tns?lg$Z@<)?>5j--<(vG2WMYdAhe2R5T>6fTXgK|_rd{z7pJMh@d_VCp+_&q5H{!XB_#_k|d z5mA2I{QyMXe6Z0r-_Bb|eQ`a}=J@vxE9iU`eD`W=d@TRg>RGrz&f9(B2tO+SIlt(o z7d3cWAd8XPn`*xYCG2pVp7{NV3oJSV3ROtkqZ5l9%N%!B->EhnRQ4`zKOQkKzD_kP zg0kk3+mWf=l1YFqyI`!qfLWY#IvOe92$fnAD%l{NvSfBdA_|NKyK=1e-_314!J zoq8j~4_$#rt4|q4B@MgSvmb*$PxcL6zHm=AnbRoAI5|Vpm??7P@&5Dk%!ukkARfn< zU5Ny|*?!sgu{LTcjSrQI0Gi!Cd&rs)8ASxnw)I{N_N;KX>>Gaj48)TVD>?LoGy1@S zRj7CGW0#-k573&WY1PRs8~bYi9}45h9NM$lLDs3|7?{7$UV90M->;a(@H+Ci>-Su+ zJaK^J4dTV}#!)(f3cDMtvk%60K8a>=0mF*QbhQ2^bm#d*rUCbA>CeQbyF1)9;MlfXLe$Q=D~aQ(21neKZ1Y6 zOuWfHjQ~PiyXK3aVPTx})ke*COe zbRGP}$<)%imE0o14-C<|+GSoTu_}C$;lcbfpv^xRmTz%AgRftbM=TkLEoQ(*&jLS~ zy{E$hAl>zjTxs%#2Xif=N zCKmpn^ij9TigR&562IvdJZz)B}#GkdjU`%40c}{ z`)F@cW+o}W3-BTsZCZ*dMgT-n} zi=RK86;`Dm|1Gv~EbCI#`3_oARqmOBquu}BHarxRqi=7{3JJtlF!oaX#nz1?&$ZPE zq6A1!*#GUI!xn{(w+6QPTk3|a-9Da>tMuxyMUUFwkQ3s8KQy&`3U4THI9`_2b2m|m z9PJa{QQC8XM=Y!5)X85>#;F%@2=Vl3i_^o&uU(F@H?h?;E-sO7@=%F9B~`Od4| zUm+~XLgBT43oV)F)ix-h8O9}?lgYStg2AL$m1KXLv4bHom@2^;D_}x^huTBsekU$5 zUjoz%FZ?`2aXC%(`uFix%SH7cUcRDqaTgAfBDUz~-pEg__608mssZ@82(2OC(}J6# zsDJNz4!rX#d{_e@ZUYFNKBCb}VWyjkbV4O$^MVTplb$Hx-*m`=<3$#1RCA;A)Y&aj zO|H7!F<|%g&Kfp=LU7rKd5dh- z0@dI!OP1s5y~m0by*yqM$=28w{Au(!I8Ri%NG`g#{~X@wua8vVn=Jq0eZ zoI&8D{xo_`sej~}iu+Hi6+olpH3~t63R%C=PN+y-{~9Em#Qiy09C*{SjA6!|m4wgp z-r5_3SDT&RL;!UfxKC3`Xlt!+_(WEt9f$DzYmvJqG-`f)7e?1^u%EEK736*~25Qsu z)faD}TihkauOE0X_LQCe{&5srz8FR>aRWbF!EjU!xUWso_qzj?cSK3;?qCQOsg#8; z@V0m~L3mqEv<8L+tDCL2H1_SS(T+^XQC*GhQ|Gph{bAXPKME}Q)NDgY*Kea1Afe3; zBrF`5Eacrs(;OaS%f?_Aq}{Dw(uJoTUp)dg7Q}?e2Ssa+7ljV){DlmSb3VMfM6glj zea5l-% zubF|6ek-0>cPhF8xeg5IQ7K0TB2lQ}8ERRUG82<#0A{vw>=MkMSbem}o{ML5T-NPH z#YWIXs8e{vZZr^%0xD+tr=EHq_J3%?Zg=tt3Z(0cH^gMoZt?D!C=Ew)zdM@DnnRpS zd8Lwh^R-A_&uB%Zx>E8oWGy$QWaAD-hRtpfnV8ZZNBWmZ?5YkB&a=~|MR%XQca7v? z_?hu2ApXY(2o3m7gE})q!nYWyjb(~5gXa(uP7+ID?G9l@aiL-D$p?3q#h8=KfVEzuSo z?8fL*7e5T6B3@JT+9%e=DH^@JmL5ePF;f3?WCL(}ZEX8kh_l7b;qN3;6)?@w|& zZHNoDdi^^yD@+`ziIlj_jDpuyJ7|1MZV|%$tt48;MjH2Js*#)DBAvmOh+A%;o*a=D zSDgXXaEQ%_l4mPV7ss?Wx=yK%vt(7hdJUm#?I>8vi$AO)TL;+^Sr_VuxVEfoBmfQP zKzTSh@;o{ZrYsddO@f{F^5m}oAE0qRpUQPq2D;fs32E70-F&-KN>#S{+? zO?LEfqm+m}k&z7sPc%jn!<8|dY=74e`4bM-8oH{Q)&C&3HCBBI5*Py;m5iem#iz(t za(?m8V1Q1OC!1Z{H`v8O1}S}?*@nIo&O|6&&N@|QU#~nUl&)zB;{i#y6;@caI*d>V zRId>p$Q6!z9|eqL;F#6~7M0^U^6=uSqqm}vW22#4mc%K-YzylP*0n5oU;5#D8t}bg z>#cbok@XkZOaFl84vQpds?a174wgy}+?t)hb~=4;bT^qKd-sD+H0z;V2cdHoY;nS+ z!sBp;b-%#l)M9x0f4)*<3la{~37~WC;`}7v)}kCt%$!V9dMi?!b5IqZJsxsreCH)cL* zEdRl68Oy-^n}I}B(~IyweL7dx&KvDfxy_rKRH8fVx?Zr4?vEOKM$8ISCYkVwt!hc< zdQiuN3wHjx{`~cGL)E%qkrud;dHCk=Os_dKAIsTt2JXUjrzd+1`V&|6%XCu8<3lK# z{5Z7NK5v7QZJI!!w=l10Mv6~rrJg_=C_4Mz{IhiP=Qk!MlkZ|8IX%RBqso}($CK`^ zU5|bes~XOJh+2O0@)GXl^}RHQV2`hrvs$#Z-dFS;$In+G(WS*+U(xfrGZD3WOBv;s zK>TVGI}4+|&f*bdjS@jcM5eE2@&vcs+Y%nSrHAnoC10z8E%j7xL&HrP_*Z)$l|KN_ z<#d$S>;z17j_MmA0g|RdDvY)Z;{otK{H8X3iEW7Nd~Y4#jY!t?p3y?i)D& zHze4^H@m;8_{ggWEcNAK9$G4`^Yb{o>G6M4f}4Md_>2bPX0#C&6Mt{8J)aX6WR_qv zO`q_hx}T_yOy_udb={3J?^Tn$-dtM>@SKHaNQ3DR<9~#$PLs+-A?A?3$mfBdk zzc=@c=C1&G%;Kb0R*b;^{|5_4cG6?HPYmH_f~7E?piW7WpjII10sYd9*Q-Ow_4Dm$ zg|_qQve1DpO$0NKfX8TTW{6AVtOK|cDgY`V|M|)<%tVJ>WVhSp7cW@Iz8;&fl*{71 zF>)@GsbBHDaF%=whM7rD!jGP1`{`3nrc+(Iwds^6PZoX2hUz2Ezj?c7PBn{of#TJd zj%(Pmt(~~|D7xioNlSoI!O_DRulwWnTj^yg8Q7dm$dccEd(lN1xClSv&qo^(^720c z$Nvx4W+1_Hpm1_O;=$(a@IH~63w)o~=cE=J9mP3KE$#LlFP3$l0^Ah+q@%7BVclfq z8G&h!)j=geO zgc%H{!A{fbXGCE4U49!1ggo58?_2@3O$>a&k>>7ee1+^RF(PnyVFFc8o@3PkgHC;A zI)rp;ryLIsb}0hhUQX_)fQG%WIM-+dbI!bl?WB>VmRZ`cs%}!o_W1tn;#mT9HLdoM zFu@VAc2Yj2EC$BQGcgu*+|iUfnu*_>$uYKNW08I0NNeCb*|IFZ5fo|g=p zs~`lgC|tdF#pT+( zt%LTZ@l@-jj5k`Qjt{zH2>DP&(03Ipiy#q5muC7$`jooae_}DRJo9A3i-t?QCI^v%i!jGUvPso0NZ9e(0#_ zpK$%zn^h`n70e5!%pBoMT{M6()_tR@b^m%j9H0l5%0PLr!+-2k4G2tZ#Q0zwl))Zu zwy=dh<995W>tF6YM74O`;uugzNA4#RiFY7^!50XcdS3YC!e=EEcWHc18&`7LLHZlk zxM2mW0@tZcDeFasH+Yo<@bJCQD4$1;Y*@Re$v}_Ip~CU zY<&^E^%-{A_(-F{hd=k5r*b#KtT8!qhl^$Y88p_YRL<=$nDmA+p;<+PV|KH(0higixk_({yPkj6+ zbo`)B-IWbeDTca1=nJ{Ef8{|l7Nu_fw^AM0)0EEu)T?1nb9mnkpC~bJ|1Qe`0nxvM zz}(};Il2VZ3}Apup4n=5tZIWtn-FO%U4<7+T?7rXwEYV(CeM@ZOtP{zY#xCf67guA zM~8@S0>5Za&x|Zoq>a#GA{^PKifGw^SGd8bHkVaH@-h224Qngm*adi_|L6_i0EdsG z)p*k5Zmr(0Vb+1=o%(W!>|zESc6nZRdb}X$Hdf zk*);XJy%3E%I)BREPrFGF3x-eC^?Sriz3{QO%Q|^ceCIk&>H7XivJ@;FQxDNYbQFu z=7wb>j^d1;;EbQ+lsH_hT`8bcr7MMvA3s?56*HbYn*K zvGnEfP`=;$&n$MbWy?-Q6lt+!nGupUOV$!1sU)%!W{?y`rK~ZQM0RE0W@HT^`);z0 z-B@SL_I&64`ThQQ{+rip?(;h5zV36M`<(02*2h%Cl7BV!4r~}e8y69Lk&MoG{RD!Z zFs!suenhX@u|oI9%^|{z*16Ty7`Cugc)tise&W!K>X5q+X*0=wgI@hOSNfdf_4QPH z9!8`EJ0l00cf68Px}L_>!1@gKzw0;t5>Zl9b%^!sY&FC(gDx$-SDCeq;`-Wj-0$a5 zu?1Id)0zEyV^@U{wJ$z~{JUx{(dy~+asGAT+jsB;Qw`Vyui-Uyy6+5}iT4kKJoO(*;4AT$XIbCV zp}33JK$H`RReJzpb(x<6%6I81H<|aSGH>SA=amYkPkzI^F1Jyd?5!weo>E7yUXEWk zzo}A_vhYMg^dd*$z#;@$-mx)Es5hESbmX-CU~GD?7dqvWNhouCS^z}qZ?SsW(00#* zw46|IucJY+EQkumLa!?qC^~7*#n(etcN#A@s%ymSty(NghchfWA+15nMZRr7k~PE5 zU8U+VdxOQ3WlY@}JG?saZaxqGz)T$XPG21T5$5$y6<|)efg-uj`p3cCFrC1qu4uKU z*F`^Ezm635eH|xxTJYh@V~c@sdp~%x?QW)T44n3=y~`d=O|)dXL@IFa)J|}b49?9V z+N!eQmXn{fHKSQRFEWMlS&`L6VuF0F{D|oI;c8RgvDa>YY@}m%56jP*9Eh@osyG~d zf3QFDyTi!CJ(@ZaHZ$0#kICQu$HO#cG@$tB_*{JP#x6aQ@Vf`qT}%&|!EOxbH+c|w z!)>l{kZ)I)!htwM<#UtDphd;MW3obhtgWaBQhD|pFlt+1D3R3SRbx`#m3?u4NJER3y zD{Jer{*F|jURcxr7y$RG!NRVt29#e~6;Am?G`P(T_=L~mp5wK=?lFCFk_o-`%aZ_& zj3tt>FIF)K+6@UZq4D$-&)JYU-5su^;JZN8CM$Gj7&YnxdHRUgNkemF5yIWbP{@Je z>O!#!rERg0e;)fWpXD@kPSs^-%UqeMGut-9ymz*(eg~LOCt5u6I#c!@q#izhONws* zf7_CN`>e2!O4h*Z95s*MIZhs_su;&o`aJ06F~CMVLcB?(Ma*@y3&9qWW)1#)NLL`C zy2{gjgX%&M+!<~f2dzVd%p*bQfKZ@-I7qVkKKZc2XzIj%=yxOCj#=H$06E%K;wAs1 z{h`<@2v$ktGUVqGMo*oaGV!iByk-+;&RjX}!}&IcXejtG^%#V@I&qKM_NrQS?joV? zUuj^Vh9!6M`B$cjr;<$zMDYWM+aTEBCQUWj-`380g8*;uNro86a6Jezo;gC)z^qA6 zLf(VJp1($2?XTZUB_T$`?&yMDyD86sqdurQrMs~Ze4<4pFg*W}B@EUP{y)U^k_zmL zhZUg_ujZNULWikC8g3qP0WIq1JZBm(M<41@E@VBiEbp>0AKovjcHNhD?i=T!(X`gx zicg^5?VKtl^St}K0l0s2xS#~QWo&P?<9Y9+f(Xa{Znxe#zQ?9ZYhL?Kt&2dbavQ3$ zzSr9vBlvV{p;X@J1zMfTkfwuus8?8U8-XHSRNKv3rWT)O*Ey&-&0bU+Q%IAbXpxO= zwq|UY7FFCBJ4SO`%SQ;U4~HhXG1%ltDC^iiv}zN)u>2%84AF%1#A^~IYL0}k^}@Eo zsbiW*N1*c?9pw6170(hwN8RsafH|0hcLD#de=1v!LD{m{4TFb`r18Djo7S{+PL`K9 zm}1|SNBhIWnBxHDYUq(0?2jhvn3Nc0+jDv6E_j*z9lfLELI2}&cj4x0p)+kAaT#9{ z6}n#7Aw|BOd^S_-A+k_=)_4Cdtc1yArXx-Loq?fIJt=|eT+ryaH~vBQ3fDfdgtx_Z zufUyz!Pa|#;sk+U#~0#D^`5yL0cu!i*%81<)t;l{%NJ9COraxG2xx0N;%}n z2IF7xJ19084)Q;YQSg!o?0q1S=?Tk!3&n*bY@_Ids77Ryy=xjbpH7DOq_Z-uKA8ho z_^aX0mt22zMGNq|;A-6=;K%DP9!ZTUiH7$!kA0{0HfEm>1R?iM@IVkmi8KHp{V}1 zkj3FS+my@9m-Tacd>+&)EHo*=2jn+}s|rE|40(^`^K!-`X(uqRzhDMIB}X z!O1XH{}A5Wli`9x+pA)~P&TB6pj9op+c8bjcQ13S|7fZ6rnq)7wWljXdUIX*v_0EK zG~;T`w_Q$W>obh0)zs{ZJiD7|E$20?d>Bkz#$Z6geMi(TLV~S)-*Gqs(7fU-sm|H| zTvtzB?PxpX)dpBK4?ZzPon1LczUx3+B4dXOZ3;Q44I=1mTS5fVtPzrIm6DIdHbUUE zP!;_;wmD-+&Bb+Yr=gu4wE~HW%dVlPlpb$o+5U(E2G_24ozl1i-0nCbmbtjFFc!)a zZ>1?+xcGudf)EX!Ls`As{-nQz!Z;;3)ZE`0#x88q1GqR#zhsxpZ{a@iL<#;}$rW0N zmMMKjrm~F`1`z9oYN_?+`Of~7M)Sv`xP})Cuc{H-u!D`0Gx<>JR0(RCT*|q(y8$Y3 z(x7o4#@kB}sV>mIsOMnA^NyqgLZiy31 zW0TVog>jzM^2mVajz=uRQJsGH=pE-a=dc&mV}B?&jFzhd&1>cD>i37NpfYU9FLt&Bq{9Tz--! zMW%FdN<-jK%_Eu;{J8&(PHDycdI&iJopBEc(LnNXLEbAdfSs-yl}XR-4w1Ir`K^IY zp_X-1`R#jve<*Yc9&%*C=@NmX-)w8r@AvwyWxCWy|nEa=o&l=}}nHT@73mnwQdEbV1j z&|;P&Y7{j+%@7+!6>~CMF1}I6L&Mi_0k3$`{Qrfd=yP-yFM0{Qx{b2l1z)3VW&eQk zC!MWEsgCyBUJO)of$i544r!_M2Q1XO7OZSLFY-3N8cQvW(aMba`2%)_Q3t`&$8aZJ zuw+hOy0{-Tb}uyEX)jT9(#Wea{*%>dj{XAUfWQT3M&&<;XSrpXxG&NdvVdeqyPId< z8w4BdUPmF-IQ8Imo)ovD5G9kPHuS&l>Q==LyQ7Yh;(}N2QGy-H@87%?XQK_;w_+TF zK>PbLio`xc+T&qHsoM-fmH4(dS9qcO*g;`Arg{ zBm}SNasAfj=(FwEJ}&IA>;9-MT1;FHyBg4Vb&>v9DgUPPXzz0%ay~40>6=I0m;fyO{_qso3jb%y5Pqp1rcLa-jNoN7ylSI=+vpcl+K?1rNtvRCd(ldk z6o4<(p+ZGO5%)6n*-i%p>ktL#eY10mL_BuQa!gYLh&^~?4N=B(oBve_Ok-g7kD1?* zTX59~aRX^I@((D!jT+en<8%FeuZzSHa)2|X8J`hITfbE(eiGa_Wq0~|hFmzpUp6M9 zx}r8YC(WEU{uA}yGv02coxp3pzkI95Jl3CXp(@KI51TP$Y-p$MBgMP4vJ&9)XO<(x z8oznSqQ&{WMQK5@_0pU4wvEt=laWK{N7-RBn89G;SCMBRV~eu;!)2$iaBpUxkb9o2 z+Nz2_=BN$G5T~8>fGZMC%P_w6LooX5A?P?28y(0TCHN(a#m|~8Cgv?nqa)W%(K@lSWmpLy0b@=0bvhPQ!jGa&?!;tT~Mv_UX4 z{SfRW>0#FiEHS*Dl+{bDjEnCXQosnVPyFvPJ7dR3shX}@BYZJH;NkT_pV_O9ijZFc zP+o@D^yZ6Q`6t5KGgfH<7DeUhBUj`sSgSc!gNOmSqG)I0s%QWgfa zc~dmS+;7a<)$?y84<=VB;{2tB__M+0C+a?pEE$Wy{oeYg%sNhutZ|bk`>3R9QJgX9 zoF4KHP7kcBR7FqB<^1%U+E2p3Mr}ngFBFLBH<{SQ3>Bw75H!pH!Ob78ScxyS`>N8$ zz-BKP%iHiBhO^yIsFcl&n+9U7G9u?-xJvGGrCMk741#VxlWH5B%m=6Kkb1}UQD^_5 z5|WKJFKsKVe{8lB*LJm^ED~FiT^SQz);1SKbJZ(oXYQMB{Ru|$EH){z4v0CX{U#hS ztEh{c`>u9eki9cqc*(Cioyp=f3sdU|TW9Q=KoyCJz6X8vqZc=H&uxVUMHy{Yg5Au4 zf+1FDrKf#~&r*Pm`ppAE*ewT>R(W95&5pE}yXu}vZW_sO@4ohROT%47j(VyrQaV4=y!9fq%i25Gmw}ne7YmDFb+DU&{nWiPX`el)>-l&TPBs|y35bHRZRwO3V7yu`%AH(pHs*J zIakil`I@_^?}M%-rKVh!TV~739xGhApANF3em#VDqzO-rWVJLyU0A!#G}^!3V7+@M zx%1?$X$hAnbBvw9CKFHZ-CZqu`lL>uF6qmQ#1NlN9~IU6TBH>^&7le5mBGwAcR{ce z#I8kktETlZT#BFGi)M?0L%wja*I2ONT)}%h?5!$$KS`1(^QVp1vJiV(6%$7#I-4jq zb`uow@}+2MYuCZEhCPvI{udpEa4h`7JSL$XVItQLutC(E?`#&OJxVW!V- zQomNWK|sZ}Te`1VNR}$r%jY^U*+VVP}JYV(W6`Od&>C&_$$;X zo1~X0?RE~i&E!e>c$qT2Mbsp0e zHoW>441Ws*2cjro?B?Oa?L=jeR{A@#meG3sUvv~yZ`$V+JN~08aBo8daYu10qI{Y- zt^q8iT3EBfEjHSm9imc5okX|PR52$FrH9VQUftr_6_?V++g@a8OsMIn(V<|z{c|U8 zq$k%1Z%iHN={9y^O(l~JJ|q1I!Qllj!v$6Ujh|&%Xjfpr5cka3>txJ4!js|V@a&gf zR2Y2#B|-u3J*U}}@M(4&cMIRey?D!uvtX{-0R+3mOynP1js;{1 zq3w!ap}vLuIfi%JJY@sJW0$+o5jVLz9ctpl{w@FOkO=0=#7yRphLl-8HRa@)2>+0Y z$O&GB40YEKr;PRLD;pyV2*!Rlt!H*&x7p50RggM&cc?3>-#Otpi85D`OZGb3Mf3K< z6T{omqf<0g67viKtHlmhp7_Y17e&~=xTIF%UT~3tsg+Qm=m@}Un{^DOO`ZS7>+1S~ zH!AcSC$4}KP#kre{K-%ehj=FdULGgs`>wN4qEzU{jw-Ne>(`f~N5+tKvu7^|8?PXK zeEH61TKXWr;>R^8VOBnU_HT;&Id@0li)*H(@+@#C`>{{cvUN@>fd}!uzYre0%UW*_ z&?-i?2tmHHsxu3wjc(K_)DpdWVgMEFAxJhp!jAU2@l!a^Q%w)h1KyjF`&@ym6cBOB zFKNgvw@GuBw7s7RVz;K!exBrg;J+EVjWcKqL=Me0LY{KM$1aE=HRgIg7u52xqqE5@ ztuRJ|B6(1#D~VqSHfkO72RYClv}Z)gU+Hm;rJb!iOp5=>K1=I6le=3XOBjdS z;XXL+lR;b!B0CU(O@&P)g17k%zO9TGsUnY*hF{Hx$gF^1@{on7c0L76I&HVp_+eZe zR11<}yXAO?owD*IVL2(aghS@Q{yV$ZO>>7^-khoqX}vu{0((C9d;}pobG&EOsTtFm zeFjlSzTjRf$E_olzU4`2HVP>8KZ>y*}UGzJ7!ZPwr*hCXaf+yw3CC;_p^j9c4&zz?Z9G=ztqL!hyU~)o5NI@cAjS z+ByvX4%k=&qd&B4WHG?L>!Eh5g%-2#>$YZIjSPRgZZUC0ub2z0IEHIa1bX*}{GXRp zerJax_rk2M=ZR_tsU$u{AWpu=umUh_m{wTXDQa2II;JBdQE4^JzMJMU%mc?!(RFcy zepz-)6BES3q}#ly4!cQ(SmqTzlKQIsIHolE_{Ny+Q>Vj_Q&3_(C#NEjqM1W zH-f7uB{!}S8d2B`Xxa^bDiWjc5kU4vc4m+OAxb=e@Qr$-xK^c=i`&+Fex z6_Yt*@IzYiJQMD0bgsg2DKFg%&$=&lUW zw9bNVCGXy?54r8+k~#|Z;qpR=Td^}K24($Ek* z=1QMX&7$`)v$X5!PpHv8$R=U(%eKUuycs%#e*?g=1+Gbdq41p4^P9KmwQ|Rlql`@6A8+PmAsRtd*^vr zGpDTbpnwa`f(>jF65IQ$be?WIOj<4|;S){D1yd+j?ohr2kL{g15oZ4o{HgkbfG~4n zPqwRk6&}WAX@9yA#;Rrqc<4X>OfGD26kR5u{PDBq4tE`w*Ri+O(qkLJOScoB_A(|R zbV{aa$#1tSOyeNvzvCpt@hj+XUZfK|&=?Oxz6CtDA%HeFfKb`z_%0`^-9ripFKBQ+FZEss{3-M-{~haLFgb`QG5W5CTnvNdUnxco!3CQ8Cy|zr3kU3^XEVzdrCU@ zdtntr5go=!d0=YC0VJqQCs}-o`=$i+U-YxLn!!~6K;<)2s9KpGHdwO>*cy@><+Mq`d|;r{9#+ z$cxt6eg;yYBvBFsV1{6Gq^vyBOD^!a*hMIJ2oM6`RA9LJ%dF_`7FP5hg@?EJmgDd7 zCR!N=dDW<)RZQ8-Dh1GC{@-ZWJ8`d$G3ZvD^rL$#^ayJv-#a%x6||^j|TDxl=t}&hP#%Gsuf+onKcUx|MGg!WuZuNBWRh=Z7e}6w%Pd zzI83$Emu|hBy8!_;nw?t%8hKgLi7TNsSd>3Z2fgt#PpY5;ChPDIeksZX2HD*<+btb z8>TeO_xC@HSZKPYnojek%OZSJjg=9OLxC<^Q_h8&y_yWPncVhBhtBaQRz^>#?{)U% zt}-VXo(wL1S8A<}td(#fvb+r+Ygcb-8ykz`I&&fS>nR=%xWETMEs2#M*4By?KP%g8 z?`=LfWd4b3b@3GMpg-Cl66SzUNJMs5*Ti-DwO>dS>=De;E9X zoiS%GvJ8#-YSu{Jls(J(`jt4M0mgU1D>w}}SN*Ca z#J=daw1>D5H}40I>db7pnG96ZMqLd-dcuF0XzDk^wv8)QC7KpA7}@dCM9x7&L__k= zLAj~G1E#>>BS4V^3c_&IXIljFEoSUTSHF`En*e+Bz=v{1SB8Iph64S(Y94OZU~LhQ z6bV#pd{saeU%f8bppyfjHqbz5@vtfC+wRx{vq|lj9_%K}Lc#gV@*2+`4<|{bFs5FR z*#dP=ZMtk{VKg{i2DhuOe53jBC9=SpuEn6}DOEcXcU68;E4gA0OVReC(2-K^_xkTW zr)8ke`dGx{ZvNOOMYjp(E1WE0l`PE=ZvL4UITgd2w|PcUl^xbRA`;)#S8(kxFZ9b> zRyb>(9_O(uRsTF$smkas~EY3{vL`1fpbNI8XYz$gsD?)!YqOf7yOKlOMeB9AN*4GZWXhr^UwDTYjmE zJp7oN>9T%9g6LKNG2CSlZP>eC7Tod7z%?b%6rGWfH12zQ+;O^QVhuo!x)T!a(DRt1 zC+J^%M)5tIrzexFjuP!?`=c1dHUab0B}&RC6^6QFW%%}xcf#m9I90Exrf5ArnO=Aj zz5b@R{QTGpQyZ|B8wl1Dx_@`*M@F-DxSktPVbbwp2Wqb#IIQ!SeZm-Yu@6UCn9}pU zupO}!h0I`>7V!hglFfiu#sz@3nCKSGb%UES(FAd#bpa}Akjn-61tJ6Sag#RmPW9wf z6Eh7yIQ}Or_*SFPX_T{VNs*|?G^-5t&Vj_-z|BSXB6tuNsH`66jr(x*A#!){h41ZB zt;nj&p?1PZVNraqQ97yu!+DFGJZnAt!uwiL8R?P__5WU<-t=& z1)uMkn^zfF9F_^;+ALA9@8H2(U`4J}Cj!QF$*!Czq_-CeY>EMT$9aG?-gI3vr^{dO z2zcr5XFtF@&dT%;3xv;jurP_r);(GBi@x)yOMuESa(N`={eU!Zj9=MxBl;Fg>}VHT zzGX8ubCp$nF#1OByzg35&K_ih>$7T+a1+;q_>yoWuAOVk1@jYHU@IeUQ8c$&U$+Kz zO|;`PUP6Htl0gjO`@Z<-E^jS!5frP>R9&#?y(3R9QLeG>thi4+lL%FMPa3mwW+|uR zHQ$nxKZkM2=|2rz%CszbIE}&#f+@pcc_c8QYPY{{_ew}O>V^UK$C=@?>OnFO;AFFh z@Z~%RK5_ss+XOvzU(7p;k_T1Tn6knxbIp#^51STxtys_@T<}l6u4q@?w1}IYC}$|e z&H$HHh+$dF(B`uo9#JdH2u1>1CX*or;1pA+cJyXt!`Vd6FAJjqyYG!ALxhn-oKUf$ zq_`e?gx#khA@o6g!5?1;XkeR(kJ4~dQy2|kZM}B-{k#VfPVUJY|1(@i_`|t|-nHVs`3^Za# z4PN)QbYJIhCwabpb^ljkVmB<|nW2_?L9iMaBSZ#w=QH}yb+Nf_I-0#Ktq(xIGQ?$> zB-?*pED(d8C~O8SC2`axC}i$DT|=?&40pVr!}XD>->Kl0$}sSGx{z(CVh%cQYtEsE zTy#3?GCvA&vefa*VZ!U+j=XD1?C2kn*Y92`Y7Qk|r9KeXW3B17J}B@mXE;-%%s~IQ$Pb0AH5ODF40q7kVkFGj`*S?(SF@zG@ANU zM=Q~^l5?q<9Y#{d>=mrWtX^XTa}k=Sv2&a54Ycc z->%Zbst`qd=tA=!1$)-7l!V^r*bAz}ddr=`D|q-JGr#57%s57=-bh<_JMj~m(Qv3b zsLUwX?OLzCzimHGi*6)~FW*f;q!$?LB~yRr+?@;krKpk2r`f5wHz@C_OLXdF_bMsj zcM=A?hJdp50OoU_Jw3W>w>yC)%_MIEo5~h>_a48i=R3({yC>GfbzyGOy{aX)X|OGrX}QKH9ICB@ujQt*Mi6bd|m-*0Om+X?yyj< zQQ;^HU1a7u4^89E(6ge9K2=q00^}nnZ6)Z19v~!?Z(Q63eIL4WU+DX8Ooer^ZrO>f zID@<%XmruxZ2tqsE-|wMnRC!*;ba9lqmgm&d|sAoo(C1iAW4%bx!*$WGK+l*70*Vy zO=>AVDQ4@!=-wPpcuk(aRN7a9JeM70gRT985TEqUF#S@$W0~|Yv`bjUTaZFm-Ok&= zaCR^LKz&I{<_M2|yG7+CnUBE!-_>0n$99x?7WZi3dwbZ+e7OMv9}M>*s_E38hciG1 zIRU}Z+19q|&kXFpR->I0S1*d<<;mxFi zR918ilGMowL~#RAQY$H`DYC@Uc`*V4caHlD~bRO3H>>o`m5U(5APi35R zgox7oh04r_>r93kDTDkLVAvM~(+(rM8o`Rv$CI~)pIEJwGFr%6Q#a?|s}ZYt4gY|g z^_b5jme+Sh^eBOs;=pQ2QBN|d!x2$9o6|ICb9VIJ(Q_hm1_)mAdQ4bJiTTW3BV;8@ z=o`-5!&TO5c&Ol@`Ax?1hx3iY)*T;y>KiqUL|s4yzoea~%-c}6CtUkGKDfkwWs$n3 zw1`>Mkof*zH&_&ZW)a+rmwfI#^z>f|gi$Hw7)Od^Dkvtp`)0Igd9(;^L3|us~lId+>VF_m4+xWy~U;g})-chAc z$ffu%ZONjK!GlOhVU=D2tJB$G0SPWv;{JS2AZx41q-y1M4Y^zV#5);=h!@o_L;gKZFGiy_+$3{&RRW@#3jUbyuw%w`n5E6;61s4C#|}^f_X|F zsKIaqD->m-0%vgL9ia8UNaYfPbX^1P%i~T1X2&4t@vl(as8{$iarF@02LSnAR?q-I zWQ!GF6G{lbHfne7hj6u@%Us?mkx)R9yq3tbXKq9VoP?T4J=*QfSnwBB|IaJNSLt(1 z(GzvNbi}C)|KR2RVbd1g3d_1zw%^%Um68@BKdkgU)r_l`;?9iu5wFV#l*-SEGojKA zzO_%LYJ1U=^!4*9pN%Th=+S*}^q9I;Hr z?DuJZ)C}dBCXfn^U0r*pL$~^4+_j_HAiIA1fFx|62L>we+D+77>D8Mo3L_XFlQZ zn4|1!FQs!{eSLg8kMnCq{i939+n+P^4x6@m8*0z{Z1v1NdbqjJ*t|_{)FM!ud~jU5 zZ-Jz6jU_RN3ZxW{h4&pd0cLNqphZsrW-#OjK!zK*{t8US07%)#^0I{3)`BjjbVH1` z@Y!l*bUft3UsZH$*Y-5S@$b;wr7iHD^0x6yr}<9NFZ9?Glqod>N{b*YxHPQbG}Q9K z!&Bc02d*7iSso!4s3oviRrUftc*!9Bk#~FWjoA9((orIau)z7v1n#KTr6~RMp!M}s zldpr?<+;llO^bL++AHJd5=wZ%{*YzUUfdt8&*lI!De1_7Pxc80O%eU>6-r$c@a_YB z5vS3-E8d_8^)!x)xh<|jGq0c@3m|(0fY%V2n}F@=oUt4PDGH3-x`BB=!ydAa(dx?y zc&JhogBVXLfv6|LC)Ao1oj7j(-ae{F&i zB0|^6uI|_5fWWM?(4Om10A+tI0oZv53?4_5PXIc)TT^8FFev&g(36oCgsB$`)W;#J zOz-7sppqj10}2lxOw=mT+}%R}ZflBe|1hf^Nn+%bPlHXj$0vU4oP8t+&pv=7KSmS) zz!uBrg5+$?OljRg4Zj4AQveTipvKYq{*?@i1S0!_Di7e;9%C$lJ|+A1Ch9I>aGY zAjE8$P(TOPU?vLrcpObwI$RiJI;uesXd*bPaf@@F0DK*S&K5FdjN-2e#wWVCWglm7 zdHmUD!E<2WwPK!$T;e5#hHf&RT|BAn4-I0N^P!$vb-*fOfWpGHp-@1N648+15x-w2 zEV@dfU3%$12fp#2JL;efA+NqT%4{}KevTx4_FItdOb6dTo_8x?Jm`j$qsZJFA#0c6 zFCCk#Kc4dAp&W5OdP92Lt!#h!R0yx}BH6QW65)2v?t_KiSzP0@6H4kAZ~y4?2+i3YVqwEz_6^v)io}0x@qQ=2Wp930@@OJpBoQzh z+|2Pj`Wg`sS1Y@i|8!QY62NgltH{u?bsib|j)!iTI@ZGUAhwX=8RRi#SFR*@@i57X zUfYW93kSRdTtEj?LDe%AVkIU#yk1adGH`tsHrnVSqwA@OCc zx`$jVdAPcuua3GTgpw@K(CO14?YLsY7AQ-;p9*(+4#ma0|G3Gi0TYomw`4!*= zz;sm9wO{d9pC4pwlLOs_kfklm$98i4pV*#`z z2hgYT2`KXhr5)N;C)jHI1<}}`>8{b(?xc=l77`Ttf8WNh5ha0D{zz}%^o)^PGR$%7w4dh^Omy^b z+}Eg^Nmc(a7JKI2U9Zra9*s(WNoQCyH>5`=cUHH}l)#-MKwU5F7Ja-$VY-hVofQMr zBgk-hCMzzr`!yom>I16E4{+-C0}OeHazuF{ezZKL2@4;-r60>W9qUpLJ*_NIq^rY0M!}2wz&T-z6d8IiynFPey1z zkI6=BFqbeqUlV9qRS~@?lM(2h{Obu4|0_9`=QATh9>Qb5W+@4V=7i2QdLlHc{pV~o z8VviDa*7IGk#`=k8M1vHTK;kN^)!qL(Z3K6PIxXEQg&09E- z3LxRYV<>Kk^vqsS4*DMV;ux}HC3fy%d_5n~zgv|IgId3ZpAL{VbO@gJ(6Kc$(?>t! za-P(-G3+f%!QX~ONO0g<(z5~dwUMTgjVy5l|f`#vYte0<=( zz+X2L#58AxB%(0=J*oEc9R3tfjO3S@XLEY6==dJIeBAMi%>~Mf^$Xyp=u4Knomg}augp_v;K6JmR>PER zB?q-DMXzqu?+d;g??@)x)X}_E1y2^10F%1`e+E-bB4p;TX^ z!^Z{WU8Fy1uvxwrzft<1I3vBOMBeyK1M-|4gPi;*;f)^QUz-RlhlOk|O8_rtJPikE zd^-Fg&oeYsx&;B8a#Ft{@;*G76ZoqD$YlQ$aG^fAoT8DLS;amUq#LX>vrF5PPzB7KB>(!X%WN`BX%6APnDzDjU7Ag444xC z$kS+Fu20<)LPJ94TGAj(_*v(g62 zq%;|QGnH*uo~Qqd)_EWO%jNjh*iSmI6oZ%|u|dBLcKS2fPoYOg+eFId_fM#Eky*!@ ztJ_Zgb7t@42sdkOQ#rmA2mKT)jx%AGb$V+cTl~=i`DtK)FnIV?YhbxF9{gE<{-?Ic zS5rby%Cy+LU0*MWp2VwTexF4#9eDW48a>WT``OTT)?COH;QcJv@kiYVJXLWFT7}w8 z5P6MAr#6eBxBd574>69m$0v*#*#-c8t>r*fAKZ{ig6J+C$dOzr$e5pG?y61WLM4P z<%3{E-HG3Zhjs&fTx}`F;eTmfi*GzV6zCUZ`X4^9G0bjz+lJYC%Ah^j@6he;-gwFy zC@{)~`+FK78m_>RMSz>R0@@7dJi-RpzZUz#;&jOHp-Mag@;CVUy+aIpQqC((8Ub&C zc~QJR@hhe`yl91trIBB&{Kfc+|3PQ(^GK{Dt%Vu=c$ekd1tsE3&j3TuCN_`$9i5P# zt+N?kk1ZMW@VI~qJ4bwQ){xkL&UeD(SD(Sn<(22je!@TWX8kXSV_PmqRDtV1+j1t7SC%w?Yv7p>=I?lqZOXmLVAHM z?sP!s0mPO`Tx7>)apjX7(DqT+xM454Ggt60{eA+HjUQ|g;ocqy~JSU z4bcM9B+Y*Q6Wm}UjNG2BJw~s7M);hVMZIu>{izn3;r>^q$84~>3uek{0Ox%NGoJnp z;K8uk(H(x&#rN9_W4c`9COoi?<+@v~n8~eE3yGg%zGV%r@S#RH*e_qN2us1rF&fU| zNheXhn=ELB=Od^%sE%3%w8tAFBgBPk-_2&Axnz*&I)-)hK32?fRqJFTOc?Wm|9bZyBLXN$Kk7 zihWvgD?;-9F9STs{ntoHV$zDhi)Xh!TuDVtj~FwjIE^<=|4y_)J5)WdA0Lc8@%fx; zA3KceZoT2?BF4`|Pdg71G3)}iYSAw5q-fn<+q!pr_cZ1mU~1uN;X~^dMk{=CW)bBC z?4Cj%;ft%f1H#G?%(_xuXSrPYjP?VJjnGP}&1;0D74_#Y$;`2Q%%&LXlm8xS@y&JT zu&}IxdCz1>rV8&>^?{eHD2hLNqp^epQM9#`9hstO2-0tl@Vn>olkDpiJiyERGKT%= zrBr{uFquOp1>dS^$EUv`#3Fgp_ha*<(en(iY}Uw2i+Ai35Pfoaib| zYPj0;#@45o5g<+Yr7udwK&H@qrtz5^qjiii&PFsOw)J!N--QB|K*;YWkVj7bgyqPN zp0S+}`~uqF$~q5O`-g(03VATlDLGBh{NnxxpW#lKz!XUG;NO^6 zjmCb`ng4t?!uC*G{P)sSJp}X#7uOI+Oi-_J*~e!dp&}6uqWCM5<>Wz#@uqoqe1^y$ z1GkSWBTR2WS3dU}dQ#)nG)L2I$vaWr#yYzTradSkl|_|@{k z<+-$kH1`c{oGavI3RE_PC4@1`-0SkhI!WsO?YtNM(x2EOjEbOt&5q4$8-zq*T|-_T5{yT|&HC{fd zm(RokD)*m}uExi1KGdRwix&k(yqMGF@zxqATsV58d{lpXj+K-R!Y0N!-U^~qGaDuk z!(;ZkE8i2NiMkWFLh}+fF$FTnYQG=;PvP)CU`)fubCX-yK3mZR8M0aV=|0hCtW>(H9EH3s9sw9RE8ovP3G->xvPKM6;xGC6Z?A$o2*Jt-Cd zdoeIA1oS`pXW|UeoMwL4IRR@f+_q*FkUnn6TDLIgx422m*~l~Rd8R1}adsTo4LJ0|YD-@WTw_g`Qw&iU=V zpY!aq_j&f$n{#qYcVMNOrxxsildR0N61=-_^@&)Lw?mJd%v>T;@gBq_0CdNRk2zEv zEL>25A&Og(wlDNZ56$Ove(RrYFY8$#*LaI2glH*5@X*Wc!z;gPxK@@(#O0|SdQ^i| zj^AfFi@Qz%C zzwyum!EiR$mQ4pv%%r1GD62F=67+n$1u+%Bi86bHegZ|EaiWxDI8l9hg{d_!xi%Rb zeii%a68xVdH39@$O%vNnjoQ3Zjm>tA4NyL5Aecp6Bl6OvUF^e^0MSOb*Q@;eCrsDi zPK+3>{NkkS^LUw?3{GLeUn<=M|qe;1Qn)Dbk;VzrqpQ#Op-X<*r6 zT5*J9o7j=$6qEGVu~oa;yY%q@rhY zefaha8zfu=)At7=APp<~Tle1<{D!l*tZz<=8-btD!t2^-~OpE1uKoz4)}} zB(kpBIOD{1ATe+&W*w?kBQ;UOw`1D^C#%TmUAvZ4R$a|`aBy(<@5g(^@80Rx)z>Gb zr7^~`Oy24wzIw&mti9c)B-mUwLR?bda2Y$=UGmdVdW8RY-(HM_IBzHOj3^{2^Gaqy z=s1z&cH!Yxbe-=0l(ie=Efqi0gYS1XPq$RRF&#hI9(p+69;`UAb$uFM5GVIY^%4A) z=B|wwr6&t0WTXT~lqktXxrmCD_T#LFB89PrZyu6+uC@&JzO^LL-3|^}p!mF9{Q@R4 zqpp|OYWNFocC7vsaSpCb9r75zlzoXc=>xSS@|t)`HD=(;y9dvasOoDJmyA)-%HW8*IH_ zB`TDhhc@TkLi;VCKOOItV%ttnCci9F?!q(35Ts|+_Vq8oJuLy-CBMax)OXIscHOy_?l*ifW}Ome^bj%B{;6Dge?EQtU4YPuM+C&^Swcpw9;hAuXv(}ny)bo( z(8^5@wUel}xNtSuwDdh(l$uniYi4cB21ssk(pUOwk zBBa)xQ;&~d3gUBhCM$(fnjHL7PHpN2S7{XU)`3ZpogAFw!>sw{X3c>p1QqAHPI^$A zoR{yP5*g4&)*2tbID1 zQN2DdqkZ>S2@gMBXU#y=);!FBHRNTt^WBaKR7cohE#uOm+3KfLFP2w?+-N^ z$><+a2cKoRgWo*8;Ds4{IsxaG>`{^RaXv2PQtIk zLuD~ z(eNAg05gj>ad6BN}Znmd(_CH3)BEC;V6N(AP zZ6N9Q#b&u?c(YlvQ}dP^MN|zO?%+sA<1=YeOt>aQK-Y)nOx7VEpry{0-|K5z#-H)L zg!F_}Tsso2=HehK4d10@qwIcj{5YdN$b9!K@|z}x=qhg#oJDVWc`a* z!Q(=iL3O8nuJ#xIz$iP#LYw(i2i$U>HyuCJLg%CwAISiJ3Z?Rc@oz0tEW5uV6*houWkjufge1yIc-}D-_Ikm2n_0LAjWK;F-P`>Kfz!x=(c#?0*X{o&c(0GC|4oW>9dbnMz2m~$p z)lGx``F#gXwEVok0nI81_XYi&C`Op`+u>BpHzSl^ti16>kidf~*I@R2-H4-3L#-D) zgD5zR@F0{1%#nJ@2mj@x7nF+?yCxi2x_ZhOz&J^7T9VJ_Q`70<-a z;#b-SW41C4$2wA{)3{L#t6na0E=tF25l_q28`1FjlXX0FAPUbPPt5AyQ;d$<-CuIB zJ+^iAdp*<>Sp8Dk#qtkzZB4@2>sF7{9#sBw#Sggt(!yLYL~7Q$!$Fp!V6N?=uPr}7 z%fd8RxngthP~--`KpdX{6(&6J-CXxTvZ^5?FR0^ib_T~o&}Y10xjkGtLa|~dMb$Vp zh#N3n*NQTX`D;CQs@B=c2VsCMHPw@P)%mW##>HD*!TXf_TJj+F(UF|Z9@_^OXz_8P zu@>Hky|6F8;8k>}N73Wri*t7Bls}rhjyPybF3awe`iThH{2Oy!iya6-8W4wB$|@__ z^Hc&@_^=bkqerEcf&6NM{9I{$SV25KH1OQO{u8SBIq%dNx&ar! z+L$YF;AzrAxXEqlxj2&_1-5azZ=ZJbS2bO zL~qqm5mUXPZ|`cMLT)iK2b-WOdKs!)efb!XvGrj|PhzT#oXv$0<#qRR8BbSS^=L9I zlL&Xc>5h9&tH{pK;y_Y|n9mEWM`mkbHrPz|u?!2r%;g){w&vjY@u^R`A^Zdx%Yb8R z%kM|&^WSz_#{VYGAFSec&i2Nz`+M_?dxr6$o01#^8^_n4jx+j^8Ag61u)P?X441RjjIbaFgb(=|?9NkO817=ZlhJgw>~PEK zH?8N556gd2(Q zf*XL{xcD}h_yYR;BeVu1$T1lI)a$*<2`yzPHT>t=`J5iHPyF1gh?!3fai)KAuh=@L zMlEHS@hp1?YX)V+sP@f<2TiHP3>^@Mr;-j%6@p(q+>KW;x;T~4Ql`0jP7H4 z5GZzR5wy^fEFEB*|1k3>0O&j1+~5u`sDPo!u5oL%)6&+6ptl;40NIu99#xYaax7{ND|+_(o7-b#V=lzYl_u*F z8A??xhcLFHV(i86j%D{N!FQ`~h2woJou8$+ve~`5AcnUJ-1~N3_^wOl#x0!8{!u4~ zwBAv#>i5C)))M{M;?$26dfm7bjuPr2utg79?qIk>3prF1yyg9FmNS17yjLE;Om zB{qh${Q!y^dIGpSM2z*unbeCaPPVJJb-LgUivnTI+4$U{uVE2)p*<4~oj%Kr%G1~x zqqah)I=rs3Ux$j53)){&>=9oQgxnJ}=mH#Sj`wJPyx~H6fHG4M3t<+5;i$^d#?y21 zU^DZyYIv)=;iyGN_P&D;unzG}ya>aT+yf4r;HL@)$@LQ`x~8g(^rK;1k!d>6@{Yw*S zbk2*5s&9G$#%_Ai)k935P+*`dbCn|)O2PROGN2=}&}D?W9~}JS=cdWsKdmvm>Io9U zO1Y53^)~l_w()IC)!y`#6LEX4F}Wmm+NGqwlaZOCr|_?(VZW5|iy265m~d&4(L!H- zW-kkJ=qj?OIjkE}L1GOy0dCR;R!o?;PgrvsMd!9k`h^y)f?D7OOBDXeK2(5wI<}`L zi*4CDsK4L_A|XAmeTPMV0j(;{d@+dfda@;v%Tnb@Ri% zS>aW<&2(&LxE9|(s`I~tqh{5tTentLSk`FpdMynFUOb=kMLt25EOaK!@xXWy^HMc<>4V}$K*XX6T)IU05@kl z;1)Ts3f1w?{G#ifKLlPr+}^)-7X%uhO1o;j7DS2G4kI`CZU9+2OxGOhpRujT=~fTu zPouUun(3TVSiC5lWD;9sQp6e|H@`U1Pl5TP(2_LD2g%JXp6%%K($QIZ>HnsR4RzHq zyrqr}yH%v;=0CO!T9o)vASTKUI;a>>Ma<5X1IQLgVD7MurPxS3w+TIp z`mNwM%F0c6umKF;YDju5?%tDh;WRx+N*7Lz=hT5aRl3j2xYi+Mg$Mx-&%3t!AV|A< zn##X~*C&doO97uUkQeqj$7UARlpsByC{|~*SP*T3dI^uM^y*YY!k*etr?WD8xZi9mV7J87!-{mmi99?yvrYF?q&$8^eodZ-HzJkp z*~R{ks|yKJVLZuu=SaB2$qk6S0Ba?Fm|&U148s|O>ijgCmQgsDU762KQ4Byk z_4_S0Y4jovS*Bi+ZP3LBb#MeeFJKGoChc6sR+T*FSW?)|_~UcOJmoU7T{@kk4U97O zgI>PivMUdQ(_VnD2-TMq>?ANXwDgzeH7`srP*+Ie`WrB^@pZH+xcWqV(4cQct?JO} z>sIs!?+uN7_|RTJz2eo|#etj9*wLua#GXQp0QzGI`NUIbePo)!!I{(FnRjt9W*@=* z?ux;xKTdT955HwwS<3RJ$M8&AqQcCI8c>Y8p?eKLJ9>TCe6O5_5YnyN79%*dpnUuZ zzhu3UA=gKCgyy+!g=E!$^Hi7%$z}<$wlH#6FAR64%MDc7U^t!7S)w^Sklamz!S1D? z%w5jSKTx;?`8^I*zy)|*MEv+D3q6hE#ALmAz}Jp`AMWdCfOrt|8aDipV?^Zx{8L%= z1<_;a+(&IU_l|@**WPL^e;wHE<+yt=6GIjCS6%LCOn*C3ZJR~wQkYhxk)1zW^tjwxz;Fg4g-r3!DLDU9@ngp(~MzH&Y%yOX)nF%LAZsDMe4v@M&|at<(HJG z#-i~Zvmh1$t3P1CN9-w7b|Tt(0+daB$-_r8oSD*~gi^1yCNRXQKfP<}6Z`yAp537>5%(%X%*UxMR&8#eK_~lFa zdd~lTOW^y&?(A+_NOK$?51bs}pfgWO>gruq{Cw-!M=GGH_9N2#38&pRR~{qvRJz9S zwjj3@D4yKLVeaDc`d}3ItUd}a!|-+09VOfOo_3LGk!4Y7dyGB0Z@?XK$K;K~Y5LJ$ z0`j@{QmN>z3HG-$L_Hk`E$deI=&SW$bw*nznV9EF^$Xs{S`^?Qf@p;LTT&wXdH~MQ z7s&TE=O}?{ItEmd5|I6Lz+rFuDXH!6Xd`)377vOGAF+k4)$ypmofPw@CihtS(SQHh zE9HQ9dyTNNr{v9pnD^s@iQUgKo5T=xb>9%%wgDo)9%F}U`4F=CPPf^>;KTT~_YXQD zbK!%`iPVs1cV)aOIlr|c%=ek3h+(P3+mMKJFGmlSsCLONL_*qX-+O4P#G9L`-ywXI_e%zW^wBLxd8|Z>^cp949>{ z*O`R`b2zufltAHKhZ6}80K#T^)b_o9zRQWHLLtc@5k!wV^VRxp+8^@ZTTDn_u$TV# zYn<&d%@?49-Wt0Zw98gCp?!?Zp-|?OHT1b!=Xv>a1ibeC?7dD6^~H;c{^ul!>KitV zd(SR6jcuLA1+!EQ(uO_%Mi%bhLduTr5MUo)w6yLK+ zCNjY2?Xk~o@N6zUJoY*V1YYib$2G=^bz3a({QU2g6gi>0&60{h_8bG)VnETU!<=dJ zw%7iiYtnTCHwqjb$^+-Le5jj_G39!qM8zMFP*o_IkXU#}9O()YAF9XP?se=+CQ;hz z>FFQ0a!PrxWlzTM=|LlV*D~Cihpe-+=k?Lb#+y?l1nc0 z`*0Z3h9K=C+akxJ>Sf5nCVZ!L+M;M)^PScT>M*ui`&fcl#xk<`3oyTBUbi^rw=cBC zH_cevScA0--hYFEePw#|F#aTd6cy_*B!}KLtNB|KwK4Wq=a*0W6CI`;#J@Efa+g2c z|HWso_j75=*85H`&-F*lDM?>?#qo?t+}Dn*V%i>ZN7+JSEYpcY&4#qcENahp7D9gJ zFa=X#E~V(!xHv?pdjJP!UXa8Gmag%FBl0iiNn{5u_YbfRjH!(~ul2;{>sq2MF5LvM ztwEiCmHrI5O)`4~Cq)bty1Ml_sBkX40<|MwWDz46e=p|%&F$77LRZ>K(P|ez^q{`| zykPw}1Ix-{w4zWoGCXzHFFeu=r!#HVj#sI#GE^^{v*x9Ftb zOIn|v*B_(zfbj9KtGBnI!B^m;hFLUAxY3b?d|N*USe)c%L&fxM5XAAf@6bgyc4*Z+ zi+@|~8N}mjVox&Tff{(b-%R7+Bj`!d0S{!zD_B9lEJ^j;@ zXzw*UOgb4fuJ9md$VOr#Uom*C`7lyptnIOl${nLhfpeBGs@85e6X2ZZh~fBu?JeK+ ztKF!~?cc0I<-NYL7kN+8oFn1aJa4}%6ENNW0xipRS=Wk&pnIX) zgES!K{#T;VhWJICAi1l%vm0@Iqke)8$ov^bdFN98&p&O1$Cyrb< zK~vgeaqz<#@nsP-ihf6%<%jjM@Uyoi2zU1qWoN^8Inmokn2r+)nnj*PzD2EvC@gux zAWz(%dT(TK|HzWAMWyb^Cq_%MP$l~c?*jmmD|*->v}M7Z?7@lX9&%LGI42kIj?A zzuL}ekrbTNQqR0706c>Q*>G@y4je0x$rjhPxFV=_&W{)%F#z27cDfuDCN&?jT~xI- z{^}$}`!X+Y=;oRF#pzCX7($gtbF+_kaf}VtryoRQH*4C6wfxPoM^iTLk+YJ>k!{kHR zzowj7Vv51n2V9JYn4ff;RP?96>sQ9uw19Y(xP|+$3-#aas+=~WRksn^JdYj*c=_2R zL>+{lCJEHUkR%ZBs^SJyTQnQ_oZcpDOQdaxu*|DB925$i>SPy3nTTO zd>ftfH+0^gZsnlRbFo^2M-IWKN4}6WH_emBzksu5M0O^GxdFQ02bzA5`Za8F@_^vR zP3)%Y0$M1{`tRyN%%irM0VFR`-*qB{O2Y2rRbJw464D~TLA=Ru9zuycg_ydVEWMTd zRCjl97Ww;FooO<7z~cJOEB8~6m(TBdVHSy(Mw34%#U|`rWA3@qLvqt2*;G3*M{7ot zjxAH_4$7h&Sx}!-@Kv~@Z|Y*Q#C`N~&9 zlY%^6+KqzSmF9e?BWjSt=iO{u=z8VQRuO$HW{mQgBr};C=J@R`eC0h%HK~BqI(Og} zLUoIB=umnHz4jcMCI_K(8wUqpznKQHZDH-CM<)q;!m!=&o})EGt>pAh{8;nI+SEO| zmR1YmQEAE59gLgLbOJUwb5kfwhCH}dc=h^Y4MCA(aSG+ot*eO}x>$aVpo#kE+%)TqmD^p#TVs{g1KbS6l_=(cj*n8Enh{UEf*?+xlMu@PD+)-#weX4ft zXDIFQxepxDB1MW2IMnbi3^V^H5=M{8(==_F;RTEIs7^UP5Go{erHC6JWIs~@Mzq%U z`M_O6SzC2?n$34Y>CxGcJ17tr-sy%lt86NW{lp9pu9z;J7#q-|;_Z)e zqttTFMgQy!-@ZUndOILL!jL!9>e_$%AyE`15tW{l5XAOqOX#Oa_H~wivlKY#W%8ct zbMJMmWaxC6?+Wf!Udd~8EAgq5c+4Mogo$?M<<>^~3E;^``2CP}M*K^^nI^J$Y=`!w zbJG0s!(BI=IQ=O_W;w_9n?4Xe#S3Qnz!=#UjZI%hMg*!icgbAygdTNGKJY-dlgV2{ z{nkJ5{>#`M?OYQKoJgIXy(iH|AJ^$D zAjpbK{yZefo5Htr^HAu=z^=?m_u0!gASL?b*^}zPl7M+hc4XjebP}X|MHuU?1B`Eka$#jCV4`1=D%N1 zFm?a=$EB3@6GI5{ZN2AmnVupB`KyO$vmtGM-{Rf#zIo9n(Y*w*f$goN1K*Fh4i_(& z@F$nGTU{`aY*-He(j(;0WQ;L;Sx!T=l*Spl0ZnfPlqZ>tJ)%eL_b-bSumG~}Mc(U_ z;vZ!-5CqH?3eG)GulL+lbONTy9hQCp=$^=6w!QPMcYzm8;*oyM!7s|khive8Z_wlE zt4JrXTcihCY73;4Bt}RDM^yRBrAW@J@5dNfn+-%y*9xvJ9gUIBx{=8D(?O^m31_^H z)LF-a8xO~|n;wKggM>>}FRB97%-|MOrqG2HBC78XUWZWB}4CIsMZ!RnQ zbrKlZzp?{axnI{uVNc&giO^W}sD}G~CRj%y{I#f zHk|>p)Is(EWZnkkz+p+RH2F7Z5h15ycCs0G3HAlms2u4{d{6TYoxAT^tf`Bk$w= z&ZFMXCI2<=EQr2zyLn4`;1uZ?XqK?^)PvyH)F!^Dcr_}YL=QEdXeH`*fm`>NeP2E^ z+j=T?W8P{D?M^w3lY4cZGKQ86X!d^47>cz0@cYFW&@?nZu!AWb1^wjIE0G=?&utx& zp^StDYLPOJ%~@uXZVybvoBFzT13kZ>8hYo;;)t8Y=S@%M9&q5&o#ykR<}xAId7;9q zB9`Ue8cqZLVEC|^3Vn|QJh48TXjRP*eZwVxoZKM1>S1$8Z9&k9-|w`4gM=?1uwk$G zoX(gld_o_SD9wj9<=$3{Ul<9s-AAhs9+p6+FG-uMO}ri8GWWIU!NAS??srH_WLF~-rIgN+ zSSGc3>ds0QMA==7ykX^gGe0+M_vN~KY;#7?OlJ)*+M=Ey@0PU5YpHrv?<=BmPl#5%F4qDoY3eYXJ5rfRB*PGv~+MoOr6zX_H#Z>jjfG-4UUc8+{(l6A?tpZ>^fk-Fc9MwV7;1z_|ez98G~|FUzU3 zfJG1DP7J#ksD%U~1!2zl%3zoWjBz*vemb_}otTHlrRQ*+{c_%KWEq1b89XaR5i3(C z>wMU$1K30ncCr+Km8EvpmLFs)Z7Qhw`G-cHWA#USA1jked|64!&%brSa*z^D=EH^t zcn!Rq=%{Pz=jS)qXJI4tN?~Z_bW_gip8n23W*)BZ#n~HOqU3SsnH@T|_Wow@-cWgY z|CrlV%rSubLCpLHgzi z*uHT+QoBfb+3sTC#NNMkKBotJrUgo*lZm(&)Z}@-vFgHk;?Bu@8hKZa5>#N$Kk+5s z<4i=Zmk#xQjXZqM!=ydMy0(%OQ*ye8L~=X|iru+}SFf;?TUV1%rg|63W4f#jIf(7_ zJJGIR!w>kR-iPacO9-8%+w}*FiA0?utD9hRue!tr1C58Vu zQ~i?%)fUA>v4i(n!ZC8%in$JPk*70>*XRMK|GklZS!dNabRdf_R2RqunbW?wGlc_b~MHr+V z#;jN!poCf=&wfxLer$hNwtyA+$<6GbTWxcptQVkGJTPI~G)m0K@c`=Mp=tT2fG9B( z`f|T5olzf!Fm`f0OvLpoDf5?S%Z$WjrL zlv{+}^W9g*GoZ9Rh$Z)k5^j5M8rMV32?q%!VWgx3r{!LPRXwo^L`S7N!Qj_+`L^Gv zf{)`s0**Yh{SC36nE8F~EaCm-q7PSwCVh>%`-}F+dd|Kf?)F?MxHx) zitj`HXP*~s{JzrsQspjH)X_T3ZU2FwTZ%q#_`0F#YcH|PB?NgUGE&GpDy3|9i}jrt zSk9N6p)dNOFkdAPTa}%5sfn`_B)QV!ZPqj){ak;Dau!QyXWj{V5c7ON6=xU#+-e}( zBNMN&$P8uBik2Lpd=cFV@zfR8{0SWC9y};2$Pud3KEu2^9u?wy)&oPm(=c34r`rBu z*Izw7!a(Q2PnHIO%D4i~tzKBlEI;V&Xh_vq4+d^Gu*2W2YvJ>2p^lxy9)uD3EnVV4 z7+zh3G%n0+@$a>El`BxEq`WvQ#NInW#492j+z7Uh;GEl;=iC0v5+h*3#tf+C&v_li zREW+P%`%1kp`%?6==Rb#D52aLKC%=-DdN}M-^iCfyZ78OmRN^RYdd5CUv4;eR4s+; zFdY3ZLgVd>e`ISbeVLUaFYJ*2w=JaBXlI~weaUQoygRorVK}XgIvQ3_NIJ2<@viD? zC_RvP?YlSycRW?UQ9Qa;=17mv-uUf@F?)`u!Y?zRWK_UtzCeqF2I_&pcU=0rQx>D- ziCOU(rfhZRp9Jl|eC3sT?K5sYPOiDF$y)-T@u8ToiIwx;CzrSn%bD%*x1-Qef@2Q@ z6(q`(m<|>T68z{W2~fg3p8HSMXh_JrWW8^F=M#C2vSFC5<2>y>Gwf6E+rD|^c;v3? zrz9@ChZUJ!T>p9WtvFVQ?*9hke}1nHx~L3dI2lA%G_UKxjZ|1s+Fb0t&ybDb>XtLKckw2Nq7Eg1>md~M8ao9n5-%8KF$8ORP_Ob8u>qNGrS@y6N zG|zy{n*|{mocOgESj@iqe@=gE1o^MdlQjt@-d{AT2z^@&t&RKTMHfr~8ZW(L4I|w( ziLyyJ^@AZRcu{?H&q{V_bEvA!X3B+~-ZM0c|8$~M&q&;pceT{l*ViH8c$Qoy4RqSr zxwx*t4V1iSd^I8k3gzCqoEv+Q5b!8}%7LD!J%xQNg6L~&GI7Xwq;E%s+5KVw-Tm#F z??Q=OZIZR23Y48idmH~Y{Qr&m;-C;NqK=YE&o@=ZC>*o(%UQCTH(V}?as!2KgVl_+ z_ami!=6tv#z1BA2HnjaqRQ=W=o!bA>;6?(cWvM#q4 z%BDFOVU)tz~_}}TrKU0Os z-nRFer|6vy-R6M3tZ0jXKWtACLGKmr%E)?#?)9!vHo<9~jatOd9%-c$9|(TA#JW$t z|8&oFNPd65AX1*)#ly)%MGIc@1C5m43fg6lg7dYNEt$$E zHX#BX*gr4IPz#Z0A>sHJdeYX0BNF7pCCdsLVyZa}9-g)oim6Z{RSbHPa|{JLfZ8m}eY7Y?!?*Ne~l z@CLB5)$sfS=y4|EExZ&&TMCz1!FVLLYAQ(cQ*gv1qyxsgyFx_UuK&Ml>(`i&xUN@8=4V#4wFy`vEm|*^vj{SP}f!FdV)ax z*^PwCD$|hdG)R{1q}J=9?X5j%8G91K(nxl{BU|7weNvSvbrsR7NRpqcGPJ*?_5UqT9&nQ3nEU}fR(Q!2+>ZA=b^qe*mFD(pG{1TA4dLg5@p`nOrU0+4 z?h;+Vc8>RF$**&P(Ob@k2so#sGG;{#BHf^pf$LMHUOuAh?%EM8Oon3ov~w^dDG3Q0 z;aP{Xr^o{806Gc+AV3Inn#)Sawi`HGWLxo`=k8wo@Z5+6(_x6DqZBRX{&J~J*uzKU z$#3Zvzwv>QFZDJK*Wy~EMv;CH@?krPTrcnov>xHyndHwqL@L7J&Wrc%Ttt!QJm4a zyElYm6<^$>mZqvAjLMZB@i;8?Dybhm++3WA+$;>vJ?Ybm+?+X|fA%1Tw3ojJ;Jp}d z?BE8%JwVTWa7EH8&xUh@3&Tn@9j zBVAm1_l~4KFsI{W3FiG{(T!6OTo@7~Rjz|>(q)ObxU10=C$jrJX$5zOCbxK*urB>2 zAC7QQ+(?t+Gdp4~l4Q)#p=VO{era?N?yEWj5Ob!f!4aJ=@<&@$dR4%4;}^f*Nd6

CY&bSV4;76(bLx98*FF*Dw4x8$wql>{ea6B9`DZgyyz~v(oCt*f zpsuRJgKV;FZ_c*qH%zEjXGZspOTwm4nwOE$!{Nt_aX8I|-G^*T8&(I$SEkO;m9TmN z^*?FQUxg9kb_-^^ro+NNglsE+bv7UPKlaniesSp=y`tX?oa$6wc6;fB9pJ>X@ejfx zEMSUY6V^*HlR}RQB+mtpWm7#X{h*4YZE;!6uLm$L_;^v^E4Czg*Q4cOih1Y^ot9`meG2)k-)`RzVRC#-SP|xYYBiyO zsF+Pra!154a)xX>*J<7@IX}wXP*!W zisZ^c7B9f0V=^$A8IYnG&;ht*aJ(ta+sw!4a%LV=wqewa8b$KOrZ~Gxb%Z&Py906<=LCQ zQ%R(b_G$q3L4Fe|7QKx0A~!dgfRTPPvLx7gEV;Sj10Ovv41N~|)X3NGQ&jxqQaqn1 z36Q(H$y-SO zX_prpN+>jIKLr@c*|SLO&nKevr}@-pTPdR0TbOfiPV`So7iuWDYd)4{uY>1PPaB>E z6`Y-=tH5e+VZCBzZ4N(4s1jo(p7tqI;)4Y4(R$|WGD)k*C7r6=S91RIx{V`E$!iu~ zK}uT#`*6Z7px{mzKAA8JkLY6ubSHS6}?K! zFRV4|fG-hB>n#t`uNx9~mN@!^zDG+6j6njEpT{fK_oJ!GiEqhWR7{{I}HXqWE}DY;I+OA>+^YmO5)zRX$=a0 zE(0lo7v$bOiK8}Nt*OCYlXFJV=~CU=K5v#DY_XW7IH?GJ=b)Jom~d(wh_2a!M`<<| zmfq_5qr@Oeb;Ds+sKK8L44Wz!XsO@~`_sD)+NQfq+AE(f6F;5yBcEBdl)8h!%&yqU z-Vf4fW-5$;3Jmw+7cln$Qx}wgh5?p@_!pm57O;I^1Y_CFh|Bu&U0xRJ2kyk^ zu_KOz+p zJdq4Hcg44aR=@U~*+yGiZBAuLNXwC5qk@hr^;n~OD)2S6BkY|*Z1YXUqGILkc@2k~ z(%RdRF68ERNgjfnZ!90Vr2kbECd^G9YMDcYVXB4n-`^D?T@_a~e`i}g>vSBYi}>@3 ztXF7-9pE^0x6gTt=K^bzAb7wvfC)Uaj}E;*g6+}>O@w<{P$GE zJl8AmVEuM~L+fxXnzeIT#h(^2G-LZ#gw!Pa!YJs}@=Nj%_K5rP5JD+c!G&KKJ!F+o3pYrki zrJ0%-4e&sDMZ<&v67vP~&i(-|N0d`$u4HlAH!ei1?{w;uKCsNc)V8cS*bQDh2odl7&S$XYwf4eht773@aizQBv7PGcgPQMLOu}nSoL)a+`o|N3bn$Fg8+;&cq z#_-GMnMj6(Y+5p&jOCF!c)?074vRB`ZcfdI8`umKIeDRpR692&Iy!A+C<~vf`=LIh}m=KMMVW7Aj~8xk>?FCxQ%+E)Oy;x0~FP)sN;F{niaP zq0DW}i)DDqtFaafs&VcO8wtJrH*!cOA>{WBY{~ZgTUp;pdbBpXR5IM^kpW8UH!Qd( zK$RIjIy}1I@Lj$1({>4VJFSB_LAEA$5^uGOt}jTjJYDbBA`yxj4rqwoUu@>nl03JS zJ;Pk?MueC%QJ%ahJwQ}b&KEu+BJvpKY49}sYH=W-P3<+AB6SOGj-DW|Kr%@rn_OXk zJqd9K#u+<8o4xZbctEF}i+kMIfnVh%5YsDn@4g3w3c&EM?*j9mpVTg22dt%qY|`ZW zDUb@MYV}E=L-V2yHPTmED!7G9oyX^!5gUT-gIda7ni;>=tzLtOrp0HzKn&#M`uMP|mN2?u)j4_a=Qb268Q|F0*$0%wsjRkW1b1cq&X()d*DqX6cj51mwKtHXaG{qMU z``LWm9Zft;+$+cp$;)a-hR9Y!F;lXO`taX*$Z5m*i7ZOK(#!J%#t(UHst*=X4Pf(yd(DIzw-iGajmtMCTsopA{yw|_XycB7rM;V0~gHWrax>tK$7Ur+`Njeoz%_~%{piOA`QEbc&*K+D|WWHB0BB;_h;rc2ZLQP*+UB%ni4yIM=F zQwXa(3j4vRBzOze_gQTvs3j-~kg?HV8;(h%Mb4dyhaGBw`j=98D$xI+3+xLSRRcy9 z_=!|;!5X*be^vqqpJkC5U4MPE!)j|4TnUpN!{9^Ged_ubv2%wVYxqncXk?0+aE`mS zYaAFDIJ$k(ek&47!c9O&c!$(qW```MxA_~IKR;hy4&Zy;T=E2O5%;;yI^z`DDQG6I z$W6ZM_(&B}$4k5t+82q;(9YTI-7QD*DU$Id`oqE2^1xmr6N zz)1-wW#+7c&5gmvG^(`e=lNG%<|5;amt#6zKkrJ2fTDSQ9K^!mtOH z@8pwW4wn;P6Fo}h&Lt05+1thCmCRZb!V!O8>Fv~AEYmW~$2Yy9r^{+t*P77ooYnF; z?y$2bBhL>CK9R3umt=!MDwN!_)zz5lRc&(4zTKZR4FvT41e(d%CzM++dzB8=T6`iSS=!+d!fltpB z>xzXhmw7)Ub&?$WuqGPOCI_EP4|J06v^@QEM5=T5E=fimDt4rO{HUJM7+nsy$^@ow z7CX%(fK?ag_n8UQgii)V&4lV-B<$F8>^1Cj3Jlv`i0hxNxZ-En`-VT<84<8QQKUCZ zmxv~MsPMr_TnQu6oi5WBFl~}6H@ykbA}HqNBs7glOJ_9-e9JtC+V#j~ zew>YL8fOS(S^pLmq?$8AK7&*?U>mnRNz|G|u7i-LOTYZ^kAYsTUsNZ)`=rK5nB(jn z`cvzP?Bz!ru&2t8Nc%yLNu}wbBGmB05BPsy?to+|wQwc}&`<)ex9CGaL+Jci<~i`z znl8}|II(0vmehdcj>i!)iYVy*vht!759}w+iD90<0;|4q*W!1WnS!^$wm<&zJ29ON zVvP!6l@AxiZnOboJ>%WEhumuK?XD!4ls|n|l!l3*aQGJ%mQE4AfJ|Z%kZ?^nB>q{I z&YZ%u=?uQD>t4HQe;5oSCmHbzua>GDrQOQIv6NT3aIWEwY#$Y#H|%F>e0+QrT-*MaZt>tqjcC1&^o7rv<<#D@`b6s0a5lS$62+^NxrG(~4* z-Wtuly0ulolu^nI>>2%z@u_FiumloUoc_4nnXy*p(Fwn zin#gL!*7clb6wB^Q3m5@JzvDGgtac#2mGXc>s()Q@hcNO-6Ez4N5>bnKENWM!-Fe!lXdFVGjX@ z&;AE*I`eO?i$&5@I>XCDzg{`$6?uXewGjqLc2x#e!oXy&TNg9~5Op24SQI@o1nd;l z?&Dgg3VW{FaT)KDib~I5dFDp#C77H*w7Z>9#0|x}kHaPAgaiM6p0q5{gI^1Geg^IK zxjO6^cu-i^*uePV%Ed0CO4#WpjK6D^=zZ6yqivpa(|-u&^(4oFN>2C#X(H!bH!Qea z%3p9eVwO05T;bMY0gjzz1JFf6s2uwX0r~*e<|J~PD-Az$|7c@~99$eZI2EAES03oN zHh!DQ6sG0``9p>J(Jry5_vSt4GX<1gS;~a2j(j;`yB}$WgR;>Fy=LK(gD_7!Xt_S}v)=(ls#FZZI&*VTGp&9V zV=oUlzz@%M)U=Encr_MD`-?9(QpOrX-zdJ^7!|r$)NbePQn)OO;n#n##eJk^W~2NK z!8J*&ka})?CyHpu*{&gKm5l!vQnv)@bQ1*v`k4>v;(b+F0?gzAD*fyoiSt_KgW_0_ zca{?HT@h%d54pKvSi9UQ^)km92sR8hlk^B#I{H?9BhuIp#0vo^mD(T&_tp z34L^b`I2m+Ni^r0*TWoSa8GED%R%P7xxge!(gZ?%f-`K>%iJ@;U!S`xQ-y z-iE_Z09!Sh`~r1BK4S1aeidz3L5XygY;cQSx1|KF4?XbfA3>wy@XG5;DoVqdb);@H zfVXK(dG~7_DcFn?VtuDX>Xjf}#~CTz#B>+ob?IB-%-Fic{`PxK)LYIwfZ}{257{7j z&UDL|df5C17v;%HAaMjk!gZgj?A~A?_r0CNw5V4~=xBo-R~h;CB)-8GnsTAdS5V9Z zXeR&Ccs8D!p7?x0EkoLmctr>G_GKzcwFodGr_>)Sh1a;nJwllns_DPEP5uyNSEN6Ef5O_8eQ24$xi0A9_}ex6iVM^A*$ZAQzsWzBP#TY6dq;( zb~u9IqNgMq$Noz^W=Adv^qoh*$qRX))dnII073iKy1-;#vMT@`!qh9QdA$*#(TvF3 zN3jyDZ-(#EY%J37q@=wU!QS`G?cV~-F9Rp)O%0*d&`xNmhQK`N5&rEY*Y~2nvs_Ulz$w<_81Ua|_ z!XjK|yJ*s5We^dB*t)RKY$a^TOIgK6gkHjj@PV;@&RCj~y>`RO84|C+z8d8Bc@lTl zChSEW>BRsw;uvgvbYsBe+TSPS==gvS($KWb8Tw{+UO?rJ)-F{W8L=uv++;+`(w(wg z)bdArk?V1{Jl8QQIL6k?O~TX3DUudj8Bfi1?)d zzBS}w+S&Jo7d^t^JtS)So9N1b-MrT4i0v%hI?xtO<%zR&wia$nD;bgb{0wx>z3AQ* z>JN}Awr%u!PG{x-nt6(Pigt>AN&xqD#3#(BpEy^l=@V8LnRDaVOB8sz`3&ny5jr2Q zX9VlSdAmW#|tJt!nM zu*;f{#ee2m@iGFW#Rxr+H3L#cnB37W3MymTl=kZ!2Zn$E?PotK*&Xp2l=zoR(WNOj zTH>3r0(`81TAi+trs_9`2@iow_>4W0AqOQ_VCWzA$6|nm63~BEW0gZo2%d1C_LzIy zR$io8D~Z(X)nJy-65c^L9_{!#|D9y|x|8LL-TNyZEEB91Y#i(`f@$GS`H+5PEt~K$ zByPproG&-~?^-qSwkw5cG2D99=<}~g(&uZh*<03NAQF=Tc!LdX%%K`HVuAmGa1Uee zibdZV0(f$Xn{56oq*XMeo zY6an;nso5ah-q7J&$!aGlJM>PYo9n+!{#>1PP3`ghwr($l|6NAa%gLQUTy8YCar>m zX;Eu2YjJDktmCGie{RIpXc2jvKq<2JkKch01~4<7v(-)8BH30SLgbcFyj*ydfyL|- zd6%rt5wbnUBC8+a+zc4DdN`)-X$|{fx4TYHHZV4ySH0`ABFY8HWeyl~2J8v~>Th7j zRRHx~U?Z;sn|-f|JgdZe%wo^Tz3#zzXX?^rugVvkYAdM5f9xGzXH?YqGO$mU`_OtpocC z)(UemM^-q$gdmKDzP=0cjDfk>&U~;u+d{0;@5VGyb! z47a5JG}`$0oQYqS8=2flZJK9ePLuZht%8r=>jmKgAQ#CnaMj!z)4-;3-#qk@yn;T+fQh&d#9Rb~0n0yaF=DQ}0s-fgR%FYAd~ebp8O24l2+5Szx&rGnv>jr`EKK@gY5jxQKOgc5=&XT zYT}Ndl-ANGzCETbD`wB>pWR} zR)~Z5>kq{p$P`j8-}NDOU~4kOE9R%f$PHG!kAo^KQ(~BVefPZMxHWv)virC1tg5TB z7X1?{ye3|r2^W>`cxts-o;EXKpr*Hp+EZURSYPh8}VFt12Wi%5=PwA*{ zrxb8UZ~*NW%o9+eqR-)tS)N=5uxmQ-#07Oa0sio)ba!Rw_4hRj8Y!Xbfv=1vd=j9S z{X$woqIj>f94%#(mLubBl2rMFso12|WdX(CQns}U90$GyfcAoN7M}kf$$WRalp*{C zFYg?`^SX_@(-@;M0x{A^O;5k_MCJOs28B1oS&!=Ik18fVZkPZI(Dkt6uE2kI@9gY- z>HX;8U(80qWp7*(wWEWM6tTy8pD`@ZgYyc~vX$3LByqVR#&kL72I76eQt{DF?_vN-n72?u^KRq7I2u$OH)Xp_M#B_`817 z)fUuDx1*StRy_Eg{rLq#Es`Q)_#Dm1y zDL!h|eNaq~wl3JdMD|75XJsFnMi_96kFef3%;FLGa1*8?bHK+AGJb%2wt^f%TzkQ# zOYypn86oz85HcTcYG#(iQ0*wG?71K^>ArZyQZU%+sv0roQ%O~pHEnM%4ox`d2tZ`^ zHv24VEJ~2wZut=hH*({A*A&Vadx=~ck<57I&!GA%s3;PCmY3p$J&!c30?FjKNKjM4 z1UeJeY&G|WQ^EIzO+MNSVRbUu!fzFEb4k45K=uc|G!O)mPe2Qb{a|UUwn|Xv48td( zu!B1uCQkLXkfZ0t0|zLK&%E*P$|kK3xbci7g?|P^!?dAM;+x2kS#h~%zuqUZKRfN{ zS;v|I1){^0axyi2$2H4hMTLdYM@KJybI?Rjc;@1YM1da&KB_`UrW%TQpN-kxhLriNV(8I;K5y zy%J&`_B0ryp?E^FeM`K-i8VUben#XmVSW6K{Q+7OOr#~&-bCxhf(||{^+j=7EmWu; zTmHy6Z@wu+j+Ny(A6hp*y!;jpv25y(HTmOOdTTCJ+x07yTDQ3d#s82rJ4q*>jjAHTFr z(6e6Q6`qa3J3Ni1y1rEp*omix03mhHsbzgtN(mPbCZy-$0O z0|XqHr~m)JZBOmLs@OPuqe$d&OqeV2?|A$!;LqIGqF=|}CIHN$CynlqIgLloy&-QC z7w>CDG7}bJeTK`}yP>$;8Tb?SZwT3TMbXGk&-mKAU_4J~W$c2O8&-5m# zy*6W?Qcu8c<^N@!#iUmAEwUzpck*~b(Vn@$336QaB?SKL$KY~K=$rUPvxi22z25Q1 zmaekpNBnV3CpR1J8h+wpdxhN3);|hUWF^st@rWKSMa0L39_DX7@t)HA|^O{fYd6#kP3@p@?sz@dUBG%iPyQW{Kepzwg7zw>8 zBM3g(Y$u+Gd>2v17l?TpOzKPQ?U!Wx(yjRJeeebqtF8OUS_dQ_i;^*xW6~5w@1RuU(F{g&2Cvmzfw{*qf=YK4+qr@CL=9$h< zu;fY1jVwU?i+|I%xfF;l!JLi#BV5Oh{mRgYv)_kS^Vz6f@lha-`St{Shy7k-I@F0(3UW24qS4AeT%&Ft{afsPs-GoQbz?`pXf>`!OUp7HuFJro zJj^WcB>Kf0J`3!(Hx_k)CWCj8zg9gOv!&6k7eyZbemUwX$h)pnlv+2clVJyBZd+1z z#(rS*(dt0aL(&rTDE(V2%OwsRU7ilDI!`W17ymO}p3xB3 zuEKpODM|P1ht;unpSkIHJlP*LKesUaR%+e) zAmwU+L$0QmcAS2HUp;7JrUL&1+a-uNQFgJh4t<=)tjT;HaJNgV{SUPLp6~G^RZ_1z zR@T1l`{tjBAj8TbQKd{qL2{k-;*lsaX9-?bK*tuy z2be{^jRt!^GX^f5*}GAYHB94IkSVme&-QXScwOF65UY;P)9Tk}Y7*9$>IIw43}>pxbL*l`bnbJbwNBgbKT8iY0q?~_Q?JGBpdUkz~68~z;?cFPmhaqZ z74D!1r*<|j;YsDN087s=vzMjc555tG1D#)#a50B(cn~yQPcuc=;q!-b*JKwRcc*4! z?vng@!L`-3j|$PW%6O{=Pwy9vh;DE~0WxP=ecSked4U9d?FzNE2<$zCeWvk=iJyK% ztAve8=MhR8Jm*UJ{FFiI!}}MnaY1w1j_woAwinutSK3EK(NjyU0rWnQ?9DQFt{-07uKq&#}P!Q6MoN=#1fgANZ+1 zfZ8GVo2Dj`d(W&bG4|j0P*IF+kxnO}m-NycRM=atj{8TQBL`HZ}kDK28lD-EJwtI-WNHQcs@MX}1rIO~GQNFinLnb3Tv2#M0 z1k`s`_{V3|ldjw+S{+>?4Zh@njTs67%tyU~9Dz$0*DQUELY|%C(qasN$Ik#tLeJCb=l)i9_UykP zw%hS4-C8ioq}3b#7%S z<(@-9r!A#NpmRd&1qBLX$iw`s=9bd2`VXWbIRh7_ZNR2&@JbXZSI-*Fv=3-orS1?l; zox&+~l)v?$asQ6T!Je%!(DA6b3_+q=z^OJ=K1a&@=Z@mL2hA(ZFG~$E;m4v4lv7Tn z7rOT^Ok$ZyArdm)FjAK!a-Hh_4ZLqFVH>~;*^@jz@8&$^Z;oCn(WkVN)B|L+L+xlZ zV(iqo)sB@{hV8n5Pw~N@ml=>`hOB#yoPa2|Cs#h;`cQe9zY7SE6rhy61Pt}cWd3fU z$i-j-52K)u{PX~W31(E~8uDc~4?Q|(7$hchqh0t@do)CI6)`Xehoi2>wG5r%J9*$rDj!d0$$6S%k=QBAv#)%f26c^AqaNy*z7`YWTT?j zW;9`$H;S|}?RxOu>Bj>^iW@895xe{R6P*rNlrJ)tW;DSP72!;g>jY>-Yp6lbkNj7R z`T;||HARUqLy z9ifUy0P%VpeRK0*wYs=g3^gr<b-BUhXhe94F6_s)mA!c_3bxTHeDHE`f0p?kIxRy`FP;lmusX1tv?A| z_`4VZ*a-2x<7;A_xs6M5%yZ)THsO>HG$XfdqQKNarBV2J(vibEk1T8uiEjo1k7RxW zEFyr{2NA$`eh0C}h_sc@I5Zx7)<#{xC)gty)hj=n=N%es!)NE6WdX#TIponHKM|S` zHpphBNgmX-)6afA@H-)*l_tzx6i)3QrM_8LV6JS>!UF&4kRH>z}TKaTX;vC-D3Btza5oi=)e-z z(j2EKFAP#A$79m}ilv|$PgC17YZ0N!EkT1yd@q0T<9ju+i1k79OXp_2roH!z!CSD+ z()+4jF66@N5-fOC+5w6*A<|yn;z}XZ6_9>Zi`uWL9CUeM8A-2ff#Nu$hsuO`T#wB z6)?Vi=ICtDkH}R(1Sinilj<&SnarFzS`G|DPSEZ~c7O~}ruVHfvY_3;_Jr31I1b#m?mXirjcme=X* z*rdaCfzI6h5f;<^iq7JndkO;8W=S&K2UkW*;-f;g0**pzB5*553x&TGSB+#nT^B`j z2%A;gt=+J_`-;RRWrYbQ&x3N=jwguhS8YE0zQl%CScxb2xZMM0+hN}-qbJBgrDPwb z0~XeE?k`B{F#05BZbMciM$}}OT?7bI@y!A`-QsYPd89x`g|d^U`(Hx!du`nQWem`d zM^t?#tm||TjKD)_t;?01S-3Ym|KOo77NyXfU-3j%(TcAgwR~!892{*Vz~Ee}2l4s}C&6w&BU1=|-a_%{e{F zR4Xe34}SC1xXs0v<~dR!;?;5)Q3HG#+9b?ZyD4kV9_O;Iv7Dvz4|N~Psr^0A$%-+r z&T^(*yK&K<8;3$vk!NR|r}t^K?oa zeG{#{(k;Qkiu6sCbtSWC|C<^%)U|h#sMi)|$i-`4Jfi5U?@zSfp~IHRXT$+4O2vG5 zH*`twd&~W=zUcshbLGCvLvt`N{{jl+JrKfQriqbS9S`uO~63;GOlLiD0~lpd74njmRpSI8^_TVN*&+|>-{pkhcgvI z&njV_q861J|F(UDHLsV2dip*Q%2_DsInmZ?H;J2}z=vTeRrOV3LCnT%pnz%-@BvpE z;1tS%4v)zPd_9}<9{o-2bYVjZYPS15s+ELikacK`sN}xg$yJZCv}pDJ`*hZEpey z@6Im%S%7EEt1Y{GxI>h1+gibww2qZ34<%{| zaocMn3CB7!*~ire3NBw6y%UX@aIn`?lYADOx1iC7&`%q0Vq#26nZ>b?aqh+X!4rjc zxzRuM9C@hYv-cMvaI*FVdmIHXQTC~Xm=(cgk_W6jm+h-0M{ zr5}hwHJ(HGZF*FNp$#AoM%M8IH4i{snE-<{YVNKy>W0d0fc{1ARElk!jNn}?p@~Y@ zKkR51z}}2(bDwB{)K|`xMw}EV1G*Q&AKhn|xTB@BUyF`Yp8w)r{B!37)at+IqiI=- zr^`7wwx>#514QDgR;Dd{fsx*tB-`}!e^3&`Fbq-YGov}b(_Z17b6pZmqp+c{5xk_= z;qt3*(jbIM_oBrn^y?1kkB7;cJ*SLMPDLS1$HL=9W2maCQ=8@DK65y@1A|-6Mba+8 z{_wvKaH6G0%`woU!Xa=sdXyND`-84#nl?9u)9EWa>a=O$w=iMZ_6R+EkDH2(nxZ_z zffD?3j$$bn{>TGtd%N-3FTAKG@VWtD;xPq)S&c7zIbeEo=y;3#JwLy$3)#?@YL@D+ zJ_Va=siJZc?CIT?WoC}#)-$RvuZ?US&h`H7>~wpn*}(m1x2yTZ)g7CHy-;o5ryU== zo+}EUo%vinq29qgY6!Ym`0Ra#sWvE*!p(R$<}9yP%Wr!L5+Oiidxrzh|Y~Cl@WNzcdrm0 zaS))3m7lqt3S1vPS~8hZS-~)l5%*st4v$M;KIi$;y|>FEz`XOReWY&$@7q@#mzjUw zNV@H;)z0+1W8*Mm4!a0lXe1u{W?t=lfG#f}%y6dt%^ZihF<437`OKv974?(45?s*Z0RQ(_wKwkz?u~=DvLW% zCYDz)w>k!lZK~b*j+`*Exsn8{A;uJ@I<_3DTA!yculds~!9L()v5rYVt{X_d&Bq~$ z675GB8pwHQ)D1$v6T``_P?)+?K2-(Hzs&?b?qsNn*@xe=$e?|Lh5UGjUG_Md04Xn3 z7mMV6^(}g~G{Q`UmO{E$b+$R4PVdQaFO6d^odfXhKgP?M&MOX~xA)~ADr|OC-|$&i z=NB@(5xx?PKR-NNKJJB)Sa$iKVBS!e=~SEbU%#n3%-@;_z~>y+c%t*e(I7Joe=#$n z`zQ1%@3hc?P2L%+)ajJvS;ARN@+_?H!i8l&Y0cpWiH8YLF}eYK;zGtikXq8H=Nqw0 z>Y&1=-AngHD585_#tnS!9xjNYXLQa25Wti*tx|ni(`9*XXq-{;_UHe;<^jsDUY)1Aton$!vr2xUyVg>?EyR+W6(z6UB z?^dMCz9i0ny+FHur2($abr}9_NU`_vverhb@*uyE1~E%d1v+vrFfAimR^psM9ERBZlt%*YJHgn$bIoTZdgP{8!0s4bs3ZSBGh6A5p-5L z3)?%%+#a4AC{{SFE87|QdZ42Y96f^0o&UVK3r$3zU|69AQ3GNOhLz-^3JeFsz7iwJ#)U4@wFmHYWh^F*G06UUD6C1ypeUAmKs~lST z0~&~n%`a~iwHH zWGSY<@?Sa2s2&QLc!zJO6d3xZl=&FedCSC}VJ~!LGgm5=iv{CSb>}1v_eSaA)vJW& zRiYx*p@7@4UYo2BaG+0fKvD-i>N(SrCb+l@&h8jo3}NP5U%RPZo7zV_<2UABuDoqnf%3^6n@ zS1z|=1q!5`_bTE>%IKWlVB@c^i!5Le0stEbUStgX)J7^x0QYIU9dry6P7=Nzr%yfk zKu~$e7Am*K>21z^JE(!IX^xOCrynJJ5A~`e6*_wfR;Me?dLQMt&?u2+%fW+cE8_iC`%7%g;;(*-CllPIno*(>QP={egzCULJ>#hz`&Dm1rGu7-z8JIl&Fh^4HAY~fH}T}9_$%<{fy#z zSTl`%@B@IU!W|?e!mwZRHk?IB1c%%hD3D5}n{9G`RbC^i^7#x0EhtwqnhagD<^cLS z;GLbJhn+R>VDhm@>Ro8~sc%vEPvWnUxQ(M7bg+lIu1DAL>@ifVqf)%>E8GM#?==|r zkmpGzz2=~t%BSquJ}DV=kWH7(V;fT*GZwv-d`S4b?l@};ZRu04e67z$XFKN~Hdow> zDo9f6ndQF56WwWA_I^~uk6J6XaI%Zk9n=f!jKCvGfR`Fc{Ul&Ta}p%fW(;(GK7WH3 z-=;v(fu3ZM;e<$Ot+oIV^nKE%Z7au>tn-LFOR>wZ9|I7wV?n7^Rw`)xmXveF@@r}M zBJuuLQBuf$mhgbywpF#TE|sq(#QPNd><>YN%QA_QsX^!Vupuj(wNdde={Sizt_NK# z!_(kvMy<8@m3j1ded5BePp=&wz%i#$T&ES2sui$Su{Nul3x0}g0_S|$LUPKnO?Upy@C%_`Cq8$MvC z2!LJYL##x}!f*Qz_ZAj*sn6Hx!GA2n#OoOWzHHthJG$8Gk!%$XXRA4%ziQ)`m)w(t`IR^yr zdI0_lVjf6IRR~%5|7BseK$8U^h<;VUcj-12j)Yi$W%6V{4-9%#fkNf^@+UkSwtflv zAS_Ko^NM2mPHBWPJf|B80PZFdFWC_?W{yW`uFYZQ{%sFe`uiRc2htkV+Pwr)XOmkU zVbNUIEk-1RLZd}y($q-l<_jjY1j>6LAiLnk3|)tWBoF`#D6|4bw*e;{srw2A)|UI# z>&*Wa(D9QC*oRJBHslIV-52UtAH=Fn4YA^>gw|Pa9hL&l8Abwzvs=6MG{Kp0U z0bPsdHwKs$w2=wqS(dq{p*!I=md|uQB|b_3VY~hYwU##mgV;Qu;c+1XITLPTomQZsaDqX|Oho zzPYeSAft9A9n7oq3v+&*t!JBXsx7Z0&>s-8mTl)ZKPeKYU02FS&$4u5kzi*N>+}9H zVpPmVZ1&=y$VIU8NIW&;0p9_?M-eGNK=pXn=%Ae+j7(4iu|W|c>IhcBRJaMNlo4?v@cmKwQD zG)A(@!`tHA(Ld6};c$6T{2Dm6oLfH1Wl4_z%`;?2h{VbR&@d^wyYBGOxVG8>;W`R@ z@L_2OhRb#!MHUx-b@-5KRS|E`06p|_du6$!ezn2tWGDND)ZCbQw$&OQHLO=MlA}dR zuQ)MjqQcQ0@a?XW(1DeJ(EvUF$!r#lauk#2FA8TEIvqN(24Pezy z{sK9+pr|?i%}TSfc-w>c)s2$JPjky~i`(}{`bE~s^L=fP^E5UR+5M!##O`02MJ$c= z>NgWHTruOuLxERQN>?%zDBRd+mubr)f*1tOMaW+|e9fzmH8AF#SP&t93YNR===IM= zkK%}BkWq&dFgPhckMe=0G{BQ1g`5+63#=c!1)!eB%(YOV2~Nx1T#J zXTz|+qRfW?X5qWX62FMFH&MAjXu)LwIklq{;2;P>sj-2PO*1=)_iq6&SxHF&;?CO0 zAoZ;)ks}M&VCbV#{X0VPUQXh^d^IG$ljdd)xaa0 z*}Bh-_4!N_dG$PZ#geN~i)r_CAG=?Omn*%ODC9B-8?kfmN34x21s)l@VlS_6oK{oznt@^O9B;Q4L-&vs-%8*jE`?aLnbwnq~ z0TN2CrE<>klOyOra&FDmMq;};Xy`y%9}H<~*1HYU(wXCrERlcKEIGsZ^BlO;eijC$T9#4uBj2#9!wJhugl)Z-Vm3j;MuZ7ZdD1oeXl*r zTJB-LNB^99gY1M-c4o*8=02DQ=bU@C_xqmndI`H>;`|%^!2|q{QgD_WeOIG% z^UmPO_iro_H*UYF8*5M>%x_Vp#InR{8hrj~DIi=SOFIyG^$$PGFI20h%y7$X9T5?~ z+FlNgdKS8fe;xsEzn69fAf^@p-jJyO1c9d=JoA|AL;lIY<^%D`L08}d7t4jJIJ2+9 zS@oRtpCEv_g1Vzm!og!zC6ovX1Mh?`u6O)-fpQ*u|4q54mU3VK-2d)@T{~2J!82o*`@7uR ze&o+qz1M-A6M1i6axm<)@Y`KPJ0zNSw&HLeNJ!k*R#K6Nl!JR6bE*)oQqQl%`1NKSS6B z--pK%*?e#QMUf7@Psq!M5BFXXoye%GWRht+_43hy{4ils3BU!uJO*L2fjfG3AVL|? z?qdVYt}-KyS$3ofdAz?CJb3jbP8#GLI`B0VIgKXm@0R{#)O>QwhY|RkmiZ8HfCw`1 z90}OEy0*|x`s%Y$JpY_sz6Wu+txa&Z=|Vd2pYS2~d4d#F6iX)|QTwwxKSMo&-$I_f zX&Cui8ncJqO&T*kt2EVG3k`Q*PQ2Ap3x;ko&&;WPj{mt`Ck6 zO3;Oc|0J|#Bg#J~G$%2k3nT5soWiJtmYTex9CF&?ir}sF&sG2MB6e11$BN_j17FBe zXXi~v-*VRNtd>=;d!u6qoi@YVlg5XOH%#k13G|^9%CEQ@6~U@CV|V1WunLJzH4L?^ z9NKBNXId5ZT@&Yh!z`VbtMUL!6f1E_*aEISgy*ay34 zbC#VO)jUO4n2YZ3QK|HE>%|qZx8osPPK@ZatKw4S+Jn#Qj!k+5(ZfnV-Z1&qznC#Q zQoOhKv`d7ciY?umqI*k9k1)Rf&Q7qjd<4<7@yE0*Y*WH7NAjuZ$2)aPfPoyiU&qDq z^0$`G(rD9PfgwAuu&h%5-fTzq2;9T-v5TR(mWI(YP2kHq^%pw}WO};Hr81v-JZ{BO zSw-p5RXZytKOJ$DxC17~LGX?0uh`uG!~CgW?ZfQw#ow{{J9N|d2%}q}F>VDh z{JjJE5+;30num8_j%!ZN7uPTCA#F0<8WgPrlFRuxqix+xyLTt&*#mvW#C+=-cNu-@ z505ULGJebc;lhuxmwaK0TuI#m{PGJUN%s_a9!WY_U&?bVbs&!kzaJ%a7m1%HZJ}t( zQIW&Ll5ua}Xy^?_J&0V11((UV&A&91DX>$P1>X3r4}JonGrDW01fa^#u+ z!&E+~cwhJf%3m*Ur+!PHC))AUnX50G9_VGSUpaS=X8mWFcZ1SRn6tWx$rxGwzM`sz z&->CgAI-py9quZ-ihpx5K8rS$Ii%gV1F_FheSH#U1uE9UlO=(MAt77Tq3*gW0qLy0?m|mafMjC@-y} zyyZpyr?$Q1RY8?^;{l|POEqnb)up%Y2f$^2lx;7~BATlgcp^s0l9T^g7-8QF_uoD( zaj`M-G;tqcG8zI(S~;CH;(r*CXMHqthH^sU51^GkH+{7=xOoGJ;vfz=Pmn)a`_J@s zV?z?h6`^Q5C3+8O2}Ntr4bc<fK35z%^8Kv7RX%>{=~5vJll{M;qvEj7Cdl8xi~7o=UEx2frxBZOv_gzZ%`A~M}= zI(JUB3BA`zwG`>EH!$ja)YlJkFTWS`pcea&OWEiXEUxlk+`Cq!UIhKia+9v-M|rLz zg7qw(50b4m#cmw;NL$3g~mY?Dw3`Td~p&v%L5FWlzuy*`A`*O{xFYtwzz2w6T4x@3RJn4i6xat+=qt#87Vp+0khLy?6lzcp&2i#D4ra4Tg^JIba+4A=KI`%2G~xprCg1XY!4nN+A90>?~h%{r0Ge3)$*&>{$& z<;rG+OWQg7UQK=&Y!n6?SFVu346p2GkA6EQ|ItmKMlUUi==%sCS|$HFmom;v#gAr5GxZ*!fn_ggppGL5K9Zw?_W{ZG z!GI%x`~}HfUm#1|wAKae*1`eTLJFnYWCe4Fv)R{~GiYc#BUg@c|HzB!tnHaIGf}y$ zh}Ys%NOUeGiP^(9AlOFN!Bf{|HFZdEtJoQ%2?%`jF9TJI~$~e-;p+tuY1mfZDl#I*0*7cOHw!tiJSLdAvvs?vo5;k zUf*ho62G{$CE^S*)W#2lgd`}1LMX<)P=cdS60{RW7Ix1HMtA2>13 ztC}*;dtx!ZOyI2#M9(Px?-yf=uK^$!yJ)u+Rwax3sD!3;N(cIv zJ)1iA`$tfya#!8(qzDSs8VOuj?dRq}I(&)1-*C_%TB~hdHE&?+-+b>?bQIC|)){@)?0Yg3u0~e*ckk%_z8Wv|myE4hEd3Pd8oqjgj2HTl}Gz?O3(>Yc8{U zMn11;dPP_My8O}SWUBghc{`jZfXXWJBq&92{_MP(5EO7L^cUa&=wodleuuQ!ZUurK z^u(!Wj2_+XQPc%^B6F7)m?b2R$c8KBx&STNQ9XFFo-t1NE+xYOQgqjymr*6~UuX#w z&BbA2sF1k=G1pfw;D*|hJ0&GkEgL=oK=5+2#2T5FYH!r3nvp!Qx7#XS( zZVtCZ*#jw-C*bOd{>}}I@G#WQ`2_rWrmPQ&mICG3A(JDJtLF^w|4b#0z5?z}K}Nd0 zuAIP0Y(V197ndV^69+@HKX|Qz@59qqu`(KLeZGZej0ztRvv!4GkIVFwgO;RdNye6XYPN*O|w%2`@A+6?_)h*-G@0ms|S5jdVSCc#_wT`)W04td6`RDk9Nd zDrN5y_}+{w9s5-o{K+f*Y<`i`A-A%~jmu_=S3&)GK=v;{d$Lg3Nr2FB(1uBT&>rC*WRywHztW^Hg>r!-z2^R36$Iz%)A z@WbJ&CS!APlHy=Byaa>d@&gA{5X%n*Nas=CDLMJpSX_#&Z9 z*lja*Rpz;!`4~&0g|2umkInWjaK8R&!^AL55E_$yeh7Z zDL@CH{>@vnJeLAipEacyf0K=h8-95>emBarKI3Wjab|?@-PBiw?YC$C`&4|DZzu4N zem86LW7RJN!jd6)eP}yuMeQZv{kNTZaX;V+(Bb2>fU#)ZfY4qWfneNy5VgHdr)o*# zLZ=jOhoQi?ybH)Xy2mc%Ju1!h$RMe^edf--HjvlVY8(VnN{ z*4gt8lb%Pa6j_ufFForIaL&+*!vGzK{mruA;}7Or$~M#IfCs-ww-+2hiF0PU9}h4j z=rLd0te$G=;Yzh=?7)F1l=?a-hPc@qYCVHF+Q~WYTc%AHqK+Q{^UBkqsBfmvzGHDy zxViINAXa`G#GgHlCis=Ze%vD-STap$MRSUsE-BmT3Keu7a0)Mnu6@vs;8^`CZusLG zuaY+IP44HP2Jy4cVYtSbC~Q8XKvM-7CH3~fQ(Q-e()vX{L$S6!ub=y0O(CB<_g)!D zw4S^9ur1`-(W|RP4a)B|D736qZ)En6jXOtitp26k3~j?v0!HqD2WztPWU1QjdH@$A z<7OViq(tTdTpN@XU3>K0s6qZ^b5ZS0s|(k%f<260#Im)n=EM|IDKfCGQ#y{F*pPxd4Joxanxki(D| z5|w{$Z0wiv9!qO4cX>kgYUY;M_}NhK>u8SiaYBIe=4)ORzEOL@%4ad{Ma`La%e-D6 zZ&tr}j(6mhtZKsqZ=0XoHt}i&zlR>f3!!wJCz|zj%NP~d?8^Ui@t)KHF!|(UvY8x$ z*ssaKlRMXa^aTC;bj($6RUrr(BQB{3;~=ZJ0N1WCt&#bhAU}RhM*Kp${X=G+_R<)a zWcYOdGWU5;KN?S1?|a#M@&5is<22U1-A5z2$n}QXaPBO9PxHw+@Ma<`OGs+} z&%O*h%Q(m#8vpxjPn-RMuj)u}%+gsoNhB`&^@1<^lP^b#w$5(b+xZkIlAq$>Ik>y#V#ngiETD><0X54C`xH zSKlkMb{!)34&egut-s^vUu0YOWc6)U^Y`EFeQrmiB-B5bm&{g22vf*5c*&&9=LVz9 zPZQ$)#ESeJaOQpw3g`%r|8}LUP93Ij`+g!7Ug}eRu@Q3Vs7`Cp%l0s*pFRl!V^72O z1c55hLLbwkWm~Mld>}6f`g{cucrv*E0;c|DS{(h~CHaikq?;EkJt_r(lCRJ9ic1-V zEwJ1SDp*NLOVGoCsXrUoft5$sL9P_8xkrjya)iKVOLjo+!q!_Xymehi=~tu_ z_y*F+`kBw0HWTGh`cpP=HIR0+I!7a@WqjO<-?ES!7bS@VPd)h9kO5kJ9yU|MYAsK` zQ|MbWwzz18?%n1*HDSlyg^kr3ekh+_6x*pr$U&g|e!X>90yGwm86jZ_NEXuIg?ag% zm!YL#njph`U_1?b1@iJ6r1|n7gy@F;!l?r^>{r}LzK@oE&vvyk2;E3NZY>8g{Two9FR5}A6_nQFMj{7Ty z9kgwjxj@3>2xZ-X5klwTg<-copO;UY=4kt8Huot;(`4p3k```}_UqMMEEh2?ZEI== za~syd6rw={36BZ4Y2Z{Fh=A(={d$JJc`%-$nnNuD^^?s=HKEQ;+~J`8K%*=OSoobC z4@u<2MU1FT0)O)~uZh-#24PgA{R7!!>ssUqg7mBGQVx;WW#RIO%@2a->gAsvnP^YT zMeFx(>>goJCtqXw=NK_DtwqZCRNFBPo~YJ&fo}(a!gTWXoLLvxS1N1j9mkpl@A`ND7=8x)Gu|D>R6r27LypviVRT8t!~#pXsICO zD<40EHHS~FUiS`5y|l&H8B%b9G402ID`aN71Ah$m@&=Y4o%2)@)Y=se>-Q@D zpKew}P#AY?Jgdbm!2;)qUJ#Fxj{QjnJw8Kn!+;g0=1YT+t0E^R9j8ysgap}vxsB5k z*C3s0kzho9Mtlb2DxZv~pt?t_!9tEX!$$R>?m|G|MNM@ROS=Gk_qi6b8Z0AtJME$D z=k0liO{^thzj`)yM9ogNe|7h0RW0H|c%)IQvh|+WYeo;!q0zfLc0A{`-)S0>pBT4h z*m)hVYTT?N{1G)h2P`}8KZbNtu3slGaP@L~eQIL!I=i~x6=8=8-*lofvK&`C&Nn!r z=~)8gS+S|V4J#B<1XL3HzOEX3HrelkUEs=F3g}5A_;4Y$xzw{@>IhuU6CHq83@Nzx z!iNi2d97|EWiB4X2--ugDnd_e3m-hALLIO8( z{GRbtj#JleB$s+`P7K~T_>P^9!kkwMBliS8$?V`Xw=J(q;Vu_UXliUJLl8x`2d5sE z6`hKCChT@4*Vyy&I7+MqCFDf)uf}d|=Dg)@IX;20w_wwifT*;WH{^CO>#%qxyL2MB z5aMD=LUn`Ob9r6|pl}};4Pxn2xtF+*_r>Q6Cbe-f&}lsvE+l?JORWq^nRq>Y#RF^O zjN=p4(~um(ERxU`Z9k2 z69~5N=mt~f3VL=?P9(6Mg4kpPBv*lHIwcN~jh5-S1mx(4uMMy%0F`X8ps5Fj{hfnO zytsqw+hKsp6QDE9_;~KwbzrIE-99#hFWy^;DfcBbd@mH$RVbu;tRGYXoe!}w*E(Ju zJ`;Z&y>lRIdR&kcdmhM~38CyN>K=S0-#%~g6I?=BP~Xfcv4AIKb{{U1xfRdDSTI2w z>rN5Drx~`FX|b;%0xl=Inx3dUEv~n09V3T`K@E!kh#HEv2_DbHzgcr9p3JB+)j#`} z&4LPdKZnC7?V{M{qv^Hm-#H2h-)97xf`Gd8B_Le~cyS-?)hF*G!rXk|^k66i{)RGN z(w&Np_Oj&uj{AuD;^{J`*5N3G-2Mcd%F3jEapuUp%VzoFwI8T^uqtZWGyaWwImQZ? z^RMhe6!7_y*Hry=sjn%SO+gZ_G7F<|@&+jC0)Nzo6ghm0b;MWSQ$1qQPG(cs(!jI~ z%sPp*+i(JUvYW@fUJ6`Cm5Bi#reL)I86ToEF!umljAlVf{z8cm@N;+pgcBZf63V*)0?3%lvPyb~#?RHzBAkW#YJ>;E*z{eI?Jc1DP1V zJ^tr1(?aU!PuG+ONHy{YTMvvT)v{61K^OwfodIOcDELR~((62{-)*v$T!i)e`Cwt= zS7Ko;;ajkW3Dz&I>ym=qFK0O}CbQ_&sf>K1lVyix*`O zuC-S8hU zH!k#TaY@5WwL41y_Vy`e;)EKi;Y?;8r6Mup<~bgoAl*2{R>|mm@^!#&?~{}O#ALmQ z|3;$qsk{;y>`Of2q^%=kyI7v2al^Hl`T4Vn_U-Mf zDy)DvV=+NMrl*khho8ofSrLwEkp#Fu2l>cx6aQc*zBK+(Dpxq^<7S1+76rn92hAs&y0+Oe)_>CU={t+`t|}JgqP1mfEQ}PP@eiVRqEM~_r*LWNlHa5 zyGGJauyQ7SUp8&dZ{=%{gKoBI92d^`Epr7_jXWKGb1kO2L3pPYO~kS)(5hLY;LpJ> z8cGV}WBvnYP7MamwvUG_f~;X)Jk2?;=7xUF$BEzi46h5xH z&X<&N!xiQW;+5HfW0EzAY&u(=lD0f1R0|*TW1vCw8MG9_xaNH=XkK!=sJ(q`4`g^E zhGOwN4LcH0=e=)B=wHBp$0^Oqfh2bGe$I`$B+j)KX+3IBH87!0{O#k!J8S?f6sf%D+*hp zcR2XGu=vOeP+(*WE=QznS-(aYt)+z>-6V~^hr?lnqQ#*w===>_-*wO4=O8}`>!E~( z^fMv5AsfNKFJ?qMLT)4@2&kT#rj7^CMvdnDK}w{`0HGG%p5K|T*4#F~MIUKpZ?a)A zFxq&v=_ue0P^LB?R^LwtcmxBe4RySknwf?%jE=mOSRsz232ZYXv{~y_HymF5kM#S$ zD#XQ#zK0_j-XkoYLfXzm?r~GtqjJq?gdWfU7CS5t!vD(z zxdlilBVk}o8~Gn+QSBVl&hjU(#d=5-M(|<;EzijrSj$ai7tjL;$q5g2zHX-VS?e9~ zbYsj0nP6aPdSdGSZl&4V>yQ2*Hmgl#ijLK0 z49%;wwspPhnX3_?@4Il~<<*_}i|aI46yX8!sy=v%1_YvSHynQEAa?<@~sX$5yBG&tvto0a4w-mk?ZgGd~~wj zak46)GW+1E+{r;SKQ<^c+?9SZL09LwGu%QvfXQ{b+x=xbJ(v-v)X3f2fy;MF9KX67 zL!?M|QCpT4?FM9yD64SKY+}dS7pmMf+EFiModnzAG&xyG^<7wOXhETy=AajVaGe{^Lqv&(~8Vz z8<3fn{1=qPjp~!IYP68|-Jm4|82}U6s)KMu_)DLe{*!vY>ZxCrva({YCR(sv>#m#; zqkTi|X*vi*GVqz@!|y{z=x3&TEe;=rA8y~R_*#-Pz1c)JS?LMCllUg$EuX!wm#~;=?)&19X639D( z$EO|m5>O)S=chhW$J2c-*HYjKPY?JP@xYncj9L~J0aFM!P9qEV0R2F;AM9(@zpK5Y z`vSCvpnYK?{ywm%t&cAv3gS@H8RW(Vm846>L7G#2Kb#$MFHhb=}ZL)@Ul#qU~23*!`Ew5~w z)?CD6K~f{+*L}Yp^kjH%6kN69gN0kuoXJtOu284lBj2fROk~8~`u_U}5uzzy6xYsK zV;TZ70HzDT6-u~jD$ z5gaVp+L;!zM&HXLB@ct%YX&zJTCAQ~xo|e(d>mG9-);0L{Frncl1hD4qnOP6r$U>2 zPkbh>ci)<9Aaz1t6#7eoCDFfC(RVCd9ZY{_$Whi)&haF|yLpURq>@A~vHTR_NR$jE zzb`#odbUSXVC~DxN#-~-PbHHRPg+tL(nuNVSh=T=0VFyqI6h6ylDx&hPqP_{h}4kD zF3@>^`OYyK_Qqh~n+^U=7=NygM%~f1z>xZ#)sZUwNa>2=-zA!CU@upypl!5gM2LWo#YKHK@e8np}(L5 z>_p1=AUhS`u1!&$^Vr4+eT=VzCI{@;Zu#pCD}CfJc=uc$_XIWCGgp#6)zmB8vYN50 zjuN#(8yQDNKRXK3merI0@Cvn2AnQo`x=UHwmubPkOgzasdv#!%RW@J+FbVJRFphjXOF zz6s6!A%W@gc1t#?2EJEFQQuz#wT}~onK`?|a~;RV+4C8DC)rnFJHbgaG~zf9C!v0yTS` zXZf#yE!W!DT}%l}&m6dAzF*GJENuVE1syv+Fy(g|HMXmH_PDh7TKrmg{dV`STQai0 z#spEZTgQ~8VU+JHU_!8A62JI2`dU11JUZt%g9nrsX86%?-!T#xAcp*71u*J~6s?2V z7#4l&zhJHCZJ2`oy_05E{^glbYWaW-BU3jUl9|C-O>BUZ2Ynu0C4p;Va1Iwg6aa2% z$H3y{C5(939CdAEWi(n_ktfB)w>EzvCXCSK!@kC~oOmMloo8eDZBehN`>U8%Zk(dl z9Uh_%z&ENvIUJ?Mu7h)Jw%OvG3Hpua{BlREztAb0cc z?_6~UVBf0zqa^*H?c9UD#~a^jC-_WA89nz6h|dIyg5e5t`-ix`rE(f`O+ZOi8UBJX zKAZ3m&K+Z$XzVeP_`IE8=_zAF=8b%ez`cQ9I)BupT=81hcLlFU_@sOZyvM}&Kr{X{ zK3Y=*&eH$!_E@}-x#OsUFs+3N$K7F`q7GItBIL z|3vL%^1iXX7p4`Gr+&@qSo~cY;u8}~Ts*LB{W#vpG9Cb-&}lZPicY{pKuVheP}C9I zR&}!EJHzKKo@hsW{>EeowF$_i!5r~so?RP1`0r+CUYXP78B)9z%x=|60IAk^__s}b z{@jYMQE=T+U6ifkdAn^qH%k%rl@Y+o@*@c|bN4u{9#b`+OpfRP&!NpljA#j0AXq*U zHpu7?@c7Oj;J+^uz{O~B`gMJTt=mJD#f*1n1ligz1D={gu@Fb&A9EuK(@Idk zy9px&UhjUPBwWSYc|y7|Fk4CF6;WjLOVK64;303LW#PHcFu>kZwXRv_pnHnJPxUOk zSz@qpYw79I9D+87tt`4usovgy;XYpM^^6fD--09hy0|mlsE{bKL!RG(dC_}HeQgfY z4)Z*(+>YqH3mXXx=OlslFTlZ-98Pa56){{`iP@@_7n$tEFL(LtWaO{EE3T}WZGip+ zVoO#HSH!?f)PY$wJ}Bn4EIjQ^TBxINPZ8-T15gNM9w;zJ%LPnYBvtN~#XmIJUTEzs zG@)mh%AuwGOLjPB{@X3=%=+NPlwl+kS-rtC9QEWN3?JjTuT}-I56rRp5*z;-PBO0k!Aj1l|E+A%p@`4cBWF;EI=1LWUFxyp`AVjEC;b8G*2<+0J_@oZgjHoRU&fQth-p zJ#L#^ec3Nu4<*6Bu;eF(R*A?%Yj!M$DK8GNd;Zao+rBMYOAf4gzy!UQSI1q>!m=BX z-}hRh0zcXy)GeOTXCxO*p7iO2JF(V8QH6$|oc}p2lEJeRH7)Un_@v!@9z30>=~<1q zScn2i*e7sTK|m%#M)2CsgZ*Va=i681eHxZDcd3Y$N*eHd8je1>^yU}FX)%L+p3^K7 zHSd5c6WIelbCJM%^Y^8}oXggX$Ui{uRgsWE8#%ooKtrW1IT&C(-S@@Dl1XHs|Dbk* zp#QoJm`#La3FA;T)VIWvny9Ww$_-0KSUy@N@!b_b{p+#jX!nbSzW-QnFL#9G`@xar z06=;c*tT*ebNAE|y_9lNP{Q<7u)QBjJ^V{OAog*_CevExADa?BjXMGtJX(V@q?W0U zBWi$pxpZ0+Cg&gK%LX2@!|0m@LNYq{K=TIh^d2~%Nhf30Kl_^EW@_Qu58u2(&}yEpO!)l7a}Dt^5CiFs=`OvMg0v+LQmNRSb)imRwx4R*aP7?3;> zthVI)6d!VGC+QN&wl{?NAqXVRhZV)gCrbAnlG3M6;pdX}Bf@a0)d-Q1YPTNl_G*mL z$?e1p+7U3%{y*c};Yzjuq!kAVl*!9^Ru?^KAp@e!=+!Q|0rIqVS(aa=Eojizvrhf{ zcP2n9nDmi`xtwe9%=Pi#2}?^FZ~R+gx)oZE62+Yvn(&B+s5!H$g`j#0~E*E@}BTc$pum$$}zt_zyGV-oOsS zJiFYE(EpU7x7D{b!M8s9pIJ2#VzPUv2}%t_KXB0e@kE1+SNI>mv({g}+AYe%AC^1Q z`flc>$tm{n*uN2n@S=?{Jv$XBu$XMt#^9pn%*sK$dQP$_UNF`~x|xaLI{BMktF{Sz zI2(sA5v31`@KF=+G0Vwb zB?E6JbbS+BQQZ}Uge|AlmqDA|c(3uLw`W#ALxHJ|?mjq931M^ssoek(F;~RIOa)C# zWGLB8FInVHDf9RWoI#oJEM6hnE7#V)j4ZYPXs=XS`eVfBi=fI`2ab4#i%UF2ti#8-AkX-aZY>8UMTNFL6BcCa&OTOLqQHWaQ)Elme}=ZN1}s zZ$p5g*bcUn^x+=efVw2?ODaNwm@5NfjdmI;7*S%~dnnILD1fWu^scGmMCRJs2%LYZ zs2Zw21Y|4g;X%>l^pCs!XdOl(fRe6}3wiY#k0Av))Z;OYUvDr zz6tUs3DrOdl=k-=8FPmCJ1!CRtUZZ>sxhOXM1_H_J;H@cgNT}i?m7k?d65k(E8M3P z>rVDMrsceum0H+iW7j7S`?s*io2>;Y`Ri#(X?pr*w-lf6-;m($U)yCJ&v@5CH93hL z4h(wNy4e*dxAznJwn?qz?zntwXJs2_+f~0ryx$ztnkda?`?e1Fhy0rk`>AxDF^WHn ziprSxYOagLvg8J z&|vtRO!0+US4s2zDR@2SoeDEqC^8&BIJF~`IajQLdI-{81SDJrS+je_t1=?vHML z<^qV~4&G=8F4|q1A*V!e*8?hV*>DUXBC&fYR{qz|kFvCfWqSx*P?oO7WvQwJ@y&lI zLn^UcOYJT86LFqJn^qSDA{eN|6k(>Z5ky4Cf# zfo-1AVL>5VtngYuK2_~6XmJE03#qHJ_F`y1rrfhba%SxNX?i9?%W=kqS)=1jk`;iX z{P2;9vF9lDOSV=>M?r##n&k**WWES8w5KPecJX2i1JBRU|Hg$$cE{0#6M+}GN`&=s zxo?2#sidcE#XjR{hNrnLlo;y6kF`x*8l0soI)u}gls)Gne_HG!%d-11f@H$=54iMK zEbHd|hUWw4rVqvBKxSkD9f?1<~97vUg$*UslUsWv{95B3GjONY;6yt9O=vhUB-IKk)%Q(%Ysno;>!b-@+DQVQT)JO0bdZ zJ}7t{i_Hn15n?Qbo?i)ZhXApX7dor&!U|>Zw1D$u4BcfiodJ5ZN@l*IN2^xq(15!s z({j`R$49s#&zxE#pI0Kir9|aam-VU>WrvUu9kSTQ9!jgBM#pu#|uEL`k zXr}I%{~berAAwuN9QNb+Dm>69n}u6v&d8wON4pLr^7yP2!^5sLZoAxn9-kN{Kqg!r z>o<&}yvy)9e^V&uRvPw+U$n~>!PoG{2?eJCejPAOSaZJu0Nj8fPuc`(-W-?hypI^B zt;%j`qLr_6yq*NAgln_ilQ{e<)6=p6A!`_T%}~55!w(sdg+!R6%Ls8; zkilgnQM_`fsOsBC2zqMVZCaZGYLnXha?>~IWs2}}2!P)^cljbrT&r4|@s+CO37?xa zu6zlh%`MB<$Ru>frl_26J`u@N4YYY>#6bm|gX8cIAl`@TUc30BJ_l0dccCAr@n;!D zdl#?F?YS`A(x3h}q(G-7n92OjqZN@AZ5pbe!RduTZ!hKYS$lh&R5F+V}2bTZx}n6CCXVWfS@| zC!oMOzhD9-b5I|tOYo-lF#E`0T%fN%AACBF6NH?av_sY++uRj5FrmNm*Dqr-`U>5| z$b>9Y?_tWz-820}e|^{2?KNNhD2&`Wf9ASUi}VpS6RGipE_)fz4ms zkv>QEx~KSmjuE7RdzU3TuW-ZoT<;jiJ-7YA>i)loAs^(%y{5Ru3}MEryxt|IK+eva zBcK<$?_S964CFdwa#TTa?LaDdv1%GhzhD;TZks>q9dC@VX9w;Kd2FfE8NNq&M^@i$ zkvJ&^dxT#2-xJxV@cLbAK+iM%+vQJYOCeo!SQ7aIv!8K9Dm)>dr4^XKih=WP$aXAA0sBpvO{X|0>r&y?Wa52=o7S1yowx54ufFUbE z$LbsPxcgN4;*YXUX)XRUrq`G0<}*ig7+jGTc5D|WhDv3C_w6-umFzbC7vZ%i`^Bhn}Ccin@oP!xMv{|SEx&P+?4w|soAA=nChF3g3WlxJxP4`G@#52`{z zrJ5~|82BDk_`2!?NS)7=BxmGV0Wy>XHo$bymB$eO@Elr_%xSXHA~K)QR@^ebN2p-2 z-<_NS$@@+&<$ z`|>C`3RwFf__Kra4dS~rwQi!ZPa-c2B5{yxD8kC!LBu`!<7j=`I$?zTOz4*NyB{M{ zjioQYFgibBIEO|$Cl*O^3ns9!g;u!k^0i$tUKr?RuG_Y|IS^GF0FnY$w({%9c6!rZFWv0{gJwaydnAO~Njk*M1^6ZZ7?G_F zl@Y%zKfLM8C}}Ki({d4qK?6r!c3WpIz-P`p@L&d>xLrzt`o~@|F*taa9gfOFItL(Bzls)@0 zX1l-nd|$u6?(22`df#);d7tMz&vVZEf`6-!9b1nO3vi1$EA-BmT8|Swq^hYc<58Si z`8)O5fRmp1?K;Z-_LqHLIpfgJ7M7Fczi0|KE*)s$Ub(lT?_I}BPyOzR&L%jL>ObS4 zerR!F4sq9ftbdULRmd3zLe6pPlNIzuscKom)ST`q^evlYh^{d=?E5nYK(x0GA#mdG zFi`xgmpQWoK>P&5zkUlP53?1#hl$tR#lOztrP=fWBYb05cc=PX2ST3dsZSQ*qhq8g zd*6w7w+XjGvuaD|H3A(m&p1-&K!rD{dqHa-I`8SpCN*Rs_OTJ;t2Z8-v( zB=JSQXeQX1F|{wkg zPyNjo(62u28D4ZoIzl`YSa;UaCOIbI;$rWY59obRK z2EG}na`eR z;{9PwEvJBLt#Di1@f9qAtATniRI%a5;jSSAv$X0d022IUk6kN80<>I4NPzA0De)|8yqhg4wZg1xten4Xq}cqY1G>SZCyVZr}0Cq0aO)j!zJ zjy-VTz*Ap3LdI?|2#aFwYB6%l`aKc?RtbBjqE7A0z|uFxrF9KI$bA{>GaF&WbVS)f zfQoZc+jDn42GOLQ$3MfH5%Tx9l@<0a=HsI%quYpUU`M?@I%@3Z;dsVqrPxk9BSUlD zyvvA%&(-nM7wh0QCoZNBq1zeuU?L4F-3IQ$@Fp@D+~s^PA)H`g`aTh2&ea82nc&~Q ze^1Vq!9DvbMS))tr0E9KJre4AW9U4kh&h$SdokPWViS+BjKVz4FFX&T)RkpS>W)i( z1pw4Cgo2B;@>><#N3B(@+i~yi_BhtY0;PpN3@a(I3og&eIl)IH;|c@uEmFA)4*0yw zvW0|YoID8jFco^Na&*H7VM?3M?|Jm~QqI9!NeU2?_dyjC+V0k%z)R(#d4|w}j(Igm zw~M>4x{FK1<0gq|Il@&yksGE+V!=i&8^aoWPFpxVQZ}hfMe1Eii#{JJWrXfs-Ax4M z6n|m4I@8N4IPfZBLJ#w%RH85I$!BARzo80r$X~m@2_^HNeLQ4mD8bM9Mq>a}$tU6m zN$`Z{Qua8Or+Ia{hRF;ti4v}5_m~Nj zam>j-T}VrMDcAY6Jk(z9v^}mCY%NsYJzhME_ksSZfmO;w>3krKdBB;Pd)Jn4*=SDT z+q)D+<2)^QQ86(~?Ot4C|1`MS0gf05F=r$e@3K1Wm)48Ed3*dd=|HrQf4Nlp<(pTR6ilgXrCOi*b_?C}3Wh(N&zhNr&v!=yhk6jM zZ&b*|Gz$+LQh*7_U+N|f%2OpBzaMLVJ`;3D&-k8^ou;|P5U178 zytgX_PvNc2Ucg7XiV2pB*Ch+8J>PBssKcZ79VFkcD&~8&u!9GXHwnLcxEd!Py0yB2 zr0XMoK3O$-T=isrd7O6Q^lhn$Un)aRAD1=8^&ii1(;!)-dV9%PWpaxI0>aK9_R zY6tGsw7s7;`Kbmvlzgy+InnyQ^x}xNwYjv*OFKRcbg~D3xNgvl3I{5h=w!7tA2HmA zaQNw#o{2X2C-`0Z@#o_AiwlD#E;T*{%~+w`Cc!njp^yX9ev8@hWL5{SH=9eU_YamJ zaZ9_m0#TGsxWU6TJDB~=qrHxaIM75Fx3ZM%sDC;c7oK*@^X7K&=iNVp3K{c=f5b0! zF7k(u6Kdb$)CB@_wzcjqhj*EfZjQT1?EJKpEiBP;rPiwNr+qv>10i=SY#?cA>=zsx#~aBfi#-nwXOn2I85+;swSwnEU0&M&ut(!LOB0Z zEw3(qHFJ@HUTal-m4C>4uDA>P6*^82vs_F=mY@5V6XowiukIIR-fyuG8T)wAK=N4# zvT2kvbb9x6wPvvDwUS|1OtZz0TFT@}eSYZPE{`DN!fW(_rZn+!l{%7oGK@n`1@|BJ zc-)Frt$y<1aQR?=DH?X3uuk*bv1(j^6tmCKr%kLllN4>Pk_t(|0lYbd&OMy>=prhl z(g`kn8r3O`+Kfh&1{g&yYc%f~Nu9(P}>GcCqy)NFjln+m4%hTAIFwGE8T1 zCAC88nxlc0rPY-T&OIfoMX^N1^AA+I?c7q%E8ZU~`oQsCy5^9-)OJa1oMrspxbR5P zFrmoO!J+zIsoeYLNAtnYoPKZJsawgPYTwxUrM#oqnDuI|H7`$N{-h)D6r{J=le3ez zZi%0xPJh;1ggB`ihhA7m?g-dY)Xq|J`isGk#5E=0D}B0XgDpjZ7yrqvbdrM`%_c#F08Kq>Bdv3;MJIBPKTcxh#HJPi1-E0#8E0(iIW z#tyd!fB9Q`FDsIV`t7Ix$Fp2f0#fD!SIikuZRcv&6=0_Y0s!oA1;~$&Eg42H(OZPs zT?a|5x-UfEg5KbY#NDgVYx0=rb5Ec8LriU*0F4ILg5!jYTMC$RPy|Vvpm6ukHQ2h2 z$)m6v!EJ9rU^E}%B;YE-j~P>3lzk?_Cddr@HZW{=3jeO9yW5B_r9*RP^CZ*~WfkG#m0B`&)1 zr-1;?u8k-!@(Z6Z1i(W(R~(dDM?Wi~TG)=GJ98O2EWywNgu<>0=f$u3h>UiD&D+iK z8KR#qb#~EPj)eX7iaQYFg1+xLx!l*3_M0I~szCMW??gxj{Rc(PJ8r;rL)7|Zvu+}* zS{{7S`QEhznNjIg_RSkjZ>)@QRRphNyL@j(HHa#6X9!Z9`$p6IJ}m49quF3NNIF~? z4r5L!YW>lDJbiL0b$ER!O$Ti>s8GNB8qInGEgoe(X#Cy-=vvEI+ezDJ6T1b~?zW_0 zg$ct(ojD9JG^e)oldH6~&b}Dr4lhQD)4wAAqfW{hG5PbiHP2FI2V5l2L$Tga?)cxV4{b<;*9kgKW*C>i1i(}<<Lmh8ApfnqF7iW9bdo&9GJOmVK!j*u|-RFskB0U=s`s4U~jJb=yF{Qk$hVQ z=j{5-EJ$k@va8Xx#+~Wc&m0lJv7mr=XBz{JV|Y`~Xy32UCR*J1pUDG$L(>hRr!1WS zcY`Lcq~54fV=+jq6TqsABk*Kw=AMm3p`A`VdpMuWS}%Wc%SLbUqcDa%B5&NsZt_oc z*ROtYj`{`^#Nkg+`F*-mIt2zNl2>gX)5%U2Loa$n(-%WuMlB=jD z#o!1X_)3&8WN$!0?6@5u-hypiS*!)|y*DIe8iXqI$_MLFuIADuUDATc;tM1(iS3zf7Tuc-Ec475`a^^|qE}fo*GX!o z#l^|xktC{p;&j-JfD5leR?cwKKftvJ9z@;II#RyrY2W$%Pyz1N;wwMMBVcp@q01ecJg#TO%UAqF z2mK3g1ttl(t@#8IXUk9jA}$UlXm_pZ&@NB!pT2XY^zr68YUu~|?=eO^ZXbm6{RE1| zQ|nfWrqAa#p$URtiGy_D_)jpm%P)~F;oFxrg5PI^5$)8t0vx3WUrAMhVi-yKO7Q

viFER)Bmg&kkmYq*c*q7@eN2VS#E&v8uy(L{7uCaQXh zpF{U|c{bcqK!IP9y=uDlnsPaK@szn>2W9xgHUBnaspI3!1l%;X$bZi8KsiaUi9vM^ zeICnNOnn1x@dwv$k=aMRZpwR!*dJt&knQeBwY|otmWQjN$h}kI}2QE++-+^e0wl%Kex= zzSUGNK?vE7a+z)ZakBm9HqX!yy!KMDS99%BVGS{A^Q7}eL(3< za0`kW)aCNa(;>F|4)kaaVm|`7&VCI&8sYI^!~jws1{e?7!ZEsBxd@}U#DqJaPSLj` zOj#>5gEUrOnjJ^6a^INH0-cqsVVS1OhajUv{S-N&!J>9z-)CXfss5zB+|6ym7735^jfzbyEiFv# zKKtn%+-r|lk)~{)&w2k4`;QjMqeggf_?(J7ri1o#mrR|3(C`lR_5Gg2Ii}Sgz*p+c zQWIwz>gk5GBWBkejM+jz&gwo;P|$kI6O5+-KJPUBY(MOG>WFDBjjq?B>qIP6Xz&&^ zph<5)bN*rd+h(yRaWBMN+;p7BBG&^72UeD&h8ZtJagtsVSW&YzsoxI&cD&r-J%ho< zRZ@?~D?ogCW(X~z28^?%FF^Se8r(*0crkAPqxGLYxBk^!#X0&zTuUL-OF#2J4afsO zbpI5V>atCp=7?oy(94T)xTm*iC5dT6uWfx%ur7H6C-Y}~Ntp_S2~KN$5d}9Ce#PAN z9zf@$tQIwV5DKzs4{?6iWIn%(Kn(W;Q|)HP5rI&SMM*Vh;QsylgA=wZweHt&zE~b! zV25)-@){In3zjqIE9Z}+Z%xuKe4$VOwA8Cd=)8$B&a*V){;8sg&5#g>y)(qj%3cgU z3oX(;KbH34>?gMh zN=;bj&cxZvH|a^`2-N^bnbV;kwY5KLOhh&qCts8%i^^9ZAmwm8}s-g3FZ3$*j1u3x_{_3*bZ z?u!AC8FbHTg8j~Gnh-1A`#K$-nkvZD%0P5lNn6iO>Z`~Q#4o(YjnS#~$Xfk{Lc}_D zPVnb_J~6$sNnL9c$UO=4P^S+Vt5S(dT9JN?DDLt*PuK#m{&6eF#lh+$6CgBrZY?)+ z_Dwpj=QRE*CTHi@e<;Fu@ftps<@*O;l#?@8V&A(i^)TV6 zVdr>P&sMM(!?>br0uA3V$N zk-j*wi1jsIDi4uY7?H9DQ=hf)T})4cgjk`p?|z1JJbcjGC^vA#*t`e;x|d&(ENsB| zcf`SDX8^PvAGySfdUrINr`vqu6muUz)BgBNN>Wh%bK+_y%OnifTZ6q|g~=BeEhS{Y zP*o0)_mSfb-PSwTM2Jp&uIZNV+6;tkRBR9$UvwaRaRmKvmm6O%TYtk*ovi(Ei@Az0 zv3*m*9OOeWZk!xHj^-l7-t5mbL0euWXjIV@{2;nTJiy3J%F5rvze%jF4&ice3*qQ{xdZRCOpB~(A!q92K8s3VEuJLBsuAT5BR!kCbTYTG=KjN@@P$>dy zdOpC1D*PcO`+G1m8gmXOeJsT5R;FEhV@t=E8yV{1BFcn3HMUsi+#^J#@7?oMKjo*B zPyt>q98d({w-2$rb%a*nysJFG(^+M$=BHjs7$rfqua6{u(?+!U9IzF5GcF`T5>eM! zzMI5*a6hr(_{b8dPRES|=*!H}*g`W^EJ z<{!eubOQop08RdaP9WZQ$m#cj8SZS4wC*qvOl z8InZ$pYQ2*-?*dd`4-OP1EA}F_MmG8lHkFVRnaM47xucm!#+>qf&_z#JcBS?_jj~c z@UuK%3sOxcc0C{A0=Q+TRDigh;+3xBKoEdCQcWg&!Zjl=i*K{ybdJY(IDF>?txvmB zbC6Qh6jN%o4vHWrP5DEh4?hu<|8+^OWIc`5uGVuA>7N8Nr@Cx$xPHPxE_Qk^H(Y`a zTeK13ZLzdqZgYDKNfB)Z$VIFRf7QCVWw+KyJzx6~twMkRl&G)4(PmFc`@xU-_rjeQ z^UdDBnYErGh^?ERzyFo!_fvRi^(-^}_Q!t7UWfw0iDk8#xB&DK z3HpX&z??m>PxjoR$->>@6Yi-i8W%L}p{xyu{EO!7WecUYD7(^xS#M*G4}0pRIC}e^ zL;Y6|4rV;w|pxug>f! zl84JQq0S90DFOyF;?>+NK^ITjYKYevFy`dNGt~&FPUGn>-g;YPHd6JVuZR^T$jVps zuY*$ltqR#{CagAcAp0`F0yFs(^>7&{+&lDMfTTJhWQSuyY=YY`oNXpZawvLUbnW}GxMz)QO z&1|KEg;Fb-EYZu^oU+W}RILDh?&J=yU488{e_#9r@bPTM-Thkq)&+hQkFxRu9Xib5SASstIkPSmxMn)54|kP5VDbDwKW zhNCn5N`HEa9Xhf%8KWeZ8Zq=+XLjzD#-Of!cfXTqTRVECwZtB$^ z>QwWE2i^Zhqk zK9A$eDDQ@w?39+q!jd>7{oV#BjqeZgGbXeP@d9bv$#v5TI&h|ew}t}Lmb9mD;pbqu zAr^pN^AL%$1f%CuXi*T~Kpgy*Oe;&z%VQL2&QZj}i|Xvi%7Z16VP`6{$0~JkR+fKG zM>Cc5Bh8QQOh6_jIK&DHU97kD9Stz#zj8JsY2u5k3G&Pus9$MWkAbW(-gGOQsw?IP zy#jlBo?tUM@BJ(KYjc$wOv63pbRIA4Xr2+sbU>P*QqsO6zBQh#_-de%Gh`fez?1+! zdn(?UA_QcE=KGAoE{3h-Pw)jEn*Sum5Ru(iD2Q$v=PR@VPnqN~zZq!N-G}w5Ptw1v zcRP~ckK{4jFkaO1j-5;H&H2$|wb}Q>zo-y*g!KKHUD<^-7~&@{<|D)8oG1qQUhxTr z#2_p+A3Avh;u>&VXA_isOA4PAOm=9KQ8zqSE&a;LC>`iN{^9FmXG|5-ZFLEtS(lVb}pO^Kh!o$7&W6lA!J23?NOe%pN&JHJ1e zgP!_CoUH0s&X+YcV|tZ*T2*=O3cqGa^BVrnfNnKML4X=#wpeG@rL)`Qq6 z{L_6ccZavVbT>b`#TeTEG_ba>2=tB}aVt_h-Pk+Pgd~5vl9iVyshjHeYxY=sMdLUh zz8(7OPfp<0eV0=ok7oma&F_=*S8_z0ZZeChKSWzWE;4l-IT%bYndvKB6_=Zn}FBVeloV@2)^(ir<>S zFJx&8>Thk!8QWXm1^-*$$?; z-aR_OG`y%S9<2^{pBs>L2fcSqj?y?xa0_?9Kikz09!O*c|E9In=pP}YBg7E|=Dp{o z*N)K9`bXfyKI%6P9z3r!<}D3;L`uG#c`>xv&JJ>~3B!};hxV6$pqA;=^w&mDwD78) zS)IiGHtlK#-QiA-D~9#`zwmKu0C>%G#;*2Ah6xYn*fD|6(!&Y3;%(&z*g(mRd2((} z%1t!jv6_7CTC9`~Ud3EKUsW^O1?!u|F09E4zpdU5#_oSNAYT5&JuxyUp^mFWolgC8Gi%Pk;|!${dv%!hI^s2 zC*D-eG=sv(%SP*v%ucVWYGNpt4`YU+c2Ja$pV=9PMt+;#0U78tkVHVMean5+P)SEU za=1z`LUst`n*8WPhTY*Yf_bx=c&!(iZHhgn?0sX{x%BZFa$^cjsAeozsNYK5U^tgb zQGNpH-p^%YStVU2+;5h1yyScOo%}QIT}A*6ocrxc%0ZpWgtuMkqs}L_-GS`z{ZS6g znE#%!iA!l_gp5=IcfF)Bezy<2MGQxyT$fG>BJ1m+#lG~)(wIl3fRA53O)KL93YT|c zTI1~5OU!~mLgY#zXNTaA)CVr`b6mnaUG_WM=?&^G2V-2|z|7Zj)L2|)p zd(iJ?YNeOU8vas3grsCsuyRvq{s6>tmW2lf^!{RoquG;$!UwEIl|V->*mxAJ44!a{ zg=bhnADzv=XbhTNK?tv7Hlsxkhyj=i7@L%|t!(Yf$)n|x7e?p5M8YGKP^TYGuGqsL zE(Z#+98A!~*m2sZAUzJre}%3tl7~97%nU3yFv# zZ!o6Ohf=KPkzgZ9r63tex@AAQpFD{)(Y{8}81y?lF8P9lbrDB@5HHOI*uysx8-|9F zlx>S>q~#QP{0M&1$N5J_O?nD^d$@_4r1sIg5!m6OebRx(4?C({tGe=T97q!{!{9>zoeN`HkUH|VaApR z* z9d%!@pxsxS#!(J_9NvXOorA3_GCyo6 z>EK+t1lB)@pl%bu+~XkBU~E!$YA1!VcJk&FvC|1WAR84l7xg!3P%uGY>^bRDuMIbg zP5wa(QItjYi7_+qu?%|)eSO0&67duF?$k4tLg ziIGen`u#;FB}e2-DGREe{*9VDYefankv80<0TP|{^~;Q0UPebB4J&?B zGbuNe9^n-ZclDqchu)qQV7;t^^K``5xTC>_aopVzE{sH4cMW16qWfKqYs4*lcp_>c zC{z5SE*RdM!nJaoC!V#!DEN6m%#Yuwjy0yB(-rp+Sl!~&6eB6< z1LC>gV&{dbueLh`}fXK^H#27mJ4$NH@5Y-c#yvwnE zu>LCyl7kwVe<7c8t^|211jz4^qX+#$HgBdM2+j+3oKHKFPDk;0 zjPaxyUqGqCAY@_47e(P?8%Uo`;y7vIScehv(|amEIS%W0wO0YT@7Q161@gH*x7iO!(eVJvQB92w|;wmhN1R*3`HaJD~YFgxnQ9-29m=|WIYx9HE1tt*+oIVe&d7DR^ z)7Ka`vn(@$z}H~_AEDk1<>j+gsy;B|#&Q4!R;E>Fu21vHCK+>nrD((tJ?!V^h=_4= zYMGu^e|SZr!%%egeR!SiOVjn0m7go|x`_TWKewrJll*1Ykcyt(NK5Yb+DJDY%ci8= zW6ww$Q}$@bllI@V&KJ%j84I#G*Ki*(7$Z`nKB1+j(i~LbWVYXa`sz?^%Z?4F^!Xj- z6YEKjPw!RV%TW(&9+1jCK!vPL92-9a59(3JjTYJg2MA=@eD^QG5N$GyQ3&JI}HtBz}gG zqEs&iMT=5hD;b?fL$5r~E{fO16_pA_%=I0oIrdPZK3UzM)RrFt%-j1*T%lnd#~W&% zmg61tuLUYpM>?JJiX3H!oudN0&IHpT$WJR=BcLJ}}Lxb_h9xkxm( z7khA)Zj!uiRhfDRV?q~@JAQ()+z8h8Jp`BZ$!Alq9PgJs4mYg%yl7JvoS2aZ-}d>E z%=o*#OzhahA2q+N8{F;C-tsMeFl};$wpU!xPy>r`y5(f?(3UtD+0o)NE7<@pz#zbu zq9mSp=4T6pD@v1TNG)hhd4ZmPk}9V%MZGWu-u#cy#6C4)LJb{Jvh+sf&XPZPv4IZ9UdLu06Vi^67Gpr&L(w}rO6CrR?XdJaToBI#}PktC6}Oh&7Fw%XK(Y=m{RWKZ8UI?Nm=bW+LA4&)qjR zL@J}sj|RFn9)67t*j(@<=rpKoft${b-rN)XQK)`v;?H;>Qtm;sP0jP4?<1?4uh=fm zEFMBt@BW+gKC{HCx;4E!J;|qUB_9;?y5u=0)R@WGUm%mFV&G(XxuA1W9aH7>{Jrs& zs-goC_&@z1O{@yMSS$^sJYN3(T?x$4ol2R&+}&&hkFndJZor`$dAj}@%Ee5QYA;5 zLBfa02Xrbb{iacX(aO~% z-IHytpwq=xrDinGLo8BE{*Z?Q4;g8-SS<^1=xs@x5w+q?ryfm2XcurSArmQC5;Cvr zG07VBn1SWsQ*AroId`MQK^Nn+}_y8~dhS9%&1?ed-D36}=^=Ie?IjQ5l^ zm+QBz!LIy>E0D_U>h-9#lusVcINyJs{$J}V%n6ka_`^&pwY$^#!D=0rH*DR)?VzfZ zN&P@c08$U~UwZOW@)U17`u9!A^>vdM2jK(4MECy;o68*aUSffbA{rg#d zW1zsvN*7fwdlGrG;d2^&9Hd8SCf&W|3&)OcKgUk^W7&IW+sNY|8-LKRO|abKCM3=F z!N+taBPjQwmM&bd&K*Izh&8b}?F6=}%nv_P2)5i`Fuk58Y<(o9D$=T8bx6-GFZf%Z z0lsS*Qk3nwYh^Y)o$e{&{rBlg+(G3HuAMh$tJqaJR+t7c*K>BQOFAZx6-3AkOda3! z;9|D@%9gmIXY7;X*xLDM@*iY}0mTKgJ3n`73HMiZ(4OI!NIkm2;|VXT`uu6ukn%IE zs}Gne)F3zD+JsfvKUgoidnNqop^uR5eS5i(=bjiT;IkjYP=iUwY3o%CIkcw~7cQ#q zJc#YO|8UdT*wQ}Nr!f&UTc1*Q-Zi(d^^vG%GTkEm-?-6`j?lXP_ONFZ?MxPh?CGvo$WoadSgx09z*tL(D!t(B=;fkOCAkOw`AGVxw;#EWMD^t6?5{QGy z0$&4)Kvx?sDzAEe#@yxgmAN{8P=a|0r*DHi22CoURx9skWcXi~OtLf;%6jHHDrJ$l$;ypDN*Ez$B!9do!)EpUQh3CIK;e zuxXq$e~W#MY_4KIIk*(9oa3Jf_V&e-;zl`lD(c`t94XyV!H2 z$DjVk7&`j+7q3NJ-Bk7QU0*D8{wk?m;Y)gH!MLhUPQtMR)8dw(6DKUjkI6q0!t%n) z@Ut>)3l;KVzZe}R({THba+Af2OsHuwkYx`IL=+4Gkd| z)z->ealUmKV;FzE@3xtzW9eeN*t}Q!!hN9t#n0UBhT0Kb*~@^G0ncZ=rQP^rZ|WC4 z+m^EPN5{kB93NkXQ*^o;f1e(o_1e}eI~Q(?()YFWL4x)0W1c_Y@olbfg>Vgn#XGe~ zK7aVld#`YzOUSXxD2|BZ!TVw;yMm6Zc@}(Nv}AQKANazm8_h|gp*~=PY(M0K*81~7 zTc1H?9fJIFF0t&m#1KCDs6RLD<9aIVUbB8EX!?e_QD9EYqfM@JJ>}H%_i_ZFt~4N= zLT?pP%)F4icJrtnR@K&^bW{=`Z!=yd4ExB*uPaTw^%&=WO`Gqsa0P6oRxzIoS2!AU zAl?RbJJhn7AHN#nyff4mE}JAtAycs11cmEpnDB;z0|dp7B0XJiWf-e0^PpA}9dS=v z&mFe2o=l{IH`G(WEzTtx;}!WaH4oipYNmTCG%baf_ThH@;av;_G2YT$4kKEmG4Wku z`ktp=w{<}Q?sgXcL)*|45Tkd1xW=9q{7bB|;ibCAv##u@|g8$v4B`(CP{Haf)asyz(j#t^0Y zF%@0Rdp(Tm{eX)tq_6w#_X5&-M1KGK?%D6M#SQKx9j@+C0iRW7h+| zFP!jwJ%a062{HEA>d&WFRbTiQ08i2I4qFYl^yoL2%l0tlPDpl}0@t%>gxNH!2#L7y zVF<5*GBl{YS~DCY;62iAwjZze1Ui)&Xrsj*1R)yZyj)4}|GvSc~f;9=0i;UDeJ z?OHE4ck+t%{3}}w7`HR;6wllE3Ff!#A|^sbr~Tu^Jl)*gqn=Nuv!7>JMVA$OmR#Vd zHWoHm)u4APpaKbL8(KlbgZ!RdBZcZ|R=(&@4ptHZqUc`5=UY~0d-w4}nUGo&L_eywcW!Dg**9-3sM6MrSD&U)hxx)06UNiZXBh&gsq{W$v z3UgGIuPCcfS?tFW*|U4pCZtZU4I9P%*HdF}%h{PpFssd-5c2t>v>Ki=~F0G_B}4P-*Gg z;em7r`{nJ}RvRy3psikk|0C00X~2!!wJ>k|MBnlAK9}Rj{@a^|kg8cjNC)m-Us-gY0+{+Ej$ZQ; zJ|_dS<<8Z0UMR*6n5)UAi(XY_1QaS^&(FS4DH@4{5GCaWW&WH-ybL86+cwr;*c+hu zd(Jm(YivZBo?P=ctecN}i+f3$b2IXpt{xH=cy+t?7dz)N*>RNR;mHw9q3XLB+Ggh> z=455sJNL7?UPGn9?_-Yg<8iNvw^bfB*Q)F65{|1kHm%mELM*#sJMS^mcV-B5ir@Sg zoUfWMfL|pK$P`+q#hF$#h;5fittm<=N=!s@D-P31JRsjLYHnw3c)LR~ArsHz` zkk$E_3!y{Lhe`MzJL%-xHk!>tpCd)eLJm9nGkW{du7^f01g;&k{W>@*72HnZXnL7R zUl?;ytQmRJD|>6>Bd-&stCR?Tpj@z+(R49L#yyo??c{3vv)1-BGVJLAk~auFKY-S! z9Z3CU6(g2_lz-%jHQYI!U>=_Q%5W$5xUbU_(s z9bi^0Ck@=HUB=zDI5G3B{gP+OM7CHC}du?b?u0Qh4SSJxiDS{pyH7;dbsVJ=W0S~*9K-amDr5T5iG z3tnEkIz5!|oGaplR!d;_NRB#`qY|2yCZI=A36TcIa=(Q!-hF{^k@;rT6wuSeRto0C zN`?eeu{B!Y;c6mH6pZc*i+}5F`sUsjM^0GiuPj?B7L;L~e}caqBXRd(F3s?GfPilF%nJqfxWpKzt!HKcpP zURq~y`{!SiHVvVP@z)F2`*N5rkZm`nnUi8(KYM&{xXhQZQK-bnZLG@VGPj{KDFPSG z3K4zt2<7Y2vTP7%cs_pt0Sob?XW?I_W=1?6bXUZBIiTA{sQ;YSdSF54*MFGmQ`wBl zsoIw1#kb(X6hs9MNSs@kPR}l< z*rV@<^^*D3gud);hY!!r=X^KPUb8)b6LyC259ZJ+yW7b#vidh5s$L$~4qBLTythk8 z>l+`l76Q4V;Px&!vwZYePK9!dF>>jU*WU99D)O18GYz(<5vULl`dMRn0R4ixG3ZUQj;`2HnBxaEvLKTH}%8Q)db~xO=HzA(+B)&>G=4?@x>GTduUuU5M~{aUt@SBx^-3<aQ4yD4j;#;ygwes_QRZesi?PP!LkvoQRG1+lyg@DpKx~XTtBa%?} zH*1^!G6!}U=*T&F#ujMkF7uOKTEmvSjmq*d)K7L-4t??ZF`7%p>pPjGP}{ zUJp0F%MU^SW4rW3oH@aV4l&tt0lG*xmQf)Y8%GXck2b<+o;?gn7y~oP4(9)|mJ>F~ zNb_=9lucGccRoVjT(Z1@Nvegn>Su=Q9cSe@y&By3HEZ_qS8(oJ33fZmM2+d5yKugA zG)F45%;+)TryQ|s_9?}AHCv4#Tcd?GzZCZk1KYc`(@XZQW#Id{U$=eEZg9rr+^bk@1;_AD3D27;nlqZ z`ak@ue?|SYv-Y}iP=!}ms{ux54Z7|*?B9%9la+Qkk&=rz)Jc!i{R~_biJ5KOSz9t` z4X-4Y{;*jl$gz$Fir~z(J8in)m9(*OH!UrA;JU_4JY6iNDhyj|6d(LwGAem#sV+QF z(pKlgISoGhK&jnj)-CuE_4k&71bJ$hV}XG`<+AXZBw#Gfl+xEr;$K9ZslZvqhxg$` zC>Dn~#JUl*PFSWVz4~|$i~s$y8yLkWrKvTHXp%`pXx|G+)ZnDb&ynR9-whBlcQ7to zs0oJi`uxHds$s^D_0C+&ku9IH(6;!H+bZ;mavR>6P{#c3VCl=L+fxSixTkAT0YP%5 zd*$N!>e3AercGJX!NRq}A904fP{PhRRG~G+jkj|#rcBSQM~e*cvo1Z^V9@4R3hRk9*(1sx=u>pVjR?Uz_qThcHZH*O9l@Fw*%y?~g+aS=vi^c_)MTGyQ zsJUF3J~?)Y0`Ezqm5gvF8ooxSwVE%9t{aS{&U#=4uNx#41?34rZcxo0ZG>18kx3a; zY{~zA&TV?WVH$sjF{*W{b=`!}dLqMcNjnY7rPQJw9@jN$@yqNGh0y)uBQ?4|zoTEn z(<9kw0^=A-y6Z8*A`;7iTN_*!MDD~G@-~jV@pl`E{LQFRqVVbQk@DaaL_b9UN+s`&Wh z1)8>w>Jg(LRx+qA%e3d+GU~O)W60-$tWz3){UW`icDiG4&??P=C??_{IEtD*krLv5r zQXyJN7)i)pWH&RmEQv}I%2+DNp2}{BLTD&kwy|YrjKPdqUa#-;{(L^a$L}Aw=iYP9 z^DOt?bB^0%K|ZaucLQHS{+f$CT{P5*>6w{~3Yv;GI37d{ow@yvvS7+M6|i8){%39S zg;mVaim>kdz&DfdRd_&#Wj+ohp!f;;UjXED@}A-hRhob|oMY7ntso^O-$FDlVvLW$+ljES(?x<^gy=Jd^NBq7YWo&Pcwy`3TV{C$|=_&nZ@(& zMr5;7clY!0nAQE1?;NiHH%l1d7`*k^6&U*LO_Y>FF<@^+B>C=;yVD7`nvtK_U&9#O zFE9-|nBw1byfe-CCRktBaFeg<(s?L7r>-bj(?;ObWh^6C%Kw(&i7!8luwygYlKY1@ z-@P1HvK!~{Fu=sD*~@h)*#Pn8? zbTmGy2xqdEgYHF4_+`#)A!p*k_lg>wukcjvM>nTzV9FBy600`Digz$}Vd(Ev#?@8u z>=z*D-h-zSt<_wEm$80n60PonbtTjdrbp4`jP0^j&g?Mwgpd)g^ZWSXQsKT$U#+=6y?(A+Jnp#mXH1(4j-JmDS~GGsl=@6m^f~UzEH%3AB6FGF^*!y0fXA$W>YJqz|6qc;_=VS zAV-k<7@CM9vs~EB;rJ(|%P(L&#|~kS3+H!cbN8z?C|L4|xC_#{$hALTG55Y>?i_|K z5j?cD4Dw#RU;R+!YwTG4Mi&00!d9H~6i;fEsmL_H{Bik%PP<`|1z*n;&q5DNBUTw1 z<%%X-JK|_oQBcXM=l%3xz}qJbP%JgUg z@xblR(ZFexoRz}N$aqsXMx#oq)eTFcJaJe5oI0b}-pS^J4O{?`Fm_qw~6^%2;suJ|$r#M9*3I$M2 z0+j5~DJM^|Qn}r6GqEpI!vvs8&Vk6?ot}cI(`ws5I6wWR%vFXaa^CAJ7vY#Wc)4!Ge=+Q7XO+umdfJiS# z9d%jK^P*G3uI)@R@(FJf6DV#-NtHiBpSbG!TBtWB=Cm60nR-yu&dV|3G)ad!&dCF$ zKk4$s?$z}3#sek#7^7+gshDf9x`diQ%(+=NNo@B49e4TG z(OgoC{r5L0dyH^X^mY0D2Nb$1*LoqP@;W5g^(M)TOSbPIyT@r$aGc(Q-$ysKTimvOL+m*jdi- z*#}N#VShqyMlnf5G|R5h_Vnheff2HeVo-e%(t&s9H-zLFhy3^(8FBLf57OU~T6qNg za<~WISMe9|4|;WuH#jP&Y$c~ap6lg@%eVHe4zK6ZH%5By*J#wpx^DdXeAdtVJJI7| z2J7k~rvo3yD_&EH$6>EIX-2Q&XT!{Dzs&`$6OqJT@oP0(HJ<>r$(8gS5QxQY)@4|Y zSP|*kO%AkbXKJM;cx)0++zK$(1ncS?AYMHObb{quUsDA~JhimIg9gpVBw-hi00X0x zAD3_vt@a`gHgPXjHci{Hie6TyBh3mgICF1#e$PVYY0^(yJLI9l*TOg-E(UzO!n!B< z4m|jH(_rS_TU#JOm|y$<*s77Dm+vXxD)N$hS`%hO`?bxS_=N*su)Z5H=I+mxSXgdz z9CB4qIH7Hm4e8f3SNc{6xg-(zOd6=4vNbmOzG%IbTqq6%MkBxMS=D?-AUc^=YT(ZK znSlHud>D@~Iv*X3{ydLZ0umjUfxCO1-@e^B1e+*agsS_P{x*Vms!xZN7GNWPqPGer zAU$b+5EZ)L)mG?jHL*>Z-b6Bd9)f*7Ed-HkcgLv*9mSIO2#e!;;2%R=|A|udl(-TJ zN0{I*B|k?_gBw>xg84K#4b9%1H+=n5t}9XD%^KwvR<^zQ1XFdtX3>d zxa?dB*KMG9#>$ z`ZNa#Q=KZ=-PQ@s1DJ_Fdk5y0#xN`Oz<5=+xBLA*(Oh&2H@{=Z1@s?6O?9!ldJ`sr zc=9VDP~A0J)nt8eD_tuGL&kG0;q<7;kb_jhQ_PY5JthbGe{#IHOoRx+Ih!JagZ%;K z+aCG-tHm$0LdSxrA#>0reDa4b-YOmFERKuahD#F)<35y9`2N`8wvw1Z;IRI#g4o?+ zfIAr}j$0_)lO$>Y1|0N}q#Ur}e`)w=hCymi8)3VjT*>)41NF_WBhxZ^kgSbak?G%7 zuZN$W{7iO#%wv7YxAfOGhw^hhr9=Azck3yfu;_6c+M0_X8+FK8bVD8za% z;2SB0)Yr?hsUI?D0T9t|!Z(W;?Yg z>WKUW=1bZ!Vc=3!1rjp?b=S zXCCp`FG9rTI_hPjyWDctbD9qMwtQ3(?IyYY0KGT}9sZaw*F1XlQf0;h)U?p zLQU24y>@|66T`(jw=lkBr^VI+5APy#nFFKnn)|`+N8I0IdE-uA-1;YHp=V10zDq-l zY2aFTA#xM>M+|?krRR~Q1X81AzZn?3fs6%)`109}Ci?M$zHD;WmoIEWhJEBsCDo_3 zI5{T}`)fVmoJWk{Qqs~Vw>JL-wCsFrMQ#mSzUFxR@Q(O#?7e9fC};p(JIkxLT>@qu zi#tOIH#NN^@fX*hK8$I?Oh>=FV25N0>`7`sbPkbk%+@xAS&*w|J+Jg(;4B|5OcTls z40#aq&k#iXWO!CPl=5+=hCyzN3g=hawGNceS=wqvgO9QjfC7W5RqMDuejdN)``!Hi z4jo)P6ibMelFMhaICE~qT+lGWd5@)gxdQC3w6bDm(vE27*)dCLqi74TZ~`37oIn<^ z4S|oHooTnCU#8P#WC3=BRD!GvoLNLRAEBxJJQ8aG2|Ju-lEGLtsok;|&M!!8drntLYIA6%qg5AsJ;aTz#q<|8yz)DU@y1xXx2+ zD~WXJN_x>zG#7a5$Ik6(TxlxLZH#-qOvs46^n)KjY3HiL}0i@H`_P==S2q0De!{T;@(&lDf~B!W@q`FA^41Hcgs z_%*We!K~fJ`?-%|;C#xiwiwR)AfT~?VjrlsnTOsvfqeAsz7S_e1~k?qy?Kw!?l;Vl zeP!H>u+7i&9+z29M}@oQE2{SM-^huAq|n)KH9X}-DTVyY9|qsrB|j+Omu#pmINksF z*O@Ct%#JTl9hCN^KC#pA^7fIzA5zzP)9)NOROZB!qQ%dbz;`Vxx)9x9nWE`)K!YPJ zLj#9_FeQxiu9H!P7`}wUr-j&F>HIR@&Dr|Dl|}~>>|Bl$>R$6zwGh_MW310APbg-uM^!aJ4JenL$J?s$ePz^)l5)*NFAFJmP zCK)&+!KYn_EjVtf&UeCLL!fmXN~$Bpl-$Olnr9B3ZwdkK4@Y=>lstn;(j9@IW$k8T z?-ld@3Woh4jhu^7;Mr+w0Ug*qY44$%`)cKuYhQ5*h%%z@K#(xot&Y`Ji#E&TNyHT< zLf{N&{_TIrRTg47dfrTI+w-?KW~qO! z5NvjWWwC00jsB)B?^MllzUA*YR;2V9SGKPX8i~O7t@}=X1glsYcfjA)m{d~)fp|S; zW(;BicbQM_j0ug!d>>^!D5W7%fV&&00=qg9&QGT}f_;R;z&VCX_Dx_<*tUCaN4vs< zfqGd|1GPI{JJs?S>7P9+;9x6>edKy?w!#f15JAU0HWly&A1V6|;qU>CNZb0TH$ZL74arJ5&JBC?gc6K6c-Qco@}R{7;Z zKPrPmmsDsOp5NR)u>1N57w;{b6AeFj@6$%6y!yjp6lfe6^d1-mR*{gW8gP&~8MH;3 z{yca90&vLBC)dV!#s<6_Wo4=ZBnVRIH2CGhKbj{bIOl&txFTEk*Ko_83a*=UsRy!3 z-9Iv~>~23TGP*HL6i7N5qHY;8rOWXWqxZzIx5mwMgEMxT`+*Ty&9F@c(d=FutjWK& zA67XwJxo~;5)>qNjI?UE9amlh9IHbx*8hX9uLbG~pdj+0!!uXFM6eZ<+yff!W!)c6lONUv}DH>V$Nd3hm8jn(#VcUWxg` zV&nY}N5ySnDP8EpI91aUV+Eb9-LGHE`xx(P`B(AU!rhUVzg{WlyPBmt_rfU%oHsIJ(L5aw#v`)o?;8W)69NTRR z&{7SAxTbgjsY}fCeUHG4F5pMT6?F-3n8X^idU@X~=$Fd>nCo0+!GZ#6t>iakuy|}|*qqDsqv^+QXa{z@HsQHc&$M#_@RB|N=IND1~Ide z_*GV*yij|iF|}u+^L4i|LUyXJkMSYAKKtZiZ!h(l=@X4Jjh&Q57IPH@wlVm!AE@56 zg&Z|4HRCz;ko^jXB5wqJXJ*a2RwrPnj+>mHQ^!k)%GpvAICrBnbG)qvrv?&AFt+e znkmdd#@mE>U$4acw*g(~ub_)*yj7z|q1S)p-;H=X<(>^Owz0-WxQI{BgqqO%577SV z9q^3U{$}rf|M9+jtfOA@zd3YxoZpeW*GXp1 z;1PW*CXpMp*J+WxsQz>554f?L&);K~B z7rADXQ$6q}@*iY!UqbYH;G=QYSj#lb{R>=7siXQ7kElXKt;pbh6St?WTPxhtkq%u7 z_uibOys{4t|8(MN+}@qPs~8M@(Gq0NM4mulH|{;ar{=L7w&x;gr}%h~$(c8KwR;r- zs>3XP_%t&>B5zCtT-zbI>PWpe&i8}8+{LEx23m-VyGEvre^xcU$^P?x^fs&`Ol7*d z*5n+0g`+wLLNlq5%)eXXzBr)1nSi-x7Twa~ebUA6n|Vd%-qsK1mI>xa-Oe@2141RR zx9E*Nd6OP3u-fDt<`Bn+r zk=v{3!?GgsN>M7RKzuFhHW}X|2Hq4vOe!!3#lWvOvuZ|=ac!=y;?utb#9b4lt?fNu zLJYCI5PpuFZiNqW&^a}{?FM?Y;HABgj`Y_zyiJnV?|i{q#^ndkK_vCsNt!0a*1n-K z-A3xm${tJ4*-PyEIRsVSp4=0Uwv@_4Zd20Vd19W607ubViTRu@jL&_PcrZK(l#`yt ze4Z)QI53NA2BZbJIBL0rZLmF8J{hXEj=fTC&6jRUbP{j%6IG8!?Hm6d+cv+5R8!{8 z>$e^osFmpG5R|-i%+)wXsuyyEiN#*w3607dS3}+NXnwW_;BX*`P%MRL=!8WpNs!v>*Zc$dQR!%%T0DFSV1cCW4*fx$JC3JpcDG zXv5_RH?EoSC~NG~?Aml=aFSFr96!)&EEM#NL3jEXFdH}#53|5O_ysOOZLl-}*q$RU zo%nktD!lxDi$ZS{GvG=`V&kvMk_pmrj8_D$Q)ou!tD(97Vpcct9o`tJ5k${d0)}#A{Jh&NuJj*TR9i6)(=Q=e*)AoH;;zNgWeh#l*6D!}R4%ZxPJ3 zX&2R0|jnakt zuzPqqsx;;Tcq+pg-+b+kVjRs z$u~A;M_=873C!z3>8PCS^EOyauMi|K?TFFs>1pzn^U<`t!)3sn%MV(U>W2Cg8}&oG z8m_7eW)4v;^}~yCt72O{v_0~o?NJ0WYNZZ)lH(^r-W=)8Qz?QLrAvdo>)_Ybc;cZB z(DWgV=$i~ac$gS+z-3I!NY9G-A8cIb4WRq=jzV8#w}oWhft6|hfY$}hc9kx>-)q}P zkCh7HHe!&|yEjLR$QeS-X4rU>(G_8eXq)?`HoF8gdC%*Pqq5h)g@#yk^bQH2#0ogS163R~@OzbnoUh}Jr z+H85Tm_?>sc}}giLrg%iodMe}-7bM7dZnLC=|H?;PmZ*Rn9?a5{Kxa!b3(jAn87s|n)(iO0*7mb-aE zm`wCZ2K}v=l}DRu+QmStL;ujIEGzC>n$FwLY6VJ4Du1$;UqUuCKJeSE48&NdwVc~% z2ta%@si38(OTJt;0W6_Z9{A*RtJ5mr#xjan$N1WgpwImmHw>W%5F3@+xnQjq$^8y89 z8M{aH&jwdhflqzlkS+)}69LSz7dm`K4#T~K&*qhBRWKi3_6#Zyw1iqqP6WCE?#rBM z<~$AYaGLL7A;GnyMyE`lxyug{kYRTaeYl*xk(RR=mBmXO1H1{ktS>Jvc>g+b%4U1) zKn`Z0U|$X%#D1+bnpbPiy@(k~6}WMfPg!rLucX(uZy3!m849DkZiJtE)?vfg zWESM&wRPq!R-&L7V_w&;>g2WWi3d)_U?H5TOReig?n>p& z5z;Rc-c~G5%?opLJ0O#PiZ%ar1%w?JFj)g}>v#L`PZn_On;>KbOtJM{ss&c@iuKt! zMXVfr;y&SNw)i7SOrkOLS!KbtjLQ0rmV?vdf!l2*zxdTiTqy7bbfkzo#f0-ieoQC- zxnCBE(KInWu(9n9{k+(J!ZZ_dW= zP5jP%M#q$+BBAGxSLWjvZ9!%(X-O8D(C4LcH8L`3c(ybg2l4I3J`RzBPpM z0jOT~|Dz%L7kR4stN}we#n!1LhE4T}=c@4cx+n}dke-F-_$F9RXV=#z;(J=mrV~Be zW2*1*eTZ6Cco(CU^Lue5qPEFf7puvi*ZEyp zF`rUJmT+Sd#s?b?zuiN+Z%?2HLXT4L?MryS{|wV#9%xRcqN#0%p`N0tg+=@5{MSDO ziB9NR?1y?`32!RaHH7ST!h{mFoRDd-lJK#xUB8YH-NYPB9SN4Qq#n~zc;rRPNIlNJ zwa-Hk2*^B)*EXei@NUV-4e4lxp#v+CekR&E`1#VIw|kP!!$rDa-+y#v4B=kKGNP@H zz`c&2xm9ceKj$wLMtdwgm3tHTi#p_fc$PX-=;J~gElK##ZYlZ5i6n<@8jjkDI9n-5 zRT|vTrM|%grFVJ(=+78%$z{9uT{KW1fk&%9xUo`G=?B!^MgnDpOR595`G0W3Op@-Y zN=*;oW~#hz;Xi9L`ckoVA!%fg2m0l7(||-m?rlX=%Z_p75JyE*Oo!R;TOkt7iut4j zdzZ(jMu75B!F*%Y{BwUN+hfE%TZBmwG_Pe&d&OSkcZ?M|6V)fWCVfw#?q0gzdppB6 zbk$>}wE++>^0*eSk%!o1E(_^1}U2SNP+*vs{E5OZz*%qKo+ z0o?zeiM}OphDT=@*uwV&eiVo4j(H3?sldH{$3y%@`k$a`7c+zK!ZBP)?|Hdko-o%9 zB+L0zi;qTv!{;mb8X0L}qb32Fq9@sq=}4=JMeEofF3XkktCcst6-R=rg2n`*XYQ}i zx8S>@lZa*RH^>X`mXrt1SCH*R$3h>gi?U*!T<0;-y3i9zkbEy=m*viA`X;wAk(dprZ z?*ASS3BPOdGpAMXygq#1+oyKTC}<{%FBIZMf|(wNUqy{aGp( zN@rmmK?~Am2_10Bb<>{O0O_|{Z-=Xm-5eX%{x|eeft(6f1o1-=VtjFXgG$OgZ$w{WF{IWq7MC^~TU{V;3Yrp~|* zY^`C-EAC;Bfc=3AK3?dH^_B3s>4Y|XTy9Cr(?-NoFS{U8R`dW}bNrb0*ts3|d#r3v zr%Juhoa5u?Z9MB&6NVgw<++hyK_$kKgjA%Vl_cmcIRTN~lZPW#;Ir`EOd zGE*}Yk}bHSvB*eo-|M=6k(LD_#C_HuG&4}=fM6+^(T3{b80Fb;9J?y?SW=&wG z*V6q{ha!vq3mHDjz~*0xxCY0HxaP6j%^%RxbGk)4caA6Urq;-3*8HEELoYEC{p2wO z%AvKger?ZNVXTgIhVRrz2}~DY?TWxGf2T>ZyhhpMt-YuPPWc;ul)32R)xRri z(`%fxW&L-IGHj>RFJPXVWVw}b?l&fsp;-)`MV2~S$(WT7ynJ+*3g)n=c7FmXViK5@aE=dpQ zo&U**T)}g;rvm;NjIv%^Q2gZEB?tZGA_j z)|pFh3Nascx8f?_+728o^!#D8jQ@5Ne0)9Krk3ve%oFhWFC0x86=^-@nfNvJId8QK zj~&Y0#`Sh@PHSejIhIxr`MP0Ccy(%v(vQjHgB`J|TSpKN2EGStmzFsy&s^s@Dxi=k z`P-oAy?)P*c}1^sX;xkFc`(D|z1+MfFKM{cOG=^P%=V)tslX{@@*ZlrV$Z@5Fs5jq z@_#e*;N(E~e?C869LCcu(t1;TDG}mjqcA0cU4$7$EG;!Aw&3aMxHXauJ=JmBFy8kWC8&18^e;FGay< z^dZee;Fm7&*l`cT_fLw59FwiO_28DRE%+Dd|75_P3l{dZ3bn|eGZoY3HNHxs+1rGL zLb~&@J1RHU?OA^b=F369NKwDj8EP9f8=Wbaf>V|K{HgySUHD4T^szWh z<%W2jY0kCYhu9D`xSb%ktZ_v}Wal!4W1r8)2^~{&PQDkcVtSEKg@DTWXDX!+PrRC< zF)uC$++zvL7xR;Pmal9lFG+k0#}Jvdoz`@e`-6Q>l*N}IJE3Fea^~VNT01l#{iZmN zKHNy8Mp3~_t95~TF)D;M`+2p!Yn$Q5#R;2knzK`}c*>W1N?D^Uj2p6tj9e6VyR+}% zJ-4dIb;k}r?7GIqdFiMfe=_u@ZqTBO&nu5!vTep~%vHGG{idI(E{`vl@F*+sIn{OT zzhhq7YF2zi@=%7jL5I>0vB&xYA7W2TO16BPnVw-ynVconQ>m@#k%@aAFBYSJ?)_vm zK_E6?x<_!O0>%dmYA=tt?Pv$E23JUe7R)5tvqBc|^bM$`y-Yl|Kw8jQOYcLP^Avb3xNjz9TUSQN7KOw4ru4ZN$PXe!7p5Cr}70{fF2 zG1j#1&N5e8hval8qks6$e>U`SD}x_{LLk$pZV}!*jnE^13w^qI^D}TTjwVc2T*(Bh zh$vwOe+G~haSQW$wpNOgC}O_UAP8y|9na{-|kZx>|E z)87uwik!h#J7E@S^i8aE@-tqxif-(e#9(!U3W8i?FL7 z-Tnl0b2?Oc4bVN)`+C<(K_DO_C(+!@vL$;gX!n_nG40Fh`YL~fPEmk&mni!XT^>_T z$Tz?_xn~jXC8#aqlO6U+coE#K*CgCtcFHgb!Ox&%0DqXu@gf&o&9Mlf6Cm4o6wPr@ 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�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 literal 0 HcmV?d00001 diff --git a/apps/electron/assets/icons/24x24.png b/apps/electron/assets/icons/24x24.png new file mode 100755 index 0000000000000000000000000000000000000000..56172416c79d29acaca9177b942f6b7fb2c94db9 GIT binary patch literal 1907 zcmV-(2aNcMP)ofjERCRMe~sK~Y*-*$yOtxr4pffnpmdhq>(Cuk)T7q_oONpWf3y|9ms^ z%{)E&Uu(EFMRmjXsrKr9+H(Do&~pO(3%Sq)D)Q#x~37=1yENEKk5Jy+os@cz8MQiXrDqJpD8$ge_Z)f@ zY-oXRT^)Q?bqLnCV8xz8kJ)#A^Tf=Wt-w!q0kkplK&U!58CNwlNfKmRIXEIi?A%SQ z_aPhtsQCdBYfnYa2RF6B;daMt$;q%;%~4yDWm-b2h2N8t;BdKP1&uAJIXQfJ^F64; z0BxIskh!mqLW9?2(1xoII6;J3?qb#ffEsT>3>_VKn3nB@MW>O7B*g4C8yrq2BMo*@ zge@gmN*tB$q-EuxGTi^TVFGEr0JYzRP;v4G)kSzF%T8RP=CNtvJ*mZ;h_5_4c+X~E z0;|ywwMnGz3}hCS!tM1#6jNbKw!-DfMMi!RmT)q@Bi~Ks=c>N`2k+c~Vh=z~%vte| ztDNAIp}2N{Dn_U0Rt*lHax#%wr;Vnjro!$_ho@o== zR#ZZCI3SUm4Z5f!I~QvQzBp4kj32ZCwEW|XakTdHFK5;9iq(!hDhxF5fI*oUO|glv znvHPz3*hwRz@k+l#bQBGYd3c{bEKY%-n7g57n&GAU!W1?t)@Cc^=E&JB*U*+=5&I524mLaQRHJ|?p%k~~Y!PZWAR;^?56mSg3T4QFT9woaE|GWBH z^pDkJAgUV&t&cpl`8IXH$ZeYp`j|6Nh|HB$Nb?1eQM>|yEuFA3fyhG@c>$8S+NytE zLJofuZuaL?Hz0+(F&T|9gH|2$HngF7X0LCAUZsdytVywq<&``% zBlL+0DC*pcjFNI$j@qGrVFSa#Ta;PO!{?5435y^}o52fUG8vge8TG8IN9gQCU?={Y zpmJy;+f&mdJ5452Yzc2ovfTlT)rz8>`(bluvexOSIddH~XKzAGcgw`C(h8W(X0F_T z^y1|(^L?FC5zXR`R-L}#?*e!RBTp%G;jT5WxihL$t6*S>I0=HCAE2Ud5Ls(Bz{N6{ z^m^DcvysZ3EamD8+3(;bNabWU>D;{(2AwvhQ>ox>>Okn+ZLwx7M&u2DO1{5-_IlCY zzHx)mzzGady;ch`I}iEWdyrmKhO}S_oV-nXr2;y|Vq|av|JH6S$@9aJU(A&!!JwC7 z^-;aSfWn?5lY!%Bf9E@Ph6n($3CoV3IWFe-piwBIMzaO#MGN5w6hUOY^*nrM;WDl= zQ`XtUewG3$8CghO>Va072qSl`VR=$Lywb-%|AaZeMUv&be^e+Nh)^JW(iPag7wY)8 zVURB?VfP0i=K7&Yh?lB^i-#|I1JG$S(5e)W3QBUipjE5n7*+h+F<-|XY~19+J6QtKBJ++I>M8OZ2%PW%uu|wU?#n6B}zX!eT?S*aJI7J&$PIpf@t>l=TO5Wghqgjb#1Seh6f{}uKT-Z)^gn@eYJ}Fa3(h zRMSk7Ref=P)((Ii+xIOj4);e~{Gq85;-jkgMNu_ttI=p;OeRC4R>h<Cj=_XT?H z$3#EgmYUXgtAChp%)HNz2M-p^j87v{V~zctzE8%chC|%lG)VdhOZy t+Vi)G|6J5Cj=22Z0pVF}S=ImX{Rd?3db%Qsf?WUr002ovPDHLkV1iX*wz~iT literal 0 HcmV?d00001 diff --git a/apps/electron/assets/icons/256x256.png b/apps/electron/assets/icons/256x256.png new file mode 100755 index 0000000000000000000000000000000000000000..755a6e51d53e9252f90c19cdb4a373bebb80af98 GIT binary patch literal 32456 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 literal 0 HcmV?d00001 diff --git a/apps/electron/assets/icons/64x64.png b/apps/electron/assets/icons/64x64.png new file mode 100755 index 0000000000000000000000000000000000000000..6de0ec0e03268c0551cbdb8e9c5e2f27f253ec7d GIT binary patch literal 7454 zcmV+(9pU1MP)LN7}1 z5PAtcbPz!@GvEJyhg^p|ldNT3fA_!7^F4Ft%)RG)@B7tr0@AO24c>A>D&BcYD&BQU zD%jSfV9ERHkTiJ15h;K3G3o!!1z=Lv+Wk`A#v@W$<0YG+CvPk3FOluo8>C!9WOK$$ ziakWqWylrWH((6EiDzn0-Bwl{ylj*E^+73Z`A#W+%klpX(D?wJ+^}6rU$slBI{J-r z>@~98L8Mp%kPRmK(eunV<9WQZ3h$1+PPRji-&AI;Ym_qAHcCZ1Pye<+XRO{M)ttB` zmF&AN}KB<2RS$olUi; zzT3ev6!#cwz;6?(4qeHuXuRNBxb@h}hRRXOJ~3HXTT<=m zJ5u`EJ^#1hi}#+Fa<-n8GBz|RMqh5Ropa@?!nDLFIxo*F70T$j08PR-OIr;J}oBXXurKH6hyOuRxh^#*L z4TGi;mjSfdOhXP_qQX@>jOkP6w#3!cw?qyuF@~jO8$*)POe}oQV{z3ZThb=YX(?E- z%~;iVk?Qa+&oS(riK>s^+*{swF+Od@_Qwjh9hb&lyk#?@`Ib_Wo|3x#!w;di^;f|T zS3fV69=s$K>^iNeZ~jK@FreD@jC@C#%H zAxy+MkenPnd*ws13)V@ap+m|33yR8PH>C1ISN?OrL&ndQCVWTIq}wD_9yo6^<2EUg zwK+rgt~`8wckNjtEJo&{uNsZfrPW3+A79cttH@33LLLTp^78T`FCQQB#<(|sdi(IF z)x8&smp9%q;9ZTF!_(WFA`2^w1#9*gL9m%UqUy-?gZW!eI4mQQkaKLR4xP7|VuXH3 zwvp2o|FYoY=C6|$@shg6@qMRkbT(rqV;xjDOW*9CMA9KFO(poXRVS}W5TZ?wMQ>26IL}!v2)ixTYlj3x}j%`RCDT1 zOVX#G8w~~z(y5(@KRrCX$iu^fg~71=R03paoySwmX~4Y>9^vlhMhT-PnLt2GEpiQX z*_O0)%S&0Cj!DB#UQ;pwUor`6_x*d|J%)TDZN@}_<-yM1oMW}~Z4hec7=pb!+X5MUvJfwOQ)gJ><40M_mh zy!<<=f=n1bJ0L(_7YP!HSLfnPSqs)05e`U<7f*yu{qlL=NsFblRl978b~i~S+kV1E z>nK?3ky<7ZkwR>2cATD9bH+pkUms}EyBh#rOK!3f)&vOPden4x)c1fv@f4hxN`9eX zpZu&VhnTyYNPw0#+ODmKz$ilUR_|)5IZITu>+A}s-U%YP z)J;*qIer}YldTUtKB8Rn=LIsd;9tkIz`HvznTUw-AK6$*HPl=Num#M z12|Ne_6cBJFvebBKwc`{bFO8`$?qs}NMHqBp+sO}8s)FtPW~}*>2K*ivn@DJNDR;pd z3WR5fad-*;mOOSURqZ=Z`OCM^psG3wPD&G=lQ41u<$(!{Tv}Uwaxci(kf7dy5f9oA8j@*FjUom+Eg^&iZi3Mb_Fb|Qzb6E;W z&!v>lW|7v>fx*kk%Tf^#>u7O>6t3A#Bd-#rPWXbofkAVAkeePM9taT)JTIaCGeXaS zMo2B^pEf$kdg&lq7vvwb+$DR?n<|feO9>0VHdG$JEmfVkt?c3I**o+a0LD0mFo?=wn4Bmu4|K*!aMrHH~ZCW8UURY4X3P7e@?0914A8xiYq zwV%N9DkevMP8Ob5gi#Q}A*O0LX;n@<)-HGm>nL<(oug|%F#!X6!3H@YI;0jVT#JWU z6Y$E%eX+wkYm<)?myii_dzT-+PGyZ3&F;Pd!uq<_$sz4~0hD6plE%+KhnB**KyHqN z$lzV^Ou~rqH1ax8RB;ttydP!ESON=AB%Q@;+Gc!Cm;u2w2no`aJq2Ud1X%QAT{Z9m zJ(?w)OPDK;-lV9{8`RZjOcJV@@~Kz;W=%l%7hmB7XhTFedfGR(8nK@^X)dg9hY9th z)oQH>V6lXOyKv8xNps0Jau7Est#0heB7o_f94WfIR)CK#8w$V!IV{BHDI19~syUtT9OoTcAHuo{omuy|F;hh@KsB4u>fMTG{`Q*m;A4+lz;}7P zyX0OuM$scUR(hr9fZrnzoUUs6j(lR1%+9b17?la=kOU?`%LGiGM}E<L2k(g}suH!nWAGLN zwD@#^w|Rv}3lAvXckxp1@WdB2s)_!Xk^ z-Dj!tz-1v7`4q2f&kDL6Hod_u#87imD076iJ(Q^N8}m;l)WIs)HD zoK-5yS+T=Z34=yXUm7%-Nc1@OckN~&;DK(BNYv{7$xFA47y|c?!xmR%*B?v@>vu?k zo?Tz#0`T_23({vTqoPemsJ!t4RX5$H%7a&^Xu~0@#Ys^`<2g!z^^?YZL5UzLaqM(T znK&CcU@7G-+d_rw8>xKnIjU{uBd~9&e9t+`n7y1rvhv9@Ac%ZXGPMXJ-hWnBZ2@pDCOpX4cLRS4a{S|xu-)E6 zNfTy}Pk1DAzN|AoT~J>2UOwg$=vdr%>E=Iu zLSGFWH(QGQyun7sk3-I@Hbwg`NUF?|UZq$7=lG=2>C7(9&ODJd0a%b1Po6TL3gF&8 zQE{Y(t8p9Zj=nt|eLob0WgP_Ys^i~?B<70FPA_+GP+ZGN5^KoK6v~?*Aa?jT;;n5R z@g9Mwkcmv@OmVz?#vF-p)(pKPQaX}t)#u~Y6_nFI(4E4ozD&!#v zmB>QCOvD6g1fKx;lp_IVF5P5OJ35lf-3i)Eh{eRBgHX3w5f^}TL0qEwfVkt{fl{U| zBJc1h;jXn8QS#u*aC5e#AV7zC^l;&Tm^j`O@SYyt;sVk|MJ&Ml_*U&u# z?8TQx3@sVRD2vzaCBLvpPNpKZy)b_+Hd8~OaQx`WOe!}u zJP)tIM2k*O@99m2TaHn1PBFfVd}U1l-f;p!3Fv96PMauV>f$^C);sqSAXk9UNel9- zP8;#?JfkC6mI;uB7jVKjvmRA5npC(4_%?|V0EM-38a4yK9f~NcmprLU0;;$OH$q@i`3;(qUWvM!yW(~o!R0t z_*MdRx`VV_ViGP}y& z&MN+(h_Fu9qOYiQ_c>0MvgJ4-@$QdH9KhcI_-}+%An#OT{~nZ(!r{b;4RUv$)Xx`_ ze_}e1TO~UkJj$tGABso&9WuBKp)kP8Xutph`cicLBxBVX6BAG;cZ8Bc(UyRa&*l|Y z!UN(yn_~oPoC7$4w3&=S2c+e)2M98>G6Afda6uO)f%g%VI@65*c7 z7ent@MG0$rzP5+WyJ-oQ>mBCvC-yH|^M`B+t zs({zf@u^lhU^UoSiNSs`Y1)!Q*C+=qDT7z5RS>l`3EI1%;1wNDF(W2WR>KymL|i9K zm?eHI-G7O~N@^ImAj9Av#PQGIWD-Q5ABZFun2-XO#~8rNZXHoR49RmChmt69!MQ~g zgWf=d97ththF&Tz$D<}uU}iqwv%9y^6}k&iA*?c2Y&Vx8={lts`JDpRrh5s9U%W*T zJZYiy;s-t78@%((jUseSI&@DeM~7A-)K)}jp`1gn9u$oOkZNS{(gRnh9PS)mI+SpP zPKLk`B&fb3IVDb zFI*)))#M=ZfD2D1OPko@1|tARU{$A#RL$pasL9EnFX5deD=S>mv2Slm!I&=&N$%ZS zuvii&V!CzbHW=lw68!;7{)Pka9JO%uq$vwXi#)(2`ln=5MCAzbKnX;RZv(!qu5f>l z;}JQ?REDFmtPMw+cxZu$VHw+(15q5`}d1sZ~x7@UY7U-+PB&%EuYu9aX%=oS=acC@#XN$8LWv1j1K=;(+| z$6g9TYwCo|D-sn~6U3ntD>9>j{L^x{E(@TdthRzj0uynqN7=+E3hD z8W}+@x3VChmVyv!AdfBIA#hn(XM4DRNJX8Au_P?s%qPQ7i$wSOJ8~Cjxs>IL;mX5dsd@1hlK06O6&1*=zTiO0f;r6%ET~n2gc3^Zh{I_QGIi z$#3io`G>!!uG({;0@*#dq{d_q7gRAoC#MdHV5J!^nO9)Xm8I%%b=}OwHbC<5tzr4D?^k@E%cT3NOOk6Oh3>%~@xRZ+G5s6L?g?0t*CtMb% zL9yd!!qt<>5FU-V&!CXfS~Mkfqz?=QG5y)a+3JEAKWwq%(M-jRnMy(V<$|EFs*#ko zU_E)qrSLOMaL4OHCk|6b+@~+!F6w^77t6Tud6BU^_3CTVlP|t3{owVwivcC^cj8{z z$+pu&k9Y5xvU2y~avYTUC2g8m4iG}#HeMR8r4A3VzlfrApP}q=q3d8}58!|om z3KnisoPo$S4p|K`!tR{Kn6<3miH?#Jwncv6JSR%8~fe*X=(A zz;=LfA7gp&kw>K$KkP02sOw#K|28cG8i>H0txea@`fnA3pF6Ps!SN^b#+ev-z0OCoLCwp*Puaf^<^JM6{8g0k*ARPM#Y{7~p%6 zS7N$3`|CqSHbnN86W4l$C+2d-5B+pjr>EcTAwB%`bHaOnvFqiJ`$);lw@UfD&nkIS z@%&pKc*ic>u(JfmOvOiTn&YM~HtGC>%f&T|aFTw1>% zbL6Ng#=*PJnt83foo8?1U$9PAcDk=`r~B`JVs>l7d;TA9O8?QTYj@E~ip5^}xc7q` zb1%H#BQR{*l9l;;FSL}Q1{We3CCpl3^35(XIlFtBIW+qB>_Pnj2E?#6861+B9Sh&{ z82=`o>5mT34ql|jS)NZuzA1i2g9+z(#B&$yyJ(D@v10uzy#|D_3NOC@@k8=<=JzkW zB>igFLytbD$XvNuikvXr2FFW}Vd#xl9W=3_Qx`AK-G2IJDe?nb3WuzeykNaKtZux~ zCw;I<9~xzH@x+0vtKRJ7q7kCf>CMib-e%X3NRxM3o++&MQ)AM+HKx4nrwQ}02#ZI2 zzHH4K8jmEb_4Wf@A9>ubdbF}ncBOP*m#&J3AAVT+)vtSxmHGvT+hUvf1aG3AdG$?S zZE@Wvaf>$Y&fRh5Tf{0`PY{CG_X1AQ#Wz}kcICtb}@O??&HyO)@;FlftlSuKD+$6 zH{NB?A7idRVhh{NB`(GG`vsZ&-{7VA^P6vR1{U(3Mp%k{^C`|1?7HkM4|ID}^W+OJ zd;ZTq-tvF;wYUB8PxQPVeB?0={|0%7iw<{kkgl)wcf3zNu>G)~ot%Gu^Or(abmH83 z-xHG4uu1vYbARm2TWy@caPsQH(t7`3m+nt>&R+Vptqgehv}soJ{Wo4h`Cs9^|2|Tz c<=4Od7tjYaT7P^Fa(o29JkQ%3m*>W%aEoi{E#c*&%=rqQId_PUUgqm3p7xR$^7f^ortOGcSH>WpF* zY>=WCte0Y!ZjpXHI&freJuanhIVxrEJSnAaIAT;@cguLxCF(NuHks5D866{%c0vpt z2k@B-kn6Z-=3O!w-9TL`PTe+1+f-weyXTCQwf%&o+I3p`^}rE1XN}Z9JXx|y&zExd zT{a%yNL>~a8P5WMU#m&_lS`;njq^rG$jomaPFPX>T=LreZ>g$JeF$s#tmsICS#eE+ zIkbPEs`~UtDQgeBowRb-3z3U9K1#Uf5=4<(B~8y5t>fFbJuhSuDKGKvi?9H49N&0ZJanxnyDs}qS{7dd8`R*_Wa)g z-ec4>0q}81?!kKFnfJ+LvztYn=WnT@qTQ#prAHdHunNt{dQ$VfhynNU zENvwdBAzYec3Iu6l?8|D1Hxyncsg~%KB;KiF{3$ZGA^mRX1qtI6d^NK{C9(2T6bH@ zIeH5kf5YgjI~tSm_4ka5k2OlemTvo9;o*j?^19n6D*#Hx$vX@XYqxq-1He9eUsDL6 zGnQF8V&cflKae~;y~xeggdc^O2U*Qj|67!N^ifQXS8<114!?xl!JlWyKMKCiO|1n&P1 z@Jmiyk_ygTl~gt7jiy|+>Pb^|L92!} zYC#6Ea=N z5p!4nvVf0UzD<(ekHpy%(x}?=CVZ{uYrpTBv*%nEH0nMk#hRrafy^bp`Xq(rmy@%T z6FFD|1ZQU*Fz)0EKp-+`va|+zYtk+Okmk?FJ6&9y$pKd31oDHk@`;s##|Q${x-n~W z_g$#89G?I9pPd4v(RJrdjO{a}m!d{ViK}+~GQgisBz*vpAYYtmFo|5SQ3{#1?4_cb zt7}-3N^5VZE6+o->TXi(xT(-OH?p_3#N=HVbk;%{n4gRQSzI`n<2uHGF~JHE(4(rp zpweTFRC$3kJa&!`#YeC02>)i~TP3ION>i_CO`_NCmQoI!l?os~>+uypuY!0@o+5JT z@pnjyUs2t^+JFcm(LjAjaej zYqYmgkY`{pr7hb+Ja(k3P@daVa^hw~((1iRE+Qc&F>~jO`NPfrOu_clT`95duH-&- zsq`%dw2)BQu0P}f&~KO4-Xu2T3KT@K(QmZOFCYs=57HN`boDKJe%b_#QH5`YU0W9bwDke`kKS#-ZEF?PRU!>Mrp1*$;0 zjJavpC1q|uk;Ww40tvQ-Bcv=&TYpLt_UK-=6X0)S&EI%9id_y5u;QFnlUIF;yh0+# z&eDRM0lbrwnAi_S0K@?J-;)4{6I`XUhz*wH?(0vgO^2!CJZX{9sd=s$+fQUQVD5Dw z!Kz}s6oK;vKLrWX>o1E`Y%0Kq4@A%YU_i-<+k}B>FhGrJ^AU3O8bbCq);s~82+M;L zU^o>u0RDp$Ad}z#_vr-pl(DLsDlak#*VJ%Fl(zY3;$dL0nMh=QGjP7~$0T8cS}nkz zf`B^_KVuecvMs5-dB6DBbuBbstJ-vkoH2QOTN^fGc@hRm02rMl;roLRF$BI|TwFkc zk{nTCXMDGVGbAlCBMp-f|J^R%ubZ^rgt1xvV-YYH555S=KX}nNal>)Rd(4b?3y)sA z47WpNXVjXUZO6&Q!xP}Mwm9=(J4^sX2fDky5Ytz(GKdcdzB@mU(@mC6X}>IDF1YT% z$pn7ST)UUbp>V~=uT#;n>$fB3tR9fO`Gizi(_pe67#-962qe7z{`*qcH>-`_b_kT- zv2lJn??8Puw4X{(-c=VIxJYh(f$VlzTX?{oBLIK^9MQLNuu`BvvlQY8ak5h~V1f)c z9l!>`$GMI?-0Q+E4piC>nLH;YzoQ9WzYl}u6RCxZAHtQ1MkWpauW|=u_bv2hl&1= zhqo`@W6kg4_sZaRm;i{FqteQXJVL?=#U>Tk-cpyKYR=kqW?LazA0yJM}xF=f3s&)IQ7?zYW zXN72##i45E^Zac`(dR!!i6Fzn+lPBNt-2f5b{TjtWGyk3<0uEuEIWP;UDw-G4oxks zxk5P`4^l{GKDR-11VB0nzAQXfTMKgv%qn2_%UCc8hzHd}Yk<)bT~IDNd*%BR@V1$) zl(y}JQTW_-(xB+nm-7!boJ7#2GNhZs=dEVV7k<$JTI^t$02Vpd7CjhuA73gybcvE@ zFXz4xyC8_AP87m@1SY0Z=JG96g3k>dIe}Zvybd6{B|(Oh(gte*{**LzK2@E)LnG_8 zl)ZX4MOTcafP`exZ4JP4;=Y(prAHfS_{?SGAd-d75rBEJV9w4^JTn^h)qE;HkDz?) z8Wq-Dz3fyx_MMV5Y80yXjNY|&`hMUKj!qFjFX&uP%Ep@Uto=wk)%p9*lQR}a>}=t; z^#kh^0o(}7Ub72eEFq=oASQtQGeiVq7UBQp*boq(Oa(h@DHmGo6%g1&1V0NzMwgGF z%9Gb=^i=|xE65uz0_|sr6q&*izR z@GOpn91k*foSX~D7%!ube8Qwp{i7e8fJeIbkY)n>^#I>z{H)KA_1r6h_LQB~XoGT! zSpzTtC$hJ<=RtLt1b{D^U%^jzEWMPu&}+*J)$&W3RSXUl2cf)>vbT~L08XbKkWsw2PH1kUsM{RY5qP5|aC=5EW? za#A{#p1Q}bNQC{F(W66c7=;BD7IIi$?2p6?hQ%LflI0vf`uJQoVEa2j-voq z23;n!xj5rp?&6&h#Um(X{%T#t?$S~4o6j59Z4eI>>iz2PrG;RSgNon8IW}OIz^=9!Rj*f69NEHj@$v^C0KpocafSQJ z-*Eyhi!g3}HS@*o5g{}f8p{hQ6?NBX>}{g-#p}t=bf5rTkfaB`?Q|1kaYYQtT)C6n zhInI4_B^)E6M%E2wKcg01XJOWtDG5XijLi&@NZW8vD@AP3?J|HwDfGBw>m*U&t6zY zERwaqTZT^i!LT~k_xcM6E}V;x00Cv!{GDtb$yz=r{q7fw6S}{~#E2Eg3(k;K)^eDCfLd&xjb-eh}c$ z8UY4lf$V<53acn>>1MLC5<$=)3BvUNuxPZ1M_nPTD_=ualSWEt{tyJ*GGrl9WuGIc zS{N*}WCHAv!9^im4KJ#a-Oz&&0C6B&5a{X`D6F6e9bv>v8Zu_O6I;PvSiwWx9_|?U zCSAHnPxOA~Uqx5an*9?P{E}1m)ya!CkPQZHhe6oc*|Buq3b>H5Fr%2!U()c|D{yWu zyPr12MF)OF@krtCD^B00z@!Xu&CP3wD6V{<80B?0C>XH;n$6bI?lbXDL4GiD`KYS# zOa_n50QjvF033uz5NYYxOW-NgYQ`*O6&+7SCvJ;uDDTka#*e&1{<^BES!ZNy(#0?V-5!79U)moqX+bcX5(2L#Ys)dR z2K`5xsf$Iv!;&ZhHH1@e7mC8KMzcb;2Sex23eU7mbKpy35E!O3z|&Bk-FLO zIzhB4R1943#(b62bjwsfzcDULzWPT_-pn)krk5fyCc< zxv&WLlY3UT?gMbIueuxrcgSoi{g`zFd zs4WBmxd$#?|IjP=@3kOcC$Kd#Hf|e#_$ZDdSE{afF|dn4v3pLOZ==jd!I%zs5b# zTaO^P;@o}8-gKCKzpz9X6os~kMIeBs+ z!y0?&68vu&mN7lpGB^+lS6~Z2nml)qCLj)wkoHdVkSl%BkW)N?U;4~-W=FJsj%_}?6|MX+>YU|rpWrG$d;D&+gcM;gc@ zAQ+mjl(U%jq!~$~--CAqW#*&dcbX!x<1MUc1UXj zA_TykU1zion2ZgyLw<=N5>T3RwJeq?b9U4U@MA%OvzK?%WO(BDOJaCR)2?H-CBvzCFY*2O~Wv<)L zKrzSy?6@yyi6ES{ZXXlU`ihiJ+woIAZ@qU9;8dFrBfx90zq64=5F0)EpJapaa6EGJ z_2<q%v}YaX2zz~E(ts!5v18)yL+N1a+y-Fzf#HCz^hyUNbVoury#=xYqYu8 z#N{3k1Z}e*54Z(@#DH;wtXXQ9^$r{WnS}c4n7R&XYb>euyIX~RbNh&*emp6^^ zCR?~00?FSn0lcmYWpL4DX-+(LUS0+8F{DE6QI2@!m!g95n6@CHHQ;4otSn*SL#NE6 zVzh7=%fQJCOXM|UV-u6MQ&5i9fm0Th<0jmEPaT87S`Hp06VN^h0M{C1B_nWVZ9D`^ zP+(HFa7j+BWJgVX^z@b0$V5hyW#3OI9(ntSM&e-2>kX{kt-6&V{#bgP@HMGcY$Mfo z+iCdZZ^$P&jPGIVl0VD8vpW&4r?l=4L~ODZ0oM*-yZZQ%y*_b}iD1_wR{9cVEfdz@ zo0K89U}W$O5MU3?22%KliGl#mCZiW_`jXeU7~`&wwvq{T>GrTpz#|cJ*G)wJDsB!R z`A<>|8psdjhqp-r2WV>rv>0Yvg#9wE{y|)nu;#RpAvp=R6ghGt0AEK=h%?1pbz@7r zHv%DmZk7__TmTxJm_lW+F6>a_y*VsGt1D`+Q$$vtOdJ!;;If7bVsm%a5igu4&Rj0E z-;t|twx-t7XU^W(jX;azu;yEG>XwLSws^L(P3><<0B4UyP+}$^ZpF^|+@5BPTU{l4 z_=)Z^0o}3lVP*kWz#t%`WHbo)jBI5KXfDn2UrT&0dcq7?z$UVS)d2jq(^P=UChr~? zLfKo6P$D{`mGI9=^H#whE1HAPfZ$!c+oA06Wt92%*;O%NEaJQbZl(g-?Hd-!&*gh$ z5;(nNK%vQLl(X|Bz<1S+p`A2Sch2r79ZQ~Rur_O*D{c>b*##*uf4_`;cH?TsGJfUm z?||*ojB)p8o^5pzMke6N*yTIs7t~;t|KvS&AXtP2Ah5Jf07P~_g7u{NYbavWmmpxE zOhDVIsxDi??h4*nz>EFl9h=x}wN2K34wQ*sOcUBJ0I$8-OyJ+)vx!n?Ea6}-6Uao% z&k}AV6Tv+k*%d5>ueY0G;$GHzVaT7X-k3*a9pDe#Wfw!`mbQevbzS@W)d;S{FEH0@^LuSd_?O(ov9A zqVNh*6>-|fV6`Lw#AJQDRS;0z1_4;J5L;Fpx!7v8idBjrol|`h1=lc6mvOyKC28(j z$4#RIEXU%U=h_zdG68Tw%`E^fXg#ofjxqjCpSN3y0o{AZ1oVnpxRGOka6!Q(pM!t_ zWTUfyHc8;Wb8jBiY$_^B2l!burPv>~N`hQ3Fc4humB9rKLzN5yT37&Fh0xxlFJ}r@ zRaDd1f&ji&b`DlFdpYOyd{3*ZR;JEi2&Q?1VCD~ z0v=#!`B=0cW|3k*U!I^GBXr^*gCVk@p%Z6{;2V#nylmv&DBy(Om4l!h2W(Lc4haet zYrpswJMYVsgD`{7U0dQWfBSPQL2Q{31hga_vBU=*(Cn?pbc;*McJq6-VoNOaBqC0Q zlzz?$2`g3G;6s3w@EU2F+ z$e}W%xvcHQTwp;;&uYbYxuS|HVO8dGzAn2j7QL&{St7r8NNf^Yq1@$dwXef17)Q?` zl!f&PM~u-1xnyAbT#;XDwkXSkp$)^Z1tg?o6az2X+n!Nzyp4m>5Cho7 zxS{cuf8YYS`E$-~)nf4nATkMJ+hOw83n^#)KFUGRO`W}r{Gwv{Z_O;n#?peXv50e- z5aEVUWT9m&2h~==XN$HN&=18nTMKaW3!Z z;MRHoTGXj4cd>G`EUs|BErSRb8Z~}82VZV6vvRcnz9j(={BCJ(PDx8PQvnvV@(y1m z+sx8{rx`>>y7)}C`W^WnR&%}#6Y=0R2%ytV#C2Cac7VF`ER>=!6}cK+cj zkOnF^a)t0;NU%N-37}UCSK^Ly0LEQJn7J3M;39dVqJ}$>V@3;0U?K!?I#M9bg1b*b zDrZH!Hp{}U3M8bmVu<9x#m66R=r}pLdvbi?=g7i}AV?lMX%599Hi>(5*-g8^3$Y<9 zc2gK*#+IYneAExB{q>sn-Td5HxgiFRhai7V-E!<${*gw?J9=H?4p*T-UaOA-hDlH= z?SyuD!Zj2k%fYsGLR=9)i_jAAMUJdOdqB1Qgx=LSI*R%s5_^Wy*X{)nqVhD<0&lG! zg@SM`uSjuEo<*DwU$|ag*A{Uq14S7ugRil|@K0eK9++=Dv_7P0Bqx#gvo-e%EkCodX`T&btb+1G(+O!fk3m+C#Jc`WWGOT3+43YrR zyCnGd-BgAuwUD;mO(*kw~Pa|n7pt8?rvfdsvXA>H!7JBxt=gAdIA9U zI<_<>oJE``qdhDLaBSMWkT7Q@#xaJ>KKW3L*$uIUtN2KKIm8(j!aiSUy}aIC?NL2@AO?J;_4l^~$@wkB@&cVsbm5FXCvWyLS*7!gbu zFMN1;3ysR$e3TN=cyn-dCx7^0jt8+{Eg-+NT=Gp-iQNSDD3lZkd>-M^g#Q~yj&AO< zi|9B3hzY*QnH+N%coxo-xV6k#m{1Dyz8{NNHIB4aK#ubVFlI-1^2%? z4mgzX|S?%K5-Blx%I{KP*zg9397T!IN*BWz74TU4i( z7?c%WWQYVvGZL(DpC!yvxFu-0MgP8-`~)hyNaPt44~=vtAM8*=;}04*iNdh|(-S+) zQdVq5V{ZfZnB-K^uy9)hKVbzRHis8QSeOu@{r3E&ac@8DW)7h!RJZBt53=T?aC8$f z%gVx{)nJP`83bR5rKP|qb=?8V$8Pdm#68ovbPm8hiAcuS;PHrYmoA^CY(91}mxJf= zn_4gUN~Bh@6?BROeWh&8zLqsiXnqlbv(pe?5%jEdSr9%a)>FOEl=B8DIlE5_%~YVU zQMT5DVX&H|kMxJUP17CmX~7Db>*i70VZs-I^5E0!s ztBB0Na5F3DED^YuJB7*1whI4i#o3RIn0TA%EN3IUHa&dFCUzIH+i9f&w-oM6?BdW9 z)oO-@x<*I9epsOs6Y#*m>x1uSZEUXkOFSN(o+B8&JrP)=?Tb&(qR6m7@PaumS8cM44C+Q%%r*On&5Wy z=^?C21WzZQ0Ej* zcsHptN7qLmlTV+1v%jf()}Hg%bI_W|J9b0s5jUKfmfes+X-NS4$pJJJ?O^=FZU(FU zdO`-+QUSN(NZD9Y#5%Req(soTuU(VIp3O%slIC;fRvIH3jpbrK- zyB!7}&vVB6bJ2DHR**~T_uc$Mb?yh4J|T7bcx#}7Bln*}XRlg>sLljv5*KeG3;1yP z<+5~?2+=8o8w)}ICkH_o0hE0wn{fNFLkF}2+9ImmXDO^|0-n>aNt1)Z$Rje2!8aU4 zWhKBE0R84Dik7&&p^9rHq}q4BCH7`2L~Gw(%0=-=6!!+mFkxy;BE& zsq98mFn;cB3uR!|zKeHM2QD?GqzP$=1q1M6n@*9yBF6v^DQow^=kWj(5HX;R z6M+F+GFX^!&b|v2SWu2tT(O@*hU=>V`+}34M>4lQUEtj|4am|Wd=3V1p2vgRvMac5SaA=Sal8pg(d z^1@lb>b+P0{&Dwi*a2tq&_mMqI(k0$JKfH?ZqFf{ExVgZ9XBr${I3i+hvvSu=Ptd%T6+s&ZW{CSQ$(MUm|xeP9^(&@;t5ub7L4S*Zi zLa9hq{c}p7>GljZ|E<|iSF|Ejd(MgYVctefgRyoJ}^s4l|59}nBx<1xjdfURDOX)rzxCg{!@2|g`wfBN>Md9P7!xi-vzEGhM zM08Z-;sqq6GbpGH){`%GlevXQLt@A~Ih(?u?Qyfd73IBymp6kZTalhj5CK9&tHcY7 zE=h|wQ#$tkpo_~ugS1Kt!ME!Z7j49Q&QoB~2qvGCh)w~{BIby9n?hNF%EmATl)d+Y zR)xZAP)tfXCy##|q<93oOvHDte~<(JH3iaBdj73?T(~Vks1PT= zKml|Nntq&W#?DwKT$LSM2A;((q|?C5;B)LlJ;YvsponV5!mr8o`~#J5@2-zM#$R&z zVZfJ5=r=y@FHIxD4!T}1;?kg~MO)S*BO;`yYG&UxB9;dxlORinNkD}S68mzigMF)T zL1uU!yA1{WI)Lv`rUDZ9bDY_*+u>)5XPD~FK_dUX)4cU%znrN!KACytw%5ErT6~9QRU62Uw++r_@<-BasYnz!AqJ< z6i1H!A!LflVxaP%J5Gk|Rvc_odCTh_)4_3)3+Tb)!{255lP#5 z^8Cwx`^bkop0E7vqi#L0=ZF6<#E)|D4(guIzaYKv_Pd-Fz4OOGmci+}&RkL*xJ;@; zS2P(rPmu$H;o$zwNH9#s&oAwd)e3G0;M=--Q0m4blyjs}i*%FS&yByk`fllzAArtAKQ&2b!ModuX0<*%x zf`1y6pC4?!SfH(8VS#giKN#-IZio-1Z8<8y&)#>D)6Tn}MJ8negZF#C)~EN&fB#r| z>ZRADAN|0Rn)qiPFy`PAK9pCs;C8NRn!s&!G{tDo2OrSgEu;U_z%y(Bvi^*K>&dO4QB{}rDKHYnj;{>8uXLXlku|)#?f+I zh&kqFW`7=imN|Pu$8q zdpJdfMQC!chLDcFzh_bgtf4=dp?Vb7AOq2Hc~F22ivZq=%#ixB*1KVyAZ7g_$~}Hd z%X7ezEG4c#e6&wL(-2lPX#Vpu_}r@bSr7gPPtX409aPE=5(f4ZV#MFj{Zsl+SvW5T zEepg3kuRfDNHH^(BbfP$0Bt^aFi#qQ35)nygvk=_#?%zP{!@|VL{6SZXd%PpG-!}q zXxW-WX0Q70v8Q@Faln1@g_jZc&=|9D7GG@qMI2r5-Gbl#{*ThTHZE)lk3alGk9W9O z8yKCMm%8)RMV>_Fp7WXmvO#q_2$L2Tp@n|qJ7 zbjAOjdmWcQLAvT4GIQl}WDZ=oAU0fNw}hGj3o2u#!Xo@=Fj@nHxMJlBSRue+pnh=B zEg-DzgW%%_Lu^r01z|xZZCfpXzo~(>YGAFzmK(8P!}^!r`ydc=_!PN)pQm4Wy<4CD zX3|qHza|Q;U+e)>m3m^3Cfy!3dh+=fd*hoo@8PoPKfHod<5%z7&y&mMB4&TRHWx%- z(%PYDnt7rtYGvoZK3G_WDfe{Ho)ARnG*+L|viv7O;&1ZjS@>K$!xUBqf`wS37)yFh(hVhrXqEJ|X>R36T1x2g97FsN=z%(KT9BL6Eok;BzWwH>2Xq3@G9V3v; zkMIZ4O-)>4j2cZ$jEY8MOf)Ju!3oOv5F+a05{+o0Te9fge$TaJ|C#uox<1J-ce(f8 z_uA+CdEd)>wMWlVjFMZ4@pqphw|@f0!`ELO9LcHLN?A?;Vq8X)HbMJIY#e7^>S9sa zcx9pLy(e{y1}@3O(u>NdU<<=Gm}CuE$dilmw>0gnyYl-miZU381L#D|xlIS>A~0 z?8fWEato%?TZZ8dsd()7YrMDf-hJoyyV?;{ODM|;kBTwC)u>%NeqjP)92KA+93dz( zy~zfX4G+OAVKm;h5b4h$W)v@~ZTNB1`JV0{?mYRYWx#J0&6v_4K>*~3rTR;~a_x~0 z)D!!_z$V%CO$`LIRxbRq6xLEq+Uy4`$LYdmADFIoRaVPxOmA20{7J6COz5{4e1|srRu&*$drEeW)+0S4kO*;Agtz?HqZy?%=7D)}mGPsf$8Huz9M` zNoM%@Ph(Szymi?s7H_mDJ4k*sL;*V9WMv}0N1&Z$;^JnTWAF!OqR9>{gz3Ammg;ry zIed82g`QiD-4Dhg5NU#ON`>7I;0Pw;8eyCeXa{rs_u%|L&=|g+M=v&Cyxr&7fBcxk zUC{__FU2!+0S7dGmeyd>2*xyiM)pD`7*p~4% z+t>5(Wy8&}akM?IyD~7ev7__m`a>OOO1AIapXu4KEq11HJ;q!PtIMHha2#(!C7Y0F z$xtU+Y$0h*7t^IX*#DAJvU3>R5Hl>u<8&6g8gA;d$?8Z7+G&6Tm>1C20-$(OM5H@f z(3Qs-(<*i8bE|Z7=2i)!r7}7}zYZ4V#yus#QeaV_uY<;dh0VYo4O%cgVp`^W4i!6t z*0VV)*RUW3$XZ;+)R8fCN^fHDNwzF?oH121HEFtly)2SLc;0{}5l96r)Fl8*;F^d^ z+<Qb!+B_~JZIn! z4Zf4g2NwWD>)500H7w80AY>|zyQKuE6Tm| z#5h9w)O{XwV-7p^>sUHH+0UXCGReTeQHWqEeyz%m6$!-nx}nc%6I#PjRl}bCmJ<0y zo9cKQ^wCi0c>Ay?Den_U!)A|xc82GNx2)p&n!j1Ua2PyK;u0zZWyqSa&$7q?gK5q1 zNCiDzwLlKgC79%rX{Ju=K_jg6RC7FsdG~4slDY&HcRO$^JDBmGsWes$lw~2s!vg;Q z=KmD}CL+&a;V|dTj`PMPdq}eH>87>Rdj6$<>+kP~{Nw#k!}aJyk2kTpDNWwXhdu-C zA=;7%#`?+D+i3*U2D+k_mVbcK9Fi=9#Cj*&+anwfefh@K#3Ou&2(So0#xZDFLx#!5 z8QiD0*r#pP8zm7SgnjR)R2|j^=*XvlqQfvlpV~d~%D=)1l?* zrXz=frESSy+eWX|(htYCr0R(c=G2;(lXEnSPRpZmx68 z?2}L&fA*qe7r7U z=k%gty=pMgi|d^re1Bn0xP}cVeQMkEkATRy>GE>1FYlHUxWesEn~+916Z80oVyWtm z?y5P=gOclsGitTjHSr&(&KL(9hkMXnOJ9=!D^;Nu>Rl`|L3nO^%d17*r5$C?t=nEa6k0YR0_(R36B963-jzYZ?aK#*^pdBQ|KGR4t}DhosW;t>#|@j zz5S6?!LLZTPirFAILRFY!!pAZ+=r;u?|#(5YBxI7^=(sZF)TdX=V-IIy4H#h_LNv= zUZCD6`&4AvwoNz99@6N5(ILkW90{QfKy8-TS4!b`fb=XY;jFOKu1v{lOa^ku%hVzQfpF~*Puh~~pab84^qiR(2(g1$^ ziDK2+TdBMine52uI-jMV$#B9$fk@Nm%-nN1^{WNPXW)GL!$6u^STID>Bk;!}$PAD~ zu;jtlK9gFnqI~pofGZNYw$`om=tFk<X!^kNfa9x}4)*q$e!o_J}T?7A{}jWk3&x3ctO6c#OWR-wbLRWFY2vdZx586d?H ztTuZt3J37se7RZlI=A5`QPQLM|H# zvKwZ?KM%~?BEEd25pn6Pa-a!`DGLBwR+*v~dxHg`nk3G&tTsep1T&N=93eYXa{SnW zO8kJ!5Vl)<2P9K;_>aBf!=6D%y-brUJQ}gU8O)qt@X-qHN_r>D;xxWy{&!tZ^sQ*)=kuwPSxseIU)%OL4X9{M%n(7-1XnYfldANer_ zAH4Ol)76%V)R)L_J!Ux5pc%HSmra$x4E5CnwR>F!Q$9ow5^6}xof=`+LuA>VL5se` z9Q0@TOG|s)xpyi%%Aoz6l(38KVUe*^c2yqz<-azn!hFVESP{6zB>w7(2?pq0`9fwq zteqe^$v7d*Ohjw`XR~E5vm=}la=CL5d2}b6;zMT~WmN>9ga7J+%6&Ia``ygn%KOw& zy{qYTt*w6UhZwdKW4faL8NGC(ixw?IN7@Niub8krNeKv#HUlupWSB$4&LAnX2>M8L z=!;`hP%~_6zw*9WW6u=N21JVYg6NB&QxhB7q@Eg}WY!X#v%V^J#zIEe*&Vvlm;5Fg zesgvQ>{{04-g(=aJ`-k5=Zh25EZ9C{~&avXB57>TxNzPV%;_iPjGmTsI zJ-X8~Z_g?l+(B|5fE)D~`vi9Z#lZ#{R@YnIq89A|3zoDtu1XmB`B))mzEq(-KHOGm zdma)zWEn!{CIeJk8g(T*Rv`%3FR{x#?AB^D^!#SCNK_+4s95FHMzj<)5^z z;wrMOGVA{YcMmxFeFqywpkeDpq7SoKR9OTRos17sH2Uvfr6+sWTC8nTUnaG(8z)6v}{%Oo=a{g-nQ&FS3okHSFCKJmBy zVI=OiXM^czVd$Rq1kROdah2bZt<)FHO1nHi;smT!p1ku_M!Kc@%8UMo$Yiz+_ESJ4 z#zRq}S~88(%&1+;4mjom(u{KUn7X@;ZAFU#UG>%C)++fpt3(g<>{i<+v7O6;9&p_0iP0j+ z?*dYgE*f!{+QNQz;6k5=-uP_d?-k7`e=I34G$$GCwoULBERpAdMvN)D7oe9YpP?Uy zXsV(~!fLuNoeedtD&h!?qK5AA*$H9rQS$}uNCkFEvj_oT(JKziVFKjfmDS_|R4{Di zU~Xj}I(>~qTTrZ9{DE7x6HUVY&>3SOtBuBTWLu8kc zkH1}`{*80CHfl7C0PW2c-=2gLKwfBNvUH#b+Xo%VrD0!IpWQZ}Q8FbHh z?#1273D4^u5c@yoQm}D215UG~FNe$9{hEDXH(vTVWFdQ@ab;At*OEW`tm=@Qq4XAMbZLHlhhowzdn(Afy=-|ZVf!+&jny(1_WUG znJ{Qx_^i*mlrJ@Exi<2i{F?L7l|ww3y;*~bdcfIA_cSI&TmwF_x~wrV-k;M49wLTl z%eEjNF130<;d4=&{Uy`*$;5))5&Q3M&09DX?Db?1h_^_ti7;yqWmF+)1lta z*q@3qFa_%Fl1XlD%#tuVzUI>7I-OFEAV%|s`au8nW=hfY=s|C3LQt)^T1HL0T7Ky= zw|$lm_Nv$P1!%%#!KCBr`m4q^0=>2h>kB>kb3FU4CGZv;@vjo8e&?$afu=e=1!eBs z2=$*H9}~IA92fPsnqj&loET^Uhh)#nk+Y5Hm2{}VarQDg`~SeIFO%YL_9`3%Zt}25 z*_=K6)*YhRl z%C1g%W~^P9!hh6yj&#a{!0@fq-Kmqx##L`WHiXHO#fbnq3)lh=CWFFbm4hwk6|m!} z7ZU?=xkcvJy$ckbhi6>yfEu2ZiCN3QAqw4guwRPg(yVZRz(!B7>v2_~b~$ z(nz|&UKI`Jr$d8-(|r$p8xteYnL76%NaR`gzgPu~ORm{8+T8?qP7IgWE@>MLIY7%^yrXS#AFae1Nx&dRQyq*J?O!h127ovove!-&n(FFUqNo{*p#6D z#R1PXoe?hd-1>T?7JuXp@0^SR7h`%u-EK-jC{bv8CqJJ2%Gw?*_ra1#pm*ZvxD{V`Zh? zt4YH78|e4`KIHX3l@xQh?eU&PLx@jK{ET^xS-lRIu2#zFFY3R3U8@#8tLfWpBgm<| z=dz0cORS&%CuvpL2GY(C@r3)r<6jm9?5B7EzC)x^1e2t6lN^y0cM`V(r=TwvsBUj< z0SQ;xMo1HIk=h~3LrYrR?oKl2dfYDSe+6Xo8%f3d)!bdMAR665d4|(|x9oy+k~MN8 zz0%)so&|g=2C?BLFUu71fDaBl{0_#HBeqP7|FO)L~ck7l+P&)qkcm9K5ESnKT% zSPWuG_0a{a)L=sIn@eVKx z40HxDyxDVIeg2fuVGgyg_2!@70rB?1Nv9X#xICQ|+5~Z9QMt)e-NrH3`aGCYVQPT8 z0*Kvha)Uej=J#%7yTj-TMCl*dctTDp2x`$Q@GLXanKh}WATyQg<3?;5kq1lZ2M{v8 zdZz_%osf2hsVn1NF@#<{q}af~YYagr z8JFbR?oKa;YW;7QkUizrO7vu%Z-zToLA5z;P7@wewP%>wK4E83w)-oXb=f?m>jJEQ z4_)HNxT^Y3BY~%YWw&hAVZZ@3%Vbh)F>dUnK<8#HR&_iIm)JhIr>5|`VYWDJANb!j zJo`x#K&>*%r^Mr@ZuzDG^v2@6o}Cw|0sR3O0}kNz9>}%Qg;rU5X7Ez>qfN*^Qrj%> zjF-jh>FNNHMWlXCcwsz&QJ`m@gM_luS6ueU;qTytb7)}{wLV;7C(HlaKN}?V6eYcz zY`vE(S3`ydHZaH}u3(ZF0+UZ^o!039(XiqaPrn!3@J$d(vHkh7S0kr;p95C$lXRu8aTElE72IN*TJe!!*{!66Qc@puoqA z_6=Y(;QW2wJG+dbCwhR6YD3Mfd>_kT5%(ByZA5QbxPP@U%N6s16B@T&v1dxSrMbIn z5`wwh-L32I4x93?;ZB#0McwNjmmXrM2-u1F15)t zwVDGYP<-2B<*vp=uBeCuR zqss4{;Sr+L8JjTrowc#dCD-akWuJ7Yq)+4i;m*?Lc-+2Y!1jj`CbPewEryJX=RC`ACpaLF1FL!jM5&2*A=S6e(Lx=uw=B6$_Bk1OMD9&1L zzJ$5w_Nm>@;;!;Mg#H=~&0M=)Pd!oe@U$GYee_U4Y1$RsoZc;vOejNk9~n1aC|oUj zfcY||+=kv57@57@hz&`(1OZz^Db_!y@UnwUwJiaNKkr*iF9)Qqqy%X8tBM=Q#_ukv z!yvIzFzqRO{*34D$BT`7H#>P?<6Wg5$ zCUoX8EtGw1yXRYl#e1crP?%#19Z&x0y`0+Fc1*)sqsbi){J6^BE1&0w*Eb3$S|pJw?==`T0z^heF!CzU9)$F&)C4*A?W@+9T1A*YK1-$RJ!!|*4c>- zkcz?4wj>q&tAN~m7I=#|C+QYuG_h#rvG$ygn79@O&b7{fAoIuV=~sn%5LxuCDC(u( zxf(rrlXK|F2@G6Jt}&`bN>6wjyL;$ohW zb{?Q$q2+a|xI)VkYLe7rN55_yGQ^#~x;e?Wv_fk3Be}Rq7lIzl0XEGAMsV#@fG#%E z-4L}L%cM|sGQ%%^SfVrmx+dy#P2>Ih%Y4mNLk!%=oknv&3cdMTXjDo2GRxU&it-~= zpXh21U)zNjJQkIRj_dF`UZTWfplF-D=IVf%wS!?ZA0(C!wN|As=epoWe}|E~l@s1V zI7Unq)jb>m&fau$CcM+@>!=+VB?lK#@I6%Lt8@M&;RbU`&Y=Xn9dyBp+|ok7^xk1( zW@KNt?@6KS^Y-kjW{Qmt8V63lj5z%)9$3VX_)( zPqlw~;j`NMLCG`0VHpnNCKXfi+%T)}U@so`%?BNcr~&3%x=HM~N8R###U@yV0csY2 zzNb$sn%f>!5HOWQ*!=f=z3a}QR;k;AWF87pX;)ecT%Q@#xhe&3kW4cpicufD;TQMA zbS-Z?%qy}o9xcBf$f|z!Xt?Y=UGEJEWx?s{`cjkxxuX-Pf5iz#h!-qxq56TpWaBGy*6Hn%YAOB;k5I;&N+z@kUuPQS$_6M!qIJ;i*?H)F2zq`$7F`OF)p~YbJjw0I0+-_W z^T=_b*jagV{X} zUKf49%0b^nv?)m|ZAa~p3rC^zQ}E5Xp2F>iUu0I{7h?7^lGuWz#+0QgMoLWz^9ZDv+vv>XdHb0P$4sjI*pIte4V&P ze!EBU!aU|rh8I^Z+{UO0jDRXebMF_I)Ur}|f8Y+HAsLcptBKS>2xe2MyDLjL1sHBx z1Vx^=VRqzhXzrC(_|I201~;XIC+9i;T8FpbbE%n0@{}|>6JY56(Ga1~Fsvi{m`SXG z=NCM<*V7Sf?r(%V_dA2BRr$vQ11-WU!9@_CG|O772~bTxvg`IkbRGAT$)Xj0pzoT> zGwQr9j5y!t73l241T^}3ePt9eKuz5ffPF$SMV&Hthu#CBclWOTy0FQOXBU#Yu%FO; ze|EXi9$R9w9Ilvndwdx3*8S-pvd>q0dP10Xha2`du9CT8-?8w;BtLvw6PI$qcnh&I zS+D_39j|{rMvFqO3?I;u#B=;$((zkgp|iII$kfI^c{e(%7w+@HapqJyS%~RlA;lQ%H=0dD|S{)GzzQ#2w4BhT;rdax-@?a~g3@pmq{{j}3Ln7iLa1 zoOk%*K5o)RYxO5o);6r17$%ae)36y!Qey!xWFth~gM?(?f1L!m0D28N-vr0iVfTE{ zd6$iE*T$X1@#wcCd)rQ72aU|;$fvst*~^#wN+OwCb>cSD9r9;dbZ$>1nPQCb2~`JA zZ+=$!Mxu7WaJ{Ge1X7dPElZh8zC<4L`$hqV-Mn>ORQ6&_o?iM)m}gV(QMb?O>xTy~ zzaFj;b76K~c{CVawt(EUJ+p!RxX{Z#r@82J$d%(11$A~t$w`bZLnN0TK6v}$a;ifp zi>S==_mni*&vsM-1?y%&Nb?NAX8bg7#H{YbR_K9GT?5{?;d07w#jv7N+iw;ElGx-j z=up$*`$!n%H26vZbnC;#o8VL8_{ijSh0me%jPS)7)5jQb+Ka=%7HujTYPfCRz|Oej zV`^mhI^98;Wz>RiOknAapI(1tXKQhKLB(Hjzi+_WE(%wV-Bka2)LW=v70FG@LqfMS zecj!~E!~QFGu`*Arob5R*!oRW^Uw={avq4%!FlBH%2-yLH?@sW)5H6%Ckk1D*l!b3bZm8m<>i zzNIqkli&2-zaF3^potiVT%=#+@H3=g(cx9-alQ8mvM)K!3u!N~SmIor(Al&9Y}4Qz zR~lrOeysv7tYUNtv{93wDS?kHxV;Gb!9e1=0?)fT?And?;CrOd>(Q)apO&@K~apDT@&PIQ_%|5Y61aE}3u#&gp{O=9# zqchwUhc|2(TvHThSO$*jM9E+>QqZMWhtwZpmv^OsV>I`e~FFG2>=rYmb* zK@&MdGKL?Ic*};9iZMLzezTVk*I}|?6Y>U(Gdf6os^w;*qzmY$8C*CuMKz-Q;KqE2 z2`4C9%~4s%b4|DcFy^qjyN5V|q3Dn?uutmE)D_j$w$eZeIzECD)|K+4wPnlnXT-39 zFgb`zyq2fKMDT@&dI_t>8h(7ygA$nLcV8oAKBx1r0n-Ri&q}OK)eoMYt<>1R#8~~B zPf|l-z>gEj8z^+aDq(>62Cu_H$y0l4>%6}RoVBNw&15r9;YPa_+Va>bUFxOUixC{N zP%((9WO(mLr?*$B5h4OHmwU@mV$ys^X_oC?et1c2SOwoI83|6-FlkFQ8mU|p; zvjDcgPsYxNy|?}j@1__ZpZX~3N-+3eIBHMt_O}ys=LgXqI6fCF+P5)C>cCWOrwHq% z@axwn760@4yVimfA_m$9!3p3o^GWuxEC?C7(fs6EeNq%VNPd|R)&-cc!QfXA+De~E zv^Rq86iNMdMl_KRB-V`d#wBb9#&jHfsK-$GW964;h~aU5nJ%4Fgh3P6VEju{hVLP> zxfb7D9>cy&1=X>GYL%6BG-vlY9cf zU}*@QBe8n(tKaGN?Prq(OEVhmG6-sKYlHWL84T+SUc--38OWTP(7{+tTl|yr=;v8I z+`Olq`Tb!7c1Zy5q}p`L0HWjgYvWZgTuIapyUo|j`DpQiCZG-a)z8W5tUsfvTF`?; zB3|dbR4PnG`5JZfc@!PY?CsyAEHAF&Wmjm#zV{5nd;d*fNSlhW{AZm0EBsfp#3bKz zvXqd%-a|I=Pi4F16#(>Xi$5^7E&L3z2%!|0i+%if%`Ivd08ca{KqG~zOkMX-I@G#s z)al%}W8f3f9YDL%AIHuB8cXMJ@p!3-$6i%_N{E|{Md+CA6M1V!Q?D4#XF#r1illfe znON&=#gqb3_^X zbijF9g>QU|>XPwWpViy*4|XxndQFiNH=_H+fiXW?(V)AAksp|qpl|n#!Hs!nh}IV6 z|NClKNkUhmW)r7Ba=f^$=$#}HLlhAc|C#l63%?`WFd~txF}-py(5Cd|dLv#3$sr@Q z-Rr`3ZAMvF=V-vzdJNhdh!e{5(&?)IM~oM#aDidOVFg^RmSytY=ZNPn{H4JQUpp?~ z<#i`M-lW!KH{`qxChg^deLPuAKb!T4M@OknU)YQY!`$Yb6NgJoq%3J~<}8@1uRn&brgL#(?Kd zhf^>L!cL1ID0&kl2f9f_A34R4qqQ${klW z6lL*0ajL6~5cQB_>phm-FTYy(>rF1Mgj?vM$M-9WuI{I+%HL(5bhj^1(wWapQ`^W@ zbZqKjgUV5O-s1sh&Q_T-X}l?U8ab)N?9H*1%%oREgxc_9I&=K6$g5@MALS@uinTyP zZ+-Yv7XIh1&+mBKHOB(3;G1<)FG4ZagwgQK<<|^n|49!dl4e-UTf1tZ& zMuy6v3gX*tBhC}q!BX5m#~k*c+~=IS_fwo$!a$8WN|WCT8=JHkV9(f2f}daisuqMr zY!Qt1A2H&p7D*DQ3s@F01P3beWBZ>6W&*^L1e{e0-iivaet$jfDM8Gs^kc&_$JhMD zWuWJMAr+D1_45XhWZtS=!JNJg_RpFHLnUs0Py`-VT4IRSH8%g3!sKvl2h3lZ0hGx7 zEWMubw`S+J%qRkoS~Ap>#!gKNL&nLK*uH z`!J!={!hnsw5pxgRb1Xaa&HbWMBB%+2b{DES9zK4skfflK$~lotJ>VrM1XphstYad z6VLam)W024;+twYMhZ#dCn!=Ic*jcxNWDAc&7T?hNqni}nHemeJ}gp-xI6)*ees>h zvW$PX{ZhGcQktvZ#k*=10K3T=H#k_C`ys6MfH*&NWo%ya{gYCVpvV={{SB4p-fagI zi4Vs_BeR(*GpXtUh1D2F_}Kn#N{i!(WtH<~6f8I=@;&63HW5Kb9AC%Tos3Oy!pS*Y z<@5}uaLV`YdDUA!5+w%9f`P3RLFxtJ z6oGN6T#tbS(5%03DCuKmQ1@UQ;V_wepCMa|L7xN_jz&O)PE6DiTs4zs!@>=#FLz=I zUV-#7>TUq=OG;#S#w=uCaTgZ&5b z@N~YYtidCyPnd5YKQl9R5~TRG8}8{PER=&V^!ZT}%y)^d>x0FO4qgg$#u3~&62Rz$ zLMs-|rJ5#Hm#~32wp;!{SX?d>ckp+UZ@oc>!yK?6n0k@<5@G&Rf?2o>_G4VWD!--w6Ct_f( z^uPCsBlMFgG^;`2$me7#n501|&WXjl(oRtucSokkoP@C2128w^& zx|@5A>6EEtF0}qdygZERPY2IyOn%u+Kw)qIT%(&SRy~-0O$^tp=GF?eWtuZPHumYa zqmcuy%9}8j-`B(ukQ6Eo-%X7;u2(-E(Xt8FEC#baZh?`4W1WqWe$w$ZYdE=cJb_v6 zDYTL0^Rh$?5#(B_p_Cns9_bxdKlS#z0%PcRIG>EoXEuqjEV*}ET2$99YA*pdDcMxB z$ZuJHs09yV?U16wl+_z5dIdON7*1{1)liuElb*;eWq4$REy?Z4j+THP81LBW16+Q{ z{P25iD9Bwc)^^qn4v=}YiW$k0JJ_cf*r(BF`(;A}aefA3UU=;SP@~wvF&x#?bojc?6<-|+G5#IFVe=7(*uK{Au>eD1yZH5L%ot@ z;Co}IRF_Zr)a<^ew*gC%f-uPCm5J2G`DY@QXaIHC>3uG9u2mMAiLKWwXz7PtbD0If z8-{R}jJ4T;F@Ab^3ME+%S>dDZ!G&xRJ|*>0@=|^L6+xU0?#FbwUh)C2+h;)??vca7 zCnBYZM&iM9uMUL!e5!E*01Z?K6$aeCzIG3B&+sqzb-ujnc%^am6I{cTaRkpTzm2-Q zs=Kx}J3VP+52t@Y-x!-Fp~8)^gI9C{oTN<St_63u z!#^^)V>sDi8quNFnD0_q#j6U+6e;4!&TMbDImc7BqdnSJ1#FXEr}79+eha5)m=D;L zkh~P)p(}iuiw>T&Gt<>u!SmZ)pNFg1@T)BqgoF92Ncep?RI; z@tSu&H~COeBkDgrx*snR1-ty7z~%c=2_mD$g~Xn%_ilWV_sr`Em^A7gq)n4dyB%dYi{ME-ezRR?e2U0`b&irIP+*Ct+n z;?JGcR_&dtmg$CrvJ&qvQ>@0vCAXO1y=*3bXY%*2Rb<9>rfe=ci>>)KD6k@GHHx z?L9VlqPI!?OcH=2l2&RY{bABnyQcX5xgMYJ4>y`_d9q>$Mz66fml@w|G?n zdhg?3pdR;4{!ML&0lRhh9D8g6ohqEWa?|J=CR7qV86__!=2JfHt^FB`fvgKisGuN{ z@kX9n&C~EyHwBw|&YQYUvER3zhcMnwB~$;Vn;-CF6nuyPTG9sF8Rl>TP8mll3BMDF zZj0kg#lDn+Hy2oy4Xarc4p(K7<#hQIHm+iB!u=Kdu=-WaWXzJdKKbc~{nbfFkHmN8 zcfnb`9kh!sUt_+}H1_@~Sjw>vUceyLCzm|8|jIC;7l$}cjRpLq7k>c4k$q1pe=|V}iS`}j!^st4Zm};<$rxzz+nm3@pM4LX~1djigl~jOk58cBo(x)p{N;mFWmw8JBlk($?@mylJ&DirZ(&F}})-&QjPRR~->lFoG z5#|Mby z0V?MivO6%S8OKaFOPKvlSrx>P$*NKyfXghKJ=}+@aDf>Yi*>TP7+>&E40GSK`~(V3$J!xI8#F zt8q*Lv)!EHj$Ty^*_n0WVP49raNe<=AXEIOvCrJc`tY(|Ul6{5Ylj`}jHX{L>J^`i zGGVEw1B159#ZkStN4#4MI=JZGzIL;I`CBSj=O!%wEM*0-Yqgh97gh*6r9p8zp>Ec{Vw=1>c+pKF& zoH%=*%AmYPl;_W7q0=W7T+iAvC%JnRixgkcMzcx-g(o*HYBJ=v@DB#3JVmi7Un*Fa6l3Tr0L|v+WZ$b1?%RycFVH`Z3{KdW@GF$tqz!> z%;;X`1b}Tr**v28y@fRxYYRfP zSVnh#*_B_wWl3jZ&Ri*ej6_fAXXiNH6uIn(khm~?Hq1zrj|!DqYDpN^`Q<9X|1##a zk*`FWYJ|bb(j;IcY9FsC!XAO&MW)6Lg5BXd0<1fev@f{Mx7XHNNG&lohIXu`pg{1g zZxdC&3cfYQ0xwqqJ#?%C6rbax4j;6n6awQfM31q%P92}$ETzjp@d~f+e)dk}z4{Aa zCz9Rx{jIl9jsZu=Lkd>&+;zPaMmW!1!8*yO-kCIbW`f768krbu%#!t_I#q%@{)}pw zLYQCU{hsI26FK>hI|Xvii#Q{We@2=>wPAeUCj{R^@K{Hsw>JdC&h$)tBIp8^Csu3O zbcY3vLkEIzI76SfME<3}mTE=0q+}3u>Ar{X7~_s`e$Pzu&Q3`aVdcT$;TP=uE;uU> z^T>AatE}z+Y6lRZ3uu>qQ}d}_jRu1k7uu+ee*Pwn>10qdji$*Huuk<^*v&mz2m5R$nTaWRQ*+)?ca3^Ja@LAtj|T zDz_DUGK83&kLn`dC@H1Zt&6`8)2ONeU$wtG=8FMEEAv+TS@7B#O1Y;qIy@Po*3Z~SmN=^zWe1V}Z6TFVasha3Z1LVbKzL$nL z3Z&Bg!R)E|m5muX6)8nFv^7M9ANZt1an!;vw1`~n?t&3x?)A!TEN*1F=RJclUbMxt z5kXIr6B`5Euh%xceD{;I!a%!&_4h~v8M@JxrgN%xlq5uh1lPhoZv7cp>gR(4hexD2 zM5it{<=B7;x8=bkch9D|e|p~gTMVcht=J4VU0y%CcDi$wI?nHuniOT2AR3-|czDJf z(+T~iBUR8!>G^Pvy<2(axkMX)7icwZngjEncliwDN>g=u^_BdK>Y5l?m5UU|fQ8~f zto?^qvquMEA^rSM#AD1}*$j2sSv;#F-upSOk{*M|Nu&5vH91%L!Z(aA)L_SR^0Mwk zWrVUyS`o98D%aL;qC*NfN}LqM12bx~T-oPNp{&-8BtFPhJt5P;TZBt7_L z^C-o>*jnYGdMp#u$tA&SHRQ#1uPZdq9pmU&8YE=h=t541dXbr62Hg3+3ps^N>_k0< ziA_Fc9h@ttOU%U6NZAtB%ToQsqryvZ7lQw!ct~gsb+_Z(s{$x6u4L(-Dv8Z|`g7AI zO#oDe-zoBR7|^Z(E#?Rq1*a$nQ~f+ECz%B}{fhL~eaBfX<%aZDOiYSc5LLfEW3$A0 zDTW#1{Xq}^^?V6o2(YX^Hrv+b<8)CZluGvhR zu=C*=8g=@sqn%SB?9bnKJ7D+WrtG>(Q(vVG9q4_pa*9UPgR>}NC$EDVRdn<#xsD3$ za)ea*RhLI7f4r6u8-}o6ao`)%yQoFbqv;#zEH)CQ-47Wss`yBm64fw z6es$9*RmYb&lHnO2Hiek6R+p=`4RVn<{tk85#ZEjO+JigkZ$;SnT30g@|vFPq3kCi zEXGgzc;VDlHNKx1GKNx&1U^ynQ(*iQSIwqt6rC&-d-dgKv856CP{Qvz2AUg=Ev&6b zSHg|#oJI+{d8E<(oO4E~Pd)nZd3>f+fGEUkqg}wz=x}dIXV^wVGZ7X@0wB`wZXJw% z*@PjcbSx7Zi>68N{*g%ift^)ActiIs&or3GnEi7#f32jdTeVNp?BnI z2|R2@#H{)0Xq3Ow8sN`tgn*~Lf}$q8YC{S+0t9DqSj=yZmcAkYMq@^go49rjH#Gxh zXwykh_>V@&PknZp&w=c7to3;V2QxqkaSGC@$BM7&dGpkN@q5vA|5i$4MS8dcmGCtg za+UJThQd=BftZfr{TuWcf_0EfW4^jF?ZY^88#uEyJw3q=teEWhWnkapO>o7scS&SjkV3P+CX12#Ff;7gy^9l3Jc>VUT;(OHY?gKwxS z3^zZ-?=-64gjyF1c>gV-b(}`+oQ`Emy6)cCODsSXxHK~hri(SFOB0Ltwn}we*AWzT zE*DrTWm4kPOdMM>f_e`OJ(4yWIP)*H&zk%=;G*F^vfrIYODf4^ zxV@L6cCB5c5%boECU_LSUAL6+h;|S{MwLR86|a-d7pB)Esynr^fR|_0h39mIIWY~a z#=J)BlK$sen(2PeX`0f1MkTgJa_tDQNIMiqnZHAFvS4 zn?D|qD!Ebm^6o2C|%>3!u+$jB3b2&sF zf}%%zz8MFjM8Ux~Cr6V@xl5E6S;bkaz9Ogj#o68@(sx_aSIf1`MX`2C7BaViR{N2c zyQ8*cEyzpLTO#j;H~XukR(bm=HU+&6m$uh*MKH_PN|z4T8k_UBR%ba+-5B1%P0Q3i z`ey%`fIEK><1aU#Xu;iy6r@jcDG?pSSqq?wx}V(Y-aMi>w#)6I3`q z803`uFfX;00-jMAO}$Q^#2X>mk79`2)yT6gH<$E&xOY7$Z2Lg5)_r>A*Wael7Z^gJ z1)acZmkq2;@J0f@t;S+zV#Zl5S(^W=qf0rWz===otFbwA0SAWT?{sQjJ?o};)F|O7 zr>StrNmL5X5tB#XK~Y-!kXs1a6o(a+b9U|6CXPUMqoE*%lkrS(1!n)9?yKtcejvF{ zY`zeNBR!`Z{x=tsrbEnRv$#&SP30M;@TX3rZchW~PIJ$vJZY0yr7khtWMkyavQ#Rq zaELlXV>mT#9@-`>Cype*iC~|jll6?KNQ|%ZrOy}Ngk=DGl~oNEzhT=h68efef!cw% zfVnQ=WZ5yksg!&#&*bq0D@%8$F3&Go&&cc?LccXGf7UOjFpoT+bD8;p6ydf;d$Zqv zjTlatCrpu0JdTZ<@4kzdQg;1S`rFE)bK40T(@z!AHj6D30%3H>M;}N^s@QiY`$>I(#i~`ik ztE<(w#F)<(?iQa4R=70sk^2KaM@4BFiySy`9QgxH#qn3m53dzF@U?OGTTA96hZMhK zUy_kO7CliDt|Lq-hz!V$H|Q^-aZaZP-i(AtxnZ}P z0Z`2A!j~9oKcaitz42mqNH>aThD6q^LxoUQ{z=?Bj%wCY$-yC&bw#H-o)W82&co9k zmTW}MmQ9a+I)o3Ze0bjXl1#xkW6N<2kHwG+=UJZl;dL5{1bht2*?eSA{`bP?orDXY zNR_TH_{|$}l&FihGCXP^xT1KSah`_A>I3n!t#YZfb4r_6pg%nvu^A|x2~ZZUljRe5J_ZI+)yWfnv(fy`DLc~pNW zP7;^}9I-5-tiN8lI=7DeTp(HhC`?f3%Q?*bW&-_cO=${{q5neKV8C3qwLVbPNLPZu zY{8e-3S*RMH>*jET;a!Dpf@e~O(^J5_ny^E{f-b+$;r{@}Ksmp$z!QJ)Kw;4V zPSXjC&{S&71?!}~buxwr#SsiyfaBs7(lgrN+wiIgEw4}wU{i^f2# zn${2)BrM!uB61n(?T=9U6PnlspbvrM=;v2|^&io3h9~gbo-1Tq8s45}k^#iiKGBm2 zz0Jys+$01ApsJqXzH5|;r!^uIjANK^yztw+M_?96O8~OI%f(Ion{gW8{YE(p;P4CM zX@EoMM*V`vF$U&`Gw045qFg3dmDp8UhcLawiGE-VG>`n(iOm-$VlA{2n+A!wkH2*w zK^+Zo$QNp?rrQ#cSQMrOv;e3H_|lht^Vkb|W_-|;K_hC5QY|;Re2+wPU^auk7{Dc@zy4yoerxRmOuxrV#$;j${O=v?mz>@0MnHN0mnfz{xo+buubpX zLzi%s=HY(GgDr#FIv;{)i-sdG8zdvZN_#HRpaC#OfV+OSm?f5H15j{{FNxxT!Ue#@YG`Iq$z-+Nv?Q90v*hM&@b#5`fb5fS7Tw9X5 z64-4W-)lUe61tx6)1c-+3^!sK1~cEgI+frf2u{m)ffB8~z2mI`7_>WZeXld<+qLtA z!K6AS#8m*t7X(|zg55aGaaUwD5{6NLvdsAuuAcZSSP$Ml&I6AYqYc2ms4L(>1Mq>Q z0l1oD?3Pb`&RC8H;KgwXAT{#14e(lCe+kSLCr+Fkeo=xm#5O}GJ)8tl12EAHXnyd# zwLK5lgfhSC~UspDR%*&U{+T$CkXkQI@#) zd~~&pdK<&aNpuuQ8Y165bi{oN$OvGco4(R9BGbH!JKh}7GD>9E>Dsrx9+Uc*=Oag1 zyaYDlc8zxl%or$y+FbyP;N6y^0hr(tg$=;Gv2)@?kz$M#O;gFbXaJau3g4dySgt)| z!ADKJ_S(nu49YelR3tg3wv7SCp?Z)FgC?P61bLkCc5RP_l|)+@$b5s+wf3=R0=(}4 zO;eVM^jg!SWtsBO-h$a96YmN)WlE@9x60pD#Q|#ZJ+pLx<_Im zG+nAV#?W?Ar#q8}^!77pIVqBAzafEk*_EY$64qb}N7umM;AaFQ;kzKNSCrK-mXCi2N-tzdAW3WfLy)Yrok53$M3 zWUuSO9n=reku7W+CyI=Mz+cSnBd`xVAsz@ObQEe-2Eqw{CK*-2+zfY|qR~cyB#&bZ zt@!1LyfsE4`}qZWs^p(@{sj3UD%%j4H*TA|(GS2C3=*0-7A1)6?LBY5i5sIDh5|DM zn=3OZgA`q)ewn5gnoj2FrpHV((6{^Wn8`S1!78!47nv?g;J{)h#cyLykO@KUf~Hdk zMH4D=Ou?WcPZ*j-+c)dUm0;>KZM)$|##0#6oqFpt3>!%F6GF{+o$JAsNl-0NjVGnf zjK7;mDP3QxhJ?Pb0+aES(&_mTP$i=^3oHoFPC{l+o0hT!kiX}vRNXCJBHe=-m@C8( z%5;tEwF4YyfVXAB_o91_s0@TY*1U_JN3de<=#YP>Mck;hO6 z9yzvpp&e`hb{E0k@6h}KG~~)g&GP!@`V@_Z7iTCrV+cv=o#PMv>AygiKlI(B6q3UV zan6!65^f?lxq)cT`9cZ2K3eUZDCvzlHD}@_BFM53gbviSh7XYJ);Fge!u)K>hPNnT zM0U-VK<(Rz>Uoq2KjJ5T44=ef`|xM~{Qraw_U}+7B9fgajgdH8B@RS{ef?x;`xIPl zEX35cYt*GhRJu&AzV@}(>3{WC{{wnhD0O8rUhr7o-$y30Tlw6}hzl#sB-6xZ1k+fK zflY_j6?~d7tI~KG9LwWDS3HeN@Ge}(g`O^`<;B#t43y)5pP)q@2fPFZfX7_`FAp{V zw{KsNeSMIO0M8v#;GN@r&wmd+^Re$Q6I17iK1v~Iq0K#23wWWjR_eiI2_s5Yp4fL{ zrDdFu*(8Sgz$c~*hAs_s0&DlYonWH`iO>8AZCKytHZrpBqg(yR5dtMbctYVvKl*(o zqYm4j8_Yx@5}7#4$SepDFU~B0G6P)+X@N=Q*e`oASgDi@`Z_P!+>cD5Jj9Lma+Y8+{7{;RW#jyO`t;>D5 z0)8+U8+D^rNj3m@;6f|`ynD0=HxfjhV09mR0&brg1I8abBGu$WR_i)Ud`c8Sit?SP z#G4_1ouu&`0sPu}NIR^@a)bD@m8$BRt*a>6wh&jx*2K)N{zzOHv*&uOtlwqe8?Yzw z^rnz(B@}&He-^6%&tB|{8|M1&_-8|zs)YNf<}WFJ9mp_tl7A~PE?YEdI<^eM#AKFX zI-<6(2yx{K5!xjbt(Z*5DS}JM^}Es59M1~yb^x`<^oU@;H4w*YV15|1&)E@B@&uS@ z)4{>b)-*UWfWuM^o^eq?3PYpX0wgn!V#eahzeK)uJp(r01CiFggCqP}?}84Q zTm|Y_&4U5sl<_a^+G`HQ2$AgA!tV=-x?fswpM+x=0<#3}M0=L#4cM2K8|;=+p2UZqWz_%m6Hd#>eRzWT^8 zD;S>B`CS6kcwa0V^VMaCR=FiFvH6$xV>0fF6M7XBc{<6r+Hj<6Tx>5oqpolSi^!?7 z-P2MRWfjI4{UiFC)SAAw1y2~K+OC<<5*y;0kfiKRMzy>@dbwmoRzpMNnS$wFeJ%{w zlt|k#uKTl7V@G1i;NGJx2W8n-XZ5|wv1WeOE`i1PhpnMY{CXyM)V=98SWOt+;r^U7f{ zyUiMP3;HEmDwbzs@)gwpjN1S=oB&hcokQwe*m=U8;R)vepl04rI}$n74yd%{r7qm! z7BoAQpk~>BNT~}j&Zl5sOj8pto;;#moU4wx$?=3!kV4fHq0rhDIKpV4X;TFdL z?0nQ(T5jEo88{LxB8B&c7AUcB(hIv|(|n$Ix|%P8wpVWM&#xRXL7c}As3o?X31LW7QE5W1OcWFRuJ7tdg1qL10|aR41{KkXaLNY7>Yi=eX;Hu0Ng7kq%J`0cM&=RH$whNFY7~C*k9EJaP5$NsHvj zNQ@vqrim&S>!)Q@W}-&!8`O9_t!^ZAlFid=UF(aCOaKq+b=QU2iy~B*s#^V#Oj)kX z%4k+ed3XmwDZ9Scs7XPq02+oUl*-mOt`*{3*ACkP z>WL$2H0%`j&P25}Ya#2L=R||VmEkb6HoI|!;~vM3eIpnTwI+W2v12(jCdLo?KVL}S z^RNvt?*b591{m$taOlhyi}C|7{DQw_-35@iF$%mhz>Mif>V$Q55;AUavy-lkuj*Bl zs3y@ISAYhFSSHrZZ?*C}6%y8DnTUyWE4KcMLcC@2Dr0zq2}1t@_~nahH(Pj3t6`H> zIiGxG}7h4N?{w&A zjgOj&o~LEvec9vhn2;7TqVXhiLLJxE&}D|Lr^1zbWkSbd^UaOjXX>Ve-7`n}jvC5j zuSbcP3-k5RH2_2XGU3gZkhLAN(VS$aCtqv2QeVNboc|RVlSCyCOLCE6aATgqa1i@D zkI|zEv=~MN|MPL`x3kUiBQSrob^-i5i|EMZECHy0<>x4HA7G`WDWOY1<2|%kC)qxU zN+XUx)l6I(!ZP6gsI`AzFft`NNuwISyra!!{l1_&hLYWMOoA8sNkJ zoZc}OwF}_PnJ49NAJi;2DDW;(rpqHH7$z$4Tsx*u;eU6_SMGXRx1uBP9am^e5)UEXz z7^S-N!qGK= zXK4WQhA3Kp62%siFpn_wbnTQlIu^#kOpVfC5EdF(e0O45z+c|{3 zFehBfe3+<&mCO2mHKMF_w(9?pO&H#fr*buCrm5%p_5?X~Fi(9I!)6+Q;z1fQTKmtu=e(Ma+(ZOwjwz5_3`bdlC89jW*QFQBtf`&=S_j6t=Ie(({Qd~s8&LS<;tSwP4%r=oY35jp2B5hMAY1{zdlcywBpMAv zqDxc*{CxttOclsSf%);4Kh0YpPx1Llm7uUJK4Jtg)dGg~da=fZXaMNHRGq{7MyArZ z#=2<*Qyweg$w_cU&dh|oo_WCJHlh*k?XT1)@9!^82Bd0ga(tEkD?31@^zsT^W#NI) zKIA!TO6tXgC|iVU_jS)d<+e~3rV@5s&KVO`HUPKf4dYkGNFmLZxg%G;ueV`}GZ%?*I5aa>Q=VAO@P6u0?QJpkY%EB#k1(&DdWHd@+}_nBl($3D=%aCSjUHN2G|+{ zBO_9O&F+L!XMJw#%)kr{_wegki-h(u#Fhco@`|TK-u@25J&a$iRT)d^&n!(S+Y)>K zmxtRM)j!Z5V+6RH{+WGuF3J&5vH|eh0MimcI0E|4V62`|BF2dn6Xcm{h~A*UIN7O| z!NW^flQJAUli|1jVPcfv(m#Ir0SP-A4U+pUbQ%=}(jq{WU*U7z}C?`N&Dwm?E zOPsC}3uPQsDy|v~8Hh?D_FG#LWld;Del*fQK|S=!EPsHcj9wBnta$X}y6#_Em&Gs? zY*->B%~T93$&3Eew%kOs!kvtfrx=>#3u4!k`9bje+*uPD{{kOZuR# z-lZjAQGNi1T>!<|!lg|IBv-&2IV&6iy(^Tx=+Jt}feucbp0Ji*KT84e7p{3o>z<6Z zbaEIEI^kiIzKA9k`Z!Sw2C%KOe}@v^L+qtF6s93S8@~d%!O8(Ng2ZRcvF=;vLZk@Z z6BhxPs${RKZjFrb#=J5Smt0Ye36=bP`!!q4w5dS6IzUtPSDK&8>tXw22)uJ7 z+LLHdF#;TLmBuaWyR-x>Y8&9N3jlG0!U*s?K#`zehD2hjLe<2BpIE|MIz=kcMtEYa z5_yMds1gE`FI!0r^U->?EU`7B&@@e}ZmobaRdZ!7#6=VLtJ~NNkzi$nKyoJ~@KmJN zs@16fS{nds)n67Dn2b6?fTLpbmstw2?}+dGD2xF8w!ID-TMhk2%?Wl6o3w?7Q`WMG zY5{x?b2$xCQ|itEzv}{b7+^b@B?f}>eM!T&0sf2z^r!!5CIs|UP#Ga93-@g0 z`SQA1rUvG~8l}3Pk$NDIm^foUX}N0>Q!``7!9*?E%##Z;xzrmS13Y>6p&n$Jw!nOm z&H_m8===3KuG;{w=n?=$icy{tEdl3BdXAi!ayVQ5GnA}#W-f`rT{DxCw_3KC_rc|jj;s~^!vwDTs~rN4 zAsk=oL`S9k;A`V@8SV_$qBvGaMLLWu&kzv_7~yKE5n;?;@khpA_l%fe3h`urmRFClO z1eQuw zT#6-tcaI`X6B+d;TE&}@?8M(~qa5wBG#?}^)t9@K$d!O$p4=#ZP~%FL0D1d+wP>K< zE5hWqJ?4tGJPuAZ4r1#DhIcl`cvTGgpl~EGy55Z2607#WwnZi5gtC1>U+PrjQHjsF zKDH0_K%R%a4REYet{2pSfdOJhTX}G!%ToL(SSLDpYh+={^dghhY>T1NeFuZ9Xl1gY zhGe2#__f>t9c>?fEw*cXG1>n9Ld9mFGG&eBtH3N!49_R-=&$M$Kx-(>4hz`@01a98 zTE=OB-w6sK;VI#5NrK`oaFUvA$&*HUwt06hPB~PCEHj{G;jgb#7XAw3u~p;HK+jf^ z^O_E0pa$2Z(jrqaAfp_o?&(%00Z9`Tf>ltD38X6Z3&{5>(W3Our4D83K!6XKOh4?> z`W5nVI~?<)nX@=EQC04za!O%2Cr`(R2qDW;TbFV=>w&S)Qgs=-ph4(?vy!~lrFE(O z%9TiKTqbkevtA%mTOh#XlxJeU6Ryn7_|$HR49pM71|Yek*X8JOi~1Ga1@Q1W>34zU zcmh-uOUp}T2_XCcymJ)d4PpLTTzrpFa;(pd4S~4yVhMRM^dd5bhdqSpWGt>elU)h^ zIiX};N`R4T9w)fTdbW9ZPWS8=l9wx8_xR_r!j{tN*eh)L*DXW?@Nd`8 zsi6S~KLGC>N=(T8dP0rAg!fG3o#>gSNdJKyu?kenvc;w07d7Cv^15xx-$D# zp;{;Go*{2|)->AUS_Z-U;M}ci)IEbuIX9Ra$gmJ~_8NxDAXqkr!Eq2-;xqhXTAxag ze;)_GoKf54(GY(DqHXF1Odz+mVdNgE{i6xS)*cxn$gU9V`ktL}ETQaMF0_MhB5MPx zj{w`pszG1>}X-=K8f zH<-rK&hReY6r?Z^L~eXZO{}{>Br}LKwO0wu55p2b#;^_0`T;Pk-dwSqZGd_h(5p2l zi~zp_2oPMhgbs=SFd1o*N&!bg>e85*u>MRerlATYzlp?@>%@}>HE*a+0Uk@Nhpm)i z;F_W0$h5duC`1t@J<+3U)qg+b_4CQ3ot5fL#Y%k&@DrFV!AqTpvNIbYeCJ{aSDHjj z`${IJBzA#;#j$Fd;ZU_)k4HdwYFm$QEo|E#D^&=wP%!{hD07BMyAsctO-gPfjYG;T zh{$CEGJ~2q+ci*i97GGC9)W_v5zw==I4sW(z~O#;7xw{a zp4rLQ#UmggQK@L1h*vs6$Phk%Ku}>Q*ycN~a~k`%^4t(JB17ze?wWitAKhZuk*x^B z%5^cnxryqXsV`xT-reE z-KXt{{@dqYY>UKHbr>&8*&0)sv&00furG)F zEjy@&n57QdkTPWq%=j0ws|+>E8hL!79M3X+fq6o00Fobo>I#@}7r^YXC|AG<)e~Ug zI{^~=G6-@2G6X&@K^i57Xc4WGv_0#bti`lvAPA*fn%EYg%GF4RP}eoowYPMmC{wYm z6s;o{Pn43wfv;>r84P?EmgzVcH8x`2J0`pNqAmesSHOxatkMFyZ*h)*swY4SM?l{J zu;JE(Qf_-9VcTWt{WnHU`C^e%DCs1( zO}5Yn?gcd(EK@)G=$L1)D`VK|r5*u+=8)9<#yn&~Tqd>>SVwRqquLW<@D0GlF>vii z#y)-cpA^oP*q$~Ez^ksn8&4$CjovR6qmzrH}FYTn_&5;Os z2A@u^`>k(HW*iSSf=WN4U73M<#f@YHc&^b)yW6JHSz##}0Mn48C%|ho?!gSa8wmUr z0wV80@@oopXeI5Boks>e7+yFgW&V5))hr(;~~`Z$$>w5*n8_!!4Z zkkxfAm%JFasxdp_#gk87+qlbhQbI+pjvbq#irN_C^dvP7S0b*24A++Nz3oiIxsQ4B zo~ExK7CghWH6p`0etjckcybR+mI9P%)3tuJi1GTYWJp zOoPpF%52Fn7!*R>0%KAO#2V7K*WBaF$f5}WA6=zkZOl?YWW6`}=_3-GwEUy2;vH&tPf%&1( zoEymo;MQORus%5O-8Fl37Vj6zK55PM{YOwVY&s6drAXBMkxXu?yWX&Y# z?me-__0#4|2NDx*Ih01ZEdp5LvLo6wCH^gNp$cOyk$GUM@1GuY@OD*AjCE0RqICi9 za==93y0*A?8a>?A_cm?It+_@yHqaap!`3+}Ok8CIAO5GL#LkW#E_K5&VbpqL5}p~H zaXYK^ps0p^quxg9SRfqJZ0?an7n=YmlwBfO- z>gy+`oZZZ^xLp9FyTyzfSq&3-$MEC=rzN53=oKUJT8S3d*omghf|2fZ5`_YLv4u7} zl&yxrly8%l-$7d-^&0cXdWos8ow)_LlPd95VqM$JPVD}2MO-`%mNkE{Gbltz@QudA z=nP21rtX@nw>uAQNo@vn9bpIiv2n5TdcjLSm+Ql!{bhuqMZBDf7VkUQ*JQ zx;wjuu`ZCFD?{+81Wv8B5_SBo0NV?a!kFP!Ktr@mQeD4iD6f_Yjh&gO>J5Ogl7qt@ zE`-19-LepE`Fub;W{$<}0#Nkp^E^F?Dez99 z9{;SGbp#5BI1!~wR6$!}lb=(Sc=X3i&eGm$s1qd4k__b=VxI|S&$N{R(DH=f^gtk> zYELi*C})r-cgo~Ji7Qp-JGD(Lkt)Pls+?LUdoFdh1eXc-NUD~FG+xK1eYNhI|KOvZ zTm;wPUMm2Khtf7B^&>DlFGurQmdpJ3XTHysAFJE~4^llrmfmv>%%Ud*N;y5aey6~b z`ML&?Et6Tk(QqZY-4S^vco)MZf35@{=U^jo0m?+m^|`vp#fcZys+umlbe}LfBf$Va z^4t%9w#-ZrXsRmK?S%p<^n^oZE7g*#lNzK|W`>K4U&)$=V&EvY+#G$(D?1F}%tPow zI4V`5)a(5=tf77EOyzs*!DH+@yM?c|mrP=pu><3w)V~mRCcGLM9|3E8DGl5~IXL!5 z_5tn~{09h++X~5!t4Vz(H~Q`HWK1b@R^C${#ez)WUXirVvR<<~0@~SGo{yTvEdf-- zSpfG9AVn%cJSwg}#w}DRzx6bgesqf`%K-C6(g3IYz*Hu)6DZDds@=xD`zY;Tekxh(pU(TGo^0!H4B_w@Tj`cuoI2=xb6$YH zOS!Jw08E{Ag4S}nEUBrrIZYTFyNOT_`zhseUdzs$i?AhD`Xa?Q0Q~hD3)&Lfvxae9 z1|jGJs=f)1CQc6yk{u{nBR`&uO(ndgeeq$!5!1jpUTPnVOaT|I%@`{1@3efq!CZzQ zk<$OI8d%$khOY^#V+!3O&!2n*Mzn;{-NL8N8H=+4sJj5hMo+r{VjJK)MA1Dzn$MZryQ%iO-OoGO5PO40(E)l?^2-g>m-jE+gVl0S zWdt831UWW$1-ukBF7tgIY{(dNR4q7!>Y9FQ;?t)+S2j!i2c(cSNj?XnlIZHwzjCT9 zWDG6M(vxthuQHQ5lJF?xN8BBOdq6r1U_6o5odr-a`)*v01_1m36j#7R=1k_my~7*E zB_Pc$#2*MwCuBUHmADwD1dtj8NogoB0p@&xO(E*l0WH%-@1;JQ)B&p7(pZSCUb#jY za81)Mc9c4O7#AX;a^*-kl+ar#7Tc3u9Rwaqu5{n!bjUyfQ4_ADLbU_9Lt&Jbxs*2& z8fh|9rFf=CwheHAX{Z`h$*Y)WwjFa~cg{hgu06!_b{Coxj)PhSp^j{Wj6BsC*28!n z$28Y%ux#IDWc;eJp-^QuI;e&2Rfu)}rD4=YkB)$@(vq;aT>#b4;u4MASK!@1=Potm zQ&oF&?&0l{^^gV#ixNx*$$lhA?K+fs9T<&-6@+Vk%53O$=kh{#!M+@Zx(;b2OLkoS zz^OK*&fkJ_JT^y_0GWy(e>SC!>8sT_ne}(QC`7?C8EmgrhD+)>jz` zf&QpOlyYA@icdYND8x5Q z0XyP0s%cm%AS96XUT0A4AipKBNJN5@H`((5te|Jk94K4w8U(C^d^ODfmi#o2jmp6r zIGTfoCRT(as>MA1tMzdfj1SbC=b;fv( zdU+zQ`EYBNhP=c{I7)a6!4`;1K)6t=pxI_7Mh*LL`i2B5PhWF?TP=yM1bg_eXRFaXUNDR}}+O8{{ez`F-(kkNX%%u3>j zpqFllrhB2O5->CQ!E=)8g>O`ETR#Eh@}ZoD;JSlgCVP)-`7Pf9V;Za8Z_TsliEYw0 z`8ZkgmXpXf-{!VOb<_jWp=pCjUX`+J^PNzhQ+3;n#AbA7OZIh0nTtnAaRitm4P$Hv zo{Xy;g&5hFY^0}YDl<`a3Tjg@EYpZPAgNTRuGkmijSQADnM~jx02&qsRw4XSiM(fA zda`y1LHp;AF&T$2 zl}&)j*wFe3i&NhR8mA+Bu!~CXbtlAlVT>NRzO&?5z5*7QA9$4y&S zJRTlk92C!hVznSGh`aO4Iyl19f1~dQ-kM<@{(eKAl#Uxs_M~iKWC+9WCi9BJ-^v~L zJDe{;l@&ExM5&I;z&w!*(E0YV>CZwm0K4Thz=}(o4u~aycZ-2of^=e}_Iy(ai&(wImV!kF)66TWKy@yTslTd{#+ST-0Mm@wixO= z4o+kr>f6EgQVPr(7m_ym948w9cN}oS?7MGqHUJgZNcz|X@NQuyRgeb3=S_*{iN6p? zjg36JY1Y#`AfR`7pq0P4bVwkGEaNg6%s^2Y3b04_R!eavI~9AWnO){+9gYT)byt9t zeAKwG5NN6dV(Mf`CXzpH^BY|d*KmUDFj0C`%B4z7)j)1odVv>v^s^P4-|~K3TSP3k zvK6Dz=-8{`WO|yEqHSwOXfWAkI(})Mu6BaiyPiV&zK6(a=!KP)TikUf;R{Qh>Gu z9(MOZWq<1XjrYl6%&JoQDf0jv$FF?$zoEUo+aQfr>9mxWE2G;XRjW~!I&xe3I(u?9 zwz~i)C5EX=`TfqY3aPuc&GQlsPIyUe)o&k{={= zWWXqoRq_3rpNf7&Fg~D<>Np(#v(A9nmmHWmdcOl;)K)Ko30MLHAfrLWi{oA5vaXMp zX%~Q;+2{C5-Z@_Wzy4?Rpz-9>m+AX{=#$lFehzOj4gy565IF=>p1{dy8gNq9e1S(P zbF%IMuSQ^+EoWmtZZHg$wD_G1tdv){c<9r5t*E{n5}U4MP$|dX_&@zMdiB*;={Uol z0gwrJx)vccnA1K+25?FubB`&p1vUG?m=%I=lW_6Smx*ugBdv#O9=b;D4a=gLSB^7} zmy&ZH-<475pdyx0jfri}NUngXTW>S~w`4G=+6boyr*Gy?+bz5z%@|AZ1JG#1(GgG> z0nQm>2|e^w@dTLf3sDE+FE)v}PRu}cb4x}-)A?6b+&x!G7pCfRfy7_n-;p^`;$KU* zQeV|z3}qIgZ`Jr_IfHHa#~s^L-Yp}@zL|p`DLL0n{MVe_C@Uk!HU7jtg6x1*h9qIM z;8#OJshSk1MX863|FGe3$FQo|s!I%geuuTwX9VU8^g=s54tRGF9k>)Dz@ahEoOvaP z{Q^-Wa*&8S5R!DR)Ai_1KtkudKVK}-ECz1m2rGPcb+>@E=9jjhR`!Hru3V%zAW|^# zdxBNpdAd)4%M+SPp@EFru1%}>t!db?0JX=uJXmV`Tl@Y_S`L)PJQ+GwOuttaPqMWu zlN|$P31Aqn0yQ1W=(1I)P~G*QO9FxUW7vXzBVAn@j{`p3=aVPT=V7?J2wJr$Pk?)S z&s*Uu904r`c=WIlvZxADS!k-0C`k24@JF@m7^M(W%~PCkGR2CiFFX>Y$EYRvRmm;9bWbdz3!sqJqb9QkcK=D^t>l2mh81$WO}9$^?C| z$)HT|iKuQDto`lv3hG%f>jtPA5E7N`3MJpMuaisd;RzEVlbeTvsV4fTus$gQbHwBz zI;Bm+E`Z(806Zw@alpwBz+i|Gm?eOon=m*&y&80h^$ma%w$T{CXH^`nfb?%CQ-Z0S z$oS69wLw#>(VeT+RG3NFy-W?yPGQLU8&C;zj4SmNL-u|NjxnH3+d3NiyfBT%Lk_pH z8!&EzWb4YBL7K-w1>?d8k9{eVI<*+fVT)|p?t*Mcje}#hYK^Lw!iJOSz|4@A0E`w| zH2|-?(q#?6?7MI&3_$)|t`3c?#{q{QfcXQ}-i4T=20*3~lEy_h!v$<5fAfX8$#yXQ zGpYx-2LLRv$2!z!DE*<=LM+R_XPUChyzdy1mM9k!yc-`fZDS?X)mz?Cx#$%*WMa$r z;aa=}BPFIf4yrMs9bM>g5XTHv8xa_*BZDheCs7y-G5M?tI~kZWk^y>udcW(}hinc5 zx^Mw!ompdHy8y1h62N!{^F$33m=C-Jogoe4*}HU#4wwavY@~ZeNe=U{Mp*! z{q#Jk?6apNJXx^TLF&KSe^Mp)${1Lpj)tQ}?*!v<S_I|{Z+GVrMm4Jo8`G2ub;ug~<=h>T{r;N||!)Koula+$SaYqa!9@aNLr^w4}g1F$$xr zlPBfi;KNKeZY-wTmU9>orCk8uhK9XXYygtDhPl@`3>4185?tZ-130q8^^Nd~?oa&IMI=fzXz~W);xoC zG0oTIA6=`rJ1%4r*FHUB6bXhZA$J-81~otB@lvGlaeE%F&v)pqa?*?W-&AhT&TfS* z3&OyxWRBPxHDbPjC19`tcou2Y?jpKxDH;GtTPqTGwR1|nEnT9(axe@uag!R8IXYJ- zMfU6bRHb!K1WHys`rt=5u{tqx{N*`}d_DsV;xZM3`qiB%G@})AyJmS`6_w4GPgI zYkZ6gXKF)Wuc$5-bfgZUq{K;K9oQO6L4dV zwVTRbHpCG4x?_M`xtQLE8Fc_n-{H7JoTjBd@DZuV=)Rph^w&={Kid!OY{y5oZ*_@? zDQ`m^{#cbtlQPHShbf;tSf%&QX%Eb}CYp?<(I!A(unWaeXUjl63@Ek%-f!@*1TeT) zv>1&5;}e-PkoHZkThtSt`3aNAY743qC?%oz%<}CTB(sFF^Z*qp6F=MaU%b#Xtu1Jd zCN#GTwusWPMnl-G%REP~g%{6}?Ap7o00F_S`FOIcwi>9x8RHt(b?DzUSB=2Lh9euQ zq@SKtSD|Irvk5dm4cEMN%cxL3C}{I6%$t{i;V_^Nq~&Q9Qg;_YmzJ^wKxGLa`~WNp zNbqsy757jHD9-zy2)Bf3Q*3E6cHPRT z3sW}wDAPEAS{3Z*k$ztFd(n9bgP?-;INK8 z+{D}3>+H1xhFK7h@~A$WNdG3!O8j+#6)4?!s)c;ovMA~M` zst}Mmu8pq)rbIf_Ko!4<(IcUh<%ht0!M9hNRp@g(7y%BnNtXb27x9HJfdLpl0k;H@ z{4d9Gz{>(|(NhCJ=4uNt5L%V=U()c9lxHfF`d>PxnB3-#!T#(*5=L*0T{UQ@uh5dPoFxFo zv-LDUJq|cL0nQUhaQm*RP>UwO5%*zE6`H8d%jC$G5zsJUUBeYKUyCEWyrq5uAyopj z@!)Vb^A4pvs8fe|b0fd}9nfRwc+yNUZ_Iy8Syc~|t9$q4RMa&#G>SZ|#pbD$Ar%Q{o0Z5HJo(6cS zxB?DOfb)e;pxQy`pM7}FZaW-I;wn9_95Eh$D=FZz#cIqM2SbY(7{|tg*j;Kot0Sj&4ep};|@lglLlxLV;u_*&J3Aj?9?e~ab<>#D{KJY`q{^TA+%ej#03vgTY)sxHSb@s6snjD|TN!`qSNF;N;P zqXR(Zw9CZ3GdWf#(CS?hHBMEtgSraI289gT3)Nwa={q3yk^loi{J!HNQxcdb#%1Vh z<=(lg4-LTm!S2wgdwb7A`#c{y%2Clmzp*94Y;MdO7_>;8>byB5#Uk~URW9c;- zP<2?oV+h#(LoJuT?CR6AB`(Swpk_hLqz*=I6w?1uFih1pwva1x)wywm2Ts*+G2=@O zL%aOUj|WDBKvTXJmUkcI&PNZGU8d?qBgC9-UdI2>R{)M}Wgr>K@^2rQ50VXlE<-E8 z74RauZgKNaJqv&aKLBY7fC96Hmy%T@(E3V@4-_I}Jzv5=7E4c5N*f8R420RM=||PO z01=leHNtP%i%nEizn(BmP6{Ne`frgdB{cf1rR@kTDt58sXnbPR+U~VnXjy8= zfmI&>{ZC>U2^^d1>Q|sJf&P{}R;3!erjQOk1l=V-WXCMNQ%E=Sh5DdLy8zPf>gy+c zcg_AYU(R7bidXgG67j{*0L&ep(5v*^>NM-xx2nwTBrNqgOzIkk8)dIFZXxb$mlS+G z$gbmxBO0D5@V*7KaFq&&cgA;U*lR;OmOV8e;E5;vlxstr z$x4N09i8f0zvPoxMoCec>RvxMd^t7_Pc#sU;sFqe6kFpnlg1M?ELh(si2nd2{?J6_ zzIXRTwI4liWr%ol834wLXELc-yRyS1>y3(^08;IPc&0>(_99vHtJa__Rf*MJa4EgM zJ)7{rT#;-5x;v+gOAjytZ1I${!$LFw0CWX>W9$S9%o<4ROlL_`KyI&*bKR0POyb6? z3lBcpCwajEEN0I>w+a9)1DE9XVa`k40&5(dx&`72zFZDV#9`&ueUJO#6-WF_I9177 zasZz2So)GGgJx!1$IOk-!Oue}aB68^juM7{iZB1nk&flcV1cOPWDVR*(L@kUY!Y;A zlqH2i_{Um$hgN}kVsHh#5kmWo`adlJRPA)aE-e9z(*W#z4b&_bh~hAy`9m6__%P+M zmC$t3L`l#{=%ib+xEKs7aYuKrHC?szHbQu&7Je&YA?nB|kX7}nMuG`_xdRd6T3dVp zB`Q5{_e+0V(Q1RzzFDU}_Fs!#w3C=@$y3KeQOy^QjZKdJSM!=IPjMZGeQ_5&X38q% zm(FJ+;}4^OsVo)Lqp^Xjfdi@n^Fy)$P~o#I0c>a!>;f2~(afC z10e?_BgY6pn%->n11Sl_D?N_|vL3KzTc&y;q(&WDYsW5XiKoxW#V>!E$V{BNvdn*G zc!;o!UPWc7xH#R>aJ;}iYV{Ru$=lwGVK${vzYYdU(Kv`64P5mGg}4jkofAloIWUch z8O*x~sy2Y?wpLyM1v$n@!sm8(^t)w<%o)q^1E8k?KBr;VVhLd8DAG0r_^oyLiEKMQ zw+G9Ajo6puHAR)GXkr_HvZ0kGC)F@gB=hz->&{iyGZsU*D@ji&j8R)qRP*e^E10Ua zeR1tk+YbIEXp(fGCn?#t)VL+VS|8`Qw=PGjqY}HU@*`O$e)N`dSC$Jrl zOz595Fh>+4Kv)9UfBFW@2)kwo%@xb>1CTWUhx@wDa*5>ZnqvuI{+L+OE7(f>T@5ye zx}dRD52y1H*)(0Ac&n5(N{+g0fMphmjX||rqrk*GUJu4-3{q(~-To)J-Zc}#l0mHt zw%@@BSmLe{c9w{>AGVT0*cqS(gQY)8+I&w_?augHJAdjS5D2qy)gB2K#-+>GJqw{@ zVPrnjf5UhI!_{HT3zt{uh^;n5VtC9MbqQcR3~2OHTTTNE4Z!`wrZKYy0388!Cq@g* zI1FgMnE3vuwhC8&^V|vqLGr}TWs>wL5}*=rrQl3flFIi^Km!$TCHg&tBco7!_=~MK zdIluOw=0C+YB3fuJ3K@f!bb!r@#%9W8&ZKrc1DsG0^&L){-Y$XcO{h}{OmMLgXTw6 zMbBkCmT_6?lGpun<&aSw>&DmuRXWsTg%buME>&YuwsWy# z23$S_=``Xa^1JZ$u26$Nzhk8Kwb0aSUe=|sSD;s>%y{q1sePNXBl?Ku z$$fc16vmJ%yC8Mpzt}IJKWrW({;I_q^B6q@3OCronAv6t>3dF2=tdg=cNoxs-9>!b z%h3R2R1Ls*07KXS%o(GYyls$mY+_n~svlLP)vaodmVeXXIz?(P3^pq}`a7}GHjPoLAgiNYl?q8tNFm65U%aAg~nz@ztv7IS9uhhN?j zqaM*iG+|NMCS+-sP?j@z91EiXtT+va<3>rc25Iy=5MyHg;BM49qc0k>Lk)!1Ib%6~ z046p7MB6Pe1G9wKd9-)ZUXGHF2(FTyT16-6e^k3>$xQ06G6UK^R?kkJ{=MAI!2VqK|DRlC-lYL(I7d=^xtAv=TyB-TnUWv<9RbV7-IOR<%pajLA zJX<7trU}(4JcZbaUx|*Qce?!nxeee)i#GmY<&^VNrY=%CO$udArZpKdu6^%J1 zsU@dYxlGn6)Rq$hahq#lNX0E9K>=7#Q=goPn9(1YBXrrBS9$Np`Yx{z4!9Ztj?rl5 zSONo38u84TSLE<;pZmiD9!_A2vj7$cl=8|SkHj~r@bQ#A^DkE#Z2YT}onQ;CR>JJ& zP%DMGyqP9Me$+g)^WowacAW7CO+{X>(3)o+!Ppbnqlp6pP%EM|Ste0(|5u5*y5BkC zz@^;&$YfR`yrma_O5=_cUzed=95cee4Cud7@=@+UjRp(vBWSLQJ_`f$$E867FrEfj zYycMVc`ro}8NPK|B;4;7R^of~aui1TrwPl9`SnVAN}j+71fL6p8le62JhZ zO@qDKF3c43#Zrs_>sROw14>&lC@^c-3Api$$R69v0@44uBgjXLZ zQ)gULyS&)hB@`x8GIOe9+U__=bu&XNYZ3x;#cgAVzJA}q*jt0W+HSfE4Z!`uZvMSG z7y%}Oi==i@KLCMwBMalzjVgqTyB4;SZBdJICFW=|-D0yb-;w{IwO!XI%l9Zs@f=671UVg{48d-*`m^((Gy@=0ysFhIT>AZ#&R41WuUW#SOQoE_=rFy z-b!eDsp|xI(ebX~HmuIxS`$AxKH$X$pgM%RtMC&+;n|b?ZV|{9*o>5yNdAT4jSd{Yt zRAW#z0ArOhqe6itKu-g7O8`Y4nKPDi9Iyg+0fZ;O`NK@&6-DyT6XiNjlB=9RCqk5z zlz5KEvRa8xT;2j@mprx*b`9v9Mq#Vb-WEQfwUeM@lLXYpbfl{L_&`jNyTxUc=EM3iYo#qRYDQqawt;ms@b)*UfYf?zV=4o) z!{`T~o(5Po0K2?|-doNRKt2lqk&FN-Fk7g~R2ph^JpiVhmd8ZqI8-3AU7_T8?Ub!N zSGHA?J>HicVId-W=*-)EpM|z?b?FO5)d^ae3zQ~J4eJ)j>6CxGVVp4$68nDIK1|Ip z8(0dMiQ;@#-$CXJ`NNxT(Ap8qA9Kuv282E=vr6C zKI(_eBwF7H8(>PU_K zc-Ug6(if360vrg0AR|H4@bX%K%!gk(XuOuWC$S8OPiL1xVtQAgErnpm8*h6fNo4U% zV{Yrh2UfXx>|-v>S=~Y^cG(H?G8!nJ^f1{{1nOK}68W)SpI0WAa-Hpom|PMg^B9;b zZf7C%TG0T25#S=aZYgI0)FpuD8WF+cWLY4q_%PxS!{e9E0aTw6N!S03|PZ)#ZdLfm-rxrBpE<2}{)>t;sxBQYApw20S!Ec6gT z83YDK(yMkfJu+n|c@KAx7nXh0q=|d^3GzzsV%!jm>I{VN4g1O41?Gx$4vlJ|2MxgV zG{D(^=F8aykTn4HEC8a>6JQ($G+XefepeJf?fJ-5&RPJKBUN44cB5pZewvb1sW7klW%E|ZrJ2`T9s&#OW3zKLy1XO(mxMhtJ zlgGOf&TQfZ<_U8g@WBBx0E^(@7Qg_cHm!|$c(@)KP5-u1}qK3^9<6kN3fgFzy* zdv7&v<&vM@?GTtB>Ndd95zy-E<}83k(5XcpN7C)2hQ1bO0n8qtp3nEA*E|^rHx(Oz znu6JC0FaQQg*}SrxHga5{m^jFOW+ChXyU1cVMyboPA{eQz=$YWP{~c7moyMhH4v>j z9Y=U+xiEKZbwbuekBs)HwmJ}0l(X3qUaqqDkwg|x>O-v%yEv-VO5?iPj!4N|YUJv+ znk)k{9z!6m{J>nX)&8vEwtlWyBm>YN9x(a=2+S9rcVBAB{b_)B%}mt* zkZEF6S0(%!*JB{SS*q{5nt$=*4(0hpCMRpw(CnMmpA$fkPY-F2JqODKQu&CMYJChB zl2*$XjZbZNX=(<1K9xcBlvZeZ?6WVKr^$*YAdleU8IXZtC3|TYAFD%>7$0*-_5(0L zcL6lK*3K2nI}I?fAh02VI;D*&&OAACTM3KA96hZuJS*y9D~?sdigRhZc2%kqa$CZ3 z8PuMJi&VA8Yraz);#|KiiA;@sS(5V<~K~N4a4~oXX=PN!|&K!w( zixES^)Iz%%vmaA*F3vEfx_VfZ5`I1ZK^ab~trB2<1l~QSy}2S8o)4!1W=vfH?=FIO zTkwhG;}Sre1~_McxRX`i>MVuxR={!cj zAwzoRyt_aKPlR24O_S5ORP6M1X@MN|T=yat%tMX5I$`HbBwJQUKKuthLmSI4tvi?**{^HWt zO2~v*i%OPK>#hFY%|S#+U~=A=kMSFDoWVy(;SHvsvV;>VIx>>E-FtBAB=Ee(MyI?< zuV71=Y6QkUw^{%z{g=2x?m#L#zQsA58V@SsQkT)2;5OY;U{=^H0rVT`KW$C7+W-g5 zzWbKL0KmG+XahjyG{DdR%oQ>vx@8iqq12FvnWj>@A@=!R$$=59xW!V?pmivu1B~@b zJ_7f7QdZUdq;60#tzQSktP*%Gb=G{z5s_mJ)$|CFaR5Z^KJ2+gnk!RKi9FXcA*e0d zw-^s(;IM@8mtlS1J`<<`Wlc}r=~4$Qmw)Rx?#VbHu4NI&_?S85?0O@ERyV+K7C-{i z%&|BPlX_d~RyRl9I&H-W4Zv)nQ*)JWvU4ConOqD07X$c@)0nZyS0Sl2HmeRrWIobncMqs4UMkZ3G!3oc`1g=*4UR#ihCFZII_HKZU z8W$?71c-Awjnk1O0)DnGd1_>?gn@`AKIV@#8Unp#8p$vTNE}^<0pSO4jWT^cTn~LP zlHLybb|{;t_5jUsM=iisL#ay<12YI5gRTsq=z@&P7$?TZ+@V|1>sbI-%OhF<7RCTv zF~=xevO>*Q z%NIdlJ{W}0TjO!S3Dynz#VrBUb(Twm5n$?s&2m8OmYFG%#N3s2+Z4iuKr^1% zs{o?8ZSrd}0-zz#$+*j6SJ`jC(|m-d*<|62V41i)te0FF4vi*eVRw9g@+3sF1#Tm<(I593a z>J&=}esyysW}9nZei)7ezLBrd5zvhrlkT1?mbVMw)Mx|Hug{NDHh5zS%n@p2Rf(&H zx8!`?caIY`PPn}x0F^Kl>5*;vB3;=k6?Bd$qhzQNRZ1h1uhkkfrF@>2Su_YSYPUkl zKO?vi0o!_d(&FfNsrHMMJlW+ruGe!(heaE052Q0ASE~CV)LIa~NJ^y?kj({Ez4)?3Gg|z-Mcw-98A9}p0PJDhpH_psVlUctgblnW@ zS#2+!wP2VE5JCGw*xBV~34ls!BQwH|P)wx)wxj2=H!P{zOGRrgO7n`_TTPBZ- zrl2yN=uWyP>o0%`2_G{=he7R)pxdwbh`*wdLe7938!UB+praTcbB5ZV6+ZyevjD;d z;66a=p31AR3xMJ=Un-?JFTK_=p- zy&uR2*SZS13YNUY9PwJ}H(0BU6fQIYBm5RWCCh!K&jWhsD0RlD%wB7@RpZlg%&uYZ z6iii5Fj@ns9RR~Kl=L+f{8KAN_L$&a#|&BCW!$A8mN(Qg*f9oydE&;l2fK^tz9ldK zT-7O8=Au_AFV6L7v!BdtkB z_&cfXNE-S~Sd_6To6wjhUfytGAKJrEuRvh{q~7DR@gn~^N;>jVwcRavl0?uWr1l)6 z^j|X{wL-ZN7^@}s%*$bUbsUaq#_?E<5tXSaHPd&dD*bQYEfZJ}KSo}S|9Z2`nwRP-h_19Ld;Oi`hKF#glwSAH$?8^dG180^o6!+@?ep6)J!E-mFa z;Gr?~q@}^)G93og#}dH&!EPc0>JC#dWyzR5;UzMD^oM!T^AZ5hViYC<^L11k=WuSt z)y%S_IZA4ob%5i5$4R}W83>2*3RFqRs1}ali!GoMvR>nwKX$qHr>DKL#pZ*|$&)lV z`@#HpvcxkIdpuOCwT;l!(}hnA2Ssgvn0+W}kOMQqp*y5SWYz@+ftxYpntjCPRipxM&J79^9&A znwK$B>dvMeQYxdM4FHzkJ;%^h0M9ht=1J7t5=uN}3>XP4P|$i3E%nByaOGvis;9h(^-R%{~Cl0avSkJu6^zI&^Pyx_=i_g3!d^k&AXgrU_$^ z%oeD9HhusWgoSMb+~7G1EC?Wk4HzZ2>aJC-`uPZkpzMd{sbtq-zKv@lG9KVeeK6cE z1FPPm5*?H#bEZABo2z;94r3m9c|edbNlfkuqS}!07PT@)lTxGG{*^`;Gnt(vLs)9> zzFaGlSQtj^4A_sz=9di<;Kz1V^Ve}ZR-rN!c6Wmqu2UHkUq)cAI9sl!O8~oz=(>e% z1H4LyU)bl-2=E#O7J$iTfRY(cq7-K>d3G%-Q?`yF(z}VQA!U%8yK*?J#RD#A?*b{eMPDklbC95K3Z7zDxXF^a$ykgC@fW zieVU<{{CH%E(f&WjaZRss2T(vy^y~^NUrRZISI@a$^MLQR~xjQol_I#Bh4I3u>oi_ zG?c~Q(?SK-3N(AiCFiZqc=uvRDavWOdZ}Z59PK$~v z7r2?>KhCGY6@$MVUp@Zm+e-2gFlq!uJd1KXQKaQe5S1~L2I1DrwT~!4540&F?(?04xLS zFPf6SDr13WlI{2vTvv5{yS!17L`hF&dvOxKb40{8&w*gOauYfw`fMj}lM#4zD-(Tj z60k|T7CP=50jAdTq)j)8H(r=%H3%38%d&B^f4IbFldbP-U8c8E{dO>BX5u<6f$|^D zKm}P;**3rfvqHDJHT2T@-~hUKH~kY!0QU#GwPC@~B5ebVC4hOO%wdI4N|AnW()E8m zW{@EeHWJoR{a@GSZ63n}FLkml@)u-;^)c3h5W_Gh#MSP=TJcOi#l>DLFFl^evjHlV*YTyH<9L1>twHA)316pNAJl$G z9#r-_kf8rFhpej&!0O~lKg4E_<+uXAd|A$%c}418%kTua1n8t$wE*K)`WFXZkpy#O zwfq-&-kMaA@K*;a*0@T_QNB#N=0AS5RYPF%Bd;o!Qpm6loF;gg5*98h|H^EnTV0Ca z!=CtHQ|5;F7X$EP4nxeD><$1T(?6^X9nr)Xl*p#5fp{&`(y>gcNBd%?szI7K_t^#^ zvs?wGncrgTK(%aLmJ%ik{r|j?gil_jCFo1pJ8i~>R%M}e_8qvCT>z4fSlrutzUgg= zxeG>ljwk|mTW0IsCxYr=l??N|TqjSE^2L-6N z8^K(iNytE~vNiff-QVqRi2g?M??kNs_hUYC_xd&6-2ACy9z*cSjsar;NOruKW@LL^ zHBELtX5b`rODX~ncGC1k3q+t@FllW4J5ou$G7se5ubi04`K$oYJ8|#;vqiE$8#Msq zjOuTH?$PdiaHS`>DKs6ZurF8LaN@jNaSbV<#B(2wff9)!?fSx0Qz;m*3J zYlnA7MnI6@*9OJzMgp6F4xNgofKaQGM?r((q;gnLeSp^fwYx?#&NMOQGjK&v)jhFc zB#Y)@&?d35H4s~HV5UeX(T=+S#~zmRro-e?>M}9}ePeB(^82W#xCwiZr2eGt zUyt?dkdVRsaYyM3N!ozK2prPw&9Ay(R_1HGv!^HO_?avhQG*a;7lInWrW+;kmDdyy zfuX9;c?x7srkaT?-RFYwSZZO6M|h%jV1^iIPd*KB>IYyKhrw*II1NC8uD9^5Fan%4 zjC4IE(t~=`eKyR~ug1-b1=|KM7YZQul@9L)M&yVXsEIQ5l}04ImC6_t+m>JyXNyF8)Cf>L0qTjh;R)~oLbvIQK-Gs|EF&g&i}WR{jm3J?p0_tk0@pW;z+D^{8AdXm z^f%eDRKjGd{EmzRZU(8!e#y^k>R!hc^Mq+IV;ZDJD&K-x}ghFv(UPrThw%%EWb@nVm;C9vPZM^jAsc-`D#3Ho)zJEh2Orf&2RlW0X5P zEejlM{`vOZyL3y|;|>6BOXx^2rTpXiL8eOu)W{3HMY0LcWf5u|#$_OGW#rybJXiLMS$NFyD!pDX3N*SXjEiw3&z`~^(3aSwb4AK;`w$aD> z8cl^*rZk*I%o=t1Ir{;47MB2)fu$S=%(}O7=WBHdAR%@E%p8TfSA)FK{~AdAARZfu zsNBm$;#25zDidc`$CioJ9la%M>rm+UL-BRTN@@I?HVvrKl~-MEb9xz)5Wy#};#jlzYwN`L#((~bU+?nwKv z-g|Cx$AnTIPeqDPL3xkfxC}s}JqTA-{-i872ytu<3@FI?=p9nFd^3UB;H~6*uKEFJ zIRe^UME5O#0Z8o#jrlA*2_wMyLpZPN(`4ITk87z7LCHw^IiOnVR}!r`>fU@+w^o;} zReKlOqkPfEry=ea1N>N-oTYPBq07$!?f*n zOXpi@%V2gX+}tU^w!d;QL&+t--I|S)si_s7zx49#+aMJdrd2coslHbp*5wEXNh_ zu&y$ySNg;8+~x2DxCFqqDVWR&q`RJ{1T`nEQV>I+Ua7iN*YeY&E=%wx9Z&XR_dI%M zFJ1w2Jcez4!+8b048$KP0)8}Iqt2xuYV!jq!3G-b00U-}v{N9LWg{FrDpB|OFF6oO z+JNLY;P9w2#_X*co~DF%+(Cj8xn!+Y4eP1yXjxDCz4kP!_D3eOM$z2#8%Y`~bGAfa zR?q|J)Dh4CvkPE1{WJUSTbLh!dKSRo2OvBF&L6OSt^^TGv?v*66saxG%4U#qysPq|9vrAwKSK`lXjp;m1s?+PJ(+T3K5U0rbdZ* z-EIjIF^N&1D~jPArr-SC+-L*7C5LoC)~Sw5PPm){L6%V~On?sB(Z#d4fh&;H$S7cr zBV#(mU^fP6N-4}1*}%+k$?gIe(fagfheaI*r0SKl1Tgpk2rK|qEng-()r_)}hFRUK z3a$i9J|i~yikW9Iz8VJVzV9mC=~OJEVOQ4S;)J_%H>v%Tds@yZDq&~uGEm9}zaf@4 zN-ud`+!cmdVuBMBYmZp_d#|8Zh9OJW`Ek+)d~35Lu$PwvN_Gv7%rgb>Ga9CH zR_t?Kp3qJ#>_Hybf);(gC}386xk6;MWke(~NEQQkQtcvoZc(m)RlTB1018#d1m*|7 zw^`f-tlEG=B)NuZ8jOo!N<@o9<)rSipS<^9W2MIGIZ*#gII$u8C+<%3Vt5-VWmR?r ziTYqLCe=Q{YdUsZRgODE+B4?Z_TbAQt4&aXR$|H;Krl8of5|xTTbm^TwD~Y)(^N}< z#Cb^98n~>?9@qk?0iS0oJk!E9h}}EaaYTVR<3@5ycNe#)H?ah8AHZfCU{SMN zDnV&W1_fq|z9DsWFoUCJz)1c?W^V}x^fJrIZq&lDaV@ziw8m8=g2e;eZ8 zW#T^^PU8qY*=p5_6Zipu=bfnIAIp@8w1v^*h}6WLYvJNAf-J-L-?jH{F_InWnb`lw zIhk46H{OPv%Z{}pVg>_{`>;6by8aMl;JDVK{7(O*Xr`sw*oq&xwEIkLw?iS=CJr zIn1p3KeGCq6DLkYoJ+=k|D)BeWQ_`@cIxMx+yOaE@Sf8K3`uj;j3Luw+NvN3s|Dt$ z6{?uMq|OTFh;YV2n=@eB-E3iIg*gO3H30j7lnR)0)ZD30?fl!@pF9Abs{#=QSUfLP z1F*Z;P^~6{j%9N5PJls&8gu?{PJBfXELEjcscSbHjO^^!t!r%p zLlPsDHx|tSOuRZOV@Tsne@T0g{08`IH2}KeTSC?VQD%&)2o0#UE8$$x#I$|^@*BzT zlE6C!e(1CTOWIt#ClhysN^3(+-;vfA)xT({Wecn@JLQYTC|ly6%9ZBtK2A^5-f<~( zwCR<6aJU!0?)_l^d=$X#y4a~-%xRiNQ8NMVA|x?yG^h+e`B5#|wbBpe3#br&5Ngyc z`Nsm;4?-o2alI~PXiLPI|0YZD#J`mwv(y>?NZbI|=^9y*zs8QXNp|&^Y?~YQ5+fwP zDaYxVbxoZ_e6gw5K1rKS0@U9hg$12HbmoAMU~KaIhfXBZk#=N%IS&EVi~=8-%%CPs z!M67+NPS{nMLvx5Nh@|31V8iJ69DOi&LQe|=JR-bxEHT-U)BPMyRTLz0DPt=d*JwN zHUW?-%XSetC2m8M^Wwk=}SM~M64^xn@ZMw|3`)J zr!YSmn#r1iyzE2#%O(Wcl-MDbbBN&kjtN+cVk>O@QrnaH)KpKjT`>XGwIaZATg+;% zQ;;-J`ep0^uGELw2cRqlwDUaNo|pi@n*bJ$yBd~D9G8zn{uZN&fc6F3RI2hMotYN6 zm82lAu~MY}6s27=3*mrj>0NZ*tvS{os+6$XVp+okz>y?U?Vpg5)&6|npA!7l=v%v(;PLy~i( zdIZ901GTcfTxSV3h%Si?JSFFVU`Sob$7JDQT2+wF^2W!^L~JkiSF z3*~P}UaQzeoYYQ${ftT!z<%&=`(py|coX0!Arl~c%+miN{8kqhEzu)T>>e6opZ1?r zzqYG}t1!*nrcCfjYf#DCBooD8MX`O7pJkb7P19YP{6iabu1z+nk!#5fs|g(9_%=W$ z*S*Zh&xy)$+ExqvQn>=FtHtTa1h$i!m%?fDy9<360?aiYQiu{5H$wP|sX=NFwi0SA zp{Lb%3fq9WMrzkU(~)AQ;J%BWo#h0$Z`dmaV6k|4^I=~BSk5(~dY2)k{scK;XGgGx z_$MuJCa_XF5NA~q3_`e+YRv&rmi~Nt-*p+lHp$)OKPu8FZNDdq18K=PHh%z(!h$y3 z1us2P7QIBk^Ma35GifCWPhz@+)EvKwr1r00os--NK@wU9ul{I+OF#F;V#PgcVQA9u zB?+JF*k=6H{K@j_->u{VtM(;_aoHKfT?K2Mjfp-0&u*)6xEHT(uTlY5c>taZn{GL= za0-eYhRoBLS2)9M6D2_9^)D!>Od6ESrCOmOwV2xSgoU6RgY;jk=rKz0#yg{#WSh@} z!fMjSZR3ptNkpq9>!!WXAGgV86&{fZ;Ab{MA;>ADvV0D;4j?gZ{&R?gKQRGVEI%>c zzAz3HxzCczKUQ_yl`{prPXjF5_q0XJP?>rVvdc*_4~5Xr()N>({13K;pDK0>UIQSU z0OvjrfI0zwE||w83+w}s76Te*>oCU>s0m;PfoB}&)y_8fWNMD6B!5W@_SnQAv?_sc zg=aF7`oO_B;y*ntD*H5&khT{ifx&#x8? zll)Y$^h&jgz2_;>tj*pwsq1;YBdEIm;t}dM%UUCJfTZdsT0SH`#PpeA)&?G{6&(a zW>Tj}fCAZ(3(;iXg5)C*iN9~RAyZMm;HLqz<%w)(el8zcrYUQ`2{v^k6vFR15 zWx3RIW-QbD$?u3_c&6wJ(+G;gCV?c$!J+U2JHjKfxs0!q8i`gTkiS`gys~BawkX%B z-9(GF3ER~$6*~p@4!y&@$3 zS`gPvbcxE_ArQ%gC_5Z-Sz#=~dG7PRwLVH9y)o$nAU^YaT+#M8hP+%f*!U@>aW>C{ z1Vf^;+YaLdjMD%-G)F!;-NC`L_D$F?>=gsx(=0;095CWCGR~x7fV&Dg5h86!ThSC- z>ZCG|S^U%WWnxUue>NIkF?U8@beo-~y!_Zm{*lPovJbS`UzSEeCXm4#bwE;7jJ9j1 z9?Y2mw?z=}zKs%|(b?Ur;F0QQB&;`Ci&E_Ar93SPWCRg42-O?Jq{b2y!c$MzF^pfR=98v)bppyX&Jp{!LB2H#eADaoOkpBJoN~#A)j&jyeB?);? zanmfcN&rRb4wLM3=_d6tk!;u?GIUWi!x&#q6_JrlK$`E9 zdRhSxobaI1?0Dt~gw_O-G>#%Fpy*`)0yEXc0u-!U(E6u7sPY-`8>A||uzXii%1{0X z$KE+`gh6~ztxG31TX|H-z5IHpxvFq6$|CL{488+#1zIb@0JC=5(JI&z?28Wodb`Te zQGVDTb0Ppx6Tq&+CSpm#PLJnHHnN_S#F+4tSQai2)H0DK`!5s!Zg`4NJK9|RFEI>h zuRfQ?f*S#|npFN&-c@EGs4$ty<3Dv4 z@MneLw6F|KLYr#>wzLy8UrpA+_z#}(l?Kz8ekZ#Kr?kXrsV%vTdt+Yh>3Q?ZZ1cC_F5~91% zCNSae#2QgXNOs%DCZtFqrG-Cgv>z^FRHjF{ zo_m~&OU1OydQBKZvmn4XHA@HV}s3Y+&;Rls^ zI;}>R@(7sBsEAdnF%BjRpgOgCU@?cZnf8()raUbJat+>;+h2Y}!JZ$`35`tIliGpu z<}+hac!j)ngJecgT+eF=eBd+zr_?fvEgKT==L~6{HZlMeu2w@ucMoLok*7Hn)c+6I z32^d}e^cHGP&ELb1KdNcJS;!1PrLV_48RVeBw4Eos+73WI_)09_1b3I8Mp@a2dL8S z#?-)EtsB|t&*Y>rsl`N)L6qfwA(0I5#66vBQ@f_5y=9S_x-B_JlQ@&@)fC4HWokzy z{{ghkSu$~LSnZRn7m2rx?}Wr(Hqi)1%tRHG{Pw~z0W@ZS4S8I=cA1_ynYB1;;6nHp zq#DUF(ASk8USwxRsKWxAozlNzCxIBGf4MBZIstx;kPp|GN%h+x?34l6L6nrbVFJ#J z_EZyMRF1|nmWU{-3W9kzMGiD-f|Tjchx?i6@h>DdF}LFxe-Jebh(+njVOo+I@U=uk zp5cHtOf8Irpv_u!{sAbH|%Mt-2InD@hhkskd}e^!}ch*a5UgsjRa zYYZfFVMT{+--+mlZ#Wb(k^jIk0Y^lY#tFqZs{6%O%Rv?6STO+ziXDUd2HvTTO~^@8 zI{_Z<#hcq7C&0?C@-EzW|1mfdQ^>|NfMWNMCb&dkZQkFkRVKnf99tsZEYO-I^2yQ> zf13zNO$=J;UlNJHEEEs%lr$!#0W!&3pX%$qHbRUu)yb;{MhTRfyQ@UcYJ0g+Kc^_U zOGbdold7EZ#CzFz)=)D6NsE)pGgBIwMk&2x^Pci|lRKf3Zy;XBIUP7e@MC8Z;H-c} zdnL32`NPAi^^$n1y#vKAqPsxC<{mi#-p0jZfq~2V8knvp=Dd;}!^U^w(mwC!!8D<6F=iO|O; zHFYU+aNgR{q9#~T%W<<^ZU>W9?|#$tL(5H>JaeWd=!|uzr>AzB9Vb|*oy{P&mty<& z7h5%_4@Vu>5Rno0ZI1{op|~&=wYj95KXlaqfP8XwW=W2f5yK6JA;F0&V}xf=5uchx7hD}1hD+YLM|h1=!N(l zECAt7zaVeoLAxyV_uTI{>ByXHM!A^nQdyqy$HHw6_vSnhci6imro}TojW9eHv@S>R za#=$(<9P`JMIxG`lFTNS?Ql`i83J5nf{e1hBuECng@%t2T$sQYTaHgXo^MMMCN)eK<{qer($1m+wrPW^X2bO>tB^xT*)l zsZkDpyuDit*#ydyn3-7s?Qdyt6o?B z)qLlpMU{zO7)$Ekz<5>s&08Y*`Byk+{^vjSELZZ@%xCC@cuIJwH7;9u270&J-hmQ* z_<0f7R}XIKB;4h54TjH*JZJCnOB`W5{63ZHbY&PJE=5)3yv;baBF{_3&5?cQWzd-I zgLT&!$SkOpUtl#&yCf9R`-`43Rl%NK8u%yfZSO;*C6hpb&fTt8Pqidvp|mpHm4;Ze zlGph*vyIvH;?#h9c~l;Ns%!TFT{VntL+aHT`%I#m{PeV|M_J8%sMwCqGV~Uf5odyjs46qA$~0%LuXq0LS2tw8Mqfv6@w`bOk2*%n zd=%U*cgXTA$z?HJi?O@vG3c&h2&QfEM5Iei0rC;YX*ZePEwGu9|nwrz3$-x}06f1$`=#<6%Ac)3}_T z``6#7(3#%3mdq^!WWcehlDwG_&IR$+s+&&Z{Z$pghRK>=-W(qG&0VpO$5ts?x-L98 ze#G~?cCtTN2FL<_bVyZn#*1i}tmpQuTfiQrJuD8k{jPVnFJt^9(T-`Q#;{2E{H=OB z8wD=<{Mr)=tsRSH=B?8u1?F9yD7loXk6{|+GA`a$G<87wGLTKy%hu4uX{Fs>EyRuF0=Hv93Iz(psempM;u^HQJbVJFfL+rz=VWoE3; zk^2DN6jtoefRb4~zV5)R?h22>%$q|$w;+BlncJhQ%yR)G!GY|Tjnaz=Tz|xM?KpJn zt=Z0$M*~oe@vm5V-@xP99I{^ZFgckq9Agd;f6nYzTuku*L0k?f~5*kuya>h_fnwrjx)(SHc6LP6Jr#xa(LWxpM& zx1>qKXaLJ~b95XBdkHhUXm`L2HQd)`V2!$0pY8THjSXZS?WE(8Rr&bEg>{DPur#Gb zgVsPxZ!qO=FGK)f;ey}O^pPw!-n6Mk0C)FmN%v>{p@i5NgmcaNavu1la&MX1 zgCBr~XS9s5IW4JXXTg&xRas~sw<5gQTk)EmN7~-JBMIx2YL>u$V|lYf zVuvHPjj|o_V8K7l-;R-WyJmB#$C7XwosSjQ4(4Aa3vPR6EgpJA zqGvR`+NW)AC&>T7p6Uxk8E9ITRZ=t1ft0&n)Kl9FQC~T#Kt`rjy^2wU-(;xa|IYYu zgTXKS)n5(WT1Z?ocVLw0@pC2_l zhXW`-X69ehH)`U_gT((?j{}t--L;Fng{b{8^29}~HcLH%<50OL(rm-FLQ6g7+|mEe zWZi&ooZ! z7CTibffC^Kv1HiqNC5Iy=+y#unJKE%^J{u<)avC^x~8Y&BDQI19cmC^Z8Qdry@`dy z_7PSOGa}#RGw}hOKhC$DhTRoNmssa%ZgqYR)#xj~zW8{M@|Ay2T7gKPM)9HW&jm)p?5_e$$oK6r0^bL99d0x+RZ`;v%Hvne6n_xV!%(r+0cya6P4Is{2_aC#b zOCxwFlvs+l?v09dAg+a`L5$DXX_qc{{a&Sj<)3PrQu;8%Q${Xk8n;a%d~>K>2SbV_`yLFtRg*+kO@nm5*H zo<9)BIH0NhrBm1R{mi(|QhNsjvDm7884tibMA!qw-xz!OdYhIa#cguPJxe5Ph&qnnfM$O4Oh@|IL5D85ZscF`x!ZV zDQy)TDM2X?qXSm(+aI}|FFmp;2eDRBE!PReX}O~jDjmTVM;w5wdb+K{uJc;C znevbHvmSx!>c+eHcaE*#dDNgxf#~-(M?7~khP=Asgc0;SmS)2ym z5oasSF!j*0$V$DA;9BHrR@Q0uvZVhoV?LX@kJ>7ZSbrurwD~QCs+GeR1W+UmbTI7A z&YK8B6|3eZ0Sub0wdf<;?s+%^r5(F1NTh*s2^5U!HLn`MMZs;qq<6hX7z95$vi)g> z-axKuIRn%LP3yQ&GAaR4lu12*c*We@6o#^X5(9G$fv7|#6u+}Q|3^}l8-phKo9HY| zMaakWU+J%8gG?Dn=>w~7x7WVVPUrhpnfU(U8#zaSJ7U*)OT@+C1j#cG{fOEP)qetkD10A3QVrI|nn&vmw?yi@8(i8d|_ zFhsqR+tWJu-G-Zo!OQMg0yuZy1_Dku6Pmr*0C860qtZhW^oAh^3$?S5;zz*NFLWp| zo(CpU7B8OL7nKY2|7e*x{&TKESkau?KQ~UQ)n=>K(2vnkKTpCpM<8zbjmH`r@Okx^KmkIl(B2 zKN9I5D$Y@h_ud}j(wYDyOm8NIi;lU>o;ZL?KT@GT96x>UuJ`yE-Gj&$n4E9KTUlVQ z&@PqICd`KlQww^GDZz&VCMIy!c!C#h+M<8CF;+{B-;o`Lm<5 zT)pstD7#yA_8bo#xF7s3=XrLwrJl}LEJrQC&(*Fd=G#Sa1kdkUwYQgLx6@ON6d&)% zQx;Nu9l!XR`ue@`Q<@dkObHxjlIJFUr^PPLLf!QEonZIuTPcb>{|#koR+9DyZLh?+ zcJFY!wo4u5Rp%P&jF6$U=LB3lAvz?1xbuXq44~xX_)w))$eg3 z1ZI6Te7DTArXX%_ixC`*eKGA|o5>i)(5>2fGwI}Ey2{JcCx3d(WcBlWHw3L4aKU+r zNv0It&tiOR7ePEE-PQM%XGJ=~Tdm=tc`R+4X<<%nG%t({sO`P7)fKRr^<@d6Uh@P?mlGk4&s>e=3U(=6w*hERk_kuJ$E!^}4t@B8l zpp=@KAcYjo^NjbydVd(B2J*Fc(;n;`;*O9arrQ)PYyJc05z+<-@Oo=I-=a@I%DwQ6 zg0V<2YGIxp)``#M`Kz^>FhEzpB%!j-bzfeQLJb&SE3LYU+lyXIN-)jMsH!Z!LA>6) zZcgT6!1q%A@dMbq^2P^mXT93@pSU4!b;~`to=zj{Ib|Uv-D*FUFsD!XOzx0Iy#^@g zqOO$xu$-cn$TE{=T3r*vU#z`B?B)F`!4>Aqd?=zm*dn5e- z5~ss-8^Z*4t}xDn?0&#|YSf_mJt#GD$|QfMfBjfC=_7OIM(B!mp}lr@?j&ne~S>t#|Kk4PBYA$@_lFYsrYhb}4O=}nQf zGl=cIx(=}kL%W0B1dcVj>c0;YW(TO_Fz3s43+&W)!d+0(b*(b+dg~lbtb1zurO516 zmc*HP*C(MMpz#4Awii!F_kjv{d`iIe0#Q>|Wbka8<%FR$00&jbuU}F%WOf@5W$Mq8 zKyGSqPWbC|HNG8zMS0ls_n$uU)=^}BCB8tcv0Z9d*pt!nB>8T)HK6VuRNqoaMCK1c zg;_0?^aHVl`GJw+)dc z?MZk__9e=eh~#Y(wv$%3&L08j?9s#RQPEdgErA)BOuBbwO<)vwHO0V6{I59U&e>e$ zzAfqRoAJ63XdLnag70F_kc|~w^HK;83TM;2;(wm;>8n)Cw_L*V-5s~m!irVjFRYoh z@5;C6o6hi9pWK5k!Vo$EcC`dqT{=*KY!a(~gg+|9kbB{O`Hr{wkse*l?hdr{pPZ(AM(g4k7gmi(ypf(Q2O}q5 zzK%0bRqJtn_i!D_8JW4pO6$eXOpr?o2L#Y{su!9c&fivP6Ve=&(JUWqjY_R5J6FQg zj<>od`z2uC*EKQW$3cx2*eA~9X?n;ar|wA@`3Awlc^?Cv7NpIOW!wnYH^cK@ztsYoo!|8X$8Bj`LtVW4)U}Ex zCobDmNR5=^)`i*_QxKrTOxMa-Y11UDK5y`j@&}U=n1&U54tamEHwm1Q=KS>q~8Uw9$0dKi8BimZs z0rc}BvH#8}1o3!hj-h7Hcq2edjHU7&)MfaWEfA6N7mFF71y|$!)Kl2R?O+~~_rk0I zCYoOJZC2v!6lo9Ty)P3A@+GF|;0@0|QKqm31&H@CV)kPGQE(jrj)T=`7TFOX+cA^* z_8SN$fYEPWbv5AdLdHjUFeA2+x6}umZ>?IhO+IXrJ&`{sI_sWgpyeS;^54{BfDP|Z zm=s?5DPy5%6AnH0uCdmRFr=U&qTFHZXc7tFF0pmeRgYqg=+4iT6#NtD(N`vS&@BFMe%Ucu>9kJ_}4Wb_2Ush#UYyHKRgOSFZUZoI9|HF+z?c|5}zhuFVY4M2;NR7 z1RDX*d2_P&K2Msc9l;4MRm|MWBsmtfTsvWZEgc64(LCl=|M6oDfPOK8SHr$xt-Nc) zxJE#5B!8kKN4Z~^Aj1Ntw9BI@$zTMpD+I8laRwqnNKkJYAwKC(Uz+L9^#Y&YQ z6iD{)pEzdhM|KSQ30?TD{2`Qm!Nab%6F9ydY!cYQd%)X2$+&%NDt~6T-p-AR`djkM z=@Csa^znj(pzB-Uf5Mz$2TQs|sIX1uz;`hKZe4k=y1mZEdp|lQG2fN^o^-8?Mb zoiSdQJk_t_AIS>ekwA9WZQQXmrlE!b{wbB|^DYQ?t8%*ptGO}B@HaOVOHrXR0-7+a zT!;(`h~v5PMph3|t4A+&MqTxjXFZa>B|O|4CXK@M13qzblE^bIct`)o5i68Tn=9Tw zhEF%$SKAVrn_7-vJL18jJwuLGvcJ8-pN#_FRIgF1TZbJ?Y(?cgCU2rUi~a;u@YS;5 z`0}YvnuPoH9{uRv{|1xA!`;9JgieJWUr0J3AmekSjOEla4(&v6{6dMj26BM{&bq#` z+OWeP$?^!l83P?NH9n!6|Ii+Qdqxpu!1tfQ;92+#3&Q)e0Ui_1wx+vf;`sU$F6hRx zASJ(H^C6CVZt=}rDWv&xVgcpsAKSVnTG*q@}K6Dk}Nbd zAEReSO41Nhl0|P3)4E+6muDvymuE=?j<&lf(qVu$Hc6U9g2`v4Hz{iX&?E=&0H#aZ z$q)Zpwa+1suKhPw3RW-)IW&s&4T$*+tIb!KsjhL`u+75f*2i5|?lzynG|6v* z8US7`&oG;hegt31MQwcAQm`plD%W-FVhC5xIq7ior8jgfXRT(RYxIZh5B;a1Vt4X4 z3GyG>_g)upDsAid%x1QJNbt(H2=*DC?eQyOm!EG4M&biwlwn(%UkI!>`KaKn!mNKG zSP;Lf`s2So=banwYJT@HMWpK#WCq8LyW<4P|1>wfO`q@#hH#7VO()EZP^ic%9zm1| zl6UMk2u5jv%wq84p&ts=>H%cS*~k6TkdRCx`9^oeh*&KUwvN-BseVsX=af|9uM@Zk z4gM!@*7sN(2}X_uc0Yn-cxLe7d*l*zbP&#w<(ZA{?;Y4|(lzL{n-n)+0QIg(fo%bL zPvESQS3}fC*?254`P>`e}+MfmHwbH_66c%T|)4>)YJ9Ja!D>- z#JQ`VUE^8F-AfpW7>8Io8OqlM*{aX>hKc0BfhNB$u?~Pc<`yJ-Vq(7@@)}@F_k4%K zDQZ?6{|};92B3)Gs;xbN4P>4I6a4H7F~g4wpBWi?^_8$c-u(3ROw^j24BmPVZr=Pg z{-%e5Ldb-11=sZQwJHv~{ptdbv(1E!?t?-n3=fF&f8daY49ZV1;KZB~Pgorb;5kJE zJmym2CxnT>e?qWtItDGoNCFt1mmEBSdqk}WtS;wJVsZw@D4lHqh=U$CpiT{%yowD9$AqBU1 zJj3l}nBnMDX)`MPnc-3S$>q$&zG1_ud`fo?obJl+Z!HyM?^>R>+cv)GK=_Wx0Nirz zDvK9L*{8xY6cuf5PvwDJ%ykjy>E>X|AEp2p^;yFF-*z7N{YCGcMmrIWbvSQcye2AknG|Zv5C@SaM8`}Z4N`;>y zL(m?;RdVA+Xq`eX{Y+FmQ*cyO(`N0zj;xsDykoME>4~UBR z5B^U8??)JA&CviLgK5DnW{3xH1}eKHlX6JD_cnX#p(N zDT<|}`l#tD?2t)6{pRCbT)ahbk!l1i_&w{j$2!?*3;a*A!B^t(@#rA`rodt}keb%` z1RAil^21LGbBs#q!raT>A=u%{n}c>Ze_`nex3*rwe%Tli>kFKy_NRen7MSf%e0^m~ z2bvnV!`|*KmEdjq^@r-QSm{qofP&kogIM&f80dci#kS)9Q;rRJ%M)~K*nq$4(1prb z?UF6DS&B=1!ckuNka9Waaa=j<`B}*|{c|R<+a#t-6I)sBAjKlb(|*4Qg{S8$F^bEv z(%_1cqv$1dUD|8DFegm3#yR_L`_F6tyuy?j<|+7cOLVHbGW+Z@*dO<`A!>Iomn>ft zmyXQ9ntPh!kWRTS9a{^$OT5wmNqep1`G^bWKH(U;UDd7ZAg7edWio|R-}h>)+VW49 z)UFpTaPng1{|Nun*i*VFVtJe`qzC_Y?Kp5P2Tn<=GHIg2_Mo3|&_5F6QNpL3w3b6) zyZQK<&;3XM|FAN6K9q7d3M&@1a;#XSOS11CeH2^jNNZw0{j{}*Eq~p61ULn;lVRHK zo(tZ?J5IK3{inyxKoCCL#TtgV6vke@w)=F1j%LkLU=^j3EF?(0R4Fw{lXj8 z`1%4lOnj!j4KN2HoMqVl4o4o#MZNYXu_n+%puG9w#d>c(f<#YK&gr%&#W|_@7?mtO#!FQyEX|{-}kbwGg!k(j5{}CnOx71 z#%Gn^DDZ>+DHtSJ5z$ZDb;};W>(%l~g4$=Og>DGuLpqS16(Gf?ki#Hm(j!RmMDdO~ zTGvAZvGDBrW|R#^`| zlVkPy+4RcHT2bJ=zab#R3}8`0$z4f#uKVnbED-iTTK(-7_X2*RSKMZ&aiP`Of$|@G zCCmgb#6btps-=;hQRAftNOJO_5dz_gp12dNunJ=ryGFw8)0YRr%<^cw34Ly-3aqsj zvsXh>m2H3pnjP8AnH5!sQHmg)36RCo>3kc?@c&T=Hn}3l{$<$dF1wm8<-=1f*$oWS z2`>4$7yLyl$pI3a&X9}Sc(sM0I|6ub>)VS%KjNqXFhR7hAGd0xzB^?dBjF5 zpkS*opQdB2T!1vAP~YnZE*HTj$fmr=3IeHs(n|k5iM};z z$=k=1uLtL$1wTGr?4KV$+b;I+3nF+-wz#hyIsU?)R5CSD@%YZ&s>TUgKOn;d9;a{- zt^mk@h~%W-{roVvh`EwpX-t6&K!A@(6d*-{rQNb5z*Zp z=o!tc&@_2@XXU`1Uwi*p%URyI&|RxN$i`vz47p_Y*HtNig_?cO}xreV1&` zPn__m>Fjn}&nXs+X7;xss|5{-B4)?yIlX^5R_LAz6( zkIFLmmlvfYG|&*BaEgkUjEo2#$$@prhH?H=&x4=Q(pNu!o+5qa2v8q)LiD!GJ$%`R zS_!4G9f`m=gf!0g2l^nUv!`yYYx+<~3D@i-ZdQ*x^0AZ!Q2LIelmW=gGM_yKe#(!! zkoF}HGUJ;N5)V+80lZY2_nTk}WzKtSTk;sV9OVHL1qGfC706-scrZwc{~^2vZrUoI zgVBxPt9|8Q`|gC1G92dtT{V89g6{xg{8%QSwyd785A>};K>TVTL6>E}KOQL;7!&u2?Uj-HLAh6ue1rUw* z`F1oEB#m!0UJjd8$RkWC_MjCO_nza*Pa!TY1Bp>ryxxOs`yq;#GRPy{vb01(D&hjw zmM5-UM<`3%M=!#}WSQPms~a;O7htFlcN#r2PWSlUgRxlsV)A zcIyR-cIr}0{5B51J~{H9+ZHIoS>Z^~KNoU-(Ry@y0Y;_=scJ`LUm30O!(6e!9q2Ng zt|1YEM8a~fL;jp#ULv6{{k-gW$drs55X;wnXYl%ZKQMJ6`{o`h3@3VO8z@k`a9h;G z#6AjMm2dNVIt(~3>9a^}Orn{v3n|Gyq^tG6D*e3ov$@Nd9c75R{vY6p3p+S%Bu)M- zV!gxl+#d{8xT4vjfB)jf!I?-iQ4C?nSKZZkXwxZeXez-LD;r~#(6eCz>;>p)iw|3M zufmBT1~M7aemP&Or<)4!nuCwK-!)U#Xm}CprRl+)PraK2ro92K8swD#l@Oc1GR%{a zz|3*~(vHP308E>LP@m^QupQhO`iWC)_J+2$N`khc0@9)4yV5AsJU)LhJCU%RYrhW7 zSI#4ZAGcSYPRw2rBp3+85<)7(x+XF?@~dU`jy`f}CW#brKpsg5<-*E_R?g6CN3!9h zQ#DIsjYFqT7Ug>A4Gr^M1+%lep2-YUTOdH}3dI5x=< zlldE%Qx+Rcov+wVK&1gwqE3k}6K#`@_Kzy_oP2x|aGdhIn$w;$mk97VI-)H^`!}C#Y@ABvD=nM@L8ihH`Nei+KUhSc@QSRLrXck^f|kK+UMB?WdDOe;tfKhS zHA|c$*WUN9b%7?d+{NXu8LX<)>+gN2fVO>`BNT~6{}C&lueXxq`V0NLONgppxH z|MsUS`{~u8zROcwe$>^;@AZtUKfd^TS3|@%$OgNL1u*BHSEHAf$YhDX3Nb5wI_Acf zA{ zuN+*gX}NcWVD1H|+@O6;c+bm(QUlUel&_1>*&be_C};y$d@Bb3WqjCDA`vlSwR)x1s(0(cbhUh^mZ-hlgvPU8_;b ztiLG5H9;}u8^wt#l5?5G+6nbyAAYr5QIVLrXTNYE$lFqe}23S;zsg~JkoQv{s&uJyM5bvdLq^3 zd+P*UdzjCfK+yK2qv?f7LN#KrTo7MdrdC(kaONKbHQxUuM=+rw)~@>5oww{RTLYWk zN+eL8mhAR5AJ9+n`#4Vn2eMEbvCaB+62|ORAN9SP^-;#dZX_IkUGD&Vi{MMI3nozM zLlGx*O51pG(68NJjbxjA#HjR?+HyQ~b@Cf4-n(Qc0wemq5ThJOzzouCFAUX31^6-U z(R3!>TXI@&O(`2WUslWbeIq>C3%lRJmE3H0fwZW>zPJ^sp^AfYJ|x-SfREz`^6=+% z4QRP?8imM%XiI2|*MuNlBm3m4OXN(TKD&gWp}gphlhVdqiI-B>YEVWRA2{Ob{YDSV zR-JvPLS2rs!1pZtjosgYpI3=lTJ@M+WmL%ofiDhE2#6oz6F*?rT_z9s*gUH=f@r_W z{|pO|&JQG{ik<|U3GP(xbPGo|M!5@?EQP38HBS3#*6JDvo(!$OxS7%^?@@|qeAq)U z(`1Ds=6Dj*9Re7``T>zi=2CiXU z6jR+4KhUu}LloQzv{kPFs?v4`9$tI4!GH0OXn2S_gN-q7Y9V-elKs?pT6BPv8V|4J zg8Zk9z+rOrM%+k6XeYbHwl6mJbsQ`}AiC6fai|{usq5OT5v^$1mEc)w{x^bUW9cD* zhLPVekx&Ac0w5?A?xA?3faR1HqRb(Fi!9NVV!jtX6R*o&Ob?TV(7-objBlW<&O|n* zpzmG4bJaUda`4>fLQm4&BJ3Q2jT?V$&~V@Uku(wHsDt+qU@p`zW5mkqaai9-&^5#3 z5sR$L*Y>wcGR`?~q8O3(F?-7#B@+SEaI=H6v1+SEoR?=iV~hD5dQ?p*r~{_dpuY*z zj6fEj;uMKG>`HRLLD!DoYB1d44neYKPtr6tTj!Z5O^{I&!z*PM_yB0a7r^8{V>Qb@ ztEhuw)`4r0PFYI0fzlrXE@`K=F;Q{0buv;~`yyXCi6$38KBw)U4Iun6QuF2sBA{3W zQ^^Jc3X3A;op}r{w}-pTvQIodX-u}ip&-0^gcm&t7es#C-4ig#Q@JvNAq37UCmuk% z&SI4=BPUGBFtv9J6!&djGFo(ON4HmXoE){vV=Tit&B@DYEZD*&WXZQ)jJ*ov)V=oH z9sKJ(CFTooFj>DDn`_xlt!_`&ElCo=!2$wc@3`JQFBZXEfzbSc{6vsVC@V+F&&?Vl z={Q>D?dA_pBXrlvIi|g#^pQ@}QT*aN;frX+4Ol?3x~t`jpHCDw&`kJN2K+|1TLkf4 zj=@#eUzugK-^a$vmOl0HmSHV7*QW3n5ysvEy3kZD{o_pFIrTr@rnZ449H{Jl1ftC` zk1W2WR0lFHKWyu#NG@lPF+X6i!QpM*AI8B2*ug++C;-8 z+{i z8J-U`r#_Qw+*Q2-dbM-vUPY=A=KOW4$%}QuO@YNZI2wk?xc__CVcw0fXpMqX@So;WI#3_w= zi9897S02n>7^9S0SPRm6@L|LQoWo;B6D{ug5o)i~s=WwdB|&c0M+{1mWGM9eRkU9g z=UBo$D)##pb}f?VSx8FAucR8bwitYx%NFe;NbB3MB5y)m{Ge(Yh-(XMLf6AVXYJwQ zyM+edyO}&xm~R<6r_P;L6K-78bByS`41B}!Eh@FGXX*Xdt|j$h)sY|^ErwFLZ1dtQ zDf)foQ(;0&GZiB7LP_tq^eLh8`-Wf)UHnIX$gPu>?BmJkDd~~5U!psF5a|V5Wnnby zrR6yKM8tbZUN>d`thIHhdxEb4(x9cwKh{X4vk$T5H*z3`oFlf1(ybj#5nX=4 zKBP2R2zwVbxM|MS7qk)?mF^ny*mmu8xE1=&%%$sJLPlr!gmkPl12R;gXd|z(B~pmG zUR0Ung+&sV-?V8ILg;1aU(L7Mz^Aovs=t5jjZe;n-QtxPCWJ%1-cX1>+!kBN4 z)Bp9R}qW=#kr?k%MmkCBo1;NwgpaADm{58aWwTgh^ad=DPp z$Pt{9slFTkDb-oaLBOZK|K2-=i=3gem<^VWfy~2UW2Msv54WxAC7pUiQu@wD7Krzj z9pmB&Mg|%NEv-JR$PUu(SjSlmF<}+ zmL2^?c61abUQtcPiD-avH7S`C zGPo+-_ut!GAly}Fh1;rB%~QQ5wpDMb31R)53V(`(=NoooDXIM(E2X7%iZuGi1 z$^|q*>!ZLUzh?fY&@$h$i+jq#C3o0F!4IJL3&j+bqp8qEtbEf(SFin+p=a34k`fRV znGjIVF%{Z%)xM*p@nOc5F*r2T%C+WOmXP6+Vts63=iWrAeEHotf`}slO!n zU9J6X&}$ktBqr;hn!Q7zvlVW$9(&=l((be2qqXkXna5{t)jO76Wf_+WTag8mr=fvE zO@wn#>;PN3(;ei3=O{L}VPmTznsxW}R{nJ{x?7T!vtRlw)5SfdbA~GuVT8`Sw)k`?#6i5Qan7|WBarPIi3DeJZ05lt6HlaI6!?HB#ci46z-qJ)6Un-2}H=3WUL zU+@wyC*33|bzf_@WBWm=$w$virovYhkc>)-X0ST~c#urFy{U9@fv3g}!Lg)6Yazd- z$)qP&DU&}rQWcl8D(q7Oh*qHAgG?ZldfS9PUaE%;XtM9>6-J-IlE7CJK%YZu`ydkf zr*Ugiq??V5g6V#rO2mWxlSj%RrVo<)jQ9Ktr}G~D&B>Np34HLOikV4x(h|Y*w|=Mh z7v4JSdxPHZ0Vmbhv*YzqvuZ!^W^-%D$)}@J^>w~BP%|OJ=}T${Ifk_|*ZsF^D;Be^ zRXb4vCLwEU&B%JS#9tS`Snl#6IMt6-W%ba)UXGobq`gRzpRmWx@$dw*ok(zLGe-hL zMUIcFKb(C?$_qD@l>)!H0juNs3dzxM2ZOdD|8rH%6?86 zaP9z&O3%63ZvO0f`{QqjUZ&9l(X+1fA@#djtxPjy!e<$l4)@MErYXrvb&`9e%xe9Z zW<;|p{eC*Rj0S#)QYs7^=ng#@o%*3t$2wSYnQni3vZUTQ)U8(4c**wnL4OC%4{KoP z*?YRB6t|+7g*9;e+muq(Tv-oM%zBdXeL6KF>QJo@w~%$n=4rK~c!A&Ywx5~fTgHl@ z{~RaVn2#$e;*b9poV~sbD-@oI*WOdgD>;^l$;9Vehu<3MV(?^_5 zeqTNuyHt9-kbSv({{0B6-)2&XZL+1nAEjW#ce+{<)sM|s5D=T=b+pB|)cdXn2Bt9t zQerajSN(`fn-&Qi9#-=QC73L;1f%X6YJ`U!l@K6S-otXtf)nt>x|x%~h+PySC1H&?1f z9UD}7*uQp?+A}UM1ypc`D~V617=iLP|4?WW)#5?=#qE=+GH)++mPdVM0Vg-?yRMzR%2?qKK^e@+h{0T)UflefK>G;fe#{D#y2& zW10t!Gbn%Y?f&F)Y>kU_uoMx(+Pf8wpTA6s;CLBXwIm(wDyU|YC8~d6J;a3T(S6Ht znS=4ah<}H;FFupOj|(V22N6Zn3)sM6wk6Zu0&2>;A`O9FQ17=mQKa{9D>5CXPERJz z#B{I}(F#j}*QM#m1$YV?dAA;EU)_6l^qwcjtKtJm=zw4??p|lCpr%@s)P3=1iL0v} zPiLld?1pBuBl~KC40kLVp3c@E=dQu0){><6vR!UK?>xj!QmVz$pC zy2@)w3M&OEl)Q7lV7ceIsyQ_gwh z)M}m`k!rLCaT5%SDrfjYpMI@65#H>kSP96k34+6NdaO~-OFuNRi)@P5kI-}Er5D|nIC~hJN8yWQ*YAo7U+#4*I3@}Kb7Tl;uv8+& zA69B&qb-Qz$~YcGj=%Z=Ik{lN7aV2X3WITczSLgV>P) z-S&rtEPz7O!q_#8;~B*J=%QO9WI)r2BSbSTS?k%FyV|P0KC%Dit66qejs(e~9-4Z% zEUS)T3gy~UzM;C4!N%Q;KW!C=HAJJUr6RHG#Sx8?+wt5N5v=|@9+_~dQJ4$pUj;Z$EC3TNK|VQ(79f8 zZ7Kl{>)1B!?&>L(aJ%NTbR!lcknmm=AkN?;6H}fiLlq_Ao1RA9QKHeO^1S_M7wR$T zwJ4r36L|*7Q?jU8IC_-#QEW0}r(3DXXtE@1PQd%(@}WTGQcXbq>CZdU#B^DGo^hdfE{5M(knE>BQh4@p0uSX6Z)vG*=WwXrG1Gl<#$f!N+RMTu z#xy#t?1!_{aApphu+nAuZk}-A`zCGn9%JODACcz7c+^3?sf)$vO&{Homt`snLbb|$ zab3bDks4$|CVV|jkizYWUSRHhy$t;slm2$ODq&CyS=57GtCv_>6^&cPv3=V!Mopno zvwj+JPsP(X)2Gg&Q^(Z2+bw8lS|jCGXEORtBk$#q|SYN13we~ zY;UcpTF`<1GOieRI5(>Lys^vEGhx)vWR6ZSC~fZp(LkPTgnnPDK!~8~gTL?O_MDE^ z?fk6YF2`mLt>_PZYgWrfV!g`W&40d%(opMsC3G|~>71#Y-Gxqs%9D}hJv!JQ^Z9mF zpzlz~&3X8^44E8_LJzKa(7x!d#k^TMVxn!(KTh8l89|!~k@)yVyJkaPwa@Yp z082Jb^viP5x!^*Hxzjp}?-pPe_~&?Y<_AgpxB1C5y+WlHYgKq|t^I~We%1)rt+k)t zF+crgUAaA}HVtw&*q{Vb!idgomn|NTj{7+(Z3Q6l>?(Ud@{U#wgp-qmpJASmP;YhPZEz>pr& zT*u*(HMd(3G_=|-{pf=7>nQR)5y(RzVo}98BZiP_nrJg<;_oMk|%0~9V2}Yr6Y99Uf*2P(g z1$EyQ`trF`N-OH^iKPKbVGH!V;P1}iAr?dC+f(bG-#*ry2H8$d3pUjA>}2^-o8}9m zpUn(KLUa(Xj_Ec`uzKhz&F51-HUOjcBc7ak?os~T8l@we3@ z-184xp`PNZ&D|J6(oFKYufAjKQ;LI-*tjb{6*>UK+biP0Jn)N5*C^yMM zIv*2rRHgmvlkH4{1?F^W3yKkK7lQV)Q-i!5`){!T*VH`~UhrBnN&U9Bvf9>6?e3D> z?t)7GIGx(v+_}QZ)v?oW#F73T|NZ~*sdhXs5%Y~t*fGuV1`vPxca60xH0@&k53Ko6 AKL7v# diff --git a/apps/electron/buildResources/macos-background.png b/apps/electron/buildResources/macos-background.png deleted file mode 100644 index 732b5f92b3f447040cd85087091843fa38c75d7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 86426 zcmY)V2UwHM@&^o~DA<4pk=|4kRGNVFB&Z-*K*UGsO*Q|82#h6#)B(nVj`{Xy(hpa-Qe!bAlx~Re;%>nac}PKT`vJ4SP>_xmOOJ zc8+pTcd!3613)#HS$9XjSC^sgZXUiGP~g@7)X-q&{}#(%z5Jgleh}bQQ-f!hwLN_t zFRRGimb-lwbnf!y%K#q-CynPiy8mm=d;?x}_Ve@7ke3e#2#^atIOY3 zlvh-gW!8}O4fODP1(o&imH2Nb|8GA!j=uIjE?#~vo*tL~_WR1t)87wx_3Gb&{_pc& zI{jRn{=bnteE&Bs<^<*c{vxj+cU%7d`err-{4Lcm^l@=yj{LWOkOJU8HUIz0{x=Rl z{_o)bKg9fZrvE8rP8Dbk8hdF{^S_)iX(6>hUiIK9GI7m$|=K8M8Z z&Czyd#HLGU)fXlvqYD7s)0=w>>G1hZ9@X`&gT;V9iv)SC{a==vd+CyubSb#4L(3-HqMH{=lf+8k9Act>tOF;cdlKpAu6Y}`l&N+K_6XWo z;H>4Q^bl@i&ZxN9I2+{hi|RJnh}C&=7SAi)-MWjSG7^>bz%7TP~mE(DTsT zO|X4I!BZ-f>bdOlo@zfGb?mp8Ja~~II(KdyC_do+0etFdFK;r@2siw&NX*^j72dMA z#F0k!!nG-{6o|NW3CZv5I4?I{^^gb6WHoHCg8Fs+oF~jee9)9D;s-|7meS4}^fpUv zqW_2**sTjwry893;Qo8^n~ckzX(|zpCo5>Xf<(IT;x+Vy*a=%N34VQEPVr~1KnDj?&$5O&!*0OP;s3XILezh(n1HE4xevkoO>!9 z>iy4?_I~?)Qwzw`hL=a14wv2%Os>_PbBOW0XB$6*7CrfkqM&*G&@M>u=01Ox;M+3N z{TQn!1o5#e?P5c7Lwot?)_Y@fcxh5>@}S#uT4!-te z_EYPfgV8lv(aoLeL0_QLb%wikkGtVfa=%@jx_v4Aw#jH7o>vMfVaR7F;<^yssoF>1 zI8mtVKp8ernlYQ~@bFHhPknT^g10E>N}Eh6=hCDM(VlxyYDFn~gBY=;_7{2UzC5J8 zwEHcURHu_np$+kveiN`($YJop+(>%8k%~Su7-a&^|0P z8n}wC=f~_hA(V+PX9g;l1Obo3c7G}BMEaa?trHEEX!iXFWOujs=6$L8}DH$uc@97bqfOv&|Vp-b-l z$Y`;f`a$F^xdE2uFciZYcp78n5)C!iZ25CPcBzHx2_U!K!fN!()rgf&te7BI;c4{l z8NGwY06!Rq0&M0Jc);^(!~EL>^B9w~5Lc-C(dOumQLo?qL7wgh#%hWgpQoytUq^Mjmg03$eb8>Yov2a^!dzNPXQ(J0tJVojaXjF4g* zP`u~OPll5m9^9{cZQ_NVuX=2;d-R;pZXNr2VyhMA8EmeKDgSA7_Nh1pQlm>2kf5fw z+1#wTqJlPp-oafrvxi(PQ}c1yY;=j1)uLFaE#F;#1x(oum zw@+J;E@Lgvj1#wn6;%T@-JA!iyK&@xV$||!&lPTG%d;)cE6R7eaELJ zhaTB~{ns0tP+f^?{fv}_VT+I-tLNMceXxMn69pFX*4tRbYE2qMF3N)1LZ2!dk_e`7 z40J!5{u(^TqlY$(m7X5Y7PLuxCJ3)ioZ`85HsY6^a16urvy2{P3t$AsNU!S1u9O-J zQ^~prYzacIBcz zFeH7BdJ{`NS@y2^7O+C`&z#eH+z+Atixdjv3eCTjKy!|Gt!jAbiofL#!YWFPnlYT zv3t(*72|r8g@uKNBc{iwm>qDPndnrf*X;@TAM3aDa|kuwyz%C`TRW7dUTW4R7M|Gp zin9(^yUF^T%09^g<6$+$JV<4p9GO*78Ko70L2QXlrXKrHT1*LPt-Euy+<1EvYK@G> z1{Ln1L0q|>{kfBOc`u){F$3*XK7AH8bJ>^8Of-gycDdhmPE=aWBR;uO|BEAtar%O% zZ2I}feyWdANK%lU@jsNJ2!+CcuQB>S*w$*(Rb1<+I?b#$jVHW*AnY{hywl2HNgHIW z*=2tEW3>IkmA!YT=Ybc?=lad*v*6{qJ=%zF#g(?abW-Iz?QL%aul!!`q(oRuqNsR^ zk;YwTN|0gIC|S)Fl3et%#4K7PK^3$FFaYdOOR>wp^vh`Yf;%RgiVfy}I)*Zeb1(50 z1ld$oo%G!I`82yRW79r~*DbUDS2f=asOxnrDwlH6LKplZA^H0S&+f_MKm;1r8;+l= z@I{vUB4g+A!Hs%o9N%8WinMxCA-U4efo!t;psU~M%j}AT5mqbUe!3+4+pqOrFN#-w zJ%5!p=(VL~V69VmhefbT?3zo=xso!!mQLp@YR&C+L;b4DRy~ovjyKOK&^~;L$!&jC zGW#wippSkkG|$mNYCb#uD>j82cRxG;Q@fYc#2J^B4A3IxWJ9T~q^dB0RyV<$kBpSB z+xl70&}=H|>=8@^l85^};Kk*!zx*xPxoxE+W0?%)124$dSuKohRW)3eu|;Nu4Db+9 zRl4erMfOW_J(omJBFneq|A01cqq?_0pxNQq^;!(zKjL4H_Io}sT;sKDCq{kls^+Zn z+mSsX8Ab4Mf9O-rE^j_1#QcoAqH#`Dwd(2sZ>q0ZJ>2HyiJ)Q&^6pEa z#`B^kE$P#uH1|E){GLA4x#_Kl#VX^&u1km14RAuZsm4 z5=gBxKR}-7c9pEAHnUF0YT6;={$pWrz-~x&GViO9w-29@V`k3fu1Kx|_gejulEQ_0&dbMgLi6YjP zwR+YU+UyLUYvu;|i@TI<0!6TwWKQ(y8LCB80ymV!@j2}Y?7sNoYwl#x3pFk*E0&db z>zN@thhY2669WfTep}B$XB384zXOHbpBg6SX{p^}eRBSWTM`#|zmNSWvTbOBXY!K` zvh;FoTlFgQC|fs8)vQ@^4CvAsYlTGp&WTOA;j*cUQe_j?Bf6(4zC!-tyoNe5@KU%` zw+y`C&PNEW;MBC|A*ct{p-lJfQPmd~!EpI7aA>+as@rZQ6@-(DdEEntF?L0gY8+=q zt9I-`E3c#y1ja*lMjMEul`4g$M(#Q1zKJ`jnSUd}bPYN(_y%rkFWI3!uu={&Aj@F` zdkxH;jq9^-2*~ZJMQ#Q5?BL%X`}40KT!|5$pFORRzTTl^))JvvrdJ^gNDrQv z5?YvH6F(!+`XD%NJj^DVRZFclP}u*P{Jy?$;ID+iE`}iD{l^vHSPN<2I5in#MV(u2 zm6(W#9jx{V-cRZkwp+-2a584E4eQk5HE`~OvRi>%ufh}aCx_aWaLhtDlqBCRnD}D# zxa1lm6f+8+?YLBqtqafbS-X6u>BepE`{n8m-e-nG4Ib)i!X2)+;qFlM7n@uvbM zGy+XOMi#h#iSCEXnKPar1FP!8O@k!1jorFGvWtD{EzpiGpCdrcEO$km_FyxtTx(*- zVlqsCF|M)ZiP>53(o~~%HO^s@YHL-l|ta+i16*U*?uRD91IqiWRTvQ zEx^0=;%gJ@%~SEHhZ(BT6aV%SFpl)LzWNEM?vv>h$&DAlTzCJ~ax>$ZHKZDcvLysq zn9Z*$M4t`s{P~(9HjBlAg5SvecHJ}@611EZ9>#`UU}NxcQe~PVH6YPw?b75!qW4>6D#SDM!%YS86ce1ZOn*zK9xNZBrxjXCoNy`UjH{X z-BRXA$^)oq{EV0k0=A)QD&P_IqOVtJlav20P}T5hX`rnXYGJ)G@~o*CH`}gUkC@j# z6$#6Cf}#PxwUr>*%8Lr#IHGM)tg20`w#Qa!t|-ubg=YR5Fq0A;*E)VUx)Wa2cDmP8 zZj-C{ZZx4(GsBn6DhFBHT0J@XkiUz4r^40XtL(B27sK2#D)6*abvl|zY8eF1ttf)< z+&Af#;)NG~wRJmNbn?z6_GSc?ColGgvh&Fn-XvJfbhnLsnZr5;%J$5^=znUkf|g%3 z*)EPLC)x-@Y`- zb1k(xulREyhU&U3a=OQ4@Y)%=Q&*nFe6mHFm&%$%1-eJMIT5WFMzAXzYs@epr|Jlg z??8+V4N-zUyoe;VtkX50;V=60Y;YvyV;T14*AG^Ur;6rkeO6y9MY>9wUrex#yn^Kk zW5{x#d75orMDSL~e@h4xs;nhlT-BfnCPH)>PabXuMklyuuNZOYCG?+S?`PNib}PeI zq4B-_yu~I!a4M-!FZ2AtLwn4c49LP{@jhY8WAUI4cLz&CKb}$o2}aF%bZ2d^@0~z4 zYlh=TV4J^L(~Yzku@!Mp32(8v?T*8qhQ^kFx)=93#%mmOD%C70nu2>4$@Jet1uu1* z&vAa?11QTmcP^eF_tuDV66sCw)7B48dwnENs1|+}i0-9^Yr)ptuVw;@e>M11Zv|V})rq$iI8sDq=So4Qw?5&2Ui zYWCT7()4QQDQ{N|Se3cy;X5!f+$k0(g9|J7FWLS#*!0wJrg6XWMZ42B3HGOp&8ZG2 z$}~I{`O*l}jH}LVbjfrR2dKluLib{%^lb~MgDjfYC*0kZHnPQfXG<2Mc@LS}mNDDK zv3}9vY34%o$l$VSvT<~OzrsauOFQ!D;pj_sojUx&TrYO17b#!h${0!RE@y`XDd-)+ z)uBDGqdJDN#SgTq2VZ*Y;2kRVVMCkk1rbiqa@1gj5W7{O1zODP==VUV!8Aukl9=P0 zV{_!8D<}!e=lO)+ero@u37=tu@nj!)E8R-`W5`6*t<$n)`4j_n>A2`=Ua8?QOQT#~ z5o0obp7C0o>UIE6o$nPuCxfYE(T340#$~s{)qeUGjY$|DTdYQX=x_1%r13%jY1btN)=(@_Ixx<9c0FrN0&3kWl|hr7liGDX~qQ}q}qK*xvR z0Z)<%L_n~-M{qJpMCnk-muMO#?4f%$0v6%U+h_1lJ^$6EoWQt2wSOiDOY{hbqJ7Uy zeKO2)%}>IkB*Uj%16}jcUbC;b05hW~OC!vTwQ^2QAp=s^RT~y)0|)Xp?zLoKj*Mti zo2UXaP+QsV2%@EZ3q4hmTJsu)R^{7}O7EZjus5&wUc~ap(uX;~)epPP0vr&SWz=#u zgGu7_&6- zUW&A8%HN|w9~4=0PCzO+J-c#;Cz5fFGpy~b$FMH-0~x6ey0a3@4OK|nb)~jyuSXb4 z5?8PS-dI1{Rwd)AC~z0vvazG@u3LLO=DnD4Jxc}+vm-Dhl zfU_~wSGPnsKS?2vrb}SIA7@@9#s%F6=UH(&c6nXCVO7S6{~e?_Q@Ce*7;W4g?u}6) zHE%i0<4YA&%LQh)qiUSCGyjZl`=0EvRO-^EPxYtvnjRDh&6xLY0<4SZmjB9vgtPcP zkJQNkY~8omwayH9ckb#0^px=4Km~P3S)_Uxq6Lg0y^_*`uP#{K*-@V!xE7gxxxIw_ zd@hgJI|EJhI;5nx2j%fi^N!_fII+FFx~Dd7@-rE>Q#DV(%1re04R-+h;HeS-!Sv~L z!R}As+cF?HwZA6sYD1{r8FLZ#-H+@VhQORz`24rwi05RBHT?FoEe`&X!8cSO(b1w8 za6eHyb|H!9g2q&^{O_Do+Pv?4l?kfNaht2XiPQb3ms%kpNmEKni{uyLw8;6DA0$AdWGLL8 zMkyEiSeOR4b)q!$vr|uiaMCl1YzM|N6hE!_%K0Th^0H%~*s;UFIdc_yal#vb#-oaW zXQ#PQ?Omy`OJ?Glu~ie#$1_Dth9_a@Pd2+XW-t4Nh_1l>L#wX~H#{Xxmcd#=Psjis zerQ`oeX4I7V(1~bUQH4Oz#kPg@Dpbo(8KUxlVJeRs7TDMr5B>7UokOanf+B`$aC2T zQ>cudCph+o+ocVW>vDtN=IdILpx2e(B2S#3$&5(4FV{1bw#Hh}_>(}(FAM_&UO0dK zo}u_D*46^2xgyFSKnVs%Bq3w0gvnJ9NU{<#D>kU?N$o1on&@^_EXfwX<2`GkCa?%t{M{Zx9ipazpphqO=O+MZ$x&z_kZu`XeB)BYdaqU2p;3)zGm2envo zc_4p0^51&`+DSjJl<3J`DB#s=E~oo@eXi8YjTzK*(r;=07Sy60)LR4g^oD^-rk6x% z4+Mtv?wHl{iX{8q0eAOm_K?ok4Nm5SGmJHPyS%;hWq)N;rGifQ8rZwbez)+@<&+go z0$eF-orxrVuI=F$h|`Ic{6MU^nfUqcUbd_n7w^V9p}K#=c&A)`rBdViA6f63M}YgO z0;3Q@F|kKUs7_$SFc!FSYZOnpi-~@z$;DTD%ceWae#bfgm2!xG)YRqY2Gk6*(H#Nm z>!;!vvMJB*1(Um+!#vIl6?#ETH0gJuGRBo0lT`XCsFOt*5Xx%b{!3mvd&;U=y87mi zeTPdY`&zl)Sc$yAR(bL&egZK8fj;#|5);Fo;n7}P2Nh5Au1{*_bt6M#EED!SE z&f+_0Lmx{5!$mPOg@H?a;SJxDZIM_Y0ZBg8|d@jj=KassIsk}}}m{K7qO zMN`0w$-K#;i6X6?=@zGk*3>zg7ro$tdy5avmc9x#G>@AV2p_iuZ>=LP4F3wf8iSg9!jI;cjiBn*rz7GCFWMD z2J;a&Tn;%ag!`gGY9yb>UJ$3w(}2fNuT(Zc? z-=$BB;RsYTbR6s*&K3VAV|359T2NFYfl^N-yQnBd1l+qcpJZ9W>95aK6E48 z`i~f(1ju+ea|=#B7(JtPd_qvNHTYR-2A7#+^ZPob^H%<;XYb5VJsy_7Oh0?Lb}()H zhRlD!Re2Gk;fn(87RGmOftGbs1{3q2$eYN6vNFQVM7a=VPq`L`UH8{Z69&I9O*gvF z&eYr0CbD0#=@WbdYg2pJi}Pnogf2#x7dJYV8WnxrHQabu|MFpgQdMDeBJtFEv258lZKM%`gLMVIQHBhBIL2mbpk~OGFv=ZK+S~Mmj=(UkU|CDZ z(H9;2lX4;&#ku%3p-Ai9w%*FFHp`e{()S)5+nHHCa~dMhk zmPs<+`g^PEuA4 z$?DnsgPUB^fqsZHo@torSz~ohzOx?mU+(@zD{NV+4IXJ1-^_t!fKuXQ^W0PhUkp_l zp(Oc15)-;288=c_pYIY-Fqa)DVX4AdWj=I6w=K~eFMvYxAuW?8W?~L??VJ#>JI?O; zS`HXdw)U)j^XX#Bpf`SBK2WhB)KW2Qi>qpy^6ggBmu>fH2){IG<6f=WEIQ)-T(6Lr zsFqP?yS60q6n%tNrPwrBS|;2#A)@OC%YBQpu9w~%c%M9_-O$q4rd#Ty`U6Nd$8mBO zOBqY7qMyn>vllhIu9O|K&x+8SU7IWY z36-ynvh^zTT7z_orR_640LEJ?RTG9}5a>m;Wz%lq4cjzbKV}4=p|Qw2 z@Ma*Cm=i?PXoD4dzmDQ?$q7U(ZC_V#LVXG>mFPAr3g33K7Mbd+K9370BiTm>$s%?G ze!Fc_Hqkuaj0yX!iLE$0klnZ|#@Ys*E^qnuF4VKc)#NmS3Rw4tQ^5?N*1vDz)?0=4 z=y`h=T_^;ERc;$NI){)CkFgP+wAY4xeJzi1lVPfYOaU{Q!}1}aVjQ2#&Wf^yXOs}R z09%wJQ>;hkO-*7!!|84smcynKh&RsfwSsdv@)PZe@ztmuyeX=?P{_-yXhD3~HPyt% zH!er;AW{Q8CD5Jm8lEkv!HLDcN~L;=P$*NC20+n?%hxJg@(|0o)L$@ zYVC}369zBSX4AKzcE9f)8>V*qxFl^k+$OvqS2iu$f8@||a=m)%eJhmjk+fgYl&QCR zQD14KRQ$iY3pz@cvid3*nI2>!?XSriTS8m5`nW!4{xV&!)hatAA=gdU>^%x2M_?PXQgypnLKIk(AK{Ac!k@K(d~QO$s7Z(G;%TK(QGnz#mswg&n=mZo5) zzTvNCT_@l6y7Sv54o98*TK?4wUY(I5{^^`UYaKkS@|TIyu$VOa^C7>> z=z(&&eUSM&YP+qk=rJ3jJ^szvK9oq=E0`~O8cuWE6pIno_v|L5K|Kvd0U)Nr(QOyQ zfVUZM3AVr}@Za%y>&!UYR#qi~hqAEdQQYENSVU<(rT#4xZ8~sggudn3U?3mMHa$cg zljsYAxt>gR;W|43_5>Al(1NBIdmKl4(^Tw6<$qP~XfXfQEs;rS4=@k)-{=w}Rv%Z^p4F#uJ| zC-;ke%e-DcqwU@W*wk-;H4&FlNrt!l-n?Dk>u0Y9u@9a-0r0vqo3q|D3QaEBIP*Px zz0F2gqpfOJvB6onK=yN4vSGU!wv&`fXiwz*{yIBf#&r_{iKGO5%fGvYaLAib5Z65| z=HFQqHA-8p4s zQ%;6WNB%?#uqNgwyl6972;$kWYu*gdHA*#po3Li7DLvdrdQ|xp`=Exu!CwLA>^d^0 zOjZlHUUBE$(Yq4&-p=oWM-uASnk%=z=>U*1op;12F(Zzc*smwyGd<2-pby(yGg#i% z*cCB;x2fj1Kt)!7#S09I!5tp+7WuX+;-D?qen|c9fHOdqkL?!^y7@u>S@1`p?Ug`V z10lcmg*StK@v+)32<=Z+SVLvO;N?KZ=8(>*n*nqQMbZ8DERA?nmn-E9JCbZ1DbDcU#8 z^MN(fn6WGjehnnlx+$GIkxzFwPU>E~w=GyLJDFw8vbES%&MTo!rU-nQ4{IZWzoz%P zp7zI2qBijts696^{c!RfVR>ZX%lGP}+r8$p!S3j`%4OCcOe5Z=d64ASGweA7M=$}R z?pSX&?bKE$`=M{>>S&(USm@P1XFON&fq_uN(CC?NJtho^RhF;EH3hVZTblimc}gWj zDb*FOUH1pR_*oxwY-{{PeZtG2WO#l){^+X|9s6|)yM*5wL(l8FubWM}70DDEbIrHa zhhZUD23DDnwEzrOc5^pqpHV}$hgI@;~pCV1$MUvqYt%vwX+Pr?k|9iH4C7#5or*-W~a zpDHeB(FxsdhLhBVrICecB3@Bj1Bb4VIFz+4R)9H|U?v6|sNkG3{^@friMaUQlca?V zHU7__MT6Pk?tT>^%<_VaMo#<=Y5y#u>6)+>(&DD~lGBdvkc46l_vVi)qqqL?5Uc(aGM6b48{;k+n2dJUiLRShPM>A+jV@G7}5ptr{Gzh>}IMZ66E=K2x* zw6XD&7}-Wem(PSCE+P$eRe+IwSFee{IUMo{5t4hvEg1EMk`%l%AfZ7Lx6#LakwxER3 z9t&?hl^@s1Jsd8&CezCAfGKakxbU%i=_2{HM**Bn1-w(GhuQ6)K|wdDtxCoO4ECuQ z<}WR3;3J@w63%d?zgqC^hr)ZmO;MfKcd+W_Q{#7%?kZccxn7@ix9&f~ZL{`<#QqEk zmduDVk6sk~s1#4`q-Qi4KAvbfHP@ot7h&l{WJ1 zQ3YVBO<;S-M3Tatj6n*Cq_VyXkqjUxUaZ81tF=0xzG2we!dkVc#vS~S$6DR+i?8l; zKQR|#PN-=T)C@!^p1MYd|G`N&Lc)(E%Cp&aCCr@=kWF3av=U`usbg!v%MvnP8L{m* zHgs2|x5kd6?Os%pnxKtsjmpJ)a!ICdshwTEV;VsGCTvs6h~Ho>dr8c@ruYiV0aKim z&cAawQNaQJ)E<8w7KF0fWV}j0bDrq!L1uH4W& zJ#C5^u`Y(zUdz!Y&14eiTc_I;`x^!QUk|0L0lmGnnODee_&VNGr`adypYtX*KVs!5 z`oZJ%SHWJ0^ahVegx(& z8&8dply{QkJA&CiwNhOdHcB|k=309s|AxzN0RAf2%Mm93J4J1-&~WC0I3iG|RdiZ> z^WI^He3@Qy`L2*Wh~Y|&ifdxA@QPOrkxu|;sf^R7I9J|GG@Gyow2AeUs~3mgM85*_?LWI$>Qxq>@x+$@1i)U{by z^jlh0bqc5P6UtqJMCem8e7+C~%&L-_Z5^aoij(4GH|S;3s;yseKIRI zA9l?C1v6DRzM{v_3%V+bN0=cv*k!T)sDcY@L+_M?pASJVMVW;gs505o4-%oOF>ge@ zr+%E-G`H|8mMvCEAG|at)Y{dS6|yR{Ja=*-f(z^5lQs<&*)=P^Q2fWdv*h_w`0tP@ zT1QTLE0A#AH)(E4x4_X+gdQJi}}P!kiSBZW8T$eEzU3(s|T~R>YG94#_~wmv=;WYmnh!mLw1c-$Xl@Yz#7QNyVu! zN*p1q;vzP`jc9nGGKLVRp(8-{v9TaY?GA40*@X-G66`8Ju*8d$idrW0DgyRyw2+y1 zPV#jLQYCIn-&S)AQmRk>kCbFNZk?2)G$oV0INpxVtk0eN6Tx-(Td}%l!_x>y)|a6` z6nqVJ1*4-p^VSW}ueYJvj)D6xV8qevvw{jvFqg%`j`gHwpglUz1T$fccrtUYUP#Z~ z9gDkR%=84oo5~`f3lM5l+Fya4=y|WxSV7`VXf9^>)s&?7#?!J7|H~bPur=l;E&RJl z4XMmfLd7Sr4o{HY!40Q6K}X5Bg}l#FTU3M9Ac=huDGa@iR^YM4`kjmS`%+;EQE?#O z3*qS=1v!9IJKFj+lt3-u62S`$CyVGT94T^i=DZtMJ)b7w-@iuAiku~+dDxu%mhNqW zXrD|5fQA6Iv{ojH+&1dvfbj47FFi|YB6Qp7f0=4ZfVe9GntkI*Xuv)#HctQefKxsv z!2O>;6NTsMvZM0?uH?N)Op3S zoPmlH-@@r78uKP2S~_9)8oVBe69k&sEO$~QL{@r*>=!{u$43xm2s@_QF10sQjXuy) z=hwyH|Mu+!{)LU%t-M~*wWdPeb6H8Zu9LYM@=nDj*v66+BQ5In(oU8ogiPVa#`-$n zFvYlJHUJ*pq0pW7P<7)d+QXWjSSpj*BL$C^J#T#_vp7o9?p|V($xqapva%e)$jTzt z?k)slLufx%d~zvemoL4|d&Onftz}d!-Ci&)4tMc9@~iIT7D2yJ5TPrte(Tk*i}}jn zP2NykAOM9450&k+xBnCmF#Yo|im%-tLu}hZyvkye&jBN$&f#2KBblJSr-u&_`y*5p z!eF1yv5fd87Nwv^k5*o*R<;(6babRd;(&e?6=@UPCNFJ=mrQm2Ugl7tlduBfHyccj zHDYzy*&9oeSmSO;HgtFY%Er9lg`_m0j^6A*k+Pf9r&AYV8F8YJ8b|Mu@ELQ29Sm+5 z3*Ls7tL?*}MBTd8w@jvY@AvdT6kH+bs@N^}rAShS>VY*v*U#s{5FNJkcC(=?^s4tc=-GW_u1xLlTfBSnWu-7hB1FS4{Rub^0qryf40O8r|gCM)sLNu$aA3T900z2Bz>V-@XTK zYj6IdHTi|{>;q{Vzm;XG}powDg)^ZE6VhXF*(gU;doqyxu8FvKt^- zDmsb;hVM4U`}Fs?p!(^2!)*`lMMq%=(V5;*bFDN|E)um3zbbvAJ=) z6d>X*Hc`&KP8)`&x2M4F-!gnQja0KX09YG>xq9prDseY-+1PFV!i{PuU|C=t3O&!{ zqJ_NP`&>L<7Ebq19=$mG3}h8uW$O7#CRa7RcX5+8Z0zuxe={oB@31_XKK$^sm>;M3 zrPn|1uY;a4{rBTC@A4`MY^1hhepMwYR-ngrfV>?V9nSMhIS?S{rOFgg5@C88IAQk$ zK|moU*elwf)UB1Ptv3JHGl0hu%U#4{%BzIx!&!&K05i+MU$XcraXI$z8NEH2Il$sD zHx003QP!QBRQV#DeSv~vYhU~(mUEa?@%;=jXW^Apj?!%^sZ_N??{f9b+iZP(e)jfr zl|03b({_KxkZm=kcfKo%(Xheas0sPp8wq;8P`{FLve5^u^Rmu`@4Fclj3{ zsd=)K;Y)bi~CKaN#e z%H?bCgRaF;R|xRyCskM2_1-|x>>jOvWzA(Uc4rF;B|6P4s)GPZAhDbw4NxiGR18CE z-(*Uc((%Ce|ME<;hXPCmmmj9G{uQzyH$%?d*T7^lQ?{>yM!+gTO5TE6%V56;sqP0~ z1+kg(k@$$5>|J+E1Hbq3VSS=!0YYj)Z{V}SaQdnIv*h8z?BXkjOn-}J-e_b)B$f}_ z*`vwr&2XIgn9M|TAnu~{&=2Nf&M&1kHK|h9TX)^W(!tvZ7s6jEnC9Alb&$`~7%_1M zX@d!LNAD*^PwJ07k+x z!|JBxl}`&lmrrPa;$E}fWF|9D%BfcGp}e6p0K(OH5R&eN>PDUrE)fHj=>baM3ngK6 z%0(Ls3CZOQ`wA?jOing6Mk`Bi`%Zfkyl{!m2~FdLaxBy?M87NljSNWxuUXNudi;0y ze^Fe)pG8(=Rmv<kNxP@K?OyNi3nEc_jXy;Ix{r>Io`kwJr?sY~FBfVqy zW4oR(oaosyzZr;&5FR=sJ`Az!O$M*e(bWK>7d%O-$XbL_B;9l`l#tnRJne{4TgQ>j zP8`fCA;_Rduwm7X_zs{$o$lPH4rliJjIxJUPEJu8+EH+@2cDI}ik2bW% zU|N@_PgDkQ;=ffqI2^cy?w_Pi_ZMn!JJ>sU6~{zn@m-20z#%8h+TlCKzuqw_e~`_r z! zR*!*JdBB+)uP7bm%aiRsF*GBqvR9&c%$wQ9p3dBU-EBn5KQn!59dP2&mMOe%7{P*h z1%bfx{#{6G=4sULAWq1bV9kn9wZiu}@}eYUN!cH2dw=_soX8BUPPmYiq+6`IYt%5U z&)p)Eg|?v zhO>qV3zDn7QhQrWcU}?Iltj2y?VM2?$#LyApxwrpgt4?WB+ar$ zeDiI{EIYg+XU1nN^g}GuWSFJz%hZQys{F8Kaokn|r1+?Z{fBX}Z$93e2Gk$n)GfKG z=T`MGiM9Nbk>$y;n~FiwxXOBjlF-rN_v&KBy`5KeEBgWycWP>n^Q2RHfMG4{*hiJk0U-J_u6tobkhKM$3d+ORuRK3&d>`MOjFv#S4AzMmrO;# zTDB0xFh@RrVcV1FMX=XKH-jg!Ni4aGonO7g8e%4*b`=;m-iB`d<@1SWp@hs{A7|(Q z24KQt17rh-lF_`Q#h8e|#g8hPEJKaq{gF-Cv(l$PsH{RAtEuC$1Z%&e=}BPbxs5ui zm_0BYgYvbaxBL!MPe$1nrKC}@Cb#Ru58*Ag`P_xPOqfY-JeJX@wZ*i?`@PlInttYn zVbBU<`^+$H8=d=@L$6$+UqNlxZVlG%3auK`w?}r2*wK$>sOYYnUJLD^p}5}Tf6(Z(5{^iMVQ=K78+doV99_7pJv5bh=hHk2VwBE_e#*3RX*FxgkmKe;75&HVp?U{-_%M#2cB+ryOwX?##MSkEVVvQ_XyM|w3{=AOb4z9Xv$vjTR#OpzY}?gk@4nI zEzQa%Fj$pFU_lZH-CUBurgM}S`7aUEKNlU*AFY=hg+F7=xX{b0jk zV__lcD@lsN^kk{%M!BU5#aeBvVIm#v?bllAUKPw}vThxjPU+;{d+>UH5XR`)Co{D2 zWy2s!k@x#r-hG7RoPDR>@p7}6GWWIoUC8NnOWGu^(!z$!81sKK+y5^#3G=vl3lwnO zdO+b%;SO9mkcxZ|ZB`u7PT;}`)#GyZHcs6r$YA<3 zOzu$p*IR$>pKLcS%nc8Xe$CK5Zn^yQ{mt{5|D?6XHIFpqTkz?n-!PWuJnF?vHLB}$ zp{k5ll0_kCl7%*5VKDUDu~gOz?Jym!sn51Sa%X%HFHjzqWQL_O+@$@JXc04@d;Eg@p$l%`8*%cBeGnWqV*V|jFXFuQYmpprtYo50V6BuS* z)`5#}nb~y53&QJ|F#@q3W5Gwzx+KL3Y9~(`pc?>Oqi~`@l1<3MxKe1Fo6Z0b?-osvZcF$ucP54q9`rYzvqWVJGyP-ySvMT@e-&zm z3FuEYaqZeVsVdCB4)%fq%tWmn^(qulr2E45i^?N)AYq$ri!~W`$QjXu=0VBH$;v+` ztvzK#a}z>i(p!7m`&%si5zH0eOYm2_bwwOWdSlM0g@+T08JuoEh)4y-w;8^od-#>YP4+k6 zvxbLeugI^5d@XY||9+0E^qEAk{F?1Bwxq^CUm&j@PHn3{O)9izOM`pKwI;tVrj9fr zQK8K#p_a7qt=3gwsLxZjaz^e^@yOBKm@MZ1Ed&J@oXPA8(v=-}bg2&Qn)_9R@Au3S zm%eNxa@ulWXY0-54$sG5yh9iQzf~*pcch*=7Eip^bsqXVv{}oyw~ioC9He^bFs#~{ zZRK+}_sGJ!sHA_{Y$6BbA!g*Y?{ADe_qwq8wv1n)uZ0{=s5&--K9pSmu$<~i_SwZ_$rCesN9&b68_I)%A92Rj14S41)imA@yE zKD^duGbs9SUcbx#W&Q+SX{uz??&A!>+m-aq>lAW&HM#1Yu6?Mu@7JcvL9~BNAN}*% zQ(&sm>(Te-9qWMY(4KueqP>vZ7hrS~`<>@9U1x}`pJztq*3{njEvr-Vq`VZCYJR1e z!PLBH)XJBPgrOhC3{hV=kB_#Kvh^Qrm(IR+%UMkMIGB(=D<7%0l8B?!a3{(lzG7SP zI6cHWK3&Lw!D(2FzA^5udk;C{_#$m>nS_hZvj_9ioRRq10u4O=j1#s zpCsj|)KW92epfTmKOo zKJ^IUkpAcyyf9FqG3Mme+X1&x`#U?b;S(U_Q~X& z|2+f{I_L5CecXNhh@lZ}^=VAKzO3zD1W7sZ?lR}yt?-vmCzqRv=|?SBr9=SxMNw@$ zi`J~d4?6|@qM1Htk>K_UpU|x(C>E44l3xYN1XWM|M|NZi-TYyd<5HN4rbkJLhokHq zpk)lf!U6V;Cy$E@9hT>i(N-jHZ*ljvv@>k23gNO$H^pt)sHMX zy}9QE9Pa0e)Kf*Qz{f(Lr_D75j$QL!&ti|EAO`=&1AF0w>ww_cbF2?-bN{y>k{#`4MuR7t(-}!`dtu&Z=-KK9slUmAc(}n;%hK-6 z4Kz;~3QfP^?5vQ2aDCBBGhSVlw7xhcTxD?-%-5Tsn27m%U3z87klEI7N;ak)8G2UF zi+_2YPEPl;GE{(DZY7^6RJrF-$?5npA!tSTy2S#p@>Q=7N> z$Om_piES-87=P1^UIm_-tuC5uoi{7|N53$NPhDP_iv9}n-|JN>ENs%)QaYD>toPjW zok53)NJ~29Vgb9G6ueU8e&-bOK1k)_tLm6y-E6wt9XtLUXr&w&67Uj>M}fb_tXu(Rh%TaIu@ea*aEr8v~ze_?-o zFP2|#NOIZHTjAebNuFXE@-m9kzIV@NqRNH*rSjOm_oBgpa^I~<)OCzFGUK!#NXFcG zC$L2`KLZ{Ua+@toGP$_w^9Qzj3<@E)Y&=1GvSKVb7pU8>Qxux?LWl&kWOD`J6o0}T zK@N}@UaB{p9}8p17pxTQgOuuPjQ6Etklh>Z3I{k~aGD%7e|9a+Ip#s;L-UWRnf>*1(%6vbX$^_)k*C;f3R|@xBrC z<3kGFPz^`#uSw~$yB-u){3cJwd*N*z3L)GZpA9&-Imwe$|DzmL&4J&q+WwyYIpHvK zBGi5V>rwHp&od9rkk&Tug375Ep2BQrk;U+5TNdtBx+vG%mc#iV?lq@TQ?~-3ySep; z!I`j@$`L22yxG}J&q{NpUz%72t_1~o!~(vPS+i zUS64u7r2wTG2Kn)8`JSz{T!%MsLknNL$jh1&HD`EW|+K^_I-Hw`+jfQn9$<$bp@U3 zhN{d0wUdK5hlUcnSVJHQMiB}$O5(25pa^nCop~w##TybEVqt!B;fhCE*WQ1qOWD0l ze*{HU@XeQuc&0LM!8HHvLDqYSqymGwk|RyfF4kEcSB<3=y}r$w&|J-nUOTR>7k?V9 zMM$xiuH_&Hw8UrrQ1l5>tZ;=pB$v7Ye|W8y@ZwTc;{cv{kh$_#w$9o{dgbE#X+8F! z_MId=bu@bA2*DnnAeS^m4o6A9kbFjk8~P2L%+Vh*&v`X8MA~o>EJv1vj+gvLPsSWe zDND+IyI)23ProX2sirKDacX=?iV$M}kt7>|k912jGN0|#&S-+WPy~!hpMCx;f1(9c zUuIMgxcb5T;4;QLo7-In5C@CCmWcW3W;vs1KxACKYpZb~iw8_^unq)Z1Uv6RU?V`- z=xHTh8U8{pQ~$1m;CGpS?s0$XesN(!(sX$pDIC;It+}I+IH2-dv4gM8(72*5pso7b zw~3v%>|5&dBtTf6$+BeCcD0N=y#MotMJG!UYj$@5=H5-L-rK4N7r83q^UYRL?>yQR zP&!m+h_3!f$|tKT%1pf_zi}p4c`slnz!usfd14FwteyZDSJAucCV|U1TT8h;_#JAP zY@JSwuuhFU%9K#4FlyzWHCiY!@BBfv-X4Fw7#|Dx^se_jvxTGqCOvm<-o4wO@9ry% zYoi>h>0oBCB3uO@899XusqiLh@=c$^_J=@wn`1rZeju7QBV1+ zC^}JWp{r&C$yaU6uuAME53WAMc>OUa=Vwx8DT?4<`hH_~_0l)saz2MtR20k$!M@?e z>8=)qo^5AZW9YI%twj&=URncFUU=)#D=mBqQTJMA!xkcVO@O7fQIvb{x6qtaC^Z}h z1WW!KM9B^>YTr3Mm^JzO$`dob?5|`!E#=?;Qk6qOYG_j-slg0(l8l~(8iASHR*V;_ z#T(eh1OdAI308MkMdw`KC0vM@QsF7_WPU-o;6Ja05gWKCx?tQ3OtCx9YVCeBMmwP) zqXEsgnVI-ueQ8f0zv^xNiOa*ja6EmTRg=3f1nLO_q06*GjDg=eh2+PSGhrnY+um4a zxveg_+`y3fgNQXI?-*>UMXiJ?Kz$)|l$RlUJ}-_??@cHdxwlQ7P|!RaJ5Rd{A4Tta z?=4MPj}+#(YyxF(Ysm@o(hp@P2^L4d>b9?ys6>&+;71X7*+>j-F zw!?M*X}!!CB57#K?eQSLfs7 z6ZkMQa|L1<)m(!jLA4~JW`Dl3OEYd+f^>tZ@_Iz*EMnViyDqc>x|_~WM?qeMaJJlf zqCv-bm!@Fy7~j1hoyzoSXHopV#s{4xG5bqu3fz8h{>_@Dft zF`WQw=5M;R&_HpwCMn}jsrM*$WLMK{a6OLp=ZiGWglrLDwm<6?Y&%9dbTo zQ80#vVE-nXKgdw66hImEJO7Bu?rPK<`v;~Zs^{O`3LrjFmD;-bwv($k)u{CMWW<17 zW?TwC%t$U$$S$m|xT)dakb?Hi0Sb09Cj;wpe4XIC9sTsT*|ec93C9zdpwYIe#rMf8 zGJ%Y`+rEPN-STxfae3_2h7E1#az$nmQ=FN^6f(RSek$w`h4=Y5YG2D_!clDg}A z20YGb&ca5tQserSDpM}@)}QZDv9MoTGpign@2;8asj!_@993@6*_9ky zs$Me9TE)Z&vq;rkppGPTs_l|zzTkY5x$VsL#|C^Q%dIhzrqQoCoaoWt^2h#3Kka%uc;$ou7BgwyEQgx1L1)Kw}S%+Q)fhT$eoURG8UG*eo?q zM_tdoa^1y}(z5aDq^|BYPeLIa-@*4?p0z7<6`o%;KovS_S+?m4Xd5n`Imi!aQ%?+q z5JV8JPU^F5C!#H`EhCy!sX+n6q;f>38?CMcl>P>>p5r*Zlglh5+Xg{ zI_nJ#k+mTZR+}V>`*xWNr|u7 z3ho?R6W`iDYX;vQG@GeUMqXacAdNjVaY+Q+WW15 zZ{>JSOn8DZm7qMhP6oX%LrO|w@!I|=hfITGOqVPBj*P^y=Kx{JPS=W?zOc>4+Gc5g z-HH{|Es{D}yK1S4akOebsCcKDqt{SM@~sf4cNY34bw`JIcx7$=89S2+!TqtD$F!WW zcNKBj;ODqEB-Tv5fUSIzmG2`ph%+7XwW{4|O&PDWdrB5V3-ljJi5IlwNtO-uvBLbo z!l{YK2qscdn*kYr@{LjQ(ga?X2Zn(G-DWJHqt9(ov>p0jyUA#-x@ znc4sLKoueSZ*TAaE&zslMkhFFbQC@a98bD_M9m;GN^Zeez6Z0NlkPe1gUL{dUw8c{ zR9v2@X2M_gkq6cL(Mfk*pxu7q?FKL_x6b!rbDXUb7KIb5?2AsrW0hnItx03dBc~$S zE%)?(MqZpy-`Yk9fDcdSQMcJ*bzbQA)^) z%`Yja9ZOTE3vROM%O9r=ADjB6(zFJe7}m-|;d+#7x33k2N+DlUQSA)urn#IJeaoZY zPKT~~_!27j4>u;|3Tw7|u|Iq~K>Boe?os^bWp%F3wLb`bwsSw%Ot_*UK!_s!NuSkH z#sCouOlAAGziQ%%y*|-?Nj%}1sN+^*J9CHS4QMgyHm{buuecr>#Fns~Vr}*DcJ$_2 zWhPkwSY!Re(!rFN@#03N>V?-4aNEGEc~Uv;+&VKiRN}q~Je{xLS;usGN#2Td-W738 z4ZXtimk7gIi2?S=U%<_2md&tx*8#6LjcM-6g;;2*_`9Fr# zP<#0PzjMOenC+vRF3vc2kX`Qf@FsKQrQxq2(4s%y#=J9!Fg@G|g+6e(IBnLPUX-kP z34(@Pm_*ocy2zc}$5t#N9>p{{-ki5xUPXHf8I3KL>k0+;BZ9t<>#Wp$ijzesp1jS% zvSC)yd6}pSy8P>)U4K@ychfIoTUS?;;5hj(uKat?V!qpq_9F0Z9bBRj(nhk|t& zN9C%o!`E_lQEwdp2d&b7ssF)7sLYVp7VD6%Kl6U;Eym^yiuSo z$Nu)zrB-9Dh>)B11*W8E-!k-MbixK-t?D($Vq%Cz2Yp7n>0-Zos3AR~c4K9Jol5y| zpNdjqQjaap)-qhkmmgpf?1GGB$$kONUIkW&Q{|O(<>`U!|(DOiCX$E8fzq z(s0eJo<=t2;<=QkfK2!8?S|+g#+4rd%1{)PWmd-OHK4F3Mu6jTqtr@0?NS z6@bNqdv0RsXyxx<4sdVGb$pZA8sV!@H6OU%&^a(S_mm1`<9ir8eFgCVK__pJk;bJER6lS2umdT1aJQa{t5$WubA!Jn^ocpitGliA36}=$gDbZzWYKn{cvAhQ4lN zWT-Iij3y*}546aUQ4(7XQWGRY3W3kMGAIRevU1MYd&VLMBnC%U!}@vYHC<|>LnAr$ z)bZ09r|3Rx8spI$6v@M&xk#@CgRh={J|pl^i`Nn0LWZ;)RgfddGYB_3NZIPPj2uDT zcz1Bg8Hbb^VNPDw<@MX$_Y44kGYhv<^R^7#1P6%MF z_&C-qa&GRiK0Trmh78|bSoiorH7kp4^@&=&C;J{3f4$~pEY({0rP)z z&xKFZkwj4H>{txYCf9C=$OPCv>jJV`{G0us*F{*hbPUSo30eJI{JD3!a$uf7xcV0Q zKb;xhKfcL*7ml*=Sn4x%*_4TCQsw2xoC%1P-qSiSU+oo9a=tWL8Y`&lbi22JV`XKG z+O9{^b?j98pt{KFmy21@ zmHnBUa$?gsKg*%(F7%V*4B+FSv~|5z9km;aUqxAqpN`f5bEi6vIN&{$=RFJfet_x* z+qwTd@}+>|a??)-o@BIN$L*7cSBpvfcG%}s3IQTDqX~)cNwF6Sz!+?1X1;CA&`@H3 z44bJ96?^km7j{RZZg7#Y-&!TsGNi?otMdVw>SVG>_tmRYurPYUyJBqjYq=$1P>26w zqvFIpWa3qBR^y_p5`e^AvIaj3XYC*;0I!ERFZ$4-z`{*%X@9c5iN0BJPrEqw3BU3a zsCDhnK$!|S-ujH6^)VN!VaQD0-C{BW21wStNZTG-4{H9b+gO!|i!;6_dU2s@8RW8q ztmq@q8ke#lXCk@t?&nza+%CBVnol|OvFG?v*;b>#AF<`8{YP*x``s~0!MV}m*MW(U zd=55MoBr6OC%J96Z&?s)Ik-l4>rA!Vs$1g_ULe>2M*)((jbOL(SfBGlh6pPoTW%B% z5_rQIEHI|8S$dD1y$WPlHhFb!y2Lt(aq*<3=~eSWy4#WIzfRx(jF$gFh|{+QP@LPi zM@#pnb^Ej0x+$_ee(ywC)wWm@11F7+=Nw z9RBuZ{i2AJ)YDwewc%pW7(cFQ3GATgu`pQ>2rdV}IR{7oj+RE3SGJ3RFKx@+28?~21};eux@ENNPxGB)?V-njwfvD0yRp`;kd{FId%S(k1?l2W0b?d5$ zE^->-Gd^DE%c~p~52v;PBV^-Q(m(-M;A$b5w{n3I768|ais2A3?~Qc=wFI9djr$e; z7$(u{#e{znP|`aL7`eJwXI`FbkLkVoXn4uV1(ulvS7o1L|3Y$TcC%u3ci(A9E|gM( z4iG3}W4En3i=~nv$yWwC5|W~Nl^SG531$1uPQp{+UYGac5+WhUH}rIes+Ylg7mhR! z#KXMkNZGIf;T)fX!?Njey*BgCvF6_Ss5rideQs3OJ_Y?{s9MD`hK`dh#)=+(+;O2! zp0?QFxsk`0{`=eoT6EUfZk*a1@m%X_=zkR9<&c8|1zhxcQT_wruev-HxPQUHWZLdq zUzS;ro~nj52`E4oj+vX=^SrjoyGJdbJT`EL^)Y8fz<6(OvH5}AiA=rn;Bxz0M_`wS zYd;~Z3G!-?DYS2B6SYXFpge8=`C@$FVX~rKHAjoVQzmUa>kCJWza;+LaWOiJn6Uc-D;8n_O7>1yuc9 zwsE3z0Lee*=ME$=e43g0z0NuGG3MozyU8cI!=DO$ra|&O2ha8t>av;bUnpDFO^pqA zb1DQ@1lT%(7sTg$7A9>HWbQwVdt`K($TBNLXMSqSju9ihSemE{C#7^_XHrAb_EWA` z>2eHC+qdAWcr)JmZS3{<)j@%084a&0f)+)1C>A6$;U`n7N=@a#d0U;{N8iFi6yvwv zV`%_gZQ5BiUdr1ZSfS2UV}Ypo=~2!9>+u)gfVZE$Y;6$D zHv`xUE!9c*8kfoPg}1rmh27)e0F@R!uWrP!Glu)>4#inx#=_Ih%uHt|>p~I|+?~D5 z+HA*Yu3^zLa*Q|U7cC`*#}&pIZr=>up4=we=bW(Na-IvDl$@?+>RO?r5~k4fwT-w|jjbUd6T#i-~} z3^b+^%R#)T*k$}@WMbWI!%kV>aW~FC=*-Mi+OnrYOZvsWbxZ6wTbEa3PvbjrT5L=I@ssKd4BJ% zoK6-#vdz5Q%Z0jBh)W8D_4X1C7W+hs$nEwmE5)-cR(5_}M(ee*H1r$;=ber{RIiCE zKaz1;X*bg>F}6$FG%;O5n#6gU_l))x^%KHQo*R;XQ~l>y;>p567eF`ihq9W8;TaeV zITey_j-MR){nF_8&PjKY97pHb6AjEIX~&6{tU#WYHE=YDT0Wk7eDD$PN?WM965&)N zIUpua8~z*iT0Q10B|6%K88)DRjrtB{4u6-QP8ptpS}|ZM^D=$S)8I3HKsG4*dFp&P zHJ{00jO3Mt(CW2+B5E7D8Td>Dl20pz+UeDF9_G0G^W;IzwvyA!3t8`Vshg<~gUPQ;oGAf$bAoB! zo$2Q%N}rT|QwF2u=dEK?CcfJ=<7_FESJ-Nd#0=VCMgCjmQB)vPF1<9Tx{%LKkh61S z3}t`+_bDnU@u0(hpZeo{&4Bu~Q%{X=jfK8F6Jv(IoPG#76-qR44YrlpSOJ~<5u;JZ zq^pUsYF5oJd#uEG>;QgJ3Io;qYQ?tGHP0qH!p869dKmDHEjO)8XPg|qiQcw0jj*H9 zua>}C> zE)oMt&0|HH#7schydfPtc*n-KwRS#|4~Gwzm@|w=Xm~U4^xw!2vdE=!1`Yp=S-S~o+KbkMX`Kqo1oIi2xrXCRN zQqGfL?3o*TII0H7XFkX@+EP-s_$T@0$j^{c`l8=^V{6#gGKqb!-Y|zeZn5EZ56A@!kj+rz+Ll+aU$XD@tQ^ru4PH3Lny#>Y}|shHlaZ(;pmIC2DF@r z2|6RFl{z}T5TH|t<2xC~1hWsv95siW83wA7DwHV(+&&O>7W=ekOK zB6tJX+PQub&+8Y3=*|Nb0p_MmMkUfS0sUNh)*+7o%F+5%3OZem^jvq=Qt~p<(P!J% z3m;{M+Wr1;YZN~kaO%YF39V&PGAi-plmDH{RI~E`qcX=-D-_NF#8OCvXt3;(o)5|n z!Xnqv+5??}1mLUc)Ns#6vbOrrM?5$K86-Uwo2EDTpqbN(HTN^ZfIpL%af=|C^cOMk z6?*W|Cb}PRUw^rlWFd2ln^MubP|KvEmx+i^PQl3RE~rB4)Kujx}(h z>oi#4?;2fdY`EON6vO1~Ox*nt^g~VjQ`@H{Y^{y-91l@#Qujr7s$sQctveqp-VWOk zg!e1ny-cp13R7iWO<3 z(vr7(+%vXw26r{FHJ_11`a)l-Yz?OUF{ zZQ75yQax*Cw^?I2?W@oyO3iZ}A_<+3aytb~aSZ#N?M|@3p_4ZvV2@|UGAOHC3*8aw zZ6Qjm44s{-o9u%(ta8DXzoReDrtHTAa%=5CaqJ;Fz{2%S)}d;`0j5>_-+(OfrY2;R z^PprJ!IXOOKgGDABzC*0^3!ct>UGg$iJN2Ne<3Fl+d6@n1Gs@k=* z_ovcZ#j$)JxJJjRn5?3;Z7x9)(=5dn z5GqIv9_bX(ZJtU8^!ObYm>+(j=K50lq$=%qGe3|5q5|;7ev2JQGoN{rVMr;i@1#J} z-*Qc|*=;?bS?O0?ySQ@1leup+(XOfJmEVnPeS9lz&v!pZ8@3__Z|D&sm>~^OrdP$8 z#o|0^FrHCIPLDq-U*5Ri%ZPq2Ow`@v{3p?0q%wc&uA6&a01QNi)&@a zz1T!p+g|Gx;q-V`Jx9VRIXWhL8lG{na8j-~uOGS0^vju9yAH^`LxlZWOGD%hhbPI+ z<-@^4MJ3cErF8!c`*|_o_OTkHxl5>hgrqUhCWv-n;Z~>{t5t(2Lxny(?R<0tkCXJT zPSxx+ksf=0-@Svyt&>fGw*Op!e9}ybnjVmW`e5%O@0jP_azuyT41Q9UxpIH4gTy?5 zR*3HcwhcJ}Y?afuHF?pyqG^Q`p;MC(4&o$%uo3cVd7Zlr5Hof}*Hl%2{RDG@TqW?U zIZ%0Bm>Og5#ySXbm3)PqRb0(^@r%*XWkqXvH{B`=Cmn^AH~0hJsElGWYcXtVtMT&b z0=Lfo*&%XoMrF{BkpE)(vLZi{O=oz++n*yXu7I&2&Xs1gc>r6eC3__H_sKnf2r8lk zIo#YQ3drV;Sr^qIX^yi?9`|32AHAaoK!$F}cEyYWnFIc`j3k*1P2o&Dn)7Zgl-9Qm z8MrDIpqs?^UeA3W;}1FBNU)W?fP5PyvyJ2+s1K&l-WXH?qZyg0z#26IH_6y6Vx_FE z?a4oVq~fSE2FS=jAo*KwA}*eAHiHBu@rU$qt}RLmDtbcWhhAtW7iGFhJ%^@K4p|7) zfXbvYoYeQGMrPe}H=?tTQGRanL2KWK2QChYR#Y~xMEu0uHAC#ssSj?SCm#=~m*zc- zKbT@Z5Ic5g-A@rW-EB8gN8O%*m{M6saVV>LJOJ4A2Ey=yqK zvnMJ>2W87+PZSs}a!-|!R3u_0O&V-b<7_6GLIg%=)pU1oUC2dp zBv}*{+ie9Mm}C+TIB*N{T~TkPN^~f~^4;r;sV-HI3X<8Ir_Cy6nf?z?|tV(3Q)vMFlA4TsgCqXUz2Af-jG>6;HL z;81?p-;k4pBVrCc^0RChtJakutl;$y)@y-2;b9E}cfGAJX|U}xd5A~x$y0h{-iV<# z7Q9eWD}JN3mPTzJP#;dds2tYae=dK!)PbM0_Pr zEnK!oKh#2S2Fi0h-=}aYC*2w-H(KZGtPLj8KH+fvM2W?@k>D5mJrYz;lOLfaQAeR)eF#U%o%hMv#F0XNgei0f&at5iE}vvw-#i^gzYC-nKeIWFKIX>?VmJ6= zJaUAZXxTbsZa>ifZQAO3uZwgKQ3zJEfOglrtaQ{7=&sYO$JV74M(XX0ljwf=r%yZ< zF3Tvx1PZ`u!IJi^8R<81*4|j3sdMZ2qvQMC?;SX@CF^_YC`+un)hi$NGPi67Uy*ua zGuS)1H7w%&4agJ@dfiz3Pw3qvNU7(vgqXU4s>#gXlDFBJG+X}N)y7vU3d#kn-DzAP zmMwtpX15k8{ec=^FvF*l*q8hgX%=K`UeT=;X8*PiB9~H~ zIAHQqxam_wU0x>b@qK(~R~xb}niTap%;XEuJtNatrFzv>QN}9(9|P0!dZj`xNj9_@yGPj|1|N1>zx@zh%`c&RPc>h}wB)syaQOYw zWWgg=Mi%Y0qVy0|dGm)!M(thm2(5?UlUQb{&JGt4huikTAbPICBv6!bw?Di!bC5dE9H5$dR$*PP{8gAVuy8MJBZ2|zV`vTwQ3 zrZuYIc$=3>bgMcz(EYOnDV5(JKkLtDv>s^Zg@=VVFMx&0>3SEPJb6`Xy&wToWgyGl z)F8sO`R(bGlAaipz8geYSHMn-R+F=ck&RLBXN|?}@9wI~vHlAX=J|lk^8L=R8kP@S zI~CFgL7TJ>yjOb}xvo;l{TD{khB$D<7_okU1P6xDp7mxpW*k+r8PlRP^1SOVA7E86 z)#4r@`vhHe>7{k5B~M3wkD;-RJ3g}k_Vzj*3m4)57Ws=%;JKU zk)tl<`?>{qSwP!GwgaE5b9b(vEux25|H4iqqh*GOff%!Wp}b)%*D%(a4Bbhqiu)#P zLmaZ1hS3!$bg!iN2tf9SVmj=F?R(z2X>^B3aYyCizsk zZZgw%{~RE#YTezHT*!>9O&YZrz&>oL0qIa-duYT$dGz>ik$TeRn25+bUf`$CIz?fL zuPE1uKq zh%rf1=}!*xUKaoc+D##dQ4{u>5le(dZWe=>LC;OZZo!oQ?a1@Ftus&6kxix5uPkg@ zUV}N|;sb_tcpq2oLXDA2AMW`b?0bV!oask&aUbSwnH118kGtgv_mPjM>#Vbv}NHsw|_xonT{860XtLDs_{B!2|&xN*a;x@J0kvfcXsHe1@TQ_S%+}O~^UusOF z6h~MT3MrL|<4fS7*2y@1sue&r+4CcPZi`*??gtt!%_(8v!stX7$g)cYX}&&V;1vNV zxEo2r1(qP6po%&w9%kJ{bmfioDCc42y|KZvuuwsNg&N8g`=ZWp@?-g}(Po*o1!hpP zxY%|IL`deLb8{!ux#@Zu;xb1$`bku@gUicN)l`hT&OR zU3eXR`Ed12WxXp#M^<@6eXNLKnq*1zH7Zhhg3psv6JXN*DC&Twyl+Km$!2gTwTa0q zx^lhotyg$wUl^I2cRoP6DmXcb%r1Y5)W;@1)HExI=Eupm2%V9J4lHd}W?ny(A-Me*v0&X&!NEJ^E7`rv|)h-NTmq=P^dOi(Rw6OOg* zQ%=zo*={nu%vQQ_yUF;Vz>==ld(y|yZM(u2-8_|Vyi;oimcL~NiB`@$3j_<-#L4H5 zWWL4St%^PO>Bc=!lCJ)0vDk3;TtF&=3Q;(hjVa}-zg1Bx!t7=}jS>C>Bz(;jlE8WU z!8#Cq@-qx1%g0PmFFg}6P3xAI-y6Nr`s~(SHr`53RuNhg*X!wtqdsv)<;C5@Zqfm7 z9MawbVSwYoBs=nG-}1-MBBhtdN5W?U(>@;W{AVVE*KBA!y9 znOxa!Jw>LUS8>ozi4`TY#;z&T7K2I%MH5*@Z+~dvh?3VMBzP0HEQl62E+%e#WMw6_ z(;p~Ll&ongqUr&uCW!HIUG@^zvftqZGz7X0wBs)X3>(H@>*yVzkO-P@`)M}z#3%UF zk~M7hu*~eC4WW7$RP)pdcEsCwL$P`hJ6DT7+XL2VN>A#9#pZLoyyPlnp2S!|ndl$*YvFI#o*f z9K$5pMOdto*8d`P^m#a*78djU$!>xR%Ti@rc_I_ZLQ}QNczJ2baAhMg*<-N4u z+~4(yY(BNW8+OimDZljFRvKLKG|G^Na6oM@D+kE@aK-b=N8QGMZz43_YI#6tfA;dKXcz?5 z_mel#;Cf^HKv;CYL=h#%xEQ?U9@x}*Mm4$G=kt(ML#k}A`s0dK8U_E6rX{kQ`;HY) zVKs5erS2L%iL09ByG^d!Wk+i2Y4cf`^Ip!@g0`>9hxMyD-G!8?xXhosSYMi4W3_7< zlEftd`Lq&O`t>5X&Xq|lX@~ipino%dPNqU5STEo&QCvT__*lxR6rxaY>eh@a;LKDE zbR58Nn-zk(snG>8+8`U(**)hru(pq`e*RWA+SI}9Zi%4iq(MMmX8HVrEWTk(BLq7@ z)V30iQqj=kFvr=mU%%Q@tpml9hr!q(s6>(0<`pBH+Qypk&xE@I?i*2(vUa({L}@k7 z7Vqrx6?#9X@dnyIM9n5OovZP~PRHJI2tKQ}jEOu)W`=y5=GBVDe(ZSLh@~o$KW$(b zdTxEnaFP64B!0!pl)iDRY0t0LI~M!p_{p(_qOtZGjf+SvFgV(G5mWgIHoo?)4Ajfz zzvFA;~vf5Ao?UxY{KJ3BL%1xR3mO)kIEzf6DvNU=o9rX zH@(~nv!rPeTQFKis#E^_h#Bz_qF!nv_yY2OQCD>{oXqs%V>_8mWXkH~voj{s*dK>i zwv)Po#7706qI@|X)TMT?rr6RAxd+lcKfAN0?PvGxJ?UKhKs8^Okny{M z+EuV+YR&%LvIbGElwfV+o<6%e_B$-3XOXIBjxEe`-jiREdXqo)mL=}9${U%<_VIeQ zp4!nME|{x-caS##CPlyG5i1KngL!6d$EtI*7NS_bHYogTd#Pt()%93LU{G(U+Hnc0 zn#YnzqvSWyLl2dRE8|{=q76l!|S9IR|sI`?a@z!~5gz{~< zUqaZ`7)y1It1etr7~pHFheddrPIsj~dbr)ZNwXXJjq0kHHsOV{d04hjm>VM`a0?TT zQ-5jAT6+@}OW>&-cB)T|KZB(|G z*+Dh_D^3fMs;sM`thXu1Kwy zTg9<+D6Wdnh`mnHzt?mkb;5dNa?t$r3h^0gU{=?vA+MivFKGL6M5owz%I&CP7(Qk6 zRU|g^Od^-bHD*(mc-NnlJn2!zrG(-Ff3oMAX^MvA6n)g1FhXb@4Pbt=~nulGE;( zc-c?IDfsoWIXpr;bi0~vcNo>vDRYMD(6c%!)ceSuc>ZP4XDn!=uyej%&woV66$R0k zSjFzptU2HD%J+coKM@;$FcrnQ559@OC40lK+Zc0g8yWsVYz2 z(zg&u5Wr}@X55NRCE7^S!J59hy_B#fw;z$>yC=!RdB2|J@oM+Xa3AK5k~4qmogs~; zm!xKNd+)(A6jNZm@SY0{xwXJxgaNLHvh`Rc5cgToC`17yT`Dhi<_TN8wGIUX*fXHVWuWNmGlYqac7exU-i z7M3Nx;N-*F!t&fgR(>8tP#&bTh{bzR6e^4TBzVE8IpWlK18^pvRnzaO`xg#LeB|S1 zT??7YT(TWyqUmmRChm@Qv)4CG(`#3Z2Kj4tI0`9MHAt!Ffx%_vqzMy1jfct=aNU^SNk;?h+2;H-NK`7mf!Q|NDDvIPJ)382iKI7 z_>~w(RZnSa{CXBR z_keL-TSG^c-Y@DEf51m4{G%QQ3dzCr=>w{nUZNyP2o^i{4n?As?+ zpA4i~0`JWhL^8h^=O%vNPM>)CWMXRWD<|XEkbya%YcUF2t||?V*9=@ z_r0!wSWYtL8`tmx9cLQGLDSG~Icsn)D%h&IS^8pj0C4q1Fv#4xxor=Qc;%;i%Z`uf zo=gn}MZq&(mj8KMZ%EMLJmkSU6n8G9eysM^lFRz3=VGo)`IeM=&MNJDj(0NVnfp;m z?0z7&FMRsLAM$dtTvlb*7lm%Gs0=0KKXs*4ZVsm=EFeEnk8FMU)Aco~?%sL9yB$?E zs}|g%*MKF2!syq}&g>i@PP4&Unp#zT7Df zj2X5{T$}(e$#er3nzjOp6Z-krxP9BjRvAVyOdQ^4CVff;U*9gPFn+Zc3}P<_zu%mS zq34Iq$fY_|RIdlYLey?4x^}nOb9c8;4EFLv#F_kS_H2!){PJQJcM;5}| z=nc)kDJ4#rnz3bN-OeloMEqq0i&g;XWHP%T0|Rh&`NGH2Jnq zthRfo0RnGL>z+qh!1T(LxD=5kKjx{^k)+SRzZ%r^C$#WMz{$S~{Z1rb5O&UlhTcXU zW7IjUMU1W7^SZ-sKaE(tDH8SgzgYl)XS0M3@G@75+m;!*#$Hv237tE0ZTDZhlTxZg zYo7>DV(!d!8W#W>2ksW9MRA7rGEIZ@WIbvmk3Sc4xw5ApGebTzGvyEJ?qz?`w3?>2 z=v3tzbY~05fBVDzrM5c zBi&F%^4;U*yAYjl^};sx2dNG{EdI+cnJt(z1IMgVHIw5qYx#6GP>O(8T=YJ3s!;Ok z!8`8C>t9f9UErTL;aYvb?0+B1>?^6^zQf^LZ_#Rs-bCEE;WyqqFT-UP)e!{E8%Gud) zTdFwvI|P)4bJ5|iF|9%yWxN0$Q=)aTY8 zAj+unSn2Z6Xgea?cg)W11fy(poGB=$J@CUv?6GkU;PZ(pJ;mX+qg^qa^Bi6Gar?8= z5*hxH0n+y9Vwc4zb)`QkF990vzNI*M^ZFr`>R-{(8cU%VNZ!Uq5u^*DVLJ;@7RUT0 zCw)TFx6XeioLlI8bpT-TL|^2*7wXtDzOg-A*a49Zm#TZs5h4ld3joyp=fc0H`YqeQ zCQA6|7&>w5H{=8VuM)8^bRDV+$k-n^Oo8<@Kqym>*fG-sM??&$a}JN-)SVv|=&rZe zv;$>+Fx3|c${u|ya{aIoQnfE4zS8GHEeFka0GdD<8;s4bsy!H=)DfE}FcHz4fkmj) ztv7DRi)NM9b33&R^0wiFh>`8w=cR7XzpVuB@jp3?8m4_tl!-|KMiCezgCorcc|Xx&wKJ5lpI1k zvN0FJBv+bQE{o>tS+R9I1txJ8sHq2a#GL6Z9vkMtlnlNywwiS0A06b8GqezkOCCM= znN~5+>Te(N*(c;qplR^<`2DB37c8(Wwtz{GKFn!iIuK8*IUelsNC3N|eOd?c^F(4H#+&p&`mjoeBQa};YNt$XLP3B&=NlsyoQm-s(Trf? zaJ}IPB7+<-pWC>9M|2i-&r9$X;oL4J5fej!7lM8uqdH9OSiG{X-4Q??psk`GB?s!oEln+zjU3RRklOMAdkDit5fc^}& zhaDk^FOvzg!Wlg7mOjp?6w5)B@4dP=_B92Aja7dgPejl8+O!enMSd6Zi3iiG@h^N* zjNi@0=xlUFf17k;#dVVm>c8%gNq=wW-LySuN+uZ6{HHykr=91qZhEE|F(M=JlZjz; zljNvR%Gj&j0G^l9WNd!#ZfG_`jtRSR-DZQYa*jq<4(KpBd*a85AQwoAwh_9yI;afY z6J+Pa%B1S&O37QMVi4gBAj4;jSd5l@d+w~GD8Fr&81Rn>$$CQO*r7+xLMrM{hWnXA z;^kI2@Sd(Pybu5|(Oa*IK4ua>I65$wvK9Y<&jP`13rYAJT8uua)djw}_%G!VbG^ji z^G@92CuYYb+B|mJq-_ufw$dlD>wXBc`TVKTa}YakaK%=o*-`c9cjBolO&i7^ZR7rz zMronh^^08V*|%*TgsB%Fzvp?-=#$S7IyaJ^YGnWUU!ep6$+zZ}({{7p@F60{0Y2v-i_Om{|6S#uSL5=7 zfw4n71NhS&TD|41KRYU|KUPjmiN$>}`9sa;12m;^Zb+}+`}(WVJdNPXEFMU zsF;{HD?@E4-XEMKuBEPv9 z-PAhANCX=)=h$mJpO722Ag}415#PmH^z$yAUl$>Mo%1{$4Ocq=`Q6HAjXnso_bPQhSVVv#Dp6a?%XHClv?V|-$Z za8E$As=+Y_(a@boP6ccd3(#2=R*v{&*YFqmBK!NAu^q=O7X!$FE5&aYN83>bJlT`G z)CUz<)Un%mPghL-hP*#4FE$I|clAQR>v|6BO|1yrA9CXMz}b2Lu^461`T_TBn?~DWj~J7CoP^&tiG3bdmTfchUt$Wq)ohbK z-~;*G8fIrGGSC@|fN475)_5b44c)Sl6Vb7vgCMyQ7hY`hvJ}sQvg66cdxqHMqRb9z zb-Lndo19l|(rVy?rb60+`0YzMFy{iYIs)hRD65eM3ir#qXvun4V}Ea8em2Po&< zW+o#Z-;g9F2g_j;Q0{WuAH1dyo934g$Ee%J#-UB_lHD*d+GC3!`p4<(oX@>&GuznHmY3wO zt^bV{qjBP3jtU9yG(RUcpP+4tgvbQ^4y$LNZE|6%B{u>^ zh86IntwJW)xt+ZmhPh6b75==gl-wfsN1|h>a~7vhYk|mfo!{lpdE&EUK?GBdHHE1> ziNPI^zNSud>_5}sxTjSGivsK}!S=*p@%pfS+3@HBw&w9t0TrF|o*l*bX|#N{Z}h`w zF@-#z&4RoH{IdXfOLF|Ma@#_bG+CRfJOtRn(=QZLHcnBB@#nUkXk74lCK8`dumF!> zl$BFY7OVV4D4!$n+9rM-9JGeSl72(P3o+spPJ243@S=Ru9@JaeDnQq#Z@n0?O%ePf zQ?#;G=X6GHc4cEvVkZEP-x@69{;rJj8-=-JbuJej$YSVKdH;tp@Q+kc7J`|N@RR=gUZBA#c4CzmOqO*{RWDpbK4TexFAjz(!4$Yn3B}&8yU;FV-ECMU?C-N zqsgC8*H>h>XO}YueqV#|i%Q7glaw|PYM|~fNZ>8sB=SOSN_~L zqR~Fs=}0PA3Jy9&3J^7?s&D>ElftXA&p65NAu*4k#D`(VfNhGNd5LNd5RMAKm z(Z1ODJp<>{hXlZxK$s|5bYhdqnqT@) zN$79uO2ML(9a-xOKL#e;LoC=?mn*IK9kF!`BiJs7Kl^g5*cZYC31BZ1UQx~;(S27J zj`wusW1)cGgI!%ZY*!R=<7F@8(A@SSa*?o(aANTVM~4@m)k0MFJ=q0ihZMgvc=0I$ zax7NA^_mLEM9vOpjrJpcY%N8gLz_*oz>o#_< z7eBE}9$aW$U|J}2a!4#Rc!7z;&g(EHG(g<^g(Gf(KBU5XYS3{36*6A*kg}JjF)jo2 zgG>*zX#)t@@OW!JY5?-+aSNQcV1yaL!_vB(Y>W5s=qoN$qk+JJIm2DcB%B_4Q= zQ%u~k7!8Ou;twr3ZNd-1>U1OpWR0ST4{R5$7eJzyj&g8;V^Yo>@dXjt5e26$VovA) zXsv3R9zlNKWl8?$V*FEac-x*fiLTFsRw8TEy6y)Z=s)5hW{flE@K*hsQhra3#A0st zY31oa+x?{yi&y>58{^sb9YFcDf63JBq?``0Kjt^hbHerC30=pe{13Fk{k+C0zg4#u z$5OK%eBd)`!2d#l|DRHNU4FcHlzzrcIjMGzABDhwfdm_KSqIM1M?~k*g&(U3Qd~zqQA_Ss;VJ z{49M%V5Wz*%;PKhlD}16%2S?U%lFL|qqF6^z?ae9h0P5c_si9h-J`-rAUnx-XzFBe z62kg`tp(%k8{Fk4qUVXEZA6x9qj3pAShrEs+j)d{C-E zxxo>)`iJtdj0uawY-7P%Eh3*7EI=&f>LBk}s+b8CJ>o```-PrC{s_5{Q8Qtyn9kzy&C=WE@2H9bEueD6c&-PzK93yO->8_ygCI565G{ z!vX(1k7vKat6T{3lmTMqRz3abxQgr}GPE1Jk1SjPGE&vK7FqN)?QQ5b2;OQg&T)nw zzhfMgVYeZRQFb4(KgWzQ^m$$szu+vcjevtfY$vdsRK^y(_zN#};FC@)ZfAdOMw(^E z2nRdCW_=E+e3W#vYBAG+qxKu|i2s%nFE4T1J9S)$iZiNc9J^e6eoKPv zjPm9^x7bggRT;DAU`%rz7J0UhoQ$-#&u_Nv_7Q%vzMddwB(CiS* zvdC`%F)?|g^SrhW`5aShqr*i68GHdk`!MA~6H8<%)6VWjDe?CHyV`Pkf|W>&2@PP^ zI#Oam&F(Q^f5}^jx&m%5;pv0Ong?GguHKPcR&pTo2*+g9Zro7^ZDJ zrw|W#^X#*6WtJxoz$Y=sJt8At(2wVPy{Ke|)PPJBmbn~pjsWpxT!(qs4jRZ#z-OBt z8f&z{yalpmca65`LV;5MWxSj6VyxL;qg`v`oIJcWAJBj~{*%RMiS!YTBuKMni`+O% zG&eAi$>0X6ccXHP*p~s^p{b?m8j0o^A%d>4ub3YQ$&Dp&5w8aBpA zVM4nF#1|I~Pj2KL8d$1TFx0-Nl*pCTiC@v^Xomo6WO{_lUNBxMiQ+QJN>`O=7U!HtxO^9$)cGdB(YjyrW%L zZl`5joJ1vsPs!OMtW5M)i`zAR+Q+z%QEnbtqjpNX*)7Ef<@{Mtw|ff{9~Z}Wv?}9` zdtTa@7j^JioDc|OhPa^xQg@F9h}cCS!L+bRqPeI8abpYL?8uV%%#wGNL<5MKMKW*P zGuh@s>iQ!fus!A2^10Q1p@U`-E3`rrkp%`jqmhBP25rg<8t-N+XxCE=VgvA-9|jc+ zT3Xmh*7`AGsty86=s=y=&HKl~S&V)~0llQ0M=9ujd=TR@iDZCJii_mMy?jjlV;_C$ zvjyS*00jZQ-R@l`5@_sxRxComm7wt`iRn$l2K~>o%zW8^Kg;R`BMbqu5_O`y1b9n; z#xt*<(_r|q=9$OvB^rxO_fso5jyOo(#wb!Rba=Lv-QqVj_+It^E1}fARgNU9> zCLDVZpn=clifJ4gKqF^8l|5H0r_4FP`THAs&YguQKk8v{KFu%}C-WzA(Lp}v@)0eC z9r;?D*e<%M)P|j{csIny*qixR*-$*R+1xg>ttF0a((?Sc%4gfa_Flip;$tbFc;FM$ z(PDH26(qR?eL+F%Hh?`Mn(W@j+{dbWCia_F=cao1tKP&z@(H;JuDXri-3LbGooA$J zHn0q{0*ub~#2kCq$TBXS+SjZ*laSH>0h##5xYpS~y_qyGf@I!jJ8A;^Y7+GyT#ytR zCtJqGd~CMjc#_4WRvT%;$<0}mIS7_uvF|Ds65GLCmH%N`efo*89vmuKma2hitFfYL22 zf&lkJcW~sqxRs2@14NR_UL;1S$;!+V+dxiSX%FfM;G39USG#<*!37v{<_l9k69ED(1F|YiH|=1NC#+Hh|+IPt->OeexN@dR}xyLFxRj~3y&QB z3|yF>R}ef_f$j7eF@qD|+&}0u4l|~hfm{m_xI4w-k6qTZaeQH8NrUI}1SbvgPd@v_ zC&9r zi8=Wc^$Ka?o<|qw%z5FDiOZk}crsCtxp<`W9JdbC{j~m2kSN}Rn!Wrd^-MW`IJLDc zZ{Ld;qF>&n+kDETLu3;{C;-nFr=e`}>Vb@hQWy`2Q9y~m9#vwaU_AztLYuv<7zjIOWL zaCy|8A~+Q3{aF67Vf*+HV4KfA`LjpD(I;7kLlcG{kqqMD2SG#vsIU|H8*)0|z72mZ zN1x{qA5$gYS3tP{B5NPY-CoM$3qNT?Xq1yvr&JP}bwuO&RmMNNY2R1=P30a3${&@~ zbCM-JE8g?U@5#uMqCc*j3lWP|0DEdm#|AESCuO&S*y70%Zqeh@b%fDC{QP;&0A-5w zvEwkmxadL)pC1XYsdLh%v5{QtRe+xUM}RVm$9$p;8lI{@Se#0NPC$?V$U;)ta>y6Q z1RgKo6J)gO-2aGBo@2%=eaN{E9v{g=!+vnY0LsuShC>-1A@gT_pVu#v7xjbt+WBqx z!`K;ElY<7V@rrYNT$8&C8^>O%wB{>v=XjAJzc#jIpD%5>UuWV5zBj(8pNsQ&F-nB@ z0}{dguziKitHQWS_=+GV(fjRUul)=>x<5Le+@^BEhVQwsd67Tx`9+Q$UGyaAv=oZ) z4f4dwtQWJ;9PeNj51M(CA9SF3@{fEImo_G~fg?LNTjC^R zR}`7|x%%VN&JJRk5Q|(pIm8e#jY&vTTK!4J3Z{id{V+fWW5WA&D=fGb|_ zR$A(CKo%KQb38A~j;!eiu_Fu~KKbDM%c|rzg!3sTY~UXr;5ruSV}4X2L&A>zG?For z+(MGUF1EZ2ilTtG^l59pWBeTmHdG7Lr$ysaa?eTWIT>TIO5Z*qA#7AXX$%R++=xT? z8nkJ%+WnCjd_KiRfA~j)aC`vpxTT%@8ni)u$iA#nFE3UlC)D6}Q-K}dA8MTcfUzE? zQ1dN$h<~&hW+h7*73a{D^33L=3NE+(>l@9)TM;5^MI#id4uv%?9xq<8A@Hse0ySsMg_zyxRIC%N<$CYE*CYXfuF$WHE0 z^bU*BL^ey`0q#lu4(#04#G=1W%w6K2D0~crk0U00kTRw-44`rQiG?R8bL6NtI56^z zWaYk-H_gxDNB=125&&$02n9w$Vn&NEn13c}S}uA^&w0%^1iB zz~j@jVOaL<;2_V!2~u*ip~>chIwSdDylF9hP44)#2y8pN{mw1zabXcotU&q|Ut@BG z-vWt&HZiUPJmO|C%Hsgwk;i6$I&-1nFGs!2bECpVI)QfOVE7abOM%ev>%|RPZI7Ji zLa~J$Ib)2Mhkl_eIDd%;8VCAg_M0-AS#Th_2DzP&6YM2XC+xWGAPSI$&TY`Q6~}XG zdv?i0vK}v0(N3|24m@D)m!e2kNcg5r1$^-*bNNtu##QvTa$K`m{+x9FoeKFh7JhK# zb`k0jDL0)An!!Y2%8z1>fO5BsL?B^1ETK}UmI+%o?*WEo%q%5DDV zCG@-;eMT~$l`b(e9#}-3w2x?OK*+~2RNeHKZT^D0&RqP1B|ttchQYGas!4^P>v3Z zzh6q>Nu3m7we-lKbI#B=n24Fgg&;CHFNulz8)l)`d-*JzPn%de3~7PzKOOXG07#@|7!`aXVZF*-)m zEOraL?d61Avy=u{<9*yTPQFhX+;x}isUJR>Ozm4E#QmqXp?O9VW#kNlHIdiD{UU0z z%T(vT<1Be5Lf}NT$X6XPHQPyC||zcfTSv>3C2;{!W`_92-e4njGz zp33-Io&%Pb9Ji>z9gmT^z&xrmk{!jwdF=Ue$zjVLFF~;&eT$tMz_ArN>W^?k{6Pvi z`H*i}FGjfv4S{A%Sr&mTta+IUAe;S|*ax?Z494Wh#Q^sOQaLvG8}(k?3CAAxe<1?9 zgz!I9qtg#=dntMx%7{ajLiv)cXy{YM2e(GE3#DT1PAR8L;gh0^?Q}In{BrB}bvb#V z{LOT9@ed+W9UuZG6l%eV6c(by%Z}dDGE54uH8(TlNPko5kCnL1&v{<;I-IZg zrkw+^KWO5m&K9FW5sK23BV&2VAj(1#fbJx^cTi0&8jGB_#N%)7y!;Em>55v>&)yi(v_p%Y%`TrIXj}z(WU=K5)Gh?v(oJx zdMA(lmJ6<;$8W}An{dp;$FA~+DtQhS6Fxwn3>?Hx;iw?yp$Jxe%%4l8?~77nHa5@< zKyzwAnqkO60|udrkj+}qT@-`1VGKN>`G9AqInQDW3&9uauvP*2y|Ng<|J0qfxz`5c zA>ebELOY-PAu?-u>NlybiJ68hY4~c%Yiyu`{N6T-?O8rFY|V7aYjCZ6Y(($Vo<&2w zi#(R^!q&nDrssjNVBf5GALG4QKzE~cO|`~A6XG`3%;9wN4be>{ziLYP~fui52?fj zpiVq9$~Q;Bfw?V;QZ|jZOvX}tk%z{Dk=yjyc|;HX+ghE_ezaZW%}bcdp;P2i4Q^-z zI^SW0F)mudX(vQrkpTGY92xI&7a#aZued0aSRnsYM(Ry=G}_jrZ$XvaPvLhSJ0Eoe z@Yjo86wV7tiA|)7K-;_^oxi30Eo!2Uz;;!Nvi_5x2{JwgK|bLdN`192#j0I3$Gr|DQP3=^w61Y@_&f&*8yRHz zea1qMZ-@f$8JFD3K3brPPP6kv8#;2t?S*OQ(e=0vjlAV;SLG8q_@X-mHN?P?o#g$k zQ#IslM_NN3y91;*+T6r8Bq!W4puLxmbsXuVBb8*0nuJ}(yi%VgrZqQKnoTgRn);Wr>R%J$y{2YWU$VFyRwAwuyt#HJFs~odu8=7TAO+h`-qfyd=vb z*z%ME(eYX|g)mogc6syIL7ST@*9#))!JAWrtRp|+(dS%H`QGWYw(+0iL%OMqwmSSbHUjg?)WyoADzDgJXYw=v14 zouT6+NkxOp6i6z#AB4ZG3p$G<_ zRc8D+#-;{aVu-A5U{`=0{TI~S9jC4z{QQ#=&+eA26?_;mQc@vhQ)|ruL-4cz5OaBe*juD6mqpdt&2ls89Nupk92ckzm$*u!=Id%Ulk~KVwMCq zq+;Ysu1n)B;VimG@vg{4CoJ;P86FS5Tez=tp1gg54PCi;GD04k)XM=_r5 zSXq3&E+Ws3daOx?mu1-5L&oy0m)&vv=zl>Y`C$@9#s@L5YsmL3uLV@t5qwTQ{(%ZS z#(=#nzHv=_(8vLYql5blf*5I!E|MJqI`~>9=uR?*PcH%?G^B0tG4L=WBYEo2=c4o% zZy)%dB>BIqacE!Y#C{HNhwb;JQ}JnxKoBtJ1z7my^G?Z8L;^kIDrbR+jj>2Bf2#CiWCw$vx=Z8&#k||B$6lHYO$PQFi?uB@X936+OeCfXz zp=lDzq&k2cp$CG64l%;OhTBXzxEG_P;p6Z-(So|ZDV)jA*;rFc8_qmzB+c|K+;v(o zua0A(zg5K7R$JKT=%6hNMc*4Aa$7$4+E_-iM{li74|aNR9S92y4=Y|)NJom7_(#Hb zRrr-Sy{q7_vvZTGqT^rCn#Gt185m54{^br&cm`;4Xr%{F+UVL&(QN}eN_Pr4Wo*WO z=UlXxaER|9Pdu(0dP=CF%LQdjR8d?Sq}+}y!mN*h2}ZFIGOGwl9v#Z?xsb9z@kM&F zbsKd4uBDw2uwcZXG7F#35({Pe&Yi26ETY3))jads>PT+_x9R;Htb#zkE^?*ma%;}E zie8Hb(}^RoDCfCR>O`D;?uo@Ii^0Yg@|YXf<9HW^oZJ|};Y6j^T3djTLL^DYyC=SKjxvjD{&3CP&YXLfir;Tg&DjnT-I zf8er14&6M)hvcl2m^$}7Avppj z)}wg?x*&_w{hAl~S#*sS!{NnN zox^Ak$_N5pN9*Xpmy zuhG_gEoqnZ7@s!-EMKy|V)+ItD^~WAn7AC{8K-Ah`<(o`N=}cYMLwBI5ZZf*f5>E zDhzhOLsKqs1EkZ6N1F$&AMV5u9%R-#XP_M93q&sf=$H7)B!yoRrueg<#7Mlq(CUOY zg|nzaCSx??B)VcX)PjU|M~_7)w|hS$#n_Dw-H1JRXA_ZeljuMlSug@Dlz3q&zza>5 z3qd*M=##TpO_};+w-TH2O+9!{l0|c#7gg~_z+(Gv$@YJ(oLxm8b6wVt>X4{gzJIIY zfMuOvSQdGhQw|<`MQ7>PG#CTA(E1^}-MfGUv8LVl6x5HD{<(DCkYg64sP6;D-88RB z(Q|~9?WYYv!>7lR92;*39;f2BsAYH)f5@Yo1YNl8kgE(HnvFzumcy6n`pIv4$Ltsm z=Z@RmvJz?@^Kvh#9aA$lGxvZFw7J3?V?Gw$FlZBpGRsq*AhelZc=h|5QgkLW1EnqZ zK>VGvHQS*rw_uMAWahCDTUW;s#T|KU&!TIznZLx5zXtB2j`4TSx97bGUd&VLIEcSphZNCRJZTz);xGXREI7eU$7CAE(;jq;-a4&N6g*|WRC?}VEC86i5#};kPA?V=tPe?Qcbt5 za&|f?55Dj%7|)F&jFK}ITG@S9#G?zQFVdD}43=-yX?}J_X*bGm3ujcasBH7j(VuNt zw{;}yF~h>_o*2(cnMEOsQr_^Ujj}L|O=6&p2s^awEJK9O0`fHs30UO4VME7b&WlX( zEZ?~@`%53#55C$FI{11?LF5_9W}&(p(7`WZ{k{tSt#a(WDI7X=bUl?*t^>$1V25Oo zpvSKY=r}bpm;Hll5Dun?o#>Lc+~5g;W-9M6 zikS01V+FnNG7n-f=R3Zm13h-(({={MLK%Hzoy4$Am&3DN(Nd?#nBI24f!waIc$j;o zW!;*WOR8*zf?bcJIEc`he2hPI7jh{lj{xQqr&WeP`KN8pg>a5{Np}(ASwFL^<0Z~1 z*6`286B%;%(@dD~-8LqjODHy1?XJ{e%hsy?mT>#q@_Q3oYp%w*v&KB3C7Nr!pBTE1 z5Vx1K#tFAGzAO6flIu?d-}Omjoy#|(^#m(kPJHiny3E8~CqO1?awutP=emNBV<#v1 zU9@p|lHm#BHy5p%kR{Lz$ANqVg(jB727wDC7iRGJ!UJgwSPW4|W_U7#5R+0?9$x5) z)ny&<%esXa5T;4F6$?HVXewR}vV$2Gqc*qF2DaJsc4_~_Fp{+=@8ZSO_!W!t4&YXO z>J%FuEv;YQ7%ltZV-_9Cb7Fk*om2kICh9CkfsEUsuZ{-yc*7lod9EO_N1`YhzWtn}Y0{l`k|yz*HkfCZ}06Xlz}#9&NQ7Xa0yK`?T#fvu4m zA&cJ87>QuV)TT-n9w6TPvd9mL?1(bd(f#V~l`0g$_iN4_lOms|>-OO>OshsCG zy?B%y6{z!{LX8v3k+)ry{Y-uMi^*)b0I?OT47@hVULc%WZOm@+!t;NlqKTb zB5+ewmVjfOXwAAh^Nwq@{aGS*NHKse zs?$=w%Id7;q7<1t3yM|xlf@x*~E`nYa=!L1)a0Y&i6Bmz%!K zuyYKDAGoGty9GSvBCKH2r@VYrJKUdo;Qv=pKU6UEL-bHd?Boxr;73&Z=2%WHRUFF8H(RMO8;MaViNLt=6qG@pP zJyP?_r7@X^>B$|rs?uSCRN3`wJ?hDYuEmDk$?OSA4e?LP94@dFlHSK-0(m>v+!mi`gxVVtNfeFzab|)k4Zgvbb;qF zX&)*IjqwXOn*wT)V(MsC%O>zTdqQj@5=53Zz-YKRe<|CRa=>Cu1g9?VNcgKdx&A(@ z=mkWdi(c;fl#j!FWfc(_gZ4`>423gU0d8D06dYjKSDw*PEGr<3lMr&N+z4qCNYf4-%kg$hu7s z5eeKn$^*-C=vz7R*qvdGHuIPG)$-J35$LrxmN8Ji3mZ$j3G>9Z>d@V?RM{+_*w~aT zMvc97p=)hnWpgn)M%B8ntEp+Us})ximIGx)#H5@UTl`-IeNQ{=t>0Sw*VdU6eU6C< zlxIJ=*s!ZPP9f+>awTpkz4|5YiFBHM;bpMag(q6a`Rx0cvtB~}5W%`ksIi?|n65&? zOnf%jbgGB^IpC8?i6cHzp7pRp;^JYu$(u$SN5*n8@{U#=EFvFcI|_j-0YAj|uI%t} z_%R{LcIu5u;w9BVakv1X+;S~XY_l9h7NY)a6aqVeiz~P4-(w3)28qiKlrPP|Gg}P* z(9u!qCD(dnv=a-`_qF&So)0AFi?1pQpB*#CB@2I-u_wf~lyfVcH`AZd3ev+`W#Bo{ zo)n)8zGY3F4&qr}q*kf=s4SLu>HMsyaJmp1Ubw*&%xz6Ovw#KMCd!9RQ%e`xOA=;b z%Z_WSw8ZVQ)R7PBb3yo$(yL1Usr-CT`CrM|Ysy)eveQdlkYi!Wt?29;3q6Uw2;!*H z#Ei@U5e5xBOo($CI%O0&v>fe7|CVBn6c)|j6OB)5vCB;#T2Fc4F&W@bszOgxk->_e z!)#&8;G^Z82e*F3z#}oQ=oSCZ>P!8!PwcgsqYQKB!2H>OaK_O=PlO&UEC@g17L=TsM>?`m(l&F8!@*m}w_?k_C1_b<2rk(<3izX}Li7f0#WqGit*bA$ zlhG#)SQ1p8C(1M>V&meX0%b0m1jFL$7h14A&NdW4FbM1fk00r<5GAF8Hlu?l4+?;Z zh2{bk7Itu(MB4;dJh89@F3uGt<^`AkG${9g1MMt6ArF7Tp|g;L>TlmdlK>pz583!wE%n#pT*~aRv((vB#x5|&aILRvsQnq~$M^*~*AzChowkcT?pv_HS$Qw)$s6Gi%L0 zG`f$;cswI2V$B`>+ZO>R9jpM|TDA+yqz|notW5AGmdqU>{&3VrLE?xz?o(#Og8GrWxPz#(aVe;6-&NZNv*p z_=3&?@?|;tHXYS;Vk8B?k>?Pe`8u$v{R0;ir}**J;?^NXM7(P&8QX%;_C_ueVLUB5 z-x$RfvZVU~v@cw03`YuI`T7oBnD%OHf6#5suJ}9Pzms;1Hbh+KRlk4(;u!o zxOkQio*V0g(&E(3e$19c39e&L|4%@`7K`TfU;Z=5vb|`ZAA?*;Z&v*<~4>!(w!gmNfQ=EgjuN2OG36F;S0|6EZ5pKho2zRm)Z#GlRvR^7{c5 zM@;}8V~KTk=2%mQNj5U6gvz!tl_RpuX%lV>vtu^KQtL&XCIFukc3f^A1umQ{&b;ms z4*zG`hWbEP8*EcnwhJuV_I|1d0V%U^CI@CaoLiO;vqZ+xvN}X3ws^scg(!CSg6kmz z4{6o-pk593B3{aFJJB)ai);JC7qlc|^b`qXgUQE#5 zEJ&VLJd9lU(PMGTbEKcvYRhqn2S0I$?bsYk5owNxfOzQ7^!L#N!7Yy^=mLQ*yMM{*N|rS#-t{bO22rIS}~-pb-WDH*{pnzt7K{!> z+6*ub5~gX*9Q=vdw1b2Q7XTlTH-2pHM4Q-ru1y^D0Oac`KWBd}p6D&}*$%utu_A|FEk>6X;I6< zy{D8vt(7PBD9J;8`GgYuUx>#f>2_0&9mX z@{GSH-e;5;a=Gn{&R&>?>RuJgC59~}+LGPT$Wav%xAyt#NW2V18xcRdq&#o>SIYlF zIdALpSCldq6Jz?)ZL34Rt{~9@oZ;k^ILN>wILS}y3+`zVJCUF9Q^~GPzXJdOKmbWZK~$p9R~Z*u zGMDIk{KQ7;nHWPS-)rZb+&SLTm&;eyf6e|HZT2uZ=I5>$w7W#M;?H2=q-EmeyL#E@tf0^oC4wE)n50LL2LUkih4?~@iLC&J z{yK87T6}N3wk=OIknuyd6fTv+@dAHY$AjWA_OPyKer|Nd9;CIDg(w#T;`FX);{@+T zk@B~7QF~4II-h3yrt2x}G9at;LtXiKp7JqW;n}PiCK^fEdB>kV3J)@P>LJuPa^rbc zh&zG$qRX?U@3s?cb3r2q;;%||Y*8_hQc3?AS1z?8cE=(HDao?a1ClxKODMI!dt<~c~7 zZM_L#k6pr>LgI-&<;2gLD{;g8oZ+PJHq({)4!6j+_taE%C`6{OldFA z+p|N_21qXF0GB{$zbbOR8zW_*N*`&FeAq>f33%Z2=W|-+{XiWJ4GsS_Bx95c=x^}R z^e78PKQ|5yoA0XP+|_uThG~c`ime`&bNFlY2xYf5<)I`bW9pQ*v{+FLQPMbCMMB8I+62BTv z)RW>0Y2uzo2^aly1Ms|sUq9}-_BzL#Ynq9M&xIJA9d2{N$5v5layjU?4t$}$cn|r5 z)UC0(GQ#l{FssY6*d!9s$`|^s+_A(-iHZ6lojL4|zMlu{L>teF8rQ|5a}03da0*X; zStybiqaqI(?0#2^(a&j%=?U#5=9axgHi4Mf34KQw#P4Zmm0QgLF7N<8K*<5($<7Ng zSgiBl$YDGABdYhKiYc_>>^~kY;_c)RQx^|`ionIw?FdtGP#&?W%!QRUG+pKFq%l6{ zu{_7LuWP@L|(#18-gl))5|p zmQe*5UM%9CQzst%uqg4(Bl=A4?Ed{TB^IPZ_vbscZmhS)jsaVfuHZz#lI7*K+c>>Na+#+Xv&anx4f^J?9&P#Fa6Py(O^3 zWLyvvHf9-{*Wq~yJfff|Gf$29EzmkrWRYqiWdUSoo8TnqKh(MRg5Id7jH#tun-}K* zkqw3V@m%(g^rP~dKP~(Nl|4^L_@l-@RPLm4@}UxR97c{dD%&g~)!r)nmWZEM(#?~j z*y5YqIvkGR_`cZOCWy|7LWffAyRd`wiTSp%);>q-D}~s)q|1Cj+njXFip_JRm^ddh z^VZ_KiH&9b_S%SC@;SD1__gv|wy*;%<1gyrxN9*=C*D^`w3Cw+(!@QFdca9!Eo@Gb zzmBlGUS}HC7jW}AsP!7B|1$<4HTN)~Obs1gb`|&rT^6o)*6x$PLlBeo4gxVyz@%BP z$YYSWj?mU*B0J^2<*c*kmzveHpo5)j7rAjc&Y~34;PZ|sv_Ti{g_U&J+58K=4f4A$ zmwgsYvmc2Lm@m%X(1UqD(?#}iU2O5sVhj7!e+g@}$V6wfix|YtuBcyLLf{JE!bqGf zw6loE|M25NQL?C`1Vj!5oOZyL+gCX>zHU?FRO8KZ*&RJRcgQ({KlFI>`8mZxnPeNv z0hdMKP@Zszpq~ae?!kH2Fp<=R=C|u5ok_Ubxwtv8%b0XJ2qqtlQTE5B_XM{Z(KfMN zlmG>MEd8hq$#bfag-mE78z=+V17;`TL2tcBv@m-|S9&HkNEXq-7x5-=ApnKuMXAc+ zlLO|3t}^oMynaW!ERX6H<==e1E=c)Pq3{9166@+cQ5l|^=JFw+L; zT2J{5v1uJK$Y(h(1Vng3s~hN%pKa{Hvxpx%%B^Hy3>f`S474k8ryd`P&&WfT1f6=i z96c4nFS;(E(yL2j#m#QxQ=&bsVCa)&UB!00`MFUsS$Jil^o5z6GDRK$3I{Qeksc5q=f%-yIB^V4zb0{Ixi~molssHa?C9k{}hpTJ1h5v znp_DW-n3EL@mbNouF8L3Ik(qYA@v420NN8 zA|F@fp68pRa+da_?*TH2A341vY@BkD5Fne{8F}mIbfv6 z7GpDg!eaJG$*};pyl_B8+i_tWs+Zxxt-KeuqEKEYBn^s(@f)z5Y4HQEEFuGTkcM)A zbG(C8VYVnkJ|CCNm9lLghhnK~eQw3R;_`5QP0VZjp>|IG9M8J64>k}KToe16?KN6i zUO%?m!Cd-htll?RIvrq1uUdD-C>}fCDM2 z`R&N$;L0hp=rCQla~&9W2U=Z78Hb^9LH|&V@`99Ekjximu?)zvVCA{d7c`jZD;pqB z4B!HaET+68B|Lth)AsJ$mN89-wF{9?>{)$`t534~ue<%Q6n#?%i zj3O>4$&R^3v;a0ElXj*2oDSshx8SoHhYZDGLrBF@x&1+tOy)G>DrdpUZG74SI);*e zP3P?Q^y84Szdq4@NZpnRRTiPh{ZbwEb?N?4KPox@Z4OHxN- z5*Yo@OJ&p-Q!|vLCvhEpa$eb9wOxV&L7c9Bd z|MF`@c!x1xoUju%;x~dR82t0C(Z_TZ=2ks`eJ;@PLvEV%KGGE+xc~k?HE1LH|+(XlwG&F%dJhfD%+WK9;0 zMJ%}K(kXiF=DsKD^K$C%i$+MY*8+=C#u0ULb4&&t7iA&l7h3fd?(^Nzv0x;=iV)Hh zNhPv*bM@{fyz}4aNq3TH^b}I!(CrWg>eyDOcsn> z2_d&kIWwU9q?^xj(e4WDmpF)x5iJ76K!<2z=;%0{5F&hoJQu}Bbv1oZXAz$(;zC3y z@=e6A=|bh(b!u3Vd_lzqG~b$+%(AaM@rdtu z#ZMfGA3LPEn?j2%F5K9Eid|93`hd_4fVRnVqkL}^=k|{+A@Gehv5S@&awTdSV=Na} z_?5Uk*1`@x5IfX`=P#d8qp`rg1TU#?ANKPRSQaR=nhs6zIHwMbBxV+$fJB|%5yCe||GgByru2cRzD*Bb z^0tq#?9e9k5B{mQ$>2gbe_Ylf;}%^KUBwGud|rxi0c{P?=e+s6R-r%ELJ%JaV}GgB ztb-Y3Fwg+s=X`XP(}$$j^+WQfN<3@Lodp(|EK1?A2<2^g7NTz}@h5!QA$?Sdx_h2z zn{FTBRGc;;hff^%7HXWn$=oeeem>=w$L>ks(o1l*f$acn66YwQ;SF#C@qv zuC*I^axX?fRzWq~`en2{~T%6DvlXSBaJG{sn zzu|%1PA)EwYsd24H)K+Ah-B0FBDpNYJo3F&T(Q1@~je#>*}VfcQKn(GfX#cJ{rKXB)amGJYk%iy=>|9iI@6A8f1vbQZ4s zoq85Ge8?RdI`pM=bpVG>N RDDw16%H+_fAaQ$PAqtBJcqID%vtlwyYpqhcLs5hs zfKL{nzbRW^m#(^T#DOV-h%XS+M9yiCNN8ZS5GC@W@}kRQsxXf}d{qJexg7GgJc&g= z-wtGf$lLtysFU<0iN`80R`JQI4@JY0`&o#0uw{!jWK7eq1`Aag6h4a4LyTL{EO=j4 zPMvuK0I@ZIPX9iu#^n=VZ)hRNBM|@@_G)2wu;Dg=(O~f|x9Y)P)7g>67z@s~6j17e zeEh)oIU!l<#hnw*i;N508ONp)8L<@7xfCltEk!X5C4l7EGLd5PxdYQ z-Oh~1TnI);Q~X3S_&dYGCJTlqb%lRRyC3i5>W6Rfcn*{c9yoGN!R3RAGJLTOrZrCH zxRv|DtepPAUM>RYkwh}YPG~8+uUcr91*d;|ojZ&`PyL?IuFmti)#&z#a!KC!_>fl7 zpVG>~=5!!W%;1@v!Oashc%0G($c1iw9qKPGm4a!KK^CC=tSZan2K2`kU=!Q?)uWfR zD*35|c@r5O`<1{lMr_q5(a=_0%5dRDjXHoc3Jx?tz^Wt@xC@`>Y^=4-Ir&9+ zqqwHCMjHwn$UNt4h+I$h$#T8gsRlKgQcm7e!B044s)Hk?3?#48ul&ehU{{n$gv(08 z<|4x6<764+;45izsyFUA>ko;E5_?re6;|NZ)t7-W(X=sp0-ww6d(XI}3fBPg*nO7! zf&$7cD7ny*^xp~GFDXG6jZd+7Aqrpe$Ymi4PW+}p??gE-It`lS49c^Ugj`Z{M|)5X zk9>yEXBy^T);5$7S>`4l(uN6&GPs}MVmi$YU4HxPvGF-q=#$dqsFClP7cs+^s~ z7o^NfC&&QsNrr)_G~>-q28(gQ@cexlVlm4344rx~UTt3la?_pn`7ff+V+p3-NFm3w zilL$FU26?uUPxlm$xBVV!TqF|B;Ig;PI;=2DPhy&A$;XS zM+o?w5Tk4zkezT&^c-(#9@&hiC2y^4+thUhuJMcdweqyl60WteCJ$|mZeJ^PJuANq zu*+-qV`q)GW`=Wk6>1__Wo;8Nw$`HC8rz)IWLx5s%}M-Q4g3j=-nTNxgu}#NI}+*E zOhPUXxfOm(O3vIIn9z`Jm3y%vCy(hK*faO) zf`&g9jae{~XAwy}UaXQUA#1thq5+}NP{_DG%7K)z6EL5`L>p-IBHVJ2v32C5WvCYy zXFlNVKT9eHZtLdXCgZ}&%U_@7z6^K=-=R33jGxfvyjx?0fUM<-u@hx<{NoB-1^jaB z_$m1Y-vfy8aeQt8vzSa=@#!|fw)pry^SH zN0zbhidN3|WQa!!sIzr+DF00e{ZO==iX}hg5U`O2dt}m1l$T(iB6?nPU?l-PdX@=~ zSe0lC_@B~*kfB8#-W8EQBl{aX1F#b?MdbV|j8gfaWn(Glk8=l5awTk46RfL4S;J6O zr6ta0)-9D2xnb{wb4oxqai4NeDfTnw4NU-Yh(UyJiv8(Z?wmps#|)8}d$U&@{c zEC}c1&+%ert?uDnpYQRw$0~O2%GMr#7i6vu1y@Iqs!Niu zcMmdL818%Z6&H&D`w?!SFgsqB#kQ#EvsfwDaYjU7@E zSd_9uVVZCzb8r?5&;j&@PL~N9`hX4&J)kZMlguRFq9xcz)52)OURc2wojN?L+m|nE zflVwCJu-5O0@p`Ai#2S^2VvkRzR10v6Ov!eS%ly^V*nZx*^q&!f6!u&9ZnXL_cXX4 z69ZqD09|&@o|a)=%3-%H<2!N0er#17xs)Hg7@L&*k@r?6Gc-b-NxZzodYwLQR>`d# zkN8K0(j|6wDgT}V;iVxxuIq&haUt%w8>c)%l>qo*S62%Xby_X?B-wlxl(Y@W^9MP0 zlnk~Zj9dvwAE84%y&x46oh(Sfv4@Id@_;D2(D8vi>hrfXAhupy!p?|AcmNt>kk2T6 zS?6y3=;(eHJ$mG+&unM#Th{F%Szm9X*FeQqJJm;V;zx!?qO1b_;TYhxGuO8TEz^3}#DOd(mas-!%FN|! z<bVZpmp)l0F3zc72FqHRq9#WvkiWX(1}PdcHy+n^P&z5$s>BJT#oIt9nZM!is1gC0IrN0kVZh@0xn2>opaf?jO{ycLB!W*^nrSIN%`!O z|4ItBmF!o1aF>On6Fj?|$jvn9#1)#@2HTtPYKZa!9==cmv4tL5vx=`HI`H0?GoBND zMOStfc+l?$JftiCQ7m#am%-<wvKfrS2Qhqgahn;aj~X&VjF=4 zAjfVhpLlxL_OcKw{n)U-Bi-U;5m)@8WvNOO{;?%nN=px^Vz z0=fslX~z&B5Q;qdi!tlibx3_6n1=iW&;rZ03H?$&+lXv@ZRL?8M+V>5!sv@ham!!m zlc-VXdtoci*xt&Q_9M4N4?lT++)r@!O1@+I8+urgkLvr)US#eA_aQ5x(-s_dS{sqGfE+gX)1d9DY>Gyi1fPYJ zeJMwWzJ;5+3N9WwtwLU6ifwWhRL^xPJJ!Db5TlbOJBYud^!Jr`vmIbp(hC~p)B!*> zb9w5O#lN`Jo+2)K#HMw*`W%=&_E2Y3g3vVAVTgBa~!Ke}dl`;k!kCi3n( z3SEh`6FD?zjWc%vk*U)DW2^6081iZtpP0%zl!Uv>R{CR?aQj%wj#!qAjWX?h4Q$!p zqHozw`)u)-^mF#l@s@V3t?xlUBlAG16KE=5L|1HF)VWgN+J;> zB1<-xebCbV}&`)k4kfHkNY%$T?-V(9t#BNA6O!Fv~JBzQY9cOWLKJG_=m-x6MaGnqA z50l&UDW>#+tuafUc^tnL0KaMu*X-XdzoY60_D(l9oAqF4A|`ikz2uoP8XI zv>lH8aD9PtXJ@?UnAXtUM>A@S_Djz*e5w1o)|s>BuEDDD1-X!a$d)Puy4M^r{Fpt4 z-P6AmYg;QOYhG|MqHbjd26JJK6n@~b%^X0SO(mS-(d{G3wH+ZD>GVi?96X2#l!tB( zkbUBa37ELxwA`2`)BJOOJ5OBQxC?Q=s6|4hGvL_hXVYNNJam%=7whI|ZGhUz>V_1* zlk?Zf@6!3AyzTd{>@Kjuz(-N=1mRx&lruP?j|~nU$_wM@>#L-w!}4~1@7ZJ-|^O+E;(~ zgbW`H;Ecyylde&H6$dqbR(2KmQ>xftEXN$X^aBmJzavTTw)uy0ao}&=yJTWVIC9yW zCdPGRir6Kc*scC}l6IlXkJ(oO@Z}|J5Mvt(7g+cMS=>W@Kr8nj9}hmzsQM@qtNB z)BK`ieJ}vi><1h>JdLh@x{x_eN0xZe#%Y29_$aP4v027{B%%Fp0B`w29N1Ljh~@A zbZZM?YtGQv7Gcs-^$d;sHpLIwecPsQrbu(*TykjMP+cLLkGXj&$Oa`G5<}C3!y)D5 zvzz-3ArYhs^C?Ly_*J^rlmlOENZl(D^MqlIs@mOcK)Jf1LM!-3}( z`v4!%!bZUza&}GFWdN8M#{&n(@UWX37+})_zP4}Y2X;Jh;PavQSjP9tD?#5a8)xtv z`HHA=!xe7ZKqV3VKtjNGD`vrV{=89vxj;VnmCeomgX z@kJ&)Q3Gc=(1CO002ln(O8kxZpO+4}Olt)}6O!WLj0f_9*S$Y&?qtZNa$6_?QeQ>F zrV3v;`F0G*q4ue_|K|)l=__zQDhB!ghy0EC=}&v&m(^o~h?;T0f7vjK9kpXUPG4A> zH>a~*{XyF0fiH|Wq~Yd72GoZB(s2Rz`-S`M6LXAnbK~+?sU-R5Mf@L=x%_@vz|ad^ z=Ww_d9~z^4Y#=tEUy!%#@x`XUA=mC#<+Brb^%3)~Yf=4y0}RDmYEp-J91c!DW4BEg zFF=mZ0w(<#+~swHVv}*`hmA8n4urps_CxX+?{Ags2^)1B3W4)%a(4Zp;~3Mnjv)a5 zp+XLfA@}M$JHod3%)S^>Ocw)#G*GZ8K2+G`Osuo zNF@jS^u{u6M5n0x>mm0iR40|Y6UYyo<)LqjqT_DbE?lDRT?oECbOwez0Ea`*u4C-W z01Cr1mmH3c1SpMOlqU4)C+gQ%7r$Sg?LRNSI_CeBztZ&c@)DHOSbl(qKGEo_RZ0rn zv?gHL1J|16Y}@dIyA5$|ane^U&_`Z;AqTI9{u=ql{5Q!C2v2O_48P%rU1+G5e1&0sC@~v{lXGV2H=!QD}041y` zrnq>oohC!1hNA3eBX(~mQL;EXY7 zhr>mvUHTZ`9O8r+yxNBiDWdS73H*LkoPR_n^4E)~@5mTF4~fIMP0i|`h}C%TQBJVo zKWgvDb@9V88DACxzaYQJ6gI3S)C4UwR=U%n1_cr;Oz7&6b5x`2tbaH^3DDc-5(khO z2)Xemi1AUE@0aWMyXAio*f_i2mAVAnabxLVS9j>XbTkw;IZ&_8v--o=wZ#W+SnJEZ zY97NC_Xu? zJw3x_@TAv#0A_}BHv^={V@m7VXu7f4=58EFC?p+kv}H^~Ts&+z1S@EtMyr166Fy#L z`4-vq{YH7){@dkMmcK4v|NT4iM1nl-l~VARL(2enjNt)Y-66KwO)YNRJweQYI*vGZ z%rS0m=0R{l3_ctBo${6*9`4o9IcRw@QH)V%;e)x*&y9XK>!CGFXIVeeaPuuZR8RF$ zk(9IZ6+hIAa@@v9oZYL9a{i1wTVg}I5mHRK17Y~fP52w%Ul(-z#|t-RtZ?Mh4eIjO zpTwp-q&ah+wxPhnmUJ4QHhoG9ICzWxb2D!_4LcP31LP9|c-#92q{jbU3j4oBs88g7 zNNL>*KrSRmX3ZS4w|DuHCQ5 zFEz!hk8YzrlW=uQd%3?XAkvURwAO{g(vWf6);Ku>)2(Sk4*ywn?_9_;H+~23cL^{2 z9$>6%cWoPA1Lc|+LaI%Nk(*Bm!gYjL|AGH7z=p%E5jkt$`3jhuE!UBCBWJ~T zLEaCI^~|eokh^$1(-Wxc&Q4QV)7EqLfR{9369jiBauI!gfRsKY&6H`f!Hf$Aw&msrBmCs- z!Z3(KI@+8JViE%$&e0!KC;tr4z@g!IqJXYHD4#?7lDr-M^YYg8&&sPUUzSanzM6qQ zQR!~*5~S%J*O?>Qz`$8+K@(E|J7Vwv2KwrYS91{braY^Bi~JeR@03?*zbFs={N(0s zYjHp7z()k|Ry{VOZmwK$QymKj=rPxbjU{Sy2O3g5-m1r|Xp3FUs2zv9amx7HvU9*I zM}W6}&dL8_9cDf_;d7(kDjMRg`qzRal;!8-jL(U}2S0KCSo+wostpTDuc7Jfdz)n9 zr1OQ}FN!$?zSbelAqQCCF}(^Yn=a{mha~+)A^CH%F#d)J{#7XgpXbCY7q5kpZbGmb zQ_diVb%=RVOxWBp+uVN+#GuzCd}sM4ouvPvH6n5LS7XQYcAItDCl!&m#L?Q{6mPx311*W~5ozb&tlenqa~_d#g(1LvhSvAO^F z0Bk0xO^c7%B?+3due0NaIAa6q*0GG?GuHUiykC$_=sU7G#)0eCVf(Su@aiXAHu=>y z$K#|A%o%joht9p)wPrVtA9BFvHm5SdSo5FE-%f+w@r2L(@VUUAI(&ciMOw?s?8_*7%+?6N> zGf~>aQ!zewwA^7e4heQ1_Z!}H(SV8`${k#l3)*->L6I1DPn@`-jF0cud+_}u7Q!r_PHt+nrwXWK8!t1Q1Lk6*$QoQ%CUbHdFWZwKP$kGH=NyF3v{U;a5+ zamKu%PK2T^Y(8O!KYl&aH^~$F=jGcepO;^l`K|Nk;P3?IUP(c$JkB`W97ysvaTfxA z;f-3{Jb{pmO@FNj#%W{c>Jis1V;BUzW6~CVpe|sK(XWgw$iPH6_>l0Xt=dM3392unT z=0=*R)#(Fm+r=K02hyz13Zy0cL3i~R)1VG7{li? z@pw<(8pnq8Yx2>X_vHG;#uPqqLf!C1P8?`YKjt+KgC>zPn(iS4v0imeW6k1E=YAG{ zAxbu(@5uQx_)xLf@d_zo0EI{C5!FG!pfxmduSlaW5B#UY{rWC&lQHB%AOESsrqty| z9NM!@n$FjK+)F_4!UV1r*zJK>-)6`CHn_t-6jO`k)}{o7u>8E*59J4r!vKMTqnf9| zv|KfvwHen?9Cil!Djd{qu8tMY@L_6IuKgJ!a;{h~q#l`|pVz?>e za1>YKmjf5qNAhIyDS5_&30U)xwE7)-v&XM|!e;aPWJCJB z@&xmq^nXQm0>3PeuLzH?O8-}dA2z37pX&n)eZq&Nu05Z@UtU0xO_w}j$+J4XIgT@a zkvGntmd%*X2VRLqf#?q@QeaCCiLut0mXcJ$t(K>i_sfdufE7i#MZStm+u3fN2^P1y^IM zjsb`?E8RCJh|gi<#!~><*bSqtA%~G0-y&`;^R43cRk@MsD@SfsV1-M9`7{M$05_h% zvRSz37!2b6rrdzOS)O@t^Hi+GcT1Gz|Vqg9gh1o)w1;jfJV! zvGJT8IY3L~br09Ei7Pp$@?j$?)195C6h^Nx@W6q2MeRCIx<;`k@kKcFvB}W&iA@b2 zupt)Lsnbr**nncK;y+JlyLSL)EyaDpLN0lXI<&4m_HheLxH?TFM)T<$lyXOW>;M)2kksz}5sVYQINX^0 zaQEHC;D(YvoDLC>V7`d2HHT`j<9>UUXRZf6E4v>Q=vU`8xqP@_?ub8pgZ@6~+)w$Y z#zJtl{xOY0IDIywDw>|XDkA3Pf6dN4=Hy}7ZbQftj@Vp$Zrp)IoFe8We`zC!lN&F| zgPRWyhqVJR6{2;>pu`ax&hNS`L zKqeWtc*}h=ZG>a)yiZ!w+K%z%3@YMX@tu3y9YMUJBE5-})Nv zH8{YnT|>*}-6tjeU~a?BhU~7{fCclKalcvPZ+&eWn0_BGuIxK{Jo`ih-$yJSjdZz` z!SSGRo2Sri8+fwCEe?N$RB%FQuJ+t`X*%6-!5^4AXzvUzW$gKRLZGWA)Z*%qAEBF_ z_480yUFWCHtC4W0!Zi%g%W8>4Cf2&xb`J_Eyk!iH2)7;_QW$5XUFx2Rfy2UMX{=e> zn3ez9&GoFWKRilmJavVxFF${-4}REuS{d*kT6gGq?ygQ|%r&(ySir=go7<_k&Y`xF zGw>AN`ooTguY=~dzOL;JpqtuYZQ{kC5HUU>dk9Buz{A6@LC5{`CO;C+Mx1K$*RCP= zu?!{P5ew!v+^oAolyVJX&w!~hn^W60{>oEhEnhnZdv-ILe2aeGh+0rhnmsoKWl>iS zu@o`;Dp)&J&Ki_I4}#4n-s$nEymyv;OgO}qtI}$0+dhfZnD0Bf4=zLagh1^bt#e_a zbkP*P^FUsf1JWLp%BEel{nA&1fe!rl@ZJ*}ptG22Hxo->pkXjaDzXuihL20kn+3p&41FYyII|rsp@~9o$!+TF`if8&sFcn!p)}w|!7^zr{QTcUj6Jc?3AKgl zYr#bfju75768;&>1v?(4b6J}|mKQ8j+F;y2>>jA}qYk0`Ej1{Y8r?&=6~{j-C)oWQ zI_BGx|0#5zS3#tG%vlw1?$(`r7Io2C?^1Z{SGpLo$sf?c>fqB)jrqRM&<`y2^UK$&=HUk=)@ms=nlt;SRo`&>l7H!Ppxci;vku8tk=cF8ds%Z5`X2 zBNU&)##rhR!pqvUsM#@;Kb2F*LU}@1AwRX%`XeqBqnzv+zY%8qQIVs5-HxVscs^TfLKB~t z4fDsk^$$rBXKT|}ND~Jv9jQ#FJS)SRuF;Yl*pQaKs+N+Zq%QSI;p8|2Bj*#t-x~|u zQ0`4#o*@+z8jJCVU2Cv$+V;{eFgm^%W*qcGW7bdG7Tb@pW9qMGj5VzQKYd0NPjYgdx04unc+Lm6SlN=Js(!$;R(}~mC|W`VoaxR8ZF^m;uA}L zM(m!Pp*m{kt9Sldyb#|7!`r-v>Q&nkqlV16)jt*&v&U$p{G(rBN(IFdIlBZdyZZ`J z7fd8>O^*LrNO&r3Xb~*AGmRvz>zt|z?kHZ!Q&M-$a|Q5Xm|9nCyhNlD4E2fOrSg|*62gW~ zsro}Pu*Gt=)&U+hZ-Lu9RvT*%aksv9JXVkOvF#XNmp_yQHW_q7hNNj)_@(Vbb(t@d z)HIizw&CZ8KWx4oy!stER=G@w-;0sU!Eq|kQ-K%0Uj6d@8%$5BiS?ig_=}{VjE0Z` z)VoV>{N8wXrpLAR)PUHQ_}(#nH#A}GQ=C&{A+%b5?BHr+LjJIY>>-ZUw!~E2=$9A+ z6w1GuyO5K?h&K@kp(;o&U|@kqi1p%hp@xcN&ljRcDhDfI*TG3^SScJ?d9YM5w%h`` z@jgR{Zsd;#Qn`Y2*^^E~f`*VP#=Y@3Po^FlD1k{30zOS}3fX+FHK{Zf zxOzBgtUfwm&dLua>#F?pY(k!{sTzdNk5H_gw;bP~uNJPseqZg+dX{?K-_)M##;NpB zsbVpq>&Lfg-<=f@1Y)2uauz5Quj3d)+a8)r?LH5++nAHvK1HRYW$Ib&sk8dp^K$b} z1$twalQ-0*+Z!LxF{l}j*r7RN=UANDHBS4r=Ulvw+n+XOI~up-a6^%) z7@dbu9BiriiN!4IcTT+IM?;Sp*!_7}O=8Ez4=>ocFUe|*u`MRVYMiz`JeOa`mcV$! z`A3E|Rb+Uh*MikC|FjuZCVEyzeqZg8bEW(0zXT<*>Z4~%BV@DVEgMl6p98i@=5{DV zZF&xbUEUO0cWU$N(!PH_t4QUM%MZU&-z1g~fmS+x84@c&H72dcd~g9&%D=bKb<6u~;(|lS{keC<&ri7D(Ik zc@v}Kz%%U?|Bzj5FfW{}kGAz}z+6mhB8;CloxgU>IRI@&r{=c znsS7i-h%gtxO}-pCZ<=jWWE+!OCx--_2N{8V>ngCWt>Z4bs_56!j@=j{d>0euF0NU zvREp1NW^UL7zd>^27N-ss{ju*Pb0;MVPhgLv@T*a_t=9a7B0X-w-vn_Ie}mE<(E~W zKqpvhz%OOWVU%hT(;0f6ie`9U*R4$e+4*_+P$l z`djr1X}r8(m;((3*Vr6BevD33Ln`EZMSfT06w>Yt+aqf8h@5xMt$#z@3CHjURp7{_ zUz@Aczqem%Dob;X#t7l>;g*U`jfHr?))KQP&gXGGUH@YN~EX#zk0Rkct|P5w|k zY$GvB>kZ8pV(}=^0d@FCs;(5T5Eo#lVlW2%gPL8n;P31pG`11 zzhiu!(;g+Lm9G$Ou%?(#RpJ3Q}w5boDkm-h~wVjaOR)5|03lQeW5=Z4K zee&#)|7?s@{?u6RB5R3li2;vPTxu-1i_H}l7*FQt;2(fkncN;uZ@#OMa3{tW_Sje$ zX|m>Gims;|NQ!`C-3ov>`$#6*H`q!snN>k;4QfjU9y3_6E*C9Q>^54AMQURx1n+ACbW5SeU2<|RIZ{Y&`wj?qlP^gu~^ux4(g|8TxYh8 zzCBW7*3Y(EVh|sTgI#MtTOUh|_hcEvfq&|#iG#0l@-Zzxe=OCn$qyX$NBQ!i1Fxm-LTY$Z`j-X<5cg$A>dvwh;b!s6OEU5J+bO5$wy%NOF1U}WN@|4@~NNG z10oe(Q%@tnBh;K+ypKH-8~F#WzfG=A(xo;Gol-0?B}-wTgvkxaLeexGmjco`m!37* zb)dLajyRlxs%H}F>1#@+;v5^vXa=q~dpb=2@g z%`c_a8eI~;J(tM}Yt=~*XdD_f)x9>PTK=Bpn5t3nAzy2b6n<=4G;i;mt+=)G)mn2) zy?!qAZJniH<0ZxR zl&*FDyk(k{zb9XtsCI*6V|%wtYD{Teqi1jKEqJk7QgvXyVh7^<*b+^Byp|YX#NuGb z!#_R-*}y;y$B*~>wQ)AJ)y>-d9O$d>eJ&7@iwYt2u*LEU%h*tlw8a=gV)?=a2n{4P z5PDs%O{6vD&TE91)0=hCi^djiWwiFa?NF}0m^QwOx99A2E$r#--P{16kJGDpECRc= z-&t;L{#yT1diN*Q0J%U$ztV`XUk`qJFc7;ZK3vt~TwbyITQq5jfqpe{&NuSJQG;XW zttJk>_F-{SZO!r8y$y*1)Z#@&%#&AgFbcWOkix)NMBD`gJ_)~EIBaZ1mQ0EQU+FA*g{YUxSn5|*@=Rz5wk2W`gfy_OJ=>># zOae6@S!_??PQp4{GP6vJrq248N>;KYa6c^ZEAc7i74zFWC$aca?P4{?aAS4A-Wr40 z7!Qoq9=X~>xmvh`S81HRSB9ReTR3a}ls>Uq5fkDO!UDJH&w=Jx#-c-Z-PSDE#q8-1C70u+}-Luf`9uR5u!r8zBI5F=V|AP&~>K;+Y#kJg9@_ZTZ zg=vp}a(&x{iAQ#oYzNqm(0FkbBgkKJq;7@1YUqViQjhPG%AFeXakSqOqp`K;-nm-w zVsUC;)({Lh8g875H397ZX{nT;t^PKBNr3awEX4s~$L5XV{NK)n#xfILo|xTpJH0y> zveXkHlpBwPCCwu+lL>XOCh>vu2wFANw477VAbg-kht?{!Eu~2#H8-iTU7RDp5%aE8 z)xnE6Ws#NcWuO5sXwxm13S9|U=^m(Jys4x#^~tdrS+81kJ74(?MCR!InGHzR}uI7R47*@WI+hUU@#V^b{pqxv%#IzX~`09z|G=> zz1CKR4#h2dJat-!u5#7?IZy*?nqGX4xe1ZXPNnt8+YyU%SW)49O5gHR zHlu3waWAqYwe0A*WIjgL;_DVAY6e0g?PBJ zz<@JppaBk;%xL_nI2H#xas?=?=4t(H`c=w6CzdVXy4Qrs*JE=N3RR`f=4>&Hc@o9c zl7lm@7N)A*1EVTo#<`SFOv4O(aJV#QP4F(vK%!|aL_;xs0PsX6uRIKx>3bs%$gaTyEY;^Et2_UJ?0lNwhw@0*OUiTRQGk{-YM7)*owI zAGNWM;?L`MJ5!aK=n}E#E$GX%R7$x#ms>5h4FyZ_Y)q^2rMXi0docFK#^Pi4R2>*= ziED|uTCQjf7%-2h9|}qw)p2+#6ueYi^fRNWpajR&(1NivR>MhVpLE<4AZyP}tye|2 zZcL`y1if%-^Pb_4Wzx4^pp`E^c-Q4GV_b(BQN9aE1lu>4OXf$m^^dI0XLxk2e*Rb= znp~AzjPph9HB!Piwj9-tbM$kEo(3A@nOEJ^G$TGWz5~38td7FWSVz0A6o-8hxWUlT>{|| zTa?`s9t5bu-6cLK@d;_JT&v|4YKP>SFC^=}a+}9jHtqOh+V{`upE_%d`ULup<4hF8 z?goLr>u6w~b8lF@4GEe(sOGrM5-sxhij;8hF-l@IPl%t3*8v4bfC8H_Z7SYU2z)ix z#?59mEpghgacY}m&<(}eG%G&hj6DuwLNA(W9B^@ju&0sxPmO`^D%ag5*sApfncAnG znjA{f)}uB(>zMZST>k|oiCn%Rr6~3s%Vd3W7@n`+MT){SS>a1@d=9a`#k1|0|5-c}sj4$=0; zz3%;jD~Me#G6m6dAa?U4?fYi>7+#)OT_=!ar>Qrrmb9t8foBOf&F8~gdyb3x>e*tY zVmJP3n9obB+5v3Zrg^v9*pKevE01+2gxB|#QDg{ZS@Vdj7T+n}&!t#yP;m&3hypnsDbhd% zocQzY<(U>N>WbYp2g-R0v|d0jrQXgW_gE?`44n_<*=b%@ITU-xS!wp5*Mr+0jG9=j zTctz4^rH(JqvurK)R@NmXXREqCwNh(wuaVRN7UtVKm;Y}3l-_dxG7ADuJxPI7%H-A z<_KYDmiUcZY3z&}dTBhBa?hBX7vZMXos1b8P3}0ZBJDja$z$OHXcP89RIR z7Nmw=>c6UmI92+)TB{;fEMDbS51=K-s~uO(D&f^TbG=umc}0Fbq-$NtHJ5x%juKqO zEAh?ETQ3b;xfJKu1X{clrti?{P_EX}ag!n#63ds0i^ZUZ*nyZ>T(NEjygCNSQ$-nU zZMqz-aSGy{QxsI6l#U+U+y!dvp%FmW2W*;6&KpvSrLopOWK%3V7HKPV>KqAmW|wM1 zI292Z+YJx`rL9td>?{NvV9GrzXCrsJMhRWOd#fzXI#kIYQH3 zTrY+*Ou7tkX1G};#np8hJF8!FA`{pHYY)a*u||TbW((ii7|c6jQgNxVSV7e>LPU9l z&Y?Umhre(`j-IWWo5X9(>Xp&ui$`99;_h7Z%0E_6WE;G^NThKVEM&9eUR#Uw%*n1x z(Gr+Mz1Cn&c{RRgRN0lE0n_HP9y=AMxSinIVNlrUj|WJxx)Ig060W?IHO!r%VN}P_ zHLaL4s3u%*m*{npSIyoz*WVvBszTO0aS`IgC_1VpHQO?)nO8 z%qN7aTtj0q9JRN^AU0KF=+>ioQgK>`aGq6F(Ln$uf>eU>42V1P^ezz7H~I_ zbJGw*^S&811KX%FOEE-bBU+ZF%&VA-57!*%1D)6JS;AGZR9!6ko*Wfd&!h1*&nf34 zHl&>k!(6B5`>AKFT}_Bq^bFCSVsGSG6i4OliQ5aS7fx)hfgd|^%P$oR%vgL&+#VgG zu>)>B(OeOcYyAO(7#uNur_t@t)YFGzZlmIPrp;(7GK3bfmCQwtKk3(PFDrHXrThIz zsf#)L`MJe2-l)wPN4oY%$@;il1u{AKjPldYQRaT>**CP~b{k3glRthT6$!FBD;@Hkdq4eC2w2o9f{|qnKaA*nENA13k z3n=*EW7!Zpz3OMjQ*Gsw^1+zal=9Qu_N@MvquN4ejSY>J*v^hG;b?vK@U4x7KaP^Q zoIIzWwRsTL5`!RpK3Q#==f$I#&PRP0qh)+=>+oW+2DJ6?7O1){=b!!C`ZS~w@iPcI z1#E)2`)b6+t}GQDFQ3<~09w12yuv!{mCuGE8ba0un_f>Wz?Nuf(ubSo3hvDh2}fa$ z!d;1Ev{~63J0m!kP{DoRtlTC1e4kxh-JI=0@abH--+764sddF^)!7f<8P08BdSUj! z*@Kac&0G?QO~xmt?#Q^-T&Y)gTQI9)jP@xWF^N|j*qBqmUc&MInNa{FB3uplVTxJh zOvJAIG94e@FWw&y!S(V9VOQBoh*SYSxpPjhoofu?xfEAXc*7OMch+xfQ>erBkc65W zjl=U>5hCqwoE(r8>EFa6c^}=3a+kTiKry4a^sZOeT@T(pxb4B%8;j-BqC=~OEqq&Z zr9QeboCidmi7SuTr5e&-UsMc@IUE(m11+g**^Fuu598hiS|kyi5<_>4f|kX>J>2#S z!ktS?OeuD)-<7!3a=)BE#Ef1Amt)(X(6iP5Z1qHE+&lwBeK^otfg_ez?;OCx(c?DP zo7=>!{O6whJ#{E$yoYaT4)sgr(%RM6o>S|hIL_RTQZdLI%NLE4fY|@NqcL-y*Q?KY zT5m%bjNDL+nN`cSEuPrDuJv5nB`NHV9+*ls6zgo>P8%^LTozK1Mh^@?_rkF>dtq7} zv{h@(<@ePdJ6pV%PtqO$2$+%(rGuro%es?BNlb}Plw%|~VvfQT4=lyqGu&InC{f4Q zjVly@yv@0nIzq^UZOxHOCdYid5Z%bS;-wQpX7W9zdI;DUQkq++Nr{aL&dk$qyg@fy)4Ufs%Om z_ByKbVGAP3tK$xgfi@|A%HN(fCKU&t&=K2`xwq+KgCU@hO-brlXy>bAv9pg6^DD9A z+rfIYh^4VSKZXLB?aR!w5W!ahFTCDjA*9E@kFV}yDSpv}<~N96-9jvkj( z4~}PJ?8)C6+Zu;?tB%F}7+xv{SS@j>m{h*ltJh|Wwv@MgW^}PsHbBIZ zY1xQYrVP4&;#Frk1p^9%UVfMlqSu?Ol@m%qiB+JDsjU#euzG1ll ztVveIK3K;J^bGa%l;3L86ZeW(Pc-*EF3pmu&q%Ec~uSBUL# zshqJ~i1D9ut*>o+G^1UuyEYbaEioWc8>cmw#J%?RaM8j;0~;~a5OPl1=06swD)~6J z5*>pr;;$~rl$pUOhUP@PIw=>$4E3$Q`r+)?X8YF9&uepNjQS`q8*ketcKO9#8Vf&d zD~|fxv--`r>gwuQIx=Xv!PoXJp2nz6eXSif9M-1oX=K8OO>s1zjt@HfG?p~V1qN-a zvvSk^5;Qk#4K`NeW;Zva<32{F9|}_&&NvntIxv}=fBG=m*L=;uwSk(rHje(6QXn*q zx|Wu;>oX1o`99KDH;V^1?W65ojxZG+79$lRmnGtm2gN5RcWKn zz3~(`b?%)L{{tFv^yXQ)xq%BVR?@xoXMw;V?Gc;$Rm z<6kJ?N~JDbmPTKpdc&q(8LVO6gV$b+J@1~j=&+Y>Oy3sVTuf{{W{+{R_GoP8h8K;q z;HKR&HyVyLv3;99Lr{Zj&SA*;)zAu{Fir&kU8@y%I?Yi~?NwH-8Uv^R6}Ykj%WYt3 z^kq8;b~ni$ymnzAc*l_o58c{#@l9}T!Og|Q>eIMTeF=(gNMkpC7A%%{6BIXC2n!vL zxR2lki1lXFqTT(vx7;@Lpj=htugIyYfc~%U^p>PIUZp&fyCqS3)ifnMFzA_UJ5WZZ z>aTz<&8u8;;N!R~jlMMxg6&K4NVItY%%^DP)cVN90yGp~5*Le&5|shqhVtcNFy0bZ z8MXT% zm8vHBX^9I-4wz?@JOH+^ptai~|I%2GhkB#9r*JFiWwkBAN^yZEJupJrDt0b^Di&jV z<9+-TUQUZ(Y%VBLLoO_sOR!RLEiuq17Kbt9%jNXr*RPBM#T-enf)92fS&kIarScd$ z6^^T@s!lPND%9t2_7{&|6}9sf+4l9Ca3c^bC+ZgBM2lg6F!!Nr>)={WoWRSZeq_mO zxYw@R9=C%Uez65{HpZU(In7%%-pgl`Qw*y=I24(POZJtv%JYJ1L3i?r(%@&t|QkyCz61yUR7GV6!-RWL82ZQeL#xK-Z<9QkXxuao}D9g z+%O6oYI%lH?$+LTcjR>oc|xUb^2Z$4a2M%$><{GbW$v%Xfwk-*zgLIQnoRQ9n=k?1 z6S}%CpH~Gyg{z-scfWL*mina#mCjE}j}^wMGi5H04G?Yp!c40+t#P0pD1B8?NC(8E z;t&&yTY-C>Pz+phxjY!xO~t?=mJ4Hkth`MhcaM)uKt31}gpM3eD8|}K{s&?GFW;Vp zE7h;2o)MVHpTo_KFEzk1wICM9$7+N&;XO1d#yCVSOq|Ea>kgqIX#<)2r#hmR9P7c? z21*>9B3I#%@gwURl?%9dr5xq(X|!<>x$Q# zUr21dVnSm*Y`q1Eaq{Y@PYZzhC`+e0dJcHHzieei(Kc%J=17NnoexOSi)s~4^}4d? z5?mvDORm;e@+{3OwsTtKbZw2##bLZvbHwI&`*V@wlfp~I#^O>j;D+%~{kgbUKEGbu zZ^cBM#zr@zHc@k1vS^}aj5%-@&aU9S%=^YaQ7L_e8GyFZ8l9G_bO5iOkSJ+YXHW0| z)~;Llm8%^^r^ps{ov?9pYfu6yG5#)hPC z)nda1hJpibp-p8$X!PEmsv$=!6&vHUsXgHMI+s{ud;-}xame~8c;>tdXIF5B*uld+ zOX-PqundQ!i|G@yA3};roC3HPVIKT52K7GW&y)J9kB(bA#&{$YP|*`Ek3KZAL|t>G z8tGat^}n*;UR_(`OEj<5xs?m%r!_WJM=k$7Jod!qYA@Q1#(vdGN+6JKIh?Qo;DD(G zzRL!=7Z()J6RSp$QF(jg_QtExXyYqnS}yzzju^5ZP1%_!s#|m*#4>DqwWtsQ+sQqg z)mY6uXevFcm*0oo+H6~6g6Cq#VD$4DG3A3a(bY5vzIZN_M{z)*B(=CX9eU%X>eXC1 zP9+#IpB%Pw2*syjQ*nxwidP?d&S9qTmRL9~ojZCcHsH1dU<@&#xWy^Z(73=*)|BFd z;24)w+}OA2vn5RqD}t*|U_62u2#a_=w;7w9*h0|CU%FNgQ9nrLCQ>K#YUc;z{t)Zo zN^|_|f;C)sBbNLK%)QGfH}z5Ja)CREsaDba8T=Hz7EI-nN!x8W#b1+z>QJ7s_)v`E z^*+D$lY!JiY;G+5&e=D(V(@L~`y725evCg}+E3yn2TL=o{dz+JFQ*k4l=xVt!0pY| z;_qr#7Bi}jAsSh-6?NLMUE1ymRuUDwQ|T1W`h;wDyi5C#BnhUS^h;#8+)yvco29b^ z3PB3psFwrTxPF6f zDqx@z43%=r)e#(zgwD<{~8EQi*t}? z&{&gUysy^Kl4*B&dy*T%IUd3BSniPB*i6$f*fy7(fdFgLwmmPgTi7CtV#S29`6K`&L&BE<>`f!CVU?qk#7X%oiSTU1w{O-{9^W| zbqh(WG4huVlz9p%V9QKB#q6?phs3@#rSj z69DDrq-75Ftf3GeaA?I;yjl#6i%oHhF2J&NY~QBOWsR{h_6`sWS`aH}Ttb=}10ef8 z=@t^yMOG?8ZV~B|Z(;hxlFH&Dw0}#c3!{G&5JT!55T6kB6w~FpuQQ!(&QF0^g33Fst2<-PtdK6(`-0x^xIqe%cP5m7Dd24So3I zq+_llKSKT4*T!x95N{97Vb5kG3&$#Yn zuxGPzj5keK)X6I;>gNvtJNLVuL)fD@)#zet$?*x*VB(-nP-N~a7l*M z6Ms=aty6$xz*LL6`1izGKnokloy(saFHE&@!y@g8-4n}^1z^RMr2l*Nd1&81Zv=@L zG%hk+XYK^Hz*Oi{M|8Y*=*BrJYi#4Y=r|(rQ1JbP@v7a`4@h_fP2{PWt{!i}tM;XN zOLWL#m0&0@|D3~C|JEG9-xC|+2V2Wrg|M_foEM%E$B5ZMEU^}_pzUK?9NYGx{5XF+ z73=$IKl}wI9gUoo2oi?ck+62NpTs7vMV(^-X$8|1wQwQ-o>(FLGi+8bZQD9^O01?m zcq(oWtOY}eyN!evV3I7&xq*{AmH{;so=u$HyclyK(DS&3)=#XuN7G4{RIHw-x7SSW ziDIN^2G<;na?Gcx)A^@z>I^#^PI=?J9MVx8i!@W`1)yIe#81=VT*R**ohXvy*+^!k z{hYzp7)|O8_&AMp+`drrYYOehFz=rkl?b1Rg2c|&-?n4^)?Vyy9ks1z3m9o{T#dmr zBhhPft^YcDU$1v=T^J>-G`F4+W81dx+jID}{yDtjahuq*m*&!#5&eE7(Zo$lHmWvYTYSHb z{5bU9-SX<(gwX#dxGu-sQJbEVx~bCwvTkICvvcCdYaeGkV%%bOjbF38_hNB(k8msZ z{g4`5<*4VHSg=DJ9;vw0nC1l*4(;oCvfh8b)^Eqe9PX~=t!`KaKm{)4#Cv*nB-R3z zS|qm27Hk_|)%Hjon!Ac8js(>!qbOA}RjEo($ej?e6 z%tuLcm=tE+nr4v}>Qu^AwS&LrDvi}#rDx4m;$Ore0jRZ< zU7CAvV>K$VSdB~006@T`aPAz#Tsh61w$F@)ki-@w7BofxPBM3;SOHeydXh42X`^-7 zftpoXLBpn~2uz?5i4b?!~V=I8Abl4Iy>((@j1uW%h{cPJN zirKAC?{*KZQ@ZV~X%x2N*7DQ1*gVwYDb7gTR!+)o&$;R|qd5^aL;?W;(-mv17^GP( zY&ZXdwJ%&k(ee(a8|6_uP+ND8I&(SqU&c(~ z<}`@K!XAs&vCw!7&lTuly3J@VAUX?*_(INEod)TEyl3UslFrVrJf7`5MAt^pWLW4< zbLGiM78Ad*ww9!yg>8+0syJx>K+ zRdv+0rF}m()lczg!9yV=a{DC^+J+UcPp-s89NwO#`Jy=Ol;ZO7Yk+R?5B9ZwHlR=*avdu~S8z zl~+08g47ERT+j}2irE#X$2pXD7j6f@AcP9Gi`>b4wdrRlS6aab1H9-Tq%6z(VAy3c1gT)^v|uFeViVB)X~Z(rNM$3aazVBMMT1! zciG$Y5#SbckWA3nf*y_;3?EE-MotjHV#xguB}llV@vPcAme2&Hb?X@*wrxRUcI(6T z<0ydnL33KRTW_~tNMaS>Pb1ttV! zj}o?7kUkDws5FAKOms=rpabkiS|uqi>9eVKl)!=Nk$aOr;MZ)b0IzUuyW3P0QN<;N z+YKm@#9J?C|A#HXv~B1J4cnM4>+lGQ-ZZx|u8ON&OW-(yXNkVO^5$~&$TKPjaC`9c z7m0mW%pXI)I_E6FD83_bXUd`S7h6n+qR)($BygFE9T#4~MkkmccF1^iKIMSCExA)M zsWHuK&$a$G_S80r$5!>J#Kt9m*tr@fNjdThTrcI~(DO(I^g2G{_QlI!nrWSbmU&Oj zTME}|uWkPv!%pGmYKUPXZUk-)Gd3Q6Wi;lUtGdH@Rq86|4&^xn(%96p>46c&uLQ4jKlDEX)!ag&7?90;hWvNf`0aWlp3&V{hctVnYW-C`xq|GP z0M8PxSf{<$YDr$ylFXX{$qWPD9myQ(6gijV*n=NQ>*j6m8c|;UIhJ#e9Xe^AJve@B zZ`{|pKR@LYi1kYrMl80;UXZZBr73kT2zk%S4Q^-VR&CDWa9Ca>3S8lbpF6B9zeq@Pw}3)+_Moma*6cHHF~Ly#0Pfj zXkDYJjVki(StBXVt$b6M;MzEW^b!ovz{_xcceIAJ6}|+` zMHAd7YD%r~Es?xt+I!{B<=mTRG=5CiQF(J~WTjV*gdv}EUE!LzTyqpI@&a4&+g}+~ zgj^*jj^`-qKh)?TNj*sa`SaYs$bQF&r@jsTMsw5bI0IoQ%u8%; z!V&G(;ymIA4OEBXxOQs6NX;J{6yw4x=NJQ+?YZzJPX;G6oWn-U9{f;FwWV?+XKUUR zE^f>$F@^{1)-ROUk6nCnfs5n1aoAh6>$DHoYm~QZ zoytMaUBLrjCF{`-JBpj1*YzXGBjzB)${4-aR$ixfn(I5AISI5Xuy@XfENvlWacel* zxK>R{u98G&}$7cxOWA9SKu&M=H2jBYiXpQM_xd? zRSN@*lqZ~#*0VRmn;DRG{AlZ-E9OD@e|#w~)w}%cjpZn@hj^^wW`~h;q8vu$Q2bS0rZX~cDmU_u%5BQ)+Dz4hL@o6sUm0xyj8&W? zuW_Y*>YqIq02a7p)4UXiX04h7+mwx_GmARv)0Xn_q9B0LqosgH)$nNE?mzOP_0f4- z=JX0NBXrui)Q89tdVyz1q6Y#^&HczZOyyPiM&#GLz(!lo$hkM4VgoC5?8OgZ!j{S# z%lSHXF#s$Ds3b~!)c3ISOzM){j0jifXQ;a7qwr1goCin0QkCT33wvfiKr~>gV;H;J z)S*0|w+MTtG^5vi?+M$z4n0C=YVT1=c1!C%qn;eM(VR5@=sd{@8Zd~uv^G5>jkZ(u zrp9tq6+h%xjGF=p0LR>;uZ+e50@z(mvCXk20k5;Tot0N>FFijBPtP{w_>YOedz-J?e(7A;3X-^o93t7XlPR^!MGa?MB5Vs+zkKJk)X(W<=`j^JI& zX)l-3JS)LWr#1hcysbGM?L^|lkPB_io5KZoE4Cx%{iyoPs24k=+vA2Ygcw1)D^Rl7 zyC+Qmf=}q;irEuT_aR$k2>kBJRz`tWyCxz7&S5H0pnzV^yp#*XO1PYTDW9D`Ax-z8 zk+tge5F=f4okU+5je%Qxkcb#9fuN5C8Q4BEcWGIVz)@>?6t3Wj2iBp_Ib_rNaQ6Lm zEN0j7qH`AzkE6ZVib!0;sacBVz=FCTRLg?OF6(l|S8GeeYFUP7FRxP0NAWD>6Pu5{ zJon^p$z77q$3+Zm%ddHgiIK6FsdWk2?D$#j(0WmMloR@!BNVuCiWrI#L}HD(hJv5cz?|Pq6%rz@6EerS zll;JWb@;K;U)@(%&g_H~P^m*>k7Apb$##860lGx&`K-Epo|coY?Pr*ev-C~nRei0G z+VpJ4{Pw7ML2g|Knp69|a=!YN_dbbZl~k|HI-CzqSH`%3R6|G^mjPav;u>FxuJRhL z@Krc%+w%Y^SCBPaSAkdPsBi^b9=gtg`bu3MMTg~uh0?+<;#aXGs~C^Mts)U|zB0E6 z<(2sg{LkWW#k|8gC2oQxxnBqWo3>g~`#TAa`@w-QJi$cspftNRc@&;n=)!kt=t%q7 zE`DwM=PbGev`}h^$#OZ+!F@KfS3VWJ7hWfvN1vls8Qk0A7n+mOc_{U()#XA`Y^c}P ze6?D@|7=bv4M%cI<;6s|=FY{9%DY*dm4*~Attt98eMzoVf|7XW(*-1)Z6I_w;b7|{ z)dQ|rWGT+N2nWlSg^zNS0UgWLl1*YA4lZ14uoMn!cTNsCHx~zMc$i*CBsXH4C~b0iF`mku8Y|W!Kq6pT;5M7lu3uhQ(wx&s6@Ct*eOVu?9xP`t z)@ALtp~W=zYT06H490NS{?z_tu}%FeYjS07lfM0azNA|Fsdh4wy(BL{rIrHj0MCA0 zXo{MpKD&mJd(&BKDaS3xD>ojSG~|ut24-wb@v?by019NzuOD&q*-)n`*)+QW8O)02 z$>}SY*15h~HlTLN#@fKH9aDeVno9G&nXThl>;0_r%9o^mR~vb#LH>51Zt+}s+#0#IGguX`E7U^!ye7{#A0z88mqOcofiDfE29c_#yMGF za_|hc@thAtHC{wuFQid_@!3tD4lb>QsW<|2=5#VPftu52|C~O=biSGzSiq@PYF7+G1u@y77R)OpOG$dAmzYuc$7%7cw zdATWuIlvy%M(Nv>A)6f^);@dDjVxTTaptjGfzqX-vLoTur7x{1C7#why4F^%NAXK( z)WUr{_L+{md;hFUtZB` zd7NI?awoW!E?{%IHrJEnTt>NPm2=rWZT6QY`_=2cI=|3`aAnRPSKR2Qx9KYaLSpo? zU4+K&a-MyYSt`)8%x7u6m-BNI(CJo{d6kuOeYx4MBZLX;v{dR6zijW?>*mp?=<3TX zHy>BjKgStY*jc=D+$^u)-=;4C$oV|dEoR8(5duN!2N9}?rqtIIchSZ1Ottioc%?_r z&&#?y&Yg<{IdE>Sx|nKaW}3_ERZ>$!i2a#$?csh^-Z@^m@z5NV+N_?d z&y2PJl*XLlx7@I8#YYl3E3edeNNPzka-r^>syD7oZf|i7@rSI55?+poPEKc53R}XX zvrp$rGVI1=8-toDrNi)v)82vo7>Js=d?fu+bzQlR6mP76v$*GYrB)|mdwtPq*SG0Y zB&V@*d95Ib^83KEwpGUlXj@aSf+kj1`U!eURe4#P($})o=b6r0V`)vr{_3dWsnBXi z!jui;>TCT%ZTKE=fDY0ttpid%R*D_MsJ1BBwp9QJJ&Qm6e%r}$X{#g8hby4d9=bGj z45akh(X-lc4$V32FX6BnrRr6ELq1o~ucQv0`&2EV`bOJIxhs#O^v?0hebK2@=T~2Q zzu^l^sz&ns$-XDdoC3+*k1_b{C6?5Og_>K;m!Hkjt1VMViC!6q2OK`9>T|MIOi!mZ zRgsado&uZ#PmqG{vuO5+bvzypom7NqY{Wr-4r}&6Yks8ZPR*-dkJhE<5`C(D z6g+g!ff>RG&mMO2;4FRovK57K@z%$-6X37jegESXM$os2VKDMkcBFJKtlX%S&#FWBx-RmBgu3u(p@X>KuXc*A zj>>@+Qk5wl+8z2(qxvbNX7!r6h)Urq-5W_sSogbgI~7J=P=Ui1;x%d?Rqmr*W}|e# zET5^xGuPEx8{$@<8Epl+#wC0pivpqGf(4&*J@cYCP_ZRd>ep44YPNu}QKi6T_03%* zHC4Wl3+k$K`9kEcS&^6V&0S{teDxCMFs8+$YY?l;F2bwMZ`1D?wS`@#T`~&+vW;N@ zq^)Tr_BPw~ETQ^eg^Y%JX4rV{Y+m(>tSGBRtCpAwO6R*CS)jLuj!X@qkIq*zxmV)k zO-~8^7ww~Sr{|a$&#bG~uIHErus^B}CAFpM9##A5mC+o5M;Y%S_M_B#2G588RZM4y zR+y7(w@|1nxS7c^&Hl_D^;xgK5><$p6G~SlS&?(;T7P!!OLTZv4N|qY)-0RR6l~Gj z-0hTmwQP5S7Ye{lV`Ab*E_?549GNOnA%_wQJk*>VP1ak#2^lXx)JwW2lH{;CE7AVh zbuG~#HX)CyO|s_1VDxSJm=IB{=s-;B=e3WN0@#=vo5Sxvud-t+vzqS8)D6gE5xXco zx0li#CG$(sFIp#s-AJ=X5?;0&ITynoT@~b6^)1onnQD)2MpwHXopqjz6ew9lML-cJ zAK&js!d|TTY4qt?$VKjAJxhAA3!H^tT7lLzevwP`(%OPtPTyzNF;{zP@~)=KYy7g( zmwLS5(jR)tId2`Nua}749jzB^hYATn1s+;~nrq3s3?I7g-sDSke2My%=#rX?-kQDW zFEH($jMPMNj0(I61#l7dzAL>5;aDUU=%)ZL!+u&4sZ4?1Ywi-8QGU^;Z1P8YadSRe z;lB8nnXk(b>8o!RjhpbSM07Y#fwL~dXSfW`(oR>$qiWbwH@6w>38>=oOa-U_6?kd| zaN~T`XOX9#7#2qbsKBEs;J(20(l?`LKc9@!e-!ScE%Ha=%Q<_b*%GctPuSTvs|TAN z(jBir$tA#Lo1O=1D1Q#LM1-`A<44^>z5vlt6h`5WpPA>%u$l+nJ)diG52$9fen#ax zB*`f9=i>5`K2QJA%l0MA?Pv`{tK&#rFY%etkO(W=8MCk=Fm*0MBfyNN9tz;XTjm&z zBd^3B1rXyj1(tPl8UrS#0xwqq-mb^Y{gJvJwi)g5E2Q{Er!foeQBj9)07fR@M)%ZZ zH*#uEEsV*d3iO(DUb<0RY%$h(IMJ5{L$M#_s{;`+o#@o>-ICh_jlc}A^q^fkL9iV!T-m9=?m|X--|qFsa`5; zkLAlHkeJdQ0!QEnLf;18HMhUwDN-ZNRN$c$7{uya%s={W*d{4|-tS>Qu{A=?u0 zc#Yw&j6R+um5i|<^idi5knT@*0X*a!ko4&a;K|1QN~d3W|Mrz%{l@J_e&Tny4e5XQ z=jK;PWkbr(ke)tGBtQkIz=J4oz0Zttv(s(q43lygaJSNr0V@9Q?=f_kWxN9VJ4KgE z;L~s3KKSsX+c!S=@b>ro#BX;SQuzG--#2}R^rIs_Lpr|fr_R93_^GG&l;W2A!=UWX zxMs^Xqob7_G+}4KQm(Ug&$% zwSF24v)J)j(c7yxZlB2S8J#lVcZ}X{@4x@i?Q3%W(ck<#+-FE-&}~THeDe+WcK+}$ zH6bC7CI#$tHv#MjGRtcR3PWF-0!OUbqt|ABGkQeTFKs2UUMet30bH*~-$h2%QizLR zJippN7RI%?O*h2Xuiu>Brk{VC6E>vZ_~0XfeE;^Fe)1n#Z%E}^_I!o3P3>oodV!bg zvrj4OYgFKM^d^ocwCTRv2wfI-K#DRV^r8aKqJTcbop^D%)Ppz0dW-r%Hh~{~BpX5O z2uC0C%IKSKzIl7^>)(*igbD-sY^WY@%BJ`|d4=?qe1`Pz`^kTFvmyPMf2m2O;@K#0 zUqQy$sX6!(?8K5VS5#o+x(wADe`WLlCI_Sl)l3@|czy-0aB(Sz0ndo;Z^FwgzLL%0 zfB9eiH@83c7yi@R_kHO*_&ua=$QU=I)siz{hXPpgy8L&*Fq8@m zS0KI_9h|zu^TJ?;gr@>jphbb<*Y=zMPqJu!`OAOn_Lu&XfB$y-<{!J=zViQxW#rQ@ zGUC1Yw{Bnh^3`z( zz2Ey+Z@=vy_{rNxAAIcI>i5Ffr2@kg@Ym?DL^CiqzoQj?KK#>O8GSw}S<$m7aP*D) zS#&$Ajt}H7A>D3&^Y(M{w)y}2OJ9?hfkr+R%Ia{t%~!YY`QkgtUu=($lz#r5w{QRB zU-{2(f9l`*_ilgxkNrj`(Hrs&`^^saEb*9^3Jg%-O83x_cY^`ay;w+YMqljIvv4Z# z9148uGoO({e$(yO{lNF#zURB&AN-!AJhi!3MnAs&!k7P!`{I=T?oq4ehq4p>(ih&j z{V#v@FW>&epZ+tqKm0HK!P}=l_4@Xa*!h>4tWs=K0V+TRO{-^%T?T`M;|DxN7ekfmb!Z-1GPys6NaunbOt8A|M z%4nHR^xCNaH=;WQWOz^k{8##$zv*-C)+a=L000jTNklM9fTyrMgjNxJ~!4e27D79e^u#y`JAfzYfSitk{npyuf?t#(LeF0|J~ak`NRLh z^ol4pqHoCOM0rpFD)1r|;D$6m?c9v!H5%^0P1=wNX|Qf8Kn3a*==REJeQHKf0V+TR9#a8)gZ`b*y?y(?{3Y@0EEBPks6+XLqngC2p1*iZOC{+O8pnpTYy!77Jzj6EQ z7k=vYZ~SZj`0Zc+SO3uMQ}PS#-7BKph?Yu8KPo^4sKBBCH=~ObY)}CzKn2nY=w|e* zU;WkFpZ^Pg@%9IP=J(t_`}U`A{Dt;u-8f1Gr~nm6DZtHWN*#_-0V+TRJO%I;{Rba> zbi{0_Z`t!(^H-S@@}L4#;BggrC2uwH3rvqYe`HPt zF0VlH|AM^xTz>vY@HrLWrT3ik`lwa$zx9tgbL340oq?pJ3vgW?3J2$*sjxMCcD z?#%tg&Ed;c&iW>O>IcQDx3|sq#k6%gqo$;8#J-hta34Uqj=>c=L-rVN2%J+O0|6K2ym^tw+Y_BB!w!Kx~oSgA` zq3{Z`+uw_`dX6@oeZP9X{j=vA9&7eU%)3<^(=93;EN>gF*R}e&L|fnOVvh5-9;~jl zy`VUn44_44%mg~eLlthSmBStS@}|Pk6jGY$$kB!=Gpd_wvIPsS2yhUJD#R&1qt4O z#%!&ITA6-N#(hSorWUMV`u6DYu`dBHXZAoN=76f`gLF52OI;OLc%0a5W~y;~X19C2 z=CN3wZLpXE#%;kAraR5PUZ1C4TpT9z85Y^#c+3%bkXEA1$qS59gt$8}Ex!o#GUkUm z29#)59B>0B1M^825NQBva*y0nlTkyF^2TVGjwY$m95q^?fQwB~eK}g5j#ek5wdrVM i0^Z0PrfsPo{~4DiJqTF8p2>#+2s~Z=T-G@yGywqUq-XK~ diff --git a/apps/electron/buildResources/macos-background.tiff b/apps/electron/buildResources/macos-background.tiff deleted file mode 100644 index a57501f7e8d8776711de10037794a36e8c428051..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1385894 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 z�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

5k~o$sC)NK1hk>=Y(=+6t==qxCt*&T9gx& zM4+fC>WKOxOf(ZMMO)EHbQ3*AtVk3oB3)#Q;bOEHFD8rW;w>>(EEG${O0h<)6C1=9 zv0Z#2_KU;fxHu*9#CdU9`WrH`ad(spT|bVT}AIxAh0ewFU%^g4T;o6c8PQCCeDsteb( z(sk0kqD#;X)D6{*)lJpS)-Be(ugleK*X`FG*X8Lh>#oahEOvSieHneAK2#r}Z>#UF z@2gMOkI+xj=ja#f*XTFv_vpXY=jpHLZyQVoSA*FQXsB<9G;}t^8U`9h7^WEJ8dex` z4Z93q8_pW?4fl->MjvApV?AS(v8yq`m~9+y%rP!At~c&B9ygvh-Y}U=9wvWN9aE&K zo2j2^m}!dX9n)IVHq#N)In#A3D=ROnDpn1x+FHd}Wm=85nq&38)#p}6td>xHq&gD+HAHtWOLr;uC24J zzimU?PPYAQN88S}U1Pi3_O$IaJ3G6wc6IIA+a=kJvYT!9q1|4)vv#-bUF-wwBkX(F zXW37+Uv9t6{#*NN4h{|#9l{*CJ7hXcby(@J)8TuETP0je1eJ&?5m#bliFqY*OB^k6 z)zQYWf@8R2PsgE-IgTGY9&)_mWaCuPDZ(knX@t`}r%g^Lovu5(I@fS+>zv{|#d($U zKIe-rRxTA?nz_WejCEP!veV_9tKPMoYlLg8>uat{U3a^lcQd*9yG6P6bDQk;f!jg1 ze0LZ3+V0WrgWc!3f99U&q4%ih5#^EWG0kJ0#|e)+C4EbVmy9ntvE-VPM@!!HEae&I z8SgpCbFJrb&pTdbuV!BTz25ZN;C05^;2q%I-aFfSf%k6jE2Z2@)h`uWYEr3nrM~mg z`2_fM@EPW_#OHv|b>GsyEqv2_=lJgQy;9nvbXe(rrDv7iTKbZot6w9(B)?gHpZon} zb~lHclg+cuyUh7ze9A}|u5YP_`kD%5;V}dpWU9DEWTK8&iR@+nUe)Zt$$<>!uKUKq}M#~ywYHY6YYt4X~u{Gz_ zJXXu0R`XgTYi+FcOYJJP<7+Rd{Y|iIaGT)QgLee~9#SVHJ!DPDr8?#7^sY0%&dE@> z&~~9yLig4+)@@REWZf-wZ`TW{msxLJy?@mYtlz)>s`?ij_&11eu(ZLshGiSZG+fj$ zuaUV???&%7%4=MvaZKaIjeiI$7Zw+`EbKyfZ&|11 zt1Wl6vTxO~)!bG;v<_&U-gG1v_c-y2|0{!E+1Jy%XL8TadO7xr z>Gg4MWA84#SM|OZ(>7*t%=JD|edhPckBx|ZJN9y1Slq0*OYsfkXT)FV+pzD9z84c3 zCd^E@l-M{iC-F*BMAF=(U;0J%TiEYr|F->?_kWPwC3$U%bxQA)O{p%a{Zn@hC_P~C zfFo&D(#EId4Xiitt%3RJtfi%I0)|W+a$#umq3;bd42vDMV|bb2qlce;HT=~@Bcu_1M(h|_ZsgdJ=SQ^|wPLjG z=>DU>8dH7Dj4{8x*5$R$V|~Yt8hdVBi*c*Rml&Tu{^aZRUtc)EFd=Ee!HKmd&Y5_B zQrx63Cs&`GGx^?>*ePGWQR9u-Z#Z?2f(JY(pLb2Hn_ z%$;SPHEGswZ}oa>Urz0ug>T!wo%MF!?AEh4&M7}<`kZ@n6XzbE*JR$>`9AX}&cFFi z+&f1Xge_RJ(0AeFg?HXfdiR?}Ef(c2uDCd7iD}88B|k2WUb^SK(Dzm@^IkT2+3(9! zm*=hMuwvKBIxAPM@>w-)wQhCR>PzqUc>nMRO+VPUCUDK7wH|9He<(i8`tYZZdVh3c zU8{9FJ`VkO%_kK;nZMq3{iIwecSvsjhQtkd8@p{hvZ>{!9h>WKUjJ#(r^~mL*)s1l z_s^znwcR>)>x0jSetvyh+O{j(6Skk*(QC)4on3bx+tq&8!QHKP@BO0r7d!Wa@A-Uh z!@XPf)!Vn}%g`@3><`(Wdm#A0`mch&T7NL)VD6zhhc+IrdwBDa21m9YZG3e5*G<3v z;#kzN{l{NAe&j^w6W^TdaWe0lxNk0goBZuB-wpci?x|6yji)D_aXORpz0dcH|55oL zYx6?#K0Dj=?13LT{&4DC?77ST%=qWM^J9N>_%Y{#--VSIYhK)PsrjYDKfV0Z`O9gS z?_L@Iv-8jMuU5MH$-lz>bs)cM{`p_he|hlhlxtqsmj71!w;k8pUH|?@%8k1>C*AV8 kwc>W@?LBw8+_`W!`<~Uk*}qr*ee?ZR_fJ1adGO$W04NBud;kCd diff --git a/apps/electron/electron-builder.json b/apps/electron/electron-builder.json deleted file mode 100644 index 0069be928..000000000 --- a/apps/electron/electron-builder.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "productName": "Flowser", - "extends": null, - "appId": "dev.flowser.app", - "electronVersion": "20.1.0", - "asar": true, - "afterSign": "./scripts/notarize.js", - "asarUnpack": [ - "node_modules/sqlite3/lib/binding/**", - "**/go-bindings/bin/*" - ], - "files": [ - "build/electron/**/*", - "build/react/**/*", - "node_modules/**/*", - "package.json" - ], - "directories": { - "buildResources": "build/react/static", - "output": "release/build" - }, - "mac": { - "target": { - "target": "default", - "arch": [ - "arm64", - "x64" - ] - }, - "type": "distribution", - "hardenedRuntime": true, - "icon": "build/react/static/app-icon/icons/mac/icon.icns", - "entitlements": "src/entitlements.mac.plist", - "entitlementsInherit": "src/entitlements.mac.plist", - "category": "public.app-category.developer-tools" - }, - "dmg": { - "sign": false, - "background": "build/react/static/macos-background.tiff", - "contents": [ - { - "x": 219, - "y": 358, - "type": "dir", - "name": "Flowser.app" - }, - { - "x": 439, - "y": 358, - "type": "link", - "name": "Applications", - "path": "/Applications" - } - ], - "artifactName": "Flowser-${version}-${os}-${arch}.${ext}" - }, - "win": { - "icon": "build/react/static/app-icon/icons/win/icon.ico", - "target": [ - { - "target": "nsis", - "arch": [ - "x64" - ] - }, - { - "target": "zip", - "arch": [ - "x64" - ] - } - ] - }, - "nsis": { - "oneClick": false, - "allowToChangeInstallationDirectory": false, - "deleteAppDataOnUninstall": true, - "artifactName": "Flowser-${version}-${os}-${arch}-setup.${ext}" - }, - "linux": { - "target": [ - { - "target": "AppImage", - "arch": "x64" - }, - { - "target": "deb", - "arch": "x64" - } - ], - "category": "Development", - "icon": "build/react/static/app-icon/icons/png/", - "executableName": "Flowser", - "artifactName": "flowser-${version}-${os}-${arch}.${ext}" - }, - "extraResources": [ - "./assets/**" - ], - "publish": { - "provider": "github", - "owner": "onflowser", - "repo": "flowser" - } -} diff --git a/apps/electron/package-lock.json b/apps/electron/package-lock.json new file mode 100644 index 000000000..bc9cd0c74 --- /dev/null +++ b/apps/electron/package-lock.json @@ -0,0 +1,18619 @@ +{ + "name": "electron-react-boilerplate", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "electron-debug": "^3.2.0", + "electron-log": "^4.4.8", + "electron-updater": "^6.1.4", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-router-dom": "^6.16.0" + }, + "devDependencies": { + "@electron/notarize": "^2.1.0", + "@electron/rebuild": "^3.3.0", + "@pmmmwh/react-refresh-webpack-plugin": "^0.5.11", + "@svgr/webpack": "^8.1.0", + "@teamsupercell/typings-for-css-modules-loader": "^2.5.2", + "@testing-library/jest-dom": "^6.1.3", + "@testing-library/react": "^14.0.0", + "@types/jest": "^29.5.5", + "@types/node": "20.6.2", + "@types/react": "^18.2.21", + "@types/react-dom": "^18.2.7", + "@types/react-test-renderer": "^18.0.1", + "@types/terser-webpack-plugin": "^5.0.4", + "@types/webpack-bundle-analyzer": "^4.6.0", + "@typescript-eslint/eslint-plugin": "^6.7.0", + "@typescript-eslint/parser": "^6.7.0", + "browserslist-config-erb": "^0.0.3", + "chalk": "^4.1.2", + "concurrently": "^8.2.1", + "core-js": "^3.32.2", + "cross-env": "^7.0.3", + "css-loader": "^6.8.1", + "css-minimizer-webpack-plugin": "^5.0.1", + "detect-port": "^1.5.1", + "electron": "^26.2.1", + "electron-builder": "^24.6.4", + "electron-devtools-installer": "^3.2.0", + "electronmon": "^2.0.2", + "eslint": "^8.49.0", + "eslint-config-airbnb-base": "^15.0.0", + "eslint-config-erb": "^4.1.0-0", + "eslint-import-resolver-typescript": "^3.6.0", + "eslint-import-resolver-webpack": "^0.13.7", + "eslint-plugin-compat": "^4.2.0", + "eslint-plugin-import": "^2.28.1", + "eslint-plugin-jest": "^27.4.0", + "eslint-plugin-jsx-a11y": "^6.7.1", + "eslint-plugin-promise": "^6.1.1", + "eslint-plugin-react": "^7.33.2", + "eslint-plugin-react-hooks": "^4.6.0", + "file-loader": "^6.2.0", + "html-webpack-plugin": "^5.5.3", + "identity-obj-proxy": "^3.0.0", + "jest": "^29.7.0", + "jest-environment-jsdom": "^29.7.0", + "mini-css-extract-plugin": "^2.7.6", + "prettier": "^3.0.3", + "react-refresh": "^0.14.0", + "react-test-renderer": "^18.2.0", + "rimraf": "^5.0.1", + "sass": "^1.67.0", + "sass-loader": "^13.3.2", + "style-loader": "^3.3.3", + "terser-webpack-plugin": "^5.3.9", + "ts-jest": "^29.1.1", + "ts-loader": "^9.4.4", + "ts-node": "^10.9.1", + "tsconfig-paths-webpack-plugin": "^4.1.0", + "typescript": "^5.2.2", + "url-loader": "^4.1.1", + "webpack": "^5.88.2", + "webpack-bundle-analyzer": "^4.9.1", + "webpack-cli": "^5.1.4", + "webpack-dev-server": "^4.15.1", + "webpack-merge": "^5.9.0" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@adobe/css-tools": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.1.tgz", + "integrity": "sha512-/62yikz7NLScCGAAST5SHdnjaDJQBDq0M2muyRTpf2VQhw6StBg2ALiu73zSJQ4fMVLA+0uBhBHAle7Wg+2kSg==", + "dev": true + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz", + "integrity": "sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.22.3", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.3.tgz", + "integrity": "sha512-aNtko9OPOwVESUFp3MZfD8Uzxl7JzSeJpd7npIoxCasU37PFbAQRpKglkaKwlHOyeJdrREpo8TW8ldrkYWwvIQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.22.1", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.1.tgz", + "integrity": "sha512-Hkqu7J4ynysSXxmAahpN1jjRwVJ+NdpraFLIWflgjpVob3KNyK3/tIUc7Q7szed8WMp0JNa7Qtd1E9Oo22F9gA==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.21.4", + "@babel/generator": "^7.22.0", + "@babel/helper-compilation-targets": "^7.22.1", + "@babel/helper-module-transforms": "^7.22.1", + "@babel/helpers": "^7.22.0", + "@babel/parser": "^7.22.0", + "@babel/template": "^7.21.9", + "@babel/traverse": "^7.22.1", + "@babel/types": "^7.22.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.22.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.3.tgz", + "integrity": "sha512-C17MW4wlk//ES/CJDL51kPNwl+qiBQyN7b9SKyVp11BLGFeSPoVaHrv+MNt8jwQFhQWowW88z1eeBx3pFz9v8A==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.3", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/generator/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==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@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-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.22.1", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.1.tgz", + "integrity": "sha512-Rqx13UM3yVB5q0D/KwQ8+SPfX/+Rnsy1Lw1k/UwOC4KC6qrzIQoY3lYnBu5EHKBlEHHcj0M0W8ltPSkD8rqfsQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.0", + "@babel/helper-validator-option": "^7.21.0", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.22.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.1.tgz", + "integrity": "sha512-SowrZ9BWzYFgzUMwUmowbPSGu6CXL5MSuuCkG3bejahSpSymioPmuLdhPxNOc9MjuNGjy7M/HaXvJ8G82Lywlw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.22.1", + "@babel/helper-function-name": "^7.21.0", + "@babel/helper-member-expression-to-functions": "^7.22.0", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.22.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/helper-split-export-declaration": "^7.18.6", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz", + "integrity": "sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "regexpu-core": "^5.2.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.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-define-polyfill-provider/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.1", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.1.tgz", + "integrity": "sha512-Z2tgopurB/kTbidvzeBrc2To3PUP/9i5MUe+fU6QJCQDyPwSH2oRapkLw3KGECDYSjhQZCNxEvNvZlLw8JjGwA==", + "dev": true, + "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.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", + "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.20.7", + "@babel/types": "^7.21.0" + }, + "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.22.3", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.3.tgz", + "integrity": "sha512-Gl7sK04b/2WOb6OPVeNy9eFKeD3L6++CzL3ykPOWqTn08xgYYK0wz4TUh2feIImDXxcVW3/9WQ1NMKY66/jfZA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.3" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz", + "integrity": "sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.21.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.22.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.1.tgz", + "integrity": "sha512-dxAe9E7ySDGbQdCVOY/4+UcD8M9ZFqZcZhSPsPacvCG4M+9lwtDDQfI2EoaSvmf7W/8yCBkGU0m7Pvt1ru3UZw==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.1", + "@babel/helper-module-imports": "^7.21.4", + "@babel/helper-simple-access": "^7.21.5", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.21.9", + "@babel/traverse": "^7.22.1", + "@babel/types": "^7.22.0" + }, + "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.21.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.21.5.tgz", + "integrity": "sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg==", + "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-replace-supers": { + "version": "7.22.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.1.tgz", + "integrity": "sha512-ut4qrkE4AuSfrwHSps51ekR1ZY/ygrP1tp0WFm8oVq6nzc/hvfV/22JylndIbsf2U2M9LOMwiSddr6y+78j+OQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.1", + "@babel/helper-member-expression-to-functions": "^7.22.0", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/template": "^7.21.9", + "@babel/traverse": "^7.22.1", + "@babel/types": "^7.22.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.21.5.tgz", + "integrity": "sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.21.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", + "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.0" + }, + "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==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.21.5.tgz", + "integrity": "sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", + "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz", + "integrity": "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.19.0", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.5", + "@babel/types": "^7.20.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.22.3", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.3.tgz", + "integrity": "sha512-jBJ7jWblbgr7r6wYZHMdIqKc73ycaTcCaWRq4/2LpuPHcx7xMlZvpGQkOYc9HeSjn6rcx15CPlgVcBtZ4WZJ2w==", + "dev": true, + "dependencies": { + "@babel/template": "^7.21.9", + "@babel/traverse": "^7.22.1", + "@babel/types": "^7.22.3" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.22.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.4.tgz", + "integrity": "sha512-VLLsx06XkEYqBtE5YGPwfSGwfrjnyPP5oiGty3S8pQLFDFLaS8VwWSIxkTXpcvr5zeYLE6+MBNl2npl/YnfofA==", + "dev": true, + "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.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz", + "integrity": "sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-proposal-optional-chaining": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz", + "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-remap-async-to-generator": "^7.18.9", + "@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.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.20.7.tgz", + "integrity": "sha512-AveGOoi9DAjUYYuUAG//Ig69GlazLnoyzMw68VCDux+c1tsnnH/OkYcpz/5xzMkEFC6UxjR5Gw1c+iY2wOGVeQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.20.7", + "@babel/helper-plugin-utils": "^7.20.2", + "@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.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz", + "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@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.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", + "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.20.7" + }, + "engines": { + "node": ">=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.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.20.7.tgz", + "integrity": "sha512-T+A7b1kfjtRM51ssoOfS1+wbyCVqorfyZhT99TvxxLMirPShD8CzKMRepMlCBGM5RpHMbn8s+5MMHnPstJH6mQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.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.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz", + "integrity": "sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2", + "@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-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "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-import-assertions": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", + "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", + "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-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.21.4.tgz", + "integrity": "sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.21.4.tgz", + "integrity": "sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz", + "integrity": "sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz", + "integrity": "sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-remap-async-to-generator": "^7.18.9" + }, + "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.20.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.15.tgz", + "integrity": "sha512-Vv4DMZ6MiNOhu/LdaZsT/bsLRxgL94d269Mv4R/9sp6+Mp++X/JqypZYypJXLlM4mlL352/Egzbzr98iABH1CA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.7.tgz", + "integrity": "sha512-LWYbsiXTPKl+oBlXUGlwNlJZetXD5Am+CyBdqhPsDVjM9Jc8jwBJFrKhHf900Kfk2eZG1y9MAG3UNajol7A4VQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-compilation-targets": "^7.20.7", + "@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.20.2", + "@babel/helper-replace-supers": "^7.20.7", + "@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-computed-properties": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz", + "integrity": "sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/template": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.7.tgz", + "integrity": "sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "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.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz", + "integrity": "sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.21.5.tgz", + "integrity": "sha512-OVryBEgKUbtqMoB7eG2rs6UFexJi6Zj6FDXx+esBLPTCxCNxAY9o+8Di7IsUGJ+AVhp5ncK0fxWUBd0/1gPhrQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.21.5", + "@babel/helper-plugin-utils": "^7.21.5", + "@babel/helper-simple-access": "^7.21.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz", + "integrity": "sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==", + "dev": true, + "dependencies": { + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-validator-identifier": "^7.19.1" + }, + "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.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz", + "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2" + }, + "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.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz", + "integrity": "sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "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-react-constant-elements": { + "version": "7.22.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.22.3.tgz", + "integrity": "sha512-b5J6muxQYp4H7loAQv/c7GO5cPuRA6H5hx4gO+/Hn+Cu9MRQU0PNiUoWq1L//8sq6kFSNxGXFb2XTaUfa9y+Pg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.21.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz", + "integrity": "sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==", + "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-react-jsx": { + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.20.13.tgz", + "integrity": "sha512-MmTZx/bkUrfJhhYAYt3Urjm+h8DQGrPrnKQ94jLo7NLuOU+T89a7IByhKmrb8SKhrIYIQ0FN0CHMbnFRen4qNw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-jsx": "^7.18.6", + "@babel/types": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz", + "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==", + "dev": true, + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz", + "integrity": "sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^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-regenerator": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz", + "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "regenerator-transform": "^0.15.1" + }, + "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-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.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz", + "integrity": "sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0" + }, + "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-typescript": { + "version": "7.22.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.3.tgz", + "integrity": "sha512-pyjnCIniO5PNaEuGxT28h0HbMru3qCVrMqVgVOz/krComdIrY9W6FCLBq9NWHY8HDGaUlan+UhmZElDENIfCcw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.22.1", + "@babel/helper-plugin-utils": "^7.21.5", + "@babel/plugin-syntax-typescript": "^7.21.4" + }, + "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.20.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz", + "integrity": "sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.20.1", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-async-generator-functions": "^7.20.1", + "@babel/plugin-proposal-class-properties": "^7.18.6", + "@babel/plugin-proposal-class-static-block": "^7.18.6", + "@babel/plugin-proposal-dynamic-import": "^7.18.6", + "@babel/plugin-proposal-export-namespace-from": "^7.18.9", + "@babel/plugin-proposal-json-strings": "^7.18.6", + "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", + "@babel/plugin-proposal-numeric-separator": "^7.18.6", + "@babel/plugin-proposal-object-rest-spread": "^7.20.2", + "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-private-methods": "^7.18.6", + "@babel/plugin-proposal-private-property-in-object": "^7.18.6", + "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.20.0", + "@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.18.6", + "@babel/plugin-transform-async-to-generator": "^7.18.6", + "@babel/plugin-transform-block-scoped-functions": "^7.18.6", + "@babel/plugin-transform-block-scoping": "^7.20.2", + "@babel/plugin-transform-classes": "^7.20.2", + "@babel/plugin-transform-computed-properties": "^7.18.9", + "@babel/plugin-transform-destructuring": "^7.20.2", + "@babel/plugin-transform-dotall-regex": "^7.18.6", + "@babel/plugin-transform-duplicate-keys": "^7.18.9", + "@babel/plugin-transform-exponentiation-operator": "^7.18.6", + "@babel/plugin-transform-for-of": "^7.18.8", + "@babel/plugin-transform-function-name": "^7.18.9", + "@babel/plugin-transform-literals": "^7.18.9", + "@babel/plugin-transform-member-expression-literals": "^7.18.6", + "@babel/plugin-transform-modules-amd": "^7.19.6", + "@babel/plugin-transform-modules-commonjs": "^7.19.6", + "@babel/plugin-transform-modules-systemjs": "^7.19.6", + "@babel/plugin-transform-modules-umd": "^7.18.6", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1", + "@babel/plugin-transform-new-target": "^7.18.6", + "@babel/plugin-transform-object-super": "^7.18.6", + "@babel/plugin-transform-parameters": "^7.20.1", + "@babel/plugin-transform-property-literals": "^7.18.6", + "@babel/plugin-transform-regenerator": "^7.18.6", + "@babel/plugin-transform-reserved-words": "^7.18.6", + "@babel/plugin-transform-shorthand-properties": "^7.18.6", + "@babel/plugin-transform-spread": "^7.19.0", + "@babel/plugin-transform-sticky-regex": "^7.18.6", + "@babel/plugin-transform-template-literals": "^7.18.9", + "@babel/plugin-transform-typeof-symbol": "^7.18.9", + "@babel/plugin-transform-unicode-escapes": "^7.18.10", + "@babel/plugin-transform-unicode-regex": "^7.18.6", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.20.2", + "babel-plugin-polyfill-corejs2": "^0.3.3", + "babel-plugin-polyfill-corejs3": "^0.6.0", + "babel-plugin-polyfill-regenerator": "^0.4.1", + "core-js-compat": "^3.25.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@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/preset-react": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.18.6.tgz", + "integrity": "sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-transform-react-display-name": "^7.18.6", + "@babel/plugin-transform-react-jsx": "^7.18.6", + "@babel/plugin-transform-react-jsx-development": "^7.18.6", + "@babel/plugin-transform-react-pure-annotations": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.21.5.tgz", + "integrity": "sha512-iqe3sETat5EOrORXiQ6rWfoOg2y68Cs75B9wNxdPW4kixJxh7aXQE1KPdWLDniC24T/6dSnguF33W9j/ZZQcmA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.21.5", + "@babel/helper-validator-option": "^7.21.0", + "@babel/plugin-syntax-jsx": "^7.21.4", + "@babel/plugin-transform-modules-commonjs": "^7.21.5", + "@babel/plugin-transform-typescript": "^7.21.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true + }, + "node_modules/@babel/runtime": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.15.tgz", + "integrity": "sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.21.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.21.9.tgz", + "integrity": "sha512-MK0X5k8NKOuWRamiEfc3KEJiHMTkGZNUjzMipqCGDDc6ijRl/B7RGSKVGncu4Ro/HdyzzY6cmoXuKI2Gffk7vQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.21.4", + "@babel/parser": "^7.21.9", + "@babel/types": "^7.21.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.22.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.4.tgz", + "integrity": "sha512-Tn1pDsjIcI+JcLKq1AVlZEr4226gpuAQTsLMorsYg9tuS/kG7nuwwJ4AB8jfQuEgb/COBwR/DqJxmoiYFu5/rQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.21.4", + "@babel/generator": "^7.22.3", + "@babel/helper-environment-visitor": "^7.22.1", + "@babel/helper-function-name": "^7.21.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.22.4", + "@babel/types": "^7.22.4", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.22.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.4.tgz", + "integrity": "sha512-Tx9x3UBHTTsMSW85WB2kphxYQVvrZ/t1FxD88IpSgIjiUJlCm9z+xWIDwyo1vffTwSqteqyznB8ZE9vYYk16zA==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.21.5", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@develar/schema-utils": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/@develar/schema-utils/-/schema-utils-2.6.5.tgz", + "integrity": "sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==", + "dev": true, + "dependencies": { + "ajv": "^6.12.0", + "ajv-keywords": "^3.4.1" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@electron/asar": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@electron/asar/-/asar-3.2.4.tgz", + "integrity": "sha512-lykfY3TJRRWFeTxccEKdf1I6BLl2Plw81H0bbp4Fc5iEc67foDCa5pjJQULVgo0wF+Dli75f3xVcdb/67FFZ/g==", + "dev": true, + "dependencies": { + "chromium-pickle-js": "^0.2.0", + "commander": "^5.0.0", + "glob": "^7.1.6", + "minimatch": "^3.0.4" + }, + "bin": { + "asar": "bin/asar.js" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/@electron/get": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-2.0.2.tgz", + "integrity": "sha512-eFZVFoRXb3GFGd7Ak7W4+6jBl9wBtiZ4AaYOse97ej6mKj5tkyO0dUnUChs1IhJZtx1BENo4/p4WUTXpi6vT+g==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "env-paths": "^2.2.0", + "fs-extra": "^8.1.0", + "got": "^11.8.5", + "progress": "^2.0.3", + "semver": "^6.2.0", + "sumchecker": "^3.0.1" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "global-agent": "^3.0.0" + } + }, + "node_modules/@electron/get/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/@electron/get/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@electron/get/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@electron/get/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/@electron/notarize": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@electron/notarize/-/notarize-2.1.0.tgz", + "integrity": "sha512-Q02xem1D0sg4v437xHgmBLxI2iz/fc0D4K7fiVWHa/AnW8o7D751xyKNXgziA6HrTOme9ul1JfWN5ark8WH1xA==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "fs-extra": "^9.0.1", + "promise-retry": "^2.0.1" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@electron/osx-sign": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@electron/osx-sign/-/osx-sign-1.0.5.tgz", + "integrity": "sha512-k9ZzUQtamSoweGQDV2jILiRIHUu7lYlJ3c6IEmjv1hC17rclE+eb9U+f6UFlOOETo0JzY1HNlXy4YOlCvl+Lww==", + "dev": true, + "dependencies": { + "compare-version": "^0.1.2", + "debug": "^4.3.4", + "fs-extra": "^10.0.0", + "isbinaryfile": "^4.0.8", + "minimist": "^1.2.6", + "plist": "^3.0.5" + }, + "bin": { + "electron-osx-flat": "bin/electron-osx-flat.js", + "electron-osx-sign": "bin/electron-osx-sign.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@electron/osx-sign/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@electron/osx-sign/node_modules/isbinaryfile": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", + "dev": true, + "engines": { + "node": ">= 8.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" + } + }, + "node_modules/@electron/rebuild": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@electron/rebuild/-/rebuild-3.3.0.tgz", + "integrity": "sha512-S1vgpzIOS1wCJmsYjdLz97MTUV6UTLcMk/HE3w90HYtVxvW+PQdwxLbgsrECX2bysqcnmM5a0K6mXj/gwVgYtQ==", + "dev": true, + "dependencies": { + "@malept/cross-spawn-promise": "^2.0.0", + "chalk": "^4.0.0", + "debug": "^4.1.1", + "detect-libc": "^2.0.1", + "fs-extra": "^10.0.0", + "got": "^11.7.0", + "node-abi": "^3.45.0", + "node-api-version": "^0.1.4", + "node-gyp": "^9.0.0", + "ora": "^5.1.0", + "semver": "^7.3.5", + "tar": "^6.0.5", + "yargs": "^17.0.1" + }, + "bin": { + "electron-rebuild": "lib/cli.js" + }, + "engines": { + "node": ">=12.13.0" + } + }, + "node_modules/@electron/rebuild/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@electron/universal": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.4.1.tgz", + "integrity": "sha512-lE/U3UNw1YHuowNbTmKNs9UlS3En3cPgwM5MI+agIgr/B1hSze9NdOP0qn7boZaI9Lph8IDv3/24g9IxnJP7aQ==", + "dev": true, + "dependencies": { + "@electron/asar": "^3.2.1", + "@malept/cross-spawn-promise": "^1.1.0", + "debug": "^4.3.1", + "dir-compare": "^3.0.0", + "fs-extra": "^9.0.1", + "minimatch": "^3.0.4", + "plist": "^3.0.4" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/@electron/universal/node_modules/@malept/cross-spawn-promise": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz", + "integrity": "sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/malept" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/npm-.malept-cross-spawn-promise?utm_medium=referral&utm_source=npm_fund" + } + ], + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.1.tgz", + "integrity": "sha512-PWiOzLIUAjN/w5K17PoF4n6sKBw0gqLHPhywmYHP4t1VFQQVYeb1yWsJwnMVEMl3tUHME7X/SJPZLmtG7XBDxQ==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", + "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.21.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", + "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "8.49.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.49.0.tgz", + "integrity": "sha512-1S8uAY/MTJqVx0SC4epBq+N2yhuwtNwLbJYNZyhL2pO1ZVKn5HFXav5T41Ryzy9K9V7ZId2JB2oy/W4aCd9/2w==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.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/@humanwhocodes/config-array": { + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", + "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "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, + "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/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/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "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, + "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/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "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, + "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/@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/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/@istanbuljs/load-nyc-config/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@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-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/@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/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/@istanbuljs/load-nyc-config/node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/@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/@jest/console": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/core": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/core/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/core/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/core/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "dev": true, + "dependencies": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "dev": true, + "dependencies": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.0.tgz", + "integrity": "sha512-x58orMzEVfzPUKqlbLd1hXCnySCxKdDKa6Rjg97CwuLLRI4g3FHTdnExu1OqffVFay6zeMW+T6/DowFLndWnIw==", + "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": "^7.5.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "dev": true, + "dependencies": { + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz", + "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/source-map/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", + "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", + "dev": true + }, + "node_modules/@malept/cross-spawn-promise": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-2.0.0.tgz", + "integrity": "sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/malept" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/npm-.malept-cross-spawn-promise?utm_medium=referral&utm_source=npm_fund" + } + ], + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/@malept/flatpak-bundler": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@malept/flatpak-bundler/-/flatpak-bundler-0.4.0.tgz", + "integrity": "sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "fs-extra": "^9.0.0", + "lodash": "^4.17.15", + "tmp-promise": "^3.0.2" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@mdn/browser-compat-data": { + "version": "5.3.16", + "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-5.3.16.tgz", + "integrity": "sha512-b0kKg2weqKDLI+Ai5+tocgUEIidccdSfzUndbS2YnwIp5aVvd3M0D+DCcbrsSOSgMyrV9QKMqogtqMIjKwvDxw==", + "dev": true + }, + "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": "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/@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==", + "deprecated": "This functionality has been moved to @npmcli/fs", + "dev": true, + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/move-file/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/@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, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@pkgr/utils": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.2.tgz", + "integrity": "sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "fast-glob": "^3.3.0", + "is-glob": "^4.0.3", + "open": "^9.1.0", + "picocolors": "^1.0.0", + "tslib": "^2.6.0" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/@pkgr/utils/node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@pkgr/utils/node_modules/open": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/open/-/open-9.1.0.tgz", + "integrity": "sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==", + "dev": true, + "dependencies": { + "default-browser": "^4.0.0", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@pmmmwh/react-refresh-webpack-plugin": { + "version": "0.5.11", + "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.11.tgz", + "integrity": "sha512-7j/6vdTym0+qZ6u4XbSAxrWBGYSdCfTzySkj7WAFgDLmSyWlOrWvpyzxlFh5jtw9dn0oL/jtW+06XfFiisN3JQ==", + "dev": true, + "dependencies": { + "ansi-html-community": "^0.0.8", + "common-path-prefix": "^3.0.0", + "core-js-pure": "^3.23.3", + "error-stack-parser": "^2.0.6", + "find-up": "^5.0.0", + "html-entities": "^2.1.0", + "loader-utils": "^2.0.4", + "schema-utils": "^3.0.0", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">= 10.13" + }, + "peerDependencies": { + "@types/webpack": "4.x || 5.x", + "react-refresh": ">=0.10.0 <1.0.0", + "sockjs-client": "^1.4.0", + "type-fest": ">=0.17.0 <5.0.0", + "webpack": ">=4.43.0 <6.0.0", + "webpack-dev-server": "3.x || 4.x", + "webpack-hot-middleware": "2.x", + "webpack-plugin-serve": "0.x || 1.x" + }, + "peerDependenciesMeta": { + "@types/webpack": { + "optional": true + }, + "sockjs-client": { + "optional": true + }, + "type-fest": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + }, + "webpack-hot-middleware": { + "optional": true + }, + "webpack-plugin-serve": { + "optional": true + } + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.23", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.23.tgz", + "integrity": "sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg==", + "dev": true + }, + "node_modules/@remix-run/router": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.9.0.tgz", + "integrity": "sha512-bV63itrKBC0zdT27qYm6SDZHlkXwFL1xMBuhkn+X7l0+IIhNaH5wuuvZKp6eKhCD4KFhujhfhCT1YxXW6esUIA==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true + }, + "node_modules/@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", + "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@svgr/babel-plugin-add-jsx-attribute": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz", + "integrity": "sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz", + "integrity": "sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz", + "integrity": "sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz", + "integrity": "sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-svg-dynamic-title": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz", + "integrity": "sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-svg-em-dimensions": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz", + "integrity": "sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-transform-react-native-svg": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz", + "integrity": "sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-transform-svg-component": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz", + "integrity": "sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-preset": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-8.1.0.tgz", + "integrity": "sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==", + "dev": true, + "dependencies": { + "@svgr/babel-plugin-add-jsx-attribute": "8.0.0", + "@svgr/babel-plugin-remove-jsx-attribute": "8.0.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "8.0.0", + "@svgr/babel-plugin-replace-jsx-attribute-value": "8.0.0", + "@svgr/babel-plugin-svg-dynamic-title": "8.0.0", + "@svgr/babel-plugin-svg-em-dimensions": "8.0.0", + "@svgr/babel-plugin-transform-react-native-svg": "8.1.0", + "@svgr/babel-plugin-transform-svg-component": "8.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/core": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz", + "integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.21.3", + "@svgr/babel-preset": "8.1.0", + "camelcase": "^6.2.0", + "cosmiconfig": "^8.1.3", + "snake-case": "^3.0.4" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/hast-util-to-babel-ast": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz", + "integrity": "sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.21.3", + "entities": "^4.4.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/plugin-jsx": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz", + "integrity": "sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.21.3", + "@svgr/babel-preset": "8.1.0", + "@svgr/hast-util-to-babel-ast": "8.0.0", + "svg-parser": "^2.0.4" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "*" + } + }, + "node_modules/@svgr/plugin-svgo": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz", + "integrity": "sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==", + "dev": true, + "dependencies": { + "cosmiconfig": "^8.1.3", + "deepmerge": "^4.3.1", + "svgo": "^3.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "*" + } + }, + "node_modules/@svgr/webpack": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-8.1.0.tgz", + "integrity": "sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.21.3", + "@babel/plugin-transform-react-constant-elements": "^7.21.3", + "@babel/preset-env": "^7.20.2", + "@babel/preset-react": "^7.18.6", + "@babel/preset-typescript": "^7.21.0", + "@svgr/core": "8.1.0", + "@svgr/plugin-jsx": "8.1.0", + "@svgr/plugin-svgo": "8.1.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "dev": true, + "dependencies": { + "defer-to-connect": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@teamsupercell/typings-for-css-modules-loader": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/@teamsupercell/typings-for-css-modules-loader/-/typings-for-css-modules-loader-2.5.2.tgz", + "integrity": "sha512-3sqH2B4itcm5XgV1IHENt4NOaW7bOC1CwJr63vrdKWWyKVxNxtBM+ABVhJZYFCCVAwNy7ulA64z6HyQqw96m4A==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "loader-utils": "^1.4.2", + "schema-utils": "^2.0.1" + }, + "optionalDependencies": { + "prettier": "*" + } + }, + "node_modules/@teamsupercell/typings-for-css-modules-loader/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/@teamsupercell/typings-for-css-modules-loader/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/@teamsupercell/typings-for-css-modules-loader/node_modules/loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/@teamsupercell/typings-for-css-modules-loader/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/@testing-library/dom": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.0.tgz", + "integrity": "sha512-Dffe68pGwI6WlLRYR2I0piIkyole9cSBH5jGQKCGMRpHW5RHCqAUaqc2Kv0tUyd4dU4DLPKhJIjyKOnjv4tuUw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "^5.0.0", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "pretty-format": "^27.0.2" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@testing-library/jest-dom": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.1.3.tgz", + "integrity": "sha512-YzpjRHoCBWPzpPNtg6gnhasqtE/5O4qz8WCwDEaxtfnPO6gkaLrnuXusrGSPyhIGPezr1HM7ZH0CFaUTY9PJEQ==", + "dev": true, + "dependencies": { + "@adobe/css-tools": "^4.3.0", + "@babel/runtime": "^7.9.2", + "aria-query": "^5.0.0", + "chalk": "^3.0.0", + "css.escape": "^1.5.1", + "dom-accessibility-api": "^0.5.6", + "lodash": "^4.17.15", + "redent": "^3.0.0" + }, + "engines": { + "node": ">=14", + "npm": ">=6", + "yarn": ">=1" + }, + "peerDependencies": { + "@jest/globals": ">= 28", + "@types/jest": ">= 28", + "jest": ">= 28", + "vitest": ">= 0.32" + }, + "peerDependenciesMeta": { + "@jest/globals": { + "optional": true + }, + "@types/jest": { + "optional": true + }, + "jest": { + "optional": true + }, + "vitest": { + "optional": true + } + } + }, + "node_modules/@testing-library/jest-dom/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/react": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-14.0.0.tgz", + "integrity": "sha512-S04gSNJbYE30TlIMLTzv6QCTzt9AqIF5y6s6SzVFILNcNvbV/jU96GeiTPillGQo+Ny64M/5PV7klNYYgv5Dfg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.12.5", + "@testing-library/dom": "^9.0.0", + "@types/react-dom": "^18.0.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "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/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "dev": true + }, + "node_modules/@types/aria-query": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.1.tgz", + "integrity": "sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q==", + "dev": true + }, + "node_modules/@types/babel__core": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.2.tgz", + "integrity": "sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.5", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.5.tgz", + "integrity": "sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.2.tgz", + "integrity": "sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.2.tgz", + "integrity": "sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "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/cacheable-request": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", + "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", + "dev": true, + "dependencies": { + "@types/http-cache-semantics": "*", + "@types/keyv": "^3.1.4", + "@types/node": "*", + "@types/responselike": "^1.0.0" + } + }, + "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/debug": { + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.8.tgz", + "integrity": "sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==", + "dev": true, + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/eslint": { + "version": "8.21.0", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.21.0.tgz", + "integrity": "sha512-35EhHNOXgxnUgh4XCJsGhE7zdlDhYDN/aMG6UbkByCFFNgQ7b3U+uVoqBpicFydR8JEfgdjCF7SJ7MiJfzuiTA==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", + "dev": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", + "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", + "dev": true + }, + "node_modules/@types/express": { + "version": "4.17.17", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", + "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.33", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.33.tgz", + "integrity": "sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "node_modules/@types/fs-extra": { + "version": "9.0.13", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz", + "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", + "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", + "dev": true + }, + "node_modules/@types/http-cache-semantics": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", + "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", + "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/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "29.5.5", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.5.tgz", + "integrity": "sha512-ebylz2hnsWR9mYvmBFbXJXr+33UPc4+ZdxyDXh5w0FlPBTfCVN3wPL+kuOiQt3xvrK419v7XWeAs+AeOksafXg==", + "dev": true, + "dependencies": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, + "node_modules/@types/jest/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@types/jest/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/jest/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/@types/jsdom": { + "version": "20.0.1", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz", + "integrity": "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/tough-cookie": "*", + "parse5": "^7.0.0" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.13", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.13.tgz", + "integrity": "sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==", + "dev": true + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "node_modules/@types/keyv": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "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/ms": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", + "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.6.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.6.2.tgz", + "integrity": "sha512-Y+/1vGBHV/cYk6OI1Na/LHzwnlNCAfU3ZNGrc1LdRe/LAIbdDPTTv/HU3M7yXN448aTVDq3eKRm2cg7iKLb8gw==", + "dev": true + }, + "node_modules/@types/plist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/plist/-/plist-3.0.2.tgz", + "integrity": "sha512-ULqvZNGMv0zRFvqn8/4LSPtnmN4MfhlPNtJCTpKuIIxGVGZ2rYWzFXrvEBoh9CVyqSE7D6YFRJ1hydLHI6kbWw==", + "dev": true, + "optional": true, + "dependencies": { + "@types/node": "*", + "xmlbuilder": ">=11.0.1" + } + }, + "node_modules/@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", + "dev": true + }, + "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/react": { + "version": "18.2.21", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.21.tgz", + "integrity": "sha512-neFKG/sBAwGxHgXiIxnbm3/AAVQ/cMRS93hvBpg8xYRbeQSPVABp9U2bRnPf0iI4+Ucdv3plSxKK+3CW2ENJxA==", + "dev": true, + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.2.7", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.7.tgz", + "integrity": "sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/react-test-renderer": { + "version": "18.0.1", + "resolved": "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-18.0.1.tgz", + "integrity": "sha512-LjEF+jTUCjzd+Qq4eWqsmZvEWPA/l4L0my+YWN5US8Fo3wZOMiyrpBshHDFbkO8usjdO1B430mEWNU/i1MF7Qg==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/responselike": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", + "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "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/scheduler": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", + "dev": true + }, + "node_modules/@types/semver": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.2.tgz", + "integrity": "sha512-7aqorHYgdNO4DM36stTiGO3DvKoex9TQRwsJU6vMaFGyqpBA1MNZkz+PG3gaNUPpTAOYhT1WR7M1JyA3fbS9Cw==", + "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/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true + }, + "node_modules/@types/terser-webpack-plugin": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@types/terser-webpack-plugin/-/terser-webpack-plugin-5.2.0.tgz", + "integrity": "sha512-iHDR2pRfFjGyDqCALX2tgUgFtGoQf2AJhKpC2XD1IMBQVJF2bny6WChGRDKj9eaZJl4F2RmvBhxJNtVPj7aTRw==", + "deprecated": "This is a stub types definition. terser-webpack-plugin provides its own type definitions, so you do not need this installed.", + "dev": true, + "dependencies": { + "terser-webpack-plugin": "*" + } + }, + "node_modules/@types/tough-cookie": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.2.tgz", + "integrity": "sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==", + "dev": true + }, + "node_modules/@types/verror": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@types/verror/-/verror-1.10.6.tgz", + "integrity": "sha512-NNm+gdePAX1VGvPcGZCDKQZKYSiAWigKhKaz5KF94hG6f2s8de9Ow5+7AbXoeKxL8gavZfk4UquSAygOF2duEQ==", + "dev": true, + "optional": true + }, + "node_modules/@types/webpack-bundle-analyzer": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@types/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.6.0.tgz", + "integrity": "sha512-XeQmQCCXdZdap+A/60UKmxW5Mz31Vp9uieGlHB3T4z/o2OLVLtTI3bvTuS6A2OWd/rbAAQiGGWIEFQACu16szA==", + "dev": true, + "dependencies": { + "@types/node": "*", + "tapable": "^2.2.0", + "webpack": "^5" + } + }, + "node_modules/@types/ws": { + "version": "8.5.5", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.5.tgz", + "integrity": "sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yargs": { + "version": "17.0.22", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.22.tgz", + "integrity": "sha512-pet5WJ9U8yPVRhkwuEIp5ktAeAqRZOq4UdAyWLWzxbtpyXnzbtLdKiXAjJzi/KLmPGS9wk86lUFWZFN6sISo4g==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "dev": true + }, + "node_modules/@types/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "dev": true, + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.0.tgz", + "integrity": "sha512-gUqtknHm0TDs1LhY12K2NA3Rmlmp88jK9Tx8vGZMfHeNMLE3GH2e9TRub+y+SOjuYgtOmok+wt1AyDPZqxbNag==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.7.0", + "@typescript-eslint/type-utils": "6.7.0", + "@typescript-eslint/utils": "6.7.0", + "@typescript-eslint/visitor-keys": "6.7.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.7.0.tgz", + "integrity": "sha512-lAT1Uau20lQyjoLUQ5FUMSX/dS07qux9rYd5FGzKz/Kf8W8ccuvMyldb8hadHdK/qOI7aikvQWqulnEq2nCEYA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.7.0", + "@typescript-eslint/visitor-keys": "6.7.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.0.tgz", + "integrity": "sha512-ihPfvOp7pOcN/ysoj0RpBPOx3HQTJTrIN8UZK+WFd3/iDeFHHqeyYxa4hQk4rMhsz9H9mXpR61IzwlBVGXtl9Q==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/typescript-estree": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.0.tgz", + "integrity": "sha512-dPvkXj3n6e9yd/0LfojNU8VMUGHWiLuBZvbM6V6QYD+2qxqInE7J+J/ieY2iGwR9ivf/R/haWGkIj04WVUeiSQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.7.0", + "@typescript-eslint/visitor-keys": "6.7.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.7.0.tgz", + "integrity": "sha512-MfCq3cM0vh2slSikQYqK2Gq52gvOhe57vD2RM3V4gQRZYX4rDPnKLu5p6cm89+LJiGlwEXU8hkYxhqqEC/V3qA==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.7.0", + "@typescript-eslint/types": "6.7.0", + "@typescript-eslint/typescript-estree": "6.7.0", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.0.tgz", + "integrity": "sha512-/C1RVgKFDmGMcVGeD8HjKv2bd72oI1KxQDeY8uc66gw9R0OK0eMq48cA+jv9/2Ag6cdrsUGySm1yzYmfz0hxwQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.7.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.7.0.tgz", + "integrity": "sha512-jZKYwqNpNm5kzPVP5z1JXAuxjtl2uG+5NpaMocFPTNC2EdYIgbXIPImObOkhbONxtFTTdoZstLZefbaK+wXZng==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "6.7.0", + "@typescript-eslint/types": "6.7.0", + "@typescript-eslint/typescript-estree": "6.7.0", + "@typescript-eslint/visitor-keys": "6.7.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.7.0.tgz", + "integrity": "sha512-lAT1Uau20lQyjoLUQ5FUMSX/dS07qux9rYd5FGzKz/Kf8W8ccuvMyldb8hadHdK/qOI7aikvQWqulnEq2nCEYA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.7.0", + "@typescript-eslint/visitor-keys": "6.7.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.0.tgz", + "integrity": "sha512-ihPfvOp7pOcN/ysoj0RpBPOx3HQTJTrIN8UZK+WFd3/iDeFHHqeyYxa4hQk4rMhsz9H9mXpR61IzwlBVGXtl9Q==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.0.tgz", + "integrity": "sha512-dPvkXj3n6e9yd/0LfojNU8VMUGHWiLuBZvbM6V6QYD+2qxqInE7J+J/ieY2iGwR9ivf/R/haWGkIj04WVUeiSQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.7.0", + "@typescript-eslint/visitor-keys": "6.7.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.0.tgz", + "integrity": "sha512-/C1RVgKFDmGMcVGeD8HjKv2bd72oI1KxQDeY8uc66gw9R0OK0eMq48cA+jv9/2Ag6cdrsUGySm1yzYmfz0hxwQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.7.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.59.8", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.8.tgz", + "integrity": "sha512-/w08ndCYI8gxGf+9zKf1vtx/16y8MHrZs5/tnjHhMLNSixuNcJavSX4wAiPf4aS5x41Es9YPCn44MIe4cxIlig==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.8", + "@typescript-eslint/visitor-keys": "5.59.8" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.7.0.tgz", + "integrity": "sha512-f/QabJgDAlpSz3qduCyQT0Fw7hHpmhOzY/Rv6zO3yO+HVIdPfIWhrQoAyG+uZVtWAIS85zAyzgAFfyEr+MgBpg==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "6.7.0", + "@typescript-eslint/utils": "6.7.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/scope-manager": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.7.0.tgz", + "integrity": "sha512-lAT1Uau20lQyjoLUQ5FUMSX/dS07qux9rYd5FGzKz/Kf8W8ccuvMyldb8hadHdK/qOI7aikvQWqulnEq2nCEYA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.7.0", + "@typescript-eslint/visitor-keys": "6.7.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.0.tgz", + "integrity": "sha512-ihPfvOp7pOcN/ysoj0RpBPOx3HQTJTrIN8UZK+WFd3/iDeFHHqeyYxa4hQk4rMhsz9H9mXpR61IzwlBVGXtl9Q==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.0.tgz", + "integrity": "sha512-dPvkXj3n6e9yd/0LfojNU8VMUGHWiLuBZvbM6V6QYD+2qxqInE7J+J/ieY2iGwR9ivf/R/haWGkIj04WVUeiSQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.7.0", + "@typescript-eslint/visitor-keys": "6.7.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.7.0.tgz", + "integrity": "sha512-MfCq3cM0vh2slSikQYqK2Gq52gvOhe57vD2RM3V4gQRZYX4rDPnKLu5p6cm89+LJiGlwEXU8hkYxhqqEC/V3qA==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.7.0", + "@typescript-eslint/types": "6.7.0", + "@typescript-eslint/typescript-estree": "6.7.0", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.0.tgz", + "integrity": "sha512-/C1RVgKFDmGMcVGeD8HjKv2bd72oI1KxQDeY8uc66gw9R0OK0eMq48cA+jv9/2Ag6cdrsUGySm1yzYmfz0hxwQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.7.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.59.8", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.8.tgz", + "integrity": "sha512-+uWuOhBTj/L6awoWIg0BlWy0u9TyFpCHrAuQ5bNfxDaZ1Ppb3mx6tUigc74LHcbHpOHuOTOJrBoAnhdHdaea1w==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.59.8", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.8.tgz", + "integrity": "sha512-Jy/lPSDJGNow14vYu6IrW790p7HIf/SOV1Bb6lZ7NUkLc2iB2Z9elESmsaUtLw8kVqogSbtLH9tut5GCX1RLDg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.8", + "@typescript-eslint/visitor-keys": "5.59.8", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.59.8", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.8.tgz", + "integrity": "sha512-Tr65630KysnNn9f9G7ROF3w1b5/7f6QVCJ+WK9nhIocWmx9F+TmCAcglF26Vm7z8KCTwoKcNEBZrhlklla3CKg==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.59.8", + "@typescript-eslint/types": "5.59.8", + "@typescript-eslint/typescript-estree": "5.59.8", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.59.8", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.8.tgz", + "integrity": "sha512-pJhi2ms0x0xgloT7xYabil3SGGlojNNKjK/q6dB3Ey0uJLMjK2UDGJvHieiyJVW/7C3KI+Z4Q3pEHkm4ejA+xQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.8", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "dev": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@xmldom/xmldom": { + "version": "0.8.10", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", + "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/7zip-bin": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.1.1.tgz", + "integrity": "sha512-sAP4LldeWNz0lNzmTird3uWfFDWWTeg6V/MsmyyLR9X1idwKBWIgt/ZvinqQldJm3LecKEs1emkbquO6PCiLVQ==", + "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.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", + "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", + "dev": true, + "dependencies": { + "acorn": "^8.1.0", + "acorn-walk": "^8.0.2" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "dev": true, + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/address": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", + "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", + "dev": true, + "engines": { + "node": ">= 10.0.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.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "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-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "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/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/app-builder-bin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-4.0.0.tgz", + "integrity": "sha512-xwdG0FJPQMe0M0UA4Tz0zEB8rBJTRA5a476ZawAqiBkMv16GRK5xpXThOjMaEOFnZ6zabejjG4J3da0SXG63KA==", + "dev": true + }, + "node_modules/app-builder-lib": { + "version": "24.6.4", + "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-24.6.4.tgz", + "integrity": "sha512-m9931WXb83teb32N0rKg+ulbn6+Hl8NV5SUpVDOVz9MWOXfhV6AQtTdftf51zJJvCQnQugGtSqoLvgw6mdF/Rg==", + "dev": true, + "dependencies": { + "@develar/schema-utils": "~2.6.5", + "@electron/notarize": "2.1.0", + "@electron/osx-sign": "1.0.5", + "@electron/universal": "1.4.1", + "@malept/flatpak-bundler": "^0.4.0", + "@types/fs-extra": "9.0.13", + "7zip-bin": "~5.1.1", + "async-exit-hook": "^2.0.1", + "bluebird-lst": "^1.0.9", + "builder-util": "24.5.0", + "builder-util-runtime": "9.2.1", + "chromium-pickle-js": "^0.2.0", + "debug": "^4.3.4", + "ejs": "^3.1.8", + "electron-publish": "24.5.0", + "form-data": "^4.0.0", + "fs-extra": "^10.1.0", + "hosted-git-info": "^4.1.0", + "is-ci": "^3.0.0", + "isbinaryfile": "^5.0.0", + "js-yaml": "^4.1.0", + "lazy-val": "^1.0.5", + "minimatch": "^5.1.1", + "read-config-file": "6.3.2", + "sanitize-filename": "^1.6.3", + "semver": "^7.3.8", + "tar": "^6.1.12", + "temp-file": "^3.4.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/app-builder-lib/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/app-builder-lib/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/app-builder-lib/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, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "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/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/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "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==" + }, + "node_modules/aria-query": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", + "dev": true, + "dependencies": { + "deep-equal": "^2.0.5" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-flatten": { + "version": "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-includes": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", + "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "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/array.prototype.find": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.2.2.tgz", + "integrity": "sha512-DRumkfW97iZGOfn+lIXbkVrXL04sfYKX+EfOodo8XboR5sxPDVvOjZTF/rysusa9lmhmSOeD6Vp6RKQP+eP4Tg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", + "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", + "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", + "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz", + "integrity": "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.1.3" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", + "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/ast-metadata-inferer": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/ast-metadata-inferer/-/ast-metadata-inferer-0.8.0.tgz", + "integrity": "sha512-jOMKcHht9LxYIEQu+RVd22vtgrPaVCtDRQ/16IGmurdzxvYbDd5ynxjnyrzLnieG96eTcAyaoj/wN/4/1FyyeA==", + "dev": true, + "dependencies": { + "@mdn/browser-compat-data": "^5.2.34" + } + }, + "node_modules/ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==", + "dev": true + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "dev": true + }, + "node_modules/async-exit-hook": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz", + "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/asynciterator.prototype": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz", + "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.3" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axe-core": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.6.3.tgz", + "integrity": "sha512-/BQzOX780JhsxDnPpH4ZiyrJAzcd8AfzFPkv+89veFSr1rcMjuq2JDCwypKaPeB6ljHp9KjXhPpjgCvQlWYuqg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/axobject-query": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.1.1.tgz", + "integrity": "sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==", + "dev": true, + "dependencies": { + "deep-equal": "^2.0.5" + } + }, + "node_modules/babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "dev": true, + "dependencies": { + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.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-jest-hoist": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "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-corejs2/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz", + "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.3", + "core-js-compat": "^3.25.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", + "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "dev": true, + "dependencies": { + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "node_modules/big-integer": { + "version": "1.6.51", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", + "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "node_modules/bluebird-lst": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/bluebird-lst/-/bluebird-lst-1.0.9.tgz", + "integrity": "sha512-7B1Rtx82hjnSD4PGLAjVWeYH3tHAcVUmChh85a3lltKQm6FresXh9ErQo6oAv6CqxttczC3/kEg8SY5NluPuUw==", + "dev": true, + "dependencies": { + "bluebird": "^3.5.5" + } + }, + "node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/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/body-parser/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/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/bonjour-service": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.0.tgz", + "integrity": "sha512-LVRinRB3k1/K0XzZ2p58COnWvkQknIY6sf0zF2rpErvcJXpMBttEPQSxK+HEXSS9VmpZlDoDnQWv8ftJT20B0Q==", + "dev": true, + "dependencies": { + "array-flatten": "^2.1.2", + "dns-equal": "^1.0.0", + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/boolean": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", + "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", + "dev": true, + "optional": true + }, + "node_modules/bplist-parser": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", + "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", + "dev": true, + "dependencies": { + "big-integer": "^1.6.44" + }, + "engines": { + "node": ">= 5.10.0" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.21.10", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz", + "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001517", + "electron-to-chromium": "^1.4.477", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.11" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/browserslist-config-erb": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/browserslist-config-erb/-/browserslist-config-erb-0.0.3.tgz", + "integrity": "sha512-y47DryCY92lxkKyRVMlaZvXAolIY7U33q9e4CS0MdWeJkoAht7OzsrkfdZFCBOP3H5q1EVUxS0L7VVsKM6gZCQ==", + "dev": true, + "peerDependencies": { + "electron": ">=12.0.0" + } + }, + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "dependencies": { + "fast-json-stable-stringify": "2.x" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/buffer-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.1.tgz", + "integrity": "sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==", + "dev": true, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/builder-util": { + "version": "24.5.0", + "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-24.5.0.tgz", + "integrity": "sha512-STnBmZN/M5vGcv01u/K8l+H+kplTaq4PAIn3yeuufUKSpcdro0DhJWxPI81k5XcNfC//bjM3+n9nr8F9uV4uAQ==", + "dev": true, + "dependencies": { + "@types/debug": "^4.1.6", + "7zip-bin": "~5.1.1", + "app-builder-bin": "4.0.0", + "bluebird-lst": "^1.0.9", + "builder-util-runtime": "9.2.1", + "chalk": "^4.1.2", + "cross-spawn": "^7.0.3", + "debug": "^4.3.4", + "fs-extra": "^10.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.1", + "is-ci": "^3.0.0", + "js-yaml": "^4.1.0", + "source-map-support": "^0.5.19", + "stat-mode": "^1.0.0", + "temp-file": "^3.4.0" + } + }, + "node_modules/builder-util-runtime": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.2.1.tgz", + "integrity": "sha512-2rLv/uQD2x+dJ0J3xtsmI12AlRyk7p45TEbE/6o/fbb633e/S3pPgm+ct+JHsoY7r39dKHnGEFk/AASRFdnXmA==", + "dependencies": { + "debug": "^4.3.4", + "sax": "^1.2.4" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/builder-util/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/bundle-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz", + "integrity": "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==", + "dev": true, + "dependencies": { + "run-applescript": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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": "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/cacache/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/cacache/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/cacache/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, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cacache/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/cacache/node_modules/rimraf/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/cacache/node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/rimraf/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "dev": true, + "engines": { + "node": ">=10.6.0" + } + }, + "node_modules/cacheable-request": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", + "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", + "dev": true, + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001534", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001534.tgz", + "integrity": "sha512-vlPVrhsCS7XaSh2VvWluIQEzVhefrUQcEsQWSS5A5V+dM07uv1qHeQzAOTGIMy9i3e9bH15+muvI/UHojVgS/Q==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "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/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/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/chromium-pickle-js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz", + "integrity": "sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==", + "dev": true + }, + "node_modules/ci-info": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.7.1.tgz", + "integrity": "sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", + "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", + "dev": true + }, + "node_modules/clean-css": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz", + "integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==", + "dev": true, + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/clean-css/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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.7.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", + "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "dev": true, + "optional": true, + "dependencies": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "dev": true, + "dependencies": { + "mimic-response": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "dev": true + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "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 + }, + "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/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "dev": true + }, + "node_modules/colorette": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "dev": true + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", + "dev": true + }, + "node_modules/compare-version": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz", + "integrity": "sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/concurrently": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-8.2.1.tgz", + "integrity": "sha512-nVraf3aXOpIcNud5pB9M82p1tynmZkrSGQ1p6X/VY8cJ+2LMVqAgXsJxYYefACSHbTYlm92O1xuhdGTjwoEvbQ==", + "dev": true, + "dependencies": { + "chalk": "^4.1.2", + "date-fns": "^2.30.0", + "lodash": "^4.17.21", + "rxjs": "^7.8.1", + "shell-quote": "^1.8.1", + "spawn-command": "0.0.2", + "supports-color": "^8.1.1", + "tree-kill": "^1.2.2", + "yargs": "^17.7.2" + }, + "bin": { + "conc": "dist/bin/concurrently.js", + "concurrently": "dist/bin/concurrently.js" + }, + "engines": { + "node": "^14.13.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/open-cli-tools/concurrently?sponsor=1" + } + }, + "node_modules/concurrently/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/config-file-ts": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/config-file-ts/-/config-file-ts-0.2.4.tgz", + "integrity": "sha512-cKSW0BfrSaAUnxpgvpXPLaaW/umg4bqg4k3GO1JqlRfpx+d5W0GDXznCMkWotJQek5Mmz1MJVChQnz3IVaeMZQ==", + "dev": true, + "dependencies": { + "glob": "^7.1.6", + "typescript": "^4.0.2" + } + }, + "node_modules/config-file-ts/node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/confusing-browser-globals": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", + "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", + "dev": true + }, + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "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-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, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "node_modules/core-js": { + "version": "3.32.2", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.32.2.tgz", + "integrity": "sha512-pxXSw1mYZPDGvTQqEc5vgIb83jGQKFGYWY76z4a7weZXUolw3G+OvpZqSRcfYOoOVUQJYEPsWeQK8pKEnUtWxQ==", + "dev": true, + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.27.2", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.27.2.tgz", + "integrity": "sha512-welaYuF7ZtbYKGrIy7y3eb40d37rG1FvzEOfe7hSLd2iD6duMDqUhRfSvCGyC46HhR6Y8JXXdZ2lnRUMkPBpvg==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-pure": { + "version": "3.27.2", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.27.2.tgz", + "integrity": "sha512-Cf2jqAbXgWH3VVzjyaaFkY1EBazxugUepGymDoeteyYr9ByX51kD2jdHZlsEF/xnJMyN3Prua7mQuzwMg6Zc9A==", + "dev": true, + "hasInstallScript": true, + "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": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true + }, + "node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dev": true, + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "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, + "optional": true, + "dependencies": { + "buffer": "^5.1.0" + } + }, + "node_modules/create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + }, + "bin": { + "create-jest": "bin/create-jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "node_modules/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-declaration-sorter": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.0.tgz", + "integrity": "sha512-jDfsatwWMWN0MODAFuHszfjphEXfNw9JUAhmY4pLu3TyTU+ohUpsbVtbU+1MZn4a47D9kqh03i4eyOm+74+zew==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/css-loader": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.8.1.tgz", + "integrity": "sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==", + "dev": true, + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.21", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.3", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.3.8" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/css-minimizer-webpack-plugin": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-5.0.1.tgz", + "integrity": "sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "cssnano": "^6.0.1", + "jest-worker": "^29.4.3", + "postcss": "^8.4.24", + "schema-utils": "^4.0.1", + "serialize-javascript": "^6.0.1" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@parcel/css": { + "optional": true + }, + "@swc/css": { + "optional": true + }, + "clean-css": { + "optional": true + }, + "csso": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "lightningcss": { + "optional": true + } + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", + "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/cssnano": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-6.0.1.tgz", + "integrity": "sha512-fVO1JdJ0LSdIGJq68eIxOqFpIJrZqXUsBt8fkrBcztCQqAjQD51OhZp7tc0ImcbwXD4k7ny84QTV90nZhmqbkg==", + "dev": true, + "dependencies": { + "cssnano-preset-default": "^6.0.1", + "lilconfig": "^2.1.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-preset-default": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.0.1.tgz", + "integrity": "sha512-7VzyFZ5zEB1+l1nToKyrRkuaJIx0zi/1npjvZfbBwbtNTzhLtlvYraK/7/uqmX2Wb2aQtd983uuGw79jAjLSuQ==", + "dev": true, + "dependencies": { + "css-declaration-sorter": "^6.3.1", + "cssnano-utils": "^4.0.0", + "postcss-calc": "^9.0.0", + "postcss-colormin": "^6.0.0", + "postcss-convert-values": "^6.0.0", + "postcss-discard-comments": "^6.0.0", + "postcss-discard-duplicates": "^6.0.0", + "postcss-discard-empty": "^6.0.0", + "postcss-discard-overridden": "^6.0.0", + "postcss-merge-longhand": "^6.0.0", + "postcss-merge-rules": "^6.0.1", + "postcss-minify-font-values": "^6.0.0", + "postcss-minify-gradients": "^6.0.0", + "postcss-minify-params": "^6.0.0", + "postcss-minify-selectors": "^6.0.0", + "postcss-normalize-charset": "^6.0.0", + "postcss-normalize-display-values": "^6.0.0", + "postcss-normalize-positions": "^6.0.0", + "postcss-normalize-repeat-style": "^6.0.0", + "postcss-normalize-string": "^6.0.0", + "postcss-normalize-timing-functions": "^6.0.0", + "postcss-normalize-unicode": "^6.0.0", + "postcss-normalize-url": "^6.0.0", + "postcss-normalize-whitespace": "^6.0.0", + "postcss-ordered-values": "^6.0.0", + "postcss-reduce-initial": "^6.0.0", + "postcss-reduce-transforms": "^6.0.0", + "postcss-svgo": "^6.0.0", + "postcss-unique-selectors": "^6.0.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-4.0.0.tgz", + "integrity": "sha512-Z39TLP+1E0KUcd7LGyF4qMfu8ZufI0rDzhdyAMsa/8UyNUU8wpS0fhdBxbQbv32r64ea00h4878gommRVg2BHw==", + "dev": true, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/csso": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", + "dev": true, + "dependencies": { + "css-tree": "~2.2.0" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", + "dev": true + }, + "node_modules/cssom": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", + "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", + "dev": true + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "node_modules/csstype": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", + "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==", + "dev": true + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true + }, + "node_modules/data-urls": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", + "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", + "dev": true, + "dependencies": { + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/date-fns": { + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", + "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.21.0" + }, + "engines": { + "node": ">=0.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/date-fns" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "dev": true + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/dedent": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", + "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", + "dev": true, + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/deep-equal": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.0.tgz", + "integrity": "sha512-RdpzE0Hv4lhowpIUKKMJfeH6C1pXdtT1/it80ubgWqwI3qpuxUBpC1S4hnHg+zjnuOoDkzUtUCEEkG+XG5l3Mw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "es-get-iterator": "^1.1.2", + "get-intrinsic": "^1.1.3", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.1", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-browser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz", + "integrity": "sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==", + "dev": true, + "dependencies": { + "bundle-name": "^3.0.0", + "default-browser-id": "^3.0.0", + "execa": "^7.1.1", + "titleize": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz", + "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==", + "dev": true, + "dependencies": { + "bplist-parser": "^0.2.0", + "untildify": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser/node_modules/execa": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", + "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^4.3.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": "^14.18.0 || ^16.14.0 || >=18.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/default-browser/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser/node_modules/human-signals": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", + "dev": true, + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/default-browser/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser/node_modules/npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/define-data-property": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", + "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "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/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-libc": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", + "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "node_modules/detect-port": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.5.1.tgz", + "integrity": "sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==", + "dev": true, + "dependencies": { + "address": "^1.0.1", + "debug": "4" + }, + "bin": { + "detect": "bin/detect-port.js", + "detect-port": "bin/detect-port.js" + } + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/dir-compare": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-3.3.0.tgz", + "integrity": "sha512-J7/et3WlGUCxjdnD3HAAzQ6nsnc0WL6DD7WcwJb7c39iH1+AWfg+9OqzJNaI6PkBwBvm1mhZNL9iY/nRiZXlPg==", + "dev": true, + "dependencies": { + "buffer-equal": "^1.0.0", + "minimatch": "^3.0.4" + } + }, + "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/dmg-builder": { + "version": "24.6.4", + "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-24.6.4.tgz", + "integrity": "sha512-BNcHRc9CWEuI9qt0E655bUBU/j/3wUCYBVKGu1kVpbN5lcUdEJJJeiO0NHK3dgKmra6LUUZlo+mWqc+OCbi0zw==", + "dev": true, + "dependencies": { + "app-builder-lib": "24.6.4", + "builder-util": "24.5.0", + "builder-util-runtime": "9.2.1", + "fs-extra": "^10.1.0", + "iconv-lite": "^0.6.2", + "js-yaml": "^4.1.0" + }, + "optionalDependencies": { + "dmg-license": "^1.0.11" + } + }, + "node_modules/dmg-builder/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/dmg-license": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/dmg-license/-/dmg-license-1.0.11.tgz", + "integrity": "sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q==", + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "@types/plist": "^3.0.1", + "@types/verror": "^1.10.3", + "ajv": "^6.10.0", + "crc": "^3.8.0", + "iconv-corefoundation": "^1.1.7", + "plist": "^3.0.4", + "smart-buffer": "^4.0.2", + "verror": "^1.10.0" + }, + "bin": { + "dmg-license": "bin/dmg-license.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", + "dev": true + }, + "node_modules/dns-packet": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.4.0.tgz", + "integrity": "sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==", + "dev": true, + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-accessibility-api": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", + "dev": true + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "dependencies": { + "utila": "~0.4" + } + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/dom-serializer/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/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/domexception": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", + "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", + "dev": true, + "dependencies": { + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/dotenv": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-9.0.2.tgz", + "integrity": "sha512-I9OvvrHp4pIARv4+x9iuewrWycX6CcZtoAu1XrzPxc5UygMJXJZYmBsynku8IkrJwgypE5DGNjDPmPRhDCptUg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "dev": true + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "node_modules/ejs": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", + "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", + "dev": true, + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron": { + "version": "26.2.1", + "resolved": "https://registry.npmjs.org/electron/-/electron-26.2.1.tgz", + "integrity": "sha512-SNT24Cf/wRvfcFZQoERXjzswUlg5ouqhIuA2t9x2L7VdTn+2Jbs0QXRtOfzcnOV/raVMz3e8ICyaU2GGeciKLg==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@electron/get": "^2.0.0", + "@types/node": "^18.11.18", + "extract-zip": "^2.0.1" + }, + "bin": { + "electron": "cli.js" + }, + "engines": { + "node": ">= 12.20.55" + } + }, + "node_modules/electron-builder": { + "version": "24.6.4", + "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-24.6.4.tgz", + "integrity": "sha512-uNWQoU7pE7qOaIQ6CJHpBi44RJFVG8OHRBIadUxrsDJVwLLo8Nma3K/EEtx5/UyWAQYdcK4nVPYKoRqBb20hbA==", + "dev": true, + "dependencies": { + "app-builder-lib": "24.6.4", + "builder-util": "24.5.0", + "builder-util-runtime": "9.2.1", + "chalk": "^4.1.2", + "dmg-builder": "24.6.4", + "fs-extra": "^10.1.0", + "is-ci": "^3.0.0", + "lazy-val": "^1.0.5", + "read-config-file": "6.3.2", + "simple-update-notifier": "2.0.0", + "yargs": "^17.6.2" + }, + "bin": { + "electron-builder": "cli.js", + "install-app-deps": "install-app-deps.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/electron-builder/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/electron-debug": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/electron-debug/-/electron-debug-3.2.0.tgz", + "integrity": "sha512-7xZh+LfUvJ52M9rn6N+tPuDw6oRAjxUj9SoxAZfJ0hVCXhZCsdkrSt7TgXOiWiEOBgEV8qwUIO/ScxllsPS7ow==", + "dependencies": { + "electron-is-dev": "^1.1.0", + "electron-localshortcut": "^3.1.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/electron-devtools-installer": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/electron-devtools-installer/-/electron-devtools-installer-3.2.0.tgz", + "integrity": "sha512-t3UczsYugm4OAbqvdImMCImIMVdFzJAHgbwHpkl5jmfu1izVgUcP/mnrPqJIpEeCK1uZGpt+yHgWEN+9EwoYhQ==", + "dev": true, + "dependencies": { + "rimraf": "^3.0.2", + "semver": "^7.2.1", + "tslib": "^2.1.0", + "unzip-crx-3": "^0.2.0" + } + }, + "node_modules/electron-devtools-installer/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/electron-is-accelerator": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/electron-is-accelerator/-/electron-is-accelerator-0.1.2.tgz", + "integrity": "sha512-fLGSAjXZtdn1sbtZxx52+krefmtNuVwnJCV2gNiVt735/ARUboMl8jnNC9fZEqQdlAv2ZrETfmBUsoQci5evJA==" + }, + "node_modules/electron-is-dev": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/electron-is-dev/-/electron-is-dev-1.2.0.tgz", + "integrity": "sha512-R1oD5gMBPS7PVU8gJwH6CtT0e6VSoD0+SzSnYpNm+dBkcijgA+K7VAMHDfnRq/lkKPZArpzplTW6jfiMYosdzw==" + }, + "node_modules/electron-localshortcut": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/electron-localshortcut/-/electron-localshortcut-3.2.1.tgz", + "integrity": "sha512-DWvhKv36GsdXKnaFFhEiK8kZZA+24/yFLgtTwJJHc7AFgDjNRIBJZ/jq62Y/dWv9E4ypYwrVWN2bVrCYw1uv7Q==", + "dependencies": { + "debug": "^4.0.1", + "electron-is-accelerator": "^0.1.0", + "keyboardevent-from-electron-accelerator": "^2.0.0", + "keyboardevents-areequal": "^0.2.1" + } + }, + "node_modules/electron-log": { + "version": "4.4.8", + "resolved": "https://registry.npmjs.org/electron-log/-/electron-log-4.4.8.tgz", + "integrity": "sha512-QQ4GvrXO+HkgqqEOYbi+DHL7hj5JM+nHi/j+qrN9zeeXVKy8ZABgbu4CnG+BBqDZ2+tbeq9tUC4DZfIWFU5AZA==" + }, + "node_modules/electron-publish": { + "version": "24.5.0", + "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-24.5.0.tgz", + "integrity": "sha512-zwo70suH15L15B4ZWNDoEg27HIYoPsGJUF7xevLJLSI7JUPC8l2yLBdLGwqueJ5XkDL7ucYyRZzxJVR8ElV9BA==", + "dev": true, + "dependencies": { + "@types/fs-extra": "^9.0.11", + "builder-util": "24.5.0", + "builder-util-runtime": "9.2.1", + "chalk": "^4.1.2", + "fs-extra": "^10.1.0", + "lazy-val": "^1.0.5", + "mime": "^2.5.2" + } + }, + "node_modules/electron-publish/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.523", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.523.tgz", + "integrity": "sha512-9AreocSUWnzNtvLcbpng6N+GkXnCcBR80IQkxRC9Dfdyg4gaWNUPBujAHUpKkiUkoSoR9UlhA4zD/IgBklmhzg==", + "dev": true + }, + "node_modules/electron-updater": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-6.1.4.tgz", + "integrity": "sha512-yYAJc6RQjjV4WtInZVn+ZcLyXRhbVXoomKEfUUwDqIk5s2wxzLhWaor7lrNgxODyODhipjg4SVPMhJHi5EnsCA==", + "dependencies": { + "builder-util-runtime": "9.2.1", + "fs-extra": "^10.1.0", + "js-yaml": "^4.1.0", + "lazy-val": "^1.0.5", + "lodash.escaperegexp": "^4.1.2", + "lodash.isequal": "^4.5.0", + "semver": "^7.3.8", + "tiny-typed-emitter": "^2.1.0" + } + }, + "node_modules/electron-updater/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/electron/node_modules/@types/node": { + "version": "18.16.16", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.16.tgz", + "integrity": "sha512-NpaM49IGQQAUlBhHMF82QH80J08os4ZmyF9MkpCzWAGuOHqE4gTEbhzd7L3l5LmWuZ6E0OiC1FweQ4tsiW35+g==", + "dev": true + }, + "node_modules/electronmon": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/electronmon/-/electronmon-2.0.2.tgz", + "integrity": "sha512-Yw1CXEp5HJT9P6Sns3UP3Krwm5eb2JKqTRAVczKdsUa+U/dMTgONwKIHkPbKSSmtyTV+5JwobxkhFPiRgegObA==", + "dev": true, + "dependencies": { + "chalk": "^3.0.0", + "import-from": "^3.0.0", + "runtime-required": "^1.1.0", + "watchboy": "^0.4.3" + }, + "bin": { + "electronmon": "bin/cli.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/electronmon/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/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/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.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz", + "integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "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/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/error-stack-parser": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", + "dev": true, + "dependencies": { + "stackframe": "^1.3.4" + } + }, + "node_modules/es-abstract": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz", + "integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.2", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.1", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.12", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "safe-array-concat": "^1.0.1", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.11" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz", + "integrity": "sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==", + "dev": true, + "dependencies": { + "asynciterator.prototype": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.1", + "es-set-tostringtag": "^2.0.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.2.1", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.0.1" + } + }, + "node_modules/es-module-lexer": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.2.1.tgz", + "integrity": "sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==", + "dev": true + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true, + "optional": true + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "dev": true, + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/escodegen/node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/eslint": { + "version": "8.49.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.49.0.tgz", + "integrity": "sha512-jw03ENfm6VJI0jA9U+8H5zfl5b+FvuU3YYvZRdZHOlU2ggJkxrlkJH4HcDrZpj6YwD8kuYqvQM8LyesoazrSOQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.2", + "@eslint/js": "8.49.0", + "@humanwhocodes/config-array": "^0.11.11", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-airbnb": { + "version": "19.0.4", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-19.0.4.tgz", + "integrity": "sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==", + "dev": true, + "dependencies": { + "eslint-config-airbnb-base": "^15.0.0", + "object.assign": "^4.1.2", + "object.entries": "^1.1.5" + }, + "engines": { + "node": "^10.12.0 || ^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^7.32.0 || ^8.2.0", + "eslint-plugin-import": "^2.25.3", + "eslint-plugin-jsx-a11y": "^6.5.1", + "eslint-plugin-react": "^7.28.0", + "eslint-plugin-react-hooks": "^4.3.0" + } + }, + "node_modules/eslint-config-airbnb-base": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", + "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==", + "dev": true, + "dependencies": { + "confusing-browser-globals": "^1.0.10", + "object.assign": "^4.1.2", + "object.entries": "^1.1.5", + "semver": "^6.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "peerDependencies": { + "eslint": "^7.32.0 || ^8.2.0", + "eslint-plugin-import": "^2.25.2" + } + }, + "node_modules/eslint-config-airbnb-base/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-config-airbnb-typescript": { + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-17.1.0.tgz", + "integrity": "sha512-GPxI5URre6dDpJ0CtcthSZVBAfI+Uw7un5OYNVxP2EYi3H81Jw701yFP7AU+/vCE7xBtFmjge7kfhhk4+RAiig==", + "dev": true, + "dependencies": { + "eslint-config-airbnb-base": "^15.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^5.13.0 || ^6.0.0", + "@typescript-eslint/parser": "^5.0.0 || ^6.0.0", + "eslint": "^7.32.0 || ^8.2.0", + "eslint-plugin-import": "^2.25.3" + } + }, + "node_modules/eslint-config-erb": { + "version": "4.1.0-0", + "resolved": "https://registry.npmjs.org/eslint-config-erb/-/eslint-config-erb-4.1.0-0.tgz", + "integrity": "sha512-Sgjh37x7JL1ZfXs9aD0p640E7iGGoVI/fqsuKFOrKq+qyF3WSdka5EEJkyjH17iyHDa1DyEbvjggslHOfpT9dA==", + "dev": true, + "dependencies": { + "@typescript-eslint/eslint-plugin": "^6.7.0", + "@typescript-eslint/parser": "^6.7.0", + "eslint-config-airbnb": "^19.0.4", + "eslint-config-airbnb-typescript": "^17.1.0", + "eslint-config-prettier": "^9.0.0", + "eslint-plugin-compat": "^4.2.0", + "eslint-plugin-import": "^2.28.1", + "eslint-plugin-jest": "^27.4.0", + "eslint-plugin-jsx-a11y": "6.7.1", + "eslint-plugin-prettier": "^5.0.0", + "eslint-plugin-promise": "^6.1.1", + "eslint-plugin-react": "^7.33.2", + "eslint-plugin-react-hooks": "^4.6.0" + }, + "engines": { + "node": ">=16.x.x" + }, + "peerDependencies": { + "eslint": ">=7 || >=8", + "jest": ">=27.0.0", + "react": ">=17.0.0 || >=18.0.0" + } + }, + "node_modules/eslint-config-prettier": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz", + "integrity": "sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", + "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.11.0", + "resolve": "^1.22.1" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-typescript": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.0.tgz", + "integrity": "sha512-QTHR9ddNnn35RTxlaEnx2gCxqFlF2SEN0SE2d17SqwyM7YOSI2GHWRYp5BiRkObTUNYPupC/3Fq2a0PpT+EKpg==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "enhanced-resolve": "^5.12.0", + "eslint-module-utils": "^2.7.4", + "fast-glob": "^3.3.1", + "get-tsconfig": "^4.5.0", + "is-core-module": "^2.11.0", + "is-glob": "^4.0.3" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*" + } + }, + "node_modules/eslint-import-resolver-webpack": { + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-webpack/-/eslint-import-resolver-webpack-0.13.7.tgz", + "integrity": "sha512-2a+meyMeABBRO4K53Oj1ygkmt5lhQS79Lmx2f684Qnv6gjvD4RLOM5jfPGTXwQ0A2K03WSoKt3HRQu/uBgxF7w==", + "dev": true, + "dependencies": { + "array.prototype.find": "^2.2.1", + "debug": "^3.2.7", + "enhanced-resolve": "^0.9.1", + "find-root": "^1.1.0", + "has": "^1.0.3", + "interpret": "^1.4.0", + "is-core-module": "^2.13.0", + "is-regex": "^1.1.4", + "lodash": "^4.17.21", + "resolve": "^2.0.0-next.4", + "semver": "^5.7.2" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "eslint-plugin-import": ">=1.4.0", + "webpack": ">=1.11.0" + } + }, + "node_modules/eslint-import-resolver-webpack/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/eslint-import-resolver-webpack/node_modules/enhanced-resolve": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz", + "integrity": "sha512-kxpoMgrdtkXZ5h0SeraBS1iRntpTpQ3R8ussdb38+UAFnMGX5DDyJXePm+OCHOcoXvHDw7mc2erbJBpDnl7TPw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.2.0", + "tapable": "^0.1.8" + }, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/eslint-import-resolver-webpack/node_modules/resolve": { + "version": "2.0.0-next.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", + "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-import-resolver-webpack/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/eslint-import-resolver-webpack/node_modules/tapable": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.1.10.tgz", + "integrity": "sha512-jX8Et4hHg57mug1/079yitEKWGB3LCwoxByLsNim89LABq8NqgiX+6iYVOsq0vX8uJHkU+DZ5fnq95f800bEsQ==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", + "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", + "dev": true, + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-compat": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-compat/-/eslint-plugin-compat-4.2.0.tgz", + "integrity": "sha512-RDKSYD0maWy5r7zb5cWQS+uSPc26mgOzdORJ8hxILmWM7S/Ncwky7BcAtXVY5iRbKjBdHsWU8Yg7hfoZjtkv7w==", + "dev": true, + "dependencies": { + "@mdn/browser-compat-data": "^5.3.13", + "ast-metadata-inferer": "^0.8.0", + "browserslist": "^4.21.10", + "caniuse-lite": "^1.0.30001524", + "find-up": "^5.0.0", + "lodash.memoize": "^4.1.2", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=14.x" + }, + "peerDependencies": { + "eslint": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.28.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz", + "integrity": "sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.findlastindex": "^1.2.2", + "array.prototype.flat": "^1.3.1", + "array.prototype.flatmap": "^1.3.1", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.7", + "eslint-module-utils": "^2.8.0", + "has": "^1.0.3", + "is-core-module": "^2.13.0", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.6", + "object.groupby": "^1.0.0", + "object.values": "^1.1.6", + "semver": "^6.3.1", + "tsconfig-paths": "^3.14.2" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-jest": { + "version": "27.4.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.4.0.tgz", + "integrity": "sha512-ukVeKmMPAUA5SWjHenvyyXnirKfHKMdOsTZdn5tZx5EW05HGVQwBohigjFZGGj3zuv1cV6hc82FvWv6LdIbkgg==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "^5.10.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^5.0.0 || ^6.0.0", + "eslint": "^7.0.0 || ^8.0.0", + "jest": "*" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + }, + "jest": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz", + "integrity": "sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.20.7", + "aria-query": "^5.1.3", + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "ast-types-flow": "^0.0.7", + "axe-core": "^4.6.2", + "axobject-query": "^3.1.1", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "has": "^1.0.3", + "jsx-ast-utils": "^3.3.3", + "language-tags": "=1.0.5", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.0.tgz", + "integrity": "sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.8.5" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-promise": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz", + "integrity": "sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.33.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz", + "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "array.prototype.tosorted": "^1.1.1", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.12", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "object.hasown": "^1.1.2", + "object.values": "^1.1.6", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.4", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.8" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "dev": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", + "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-scope/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/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "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, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "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/execa/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/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "dev": true, + "dependencies": { + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/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/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/extsprintf": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz", + "integrity": "sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "optional": true + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true, + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "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/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/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/filelist/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, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "dev": true + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flat-cache/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", + "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fs-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": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "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/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-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": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-tsconfig": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.6.0.tgz", + "integrity": "sha512-lgbo68hHTQnFddybKbbs/RDRJnJT5YyGy2kQzVwbq+g67X73i+5MVTval34QxGkOe9X5Ujf1UYpCaphLyltjEg==", + "dev": true, + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "node_modules/global-agent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz", + "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==", + "dev": true, + "optional": true, + "dependencies": { + "boolean": "^3.0.1", + "es6-error": "^4.1.1", + "matcher": "^3.0.0", + "roarr": "^2.15.3", + "semver": "^7.3.2", + "serialize-error": "^7.0.1" + }, + "engines": { + "node": ">=10.0" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/got": { + "version": "11.8.6", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", + "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", + "dev": true, + "dependencies": { + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=10.19.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "dev": true, + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "node_modules/harmony-reflect": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz", + "integrity": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==", + "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-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "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/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/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/hosted-git-info/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/hosted-git-info/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "dev": true, + "dependencies": { + "whatwg-encoding": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-entities": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", + "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", + "dev": true + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "dev": true, + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-minifier-terser/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/html-webpack-plugin": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz", + "integrity": "sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==", + "dev": true, + "dependencies": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "webpack": "^5.20.0" + } + }, + "node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/htmlparser2/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/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 + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-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, + "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": "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/http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dev": true, + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "dev": true, + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "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-corefoundation": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/iconv-corefoundation/-/iconv-corefoundation-1.1.7.tgz", + "integrity": "sha512-T10qvkw0zz4wnm560lOEg0PovVqUXuOFhhHAkixw8/sycy7TJt7v/RrkEKEQnAw2viPSJu6iAkErxnzR0g8PpQ==", + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "cli-truncate": "^2.1.0", + "node-addon-api": "^1.6.3" + }, + "engines": { + "node": "^8.11.2 || >=10" + } + }, + "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/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/identity-obj-proxy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", + "integrity": "sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==", + "dev": true, + "dependencies": { + "harmony-reflect": "^1.4.6" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "dev": true + }, + "node_modules/immutable": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.2.4.tgz", + "integrity": "sha512-WDxL3Hheb1JkRN3sQkyujNlL/xRjAo3rJtaU5xeufUauG66JdMr32bLj4gF+vWl84DIA3Zxw7tiAjneYzRRw+w==", + "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-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-3.0.0.tgz", + "integrity": "sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-from/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/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/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": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/internal-slot": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "dev": true + }, + "node_modules/ipaddr.js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/is-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-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "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-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-ci": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "dev": true, + "dependencies": { + "ci-info": "^3.2.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-core-module": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "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": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-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==", + "dev": true, + "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-inside-container/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==", + "dev": true, + "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-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-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "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-set": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.11" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", + "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/isbinaryfile": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-5.0.0.tgz", + "integrity": "sha512-UDdnyGvMajJUWCkib7Cei/dvyJrrvo4FIrsvSFWdPpXSUorzXrDJ0S+X5Q4ZlasfPjca4yqCNNsjbCeiy8FFeg==", + "dev": true, + "engines": { + "node": ">= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", + "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/iterator.prototype": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + } + }, + "node_modules/jackspeak": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.2.1.tgz", + "integrity": "sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jake": { + "version": "10.8.7", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", + "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==", + "dev": true, + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "dev": true, + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "dev": true, + "dependencies": { + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-circus/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/jest-cli": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "dev": true, + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-config": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-config/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-config/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-config/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-diff/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-diff/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/jest-docblock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "dev": true, + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-each/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/jest-environment-jsdom": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz", + "integrity": "sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/jsdom": "^20.0.0", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0", + "jsdom": "^20.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-leak-detector/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-leak-detector/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-leak-detector/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "dev": true, + "dependencies": { + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner/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/jest-runner/node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/jest-runtime": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-snapshot/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/jest-watcher": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "dev": true, + "dependencies": { + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsdom": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", + "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", + "dev": true, + "dependencies": { + "abab": "^2.0.6", + "acorn": "^8.8.1", + "acorn-globals": "^7.0.0", + "cssom": "^0.5.0", + "cssstyle": "^2.3.0", + "data-urls": "^3.0.2", + "decimal.js": "^10.4.2", + "domexception": "^4.0.0", + "escodegen": "^2.0.0", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.1", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.2", + "parse5": "^7.1.1", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.1.2", + "w3c-xmlserializer": "^4.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0", + "ws": "^8.11.0", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true, + "optional": 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==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", + "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.5", + "object.assign": "^4.1.3" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "dev": true, + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "node_modules/jszip/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/jszip/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/jszip/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/jszip/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/keyboardevent-from-electron-accelerator": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/keyboardevent-from-electron-accelerator/-/keyboardevent-from-electron-accelerator-2.0.0.tgz", + "integrity": "sha512-iQcmNA0M4ETMNi0kG/q0h/43wZk7rMeKYrXP7sqKIJbHkTU8Koowgzv+ieR/vWJbOwxx5nDC3UnudZ0aLSu4VA==" + }, + "node_modules/keyboardevents-areequal": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/keyboardevents-areequal/-/keyboardevents-areequal-0.2.2.tgz", + "integrity": "sha512-Nv+Kr33T0mEjxR500q+I6IWisOQ0lK1GGOncV0kWE6n4KFmpcu7RUX5/2B0EUtX51Cb0HjZ9VJsSY3u4cBa0kw==" + }, + "node_modules/keyv": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", + "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "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/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/language-subtag-registry": { + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", + "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", + "dev": true + }, + "node_modules/language-tags": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", + "integrity": "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==", + "dev": true, + "dependencies": { + "language-subtag-registry": "~0.3.2" + } + }, + "node_modules/launch-editor": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.0.tgz", + "integrity": "sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==", + "dev": true, + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.7.3" + } + }, + "node_modules/lazy-val": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.5.tgz", + "integrity": "sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==" + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dev": true, + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "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/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "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.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==", + "dev": true + }, + "node_modules/lodash.escape": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz", + "integrity": "sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw==", + "dev": true + }, + "node_modules/lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==" + }, + "node_modules/lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", + "dev": true + }, + "node_modules/lodash.invokemap": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.invokemap/-/lodash.invokemap-4.6.0.tgz", + "integrity": "sha512-CfkycNtMqgUlfjfdh2BhKO/ZXrP8ePOX5lEU/g0R3ItJcnuxWDwokMGKx1hWcfOikmyOVx6X9IwWnDGlgKl61w==", + "dev": true + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.pullall": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.pullall/-/lodash.pullall-4.2.0.tgz", + "integrity": "sha512-VhqxBKH0ZxPpLhiu68YD1KnHmbhQJQctcipvmFnqIBDYzcIHzf3Zpu0tpeOKtR4x76p9yohc506eGdOjTmyIBg==", + "dev": true + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true + }, + "node_modules/lodash.uniqby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", + "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==", + "dev": true + }, + "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/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lz-string": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", + "dev": true, + "bin": { + "lz-string": "bin/bin.js" + } + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "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/make-fetch-happen/node_modules/lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/matcher": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", + "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", + "dev": true, + "optional": true, + "dependencies": { + "escape-string-regexp": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "dev": true + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.4.13", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.13.tgz", + "integrity": "sha512-omTM41g3Skpvx5dSYeZIbXKcXoAVc/AoMNwn9TKx++L/gaen/+4TTttmu8ZSch5vfVJ8uJvGbroTsIlslRg6lg==", + "dev": true, + "dependencies": { + "fs-monkey": "^1.0.3" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/memory-fs": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.2.0.tgz", + "integrity": "sha512-+y4mDxU4rvXXu5UDSGCGNiesFmwCHuefGMoPCO1WYucNYj7DsLqrFaa2fXVI0H+NNiPTwwzKwspn9yTZqUGqng==", + "dev": true + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "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/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.7.6", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.6.tgz", + "integrity": "sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw==", + "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.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "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": "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/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-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/minipass/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/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/minizlib/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/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/mrmime": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", + "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "dev": true, + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-abi": { + "version": "3.47.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.47.0.tgz", + "integrity": "sha512-2s6B2CWZM//kPgwnuI0KrYwNjfdByE25zvAaEpq9IH4zcNsarH8Ihu/UuX6XMPEogDAxkuUFeZn60pXNHAqn3A==", + "dev": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-addon-api": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", + "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==", + "dev": true, + "optional": true + }, + "node_modules/node-api-version": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/node-api-version/-/node-api-version-0.1.4.tgz", + "integrity": "sha512-KGXihXdUChwJAOHO53bv9/vXcLmdUsZ6jIptbvYvkpKfth+r7jw44JkVxQFA3kX5nQjzjmGu1uAu/xNNLNlI5g==", + "dev": true, + "dependencies": { + "semver": "^7.3.5" + } + }, + "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": "9.3.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.3.1.tgz", + "integrity": "sha512-4Q16ZCqq3g8awk6UplT7AuxQ35XN4R/yf/+wSAwcBUAjg7l58RTactWaP8fIDTi0FzI7YcVLujwExakZlfWkXg==", + "dev": true, + "dependencies": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^10.0.3", + "nopt": "^6.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": "^12.13 || ^14.13 || >=16" + } + }, + "node_modules/node-gyp/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/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", + "dev": true + }, + "node_modules/nopt": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", + "dev": true, + "dependencies": { + "abbrev": "^1.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path": { + "version": "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/nwsapi": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz", + "integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==", + "dev": true + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "dev": true, + "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.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", + "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", + "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz", + "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1" + } + }, + "node_modules/object.hasown": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", + "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", + "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.1.tgz", + "integrity": "sha512-/4b7qZNhv6Uhd7jjnREh1NjnPxlTq+XNWPG88Ydkj5AILcA5m3ajvcg57pB24EQjKv0dK62XnDqk9c/hkIG5Kg==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true, + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/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/p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "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/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/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dev": true, + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=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/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "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-scurry": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.9.2.tgz", + "integrity": "sha512-qSDLy2aGFPm8i4rsbHd4MNyTcrzHFsLQykrtbuGRknZZCBBVXSv2tSCDN2Cg6Rt/GFRw8GoW9y9Ecw5rIPG1sg==", + "dev": true, + "dependencies": { + "lru-cache": "^9.1.1", + "minipass": "^5.0.0 || ^6.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-9.1.2.tgz", + "integrity": "sha512-ERJq3FOzJTxBbFjZ7iDs+NiK4VI9Wz+RdrrAB8dio1oV+YvdPzUEE4QNiT2VD51DkIbCYRUUzCRkssXCHqSnKQ==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/path-scurry/node_modules/minipass": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-6.0.2.tgz", + "integrity": "sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "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, + "engines": { + "node": ">=6" + } + }, + "node_modules/pirates": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "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-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/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/plist": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz", + "integrity": "sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==", + "dev": true, + "dependencies": { + "@xmldom/xmldom": "^0.8.8", + "base64-js": "^1.5.1", + "xmlbuilder": "^15.1.1" + }, + "engines": { + "node": ">=10.4.0" + } + }, + "node_modules/postcss": { + "version": "8.4.29", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.29.tgz", + "integrity": "sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==", + "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" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-calc": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.1.tgz", + "integrity": "sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.11", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.2" + } + }, + "node_modules/postcss-colormin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-6.0.0.tgz", + "integrity": "sha512-EuO+bAUmutWoZYgHn2T1dG1pPqHU6L4TjzPlu4t1wZGXQ/fxV16xg2EJmYi0z+6r+MGV1yvpx1BHkUaRrPa2bw==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-convert-values": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.0.0.tgz", + "integrity": "sha512-U5D8QhVwqT++ecmy8rnTb+RL9n/B806UVaS3m60lqle4YDFcpbS3ae5bTQIh3wOGUSDHSEtMYLs/38dNG7EYFw==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-comments": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-6.0.0.tgz", + "integrity": "sha512-p2skSGqzPMZkEQvJsgnkBhCn8gI7NzRH2683EEjrIkoMiwRELx68yoUJ3q3DGSGuQ8Ug9Gsn+OuDr46yfO+eFw==", + "dev": true, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.0.tgz", + "integrity": "sha512-bU1SXIizMLtDW4oSsi5C/xHKbhLlhek/0/yCnoMQany9k3nPBq+Ctsv/9oMmyqbR96HYHxZcHyK2HR5P/mqoGA==", + "dev": true, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-empty": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-6.0.0.tgz", + "integrity": "sha512-b+h1S1VT6dNhpcg+LpyiUrdnEZfICF0my7HAKgJixJLW7BnNmpRH34+uw/etf5AhOlIhIAuXApSzzDzMI9K/gQ==", + "dev": true, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-6.0.0.tgz", + "integrity": "sha512-4VELwssYXDFigPYAZ8vL4yX4mUepF/oCBeeIT4OXsJPYOtvJumyz9WflmJWTfDwCUcpDR+z0zvCWBXgTx35SVw==", + "dev": true, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-merge-longhand": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-6.0.0.tgz", + "integrity": "sha512-4VSfd1lvGkLTLYcxFuISDtWUfFS4zXe0FpF149AyziftPFQIWxjvFSKhA4MIxMe4XM3yTDgQMbSNgzIVxChbIg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^6.0.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-merge-rules": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.0.1.tgz", + "integrity": "sha512-a4tlmJIQo9SCjcfiCcCMg/ZCEe0XTkl/xK0XHBs955GWg9xDX3NwP9pwZ78QUOWB8/0XCjZeJn98Dae0zg6AAw==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^4.0.0", + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-6.0.0.tgz", + "integrity": "sha512-zNRAVtyh5E8ndZEYXA4WS8ZYsAp798HiIQ1V2UF/C/munLp2r1UGHwf1+6JFu7hdEhJFN+W1WJQKBrtjhFgEnA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-6.0.0.tgz", + "integrity": "sha512-wO0F6YfVAR+K1xVxF53ueZJza3L+R3E6cp0VwuXJQejnNUH0DjcAFe3JEBeTY1dLwGa0NlDWueCA1VlEfiKgAA==", + "dev": true, + "dependencies": { + "colord": "^2.9.1", + "cssnano-utils": "^4.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-params": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-6.0.0.tgz", + "integrity": "sha512-Fz/wMQDveiS0n5JPcvsMeyNXOIMrwF88n7196puSuQSWSa+/Ofc1gDOSY2xi8+A4PqB5dlYCKk/WfqKqsI+ReQ==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4", + "cssnano-utils": "^4.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-6.0.0.tgz", + "integrity": "sha512-ec/q9JNCOC2CRDNnypipGfOhbYPuUkewGwLnbv6omue/PSASbHSU7s6uSQ0tcFRVv731oMIx8k0SP4ZX6be/0g==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz", + "integrity": "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-6.0.0.tgz", + "integrity": "sha512-cqundwChbu8yO/gSWkuFDmKrCZ2vJzDAocheT2JTd0sFNA4HMGoKMfbk2B+J0OmO0t5GUkiAkSM5yF2rSLUjgQ==", + "dev": true, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.0.tgz", + "integrity": "sha512-Qyt5kMrvy7dJRO3OjF7zkotGfuYALETZE+4lk66sziWSPzlBEt7FrUshV6VLECkI4EN8Z863O6Nci4NXQGNzYw==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-6.0.0.tgz", + "integrity": "sha512-mPCzhSV8+30FZyWhxi6UoVRYd3ZBJgTRly4hOkaSifo0H+pjDYcii/aVT4YE6QpOil15a5uiv6ftnY3rm0igPg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.0.tgz", + "integrity": "sha512-50W5JWEBiOOAez2AKBh4kRFm2uhrT3O1Uwdxz7k24aKtbD83vqmcVG7zoIwo6xI2FZ/HDlbrCopXhLeTpQib1A==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-string": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-6.0.0.tgz", + "integrity": "sha512-KWkIB7TrPOiqb8ZZz6homet2KWKJwIlysF5ICPZrXAylGe2hzX/HSf4NTX2rRPJMAtlRsj/yfkrWGavFuB+c0w==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.0.tgz", + "integrity": "sha512-tpIXWciXBp5CiFs8sem90IWlw76FV4oi6QEWfQwyeREVwUy39VSeSqjAT7X0Qw650yAimYW5gkl2Gd871N5SQg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-6.0.0.tgz", + "integrity": "sha512-ui5crYkb5ubEUDugDc786L/Me+DXp2dLg3fVJbqyAl0VPkAeALyAijF2zOsnZyaS1HyfPuMH0DwyY18VMFVNkg==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-url": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-6.0.0.tgz", + "integrity": "sha512-98mvh2QzIPbb02YDIrYvAg4OUzGH7s1ZgHlD3fIdTHLgPLRpv1ZTKJDnSAKr4Rt21ZQFzwhGMXxpXlfrUBKFHw==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.0.tgz", + "integrity": "sha512-7cfE1AyLiK0+ZBG6FmLziJzqQCpTQY+8XjMhMAz8WSBSCsCNNUKujgIgjCAmDT3cJ+3zjTXFkoD15ZPsckArVw==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-ordered-values": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-6.0.0.tgz", + "integrity": "sha512-K36XzUDpvfG/nWkjs6d1hRBydeIxGpKS2+n+ywlKPzx1nMYDYpoGbcjhj5AwVYJK1qV2/SDoDEnHzlPD6s3nMg==", + "dev": true, + "dependencies": { + "cssnano-utils": "^4.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-6.0.0.tgz", + "integrity": "sha512-s2UOnidpVuXu6JiiI5U+fV2jamAw5YNA9Fdi/GRK0zLDLCfXmSGqQtzpUPtfN66RtCbb9fFHoyZdQaxOB3WxVA==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.0.tgz", + "integrity": "sha512-FQ9f6xM1homnuy1wLe9lP1wujzxnwt1EwiigtWwuyf8FsqqXUDUp2Ulxf9A5yjlUOTdCJO6lonYjg1mgqIIi2w==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.11", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", + "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-svgo": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-6.0.0.tgz", + "integrity": "sha512-r9zvj/wGAoAIodn84dR/kFqwhINp5YsJkLoujybWG59grR/IHx+uQ2Zo+IcOwM0jskfYX3R0mo+1Kip1VSNcvw==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0", + "svgo": "^3.0.2" + }, + "engines": { + "node": "^14 || ^16 || >= 18" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-6.0.0.tgz", + "integrity": "sha512-EPQzpZNxOxP7777t73RQpZE5e9TrnCrkvp7AH7a0l89JmZiPnS82y216JowHXwpBCQitfyxrof9TK3rYbi7/Yw==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", + "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", + "dev": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "dev": true, + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/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/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "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/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pure-rand": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.3.tgz", + "integrity": "sha512-KddyFewCsO0j3+np81IQ+SweXLDnDQTs5s67BOnrYmYe/yNmUhttQyGsYzy8yUnoljGAQ9sl38YB4vH8ur7Y+w==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ] + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "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/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/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/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "node_modules/react-refresh": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", + "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-router": { + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.16.0.tgz", + "integrity": "sha512-VT4Mmc4jj5YyjpOi5jOf0I+TYzGpvzERy4ckNSvSh2RArv8LLoCxlsZ2D+tc7zgjxcY34oTz2hZaeX5RVprKqA==", + "dependencies": { + "@remix-run/router": "1.9.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/react-router-dom": { + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.16.0.tgz", + "integrity": "sha512-aTfBLv3mk/gaKLxgRDUPbPw+s4Y/O+ma3rEN1u8EgEpLpPe6gNjIsWt9rxushMHHMb7mSwxRGdGlGdvmFsyPIg==", + "dependencies": { + "@remix-run/router": "1.9.0", + "react-router": "6.16.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, + "node_modules/react-shallow-renderer": { + "version": "16.15.0", + "resolved": "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz", + "integrity": "sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==", + "dev": true, + "dependencies": { + "object-assign": "^4.1.1", + "react-is": "^16.12.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-test-renderer": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-18.2.0.tgz", + "integrity": "sha512-JWD+aQ0lh2gvh4NM3bBM42Kx+XybOxCpgYK7F8ugAlpaTSnWsX+39Z4XkOykGZAHrjwwTZT3x3KxswVWxHPUqA==", + "dev": true, + "dependencies": { + "react-is": "^18.2.0", + "react-shallow-renderer": "^16.15.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/react-test-renderer/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/read-config-file": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-6.3.2.tgz", + "integrity": "sha512-M80lpCjnE6Wt6zb98DoW8WHR09nzMSpu8XHtPkiTHrJ5Az9CybfeQhTJ8D7saeBHpGhLPIVyA8lcL6ZmdKwY6Q==", + "dev": true, + "dependencies": { + "config-file-ts": "^0.2.4", + "dotenv": "^9.0.2", + "dotenv-expand": "^5.1.0", + "js-yaml": "^4.1.0", + "json5": "^2.2.0", + "lazy-val": "^1.0.4" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "dev": true, + "dependencies": { + "resolve": "^1.20.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz", + "integrity": "sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==", + "dev": true + }, + "node_modules/regenerator-transform": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", + "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "set-function-name": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.0.tgz", + "integrity": "sha512-ZdhUQlng0RoscyW7jADnUZ25F5eVtHdMyXSb2PiwafvteRAOJUjFoUPEYZSIfP99fBIs3maLIRfpEddT78wAAQ==", + "dev": true, + "dependencies": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", + "dev": true + }, + "node_modules/renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "dev": true, + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "dev": true + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-cwd/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-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/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/responselike": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "dev": true, + "dependencies": { + "lowercase-keys": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "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": "5.0.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.1.tgz", + "integrity": "sha512-OfFZdwtd3lZ+XZzYP/6gTACubwFcHdLRqS9UX3UwpU2dnGQYkPFISRwvM3w9IiB2w7bW5qGo/uAwE4SmXXSKvg==", + "dev": true, + "dependencies": { + "glob": "^10.2.5" + }, + "bin": { + "rimraf": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/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/rimraf/node_modules/glob": { + "version": "10.2.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.6.tgz", + "integrity": "sha512-U/rnDpXJGF414QQQZv5uVsabTVxMSwzS5CH0p3DRCIV6ownl4f7PzGnkGmvlum2wB+9RlJWJZ6ACU1INnBqiPA==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2", + "path-scurry": "^1.7.0" + }, + "bin": { + "glob": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/minimatch": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", + "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/minipass": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-6.0.2.tgz", + "integrity": "sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/roarr": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", + "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", + "dev": true, + "optional": true, + "dependencies": { + "boolean": "^3.0.1", + "detect-node": "^2.0.4", + "globalthis": "^1.0.1", + "json-stringify-safe": "^5.0.1", + "semver-compare": "^1.0.0", + "sprintf-js": "^1.1.2" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/run-applescript": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz", + "integrity": "sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==", + "dev": true, + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/runtime-required": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/runtime-required/-/runtime-required-1.1.0.tgz", + "integrity": "sha512-yX97f5E0WfNpcQnfVjap6vzQcvErkYYCx6eTK4siqGEdC8lglwypUFgZVTX7ShvIlgfkC4XGFl9O1KTYcff0pw==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-array-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", + "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/sanitize-filename": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", + "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", + "dev": true, + "dependencies": { + "truncate-utf8-bytes": "^1.0.0" + } + }, + "node_modules/sass": { + "version": "1.67.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.67.0.tgz", + "integrity": "sha512-SVrO9ZeX/QQyEGtuZYCVxoeAL5vGlYjJ9p4i4HFuekWl8y/LtJ7tJc10Z+ck1c8xOuoBm2MYzcLfTAffD0pl/A==", + "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": ">=14.0.0" + } + }, + "node_modules/sass-loader": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.3.2.tgz", + "integrity": "sha512-CQbKl57kdEv+KDLquhC+gE3pXt74LEAzm+tzywcA0/aHZuub8wTErbjAoNI57rPUWRYRNC5WUnNl8eGJNbDdwg==", + "dev": true, + "dependencies": { + "neo-async": "^2.6.2" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", + "sass": "^1.3.0", + "sass-embedded": "*", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + } + } + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "node_modules/saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "dev": true, + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.7" + } + }, + "node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "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, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "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.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", + "dev": true, + "optional": true + }, + "node_modules/semver/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/semver/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/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/send/node_modules/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/send/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/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/serialize-error": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", + "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", + "dev": true, + "optional": true, + "dependencies": { + "type-fest": "^0.13.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/serialize-error/node_modules/type-fest": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "node_modules/set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "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/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/simple-update-notifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", + "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/sirv": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.3.tgz", + "integrity": "sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==", + "dev": true, + "dependencies": { + "@polka/url": "^1.0.0-next.20", + "mrmime": "^1.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "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/slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dev": true, + "optional": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "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/snake-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", + "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", + "dev": true, + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "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.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "dev": true, + "dependencies": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "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/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "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-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/spawn-command": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz", + "integrity": "sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==", + "dev": true + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "dev": true, + "optional": true + }, + "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/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/stackframe": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", + "dev": true + }, + "node_modules/stat-mode": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-1.0.0.tgz", + "integrity": "sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/stop-iteration-iterator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", + "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "dev": true, + "dependencies": { + "internal-slot": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "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/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, + "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/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/string-width/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", + "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "regexp.prototype.flags": "^1.4.3", + "side-channel": "^1.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/style-loader": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.3.tgz", + "integrity": "sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw==", + "dev": true, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/stylehacks": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-6.0.0.tgz", + "integrity": "sha512-+UT589qhHPwz6mTlCLSt/vMNTJx8dopeJlZAlBMJPWA3ORqu6wmQY7FBXf+qD+FsqoBJODyqNxOUP3jdntFRdw==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4", + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/sumchecker": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", + "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==", + "dev": true, + "dependencies": { + "debug": "^4.1.0" + }, + "engines": { + "node": ">= 8.0" + } + }, + "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/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svg-parser": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", + "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==", + "dev": true + }, + "node_modules/svgo": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.0.2.tgz", + "integrity": "sha512-Z706C1U2pb1+JGP48fbazf3KxHrWOsLme6Rv7imFBn5EnuanDW1GPaA/P1/dvObE670JDePC3mnj0k0B7P0jjQ==", + "dev": true, + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^5.1.0", + "css-tree": "^2.2.1", + "csso": "^5.0.5", + "picocolors": "^1.0.0" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/svgo" + } + }, + "node_modules/svgo/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/svgo/node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/svgo/node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dev": true, + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/svgo/node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dev": true, + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/svgo/node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "dev": true, + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "node_modules/synckit": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz", + "integrity": "sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==", + "dev": true, + "dependencies": { + "@pkgr/utils": "^2.3.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar": { + "version": "6.1.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz", + "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^4.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/minipass": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.3.tgz", + "integrity": "sha512-OW2r4sQ0sI+z5ckEt5c1Tri4xTgZwYDxpE54eqWlQloQRoWtXjqt9udJ5Z4dSv7wK+nfFI7FRXyCpBSft+gpFw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/temp-file": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/temp-file/-/temp-file-3.4.0.tgz", + "integrity": "sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg==", + "dev": true, + "dependencies": { + "async-exit-hook": "^2.0.1", + "fs-extra": "^10.0.0" + } + }, + "node_modules/temp-file/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/terser": { + "version": "5.17.7", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.17.7.tgz", + "integrity": "sha512-/bi0Zm2C6VAexlGgLlVxA0P2lru/sdLyfCVaRMfKVo9nWxbmz7f/sD8VPybPeSUJaJcwmCJis9pBIhcVcG1QcQ==", + "dev": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", + "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.17", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.16.8" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/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": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "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/tiny-typed-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tiny-typed-emitter/-/tiny-typed-emitter-2.1.0.tgz", + "integrity": "sha512-qVtvMxeXbVej0cQWKqVSSAHmKZEHAvxdF8HEUBFWts8h+xEo5m/lEiPakuyZ3BnCBjOD8i24kzNOiOLLgsSxhA==" + }, + "node_modules/titleize": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz", + "integrity": "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/tmp-promise": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz", + "integrity": "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==", + "dev": true, + "dependencies": { + "tmp": "^0.2.0" + } + }, + "node_modules/tmp/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/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", + "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", + "dev": true, + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "dev": true, + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "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/truncate-utf8-bytes": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", + "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==", + "dev": true, + "dependencies": { + "utf8-byte-length": "^1.0.1" + } + }, + "node_modules/ts-api-utils": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", + "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", + "dev": true, + "engines": { + "node": ">=16.13.0" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/ts-jest": { + "version": "29.1.1", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz", + "integrity": "sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==", + "dev": true, + "dependencies": { + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^29.0.0", + "json5": "^2.2.3", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "^7.5.3", + "yargs-parser": "^21.0.1" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@jest/types": "^29.0.0", + "babel-jest": "^29.0.0", + "jest": "^29.0.0", + "typescript": ">=4.3 <6" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@jest/types": { + "optional": true + }, + "babel-jest": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, + "node_modules/ts-loader": { + "version": "9.4.4", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.4.tgz", + "integrity": "sha512-MLukxDHBl8OJ5Dk3y69IsKVFRA/6MwzEqBgh+OXMPB/OD01KQuWPFd1WAQP8a5PeSCAxfnkhiuWqfmFJzJQt9w==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "typescript": "*", + "webpack": "^5.0.0" + } + }, + "node_modules/ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/tsconfig-paths": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", + "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths-webpack-plugin": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.1.0.tgz", + "integrity": "sha512-xWFISjviPydmtmgeUAuXp4N1fky+VCtfhOkDUFIv5ea7p4wuTomI4QTrXvFBX2S4jZsmyTSrStQl+E+4w+RzxA==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.7.0", + "tsconfig-paths": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/tsconfig-paths-webpack-plugin/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/tsconfig-paths-webpack-plugin/node_modules/tsconfig-paths": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.1.2.tgz", + "integrity": "sha512-uhxiMgnXQp1IR622dUXI+9Ehnws7i/y6xvpZB9IbUVOPy0muvdvgXeZOn88UcGPiT98Vp3rJPTa8bFoalZ3Qhw==", + "dev": true, + "dependencies": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tsconfig-paths/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "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": "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/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/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unixify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unixify/-/unixify-1.0.0.tgz", + "integrity": "sha512-6bc58dPYhCMHHuwxldQxO3RRNZ4eCogZ/st++0+fcC1nr0jiGUtAdBJ2qzmLQWSxbtz42pWt4QQMiZ9HvZf5cg==", + "dev": true, + "dependencies": { + "normalize-path": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unixify/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/unzip-crx-3": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/unzip-crx-3/-/unzip-crx-3-0.2.0.tgz", + "integrity": "sha512-0+JiUq/z7faJ6oifVB5nSwt589v1KCduqIJupNVDoWSXZtWDmjDGO3RAEOvwJ07w90aoXoP4enKsR7ecMrJtWQ==", + "dev": true, + "dependencies": { + "jszip": "^3.1.0", + "mkdirp": "^0.5.1", + "yaku": "^0.16.6" + } + }, + "node_modules/unzip-crx-3/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/update-browserslist-db": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", + "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url-loader": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", + "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "mime-types": "^2.1.27", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "file-loader": "*", + "webpack": "^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "file-loader": { + "optional": true + } + } + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/utf8-byte-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", + "integrity": "sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==", + "dev": true + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", + "dev": true + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "node_modules/v8-to-istanbul": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", + "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/verror": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.1.tgz", + "integrity": "sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==", + "dev": true, + "optional": true, + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", + "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", + "dev": true, + "dependencies": { + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/watchboy": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/watchboy/-/watchboy-0.4.3.tgz", + "integrity": "sha512-GHs1HxwvxSMBsqd/WfTOZhj5gBdMqf5HQpfgtKxDfZRxrlYPDdVLRB61LCeRzJaWANmvSIMlfmRVDwVmJFgAKA==", + "dev": true, + "dependencies": { + "lodash.difference": "^4.5.0", + "micromatch": "^4.0.2", + "pify": "^4.0.1", + "unixify": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/webpack": { + "version": "5.88.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz", + "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.7", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-bundle-analyzer": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.9.1.tgz", + "integrity": "sha512-jnd6EoYrf9yMxCyYDPj8eutJvtjQNp8PHmni/e/ulydHBWhT5J3menXt3HEkScsu9YqMAcG4CfFjs3rj5pVU1w==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "0.5.7", + "acorn": "^8.0.4", + "acorn-walk": "^8.0.0", + "commander": "^7.2.0", + "escape-string-regexp": "^4.0.0", + "gzip-size": "^6.0.0", + "is-plain-object": "^5.0.0", + "lodash.debounce": "^4.0.8", + "lodash.escape": "^4.0.1", + "lodash.flatten": "^4.4.0", + "lodash.invokemap": "^4.6.0", + "lodash.pullall": "^4.2.0", + "lodash.uniqby": "^4.7.0", + "opener": "^1.5.2", + "picocolors": "^1.0.0", + "sirv": "^2.0.3", + "ws": "^7.3.1" + }, + "bin": { + "webpack-bundle-analyzer": "lib/bin/analyzer.js" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/webpack-cli": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", + "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^2.1.1", + "@webpack-cli/info": "^2.0.2", + "@webpack-cli/serve": "^2.0.5", + "colorette": "^2.0.14", + "commander": "^10.0.1", + "cross-spawn": "^7.0.3", + "envinfo": "^7.7.3", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/webpack-cli/node_modules/interpret": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack-dev-middleware": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", + "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "dev": true, + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/webpack-dev-middleware/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server": { + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz", + "integrity": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==", + "dev": true, + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.5", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.13.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-server/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/webpack-dev-server/node_modules/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/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-merge": { + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.9.0.tgz", + "integrity": "sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg==", + "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/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "dev": true, + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "dev": true, + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "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/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", + "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", + "dev": true, + "dependencies": { + "function.prototype.name": "^1.1.5", + "has-tostringtag": "^1.0.0", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "dependencies": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", + "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-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, + "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/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/ws": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/xmlbuilder": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", + "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", + "dev": true, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yaku": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/yaku/-/yaku-0.16.7.tgz", + "integrity": "sha512-Syu3IB3rZvKvYk7yTiyl1bo/jiEFaaStrgv1V2TIJTqYPStSMQVO8EQjg/z+DRzLq/4LIIharNT3iH1hylEIRw==", + "dev": true + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/apps/electron/package.json b/apps/electron/package.json index 6999e1385..a25801fca 100644 --- a/apps/electron/package.json +++ b/apps/electron/package.json @@ -1,42 +1,251 @@ { - "name": "flowser", - "description": "Supercharged development on Flow blockchain ⚡", - "version": "3.0.0", - "homepage": "https://flowser.dev", + "description": "A foundation for scalable desktop apps", + "keywords": [ + "electron", + "boilerplate", + "react", + "typescript", + "ts", + "sass", + "webpack", + "hot", + "reload" + ], + "homepage": "https://github.com/electron-react-boilerplate/electron-react-boilerplate#readme", + "bugs": { + "url": "https://github.com/electron-react-boilerplate/electron-react-boilerplate/issues" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/electron-react-boilerplate/electron-react-boilerplate.git" + }, + "license": "MIT", "author": { - "email": "bartolomej.kozorog@gmail.com", - "name": "Flowser" + "name": "Electron React Boilerplate Maintainers", + "email": "electronreactboilerplate@gmail.com", + "url": "https://electron-react-boilerplate.js.org" }, + "contributors": [ + { + "name": "Amila Welihinda", + "email": "amilajack@gmail.com", + "url": "https://github.com/amilajack" + } + ], + "main": "./src/main/main.ts", "scripts": { - "postinstall": "electron-builder install-app-deps", - "build:electron-main": "tsc --project tsconfig.electron.json", - "prebuild:electron": "cp src/targets/electron/index.tsx src/index.tsx", - "electron:serve": "yarn run prebuild:electron && yarn run build:electron-main && concurrently -k \"cross-env BROWSER=none yarn start:react\" \"yarn electron:start\"", - "electron:build": "yarn run prebuild:electron && yarn build:react && yarn run build:electron-main && echo \"Run app/scripts/build.sh to build the actuall electron app.\"", - "electron:start": "wait-on tcp:6060 && electron .", - "build": "yarn run electron:build", - - "build-electron": "electron-builder -c.extraMetadata.main=build/electron/targets/electron/main.js", - "build-mac": "yarn run build-electron --mac", - "build-win": "yarn run build-electron --win", - "build-linux": "yarn run build-electron --linux", - "build-all": "yarn run build-electron --linux --mac --win" + "build": "concurrently \"npm run build:main\" \"npm run build:renderer\"", + "build:dll": "cross-env NODE_ENV=development TS_NODE_TRANSPILE_ONLY=true webpack --config ./.erb/configs/webpack.config.renderer.dev.dll.ts", + "build:main": "cross-env NODE_ENV=production TS_NODE_TRANSPILE_ONLY=true webpack --config ./.erb/configs/webpack.config.main.prod.ts", + "build:renderer": "cross-env NODE_ENV=production TS_NODE_TRANSPILE_ONLY=true webpack --config ./.erb/configs/webpack.config.renderer.prod.ts", + "postinstall": "ts-node .erb/scripts/check-native-dep.js && electron-builder install-app-deps && npm run build:dll", + "lint": "cross-env NODE_ENV=development eslint . --ext .js,.jsx,.ts,.tsx", + "package": "ts-node ./.erb/scripts/clean.js dist && npm run build && electron-builder build --publish never && npm run build:dll", + "rebuild": "electron-rebuild --parallel --types prod,dev,optional --module-dir release/app", + "start": "ts-node ./.erb/scripts/check-port-in-use.js && npm run start:renderer", + "start:main": "cross-env NODE_ENV=development electronmon -r ts-node/register/transpile-only .", + "start:preload": "cross-env NODE_ENV=development TS_NODE_TRANSPILE_ONLY=true webpack --config ./.erb/configs/webpack.config.preload.dev.ts", + "start:renderer": "cross-env NODE_ENV=development TS_NODE_TRANSPILE_ONLY=true webpack serve --config ./.erb/configs/webpack.config.renderer.dev.ts", + "test": "jest" + }, + "browserslist": [], + "prettier": { + "singleQuote": true, + "overrides": [ + { + "files": [ + ".prettierrc", + ".eslintrc" + ], + "options": { + "parser": "json" + } + } + ] + }, + "jest": { + "moduleDirectories": [ + "node_modules", + "release/app/node_modules", + "src" + ], + "moduleFileExtensions": [ + "js", + "jsx", + "ts", + "tsx", + "json" + ], + "moduleNameMapper": { + "\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "/.erb/mocks/fileMock.js", + "\\.(css|less|sass|scss)$": "identity-obj-proxy" + }, + "setupFiles": [ + "./.erb/scripts/check-build-exists.ts" + ], + "testEnvironment": "jsdom", + "testEnvironmentOptions": { + "url": "http://localhost/" + }, + "testPathIgnorePatterns": [ + "release/app/dist", + ".erb/dll" + ], + "transform": { + "\\.(ts|tsx|js|jsx)$": "ts-jest" + } }, "dependencies": { - "@onflowser/config": "*", - "@onflowser/indexer": "*", - "@onflowser/core": "*", - "@onflowser/api": "*", - "@sentry/electron": "^4.0.2", - "electron-is-dev": "^2.0.0", + "electron-debug": "^3.2.0", "electron-log": "^4.4.8", - "electron-updater": "^5.3.0" + "electron-updater": "^6.1.4", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-router-dom": "^6.16.0" }, "devDependencies": { - "electron-notarize": "^1.2.1", - "electron-icon-maker": "^0.0.5", - "dotenv": "^16.0.2", - "electron": "20.1.0", - "electron-builder": "^23.3.3" + "@electron/notarize": "^2.1.0", + "@electron/rebuild": "^3.3.0", + "@pmmmwh/react-refresh-webpack-plugin": "^0.5.11", + "@svgr/webpack": "^8.1.0", + "@teamsupercell/typings-for-css-modules-loader": "^2.5.2", + "@testing-library/jest-dom": "^6.1.3", + "@testing-library/react": "^14.0.0", + "@types/jest": "^29.5.5", + "@types/node": "20.6.2", + "@types/react": "^18.2.21", + "@types/react-dom": "^18.2.7", + "@types/react-test-renderer": "^18.0.1", + "@types/terser-webpack-plugin": "^5.0.4", + "@types/webpack-bundle-analyzer": "^4.6.0", + "@typescript-eslint/eslint-plugin": "^6.7.0", + "@typescript-eslint/parser": "^6.7.0", + "browserslist-config-erb": "^0.0.3", + "chalk": "^4.1.2", + "concurrently": "^8.2.1", + "core-js": "^3.32.2", + "cross-env": "^7.0.3", + "css-loader": "^6.8.1", + "css-minimizer-webpack-plugin": "^5.0.1", + "detect-port": "^1.5.1", + "electron": "^26.2.1", + "electron-builder": "^24.6.4", + "electron-devtools-installer": "^3.2.0", + "electronmon": "^2.0.2", + "eslint": "^8.49.0", + "eslint-config-airbnb-base": "^15.0.0", + "eslint-config-erb": "^4.1.0-0", + "eslint-import-resolver-typescript": "^3.6.0", + "eslint-import-resolver-webpack": "^0.13.7", + "eslint-plugin-compat": "^4.2.0", + "eslint-plugin-import": "^2.28.1", + "eslint-plugin-jest": "^27.4.0", + "eslint-plugin-jsx-a11y": "^6.7.1", + "eslint-plugin-promise": "^6.1.1", + "eslint-plugin-react": "^7.33.2", + "eslint-plugin-react-hooks": "^4.6.0", + "file-loader": "^6.2.0", + "html-webpack-plugin": "^5.5.3", + "identity-obj-proxy": "^3.0.0", + "jest": "^29.7.0", + "jest-environment-jsdom": "^29.7.0", + "mini-css-extract-plugin": "^2.7.6", + "prettier": "^3.0.3", + "react-refresh": "^0.14.0", + "react-test-renderer": "^18.2.0", + "rimraf": "^5.0.1", + "sass": "^1.67.0", + "sass-loader": "^13.3.2", + "style-loader": "^3.3.3", + "terser-webpack-plugin": "^5.3.9", + "ts-jest": "^29.1.1", + "ts-loader": "^9.4.4", + "ts-node": "^10.9.1", + "tsconfig-paths-webpack-plugin": "^4.1.0", + "typescript": "^5.2.2", + "url-loader": "^4.1.1", + "webpack": "^5.88.2", + "webpack-bundle-analyzer": "^4.9.1", + "webpack-cli": "^5.1.4", + "webpack-dev-server": "^4.15.1", + "webpack-merge": "^5.9.0" + }, + "build": { + "productName": "ElectronReact", + "appId": "org.erb.ElectronReact", + "asar": true, + "asarUnpack": "**\\*.{node,dll}", + "files": [ + "dist", + "node_modules", + "package.json" + ], + "afterSign": ".erb/scripts/notarize.js", + "mac": { + "target": { + "target": "default", + "arch": [ + "arm64", + "x64" + ] + }, + "type": "distribution", + "hardenedRuntime": true, + "entitlements": "assets/entitlements.mac.plist", + "entitlementsInherit": "assets/entitlements.mac.plist", + "gatekeeperAssess": false + }, + "dmg": { + "contents": [ + { + "x": 130, + "y": 220 + }, + { + "x": 410, + "y": 220, + "type": "link", + "path": "/Applications" + } + ] + }, + "win": { + "target": [ + "nsis" + ] + }, + "linux": { + "target": [ + "AppImage" + ], + "category": "Development" + }, + "directories": { + "app": "release/app", + "buildResources": "assets", + "output": "release/build" + }, + "extraResources": [ + "./assets/**" + ], + "publish": { + "provider": "github", + "owner": "electron-react-boilerplate", + "repo": "electron-react-boilerplate" + } + }, + "collective": { + "url": "https://opencollective.com/electron-react-boilerplate-594" + }, + "devEngines": { + "node": ">=14.x", + "npm": ">=7.x" + }, + "electronmon": { + "patterns": [ + "!**/**", + "src/main/**" + ], + "logLevel": "quiet" } } diff --git a/apps/electron/release/app/package-lock.json b/apps/electron/release/app/package-lock.json new file mode 100644 index 000000000..351a9dab9 --- /dev/null +++ b/apps/electron/release/app/package-lock.json @@ -0,0 +1,14 @@ +{ + "name": "electron-react-boilerplate", + "version": "4.6.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "electron-react-boilerplate", + "version": "4.6.0", + "hasInstallScript": true, + "license": "MIT" + } + } +} diff --git a/apps/electron/release/app/package.json b/apps/electron/release/app/package.json new file mode 100644 index 000000000..de2f9ac9c --- /dev/null +++ b/apps/electron/release/app/package.json @@ -0,0 +1,18 @@ +{ + "name": "electron-react-boilerplate", + "version": "4.6.0", + "description": "A foundation for scalable desktop apps", + "license": "MIT", + "author": { + "name": "Electron React Boilerplate Maintainers", + "email": "electronreactboilerplate@gmail.com", + "url": "https://github.com/electron-react-boilerplate" + }, + "main": "./dist/main/main.js", + "scripts": { + "rebuild": "node -r ts-node/register ../../.erb/scripts/electron-rebuild.js", + "postinstall": "npm run rebuild && npm run link-modules", + "link-modules": "node -r ts-node/register ../../.erb/scripts/link-modules.ts" + }, + "dependencies": {} +} diff --git a/apps/electron/scripts/build.sh b/apps/electron/scripts/build.sh deleted file mode 100644 index 1a2aa12f3..000000000 --- a/apps/electron/scripts/build.sh +++ /dev/null @@ -1,32 +0,0 @@ -BUILD_PATH=../build -# Needs to be set to the "buildResources" directory -# See https://www.electron.build/icons -STATIC_ASSETS_PATH=../build/react/static -APP_ICON_PATH=$STATIC_ASSETS_PATH/app-icon - -# Cleanup -rm -rf $BUILD_PATH -mkdir -p $BUILD_PATH - -# Copy build artifacts from other modules to this folder -cp -r ../../frontend/build ${BUILD_PATH}/react -cp -r ../../frontend/dist ${BUILD_PATH}/electron - -# Note that some reason, electron-builder doesn't work with npx -# https://github.com/electron-userland/electron-builder/issues/3984 - -PLATFORM_ARG=$1 # valid values: win, mac, linux, all - -# The linux build fails if this directory doesn't exist -# For some reason it's not automatically created -mkdir ../release/build/@flowser - -mkdir -p $APP_ICON_PATH - -# Generate app icons -../node_modules/.bin/electron-icon-maker --input=../buildResources/icon.png --output=$APP_ICON_PATH - -# Copy MacOS installation background image -cp ../buildResources/macos-background.tiff $STATIC_ASSETS_PATH - -yarn run "build-${PLATFORM_ARG}" diff --git a/apps/electron/scripts/notarize.js b/apps/electron/scripts/notarize.js deleted file mode 100644 index 16c95d40a..000000000 --- a/apps/electron/scripts/notarize.js +++ /dev/null @@ -1,36 +0,0 @@ -const path = require("path"); - -const appRootDir = path.join(__dirname, ".."); -const envPath = path.join(appRootDir, ".env"); - -require("dotenv").config({ - path: envPath, -}); - -const { notarize } = require("electron-notarize"); - -exports.default = async function notarizing(context) { - const { electronPlatformName, appOutDir } = context; - - if (electronPlatformName !== "darwin") { - return; - } - - const appleId = process.env.APPLEID; - const appleIdPassword = process.env.APPLEIDPASS; - if (!appleId) { - throw new Error("Apple ID not set"); - } - if (!appleIdPassword) { - throw new Error("Apple ID password not set"); - } - - const appName = context.packager.appInfo.productFilename; - - return await notarize({ - appBundleId: "dev.flowser.app", - appPath: `${appOutDir}/${appName}.app`, - appleId, - appleIdPassword, - }); -}; diff --git a/apps/electron/scripts/setup.js b/apps/electron/scripts/setup.js deleted file mode 100644 index c8f98063f..000000000 --- a/apps/electron/scripts/setup.js +++ /dev/null @@ -1,105 +0,0 @@ -const fs = require("fs"); -const path = require("path"); -const child_process = require("child_process"); - -const appRootDir = path.join(__dirname, ".."); -const appSrcDir = path.join(appRootDir, "src"); -const backendRootDir = path.join(appRootDir, "..", "backend"); -const frontendRootDir = path.join(appRootDir, "..", "frontend"); - -const templatePackageJson = readPackageFile(appSrcDir); -const backendPackageJson = readPackageFile(backendRootDir); -const frontendPackageJson = readPackageFile(frontendRootDir); - -(async function run() { - const mergedPackageJson = mergePackageJsonFiles( - templatePackageJson, - backendPackageJson, - frontendPackageJson - ); - - const flowserPackages = getFlowserPackages(mergedPackageJson); - - // Temporary remove flowser packages from package.json - // Otherwise "yarn install" will fail - for (const packageName in flowserPackages) { - delete mergedPackageJson.dependencies[packageName]; - } - - writePackageFile(appRootDir, mergedPackageJson); - - await executeShellCommand("yarn", "install"); - - const packageJsonAfterInstall = readPackageFile(appRootDir); - packageJsonAfterInstall.dependencies = { - ...packageJsonAfterInstall.dependencies, - ...flowserPackages, - }; - - writePackageFile(appRootDir, packageJsonAfterInstall); -})(); - -function writePackageFile(packageDir, data) { - fs.writeFileSync( - path.join(packageDir, "package.json"), - JSON.stringify(data, null, 2) - ); -} - -function readPackageFile(packageDir) { - const data = fs.readFileSync(path.join(packageDir, "package.json")); - return JSON.parse(data.toString()); -} - -function executeShellCommand(command, options) { - return new Promise((resolve, reject) => { - const cmd = child_process.exec(command, options); - cmd.stdin.on("data", (data) => { - console.log(data.toString()); - }); - cmd.stderr.on("data", (data) => { - console.log("ERROR", data.toString()); - }); - cmd.on("close", (code) => { - console.log(`${command} exited with code ${code}`); - if (code === 0) { - resolve(); - } else { - reject(); - } - }); - }); -} - -function getFlowserPackages(packageJson) { - const flowserMonorepoPackages = [ - "@flowser/backend", - "@flowser/frontend", - "@flowser/shared", - ]; - - return flowserMonorepoPackages.reduce( - (object, packageName) => ({ - ...object, - [packageName]: packageJson.dependencies[packageName], - }), - {} - ); -} - -function mergePackageJsonFiles(templateFile, ...packageFiles) { - const mergedDevDependencies = Object.assign( - templateFile.devDependencies ?? {}, - ...packageFiles.map((file) => file.devDependencies) - ); - const mergedDependencies = Object.assign( - templateFile.dependencies ?? {}, - ...packageFiles.map((file) => file.dependencies) - ); - - return { - ...templateFile, - dependencies: mergedDependencies, - devDependencies: mergedDevDependencies, - }; -} diff --git a/apps/electron/scripts/yarn.lock b/apps/electron/scripts/yarn.lock deleted file mode 100644 index a556bc8e1..000000000 --- a/apps/electron/scripts/yarn.lock +++ /dev/null @@ -1,62 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"at-least-node@^1.0.0": - "integrity" "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" - "resolved" "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz" - "version" "1.0.0" - -"debug@^4.1.1": - "integrity" "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==" - "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" - "version" "4.3.4" - dependencies: - "ms" "2.1.2" - -"dotenv@^16.0.2": - "integrity" "sha512-JvpYKUmzQhYoIFgK2MOnF3bciIZoItIIoryihy0rIA+H4Jy0FmgyKYAHCTN98P5ybGSJcIFbh6QKeJdtZd1qhA==" - "resolved" "https://registry.npmjs.org/dotenv/-/dotenv-16.0.2.tgz" - "version" "16.0.2" - -"electron-notarize@^1.2.1": - "integrity" "sha512-u/ECWhIrhkSQpZM4cJzVZ5TsmkaqrRo5LDC/KMbGF0sPkm53Ng59+M0zp8QVaql0obfJy9vlVT+4iOkAi2UDlA==" - "resolved" "https://registry.npmjs.org/electron-notarize/-/electron-notarize-1.2.1.tgz" - "version" "1.2.1" - dependencies: - "debug" "^4.1.1" - "fs-extra" "^9.0.1" - -"fs-extra@^9.0.1": - "integrity" "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==" - "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" - "version" "9.1.0" - dependencies: - "at-least-node" "^1.0.0" - "graceful-fs" "^4.2.0" - "jsonfile" "^6.0.1" - "universalify" "^2.0.0" - -"graceful-fs@^4.1.6", "graceful-fs@^4.2.0": - "integrity" "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - "resolved" "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz" - "version" "4.2.10" - -"jsonfile@^6.0.1": - "integrity" "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==" - "resolved" "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" - "version" "6.1.0" - dependencies: - "universalify" "^2.0.0" - optionalDependencies: - "graceful-fs" "^4.1.6" - -"ms@2.1.2": - "integrity" "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" - "version" "2.1.2" - -"universalify@^2.0.0": - "integrity" "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" - "resolved" "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz" - "version" "2.0.0" diff --git a/apps/electron/src/__tests__/App.test.tsx b/apps/electron/src/__tests__/App.test.tsx new file mode 100644 index 000000000..6a1de2a63 --- /dev/null +++ b/apps/electron/src/__tests__/App.test.tsx @@ -0,0 +1,9 @@ +import '@testing-library/jest-dom'; +import { render } from '@testing-library/react'; +import App from '../renderer/App'; + +describe('App', () => { + it('should render', () => { + expect(render()).toBeTruthy(); + }); +}); diff --git a/apps/electron/src/main/main.ts b/apps/electron/src/main/main.ts new file mode 100644 index 000000000..05b44eb4f --- /dev/null +++ b/apps/electron/src/main/main.ts @@ -0,0 +1,137 @@ +/* eslint global-require: off, no-console: off, promise/always-return: off */ + +/** + * This module executes inside of electron's main process. You can start + * electron renderer process from here and communicate with the other processes + * through IPC. + * + * When running `npm run build` or `npm run build:main`, this file is compiled to + * `./src/main.js` using webpack. This gives us some performance wins. + */ +import path from 'path'; +import { app, BrowserWindow, shell, ipcMain } from 'electron'; +import { autoUpdater } from 'electron-updater'; +import log from 'electron-log'; +import MenuBuilder from './menu'; +import { resolveHtmlPath } from './util'; + +class AppUpdater { + constructor() { + log.transports.file.level = 'info'; + autoUpdater.logger = log; + autoUpdater.checkForUpdatesAndNotify(); + } +} + +let mainWindow: BrowserWindow | null = null; + +ipcMain.on('ipc-example', async (event, arg) => { + const msgTemplate = (pingPong: string) => `IPC test: ${pingPong}`; + console.log(msgTemplate(arg)); + event.reply('ipc-example', msgTemplate('pong')); +}); + +if (process.env.NODE_ENV === 'production') { + const sourceMapSupport = require('source-map-support'); + sourceMapSupport.install(); +} + +const isDebug = + process.env.NODE_ENV === 'development' || process.env.DEBUG_PROD === 'true'; + +if (isDebug) { + require('electron-debug')(); +} + +const installExtensions = async () => { + const installer = require('electron-devtools-installer'); + const forceDownload = !!process.env.UPGRADE_EXTENSIONS; + const extensions = ['REACT_DEVELOPER_TOOLS']; + + return installer + .default( + extensions.map((name) => installer[name]), + forceDownload, + ) + .catch(console.log); +}; + +const createWindow = async () => { + if (isDebug) { + await installExtensions(); + } + + const RESOURCES_PATH = app.isPackaged + ? path.join(process.resourcesPath, 'assets') + : path.join(__dirname, '../../assets'); + + const getAssetPath = (...paths: string[]): string => { + return path.join(RESOURCES_PATH, ...paths); + }; + + mainWindow = new BrowserWindow({ + show: false, + width: 1024, + height: 728, + icon: getAssetPath('icon.png'), + webPreferences: { + preload: app.isPackaged + ? path.join(__dirname, 'preload.js') + : path.join(__dirname, '../../.erb/dll/preload.js'), + }, + }); + + mainWindow.loadURL(resolveHtmlPath('index.html')); + + mainWindow.on('ready-to-show', () => { + if (!mainWindow) { + throw new Error('"mainWindow" is not defined'); + } + if (process.env.START_MINIMIZED) { + mainWindow.minimize(); + } else { + mainWindow.show(); + } + }); + + mainWindow.on('closed', () => { + mainWindow = null; + }); + + const menuBuilder = new MenuBuilder(mainWindow); + menuBuilder.buildMenu(); + + // Open urls in the user's browser + mainWindow.webContents.setWindowOpenHandler((edata) => { + shell.openExternal(edata.url); + return { action: 'deny' }; + }); + + // Remove this if your app does not use auto updates + // eslint-disable-next-line + new AppUpdater(); +}; + +/** + * Add event listeners... + */ + +app.on('window-all-closed', () => { + // Respect the OSX convention of having the application in memory even + // after all windows have been closed + if (process.platform !== 'darwin') { + app.quit(); + } +}); + +app + .whenReady() + .then(() => { + createWindow(); + app.on('activate', () => { + // On macOS it's common to re-create a window in the app when the + // dock icon is clicked and there are no other windows open. + if (mainWindow === null) createWindow(); + }); + }) + .catch(console.log); diff --git a/apps/electron/src/main/menu.ts b/apps/electron/src/main/menu.ts new file mode 100644 index 000000000..ba0fb7709 --- /dev/null +++ b/apps/electron/src/main/menu.ts @@ -0,0 +1,290 @@ +import { + app, + Menu, + shell, + BrowserWindow, + MenuItemConstructorOptions, +} from 'electron'; + +interface DarwinMenuItemConstructorOptions extends MenuItemConstructorOptions { + selector?: string; + submenu?: DarwinMenuItemConstructorOptions[] | Menu; +} + +export default class MenuBuilder { + mainWindow: BrowserWindow; + + constructor(mainWindow: BrowserWindow) { + this.mainWindow = mainWindow; + } + + buildMenu(): Menu { + if ( + process.env.NODE_ENV === 'development' || + process.env.DEBUG_PROD === 'true' + ) { + this.setupDevelopmentEnvironment(); + } + + const template = + process.platform === 'darwin' + ? this.buildDarwinTemplate() + : this.buildDefaultTemplate(); + + const menu = Menu.buildFromTemplate(template); + Menu.setApplicationMenu(menu); + + return menu; + } + + setupDevelopmentEnvironment(): void { + this.mainWindow.webContents.on('context-menu', (_, props) => { + const { x, y } = props; + + Menu.buildFromTemplate([ + { + label: 'Inspect element', + click: () => { + this.mainWindow.webContents.inspectElement(x, y); + }, + }, + ]).popup({ window: this.mainWindow }); + }); + } + + buildDarwinTemplate(): MenuItemConstructorOptions[] { + const subMenuAbout: DarwinMenuItemConstructorOptions = { + label: 'Electron', + submenu: [ + { + label: 'About ElectronReact', + selector: 'orderFrontStandardAboutPanel:', + }, + { type: 'separator' }, + { label: 'Services', submenu: [] }, + { type: 'separator' }, + { + label: 'Hide ElectronReact', + accelerator: 'Command+H', + selector: 'hide:', + }, + { + label: 'Hide Others', + accelerator: 'Command+Shift+H', + selector: 'hideOtherApplications:', + }, + { label: 'Show All', selector: 'unhideAllApplications:' }, + { type: 'separator' }, + { + label: 'Quit', + accelerator: 'Command+Q', + click: () => { + app.quit(); + }, + }, + ], + }; + const subMenuEdit: DarwinMenuItemConstructorOptions = { + label: 'Edit', + submenu: [ + { label: 'Undo', accelerator: 'Command+Z', selector: 'undo:' }, + { label: 'Redo', accelerator: 'Shift+Command+Z', selector: 'redo:' }, + { type: 'separator' }, + { label: 'Cut', accelerator: 'Command+X', selector: 'cut:' }, + { label: 'Copy', accelerator: 'Command+C', selector: 'copy:' }, + { label: 'Paste', accelerator: 'Command+V', selector: 'paste:' }, + { + label: 'Select All', + accelerator: 'Command+A', + selector: 'selectAll:', + }, + ], + }; + const subMenuViewDev: MenuItemConstructorOptions = { + label: 'View', + submenu: [ + { + label: 'Reload', + accelerator: 'Command+R', + click: () => { + this.mainWindow.webContents.reload(); + }, + }, + { + label: 'Toggle Full Screen', + accelerator: 'Ctrl+Command+F', + click: () => { + this.mainWindow.setFullScreen(!this.mainWindow.isFullScreen()); + }, + }, + { + label: 'Toggle Developer Tools', + accelerator: 'Alt+Command+I', + click: () => { + this.mainWindow.webContents.toggleDevTools(); + }, + }, + ], + }; + const subMenuViewProd: MenuItemConstructorOptions = { + label: 'View', + submenu: [ + { + label: 'Toggle Full Screen', + accelerator: 'Ctrl+Command+F', + click: () => { + this.mainWindow.setFullScreen(!this.mainWindow.isFullScreen()); + }, + }, + ], + }; + const subMenuWindow: DarwinMenuItemConstructorOptions = { + label: 'Window', + submenu: [ + { + label: 'Minimize', + accelerator: 'Command+M', + selector: 'performMiniaturize:', + }, + { label: 'Close', accelerator: 'Command+W', selector: 'performClose:' }, + { type: 'separator' }, + { label: 'Bring All to Front', selector: 'arrangeInFront:' }, + ], + }; + const subMenuHelp: MenuItemConstructorOptions = { + label: 'Help', + submenu: [ + { + label: 'Learn More', + click() { + shell.openExternal('https://electronjs.org'); + }, + }, + { + label: 'Documentation', + click() { + shell.openExternal( + 'https://github.com/electron/electron/tree/main/docs#readme', + ); + }, + }, + { + label: 'Community Discussions', + click() { + shell.openExternal('https://www.electronjs.org/community'); + }, + }, + { + label: 'Search Issues', + click() { + shell.openExternal('https://github.com/electron/electron/issues'); + }, + }, + ], + }; + + const subMenuView = + process.env.NODE_ENV === 'development' || + process.env.DEBUG_PROD === 'true' + ? subMenuViewDev + : subMenuViewProd; + + return [subMenuAbout, subMenuEdit, subMenuView, subMenuWindow, subMenuHelp]; + } + + buildDefaultTemplate() { + const templateDefault = [ + { + label: '&File', + submenu: [ + { + label: '&Open', + accelerator: 'Ctrl+O', + }, + { + label: '&Close', + accelerator: 'Ctrl+W', + click: () => { + this.mainWindow.close(); + }, + }, + ], + }, + { + label: '&View', + submenu: + process.env.NODE_ENV === 'development' || + process.env.DEBUG_PROD === 'true' + ? [ + { + label: '&Reload', + accelerator: 'Ctrl+R', + click: () => { + this.mainWindow.webContents.reload(); + }, + }, + { + label: 'Toggle &Full Screen', + accelerator: 'F11', + click: () => { + this.mainWindow.setFullScreen( + !this.mainWindow.isFullScreen(), + ); + }, + }, + { + label: 'Toggle &Developer Tools', + accelerator: 'Alt+Ctrl+I', + click: () => { + this.mainWindow.webContents.toggleDevTools(); + }, + }, + ] + : [ + { + label: 'Toggle &Full Screen', + accelerator: 'F11', + click: () => { + this.mainWindow.setFullScreen( + !this.mainWindow.isFullScreen(), + ); + }, + }, + ], + }, + { + label: 'Help', + submenu: [ + { + label: 'Learn More', + click() { + shell.openExternal('https://electronjs.org'); + }, + }, + { + label: 'Documentation', + click() { + shell.openExternal( + 'https://github.com/electron/electron/tree/main/docs#readme', + ); + }, + }, + { + label: 'Community Discussions', + click() { + shell.openExternal('https://www.electronjs.org/community'); + }, + }, + { + label: 'Search Issues', + click() { + shell.openExternal('https://github.com/electron/electron/issues'); + }, + }, + ], + }, + ]; + + return templateDefault; + } +} diff --git a/apps/electron/src/main/preload.ts b/apps/electron/src/main/preload.ts new file mode 100644 index 000000000..9133a7922 --- /dev/null +++ b/apps/electron/src/main/preload.ts @@ -0,0 +1,29 @@ +// Disable no-unused-vars, broken for spread args +/* eslint no-unused-vars: off */ +import { contextBridge, ipcRenderer, IpcRendererEvent } from 'electron'; + +export type Channels = 'ipc-example'; + +const electronHandler = { + ipcRenderer: { + sendMessage(channel: Channels, ...args: unknown[]) { + ipcRenderer.send(channel, ...args); + }, + on(channel: Channels, func: (...args: unknown[]) => void) { + const subscription = (_event: IpcRendererEvent, ...args: unknown[]) => + func(...args); + ipcRenderer.on(channel, subscription); + + return () => { + ipcRenderer.removeListener(channel, subscription); + }; + }, + once(channel: Channels, func: (...args: unknown[]) => void) { + ipcRenderer.once(channel, (_event, ...args) => func(...args)); + }, + }, +}; + +contextBridge.exposeInMainWorld('electron', electronHandler); + +export type ElectronHandler = typeof electronHandler; diff --git a/apps/electron/src/main/util.ts b/apps/electron/src/main/util.ts new file mode 100644 index 000000000..7775eda37 --- /dev/null +++ b/apps/electron/src/main/util.ts @@ -0,0 +1,13 @@ +/* eslint import/prefer-default-export: off */ +import { URL } from 'url'; +import path from 'path'; + +export function resolveHtmlPath(htmlFileName: string) { + if (process.env.NODE_ENV === 'development') { + const port = process.env.PORT || 1212; + const url = new URL(`http://localhost:${port}`); + url.pathname = htmlFileName; + return url.href; + } + return `file://${path.resolve(__dirname, '../renderer/', htmlFileName)}`; +} diff --git a/apps/electron/src/renderer/App.css b/apps/electron/src/renderer/App.css new file mode 100644 index 000000000..616d9a48a --- /dev/null +++ b/apps/electron/src/renderer/App.css @@ -0,0 +1,62 @@ +/* + * @NOTE: Prepend a `~` to css file paths that are in your node_modules + * See https://github.com/webpack-contrib/sass-loader#imports + */ +body { + position: relative; + color: white; + height: 100vh; + background: linear-gradient( + 200.96deg, + #fedc2a -29.09%, + #dd5789 51.77%, + #7a2c9e 129.35% + ); + font-family: sans-serif; + overflow-y: hidden; + display: flex; + justify-content: center; + align-items: center; +} + +button { + background-color: white; + padding: 10px 20px; + border-radius: 10px; + border: none; + appearance: none; + font-size: 1.3rem; + box-shadow: 0px 8px 28px -6px rgba(24, 39, 75, 0.12), + 0px 18px 88px -4px rgba(24, 39, 75, 0.14); + transition: all ease-in 0.1s; + cursor: pointer; + opacity: 0.9; +} + +button:hover { + transform: scale(1.05); + opacity: 1; +} + +li { + list-style: none; +} + +a { + text-decoration: none; + height: fit-content; + width: fit-content; + margin: 10px; +} + +a:hover { + opacity: 1; + text-decoration: none; +} + +.Hello { + display: flex; + justify-content: center; + align-items: center; + margin: 20px 0; +} diff --git a/apps/electron/src/renderer/App.tsx b/apps/electron/src/renderer/App.tsx new file mode 100644 index 000000000..e7b8ee100 --- /dev/null +++ b/apps/electron/src/renderer/App.tsx @@ -0,0 +1,39 @@ +import icon from '../../assets/icon.svg'; +import './App.css'; + +export default function App() { + return ( +

+ ); +} diff --git a/apps/electron/src/renderer/index.ejs b/apps/electron/src/renderer/index.ejs new file mode 100644 index 000000000..167cf37ef --- /dev/null +++ b/apps/electron/src/renderer/index.ejs @@ -0,0 +1,14 @@ + + + + + + Hello Electron React! + + +
+ + diff --git a/apps/electron/src/renderer/index.tsx b/apps/electron/src/renderer/index.tsx new file mode 100644 index 000000000..064a05784 --- /dev/null +++ b/apps/electron/src/renderer/index.tsx @@ -0,0 +1,13 @@ +import { createRoot } from 'react-dom/client'; +import App from './App'; + +const container = document.getElementById('root') as HTMLElement; +const root = createRoot(container); +root.render(); + +// calling IPC exposed from preload script +window.electron.ipcRenderer.once('ipc-example', (arg) => { + // eslint-disable-next-line no-console + console.log(arg); +}); +window.electron.ipcRenderer.sendMessage('ipc-example', ['ping']); diff --git a/apps/electron/src/renderer/preload.d.ts b/apps/electron/src/renderer/preload.d.ts new file mode 100644 index 000000000..53cc2d7b1 --- /dev/null +++ b/apps/electron/src/renderer/preload.d.ts @@ -0,0 +1,10 @@ +import { ElectronHandler } from '../main/preload'; + +declare global { + // eslint-disable-next-line no-unused-vars + interface Window { + electron: ElectronHandler; + } +} + +export {}; diff --git a/apps/electron/tsconfig.json b/apps/electron/tsconfig.json new file mode 100644 index 000000000..ccb6ee9d7 --- /dev/null +++ b/apps/electron/tsconfig.json @@ -0,0 +1,18 @@ +{ + "compilerOptions": { + "incremental": true, + "target": "es2022", + "module": "commonjs", + "lib": ["dom", "es2022"], + "jsx": "react-jsx", + "strict": true, + "sourceMap": true, + "moduleResolution": "node", + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "resolveJsonModule": true, + "allowJs": true, + "outDir": ".erb/dll" + }, + "exclude": ["test", "release/build", "release/app/dist", ".erb/dll"] +} diff --git a/apps/electron/yarn.lock b/apps/electron/yarn.lock deleted file mode 100644 index 1eb1a9b83..000000000 --- a/apps/electron/yarn.lock +++ /dev/null @@ -1,16643 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"7zip-bin@~5.1.1": - version "5.1.1" - resolved "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.1.1.tgz" - integrity sha512-sAP4LldeWNz0lNzmTird3uWfFDWWTeg6V/MsmyyLR9X1idwKBWIgt/ZvinqQldJm3LecKEs1emkbquO6PCiLVQ== - -"@aashutoshrathi/word-wrap@^1.2.3": - version "1.2.6" - resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" - integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== - -"@adobe/css-tools@^4.0.1": - version "4.0.1" - resolved "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.0.1.tgz" - integrity sha512-+u76oB43nOHrF4DDWRLWDCtci7f3QJoEBigemIdIeTi1ODqjx6Tad9NCVnPRwewWlKkVab5PlK8DCtPTyX7S8g== - -"@alloc/quick-lru@^5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30" - integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== - -"@ampproject/remapping@^2.1.0": - 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" - -"@ampproject/remapping@^2.2.0": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" - integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== - dependencies: - "@jridgewell/gen-mapping" "^0.3.0" - "@jridgewell/trace-mapping" "^0.3.9" - -"@angular-devkit/core@13.3.5": - version "13.3.5" - resolved "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.5.tgz" - integrity sha512-w7vzK4VoYP9rLgxJ2SwEfrkpKybdD+QgQZlsDBzT0C6Ebp7b4gkNcNVFo8EiZvfDl6Yplw2IAP7g7fs3STn0hQ== - 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" - -"@angular-devkit/core@13.3.6": - version "13.3.6" - resolved "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.6.tgz" - integrity sha512-ZmD586B+RnM2CG5+jbXh2NVfIydTc/yKSjppYDDOv4I530YBm6vpfZMwClpiNk6XLbMv7KqX4Tlr4wfxlPYYbA== - 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" - -"@angular-devkit/schematics-cli@13.3.6": - version "13.3.6" - resolved "https://registry.npmjs.org/@angular-devkit/schematics-cli/-/schematics-cli-13.3.6.tgz" - integrity sha512-5tTuu9gbXM0bMk0sin4phmWA3U1Qz53zT/rpEfzQ/+c/s8CoqZ5N1qOnYtemRct3Jxsz1kn4TBpHeriR4r5hHg== - dependencies: - "@angular-devkit/core" "13.3.6" - "@angular-devkit/schematics" "13.3.6" - ansi-colors "4.1.1" - inquirer "8.2.0" - minimist "1.2.6" - symbol-observable "4.0.0" - -"@angular-devkit/schematics@13.3.5": - version "13.3.5" - resolved "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.3.5.tgz" - integrity sha512-0N/kL/Vfx0yVAEwa3HYxNx9wYb+G9r1JrLjJQQzDp+z9LtcojNf7j3oey6NXrDUs1WjVZOa/AIdRl3/DuaoG5w== - dependencies: - "@angular-devkit/core" "13.3.5" - jsonc-parser "3.0.0" - magic-string "0.25.7" - ora "5.4.1" - rxjs "6.6.7" - -"@angular-devkit/schematics@13.3.6": - version "13.3.6" - resolved "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.3.6.tgz" - integrity sha512-yLh5xc92C/FiaAp27coPiKWpSUmwoXF7vMxbJYJTyOXlt0mUITAEAwtrZQNr4yAxW/yvgTdyg7PhXaveQNTUuQ== - dependencies: - "@angular-devkit/core" "13.3.6" - jsonc-parser "3.0.0" - magic-string "0.25.7" - ora "5.4.1" - rxjs "6.6.7" - -"@apideck/better-ajv-errors@^0.3.1": - version "0.3.6" - resolved "https://registry.yarnpkg.com/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz#957d4c28e886a64a8141f7522783be65733ff097" - integrity sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA== - dependencies: - json-schema "^0.4.0" - jsonpointer "^5.0.0" - leven "^3.1.0" - -"@babel/code-frame@7.12.11": - version "7.12.11" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz" - integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== - dependencies: - "@babel/highlight" "^7.10.4" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz" - integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== - dependencies: - "@babel/highlight" "^7.18.6" - -"@babel/code-frame@^7.16.0", "@babel/code-frame@^7.22.10", "@babel/code-frame@^7.22.5", "@babel/code-frame@^7.8.3": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.10.tgz#1c20e612b768fefa75f6e90d6ecb86329247f0a3" - integrity sha512-/KKIMG4UEL35WmI9OlvMhurwtytjvXoFcGNrOvyG9zIzA8YmPjVtIZUf7b05+TPO7G7/GEmLHDaoCgACHl9hhA== - dependencies: - "@babel/highlight" "^7.22.10" - chalk "^2.4.2" - -"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.18.8", "@babel/compat-data@^7.19.1": - version "7.19.1" - resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.1.tgz" - integrity sha512-72a9ghR0gnESIa7jBN53U32FOVCEoztyIlKaNoU05zRhEecduGK9L9c3ww7Mp06JiR+0ls0GBPFJQwwtjn9ksg== - -"@babel/compat-data@^7.22.5", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.9.tgz#71cdb00a1ce3a329ce4cbec3a44f9fef35669730" - integrity sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ== - -"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.16.0", "@babel/core@^7.7.2", "@babel/core@^7.8.0": - version "7.19.1" - resolved "https://registry.npmjs.org/@babel/core/-/core-7.19.1.tgz" - integrity sha512-1H8VgqXme4UXCRv7/Wa1bq7RVymKOzC7znjyFM8KiEzwFqcKUKYNoQef4GhdklgNvoBXyW4gYhuBNCM5o1zImw== - dependencies: - "@ampproject/remapping" "^2.1.0" - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.19.0" - "@babel/helper-compilation-targets" "^7.19.1" - "@babel/helper-module-transforms" "^7.19.0" - "@babel/helpers" "^7.19.0" - "@babel/parser" "^7.19.1" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.19.1" - "@babel/types" "^7.19.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" - -"@babel/core@^7.11.1": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.22.10.tgz#aad442c7bcd1582252cb4576747ace35bc122f35" - integrity sha512-fTmqbbUBAwCcre6zPzNngvsI0aNrPZe77AeqvDxWM9Nm+04RrJ3CAmGHA9f7lJQY6ZMhRztNemy4uslDxTX4Qw== - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.22.10" - "@babel/generator" "^7.22.10" - "@babel/helper-compilation-targets" "^7.22.10" - "@babel/helper-module-transforms" "^7.22.9" - "@babel/helpers" "^7.22.10" - "@babel/parser" "^7.22.10" - "@babel/template" "^7.22.5" - "@babel/traverse" "^7.22.10" - "@babel/types" "^7.22.10" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.2" - semver "^6.3.1" - -"@babel/eslint-parser@^7.16.3": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.22.10.tgz#bfdf3d1b32ad573fe7c1c3447e0b485e3a41fd09" - integrity sha512-0J8DNPRXQRLeR9rPaUMM3fA+RbixjnVLe/MRMYCkp3hzgsSuxCHQ8NN8xQG1wIHKJ4a1DTROTvFJdW+B5/eOsg== - dependencies: - "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" - eslint-visitor-keys "^2.1.0" - semver "^6.3.1" - -"@babel/generator@^7.19.0", "@babel/generator@^7.7.2": - version "7.19.0" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.19.0.tgz" - integrity sha512-S1ahxf1gZ2dpoiFgA+ohK9DIpz50bJ0CWs7Zlzb54Z4sG8qmdIrGrVqmy1sAtTVRb+9CU6U8VqT9L0Zj7hxHVg== - dependencies: - "@babel/types" "^7.19.0" - "@jridgewell/gen-mapping" "^0.3.2" - jsesc "^2.5.1" - -"@babel/generator@^7.22.10": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.22.10.tgz#c92254361f398e160645ac58831069707382b722" - integrity sha512-79KIf7YiWjjdZ81JnLujDRApWtl7BxTqWD88+FFdQEIOG8LJ0etDOM7CXuIgGJa55sGOwZVwuEsaLEm0PJ5/+A== - dependencies: - "@babel/types" "^7.22.10" - "@jridgewell/gen-mapping" "^0.3.2" - "@jridgewell/trace-mapping" "^0.3.17" - jsesc "^2.5.1" - -"@babel/helper-annotate-as-pure@^7.18.6": - 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== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-annotate-as-pure@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" - integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6": - 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== - dependencies: - "@babel/helper-explode-assignable-expression" "^7.18.6" - "@babel/types" "^7.18.9" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.5": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.10.tgz#573e735937e99ea75ea30788b57eb52fab7468c9" - integrity sha512-Av0qubwDQxC56DoUReVDeLfMEjYYSN1nZrTUrWkXd7hpU73ymRANkbuDm3yni9npkn+RXy9nNbEJZEzXr7xrfQ== - dependencies: - "@babel/types" "^7.22.10" - -"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.19.1": - version "7.19.1" - resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.1.tgz" - integrity sha512-LlLkkqhCMyz2lkQPvJNdIYU7O5YjWRgC2R4omjCTpZd8u8KMQzZvX4qce+/BluN1rcQiV7BoGUpmQ0LeHerbhg== - dependencies: - "@babel/compat-data" "^7.19.1" - "@babel/helper-validator-option" "^7.18.6" - browserslist "^4.21.3" - semver "^6.3.0" - -"@babel/helper-compilation-targets@^7.22.10", "@babel/helper-compilation-targets@^7.22.5", "@babel/helper-compilation-targets@^7.22.6": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.10.tgz#01d648bbc25dd88f513d862ee0df27b7d4e67024" - integrity sha512-JMSwHD4J7SLod0idLq5PKgI+6g/hLD/iuWBq08ZX49xE14VpVEojJ5rHWptpirV2j020MvypRLAXAO50igCJ5Q== - dependencies: - "@babel/compat-data" "^7.22.9" - "@babel/helper-validator-option" "^7.22.5" - browserslist "^4.21.9" - lru-cache "^5.1.1" - semver "^6.3.1" - -"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.18.9": - version "7.18.13" - resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.13.tgz" - integrity sha512-hDvXp+QYxSRL+23mpAlSGxHMDyIGChm0/AwTfTAAK5Ufe40nCsyNdaYCGuK91phn/fVu9kqayImRDkvNAgdrsA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.18.9" - "@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" - -"@babel/helper-create-class-features-plugin@^7.22.5": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.10.tgz#dd2612d59eac45588021ac3d6fa976d08f4e95a3" - integrity sha512-5IBb77txKYQPpOEdUdIhBx8VrZyDCQ+H82H0+5dX1TmuscP5vJKEE3cKurjtIw/vFwzbVH48VweE78kVDBrqjA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-function-name" "^7.22.5" - "@babel/helper-member-expression-to-functions" "^7.22.5" - "@babel/helper-optimise-call-expression" "^7.22.5" - "@babel/helper-replace-supers" "^7.22.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - semver "^6.3.1" - -"@babel/helper-create-regexp-features-plugin@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.18.6.tgz" - integrity sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - regexpu-core "^5.1.0" - -"@babel/helper-create-regexp-features-plugin@^7.22.5": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.9.tgz#9d8e61a8d9366fe66198f57c40565663de0825f6" - integrity sha512-+svjVa/tFwsNSG4NEy1h85+HQ5imbT92Q5/bgtS7P0GTQlP8WuFdqsiABmQouhiFGyV66oGxZFpeYHza1rNsKw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - regexpu-core "^5.3.1" - semver "^6.3.1" - -"@babel/helper-define-polyfill-provider@^0.3.2": - version "0.3.2" - resolved "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.2.tgz" - integrity sha512-r9QJJ+uDWrd+94BSPcP6/de67ygLtvVy6cK4luE6MOuDsZIdoaPBnfSpbO/+LTifjPckbKXRuI9BB/Z2/y3iTg== - 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" - -"@babel/helper-define-polyfill-provider@^0.4.2": - version "0.4.2" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz#82c825cadeeeee7aad237618ebbe8fa1710015d7" - integrity sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw== - dependencies: - "@babel/helper-compilation-targets" "^7.22.6" - "@babel/helper-plugin-utils" "^7.22.5" - debug "^4.1.1" - lodash.debounce "^4.0.8" - resolve "^1.14.2" - -"@babel/helper-environment-visitor@^7.18.9": - 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-environment-visitor@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz#f06dd41b7c1f44e1f8da6c4055b41ab3a09a7e98" - integrity sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q== - -"@babel/helper-explode-assignable-expression@^7.18.6": - 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== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-function-name@^7.18.9", "@babel/helper-function-name@^7.19.0": - 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== - dependencies: - "@babel/template" "^7.18.10" - "@babel/types" "^7.19.0" - -"@babel/helper-function-name@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz#ede300828905bb15e582c037162f99d5183af1be" - integrity sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ== - dependencies: - "@babel/template" "^7.22.5" - "@babel/types" "^7.22.5" - -"@babel/helper-hoist-variables@^7.18.6": - 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== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-hoist-variables@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" - integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-member-expression-to-functions@^7.18.9": - 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== - dependencies: - "@babel/types" "^7.18.9" - -"@babel/helper-member-expression-to-functions@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.5.tgz#0a7c56117cad3372fbf8d2fb4bf8f8d64a1e76b2" - integrity sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz#1a8f4c9f4027d23f520bd76b364d44434a72660c" - integrity sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-module-imports@^7.18.6": - 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" - -"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.18.9", "@babel/helper-module-transforms@^7.19.0": - 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" - -"@babel/helper-module-transforms@^7.22.5", "@babel/helper-module-transforms@^7.22.9": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz#92dfcb1fbbb2bc62529024f72d942a8c97142129" - integrity sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ== - dependencies: - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-module-imports" "^7.22.5" - "@babel/helper-simple-access" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/helper-validator-identifier" "^7.22.5" - -"@babel/helper-optimise-call-expression@^7.18.6": - 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== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-optimise-call-expression@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e" - integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.18.9" - resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz" - integrity sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w== - -"@babel/helper-plugin-utils@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" - integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== - -"@babel/helper-remap-async-to-generator@^7.18.6", "@babel/helper-remap-async-to-generator@^7.18.9": - 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== - 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" - -"@babel/helper-remap-async-to-generator@^7.22.5", "@babel/helper-remap-async-to-generator@^7.22.9": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.9.tgz#53a25b7484e722d7efb9c350c75c032d4628de82" - integrity sha512-8WWC4oR4Px+tr+Fp0X3RHDVfINGpF3ad1HIbrc8A77epiR6eMMc6jsgozkzT2uDiOOdoS9cLIQ+XD2XvI2WSmQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-wrap-function" "^7.22.9" - -"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.18.9": - version "7.18.9" - resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz" - integrity sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ== - 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.18.9" - "@babel/types" "^7.18.9" - -"@babel/helper-replace-supers@^7.22.5", "@babel/helper-replace-supers@^7.22.9": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz#cbdc27d6d8d18cd22c81ae4293765a5d9afd0779" - integrity sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg== - dependencies: - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-member-expression-to-functions" "^7.22.5" - "@babel/helper-optimise-call-expression" "^7.22.5" - -"@babel/helper-simple-access@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz" - integrity sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-simple-access@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" - integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-skip-transparent-expression-wrappers@^7.18.9": - 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== - dependencies: - "@babel/types" "^7.18.9" - -"@babel/helper-skip-transparent-expression-wrappers@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847" - integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-split-export-declaration@^7.18.6": - 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" - -"@babel/helper-split-export-declaration@^7.22.6": - version "7.22.6" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" - integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-string-parser@^7.18.10": - version "7.18.10" - resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz" - integrity sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw== - -"@babel/helper-string-parser@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" - integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== - -"@babel/helper-validator-identifier@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz" - integrity sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g== - -"@babel/helper-validator-identifier@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz#9544ef6a33999343c8740fa51350f30eeaaaf193" - integrity sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ== - -"@babel/helper-validator-option@^7.18.6": - 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-validator-option@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz#de52000a15a177413c8234fa3a8af4ee8102d0ac" - integrity sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw== - -"@babel/helper-wrap-function@^7.18.9": - version "7.18.11" - resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.18.11.tgz" - integrity sha512-oBUlbv+rjZLh2Ks9SKi4aL7eKaAXBWleHzU89mP0G6BMUlRxSckk9tSIkgDGydhgFxHuGSlBQZfnaD47oBEB7w== - dependencies: - "@babel/helper-function-name" "^7.18.9" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.18.11" - "@babel/types" "^7.18.10" - -"@babel/helper-wrap-function@^7.22.9": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.10.tgz#d845e043880ed0b8c18bd194a12005cb16d2f614" - integrity sha512-OnMhjWjuGYtdoO3FmsEFWvBStBAe2QOgwOLsLNDjN+aaiMD8InJk1/O3HSD8lkqTjCgg5YI34Tz15KNNA3p+nQ== - dependencies: - "@babel/helper-function-name" "^7.22.5" - "@babel/template" "^7.22.5" - "@babel/types" "^7.22.10" - -"@babel/helpers@^7.19.0": - version "7.19.0" - resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.19.0.tgz" - integrity sha512-DRBCKGwIEdqY3+rPJgG/dKfQy9+08rHIAJx8q2p+HSWP87s2HCrQmaAMMyMll2kIXKCW0cO1RdQskx15Xakftg== - dependencies: - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.19.0" - "@babel/types" "^7.19.0" - -"@babel/helpers@^7.22.10": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.22.10.tgz#ae6005c539dfbcb5cd71fb51bfc8a52ba63bc37a" - integrity sha512-a41J4NW8HyZa1I1vAndrraTlPZ/eZoga2ZgS7fEr0tZJGVU4xqdE80CEm0CcNjha5EZ8fTBYLKHF0kqDUuAwQw== - dependencies: - "@babel/template" "^7.22.5" - "@babel/traverse" "^7.22.10" - "@babel/types" "^7.22.10" - -"@babel/highlight@^7.10.4", "@babel/highlight@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz" - integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== - dependencies: - "@babel/helper-validator-identifier" "^7.18.6" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/highlight@^7.22.10": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.10.tgz#02a3f6d8c1cb4521b2fd0ab0da8f4739936137d7" - integrity sha512-78aUtVcT7MUscr0K5mIEnkwxPE0MaxkR5RxRwuHaQ+JuU5AmTPhY+do2mdzVTnIJJpyBglql2pehuBIWHug+WQ== - dependencies: - "@babel/helper-validator-identifier" "^7.22.5" - chalk "^2.4.2" - js-tokens "^4.0.0" - -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.10", "@babel/parser@^7.19.1": - version "7.19.1" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.19.1.tgz" - integrity sha512-h7RCSorm1DdTVGJf3P2Mhj3kdnkmF/EiysUkzS2TdgAYqyjFdMQJbVuXOBej2SBJaXan/lIVtT6KkGbyyq753A== - -"@babel/parser@^7.22.10", "@babel/parser@^7.22.5": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.10.tgz#e37634f9a12a1716136c44624ef54283cabd3f55" - integrity sha512-lNbdGsQb9ekfsnjFGhEiF4hfFqGgfOP3H3d27re3n+CGhNuTSUEQdfWk556sTLNTloczcdM5TYF2LhzmDQKyvQ== - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.5.tgz#87245a21cd69a73b0b81bcda98d443d6df08f05e" - integrity sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.9": - 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== - 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" - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.5.tgz#fef09f9499b1f1c930da8a0c419db42167d792ca" - integrity sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/plugin-transform-optional-chaining" "^7.22.5" - -"@babel/plugin-proposal-async-generator-functions@^7.18.10": - version "7.18.10" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.10.tgz" - integrity sha512-1mFuY2TOsR1hxbjCo4QL+qlIjV07p4H4EUYw2J/WCqsvFV6V9X9z9YhXbWndc/4fw+hYGlDT7egYxliMp5O6Ew== - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-remap-async-to-generator" "^7.18.9" - "@babel/plugin-syntax-async-generators" "^7.8.4" - -"@babel/plugin-proposal-class-properties@^7.16.0", "@babel/plugin-proposal-class-properties@^7.18.6": - 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== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-proposal-class-static-block@^7.18.6": - 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== - 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" - -"@babel/plugin-proposal-decorators@^7.16.4": - version "7.18.10" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.18.10.tgz" - integrity sha512-wdGTwWF5QtpTY/gbBtQLAiCnoxfD4qMbN87NYZle1dOZ9Os8Y6zXcKrIaOU8W+TIvFUWVGG9tUgNww3CjXRVVw== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-replace-supers" "^7.18.9" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/plugin-syntax-decorators" "^7.18.6" - -"@babel/plugin-proposal-dynamic-import@^7.18.6": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - -"@babel/plugin-proposal-export-namespace-from@^7.18.9": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - -"@babel/plugin-proposal-json-strings@^7.18.6": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-json-strings" "^7.8.3" - -"@babel/plugin-proposal-logical-assignment-operators@^7.18.9": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - -"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.0", "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - -"@babel/plugin-proposal-numeric-separator@^7.16.0", "@babel/plugin-proposal-numeric-separator@^7.18.6": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - -"@babel/plugin-proposal-object-rest-spread@^7.18.9": - version "7.18.9" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz" - integrity sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q== - dependencies: - "@babel/compat-data" "^7.18.8" - "@babel/helper-compilation-targets" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.18.8" - -"@babel/plugin-proposal-optional-catch-binding@^7.18.6": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - -"@babel/plugin-proposal-optional-chaining@^7.16.0", "@babel/plugin-proposal-optional-chaining@^7.18.9": - 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== - 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" - -"@babel/plugin-proposal-private-methods@^7.16.0", "@babel/plugin-proposal-private-methods@^7.18.6": - 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== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": - version "7.21.0-placeholder-for-preset-env.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" - integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== - -"@babel/plugin-proposal-private-property-in-object@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz" - integrity sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - -"@babel/plugin-proposal-unicode-property-regex@^7.18.6", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - 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== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-syntax-async-generators@^7.8.4": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-bigint@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz" - integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-class-static-block@^7.14.5": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-decorators@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.18.6.tgz" - integrity sha512-fqyLgjcxf/1yhyZ6A+yo1u9gJ7eleFQod2lkaUsF9DQ7sbbY3Ligym3L0+I2c0WmqNKDpoD9UTb1AKP3qRMOAQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-syntax-dynamic-import@^7.8.3": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-export-namespace-from@^7.8.3": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-flow@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz" - integrity sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-syntax-import-assertions@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz" - integrity sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-syntax-import-assertions@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz#07d252e2aa0bc6125567f742cd58619cb14dce98" - integrity sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-syntax-import-attributes@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz#ab840248d834410b829f569f5262b9e517555ecb" - integrity sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-syntax-import-meta@^7.10.4", "@babel/plugin-syntax-import-meta@^7.8.3": - version "7.10.4" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz" - integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-json-strings@^7.8.3": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-jsx@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz" - integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-object-rest-spread@^7.8.3": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.3": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-private-property-in-object@^7.14.5": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-typescript@^7.18.6", "@babel/plugin-syntax-typescript@^7.7.2": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.18.6.tgz" - integrity sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" - integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-arrow-functions@^7.18.6": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-arrow-functions@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz#e5ba566d0c58a5b2ba2a8b795450641950b71958" - integrity sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-async-generator-functions@^7.22.10": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.10.tgz#45946cd17f915b10e65c29b8ed18a0a50fc648c8" - integrity sha512-eueE8lvKVzq5wIObKK/7dvoeKJ+xc6TvRn6aysIjS6pSCeLy7S/eVi7pEQknZqyqvzaNKdDtem8nUNTBgDVR2g== - dependencies: - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-remap-async-to-generator" "^7.22.9" - "@babel/plugin-syntax-async-generators" "^7.8.4" - -"@babel/plugin-transform-async-to-generator@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz" - integrity sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag== - dependencies: - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-remap-async-to-generator" "^7.18.6" - -"@babel/plugin-transform-async-to-generator@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz#c7a85f44e46f8952f6d27fe57c2ed3cc084c3775" - integrity sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ== - dependencies: - "@babel/helper-module-imports" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-remap-async-to-generator" "^7.22.5" - -"@babel/plugin-transform-block-scoped-functions@^7.18.6": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-block-scoped-functions@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz#27978075bfaeb9fa586d3cb63a3d30c1de580024" - integrity sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-block-scoping@^7.18.9": - version "7.18.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz" - integrity sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-block-scoping@^7.22.10": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.10.tgz#88a1dccc3383899eb5e660534a76a22ecee64faa" - integrity sha512-1+kVpGAOOI1Albt6Vse7c8pHzcZQdQKW+wJH+g8mCaszOdDVwRXa/slHPqIw+oJAJANTKDMuM2cBdV0Dg618Vg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-class-properties@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz#97a56e31ad8c9dc06a0b3710ce7803d5a48cca77" - integrity sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-class-static-block@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.5.tgz#3e40c46f048403472d6f4183116d5e46b1bff5ba" - integrity sha512-SPToJ5eYZLxlnp1UzdARpOGeC2GbHvr9d/UV0EukuVx8atktg194oe+C5BqQ8jRTkgLRVOPYeXRSBg1IlMoVRA== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - -"@babel/plugin-transform-classes@^7.18.9": - version "7.18.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.9.tgz" - integrity sha512-EkRQxsxoytpTlKJmSPYrsOMjCILacAjtSVkd4gChEe2kXjFCun3yohhW5I7plXJhCemM0gKsaGMcO8tinvCA5g== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.18.9" - "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-replace-supers" "^7.18.9" - "@babel/helper-split-export-declaration" "^7.18.6" - globals "^11.1.0" - -"@babel/plugin-transform-classes@^7.22.6": - version "7.22.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.6.tgz#e04d7d804ed5b8501311293d1a0e6d43e94c3363" - integrity sha512-58EgM6nuPNG6Py4Z3zSuu0xWu2VfodiMi72Jt5Kj2FECmaYk1RrTXA45z6KBFsu9tRgwQDwIiY4FXTt+YsSFAQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-compilation-targets" "^7.22.6" - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-function-name" "^7.22.5" - "@babel/helper-optimise-call-expression" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-replace-supers" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - globals "^11.1.0" - -"@babel/plugin-transform-computed-properties@^7.18.9": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-computed-properties@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz#cd1e994bf9f316bd1c2dafcd02063ec261bb3869" - integrity sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/template" "^7.22.5" - -"@babel/plugin-transform-destructuring@^7.18.9": - version "7.18.13" - resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.13.tgz" - integrity sha512-TodpQ29XekIsex2A+YJPj5ax2plkGa8YYY6mFjCohk/IG9IY42Rtuj1FuDeemfg2ipxIFLzPeA83SIBnlhSIow== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-destructuring@^7.22.10": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.10.tgz#38e2273814a58c810b6c34ea293be4973c4eb5e2" - integrity sha512-dPJrL0VOyxqLM9sritNbMSGx/teueHF/htMKrPT7DNxccXxRDPYqlgPFFdr8u+F+qUZOkZoXue/6rL5O5GduEw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.4.4": - 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== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-dotall-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz#dbb4f0e45766eb544e193fb00e65a1dd3b2a4165" - integrity sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-duplicate-keys@^7.18.9": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-duplicate-keys@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz#b6e6428d9416f5f0bba19c70d1e6e7e0b88ab285" - integrity sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-dynamic-import@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.5.tgz#d6908a8916a810468c4edff73b5b75bda6ad393e" - integrity sha512-0MC3ppTB1AMxd8fXjSrbPa7LT9hrImt+/fcj+Pg5YMD7UQyWp/02+JWpdnCymmsXwIx5Z+sYn1bwCn4ZJNvhqQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - -"@babel/plugin-transform-exponentiation-operator@^7.18.6": - 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== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-exponentiation-operator@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz#402432ad544a1f9a480da865fda26be653e48f6a" - integrity sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-export-namespace-from@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.5.tgz#57c41cb1d0613d22f548fddd8b288eedb9973a5b" - integrity sha512-X4hhm7FRnPgd4nDA4b/5V280xCx6oL7Oob5+9qVS5C13Zq4bh1qq7LU0GgRU6b5dBWBvhGaXYVB4AcN6+ol6vg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - -"@babel/plugin-transform-flow-strip-types@^7.16.0": - version "7.18.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.18.9.tgz" - integrity sha512-+G6rp2zRuOAInY5wcggsx4+QVao1qPM0osC9fTUVlAV3zOrzTCnrMAFVnR6+a3T8wz1wFIH7KhYMcMB3u1n80A== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-syntax-flow" "^7.18.6" - -"@babel/plugin-transform-for-of@^7.18.8": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-for-of@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.5.tgz#ab1b8a200a8f990137aff9a084f8de4099ab173f" - integrity sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-function-name@^7.18.9": - 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== - dependencies: - "@babel/helper-compilation-targets" "^7.18.9" - "@babel/helper-function-name" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-function-name@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz#935189af68b01898e0d6d99658db6b164205c143" - integrity sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg== - dependencies: - "@babel/helper-compilation-targets" "^7.22.5" - "@babel/helper-function-name" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-json-strings@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.5.tgz#14b64352fdf7e1f737eed68de1a1468bd2a77ec0" - integrity sha512-DuCRB7fu8MyTLbEQd1ew3R85nx/88yMoqo2uPSjevMj3yoN7CDM8jkgrY0wmVxfJZyJ/B9fE1iq7EQppWQmR5A== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-json-strings" "^7.8.3" - -"@babel/plugin-transform-literals@^7.18.9": - version "7.18.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz" - integrity sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-literals@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz#e9341f4b5a167952576e23db8d435849b1dd7920" - integrity sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-logical-assignment-operators@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.5.tgz#66ae5f068fd5a9a5dc570df16f56c2a8462a9d6c" - integrity sha512-MQQOUW1KL8X0cDWfbwYP+TbVbZm16QmQXJQ+vndPtH/BoO0lOKpVoEDMI7+PskYxH+IiE0tS8xZye0qr1lGzSA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - -"@babel/plugin-transform-member-expression-literals@^7.18.6": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-member-expression-literals@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz#4fcc9050eded981a468347dd374539ed3e058def" - integrity sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-modules-amd@^7.18.6": - 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== - dependencies: - "@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-amd@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz#4e045f55dcf98afd00f85691a68fc0780704f526" - integrity sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ== - dependencies: - "@babel/helper-module-transforms" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-modules-commonjs@^7.18.6": - 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== - 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" - -"@babel/plugin-transform-modules-commonjs@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.5.tgz#7d9875908d19b8c0536085af7b053fd5bd651bfa" - integrity sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA== - dependencies: - "@babel/helper-module-transforms" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-simple-access" "^7.22.5" - -"@babel/plugin-transform-modules-systemjs@^7.18.9": - version "7.18.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.9.tgz" - integrity sha512-zY/VSIbbqtoRoJKo2cDTewL364jSlZGvn0LKOf9ntbfxOvjfmyrdtEEOAdswOswhZEb8UH3jDkCKHd1sPgsS0A== - dependencies: - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-module-transforms" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-validator-identifier" "^7.18.6" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-systemjs@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.5.tgz#18c31410b5e579a0092638f95c896c2a98a5d496" - integrity sha512-emtEpoaTMsOs6Tzz+nbmcePl6AKVtS1yC4YNAeMun9U8YCsgadPNxnOPQ8GhHFB2qdx+LZu9LgoC0Lthuu05DQ== - dependencies: - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-module-transforms" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-identifier" "^7.22.5" - -"@babel/plugin-transform-modules-umd@^7.18.6": - 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== - dependencies: - "@babel/helper-module-transforms" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-modules-umd@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz#4694ae40a87b1745e3775b6a7fe96400315d4f98" - integrity sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ== - dependencies: - "@babel/helper-module-transforms" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.18.6.tgz" - integrity sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz#67fe18ee8ce02d57c855185e27e3dc959b2e991f" - integrity sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-new-target@^7.18.6": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-new-target@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz#1b248acea54ce44ea06dfd37247ba089fcf9758d" - integrity sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-nullish-coalescing-operator@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.5.tgz#f8872c65776e0b552e0849d7596cddd416c3e381" - integrity sha512-6CF8g6z1dNYZ/VXok5uYkkBBICHZPiGEl7oDnAx2Mt1hlHVHOSIKWJaXHjQJA5VB43KZnXZDIexMchY4y2PGdA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - -"@babel/plugin-transform-numeric-separator@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.5.tgz#57226a2ed9e512b9b446517ab6fa2d17abb83f58" - integrity sha512-NbslED1/6M+sXiwwtcAB/nieypGw02Ejf4KtDeMkCEpP6gWFMX1wI9WKYua+4oBneCCEmulOkRpwywypVZzs/g== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - -"@babel/plugin-transform-object-rest-spread@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.5.tgz#9686dc3447df4753b0b2a2fae7e8bc33cdc1f2e1" - integrity sha512-Kk3lyDmEslH9DnvCDA1s1kkd3YWQITiBOHngOtDL9Pt6BZjzqb6hiOlb8VfjiiQJ2unmegBqZu0rx5RxJb5vmQ== - dependencies: - "@babel/compat-data" "^7.22.5" - "@babel/helper-compilation-targets" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.22.5" - -"@babel/plugin-transform-object-super@^7.18.6": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-replace-supers" "^7.18.6" - -"@babel/plugin-transform-object-super@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz#794a8d2fcb5d0835af722173c1a9d704f44e218c" - integrity sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-replace-supers" "^7.22.5" - -"@babel/plugin-transform-optional-catch-binding@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.5.tgz#842080be3076703be0eaf32ead6ac8174edee333" - integrity sha512-pH8orJahy+hzZje5b8e2QIlBWQvGpelS76C63Z+jhZKsmzfNaPQ+LaW6dcJ9bxTpo1mtXbgHwy765Ro3jftmUg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - -"@babel/plugin-transform-optional-chaining@^7.22.10", "@babel/plugin-transform-optional-chaining@^7.22.5": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.10.tgz#076d28a7e074392e840d4ae587d83445bac0372a" - integrity sha512-MMkQqZAZ+MGj+jGTG3OTuhKeBpNcO+0oCEbrGNEaOmiEn+1MzRyQlYsruGiU8RTK3zV6XwrVJTmwiDOyYK6J9g== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -"@babel/plugin-transform-parameters@^7.18.8": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-parameters@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.5.tgz#c3542dd3c39b42c8069936e48717a8d179d63a18" - integrity sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-private-methods@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz#21c8af791f76674420a147ae62e9935d790f8722" - integrity sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-private-property-in-object@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.5.tgz#07a77f28cbb251546a43d175a1dda4cf3ef83e32" - integrity sha512-/9xnaTTJcVoBtSSmrVyhtSvO3kbqS2ODoh2juEU72c3aYonNF0OMGiaz2gjukyKM2wBBYJP38S4JiE0Wfb5VMQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-create-class-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - -"@babel/plugin-transform-property-literals@^7.18.6": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-property-literals@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz#b5ddabd73a4f7f26cd0e20f5db48290b88732766" - integrity sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-react-constant-elements@^7.12.1": - version "7.18.12" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.18.12.tgz" - integrity sha512-Q99U9/ttiu+LMnRU8psd23HhvwXmKWDQIpocm0JKaICcZHnw+mdQbHm6xnSy7dOl8I5PELakYtNBubNQlBXbZw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-react-display-name@^7.16.0", "@babel/plugin-transform-react-display-name@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz" - integrity sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-react-jsx-development@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz" - integrity sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA== - dependencies: - "@babel/plugin-transform-react-jsx" "^7.18.6" - -"@babel/plugin-transform-react-jsx@^7.18.6": - version "7.18.10" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.18.10.tgz" - integrity sha512-gCy7Iikrpu3IZjYZolFE4M1Sm+nrh1/6za2Ewj77Z+XirT4TsbJcvOFOyF+fRPwU6AKKK136CZxx6L8AbSFG6A== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-syntax-jsx" "^7.18.6" - "@babel/types" "^7.18.10" - -"@babel/plugin-transform-react-pure-annotations@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz" - integrity sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-regenerator@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz" - integrity sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - regenerator-transform "^0.15.0" - -"@babel/plugin-transform-regenerator@^7.22.10": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz#8ceef3bd7375c4db7652878b0241b2be5d0c3cca" - integrity sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - regenerator-transform "^0.15.2" - -"@babel/plugin-transform-reserved-words@^7.18.6": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-reserved-words@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz#832cd35b81c287c4bcd09ce03e22199641f964fb" - integrity sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-runtime@^7.16.4": - version "7.18.10" - resolved "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.10.tgz" - integrity sha512-q5mMeYAdfEbpBAgzl7tBre/la3LeCxmDO1+wMXRdPWbcoMjR3GiXlCLk7JBZVVye0bqTGNMbt0yYVXX1B1jEWQ== - dependencies: - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.9" - babel-plugin-polyfill-corejs2 "^0.3.2" - babel-plugin-polyfill-corejs3 "^0.5.3" - babel-plugin-polyfill-regenerator "^0.4.0" - semver "^6.3.0" - -"@babel/plugin-transform-shorthand-properties@^7.18.6": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-shorthand-properties@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz#6e277654be82b5559fc4b9f58088507c24f0c624" - integrity sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-spread@^7.18.9": - version "7.18.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.9.tgz" - integrity sha512-39Q814wyoOPtIB/qGopNIL9xDChOE1pNU0ZY5dO0owhiVt/5kFm4li+/bBtwc7QotG0u5EPzqhZdjMtmqBqyQA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" - -"@babel/plugin-transform-spread@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz#6487fd29f229c95e284ba6c98d65eafb893fea6b" - integrity sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - -"@babel/plugin-transform-sticky-regex@^7.18.6": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-sticky-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz#295aba1595bfc8197abd02eae5fc288c0deb26aa" - integrity sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-template-literals@^7.18.9": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-template-literals@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz#8f38cf291e5f7a8e60e9f733193f0bcc10909bff" - integrity sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-typeof-symbol@^7.18.9": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-typeof-symbol@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz#5e2ba478da4b603af8673ff7c54f75a97b716b34" - integrity sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-typescript@^7.18.6": - version "7.18.12" - resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.18.12.tgz" - integrity sha512-2vjjam0cum0miPkenUbQswKowuxs/NjMwIKEq0zwegRxXk12C9YOF9STXnaUptITOtOJHKHpzvvWYOjbm6tc0w== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-syntax-typescript" "^7.18.6" - -"@babel/plugin-transform-unicode-escapes@^7.18.10": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-unicode-escapes@^7.22.10": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz#c723f380f40a2b2f57a62df24c9005834c8616d9" - integrity sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-unicode-property-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz#098898f74d5c1e86660dc112057b2d11227f1c81" - integrity sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-unicode-regex@^7.18.6": - 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== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-unicode-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz#ce7e7bb3ef208c4ff67e02a22816656256d7a183" - integrity sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-unicode-sets-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz#77788060e511b708ffc7d42fdfbc5b37c3004e91" - integrity sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/preset-env@^7.11.0": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.22.10.tgz#3263b9fe2c8823d191d28e61eac60a79f9ce8a0f" - integrity sha512-riHpLb1drNkpLlocmSyEg4oYJIQFeXAK/d7rI6mbD0XsvoTOOweXDmQPG/ErxsEhWk3rl3Q/3F6RFQlVFS8m0A== - dependencies: - "@babel/compat-data" "^7.22.9" - "@babel/helper-compilation-targets" "^7.22.10" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-option" "^7.22.5" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.22.5" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.22.5" - "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-import-assertions" "^7.22.5" - "@babel/plugin-syntax-import-attributes" "^7.22.5" - "@babel/plugin-syntax-import-meta" "^7.10.4" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" - "@babel/plugin-transform-arrow-functions" "^7.22.5" - "@babel/plugin-transform-async-generator-functions" "^7.22.10" - "@babel/plugin-transform-async-to-generator" "^7.22.5" - "@babel/plugin-transform-block-scoped-functions" "^7.22.5" - "@babel/plugin-transform-block-scoping" "^7.22.10" - "@babel/plugin-transform-class-properties" "^7.22.5" - "@babel/plugin-transform-class-static-block" "^7.22.5" - "@babel/plugin-transform-classes" "^7.22.6" - "@babel/plugin-transform-computed-properties" "^7.22.5" - "@babel/plugin-transform-destructuring" "^7.22.10" - "@babel/plugin-transform-dotall-regex" "^7.22.5" - "@babel/plugin-transform-duplicate-keys" "^7.22.5" - "@babel/plugin-transform-dynamic-import" "^7.22.5" - "@babel/plugin-transform-exponentiation-operator" "^7.22.5" - "@babel/plugin-transform-export-namespace-from" "^7.22.5" - "@babel/plugin-transform-for-of" "^7.22.5" - "@babel/plugin-transform-function-name" "^7.22.5" - "@babel/plugin-transform-json-strings" "^7.22.5" - "@babel/plugin-transform-literals" "^7.22.5" - "@babel/plugin-transform-logical-assignment-operators" "^7.22.5" - "@babel/plugin-transform-member-expression-literals" "^7.22.5" - "@babel/plugin-transform-modules-amd" "^7.22.5" - "@babel/plugin-transform-modules-commonjs" "^7.22.5" - "@babel/plugin-transform-modules-systemjs" "^7.22.5" - "@babel/plugin-transform-modules-umd" "^7.22.5" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" - "@babel/plugin-transform-new-target" "^7.22.5" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.22.5" - "@babel/plugin-transform-numeric-separator" "^7.22.5" - "@babel/plugin-transform-object-rest-spread" "^7.22.5" - "@babel/plugin-transform-object-super" "^7.22.5" - "@babel/plugin-transform-optional-catch-binding" "^7.22.5" - "@babel/plugin-transform-optional-chaining" "^7.22.10" - "@babel/plugin-transform-parameters" "^7.22.5" - "@babel/plugin-transform-private-methods" "^7.22.5" - "@babel/plugin-transform-private-property-in-object" "^7.22.5" - "@babel/plugin-transform-property-literals" "^7.22.5" - "@babel/plugin-transform-regenerator" "^7.22.10" - "@babel/plugin-transform-reserved-words" "^7.22.5" - "@babel/plugin-transform-shorthand-properties" "^7.22.5" - "@babel/plugin-transform-spread" "^7.22.5" - "@babel/plugin-transform-sticky-regex" "^7.22.5" - "@babel/plugin-transform-template-literals" "^7.22.5" - "@babel/plugin-transform-typeof-symbol" "^7.22.5" - "@babel/plugin-transform-unicode-escapes" "^7.22.10" - "@babel/plugin-transform-unicode-property-regex" "^7.22.5" - "@babel/plugin-transform-unicode-regex" "^7.22.5" - "@babel/plugin-transform-unicode-sets-regex" "^7.22.5" - "@babel/preset-modules" "0.1.6-no-external-plugins" - "@babel/types" "^7.22.10" - babel-plugin-polyfill-corejs2 "^0.4.5" - babel-plugin-polyfill-corejs3 "^0.8.3" - babel-plugin-polyfill-regenerator "^0.5.2" - core-js-compat "^3.31.0" - semver "^6.3.1" - -"@babel/preset-env@^7.12.1", "@babel/preset-env@^7.16.4": - version "7.18.10" - resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.10.tgz" - integrity sha512-wVxs1yjFdW3Z/XkNfXKoblxoHgbtUF7/l3PvvP4m02Qz9TZ6uZGxRVYjSQeR87oQmHco9zWitW5J82DJ7sCjvA== - dependencies: - "@babel/compat-data" "^7.18.8" - "@babel/helper-compilation-targets" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-validator-option" "^7.18.6" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.9" - "@babel/plugin-proposal-async-generator-functions" "^7.18.10" - "@babel/plugin-proposal-class-properties" "^7.18.6" - "@babel/plugin-proposal-class-static-block" "^7.18.6" - "@babel/plugin-proposal-dynamic-import" "^7.18.6" - "@babel/plugin-proposal-export-namespace-from" "^7.18.9" - "@babel/plugin-proposal-json-strings" "^7.18.6" - "@babel/plugin-proposal-logical-assignment-operators" "^7.18.9" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6" - "@babel/plugin-proposal-numeric-separator" "^7.18.6" - "@babel/plugin-proposal-object-rest-spread" "^7.18.9" - "@babel/plugin-proposal-optional-catch-binding" "^7.18.6" - "@babel/plugin-proposal-optional-chaining" "^7.18.9" - "@babel/plugin-proposal-private-methods" "^7.18.6" - "@babel/plugin-proposal-private-property-in-object" "^7.18.6" - "@babel/plugin-proposal-unicode-property-regex" "^7.18.6" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-import-assertions" "^7.18.6" - "@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.18.6" - "@babel/plugin-transform-async-to-generator" "^7.18.6" - "@babel/plugin-transform-block-scoped-functions" "^7.18.6" - "@babel/plugin-transform-block-scoping" "^7.18.9" - "@babel/plugin-transform-classes" "^7.18.9" - "@babel/plugin-transform-computed-properties" "^7.18.9" - "@babel/plugin-transform-destructuring" "^7.18.9" - "@babel/plugin-transform-dotall-regex" "^7.18.6" - "@babel/plugin-transform-duplicate-keys" "^7.18.9" - "@babel/plugin-transform-exponentiation-operator" "^7.18.6" - "@babel/plugin-transform-for-of" "^7.18.8" - "@babel/plugin-transform-function-name" "^7.18.9" - "@babel/plugin-transform-literals" "^7.18.9" - "@babel/plugin-transform-member-expression-literals" "^7.18.6" - "@babel/plugin-transform-modules-amd" "^7.18.6" - "@babel/plugin-transform-modules-commonjs" "^7.18.6" - "@babel/plugin-transform-modules-systemjs" "^7.18.9" - "@babel/plugin-transform-modules-umd" "^7.18.6" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.18.6" - "@babel/plugin-transform-new-target" "^7.18.6" - "@babel/plugin-transform-object-super" "^7.18.6" - "@babel/plugin-transform-parameters" "^7.18.8" - "@babel/plugin-transform-property-literals" "^7.18.6" - "@babel/plugin-transform-regenerator" "^7.18.6" - "@babel/plugin-transform-reserved-words" "^7.18.6" - "@babel/plugin-transform-shorthand-properties" "^7.18.6" - "@babel/plugin-transform-spread" "^7.18.9" - "@babel/plugin-transform-sticky-regex" "^7.18.6" - "@babel/plugin-transform-template-literals" "^7.18.9" - "@babel/plugin-transform-typeof-symbol" "^7.18.9" - "@babel/plugin-transform-unicode-escapes" "^7.18.10" - "@babel/plugin-transform-unicode-regex" "^7.18.6" - "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.18.10" - babel-plugin-polyfill-corejs2 "^0.3.2" - babel-plugin-polyfill-corejs3 "^0.5.3" - babel-plugin-polyfill-regenerator "^0.4.0" - core-js-compat "^3.22.1" - semver "^6.3.0" - -"@babel/preset-modules@0.1.6-no-external-plugins": - version "0.1.6-no-external-plugins" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a" - integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/types" "^7.4.4" - esutils "^2.0.2" - -"@babel/preset-modules@^0.1.5": - 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== - 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" - -"@babel/preset-react@^7.12.5", "@babel/preset-react@^7.16.0": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.18.6.tgz" - integrity sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-validator-option" "^7.18.6" - "@babel/plugin-transform-react-display-name" "^7.18.6" - "@babel/plugin-transform-react-jsx" "^7.18.6" - "@babel/plugin-transform-react-jsx-development" "^7.18.6" - "@babel/plugin-transform-react-pure-annotations" "^7.18.6" - -"@babel/preset-typescript@^7.16.0": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz" - integrity sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-validator-option" "^7.18.6" - "@babel/plugin-transform-typescript" "^7.18.6" - -"@babel/regjsgen@^0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" - integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== - -"@babel/runtime-corejs3@^7.10.2": - version "7.18.9" - resolved "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.18.9.tgz" - integrity sha512-qZEWeccZCrHA2Au4/X05QW5CMdm4VjUDCrGq5gf1ZDcM4hRqreKrtwAn7yci9zfgAS9apvnsFXiGBHBAxZdK9A== - dependencies: - core-js-pure "^3.20.2" - regenerator-runtime "^0.13.4" - -"@babel/runtime@^7.10.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.6", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": - version "7.18.9" - resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz" - integrity sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/runtime@^7.11.2", "@babel/runtime@^7.20.7": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.10.tgz#ae3e9631fd947cb7e3610d3e9d8fef5f76696682" - integrity sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ== - dependencies: - regenerator-runtime "^0.14.0" - -"@babel/template@^7.18.10", "@babel/template@^7.3.3": - 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" - -"@babel/template@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.5.tgz#0c8c4d944509875849bd0344ff0050756eefc6ec" - integrity sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw== - dependencies: - "@babel/code-frame" "^7.22.5" - "@babel/parser" "^7.22.5" - "@babel/types" "^7.22.5" - -"@babel/traverse@^7.18.11", "@babel/traverse@^7.18.9", "@babel/traverse@^7.19.0", "@babel/traverse@^7.19.1", "@babel/traverse@^7.7.2": - version "7.19.1" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.1.tgz" - integrity sha512-0j/ZfZMxKukDaag2PtOPDbwuELqIar6lLskVPPJDjXMXjfLb1Obo/1yjxIGqqAJrmfaTIY3z2wFLAQ7qSkLsuA== - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.19.0" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.19.0" - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.19.1" - "@babel/types" "^7.19.0" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/traverse@^7.22.10": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.22.10.tgz#20252acb240e746d27c2e82b4484f199cf8141aa" - integrity sha512-Q/urqV4pRByiNNpb/f5OSv28ZlGJiFiiTh+GAHktbIrkPhPbl90+uW6SmpoLyZqutrg9AEaEf3Q/ZBRHBXgxig== - dependencies: - "@babel/code-frame" "^7.22.10" - "@babel/generator" "^7.22.10" - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-function-name" "^7.22.5" - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.22.10" - "@babel/types" "^7.22.10" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/types@^7.0.0", "@babel/types@^7.12.6", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.19.0" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.19.0.tgz" - integrity sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA== - dependencies: - "@babel/helper-string-parser" "^7.18.10" - "@babel/helper-validator-identifier" "^7.18.6" - to-fast-properties "^2.0.0" - -"@babel/types@^7.22.10", "@babel/types@^7.22.5": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.10.tgz#4a9e76446048f2c66982d1a989dd12b8a2d2dc03" - integrity sha512-obaoigiLrlDZ7TUQln/8m4mSqIW2QFeOrCQc9r+xsaHGNoplVNYlRVpsfE8Vj35GEm2ZH4ZhrNYogs/3fj85kg== - dependencies: - "@babel/helper-string-parser" "^7.22.5" - "@babel/helper-validator-identifier" "^7.22.5" - to-fast-properties "^2.0.0" - -"@bcoe/v8-coverage@^0.2.3": - version "0.2.3" - resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz" - integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== - -"@codemirror/autocomplete@^6.0.0": - version "6.3.0" - resolved "https://registry.yarnpkg.com/@codemirror/autocomplete/-/autocomplete-6.3.0.tgz#217e16bb6ce63374ec7b9d2a01d007ba53ff0aff" - integrity sha512-4jEvh3AjJZTDKazd10J6ZsCIqaYxDMCeua5ouQxY8hlFIml+nr7le0SgBhT3SIytFBmdzPK3AUhXGuW3T79nVg== - dependencies: - "@codemirror/language" "^6.0.0" - "@codemirror/state" "^6.0.0" - "@codemirror/view" "^6.0.0" - "@lezer/common" "^1.0.0" - -"@codemirror/commands@^6.0.0", "@codemirror/commands@^6.1.0": - version "6.1.2" - resolved "https://registry.yarnpkg.com/@codemirror/commands/-/commands-6.1.2.tgz#84fb7d170047c3aeb7b0047ace59510bb19208de" - integrity sha512-sO3jdX1s0pam6lIdeSJLMN3DQ6mPEbM4yLvyKkdqtmd/UDwhXA5+AwFJ89rRXm6vTeOXBsE5cAmlos/t7MJdgg== - dependencies: - "@codemirror/language" "^6.0.0" - "@codemirror/state" "^6.0.0" - "@codemirror/view" "^6.0.0" - "@lezer/common" "^1.0.0" - -"@codemirror/language@^6.0.0": - version "6.2.1" - resolved "https://registry.yarnpkg.com/@codemirror/language/-/language-6.2.1.tgz#cb10cd785a76e50ecd2fe2dc59ff66af8a41b87a" - integrity sha512-MC3svxuvIj0MRpFlGHxLS6vPyIdbTr2KKPEW46kCoCXw2ktb4NTkpkPBI/lSP/FoNXLCBJ0mrnUi1OoZxtpW1Q== - dependencies: - "@codemirror/state" "^6.0.0" - "@codemirror/view" "^6.0.0" - "@lezer/common" "^1.0.0" - "@lezer/highlight" "^1.0.0" - "@lezer/lr" "^1.0.0" - style-mod "^4.0.0" - -"@codemirror/legacy-modes@^6.1.0": - version "6.1.0" - resolved "https://registry.yarnpkg.com/@codemirror/legacy-modes/-/legacy-modes-6.1.0.tgz#f1c6d504069509c8d3d9220453132e559477400c" - integrity sha512-V/PgGpndkZeTn3Hdlg/gd8MLFdyvTCIX+iwJzjUw5iNziWiNsAY8X0jvf7m3gSfxnKkNzmid6l0g4rYSpiDaCw== - dependencies: - "@codemirror/language" "^6.0.0" - -"@codemirror/lint@^6.0.0": - version "6.0.0" - resolved "https://registry.yarnpkg.com/@codemirror/lint/-/lint-6.0.0.tgz#a249b021ac9933b94fe312d994d220f0ef11a157" - integrity sha512-nUUXcJW1Xp54kNs+a1ToPLK8MadO0rMTnJB8Zk4Z8gBdrN0kqV7uvUraU/T2yqg+grDNR38Vmy/MrhQN/RgwiA== - dependencies: - "@codemirror/state" "^6.0.0" - "@codemirror/view" "^6.0.0" - crelt "^1.0.5" - -"@codemirror/search@^6.0.0": - version "6.2.1" - resolved "https://registry.yarnpkg.com/@codemirror/search/-/search-6.2.1.tgz#953ca99e04877f1caa1b521a2b3180dfd1adc499" - integrity sha512-Q1JgUSBjQZRPIddlXzad/AVDigdhriLxQNFyP0gfrDTq6LDHNhr95U/tW3bpVssGenkaLzujtu/7XoK4kyvL3g== - dependencies: - "@codemirror/state" "^6.0.0" - "@codemirror/view" "^6.0.0" - crelt "^1.0.5" - -"@codemirror/state@^6.0.0", "@codemirror/state@^6.1.1": - version "6.1.2" - resolved "https://registry.yarnpkg.com/@codemirror/state/-/state-6.1.2.tgz#182d46eabcc17c95508984d6add5a5a641dcd517" - integrity sha512-Mxff85Hp5va+zuj+H748KbubXjrinX/k28lj43H14T2D0+4kuvEFIEIO7hCEcvBT8ubZyIelt9yGOjj2MWOEQA== - -"@codemirror/theme-one-dark@^6.0.0": - version "6.1.0" - resolved "https://registry.yarnpkg.com/@codemirror/theme-one-dark/-/theme-one-dark-6.1.0.tgz#6f8b3c7fc22e9fec59edd573f4ba9546db42e007" - integrity sha512-AiTHtFRu8+vWT9wWUWDM+cog6ZwgivJogB1Tm/g40NIpLwph7AnmxrSzWfvJN5fBVufsuwBxecQCNmdcR5D7Aw== - dependencies: - "@codemirror/language" "^6.0.0" - "@codemirror/state" "^6.0.0" - "@codemirror/view" "^6.0.0" - "@lezer/highlight" "^1.0.0" - -"@codemirror/view@^6.0.0": - version "6.3.1" - resolved "https://registry.yarnpkg.com/@codemirror/view/-/view-6.3.1.tgz#c2f1d8ad569351eb9f8d57956536fc63cd61aaa9" - integrity sha512-NKPBphoV9W2Q6tKXk+ge4q5EhMOOC0rpwdGS80/slNSfsVqkN4gwXIEqSprXJFlf9aUKZU7WhPvqRBMNH+hJkQ== - dependencies: - "@codemirror/state" "^6.0.0" - style-mod "^4.0.0" - w3c-keyname "^2.2.4" - -"@colors/colors@1.5.0": - version "1.5.0" - resolved "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz" - integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== - -"@cspotcode/source-map-support@^0.8.0": - version "0.8.1" - resolved "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz" - integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== - dependencies: - "@jridgewell/trace-mapping" "0.3.9" - -"@csstools/normalize.css@*": - version "12.0.0" - resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-12.0.0.tgz#a9583a75c3f150667771f30b60d9f059473e62c4" - integrity sha512-M0qqxAcwCsIVfpFQSlGN5XjXWu8l5JDZN+fPt1LeW5SZexQTgnaEvgXAY+CeygRw0EeppWHi12JxESWiWrB0Sg== - -"@csstools/postcss-cascade-layers@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz#8a997edf97d34071dd2e37ea6022447dd9e795ad" - integrity sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA== - dependencies: - "@csstools/selector-specificity" "^2.0.2" - postcss-selector-parser "^6.0.10" - -"@csstools/postcss-color-function@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz#2bd36ab34f82d0497cfacdc9b18d34b5e6f64b6b" - integrity sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw== - dependencies: - "@csstools/postcss-progressive-custom-properties" "^1.1.0" - postcss-value-parser "^4.2.0" - -"@csstools/postcss-font-format-keywords@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz#677b34e9e88ae997a67283311657973150e8b16a" - integrity sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg== - dependencies: - postcss-value-parser "^4.2.0" - -"@csstools/postcss-hwb-function@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz#ab54a9fce0ac102c754854769962f2422ae8aa8b" - integrity sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w== - dependencies: - postcss-value-parser "^4.2.0" - -"@csstools/postcss-ic-unit@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz#28237d812a124d1a16a5acc5c3832b040b303e58" - integrity sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw== - dependencies: - "@csstools/postcss-progressive-custom-properties" "^1.1.0" - postcss-value-parser "^4.2.0" - -"@csstools/postcss-is-pseudo-class@^2.0.7": - version "2.0.7" - resolved "https://registry.yarnpkg.com/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz#846ae6c0d5a1eaa878fce352c544f9c295509cd1" - integrity sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA== - dependencies: - "@csstools/selector-specificity" "^2.0.0" - postcss-selector-parser "^6.0.10" - -"@csstools/postcss-nested-calc@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz#d7e9d1d0d3d15cf5ac891b16028af2a1044d0c26" - integrity sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ== - dependencies: - postcss-value-parser "^4.2.0" - -"@csstools/postcss-normalize-display-values@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz#15da54a36e867b3ac5163ee12c1d7f82d4d612c3" - integrity sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw== - dependencies: - postcss-value-parser "^4.2.0" - -"@csstools/postcss-oklab-function@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz#88cee0fbc8d6df27079ebd2fa016ee261eecf844" - integrity sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA== - dependencies: - "@csstools/postcss-progressive-custom-properties" "^1.1.0" - postcss-value-parser "^4.2.0" - -"@csstools/postcss-progressive-custom-properties@^1.1.0", "@csstools/postcss-progressive-custom-properties@^1.3.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz#542292558384361776b45c85226b9a3a34f276fa" - integrity sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA== - dependencies: - postcss-value-parser "^4.2.0" - -"@csstools/postcss-stepped-value-functions@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz#f8772c3681cc2befed695e2b0b1d68e22f08c4f4" - integrity sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ== - dependencies: - postcss-value-parser "^4.2.0" - -"@csstools/postcss-text-decoration-shorthand@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz#ea96cfbc87d921eca914d3ad29340d9bcc4c953f" - integrity sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw== - dependencies: - postcss-value-parser "^4.2.0" - -"@csstools/postcss-trigonometric-functions@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz#94d3e4774c36d35dcdc88ce091336cb770d32756" - integrity sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og== - dependencies: - postcss-value-parser "^4.2.0" - -"@csstools/postcss-unset-value@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz#c99bb70e2cdc7312948d1eb41df2412330b81f77" - integrity sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g== - -"@csstools/selector-specificity@^2.0.0", "@csstools/selector-specificity@^2.0.2": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz#2cbcf822bf3764c9658c4d2e568bd0c0cb748016" - integrity sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw== - -"@develar/schema-utils@~2.6.5": - version "2.6.5" - resolved "https://registry.npmjs.org/@develar/schema-utils/-/schema-utils-2.6.5.tgz" - integrity sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig== - dependencies: - ajv "^6.12.0" - ajv-keywords "^3.4.1" - -"@electron/get@^1.14.1": - version "1.14.1" - resolved "https://registry.npmjs.org/@electron/get/-/get-1.14.1.tgz" - integrity sha512-BrZYyL/6m0ZXz/lDxy/nlVhQz+WF+iPS6qXolEU8atw7h6v1aYkjwJZ63m+bJMBTxDE66X+r2tPS4a/8C82sZw== - dependencies: - debug "^4.1.1" - env-paths "^2.2.0" - fs-extra "^8.1.0" - got "^9.6.0" - progress "^2.0.3" - semver "^6.2.0" - sumchecker "^3.0.1" - optionalDependencies: - global-agent "^3.0.0" - global-tunnel-ng "^2.7.1" - -"@electron/universal@1.2.1": - version "1.2.1" - resolved "https://registry.npmjs.org/@electron/universal/-/universal-1.2.1.tgz" - integrity sha512-7323HyMh7KBAl/nPDppdLsC87G6RwRU02dy5FPeGB1eS7rUePh55+WNWiDPLhFQqqVPHzh77M69uhmoT8XnwMQ== - dependencies: - "@malept/cross-spawn-promise" "^1.1.0" - asar "^3.1.0" - debug "^4.3.1" - dir-compare "^2.4.0" - fs-extra "^9.0.1" - minimatch "^3.0.4" - plist "^3.0.4" - -"@es-joy/jsdoccomment@~0.37.0": - version "0.37.1" - resolved "https://registry.yarnpkg.com/@es-joy/jsdoccomment/-/jsdoccomment-0.37.1.tgz#fa32a41ba12097452693343e09ad4d26d157aedd" - integrity sha512-5vxWJ1gEkEF0yRd0O+uK6dHJf7adrxwQSX8PuRiPfFSAbNLnY0ZJfXaZucoz14Jj2N11xn2DnlEPwWRpYpvRjg== - dependencies: - comment-parser "1.3.1" - esquery "^1.5.0" - jsdoc-type-pratt-parser "~4.0.0" - -"@eslint-community/eslint-utils@^4.2.0": - version "4.4.0" - resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" - integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== - dependencies: - eslint-visitor-keys "^3.3.0" - -"@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1": - version "4.7.0" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.7.0.tgz#96e7c05e738327602ae5942437f9c6b177ec279a" - integrity sha512-+HencqxU7CFJnQb7IKtuNBqS6Yx3Tz4kOL8BJXo+JyeiBm5MEX6pO8onXDkjrkCRlfYXS1Axro15ZjVFe9YgsA== - -"@eslint/eslintrc@^0.4.3": - version "0.4.3" - resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz" - integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== - dependencies: - ajv "^6.12.4" - debug "^4.1.1" - espree "^7.3.0" - globals "^13.9.0" - ignore "^4.0.6" - import-fresh "^3.2.1" - js-yaml "^3.13.1" - minimatch "^3.0.4" - strip-json-comments "^3.1.1" - -"@eslint/eslintrc@^2.1.2": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.2.tgz#c6936b4b328c64496692f76944e755738be62396" - integrity sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g== - dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^9.6.0" - globals "^13.19.0" - ignore "^5.2.0" - import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.1.2" - strip-json-comments "^3.1.1" - -"@eslint/js@^8.47.0": - version "8.47.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.47.0.tgz#5478fdf443ff8158f9de171c704ae45308696c7d" - integrity sha512-P6omY1zv5MItm93kLM8s2vr1HICJH8v0dvddDhysbIuZ+vcjOHg5Zbkf1mTkcmi2JA9oBG2anOkRnW8WJTS8Og== - -"@fingerprintjs/fingerprintjs@^3.3.6": - version "3.3.6" - resolved "https://registry.yarnpkg.com/@fingerprintjs/fingerprintjs/-/fingerprintjs-3.3.6.tgz#4c3f1726dc0cb10b915cfce78d9471b38cd809bd" - integrity sha512-Inh0OoFVzO2PLvrUF8RZhY9NVDdg9DJHQ5YlvXhrGtQxSPzy2smS3TWzLAi+zlHSJNHSvi+1zYayLen2lGxjdA== - dependencies: - tslib "^2.0.1" - -"@gar/promisify@^1.0.1": - version "1.1.3" - resolved "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz" - integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== - -"@hapi/hoek@^9.0.0": - version "9.3.0" - resolved "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz" - integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== - -"@hapi/topo@^5.0.0": - version "5.1.0" - resolved "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz" - integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== - dependencies: - "@hapi/hoek" "^9.0.0" - -"@humanwhocodes/config-array@^0.11.10": - version "0.11.10" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.10.tgz#5a3ffe32cc9306365fb3fd572596cd602d5e12d2" - integrity sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ== - dependencies: - "@humanwhocodes/object-schema" "^1.2.1" - debug "^4.1.1" - minimatch "^3.0.5" - -"@humanwhocodes/config-array@^0.5.0": - version "0.5.0" - resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz" - integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== - dependencies: - "@humanwhocodes/object-schema" "^1.2.0" - debug "^4.1.1" - minimatch "^3.0.4" - -"@humanwhocodes/module-importer@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" - integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== - -"@humanwhocodes/object-schema@^1.2.0", "@humanwhocodes/object-schema@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" - integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== - -"@istanbuljs/load-nyc-config@^1.0.0": - version "1.1.0" - resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz" - integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== - 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" - -"@istanbuljs/schema@^0.1.2": - version "0.1.3" - resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz" - integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== - -"@jest/console@^27.5.1": - version "27.5.1" - resolved "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz" - integrity sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg== - dependencies: - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - jest-message-util "^27.5.1" - jest-util "^27.5.1" - slash "^3.0.0" - -"@jest/console@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-28.1.3.tgz#2030606ec03a18c31803b8a36382762e447655df" - integrity sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw== - dependencies: - "@jest/types" "^28.1.3" - "@types/node" "*" - chalk "^4.0.0" - jest-message-util "^28.1.3" - jest-util "^28.1.3" - slash "^3.0.0" - -"@jest/core@^27.5.1": - version "27.5.1" - resolved "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz" - integrity sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ== - dependencies: - "@jest/console" "^27.5.1" - "@jest/reporters" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - emittery "^0.8.1" - exit "^0.1.2" - graceful-fs "^4.2.9" - jest-changed-files "^27.5.1" - jest-config "^27.5.1" - jest-haste-map "^27.5.1" - jest-message-util "^27.5.1" - jest-regex-util "^27.5.1" - jest-resolve "^27.5.1" - jest-resolve-dependencies "^27.5.1" - jest-runner "^27.5.1" - jest-runtime "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" - jest-validate "^27.5.1" - jest-watcher "^27.5.1" - micromatch "^4.0.4" - rimraf "^3.0.0" - slash "^3.0.0" - strip-ansi "^6.0.0" - -"@jest/environment@^27.5.1": - version "27.5.1" - resolved "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz" - integrity sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA== - dependencies: - "@jest/fake-timers" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - jest-mock "^27.5.1" - -"@jest/expect-utils@^29.0.1": - version "29.0.1" - resolved "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.0.1.tgz" - integrity sha512-Tw5kUUOKmXGQDmQ9TSgTraFFS7HMC1HG/B7y0AN2G2UzjdAXz9BzK2rmNpCSDl7g7y0Gf/VLBm//blonvhtOTQ== - dependencies: - jest-get-type "^29.0.0" - -"@jest/fake-timers@^27.5.1": - version "27.5.1" - resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz" - integrity sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ== - dependencies: - "@jest/types" "^27.5.1" - "@sinonjs/fake-timers" "^8.0.1" - "@types/node" "*" - jest-message-util "^27.5.1" - jest-mock "^27.5.1" - jest-util "^27.5.1" - -"@jest/globals@^27.5.1": - version "27.5.1" - resolved "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz" - integrity sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/types" "^27.5.1" - expect "^27.5.1" - -"@jest/reporters@^27.5.1": - version "27.5.1" - resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz" - integrity sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw== - dependencies: - "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.2" - graceful-fs "^4.2.9" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^5.1.0" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.1.3" - jest-haste-map "^27.5.1" - jest-resolve "^27.5.1" - jest-util "^27.5.1" - jest-worker "^27.5.1" - slash "^3.0.0" - source-map "^0.6.0" - string-length "^4.0.1" - terminal-link "^2.0.0" - v8-to-istanbul "^8.1.0" - -"@jest/schemas@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-28.1.3.tgz#ad8b86a66f11f33619e3d7e1dcddd7f2d40ff905" - integrity sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg== - dependencies: - "@sinclair/typebox" "^0.24.1" - -"@jest/schemas@^29.0.0": - version "29.0.0" - resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-29.0.0.tgz" - integrity sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA== - dependencies: - "@sinclair/typebox" "^0.24.1" - -"@jest/source-map@^27.5.1": - version "27.5.1" - resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz" - integrity sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg== - dependencies: - callsites "^3.0.0" - graceful-fs "^4.2.9" - source-map "^0.6.0" - -"@jest/test-result@^27.5.1": - version "27.5.1" - resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz" - integrity sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag== - dependencies: - "@jest/console" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" - -"@jest/test-result@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-28.1.3.tgz#5eae945fd9f4b8fcfce74d239e6f725b6bf076c5" - integrity sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg== - dependencies: - "@jest/console" "^28.1.3" - "@jest/types" "^28.1.3" - "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" - -"@jest/test-sequencer@^27.5.1": - version "27.5.1" - resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz" - integrity sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ== - dependencies: - "@jest/test-result" "^27.5.1" - graceful-fs "^4.2.9" - jest-haste-map "^27.5.1" - jest-runtime "^27.5.1" - -"@jest/transform@^27.5.1": - version "27.5.1" - resolved "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz" - integrity sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw== - dependencies: - "@babel/core" "^7.1.0" - "@jest/types" "^27.5.1" - babel-plugin-istanbul "^6.1.1" - chalk "^4.0.0" - convert-source-map "^1.4.0" - fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.2.9" - jest-haste-map "^27.5.1" - jest-regex-util "^27.5.1" - jest-util "^27.5.1" - micromatch "^4.0.4" - pirates "^4.0.4" - slash "^3.0.0" - source-map "^0.6.1" - write-file-atomic "^3.0.0" - -"@jest/types@^26.6.2": - version "26.6.2" - resolved "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz" - integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^15.0.0" - chalk "^4.0.0" - -"@jest/types@^27.5.1": - version "27.5.1" - resolved "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz" - integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^16.0.0" - chalk "^4.0.0" - -"@jest/types@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-28.1.3.tgz#b05de80996ff12512bc5ceb1d208285a7d11748b" - integrity sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ== - dependencies: - "@jest/schemas" "^28.1.3" - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^17.0.8" - chalk "^4.0.0" - -"@jest/types@^29.0.1": - version "29.0.1" - resolved "https://registry.npmjs.org/@jest/types/-/types-29.0.1.tgz" - integrity sha512-ft01rxzVsbh9qZPJ6EFgAIj3PT9FCRfBF9Xljo2/33VDOUjLZr0ZJ2oKANqh9S/K0/GERCsHDAQlBwj7RxA+9g== - dependencies: - "@jest/schemas" "^29.0.0" - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^17.0.8" - chalk "^4.0.0" - -"@jimp/bmp@^0.14.0": - version "0.14.0" - resolved "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.14.0.tgz" - integrity sha512-5RkX6tSS7K3K3xNEb2ygPuvyL9whjanhoaB/WmmXlJS6ub4DjTqrapu8j4qnIWmO4YYtFeTbDTXV6v9P1yMA5A== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/utils" "^0.14.0" - bmp-js "^0.1.0" - -"@jimp/core@^0.14.0": - version "0.14.0" - resolved "https://registry.npmjs.org/@jimp/core/-/core-0.14.0.tgz" - integrity sha512-S62FcKdtLtj3yWsGfJRdFXSutjvHg7aQNiFogMbwq19RP4XJWqS2nOphu7ScB8KrSlyy5nPF2hkWNhLRLyD82w== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/utils" "^0.14.0" - any-base "^1.1.0" - buffer "^5.2.0" - exif-parser "^0.1.12" - file-type "^9.0.0" - load-bmfont "^1.3.1" - mkdirp "^0.5.1" - phin "^2.9.1" - pixelmatch "^4.0.2" - tinycolor2 "^1.4.1" - -"@jimp/custom@^0.14.0": - version "0.14.0" - resolved "https://registry.npmjs.org/@jimp/custom/-/custom-0.14.0.tgz" - integrity sha512-kQJMeH87+kWJdVw8F9GQhtsageqqxrvzg7yyOw3Tx/s7v5RToe8RnKyMM+kVtBJtNAG+Xyv/z01uYQ2jiZ3GwA== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/core" "^0.14.0" - -"@jimp/gif@^0.14.0": - version "0.14.0" - resolved "https://registry.npmjs.org/@jimp/gif/-/gif-0.14.0.tgz" - integrity sha512-DHjoOSfCaCz72+oGGEh8qH0zE6pUBaBxPxxmpYJjkNyDZP7RkbBkZJScIYeQ7BmJxmGN4/dZn+MxamoQlr+UYg== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/utils" "^0.14.0" - gifwrap "^0.9.2" - omggif "^1.0.9" - -"@jimp/jpeg@^0.14.0": - version "0.14.0" - resolved "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.14.0.tgz" - integrity sha512-561neGbr+87S/YVQYnZSTyjWTHBm9F6F1obYHiyU3wVmF+1CLbxY3FQzt4YolwyQHIBv36Bo0PY2KkkU8BEeeQ== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/utils" "^0.14.0" - jpeg-js "^0.4.0" - -"@jimp/plugin-blit@^0.14.0": - version "0.14.0" - resolved "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.14.0.tgz" - integrity sha512-YoYOrnVHeX3InfgbJawAU601iTZMwEBZkyqcP1V/S33Qnz9uzH1Uj1NtC6fNgWzvX6I4XbCWwtr4RrGFb5CFrw== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/utils" "^0.14.0" - -"@jimp/plugin-blur@^0.14.0": - version "0.14.0" - resolved "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.14.0.tgz" - integrity sha512-9WhZcofLrT0hgI7t0chf7iBQZib//0gJh9WcQMUt5+Q1Bk04dWs8vTgLNj61GBqZXgHSPzE4OpCrrLDBG8zlhQ== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/utils" "^0.14.0" - -"@jimp/plugin-circle@^0.14.0": - version "0.14.0" - resolved "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.14.0.tgz" - integrity sha512-o5L+wf6QA44tvTum5HeLyLSc5eVfIUd5ZDVi5iRfO4o6GT/zux9AxuTSkKwnjhsG8bn1dDmywAOQGAx7BjrQVA== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/utils" "^0.14.0" - -"@jimp/plugin-color@^0.14.0": - version "0.14.0" - resolved "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.14.0.tgz" - integrity sha512-JJz512SAILYV0M5LzBb9sbOm/XEj2fGElMiHAxb7aLI6jx+n0agxtHpfpV/AePTLm1vzzDxx6AJxXbKv355hBQ== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/utils" "^0.14.0" - tinycolor2 "^1.4.1" - -"@jimp/plugin-contain@^0.14.0": - version "0.14.0" - resolved "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.14.0.tgz" - integrity sha512-RX2q233lGyaxiMY6kAgnm9ScmEkNSof0hdlaJAVDS1OgXphGAYAeSIAwzESZN4x3ORaWvkFefeVH9O9/698Evg== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/utils" "^0.14.0" - -"@jimp/plugin-cover@^0.14.0": - version "0.14.0" - resolved "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.14.0.tgz" - integrity sha512-0P/5XhzWES4uMdvbi3beUgfvhn4YuQ/ny8ijs5kkYIw6K8mHcl820HahuGpwWMx56DJLHRl1hFhJwo9CeTRJtQ== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/utils" "^0.14.0" - -"@jimp/plugin-crop@^0.14.0": - version "0.14.0" - resolved "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.14.0.tgz" - integrity sha512-Ojtih+XIe6/XSGtpWtbAXBozhCdsDMmy+THUJAGu2x7ZgKrMS0JotN+vN2YC3nwDpYkM+yOJImQeptSfZb2Sug== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/utils" "^0.14.0" - -"@jimp/plugin-displace@^0.14.0": - version "0.14.0" - resolved "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.14.0.tgz" - integrity sha512-c75uQUzMgrHa8vegkgUvgRL/PRvD7paFbFJvzW0Ugs8Wl+CDMGIPYQ3j7IVaQkIS+cAxv+NJ3TIRBQyBrfVEOg== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/utils" "^0.14.0" - -"@jimp/plugin-dither@^0.14.0": - version "0.14.0" - resolved "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.14.0.tgz" - integrity sha512-g8SJqFLyYexXQQsoh4dc1VP87TwyOgeTElBcxSXX2LaaMZezypmxQfLTzOFzZoK8m39NuaoH21Ou1Ftsq7LzVQ== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/utils" "^0.14.0" - -"@jimp/plugin-fisheye@^0.14.0": - version "0.14.0" - resolved "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.14.0.tgz" - integrity sha512-BFfUZ64EikCaABhCA6mR3bsltWhPpS321jpeIQfJyrILdpFsZ/OccNwCgpW1XlbldDHIoNtXTDGn3E+vCE7vDg== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/utils" "^0.14.0" - -"@jimp/plugin-flip@^0.14.0": - version "0.14.0" - resolved "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.14.0.tgz" - integrity sha512-WtL1hj6ryqHhApih+9qZQYA6Ye8a4HAmdTzLbYdTMrrrSUgIzFdiZsD0WeDHpgS/+QMsWwF+NFmTZmxNWqKfXw== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/utils" "^0.14.0" - -"@jimp/plugin-gaussian@^0.14.0": - version "0.14.0" - resolved "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.14.0.tgz" - integrity sha512-uaLwQ0XAQoydDlF9tlfc7iD9drYPriFe+jgYnWm8fbw5cN+eOIcnneEX9XCOOzwgLPkNCxGox6Kxjn8zY6GxtQ== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/utils" "^0.14.0" - -"@jimp/plugin-invert@^0.14.0": - version "0.14.0" - resolved "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.14.0.tgz" - integrity sha512-UaQW9X9vx8orQXYSjT5VcITkJPwDaHwrBbxxPoDG+F/Zgv4oV9fP+udDD6qmkgI9taU+44Fy+zm/J/gGcMWrdg== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/utils" "^0.14.0" - -"@jimp/plugin-mask@^0.14.0": - version "0.14.0" - resolved "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.14.0.tgz" - integrity sha512-tdiGM69OBaKtSPfYSQeflzFhEpoRZ+BvKfDEoivyTjauynbjpRiwB1CaiS8En1INTDwzLXTT0Be9SpI3LkJoEA== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/utils" "^0.14.0" - -"@jimp/plugin-normalize@^0.14.0": - version "0.14.0" - resolved "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.14.0.tgz" - integrity sha512-AfY8sqlsbbdVwFGcyIPy5JH/7fnBzlmuweb+Qtx2vn29okq6+HelLjw2b+VT2btgGUmWWHGEHd86oRGSoWGyEQ== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/utils" "^0.14.0" - -"@jimp/plugin-print@^0.14.0": - version "0.14.0" - resolved "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.14.0.tgz" - integrity sha512-MwP3sH+VS5AhhSTXk7pui+tEJFsxnTKFY3TraFJb8WFbA2Vo2qsRCZseEGwpTLhENB7p/JSsLvWoSSbpmxhFAQ== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/utils" "^0.14.0" - load-bmfont "^1.4.0" - -"@jimp/plugin-resize@^0.14.0": - version "0.14.0" - resolved "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.14.0.tgz" - integrity sha512-qFeMOyXE/Bk6QXN0GQo89+CB2dQcXqoxUcDb2Ah8wdYlKqpi53skABkgVy5pW3EpiprDnzNDboMltdvDslNgLQ== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/utils" "^0.14.0" - -"@jimp/plugin-rotate@^0.14.0": - version "0.14.0" - resolved "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.14.0.tgz" - integrity sha512-aGaicts44bvpTcq5Dtf93/8TZFu5pMo/61lWWnYmwJJU1RqtQlxbCLEQpMyRhKDNSfPbuP8nyGmaqXlM/82J0Q== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/utils" "^0.14.0" - -"@jimp/plugin-scale@^0.14.0": - version "0.14.0" - resolved "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.14.0.tgz" - integrity sha512-ZcJk0hxY5ZKZDDwflqQNHEGRblgaR+piePZm7dPwPUOSeYEH31P0AwZ1ziceR74zd8N80M0TMft+e3Td6KGBHw== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/utils" "^0.14.0" - -"@jimp/plugin-shadow@^0.14.0": - version "0.14.0" - resolved "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.14.0.tgz" - integrity sha512-p2igcEr/iGrLiTu0YePNHyby0WYAXM14c5cECZIVnq/UTOOIQ7xIcWZJ1lRbAEPxVVXPN1UibhZAbr3HAb5BjQ== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/utils" "^0.14.0" - -"@jimp/plugin-threshold@^0.14.0": - version "0.14.0" - resolved "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.14.0.tgz" - integrity sha512-N4BlDgm/FoOMV/DQM2rSpzsgqAzkP0DXkWZoqaQrlRxQBo4zizQLzhEL00T/YCCMKnddzgEhnByaocgaaa0fKw== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/utils" "^0.14.0" - -"@jimp/plugins@^0.14.0": - version "0.14.0" - resolved "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.14.0.tgz" - integrity sha512-vDO3XT/YQlFlFLq5TqNjQkISqjBHT8VMhpWhAfJVwuXIpilxz5Glu4IDLK6jp4IjPR6Yg2WO8TmRY/HI8vLrOw== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/plugin-blit" "^0.14.0" - "@jimp/plugin-blur" "^0.14.0" - "@jimp/plugin-circle" "^0.14.0" - "@jimp/plugin-color" "^0.14.0" - "@jimp/plugin-contain" "^0.14.0" - "@jimp/plugin-cover" "^0.14.0" - "@jimp/plugin-crop" "^0.14.0" - "@jimp/plugin-displace" "^0.14.0" - "@jimp/plugin-dither" "^0.14.0" - "@jimp/plugin-fisheye" "^0.14.0" - "@jimp/plugin-flip" "^0.14.0" - "@jimp/plugin-gaussian" "^0.14.0" - "@jimp/plugin-invert" "^0.14.0" - "@jimp/plugin-mask" "^0.14.0" - "@jimp/plugin-normalize" "^0.14.0" - "@jimp/plugin-print" "^0.14.0" - "@jimp/plugin-resize" "^0.14.0" - "@jimp/plugin-rotate" "^0.14.0" - "@jimp/plugin-scale" "^0.14.0" - "@jimp/plugin-shadow" "^0.14.0" - "@jimp/plugin-threshold" "^0.14.0" - timm "^1.6.1" - -"@jimp/png@^0.14.0": - version "0.14.0" - resolved "https://registry.npmjs.org/@jimp/png/-/png-0.14.0.tgz" - integrity sha512-0RV/mEIDOrPCcNfXSPmPBqqSZYwGADNRVUTyMt47RuZh7sugbYdv/uvKmQSiqRdR0L1sfbCBMWUEa5G/8MSbdA== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/utils" "^0.14.0" - pngjs "^3.3.3" - -"@jimp/tiff@^0.14.0": - version "0.14.0" - resolved "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.14.0.tgz" - integrity sha512-zBYDTlutc7j88G/7FBCn3kmQwWr0rmm1e0FKB4C3uJ5oYfT8645lftUsvosKVUEfkdmOaMAnhrf4ekaHcb5gQw== - dependencies: - "@babel/runtime" "^7.7.2" - utif "^2.0.1" - -"@jimp/types@^0.14.0": - version "0.14.0" - resolved "https://registry.npmjs.org/@jimp/types/-/types-0.14.0.tgz" - integrity sha512-hx3cXAW1KZm+b+XCrY3LXtdWy2U+hNtq0rPyJ7NuXCjU7lZR3vIkpz1DLJ3yDdS70hTi5QDXY3Cd9kd6DtloHQ== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/bmp" "^0.14.0" - "@jimp/gif" "^0.14.0" - "@jimp/jpeg" "^0.14.0" - "@jimp/png" "^0.14.0" - "@jimp/tiff" "^0.14.0" - timm "^1.6.1" - -"@jimp/utils@^0.14.0": - version "0.14.0" - resolved "https://registry.npmjs.org/@jimp/utils/-/utils-0.14.0.tgz" - integrity sha512-MY5KFYUru0y74IsgM/9asDwb3ERxWxXEu3CRCZEvE7DtT86y1bR1XgtlSliMrptjz4qbivNGMQSvUBpEFJDp1A== - dependencies: - "@babel/runtime" "^7.7.2" - regenerator-runtime "^0.13.3" - -"@jridgewell/gen-mapping@^0.1.0": - version "0.1.1" - resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz" - integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== - dependencies: - "@jridgewell/set-array" "^1.0.0" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": - 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" - -"@jridgewell/resolve-uri@^3.0.3": - version "3.1.0" - resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz" - integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== - -"@jridgewell/resolve-uri@^3.1.0": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" - integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== - -"@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": - version "1.1.2" - resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" - integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== - -"@jridgewell/source-map@^0.3.2": - version "0.3.2" - resolved "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz" - integrity sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw== - dependencies: - "@jridgewell/gen-mapping" "^0.3.0" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/source-map@^0.3.3": - version "0.3.5" - resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.5.tgz#a3bb4d5c6825aab0d281268f47f6ad5853431e91" - integrity sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ== - dependencies: - "@jridgewell/gen-mapping" "^0.3.0" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.14" - resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz" - integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== - -"@jridgewell/sourcemap-codec@^1.4.14": - version "1.4.15" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" - integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== - -"@jridgewell/trace-mapping@0.3.9": - version "0.3.9" - resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz" - integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@jridgewell/trace-mapping@^0.3.14", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.15" - resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz" - integrity sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@jridgewell/trace-mapping@^0.3.17": - version "0.3.19" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz#f8a3249862f91be48d3127c3cfe992f79b4b8811" - integrity sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw== - dependencies: - "@jridgewell/resolve-uri" "^3.1.0" - "@jridgewell/sourcemap-codec" "^1.4.14" - -"@leichtgewicht/ip-codec@^2.0.1": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b" - integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== - -"@lezer/common@^1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@lezer/common/-/common-1.0.1.tgz#d014fda6d582c24336fadf2715e76f02f73c8908" - integrity sha512-8TR5++Q/F//tpDsLd5zkrvEX5xxeemafEaek7mUp7Y+bI8cKQXdSqhzTOBaOogETcMOVr0pT3BBPXp13477ciw== - -"@lezer/highlight@^1.0.0": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@lezer/highlight/-/highlight-1.1.1.tgz#1f4f12f21320d7de102b46a5416eff49fdf3c695" - integrity sha512-duv9D23O9ghEDnnUDmxu+L8pJy4nYo4AbCOHIudUhscrLSazqeJeK1V50EU6ZufWF1zv0KJwu/frFRyZWXxHBQ== - dependencies: - "@lezer/common" "^1.0.0" - -"@lezer/lr@^1.0.0": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@lezer/lr/-/lr-1.2.3.tgz#f44ca844f15f6762fde4eab877d110567e34ffa1" - integrity sha512-qpB7rBzH8f6Mzjv2AVZRahcm+2Cf7nbIH++uXbvVOL1yIRvVWQ3HAM/saeBLCyz/togB7LGo76qdJYL1uKQlqA== - dependencies: - "@lezer/common" "^1.0.0" - -"@malept/cross-spawn-promise@^1.1.0": - version "1.1.1" - resolved "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz" - integrity sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ== - dependencies: - cross-spawn "^7.0.1" - -"@malept/flatpak-bundler@^0.4.0": - version "0.4.0" - resolved "https://registry.npmjs.org/@malept/flatpak-bundler/-/flatpak-bundler-0.4.0.tgz" - integrity sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q== - dependencies: - debug "^4.1.1" - fs-extra "^9.0.0" - lodash "^4.17.15" - tmp-promise "^3.0.2" - -"@mapbox/node-pre-gyp@^1.0.0": - version "1.0.9" - resolved "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.9.tgz" - integrity sha512-aDF3S3rK9Q2gey/WAttUlISduDItz5BU3306M9Eyv6/oS40aMprnopshtlKTykxRNIBEZuRMaZAnbrQ4QtKGyw== - dependencies: - detect-libc "^2.0.0" - https-proxy-agent "^5.0.0" - make-dir "^3.1.0" - node-fetch "^2.6.7" - nopt "^5.0.0" - npmlog "^5.0.1" - rimraf "^3.0.2" - semver "^7.3.5" - tar "^6.1.11" - -"@nestjs/cli@^8.1.1": - version "8.2.8" - resolved "https://registry.npmjs.org/@nestjs/cli/-/cli-8.2.8.tgz" - integrity sha512-y5Imcw1EY0OxD3POAM7SLUB1rFdn5FjbfSsyJrokjKmXY+i6KcBdbRrv3Ox7aeJ4W7wXuckIXZEUlK6lC52dnA== - dependencies: - "@angular-devkit/core" "13.3.6" - "@angular-devkit/schematics" "13.3.6" - "@angular-devkit/schematics-cli" "13.3.6" - "@nestjs/schematics" "^8.0.3" - chalk "3.0.0" - chokidar "3.5.3" - cli-table3 "0.6.2" - commander "4.1.1" - fork-ts-checker-webpack-plugin "7.2.11" - inquirer "7.3.3" - node-emoji "1.11.0" - ora "5.4.1" - os-name "4.0.1" - rimraf "3.0.2" - shelljs "0.8.5" - source-map-support "0.5.21" - tree-kill "1.2.2" - tsconfig-paths "3.14.1" - tsconfig-paths-webpack-plugin "3.5.2" - typescript "4.7.4" - webpack "5.73.0" - webpack-node-externals "3.0.0" - -"@nestjs/common@^8.0.0": - version "8.4.7" - resolved "https://registry.npmjs.org/@nestjs/common/-/common-8.4.7.tgz" - integrity sha512-m/YsbcBal+gA5CFrDpqXqsSfylo+DIQrkFY3qhVIltsYRfu8ct8J9pqsTO6OPf3mvqdOpFGrV5sBjoyAzOBvsw== - dependencies: - axios "0.27.2" - iterare "1.2.1" - tslib "2.4.0" - uuid "8.3.2" - -"@nestjs/config@^2.1.0": - version "2.2.0" - resolved "https://registry.npmjs.org/@nestjs/config/-/config-2.2.0.tgz" - integrity sha512-78Eg6oMbCy3D/YvqeiGBTOWei1Jwi3f2pSIZcZ1QxY67kYsJzTRTkwRT8Iv30DbK0sGKc1mcloDLD5UXgZAZtg== - dependencies: - dotenv "16.0.1" - dotenv-expand "8.0.3" - lodash "4.17.21" - uuid "8.3.2" - -"@nestjs/core@^8.0.0": - version "8.4.7" - resolved "https://registry.npmjs.org/@nestjs/core/-/core-8.4.7.tgz" - integrity sha512-XB9uexHqzr2xkPo6QSiQWJJttyYYLmvQ5My64cFvWFi7Wk2NIus0/xUNInwX3kmFWB6pF1ab5Y2ZBvWdPwGBhw== - dependencies: - "@nuxtjs/opencollective" "0.3.2" - fast-safe-stringify "2.1.1" - iterare "1.2.1" - object-hash "3.0.0" - path-to-regexp "3.2.0" - tslib "2.4.0" - uuid "8.3.2" - -"@nestjs/mapped-types@*": - version "1.1.0" - resolved "https://registry.npmjs.org/@nestjs/mapped-types/-/mapped-types-1.1.0.tgz" - integrity sha512-+2kSly4P1QI+9eGt+/uGyPdEG1hVz7nbpqPHWZVYgoqz8eOHljpXPag+UCVRw9zo2XCu4sgNUIGe8Uk0+OvUQg== - -"@nestjs/mapped-types@1.0.1": - version "1.0.1" - resolved "https://registry.npmjs.org/@nestjs/mapped-types/-/mapped-types-1.0.1.tgz" - integrity sha512-NFvofzSinp00j5rzUd4tf+xi9od6383iY0JP7o0Bnu1fuItAUkWBgc4EKuIQ3D+c2QI3i9pG1kDWAeY27EMGtg== - -"@nestjs/platform-express@^8.0.0": - version "8.4.7" - resolved "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-8.4.7.tgz" - integrity sha512-lPE5Ltg2NbQGRQIwXWY+4cNrXhJdycbxFDQ8mNxSIuv+LbrJBIdEB/NONk+LLn9N/8d2+I2LsIETGQrPvsejBg== - dependencies: - body-parser "1.20.0" - cors "2.8.5" - express "4.18.1" - multer "1.4.4-lts.1" - tslib "2.4.0" - -"@nestjs/schedule@^2.0.1": - version "2.1.0" - resolved "https://registry.npmjs.org/@nestjs/schedule/-/schedule-2.1.0.tgz" - integrity sha512-4Xaw56WiW3VsxEPPnj/iDtfjcO+sUZyYAeRxD0gnF5havncxjAnv52Iw7UH3DuzzUA784xPGgGje3Fq0Gu925g== - dependencies: - cron "2.0.0" - uuid "8.3.2" - -"@nestjs/schematics@^8.0.0", "@nestjs/schematics@^8.0.3": - version "8.0.11" - resolved "https://registry.npmjs.org/@nestjs/schematics/-/schematics-8.0.11.tgz" - integrity sha512-W/WzaxgH5aE01AiIErE9QrQJ73VR/M/8p8pq0LZmjmNcjZqU5kQyOWUxZg13WYfSpJdOa62t6TZRtFDmgZPoIg== - dependencies: - "@angular-devkit/core" "13.3.5" - "@angular-devkit/schematics" "13.3.5" - fs-extra "10.1.0" - jsonc-parser "3.0.0" - pluralize "8.0.0" - -"@nestjs/serve-static@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@nestjs/serve-static/-/serve-static-3.0.0.tgz#085e7ebbb3c6d6e35b227ea57c8e988c87847309" - integrity sha512-TpXjgs4136dQqWUjEcONqppqXDsrJhRkmKWzuBMOUAnP4HjHpNmlycvkHnDnWSoG2YD4a7Enh4ViYGWqCfHStA== - dependencies: - path-to-regexp "0.2.5" - -"@nestjs/swagger@^5.1.1": - version "5.2.1" - resolved "https://registry.npmjs.org/@nestjs/swagger/-/swagger-5.2.1.tgz" - integrity sha512-7dNa08WCnTsW/oAk3Ujde+z64JMfNm19DhpXasFR8oJp/9pggYAbYU927HpA+GJsSFJX6adjIRZsCKUqaGWznw== - dependencies: - "@nestjs/mapped-types" "1.0.1" - lodash "4.17.21" - path-to-regexp "3.2.0" - -"@nestjs/testing@^8.0.0": - version "8.4.7" - resolved "https://registry.npmjs.org/@nestjs/testing/-/testing-8.4.7.tgz" - integrity sha512-aedpeJFicTBeiTCvJWUG45WMMS53f5eu8t2fXsfjsU1t+WdDJqYcZyrlCzA4dL1B7MfbqaTURdvuVVHTmJO8ag== - dependencies: - tslib "2.4.0" - -"@nestjs/typeorm@^8.1.0": - version "8.1.4" - resolved "https://registry.npmjs.org/@nestjs/typeorm/-/typeorm-8.1.4.tgz" - integrity sha512-hKv0Y9PG7YkHQfjsrNqM1s/VajlT7Mla8gaoblmuLzgMKsOQFsZXSHlXNxXZ8CA4aCPeDUiXtvqc4zocadGiIQ== - dependencies: - uuid "8.3.2" - -"@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": - version "5.1.1-v1" - resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129" - integrity sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg== - dependencies: - eslint-scope "5.1.1" - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@npmcli/fs@^1.0.0": - version "1.1.1" - resolved "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz" - integrity sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ== - dependencies: - "@gar/promisify" "^1.0.1" - semver "^7.3.5" - -"@npmcli/move-file@^1.0.1": - 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== - dependencies: - mkdirp "^1.0.4" - rimraf "^3.0.2" - -"@nuxtjs/opencollective@0.3.2": - version "0.3.2" - resolved "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.3.2.tgz" - integrity sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA== - dependencies: - chalk "^4.1.0" - consola "^2.15.0" - node-fetch "^2.6.1" - -"@onflow/config@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@onflow/config/-/config-1.1.1.tgz#89606681c69791619aeff5f1d41a592337ce109e" - integrity sha512-PqQbZ6sbMp0/puFrq9THEjduLAYyaQM10fAhw9ztWYnYzTeE2h7/TL4RvNqtNrV/yOkGgaChC6Rz7mRxZ9aAGQ== - dependencies: - "@babel/runtime" "^7.18.6" - "@onflow/util-actor" "^1.2.0" - eslint "^8.34.0" - eslint-plugin-jsdoc "^40.0.0" - -"@onflow/config@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@onflow/config/-/config-1.1.2.tgz#e596406ac79249b97df9380583a96c861f23f753" - integrity sha512-Jnorp86YkGFJLpCE4ufY8wva5vW8MJxkPzLRITW+aqUDVH9FQvYuTCLHsujy/Mrr9+WgrClf6MQrA2bUCE2zEg== - dependencies: - "@babel/runtime" "^7.18.6" - "@onflow/util-actor" "^1.2.0" - eslint "^8.34.0" - eslint-plugin-jsdoc "^40.0.0" - -"@onflow/fcl@^1.6.0": - version "1.6.0" - resolved "https://registry.yarnpkg.com/@onflow/fcl/-/fcl-1.6.0.tgz#5ba087c586be4bb1e3967ba00237d658803372ea" - integrity sha512-ksZFzf0JRtSYDNgCJKeuOt1R39DfBs62uym+GVPW9B5ahWjShoD2D9KYHVZiDbvMX19wUmB9vkgkiUvYfYEobw== - dependencies: - "@babel/runtime" "^7.18.6" - "@onflow/config" "^1.1.2" - "@onflow/interaction" "0.0.11" - "@onflow/rlp" "^1.1.0" - "@onflow/sdk" "^1.2.2" - "@onflow/types" "^1.1.0" - "@onflow/util-actor" "^1.2.0" - "@onflow/util-address" "^1.1.0" - "@onflow/util-invariant" "^1.1.0" - "@onflow/util-logger" "^1.2.2" - "@onflow/util-template" "^1.1.0" - "@onflow/util-uid" "^1.1.0" - cross-fetch "^3.1.6" - -"@onflow/interaction@0.0.11": - version "0.0.11" - resolved "https://registry.npmjs.org/@onflow/interaction/-/interaction-0.0.11.tgz" - integrity sha512-Xuq1Mmx6Wyba/F/L+QLQs0yJeQDsIDwy5SKk5vrCuVgIj0yD8k506g5L8ODrbM1LWll8i0tQsoOi0F85vNl5sA== - -"@onflow/rlp@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@onflow/rlp/-/rlp-1.1.0.tgz#e60e0919687cb6539a067bee2d65a0e5e6f01e77" - integrity sha512-JJj4dZpKaWmCOXnado+D3RU5xYAXui9kHOmCVfdLReYHIsYBgxwHCDO/hDiQjrbmfLpiybbJKTaIldu+xkCU3Q== - dependencies: - "@babel/runtime" "^7.18.6" - buffer "^6.0.3" - -"@onflow/sdk@^1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@onflow/sdk/-/sdk-1.2.2.tgz#f58186fffa0f3f87f0a92a98b90fab4e871ed5ee" - integrity sha512-OGwp98C7iP7KUGFoBxgnEr52hnr7vxBTCu/TI/w1giF8USPgjgQXNxJdHVauY54Yu/ruoT6XfdSMAS4PACCB/w== - dependencies: - "@babel/runtime" "^7.18.6" - "@onflow/config" "^1.1.1" - "@onflow/rlp" "^1.1.0" - "@onflow/transport-http" "^1.7.1" - "@onflow/util-actor" "^1.2.0" - "@onflow/util-address" "^1.1.0" - "@onflow/util-invariant" "^1.1.0" - "@onflow/util-logger" "^1.2.1" - "@onflow/util-template" "^1.1.0" - deepmerge "^4.2.2" - sha3 "^2.1.4" - -"@onflow/transport-http@^1.7.1": - version "1.7.1" - resolved "https://registry.yarnpkg.com/@onflow/transport-http/-/transport-http-1.7.1.tgz#b56974e1e75cf2fc8adf027ac16bb25311e79d09" - integrity sha512-enSKRDf2OMIH61ltyZe5pxLB8KifdRdVpWwE0MU2S0Vq5DmNN3FfwUZVh1nrK2aJZkLdryJrNJtvv7ot2NPrYA== - dependencies: - "@babel/runtime" "^7.18.6" - "@onflow/util-address" "^1.1.0" - "@onflow/util-invariant" "^1.1.0" - "@onflow/util-logger" "^1.2.1" - "@onflow/util-template" "^1.1.0" - abort-controller "^3.0.0" - cross-fetch "^3.1.6" - -"@onflow/types@^1.0.3": - version "1.0.3" - resolved "https://registry.npmjs.org/@onflow/types/-/types-1.0.3.tgz" - integrity sha512-7za7NgzRvapB50icVmrL21rVHgPaMS/0K9IKXj0FVZRMo3CSI6MV2qLoGftRVX8oDfiH0Lj/1NWD/iSUW6Ed5w== - dependencies: - "@babel/runtime" "^7.18.6" - -"@onflow/types@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@onflow/types/-/types-1.1.0.tgz#825b5ff38fc5163a646f8f48a5f25910c03a4e85" - integrity sha512-UUd2ZAFqdd8BHW//uTg+YRlh3EIH9Na+UYJ9qXpt6y87qjW0Lf4Zkhn6H5IqvhIJsjK17QYnXLFpoXItD/+ToQ== - dependencies: - "@babel/runtime" "^7.18.6" - -"@onflow/util-actor@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@onflow/util-actor/-/util-actor-1.2.0.tgz#bb244d1f64f332f6ad0893494c8272bd30f721ab" - integrity sha512-voyHXE3qYNC+P75vzv55pGDDwpxxWKWH0aToR/3g9Bq8nKGcGoszxaMJkVy+fKX1akfdT0yKr/GxXRkjCS9SBg== - dependencies: - "@babel/runtime" "^7.18.6" - queue-microtask "1.2.3" - -"@onflow/util-address@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@onflow/util-address/-/util-address-1.1.0.tgz#5ee895669320f4d29e2fa2170ee256e7f52febb3" - integrity sha512-HhJOIfNaYAoeYuTNUe85jt4fqnJhFmSbYqyufiJBrplwd3eKmNsan0NYvVYO4U1ecu3KyuY4D9R/NtjGpHjMlA== - dependencies: - "@babel/runtime" "^7.18.6" - -"@onflow/util-invariant@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@onflow/util-invariant/-/util-invariant-1.1.0.tgz#9a3ef03f82b9777033d1b109dbad4caed08bc623" - integrity sha512-5uxweKl5tqeqB1QLzs3dWWLtpNo7H4PgcmgnRIcC2oItAkELcnVCybDdlfYjKB4n/dlg3rIym8cJQE2tBeOpZQ== - dependencies: - "@babel/runtime" "^7.18.6" - -"@onflow/util-logger@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@onflow/util-logger/-/util-logger-1.2.1.tgz#2ed6f8dcd9041c51b00d943f745766c2fe8fe2ca" - integrity sha512-L8a6S1JakP0HNFI3isddoIRX/MOF+qEMZFsPV3Jbp0g0vIJpyMv7SOeh9DiupEbv0hZS0rH2EApDWGO0jNd0Eg== - dependencies: - "@babel/runtime" "^7.18.6" - "@onflow/config" "^1.1.1" - -"@onflow/util-logger@^1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@onflow/util-logger/-/util-logger-1.2.2.tgz#f16d3381302a98f27b041d7c11716450f03425b5" - integrity sha512-qgOZFfp4NvGuIwZ6zMPiskt/xBNo6wG+L4k/nt3v4/eVzNZeUR5OZ7XlcA0fjtr2a3W9CNt83bmFSq/11ZGgCw== - dependencies: - "@babel/runtime" "^7.18.6" - -"@onflow/util-template@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@onflow/util-template/-/util-template-1.1.0.tgz#e3884bd31e0b95a86a18879f25d09b0244d22805" - integrity sha512-gGqJJH5OTPPRmHk6YxMw4t5Ecy7iHnj00ZlCE7lnlOnpGUNdHrNNfoeE//hO8TBGNNVpOkEQERWiLDph+/oIxg== - dependencies: - "@babel/runtime" "^7.18.6" - -"@onflow/util-uid@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@onflow/util-uid/-/util-uid-1.1.0.tgz#551f448dea7e9178908ae45d326369a7c3f74c71" - integrity sha512-HmWfKCOXoz1/TIu7fRx6iR7Nfhq6q5Tmn4YWc868SIfFeWv/inpvVJyrKX0nORf87csSnRSqdDzrJGBowgcXVA== - dependencies: - "@babel/runtime" "^7.18.6" - -"@pmmmwh/react-refresh-webpack-plugin@^0.5.3": - version "0.5.11" - resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.11.tgz#7c2268cedaa0644d677e8c4f377bc8fb304f714a" - integrity sha512-7j/6vdTym0+qZ6u4XbSAxrWBGYSdCfTzySkj7WAFgDLmSyWlOrWvpyzxlFh5jtw9dn0oL/jtW+06XfFiisN3JQ== - dependencies: - ansi-html-community "^0.0.8" - common-path-prefix "^3.0.0" - core-js-pure "^3.23.3" - error-stack-parser "^2.0.6" - find-up "^5.0.0" - html-entities "^2.1.0" - loader-utils "^2.0.4" - schema-utils "^3.0.0" - source-map "^0.7.3" - -"@popperjs/core@^2.4.0": - version "2.11.6" - resolved "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz" - integrity sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw== - -"@remix-run/router@1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.8.0.tgz#e848d2f669f601544df15ce2a313955e4bf0bafc" - integrity sha512-mrfKqIHnSZRyIzBcanNJmVQELTnX+qagEDlcKO90RgRBVOZGSGvZKeDihTRfWcqoDn5N/NkUcwWTccnpN18Tfg== - -"@rollup/plugin-babel@^5.2.0": - version "5.3.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz#04bc0608f4aa4b2e4b1aebf284344d0f68fda283" - integrity sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q== - dependencies: - "@babel/helper-module-imports" "^7.10.4" - "@rollup/pluginutils" "^3.1.0" - -"@rollup/plugin-node-resolve@^11.2.1": - version "11.2.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz#82aa59397a29cd4e13248b106e6a4a1880362a60" - integrity sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg== - dependencies: - "@rollup/pluginutils" "^3.1.0" - "@types/resolve" "1.17.1" - builtin-modules "^3.1.0" - deepmerge "^4.2.2" - is-module "^1.0.0" - resolve "^1.19.0" - -"@rollup/plugin-replace@^2.4.1": - version "2.4.2" - resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz#a2d539314fbc77c244858faa523012825068510a" - integrity sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg== - dependencies: - "@rollup/pluginutils" "^3.1.0" - magic-string "^0.25.7" - -"@rollup/pluginutils@^3.1.0": - version "3.1.0" - resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz" - integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== - dependencies: - "@types/estree" "0.0.39" - estree-walker "^1.0.1" - picomatch "^2.2.2" - -"@rushstack/eslint-patch@^1.1.0": - version "1.3.3" - resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.3.3.tgz#16ab6c727d8c2020a5b6e4a176a243ecd88d8d69" - integrity sha512-0xd7qez0AQ+MbHatZTlI1gu5vkG8r7MYRUJAHPAHJBmGLs16zpkrpAVLvjQKQOqaXPDUBwOiJzNc00znHSCVBw== - -"@sentry/browser@7.15.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.15.0.tgz#1723dc8efcea9239d26072126755f61f6fb9448d" - integrity sha512-vZYr8L2JmniV8cns4yGOpX32moazz6tsllB1uv7XmmELW98sIuuugVFX0k6cBi89R8pyhdqULFCf9CL8CRguRg== - dependencies: - "@sentry/core" "7.15.0" - "@sentry/types" "7.15.0" - "@sentry/utils" "7.15.0" - tslib "^1.9.3" - -"@sentry/core@7.15.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.15.0.tgz#983e08326afdb8ddb10494372cd22b3886d683c9" - integrity sha512-W8d44g04GShBn4Z9VBTUhf1T9LTMfzUnETEx237zzUucv0kkyj3LsWQsJapWchMbmwr1V/CdnNDN+lGDm8iXQA== - dependencies: - "@sentry/types" "7.15.0" - "@sentry/utils" "7.15.0" - tslib "^1.9.3" - -"@sentry/electron@^4.0.2": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@sentry/electron/-/electron-4.1.0.tgz#2336bf27e80aeeb4ec486c808f367f680b5c53e9" - integrity sha512-ITjfzB0cOpiKVvoXrDEw4uvqbmrARJXRzcJV0KU0KQH5oL6lGGKS+6GPA8JH+6NdeHALx9h9yVx9yg047ew6/Q== - dependencies: - "@sentry/browser" "7.15.0" - "@sentry/core" "7.15.0" - "@sentry/node" "7.15.0" - "@sentry/types" "7.15.0" - "@sentry/utils" "7.15.0" - deepmerge "4.2.2" - tslib "^2.3.1" - -"@sentry/node@7.15.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@sentry/node/-/node-7.15.0.tgz#8784a747d9b933754b29bba954b22f0d54c3b614" - integrity sha512-gfyo6YTo4Sw5pdKWCzs7trqZpBm5D/ArR4vylQrQayfImiYyNY6yaOK1R7g4rM34MXUu91pfVJLUpXvjk/NsHw== - dependencies: - "@sentry/core" "7.15.0" - "@sentry/types" "7.15.0" - "@sentry/utils" "7.15.0" - cookie "^0.4.1" - https-proxy-agent "^5.0.0" - lru_map "^0.3.3" - tslib "^1.9.3" - -"@sentry/types@7.15.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.15.0.tgz#50c57c924993d4dd16b43172d310c66384d17463" - integrity sha512-MN9haDRh9ZOsTotoDTHu2BT3sT8Vs1F0alhizUpDyjN2YgBCqR6JV+AbAE1XNHwS2+5zbppch1PwJUVeE58URQ== - -"@sentry/utils@7.15.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.15.0.tgz#cda642a353a58fd6631979c1e5986788e6db6c43" - integrity sha512-akic22/6xa/RG5Mj7UN6pLc23VnX9zQlKM53L/q3yIr0juckSVthJiiFNdgdqrX03S1tHYlBgPeShKFFTHpkjA== - dependencies: - "@sentry/types" "7.15.0" - tslib "^1.9.3" - -"@sideway/address@^4.1.3": - version "4.1.4" - resolved "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz" - integrity sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw== - dependencies: - "@hapi/hoek" "^9.0.0" - -"@sideway/formula@^3.0.0": - version "3.0.0" - resolved "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz" - integrity sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg== - -"@sideway/pinpoint@^2.0.0": - version "2.0.0" - resolved "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz" - integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== - -"@sinclair/typebox@^0.24.1": - version "0.24.34" - resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.34.tgz" - integrity sha512-x3ejWKw7rpy30Bvm6U0AQMOHdjqe2E3YJrBHlTxH0KFsp77bBa+MH324nJxtXZFpnTy/JW2h5HPYVm0vG2WPnw== - -"@sindresorhus/is@^0.14.0": - version "0.14.0" - resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz" - integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== - -"@sinonjs/commons@^1.7.0": - version "1.8.3" - resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz" - integrity sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ== - dependencies: - type-detect "4.0.8" - -"@sinonjs/fake-timers@^8.0.1": - version "8.1.0" - resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz" - integrity sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg== - dependencies: - "@sinonjs/commons" "^1.7.0" - -"@sqltools/formatter@^1.2.2": - version "1.2.3" - resolved "https://registry.npmjs.org/@sqltools/formatter/-/formatter-1.2.3.tgz" - integrity sha512-O3uyB/JbkAEMZaP3YqyHH7TMnex7tWyCbCI4EfJdOCoN6HIhqdJBWTM6aCCiWQ/5f5wxjgU735QAIpJbjDvmzg== - -"@surma/rollup-plugin-off-main-thread@^2.2.3": - version "2.2.3" - resolved "https://registry.yarnpkg.com/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz#ee34985952ca21558ab0d952f00298ad2190c053" - integrity sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ== - dependencies: - ejs "^3.1.6" - json5 "^2.2.0" - magic-string "^0.25.0" - string.prototype.matchall "^4.0.6" - -"@svgr/babel-plugin-add-jsx-attribute@^5.4.0": - version "5.4.0" - resolved "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz" - integrity sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg== - -"@svgr/babel-plugin-remove-jsx-attribute@^5.4.0": - version "5.4.0" - resolved "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz" - integrity sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg== - -"@svgr/babel-plugin-remove-jsx-empty-expression@^5.0.1": - version "5.0.1" - resolved "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz" - integrity sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA== - -"@svgr/babel-plugin-replace-jsx-attribute-value@^5.0.1": - version "5.0.1" - resolved "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz" - integrity sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ== - -"@svgr/babel-plugin-svg-dynamic-title@^5.4.0": - version "5.4.0" - resolved "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz" - integrity sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg== - -"@svgr/babel-plugin-svg-em-dimensions@^5.4.0": - version "5.4.0" - resolved "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz" - integrity sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw== - -"@svgr/babel-plugin-transform-react-native-svg@^5.4.0": - version "5.4.0" - resolved "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz" - integrity sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q== - -"@svgr/babel-plugin-transform-svg-component@^5.5.0": - version "5.5.0" - resolved "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz" - integrity sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ== - -"@svgr/babel-preset@^5.5.0": - version "5.5.0" - resolved "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-5.5.0.tgz" - integrity sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig== - dependencies: - "@svgr/babel-plugin-add-jsx-attribute" "^5.4.0" - "@svgr/babel-plugin-remove-jsx-attribute" "^5.4.0" - "@svgr/babel-plugin-remove-jsx-empty-expression" "^5.0.1" - "@svgr/babel-plugin-replace-jsx-attribute-value" "^5.0.1" - "@svgr/babel-plugin-svg-dynamic-title" "^5.4.0" - "@svgr/babel-plugin-svg-em-dimensions" "^5.4.0" - "@svgr/babel-plugin-transform-react-native-svg" "^5.4.0" - "@svgr/babel-plugin-transform-svg-component" "^5.5.0" - -"@svgr/core@^5.5.0": - version "5.5.0" - resolved "https://registry.npmjs.org/@svgr/core/-/core-5.5.0.tgz" - integrity sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ== - dependencies: - "@svgr/plugin-jsx" "^5.5.0" - camelcase "^6.2.0" - cosmiconfig "^7.0.0" - -"@svgr/hast-util-to-babel-ast@^5.5.0": - version "5.5.0" - resolved "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz" - integrity sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ== - dependencies: - "@babel/types" "^7.12.6" - -"@svgr/plugin-jsx@^5.5.0": - version "5.5.0" - resolved "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz" - integrity sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA== - dependencies: - "@babel/core" "^7.12.3" - "@svgr/babel-preset" "^5.5.0" - "@svgr/hast-util-to-babel-ast" "^5.5.0" - svg-parser "^2.0.2" - -"@svgr/plugin-svgo@^5.5.0": - version "5.5.0" - resolved "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz" - integrity sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ== - dependencies: - cosmiconfig "^7.0.0" - deepmerge "^4.2.2" - svgo "^1.2.2" - -"@svgr/webpack@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-5.5.0.tgz#aae858ee579f5fa8ce6c3166ef56c6a1b381b640" - integrity sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g== - dependencies: - "@babel/core" "^7.12.3" - "@babel/plugin-transform-react-constant-elements" "^7.12.1" - "@babel/preset-env" "^7.12.1" - "@babel/preset-react" "^7.12.5" - "@svgr/core" "^5.5.0" - "@svgr/plugin-jsx" "^5.5.0" - "@svgr/plugin-svgo" "^5.5.0" - loader-utils "^2.0.0" - -"@szhsin/react-menu@4.0.3": - version "4.0.3" - resolved "https://registry.yarnpkg.com/@szhsin/react-menu/-/react-menu-4.0.3.tgz#c7adc0ec4a7019dafccb56bbda5609fddfcfc9a1" - integrity sha512-TPsOKLEkesE79802evnLt2Mbv/+zwRJdX8776/vxK5ST9SK8SO0A8kRrus6JuxijLxZxFpmY/3VMdoyeCWQHKA== - dependencies: - prop-types "^15.7.2" - react-transition-state "^2.1.0" - -"@szmarczak/http-timer@^1.1.2": - version "1.1.2" - resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz" - integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== - dependencies: - defer-to-connect "^1.0.1" - -"@tanstack/react-table@^8.5.11": - version "8.5.13" - resolved "https://registry.npmjs.org/@tanstack/react-table/-/react-table-8.5.13.tgz" - integrity sha512-k52HsnonKwDZMCIy59HfehTnkJYlqkqyvC+BAV0DyWdN9WmSbVq+Kf+luJVENQnXcnEX47dBHiHAjqZu592ZLQ== - dependencies: - "@tanstack/table-core" "8.5.13" - -"@tanstack/table-core@8.5.13": - version "8.5.13" - resolved "https://registry.npmjs.org/@tanstack/table-core/-/table-core-8.5.13.tgz" - integrity sha512-kvDRjC7LrLNNNgUMfsBz3nHOwbBLFdosWQ16dfbD9D/OJrvFHRXoUIPzF0MNqqSPghaj7/18fnwXHGypvzoh9Q== - -"@testing-library/dom@^7.28.1": - version "7.31.2" - resolved "https://registry.npmjs.org/@testing-library/dom/-/dom-7.31.2.tgz" - integrity sha512-3UqjCpey6HiTZT92vODYLPxTBWlM8ZOOjr3LX5F37/VRipW2M1kX6I/Cm4VXzteZqfGfagg8yXywpcOgQBlNsQ== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/runtime" "^7.12.5" - "@types/aria-query" "^4.2.0" - aria-query "^4.2.2" - chalk "^4.1.0" - dom-accessibility-api "^0.5.6" - lz-string "^1.4.4" - pretty-format "^26.6.2" - -"@testing-library/jest-dom@^5.14.1": - version "5.16.5" - resolved "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.16.5.tgz" - integrity sha512-N5ixQ2qKpi5OLYfwQmUb/5mSV9LneAcaUfp32pn4yCnpb8r/Yz0pXFPck21dIicKmi+ta5WRAknkZCfA8refMA== - dependencies: - "@adobe/css-tools" "^4.0.1" - "@babel/runtime" "^7.9.2" - "@types/testing-library__jest-dom" "^5.9.1" - aria-query "^5.0.0" - chalk "^3.0.0" - css.escape "^1.5.1" - dom-accessibility-api "^0.5.6" - lodash "^4.17.15" - redent "^3.0.0" - -"@testing-library/react@^11.2.7": - version "11.2.7" - resolved "https://registry.npmjs.org/@testing-library/react/-/react-11.2.7.tgz" - integrity sha512-tzRNp7pzd5QmbtXNG/mhdcl7Awfu/Iz1RaVHY75zTdOkmHCuzMhRL83gWHSgOAcjS3CCbyfwUHMZgRJb4kAfpA== - dependencies: - "@babel/runtime" "^7.12.5" - "@testing-library/dom" "^7.28.1" - -"@testing-library/user-event@^12.8.3": - version "12.8.3" - resolved "https://registry.npmjs.org/@testing-library/user-event/-/user-event-12.8.3.tgz" - integrity sha512-IR0iWbFkgd56Bu5ZI/ej8yQwrkCv8Qydx6RzwbKz9faXazR/+5tvYKsZQgyXJiwgpcva127YO6JcWy7YlCfofQ== - dependencies: - "@babel/runtime" "^7.12.5" - -"@tootallnate/once@1": - version "1.1.2" - resolved "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz" - integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== - -"@tootallnate/once@2": - version "2.0.0" - resolved "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz" - integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== - -"@trysound/sax@0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" - integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== - -"@tsconfig/node10@^1.0.7": - version "1.0.9" - resolved "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz" - integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== - -"@tsconfig/node12@^1.0.7": - version "1.0.11" - resolved "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz" - integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== - -"@tsconfig/node14@^1.0.0": - version "1.0.3" - resolved "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz" - integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== - -"@tsconfig/node16@^1.0.2": - version "1.0.3" - resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz" - integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== - -"@types/aria-query@^4.2.0": - version "4.2.2" - resolved "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz" - integrity sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig== - -"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": - version "7.1.19" - resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz" - integrity sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__generator@*": - version "7.6.4" - resolved "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz" - integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - version "7.4.1" - resolved "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz" - integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": - version "7.18.1" - resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.1.tgz" - integrity sha512-FSdLaZh2UxaMuLp9lixWaHq/golWTRWOnRsAXzDTDSDOQLuZb1nsdCt6pJSPWSEQt2eFZ2YVk3oYhn+1kLMeMA== - dependencies: - "@babel/types" "^7.3.0" - -"@types/bn.js@*": - version "5.1.1" - resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.1.tgz#b51e1b55920a4ca26e9285ff79936bbdec910682" - integrity sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g== - dependencies: - "@types/node" "*" - -"@types/body-parser@*": - version "1.19.2" - resolved "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz" - integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== - dependencies: - "@types/connect" "*" - "@types/node" "*" - -"@types/bonjour@^3.5.9": - version "3.5.10" - resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.10.tgz#0f6aadfe00ea414edc86f5d106357cda9701e275" - integrity sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw== - dependencies: - "@types/node" "*" - -"@types/connect-history-api-fallback@^1.3.5": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz#9fd20b3974bdc2bcd4ac6567e2e0f6885cb2cf41" - integrity sha512-4x5FkPpLipqwthjPsF7ZRbOv3uoLUFkTA9G9v583qi4pACvq0uTELrB8OLUzPWUI4IJIyvM85vzkV1nyiI2Lig== - dependencies: - "@types/express-serve-static-core" "*" - "@types/node" "*" - -"@types/connect@*": - version "3.4.35" - resolved "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz" - integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== - dependencies: - "@types/node" "*" - -"@types/cookiejar@*": - version "2.1.2" - resolved "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.2.tgz" - integrity sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog== - -"@types/cron@^1.7.3": - version "1.7.3" - resolved "https://registry.npmjs.org/@types/cron/-/cron-1.7.3.tgz" - integrity sha512-iPmUXyIJG1Js+ldPYhOQcYU3kCAQ2FWrSkm1FJPoii2eYSn6wEW6onPukNTT0bfiflexNSRPl6KWmAIqS+36YA== - dependencies: - "@types/node" "*" - moment ">=2.14.0" - -"@types/dateformat@^3.0.1": - version "3.0.1" - resolved "https://registry.npmjs.org/@types/dateformat/-/dateformat-3.0.1.tgz" - integrity sha512-KlPPdikagvL6ELjWsljbyDIPzNCeliYkqRpI+zea99vBBbCIA5JNshZAwQKTON139c87y9qvTFVgkFd14rtS4g== - -"@types/debug@^4.1.6": - version "4.1.7" - resolved "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz" - integrity sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg== - dependencies: - "@types/ms" "*" - -"@types/elliptic@^6.4.14": - version "6.4.14" - resolved "https://registry.yarnpkg.com/@types/elliptic/-/elliptic-6.4.14.tgz#7bbaad60567a588c1f08b10893453e6b9b4de48e" - integrity sha512-z4OBcDAU0GVwDTuwJzQCiL6188QvZMkvoERgcVjq0/mPM8jCfdwZ3x5zQEVoL9WCAru3aG5wl3Z5Ww5wBWn7ZQ== - dependencies: - "@types/bn.js" "*" - -"@types/eslint-scope@^3.7.3": - version "3.7.4" - resolved "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz" - integrity sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA== - dependencies: - "@types/eslint" "*" - "@types/estree" "*" - -"@types/eslint@*": - version "8.4.6" - resolved "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.6.tgz" - integrity sha512-/fqTbjxyFUaYNO7VcW5g+4npmqVACz1bB7RTHYuLj+PRjw9hrCwrUXVQFpChUS0JsyEFvMZ7U/PfmvWgxJhI9g== - dependencies: - "@types/estree" "*" - "@types/json-schema" "*" - -"@types/eslint@^7.29.0 || ^8.4.1": - version "8.44.2" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.44.2.tgz#0d21c505f98a89b8dd4d37fa162b09da6089199a" - integrity sha512-sdPRb9K6iL5XZOmBubg8yiFp5yS/JdUDQsq5e6h95km91MCYMuvp7mh1fjPEYUhvHepKpZOjnEaMBR4PxjWDzg== - dependencies: - "@types/estree" "*" - "@types/json-schema" "*" - -"@types/estree@*": - version "1.0.0" - resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz" - integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ== - -"@types/estree@0.0.39": - version "0.0.39" - resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz" - integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== - -"@types/estree@^0.0.51": - version "0.0.51" - resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz" - integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== - -"@types/estree@^1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" - integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== - -"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33": - version "4.17.35" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz#c95dd4424f0d32e525d23812aa8ab8e4d3906c4f" - integrity sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg== - dependencies: - "@types/node" "*" - "@types/qs" "*" - "@types/range-parser" "*" - "@types/send" "*" - -"@types/express-serve-static-core@^4.17.18": - 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== - dependencies: - "@types/node" "*" - "@types/qs" "*" - "@types/range-parser" "*" - -"@types/express@*": - version "4.17.17" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.17.tgz#01d5437f6ef9cfa8668e616e13c2f2ac9a491ae4" - integrity sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q== - dependencies: - "@types/body-parser" "*" - "@types/express-serve-static-core" "^4.17.33" - "@types/qs" "*" - "@types/serve-static" "*" - -"@types/express@^4.17.13": - version "4.17.14" - resolved "https://registry.npmjs.org/@types/express/-/express-4.17.14.tgz" - integrity sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg== - dependencies: - "@types/body-parser" "*" - "@types/express-serve-static-core" "^4.17.18" - "@types/qs" "*" - "@types/serve-static" "*" - -"@types/fs-extra@^9.0.11": - version "9.0.13" - resolved "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz" - integrity sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA== - dependencies: - "@types/node" "*" - -"@types/glob@^7.1.1": - version "7.2.0" - resolved "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz" - integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== - dependencies: - "@types/minimatch" "*" - "@types/node" "*" - -"@types/graceful-fs@^4.1.2": - version "4.1.5" - resolved "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz" - integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== - dependencies: - "@types/node" "*" - -"@types/html-minifier-terser@^6.0.0": - version "6.1.0" - resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35" - integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== - -"@types/http-errors@*": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.1.tgz#20172f9578b225f6c7da63446f56d4ce108d5a65" - integrity sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ== - -"@types/http-proxy@^1.17.8": - version "1.17.11" - resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.11.tgz#0ca21949a5588d55ac2b659b69035c84bd5da293" - integrity sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA== - dependencies: - "@types/node" "*" - -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.4" - resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz" - integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== - -"@types/istanbul-lib-report@*": - version "3.0.0" - resolved "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" - integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== - dependencies: - "@types/istanbul-lib-coverage" "*" - -"@types/istanbul-reports@^3.0.0": - version "3.0.1" - resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz" - integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== - dependencies: - "@types/istanbul-lib-report" "*" - -"@types/jest@*": - version "29.0.0" - resolved "https://registry.npmjs.org/@types/jest/-/jest-29.0.0.tgz" - integrity sha512-X6Zjz3WO4cT39Gkl0lZ2baFRaEMqJl5NC1OjElkwtNzAlbkr2K/WJXkBkH5VP0zx4Hgsd2TZYdOEfvp2Dxia+Q== - dependencies: - expect "^29.0.0" - pretty-format "^29.0.0" - -"@types/jest@^26.0.24": - version "26.0.24" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.24.tgz#943d11976b16739185913a1936e0de0c4a7d595a" - integrity sha512-E/X5Vib8BWqZNRlDxj9vYXhsDwPYbPINqKF9BsnSoon4RQ0D9moEuLD8txgyypFLH7J4+Lho9Nr/c8H0Fi+17w== - dependencies: - jest-diff "^26.0.0" - pretty-format "^26.0.0" - -"@types/joi@^17.2.3": - version "17.2.3" - resolved "https://registry.npmjs.org/@types/joi/-/joi-17.2.3.tgz" - integrity sha512-dGjs/lhrWOa+eO0HwgxCSnDm5eMGCsXuvLglMghJq32F6q5LyyNuXb41DHzrg501CKNOSSAHmfB7FDGeUnDmzw== - dependencies: - joi "*" - -"@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.7", "@types/json-schema@^7.0.8": - version "7.0.11" - resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz" - integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== - -"@types/json-schema@^7.0.4", "@types/json-schema@^7.0.9": - version "7.0.12" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.12.tgz#d70faba7039d5fca54c83c7dbab41051d2b6f6cb" - integrity sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA== - -"@types/json5@^0.0.29": - version "0.0.29" - resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" - integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== - -"@types/lodash@^4.14.175": - version "4.14.184" - resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.184.tgz" - integrity sha512-RoZphVtHbxPZizt4IcILciSWiC6dcn+eZ8oX9IWEYfDMcocdd42f7NPI6fQj+6zI8y4E0L7gu2pcZKLGTRaV9Q== - -"@types/mime@*": - version "3.0.1" - resolved "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz" - integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== - -"@types/mime@^1": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" - integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== - -"@types/minimatch@*": - version "5.1.2" - resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz" - integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== - -"@types/mixpanel-browser@^2.38.0": - version "2.38.0" - resolved "https://registry.yarnpkg.com/@types/mixpanel-browser/-/mixpanel-browser-2.38.0.tgz#b3e28e1ba06c10a9f88510b88f1ac9d1b2adfc42" - integrity sha512-TR8rvsILnqXA7oiiGOxuMGXwvDeCoQDonXJB5UR+TYvEAFpiK8ReFj5LhZT+Xhm3NpI9aPoju30jB2ssorSUww== - -"@types/ms@*": - version "0.7.31" - resolved "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz" - integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA== - -"@types/node@*", "@types/node@^16.11.26": - version "16.11.59" - resolved "https://registry.npmjs.org/@types/node/-/node-16.11.59.tgz" - integrity sha512-6u+36Dj3aDzhfBVUf/mfmc92OEdzQ2kx2jcXGdigfl70E/neV21ZHE6UCz4MDzTRcVqGAM27fk+DLXvyDsn3Jw== - -"@types/node@16.9.1": - version "16.9.1" - resolved "https://registry.npmjs.org/@types/node/-/node-16.9.1.tgz" - integrity sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g== - -"@types/node@^12.20.27": - version "12.20.55" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" - integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== - -"@types/parse-json@^4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz" - integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== - -"@types/plist@^3.0.1": - version "3.0.2" - resolved "https://registry.npmjs.org/@types/plist/-/plist-3.0.2.tgz" - integrity sha512-ULqvZNGMv0zRFvqn8/4LSPtnmN4MfhlPNtJCTpKuIIxGVGZ2rYWzFXrvEBoh9CVyqSE7D6YFRJ1hydLHI6kbWw== - dependencies: - "@types/node" "*" - xmlbuilder ">=11.0.1" - -"@types/prettier@^2.1.5": - version "2.7.0" - resolved "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.0.tgz" - integrity sha512-RI1L7N4JnW5gQw2spvL7Sllfuf1SaHdrZpCHiBlCXjIlufi1SMNnbu2teze3/QE67Fg2tBlH7W+mi4hVNk4p0A== - -"@types/prop-types@*": - version "15.7.5" - resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz" - integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== - -"@types/q@^1.5.1": - version "1.5.5" - resolved "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz" - integrity sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ== - -"@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== - -"@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== - -"@types/react-dom@^17.0.9": - version "17.0.17" - resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.17.tgz" - integrity sha512-VjnqEmqGnasQKV0CWLevqMTXBYG9GbwuE6x3VetERLh0cq2LTptFE73MrQi2S7GkKXCf2GgwItB/melLnxfnsg== - dependencies: - "@types/react" "^17" - -"@types/react-helmet@^6.1.7": - version "6.1.7" - resolved "https://registry.yarnpkg.com/@types/react-helmet/-/react-helmet-6.1.7.tgz#4cecc03165084727408d29d92d8fdd4a7e267403" - integrity sha512-mUFOrdR3AIvHE8BEaqzfPEnR62xq5PHQJehhgNtj78x0d5NOxUCQ0j+r9OZ4RvB+prNZx9wvQnVW8ApFBX+fig== - dependencies: - "@types/react" "*" - -"@types/react-timeago@^4.1.3": - version "4.1.3" - resolved "https://registry.npmjs.org/@types/react-timeago/-/react-timeago-4.1.3.tgz" - integrity sha512-XaaMBzuXLw7lxPPDs/fenlohcf3NDqM5qP4oOL/Meu+Hb1QChW4Igw/SruS1llEqch18RQB3wDTIwvqq4nivvw== - dependencies: - "@types/react" "*" - -"@types/react@*": - version "18.0.18" - resolved "https://registry.npmjs.org/@types/react/-/react-18.0.18.tgz" - integrity sha512-6hI08umYs6NaiHFEEGioXnxJ+oEhY3eRz8VCUaudZmGdtvPviCJB8mgaMxaDWAdPSYd4eFavrPk2QIolwbLYrg== - dependencies: - "@types/prop-types" "*" - "@types/scheduler" "*" - csstype "^3.0.2" - -"@types/react@^17", "@types/react@^17.0.24": - version "17.0.49" - resolved "https://registry.npmjs.org/@types/react/-/react-17.0.49.tgz" - integrity sha512-CCBPMZaPhcKkYUTqFs/hOWqKjPxhTEmnZWjlHHgIMop67DsXywf9B5Os9Hz8KSacjNOgIdnZVJamwl232uxoPg== - dependencies: - "@types/prop-types" "*" - "@types/scheduler" "*" - csstype "^3.0.2" - -"@types/resolve@1.17.1": - version "1.17.1" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" - integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== - dependencies: - "@types/node" "*" - -"@types/retry@0.12.0": - version "0.12.0" - resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" - integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== - -"@types/scheduler@*": - version "0.16.2" - resolved "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz" - integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== - -"@types/semver@^7.3.12": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.0.tgz#591c1ce3a702c45ee15f47a42ade72c2fd78978a" - integrity sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw== - -"@types/semver@^7.3.6": - version "7.3.12" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.12.tgz#920447fdd78d76b19de0438b7f60df3c4a80bf1c" - integrity sha512-WwA1MW0++RfXmCr12xeYOOC5baSC9mSb0ZqCquFzKhcoF4TvHu5MKOuXsncgZcpVFhB1pXd5hZmM0ryAoCp12A== - -"@types/send@*": - version "0.17.1" - resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.1.tgz#ed4932b8a2a805f1fe362a70f4e62d0ac994e301" - integrity sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q== - dependencies: - "@types/mime" "^1" - "@types/node" "*" - -"@types/serve-index@^1.9.1": - version "1.9.1" - resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.1.tgz#1b5e85370a192c01ec6cec4735cf2917337a6278" - integrity sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg== - dependencies: - "@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== - dependencies: - "@types/mime" "*" - "@types/node" "*" - -"@types/serve-static@^1.13.10": - version "1.15.2" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.2.tgz#3e5419ecd1e40e7405d34093f10befb43f63381a" - integrity sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw== - dependencies: - "@types/http-errors" "*" - "@types/mime" "*" - "@types/node" "*" - -"@types/sockjs@^0.3.33": - version "0.3.33" - resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.33.tgz#570d3a0b99ac995360e3136fd6045113b1bd236f" - integrity sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw== - dependencies: - "@types/node" "*" - -"@types/stack-utils@^2.0.0": - version "2.0.1" - resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz" - integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== - -"@types/superagent@*": - version "4.1.15" - resolved "https://registry.npmjs.org/@types/superagent/-/superagent-4.1.15.tgz" - integrity sha512-mu/N4uvfDN2zVQQ5AYJI/g4qxn2bHB6521t1UuH09ShNWjebTqN0ZFuYK9uYjcgmI0dTQEs+Owi1EO6U0OkOZQ== - dependencies: - "@types/cookiejar" "*" - "@types/node" "*" - -"@types/supertest@^2.0.11": - version "2.0.12" - resolved "https://registry.npmjs.org/@types/supertest/-/supertest-2.0.12.tgz" - integrity sha512-X3HPWTwXRerBZS7Mo1k6vMVR1Z6zmJcDVn5O/31whe0tnjE4te6ZJSJGq1RiqHPjzPdMTfjCFogDJmwng9xHaQ== - dependencies: - "@types/superagent" "*" - -"@types/testing-library__jest-dom@^5.9.1": - version "5.14.5" - resolved "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.5.tgz" - integrity sha512-SBwbxYoyPIvxHbeHxTZX2Pe/74F/tX2/D3mMvzabdeJ25bBojfW0TyB8BHrbq/9zaaKICJZjLP+8r6AeZMFCuQ== - dependencies: - "@types/jest" "*" - -"@types/trusted-types@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.3.tgz#a136f83b0758698df454e328759dbd3d44555311" - integrity sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g== - -"@types/verror@^1.10.3": - version "1.10.6" - resolved "https://registry.npmjs.org/@types/verror/-/verror-1.10.6.tgz" - integrity sha512-NNm+gdePAX1VGvPcGZCDKQZKYSiAWigKhKaz5KF94hG6f2s8de9Ow5+7AbXoeKxL8gavZfk4UquSAygOF2duEQ== - -"@types/ws@^8.5.5": - version "8.5.5" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.5.tgz#af587964aa06682702ee6dcbc7be41a80e4b28eb" - integrity sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg== - dependencies: - "@types/node" "*" - -"@types/yargs-parser@*": - version "21.0.0" - resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz" - integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== - -"@types/yargs@^15.0.0": - version "15.0.14" - resolved "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz" - integrity sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ== - dependencies: - "@types/yargs-parser" "*" - -"@types/yargs@^16.0.0": - version "16.0.4" - resolved "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz" - integrity sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw== - dependencies: - "@types/yargs-parser" "*" - -"@types/yargs@^17.0.1", "@types/yargs@^17.0.8": - version "17.0.12" - resolved "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.12.tgz" - integrity sha512-Nz4MPhecOFArtm81gFQvQqdV7XYCrWKx5uUt6GNHredFHn1i2mtWqXTON7EPXMtNi1qjtjEM/VCHDhcHsAMLXQ== - dependencies: - "@types/yargs-parser" "*" - -"@types/yauzl@^2.9.1": - version "2.10.0" - resolved "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz" - integrity sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw== - dependencies: - "@types/node" "*" - -"@typescript-eslint/eslint-plugin@^4.31.2": - version "4.33.0" - resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz" - integrity sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg== - dependencies: - "@typescript-eslint/experimental-utils" "4.33.0" - "@typescript-eslint/scope-manager" "4.33.0" - debug "^4.3.1" - functional-red-black-tree "^1.0.1" - ignore "^5.1.8" - regexpp "^3.1.0" - semver "^7.3.5" - tsutils "^3.21.0" - -"@typescript-eslint/eslint-plugin@^5.5.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz#aeef0328d172b9e37d9bab6dbc13b87ed88977db" - integrity sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag== - dependencies: - "@eslint-community/regexpp" "^4.4.0" - "@typescript-eslint/scope-manager" "5.62.0" - "@typescript-eslint/type-utils" "5.62.0" - "@typescript-eslint/utils" "5.62.0" - debug "^4.3.4" - graphemer "^1.4.0" - ignore "^5.2.0" - natural-compare-lite "^1.4.0" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/experimental-utils@4.33.0": - version "4.33.0" - resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz" - integrity sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q== - dependencies: - "@types/json-schema" "^7.0.7" - "@typescript-eslint/scope-manager" "4.33.0" - "@typescript-eslint/types" "4.33.0" - "@typescript-eslint/typescript-estree" "4.33.0" - eslint-scope "^5.1.1" - eslint-utils "^3.0.0" - -"@typescript-eslint/experimental-utils@^5.0.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-5.62.0.tgz#14559bf73383a308026b427a4a6129bae2146741" - integrity sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw== - dependencies: - "@typescript-eslint/utils" "5.62.0" - -"@typescript-eslint/parser@^4.31.2": - version "4.33.0" - resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz" - integrity sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA== - dependencies: - "@typescript-eslint/scope-manager" "4.33.0" - "@typescript-eslint/types" "4.33.0" - "@typescript-eslint/typescript-estree" "4.33.0" - debug "^4.3.1" - -"@typescript-eslint/parser@^5.5.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.62.0.tgz#1b63d082d849a2fcae8a569248fbe2ee1b8a56c7" - integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA== - dependencies: - "@typescript-eslint/scope-manager" "5.62.0" - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/typescript-estree" "5.62.0" - debug "^4.3.4" - -"@typescript-eslint/scope-manager@4.33.0": - version "4.33.0" - resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz" - integrity sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ== - dependencies: - "@typescript-eslint/types" "4.33.0" - "@typescript-eslint/visitor-keys" "4.33.0" - -"@typescript-eslint/scope-manager@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" - integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== - dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" - -"@typescript-eslint/type-utils@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz#286f0389c41681376cdad96b309cedd17d70346a" - integrity sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew== - dependencies: - "@typescript-eslint/typescript-estree" "5.62.0" - "@typescript-eslint/utils" "5.62.0" - debug "^4.3.4" - tsutils "^3.21.0" - -"@typescript-eslint/types@4.33.0": - version "4.33.0" - resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz" - integrity sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ== - -"@typescript-eslint/types@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" - integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== - -"@typescript-eslint/typescript-estree@4.33.0": - version "4.33.0" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz" - integrity sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA== - dependencies: - "@typescript-eslint/types" "4.33.0" - "@typescript-eslint/visitor-keys" "4.33.0" - debug "^4.3.1" - globby "^11.0.3" - is-glob "^4.0.1" - semver "^7.3.5" - tsutils "^3.21.0" - -"@typescript-eslint/typescript-estree@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" - integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== - dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/utils@5.62.0", "@typescript-eslint/utils@^5.58.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" - integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@types/json-schema" "^7.0.9" - "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.62.0" - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/typescript-estree" "5.62.0" - eslint-scope "^5.1.1" - semver "^7.3.7" - -"@typescript-eslint/visitor-keys@4.33.0": - version "4.33.0" - resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz" - integrity sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg== - dependencies: - "@typescript-eslint/types" "4.33.0" - eslint-visitor-keys "^2.0.0" - -"@typescript-eslint/visitor-keys@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" - integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== - dependencies: - "@typescript-eslint/types" "5.62.0" - eslint-visitor-keys "^3.3.0" - -"@uiw/codemirror-extensions-basic-setup@4.12.4", "@uiw/codemirror-extensions-basic-setup@^4.12.4": - version "4.12.4" - resolved "https://registry.yarnpkg.com/@uiw/codemirror-extensions-basic-setup/-/codemirror-extensions-basic-setup-4.12.4.tgz#aec0ad943b0a3ec7e3959a62fea68d619255878e" - integrity sha512-owSCcRBtS2wYjxgBFkuIjfjWJHsR8AxgsQtqPpHB/6U0zCLuzKS/OM5ZRS2T3rdOizg0hCPztVvmshWeKjF+qw== - dependencies: - "@codemirror/autocomplete" "^6.0.0" - "@codemirror/commands" "^6.0.0" - "@codemirror/language" "^6.0.0" - "@codemirror/lint" "^6.0.0" - "@codemirror/search" "^6.0.0" - "@codemirror/state" "^6.0.0" - "@codemirror/view" "^6.0.0" - -"@uiw/codemirror-theme-github@^4.12.4": - version "4.12.4" - resolved "https://registry.yarnpkg.com/@uiw/codemirror-theme-github/-/codemirror-theme-github-4.12.4.tgz#db6eaecdf23bf6230ff64c44befddf0d6fdd22fc" - integrity sha512-ni5/u6aqv+4Nq5i7BaQiDFmZGu/+BhoptjxvNBlqJjVuYeUfv27zFTdcaFf2GKVL7mPMX4Q4MltVGKDYoWe14Q== - dependencies: - "@uiw/codemirror-themes" "4.12.4" - -"@uiw/codemirror-themes@4.12.4": - version "4.12.4" - resolved "https://registry.yarnpkg.com/@uiw/codemirror-themes/-/codemirror-themes-4.12.4.tgz#d8d06a26045104bb6a666f2eb5646d6830f1663e" - integrity sha512-ekySMFlXaJ4u0TCz/caHG8HqJPT0+viUA2ZQ4yZ+F1z2Lk9HgMS/1YfRj8vHuEUPNXc9Fsy5qxwTp7I1hEanEg== - dependencies: - "@codemirror/language" "^6.0.0" - "@codemirror/state" "^6.0.0" - "@codemirror/view" "^6.0.0" - -"@uiw/react-codemirror@^4.12.4": - version "4.12.4" - resolved "https://registry.yarnpkg.com/@uiw/react-codemirror/-/react-codemirror-4.12.4.tgz#26c36e7957bc51894bc6526b3922645215ad46d5" - integrity sha512-92TAvN2z5snPjPtJDLmbqrqsXXYFYlBnWraXZuDc1XGaw80tB26ZkdEW79CD2QM4Y9LhFIt+sauwlmiAVDs/5A== - dependencies: - "@babel/runtime" "^7.18.6" - "@codemirror/commands" "^6.1.0" - "@codemirror/state" "^6.1.1" - "@codemirror/theme-one-dark" "^6.0.0" - "@uiw/codemirror-extensions-basic-setup" "4.12.4" - codemirror "^6.0.0" - -"@webassemblyjs/ast@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz" - integrity sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw== - dependencies: - "@webassemblyjs/helper-numbers" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - -"@webassemblyjs/ast@1.11.6", "@webassemblyjs/ast@^1.11.5": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.6.tgz#db046555d3c413f8966ca50a95176a0e2c642e24" - integrity sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q== - dependencies: - "@webassemblyjs/helper-numbers" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - -"@webassemblyjs/floating-point-hex-parser@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz" - integrity sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ== - -"@webassemblyjs/floating-point-hex-parser@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz#dacbcb95aff135c8260f77fa3b4c5fea600a6431" - integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw== - -"@webassemblyjs/helper-api-error@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz" - integrity sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg== - -"@webassemblyjs/helper-api-error@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz#6132f68c4acd59dcd141c44b18cbebbd9f2fa768" - integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== - -"@webassemblyjs/helper-buffer@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz" - integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA== - -"@webassemblyjs/helper-buffer@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz#b66d73c43e296fd5e88006f18524feb0f2c7c093" - integrity sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA== - -"@webassemblyjs/helper-numbers@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz" - integrity sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ== - dependencies: - "@webassemblyjs/floating-point-hex-parser" "1.11.1" - "@webassemblyjs/helper-api-error" "1.11.1" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/helper-numbers@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz#cbce5e7e0c1bd32cf4905ae444ef64cea919f1b5" - integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g== - dependencies: - "@webassemblyjs/floating-point-hex-parser" "1.11.6" - "@webassemblyjs/helper-api-error" "1.11.6" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/helper-wasm-bytecode@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz" - integrity sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q== - -"@webassemblyjs/helper-wasm-bytecode@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz#bb2ebdb3b83aa26d9baad4c46d4315283acd51e9" - integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== - -"@webassemblyjs/helper-wasm-section@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz" - integrity sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-buffer" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/wasm-gen" "1.11.1" - -"@webassemblyjs/helper-wasm-section@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz#ff97f3863c55ee7f580fd5c41a381e9def4aa577" - integrity sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-buffer" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/wasm-gen" "1.11.6" - -"@webassemblyjs/ieee754@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz" - integrity sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/ieee754@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz#bb665c91d0b14fffceb0e38298c329af043c6e3a" - integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz" - integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/leb128@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz#70e60e5e82f9ac81118bc25381a0b283893240d7" - integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz" - integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ== - -"@webassemblyjs/utf8@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#90f8bc34c561595fe156603be7253cdbcd0fab5a" - integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== - -"@webassemblyjs/wasm-edit@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz" - integrity sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-buffer" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/helper-wasm-section" "1.11.1" - "@webassemblyjs/wasm-gen" "1.11.1" - "@webassemblyjs/wasm-opt" "1.11.1" - "@webassemblyjs/wasm-parser" "1.11.1" - "@webassemblyjs/wast-printer" "1.11.1" - -"@webassemblyjs/wasm-edit@^1.11.5": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz#c72fa8220524c9b416249f3d94c2958dfe70ceab" - integrity sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-buffer" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/helper-wasm-section" "1.11.6" - "@webassemblyjs/wasm-gen" "1.11.6" - "@webassemblyjs/wasm-opt" "1.11.6" - "@webassemblyjs/wasm-parser" "1.11.6" - "@webassemblyjs/wast-printer" "1.11.6" - -"@webassemblyjs/wasm-gen@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz" - integrity sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/ieee754" "1.11.1" - "@webassemblyjs/leb128" "1.11.1" - "@webassemblyjs/utf8" "1.11.1" - -"@webassemblyjs/wasm-gen@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz#fb5283e0e8b4551cc4e9c3c0d7184a65faf7c268" - integrity sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/ieee754" "1.11.6" - "@webassemblyjs/leb128" "1.11.6" - "@webassemblyjs/utf8" "1.11.6" - -"@webassemblyjs/wasm-opt@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz" - integrity sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-buffer" "1.11.1" - "@webassemblyjs/wasm-gen" "1.11.1" - "@webassemblyjs/wasm-parser" "1.11.1" - -"@webassemblyjs/wasm-opt@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz#d9a22d651248422ca498b09aa3232a81041487c2" - integrity sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-buffer" "1.11.6" - "@webassemblyjs/wasm-gen" "1.11.6" - "@webassemblyjs/wasm-parser" "1.11.6" - -"@webassemblyjs/wasm-parser@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz" - integrity sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-api-error" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/ieee754" "1.11.1" - "@webassemblyjs/leb128" "1.11.1" - "@webassemblyjs/utf8" "1.11.1" - -"@webassemblyjs/wasm-parser@1.11.6", "@webassemblyjs/wasm-parser@^1.11.5": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz#bb85378c527df824004812bbdb784eea539174a1" - integrity sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-api-error" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/ieee754" "1.11.6" - "@webassemblyjs/leb128" "1.11.6" - "@webassemblyjs/utf8" "1.11.6" - -"@webassemblyjs/wast-printer@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz" - integrity sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/wast-printer@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz#a7bf8dd7e362aeb1668ff43f35cb849f188eff20" - integrity sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@xtuc/long" "4.2.2" - -"@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== - -"@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== - -abab@^2.0.3, abab@^2.0.5: - version "2.0.6" - resolved "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz" - integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== - -abbrev@1: - version "1.1.1" - resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - -abort-controller@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" - integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== - dependencies: - event-target-shim "^5.0.0" - -accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: - 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== - dependencies: - mime-types "~2.1.34" - negotiator "0.6.3" - -acorn-globals@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz" - integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== - dependencies: - acorn "^7.1.1" - acorn-walk "^7.1.1" - -acorn-import-assertions@^1.7.6: - version "1.8.0" - resolved "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz" - integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== - -acorn-import-assertions@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" - integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== - -acorn-jsx@^5.3.1, acorn-jsx@^5.3.2: - version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn-walk@^7.1.1: - version "7.2.0" - resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz" - integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== - -acorn-walk@^8.1.1: - version "8.2.0" - resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz" - integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== - -acorn@^7.1.1, acorn@^7.4.0: - version "7.4.1" - resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== - -acorn@^8.2.4, acorn@^8.4.1, acorn@^8.5.0: - version "8.8.0" - resolved "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz" - integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== - -acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: - version "8.10.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" - integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== - -address@^1.0.1: - version "1.2.0" - resolved "https://registry.npmjs.org/address/-/address-1.2.0.tgz" - integrity sha512-tNEZYz5G/zYunxFm7sfhAxkXEuLj3K6BKwv6ZURlsF6yiUQ65z0Q2wZW9L5cPUl9ocofGvXOdFYbFHp0+6MOig== - -address@^1.1.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/address/-/address-1.2.2.tgz#2b5248dac5485a6390532c6a517fda2e3faac89e" - integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA== - -adjust-sourcemap-loader@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz#fc4a0fd080f7d10471f30a7320f25560ade28c99" - integrity sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A== - dependencies: - loader-utils "^2.0.0" - regex-parser "^2.2.11" - -agent-base@6, agent-base@^6.0.2: - version "6.0.2" - resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== - dependencies: - debug "4" - -agentkeepalive@^4.1.3: - version "4.2.1" - resolved "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz" - integrity sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA== - dependencies: - debug "^4.1.0" - depd "^1.1.2" - humanize-ms "^1.2.1" - -aggregate-error@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz" - integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== - dependencies: - clean-stack "^2.0.0" - indent-string "^4.0.0" - -ajv-formats@2.1.1, ajv-formats@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz" - integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== - dependencies: - ajv "^8.0.0" - -ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: - version "3.5.2" - resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" - integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== - -ajv-keywords@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" - integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== - dependencies: - fast-deep-equal "^3.1.3" - -ajv@8.9.0: - version "8.9.0" - resolved "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz" - integrity sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - -ajv@^6.10.0, ajv@^6.12.0, ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: - version "6.12.6" - resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - 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" - -ajv@^8.0.0, ajv@^8.0.1: - version "8.11.0" - resolved "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz" - integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - -ajv@^8.6.0, ajv@^8.9.0: - version "8.12.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" - integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - -ansi-align@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz" - integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== - dependencies: - string-width "^4.1.0" - -ansi-colors@4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz" - integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== - -ansi-colors@^4.1.1: - version "4.1.3" - resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz" - integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== - -ansi-escapes@^4.2.1, ansi-escapes@^4.3.0, ansi-escapes@^4.3.1: - version "4.3.2" - resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== - dependencies: - type-fest "^0.21.3" - -ansi-html-community@^0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" - integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" - integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== - -ansi-regex@^5.0.0, ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-regex@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" - integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== - -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" - integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - 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" - -ansi-styles@^5.0.0: - version "5.2.0" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" - integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== - -ansi-to-html@^0.7.2: - version "0.7.2" - resolved "https://registry.yarnpkg.com/ansi-to-html/-/ansi-to-html-0.7.2.tgz#a92c149e4184b571eb29a0135ca001a8e2d710cb" - integrity sha512-v6MqmEpNlxF+POuyhKkidusCHWWkaLcGRURzivcU3I9tv7k4JVhFcnukrM5Rlk2rUywdZuzYAZ+kbZqWCnfN3g== - dependencies: - entities "^2.2.0" - -any-base@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz" - integrity sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg== - -any-promise@^1.0.0: - version "1.3.0" - resolved "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz" - integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== - -anymatch@^3.0.3, anymatch@~3.1.2: - 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" - -app-builder-bin@4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-4.0.0.tgz" - integrity sha512-xwdG0FJPQMe0M0UA4Tz0zEB8rBJTRA5a476ZawAqiBkMv16GRK5xpXThOjMaEOFnZ6zabejjG4J3da0SXG63KA== - -app-builder-lib@23.3.3: - version "23.3.3" - resolved "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-23.3.3.tgz" - integrity sha512-m0+M53+HYMzqKxwNQZT143K7WwXEGUy9LY31l8dJphXx2P/FQod615mVbxHyqbDCG4J5bHdWm21qZ0e2DVY6CQ== - dependencies: - "7zip-bin" "~5.1.1" - "@develar/schema-utils" "~2.6.5" - "@electron/universal" "1.2.1" - "@malept/flatpak-bundler" "^0.4.0" - async-exit-hook "^2.0.1" - bluebird-lst "^1.0.9" - builder-util "23.3.3" - builder-util-runtime "9.0.3" - chromium-pickle-js "^0.2.0" - debug "^4.3.4" - ejs "^3.1.7" - electron-osx-sign "^0.6.0" - electron-publish "23.3.3" - form-data "^4.0.0" - fs-extra "^10.1.0" - hosted-git-info "^4.1.0" - is-ci "^3.0.0" - isbinaryfile "^4.0.10" - js-yaml "^4.1.0" - lazy-val "^1.0.5" - minimatch "^3.1.2" - read-config-file "6.2.0" - sanitize-filename "^1.6.3" - semver "^7.3.7" - tar "^6.1.11" - temp-file "^3.4.0" - -app-root-path@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/app-root-path/-/app-root-path-3.1.0.tgz" - integrity sha512-biN3PwB2gUtjaYy/isrU3aNWI5w+fAfvHkSvCKeQGxhmYpwKFUxudR3Yya+KqVRHBmEDYh+/lTozYCFbmzX4nA== - -append-field@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz" - integrity sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw== - -"aproba@^1.0.3 || ^2.0.0": - 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== - -are-we-there-yet@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz" - integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw== - dependencies: - delegates "^1.0.0" - readable-stream "^3.6.0" - -are-we-there-yet@^3.0.0: - 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== - dependencies: - delegates "^1.0.0" - readable-stream "^3.6.0" - -arg@^4.1.0: - version "4.1.3" - resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz" - integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== - -arg@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" - integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -args@^2.3.0: - version "2.6.1" - resolved "https://registry.npmjs.org/args/-/args-2.6.1.tgz" - integrity sha512-6gqHZwB7mIn1YnijODwDlAuDgadJvDy1rVM+8E4tbAIPIhL53/J5hDomxgLPZ/1Som+eRKRDmUnuo9ezUpzmRw== - dependencies: - camelcase "4.1.0" - chalk "1.1.3" - minimist "1.2.0" - pkginfo "0.4.0" - string-similarity "1.1.0" - -aria-query@^4.2.2: - version "4.2.2" - resolved "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz" - integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA== - dependencies: - "@babel/runtime" "^7.10.2" - "@babel/runtime-corejs3" "^7.10.2" - -aria-query@^5.0.0: - version "5.0.2" - resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.0.2.tgz" - integrity sha512-eigU3vhqSO+Z8BKDnVLN/ompjhf3pYzecKXz8+whRy+9gZu8n1TCGfwzQUUPnqdHl9ax1Hr9031orZ+UOEYr7Q== - -aria-query@^5.1.3: - version "5.3.0" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e" - integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== - dependencies: - dequal "^2.0.3" - -array-buffer-byte-length@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" - integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== - dependencies: - call-bind "^1.0.2" - is-array-buffer "^3.0.1" - -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" - integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== - -array-flatten@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" - integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== - -array-includes@^3.1.5: - version "3.1.5" - resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz" - integrity sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.19.5" - get-intrinsic "^1.1.1" - is-string "^1.0.7" - -array-includes@^3.1.6: - version "3.1.6" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.6.tgz#9e9e720e194f198266ba9e18c29e6a9b0e4b225f" - integrity sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - get-intrinsic "^1.1.3" - is-string "^1.0.7" - -array-union@^1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz" - integrity sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng== - dependencies: - array-uniq "^1.0.1" - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz" - integrity sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q== - -array.prototype.findlastindex@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.2.tgz#bc229aef98f6bd0533a2bc61ff95209875526c9b" - integrity sha512-tb5thFFlUcp7NdNF6/MpDk/1r/4awWG1FIz3YqDf+/zJSTezBb+/5WViH41obXULHVpDzoiCLpJ/ZO9YbJMsdw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - es-shim-unscopables "^1.0.0" - get-intrinsic "^1.1.3" - -array.prototype.flat@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz#ffc6576a7ca3efc2f46a143b9d1dda9b4b3cf5e2" - integrity sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - es-shim-unscopables "^1.0.0" - -array.prototype.flatmap@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz" - integrity sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.2" - es-shim-unscopables "^1.0.0" - -array.prototype.flatmap@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz#1aae7903c2100433cb8261cd4ed310aab5c4a183" - integrity sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - es-shim-unscopables "^1.0.0" - -array.prototype.reduce@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.4.tgz" - integrity sha512-WnM+AjG/DvLRLo4DDl+r+SvCzYtD2Jd9oeBYMcEaI7t3fFrHY9M53/wdLcTvmZNQ70IU6Htj0emFkZ5TS+lrdw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.2" - es-array-method-boxes-properly "^1.0.0" - is-string "^1.0.7" - -array.prototype.tosorted@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz#ccf44738aa2b5ac56578ffda97c03fd3e23dd532" - integrity sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - es-shim-unscopables "^1.0.0" - get-intrinsic "^1.1.3" - -arraybuffer.prototype.slice@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz#9b5ea3868a6eebc30273da577eb888381c0044bb" - integrity sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw== - dependencies: - array-buffer-byte-length "^1.0.0" - call-bind "^1.0.2" - define-properties "^1.2.0" - get-intrinsic "^1.2.1" - is-array-buffer "^3.0.2" - is-shared-array-buffer "^1.0.2" - -asap@^2.0.0, asap@~2.0.3, asap@~2.0.6: - version "2.0.6" - resolved "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz" - integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== - -asar@^3.1.0: - version "3.2.0" - resolved "https://registry.npmjs.org/asar/-/asar-3.2.0.tgz" - integrity sha512-COdw2ZQvKdFGFxXwX3oYh2/sOsJWJegrdJCGxnN4MZ7IULgRBp9P6665aqj9z1v9VwP4oP1hRBojRDQ//IGgAg== - dependencies: - chromium-pickle-js "^0.2.0" - commander "^5.0.0" - glob "^7.1.6" - minimatch "^3.0.4" - optionalDependencies: - "@types/glob" "^7.1.1" - -asn1@~0.2.3: - version "0.2.6" - resolved "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz" - integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== - dependencies: - safer-buffer "~2.1.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" - integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== - -ast-types-flow@^0.0.7: - version "0.0.7" - resolved "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz" - integrity sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag== - -astral-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz" - integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== - -async-exit-hook@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz" - integrity sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw== - -async@^3.2.3: - version "3.2.4" - resolved "https://registry.npmjs.org/async/-/async-3.2.4.tgz" - integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== - -asynciterator.prototype@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz#8c5df0514936cdd133604dfcc9d3fb93f09b2b62" - integrity sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg== - dependencies: - has-symbols "^1.0.3" - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" - integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== - -at-least-node@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz" - integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== - -autoprefixer@^10.4.13: - version "10.4.15" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.15.tgz#a1230f4aeb3636b89120b34a1f513e2f6834d530" - integrity sha512-KCuPB8ZCIqFdA4HwKXsvz7j6gvSDNhDP7WnUjBleRkKjPdvCmHFuQ77ocavI8FT6NdvlBnE2UFr2H4Mycn8Vew== - dependencies: - browserslist "^4.21.10" - caniuse-lite "^1.0.30001520" - fraction.js "^4.2.0" - normalize-range "^0.1.2" - picocolors "^1.0.0" - postcss-value-parser "^4.2.0" - -available-typed-arrays@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" - integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz" - integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== - -aws4@^1.8.0: - version "1.11.0" - resolved "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz" - integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== - -axe-core@^4.6.2: - version "4.7.2" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.7.2.tgz#040a7342b20765cb18bb50b628394c21bccc17a0" - integrity sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g== - -axios@0.27.2: - version "0.27.2" - resolved "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz" - integrity sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ== - dependencies: - follow-redirects "^1.14.9" - form-data "^4.0.0" - -axios@^0.21.4: - version "0.21.4" - resolved "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz" - integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== - dependencies: - follow-redirects "^1.14.0" - -axios@^0.25.0: - version "0.25.0" - resolved "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz" - integrity sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g== - dependencies: - follow-redirects "^1.14.7" - -axobject-query@^3.1.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.2.1.tgz#39c378a6e3b06ca679f29138151e45b2b32da62a" - integrity sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg== - dependencies: - dequal "^2.0.3" - -babel-jest@^27.4.2, babel-jest@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.5.1.tgz#a1bf8d61928edfefd21da27eb86a695bfd691444" - integrity sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg== - dependencies: - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/babel__core" "^7.1.14" - babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^27.5.1" - chalk "^4.0.0" - graceful-fs "^4.2.9" - slash "^3.0.0" - -babel-loader@^8.2.3: - version "8.3.0" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.3.0.tgz#124936e841ba4fe8176786d6ff28add1f134d6a8" - integrity sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q== - dependencies: - find-cache-dir "^3.3.1" - loader-utils "^2.0.0" - make-dir "^3.1.0" - schema-utils "^2.6.5" - -babel-plugin-dynamic-import-node@^2.3.3: - 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== - dependencies: - object.assign "^4.1.0" - -babel-plugin-istanbul@^6.1.1: - 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== - 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" - -babel-plugin-jest-hoist@^27.5.1: - version "27.5.1" - resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz" - integrity sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ== - dependencies: - "@babel/template" "^7.3.3" - "@babel/types" "^7.3.3" - "@types/babel__core" "^7.0.0" - "@types/babel__traverse" "^7.0.6" - -babel-plugin-macros@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz" - integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg== - dependencies: - "@babel/runtime" "^7.12.5" - cosmiconfig "^7.0.0" - resolve "^1.19.0" - -babel-plugin-named-asset-import@^0.3.8: - version "0.3.8" - resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz#6b7fa43c59229685368683c28bc9734f24524cc2" - integrity sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q== - -babel-plugin-polyfill-corejs2@^0.3.2: - version "0.3.2" - resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.2.tgz" - integrity sha512-LPnodUl3lS0/4wN3Rb+m+UK8s7lj2jcLRrjho4gLw+OJs+I4bvGXshINesY5xx/apM+biTnQ9reDI8yj+0M5+Q== - dependencies: - "@babel/compat-data" "^7.17.7" - "@babel/helper-define-polyfill-provider" "^0.3.2" - semver "^6.1.1" - -babel-plugin-polyfill-corejs2@^0.4.5: - version "0.4.5" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz#8097b4cb4af5b64a1d11332b6fb72ef5e64a054c" - integrity sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg== - dependencies: - "@babel/compat-data" "^7.22.6" - "@babel/helper-define-polyfill-provider" "^0.4.2" - semver "^6.3.1" - -babel-plugin-polyfill-corejs3@^0.5.3: - 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== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.2" - core-js-compat "^3.21.0" - -babel-plugin-polyfill-corejs3@^0.8.3: - version "0.8.3" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz#b4f719d0ad9bb8e0c23e3e630c0c8ec6dd7a1c52" - integrity sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.4.2" - core-js-compat "^3.31.0" - -babel-plugin-polyfill-regenerator@^0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.0.tgz" - integrity sha512-RW1cnryiADFeHmfLS+WW/G431p1PsW5qdRdz0SDRi7TKcUgc7Oh/uXkT7MZ/+tGsT1BkczEAmD5XjUyJ5SWDTw== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.2" - -babel-plugin-polyfill-regenerator@^0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz#80d0f3e1098c080c8b5a65f41e9427af692dc326" - integrity sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.4.2" - -babel-plugin-transform-react-remove-prop-types@^0.4.24: - version "0.4.24" - resolved "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz" - integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA== - -babel-preset-current-node-syntax@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz" - integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== - dependencies: - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-bigint" "^7.8.3" - "@babel/plugin-syntax-class-properties" "^7.8.3" - "@babel/plugin-syntax-import-meta" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-top-level-await" "^7.8.3" - -babel-preset-jest@^27.5.1: - version "27.5.1" - resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz" - integrity sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag== - dependencies: - babel-plugin-jest-hoist "^27.5.1" - babel-preset-current-node-syntax "^1.0.0" - -babel-preset-react-app@^10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-10.0.1.tgz#ed6005a20a24f2c88521809fa9aea99903751584" - integrity sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg== - dependencies: - "@babel/core" "^7.16.0" - "@babel/plugin-proposal-class-properties" "^7.16.0" - "@babel/plugin-proposal-decorators" "^7.16.4" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.0" - "@babel/plugin-proposal-numeric-separator" "^7.16.0" - "@babel/plugin-proposal-optional-chaining" "^7.16.0" - "@babel/plugin-proposal-private-methods" "^7.16.0" - "@babel/plugin-transform-flow-strip-types" "^7.16.0" - "@babel/plugin-transform-react-display-name" "^7.16.0" - "@babel/plugin-transform-runtime" "^7.16.4" - "@babel/preset-env" "^7.16.4" - "@babel/preset-react" "^7.16.0" - "@babel/preset-typescript" "^7.16.0" - "@babel/runtime" "^7.16.3" - babel-plugin-macros "^3.1.0" - babel-plugin-transform-react-remove-prop-types "^0.4.24" - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -base16@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/base16/-/base16-1.0.0.tgz" - integrity sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ== - -base64-js@^1.3.1, base64-js@^1.5.1: - version "1.5.1" - resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -batch@0.6.1: - 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== - -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz" - integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== - dependencies: - tweetnacl "^0.14.3" - -bfj@^7.0.2: - version "7.0.2" - resolved "https://registry.npmjs.org/bfj/-/bfj-7.0.2.tgz" - integrity sha512-+e/UqUzwmzJamNF50tBV6tZPTORow7gQ96iFow+8b562OdMpEK0BcJEq2OSPEDmAbSMBQ7PKZ87ubFkgxpYWgw== - dependencies: - bluebird "^3.5.5" - check-types "^11.1.1" - hoopy "^0.1.4" - tryer "^1.0.1" - -big-integer@^1.6.16: - version "1.6.51" - resolved "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz" - integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== - -big.js@^5.2.2: - version "5.2.2" - resolved "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz" - integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -bl@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz" - integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - -bluebird-lst@^1.0.9: - version "1.0.9" - resolved "https://registry.npmjs.org/bluebird-lst/-/bluebird-lst-1.0.9.tgz" - integrity sha512-7B1Rtx82hjnSD4PGLAjVWeYH3tHAcVUmChh85a3lltKQm6FresXh9ErQo6oAv6CqxttczC3/kEg8SY5NluPuUw== - dependencies: - bluebird "^3.5.5" - -bluebird@^3.5.0, bluebird@^3.5.5: - version "3.7.2" - resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== - -bmp-js@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz" - integrity sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw== - -bn.js@^4.11.9: - version "4.12.0" - resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" - integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== - -body-parser@1.20.0: - version "1.20.0" - resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz" - integrity sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg== - dependencies: - bytes "3.1.2" - content-type "~1.0.4" - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - http-errors "2.0.0" - iconv-lite "0.4.24" - on-finished "2.4.1" - qs "6.10.3" - raw-body "2.5.1" - type-is "~1.6.18" - unpipe "1.0.0" - -body-parser@1.20.1: - version "1.20.1" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" - integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== - dependencies: - bytes "3.1.2" - content-type "~1.0.4" - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - http-errors "2.0.0" - iconv-lite "0.4.24" - on-finished "2.4.1" - qs "6.11.0" - raw-body "2.5.1" - type-is "~1.6.18" - unpipe "1.0.0" - -bonjour-service@^1.0.11: - version "1.1.1" - resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.1.1.tgz#960948fa0e0153f5d26743ab15baf8e33752c135" - integrity sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg== - dependencies: - array-flatten "^2.1.2" - dns-equal "^1.0.0" - fast-deep-equal "^3.1.3" - multicast-dns "^7.2.5" - -boolbase@^1.0.0, boolbase@~1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" - integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== - -boolean@^3.0.1: - version "3.2.0" - resolved "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz" - integrity sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw== - -boxen@^5.0.0: - version "5.1.2" - resolved "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz" - integrity sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ== - dependencies: - ansi-align "^3.0.0" - camelcase "^6.2.0" - chalk "^4.1.0" - cli-boxes "^2.2.1" - string-width "^4.2.2" - type-fest "^0.20.2" - widest-line "^3.1.0" - wrap-ansi "^7.0.0" - -brace-expansion@^1.1.7: - 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" - -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== - dependencies: - balanced-match "^1.0.0" - -braces@^3.0.2, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -broadcast-channel@^3.4.1: - version "3.7.0" - resolved "https://registry.npmjs.org/broadcast-channel/-/broadcast-channel-3.7.0.tgz" - integrity sha512-cIAKJXAxGJceNZGTZSBzMxzyOn72cVgPnKx4dc6LRjQgbaJUQqhy5rzL3zbMxkMWsGKkv2hSFkPRMEXfoMZ2Mg== - dependencies: - "@babel/runtime" "^7.7.2" - detect-node "^2.1.0" - js-sha3 "0.8.0" - microseconds "0.2.0" - nano-time "1.0.0" - oblivious-set "1.0.0" - rimraf "3.0.2" - unload "2.2.0" - -brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz" - integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== - -browser-process-hrtime@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz" - integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== - -browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.21.3: - version "4.21.3" - resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz" - integrity sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ== - dependencies: - caniuse-lite "^1.0.30001370" - electron-to-chromium "^1.4.202" - node-releases "^2.0.6" - update-browserslist-db "^1.0.5" - -browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.21.9: - version "4.21.10" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.10.tgz#dbbac576628c13d3b2231332cb2ec5a46e015bb0" - integrity sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ== - dependencies: - caniuse-lite "^1.0.30001517" - electron-to-chromium "^1.4.477" - node-releases "^2.0.13" - update-browserslist-db "^1.0.11" - -bs-logger@0.x: - version "0.2.6" - resolved "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz" - integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== - dependencies: - fast-json-stable-stringify "2.x" - -bser@2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz" - integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== - dependencies: - node-int64 "^0.4.0" - -buffer-alloc-unsafe@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz" - integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== - -buffer-alloc@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz" - integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== - dependencies: - buffer-alloc-unsafe "^1.1.0" - buffer-fill "^1.0.0" - -buffer-crc32@~0.2.3: - version "0.2.13" - resolved "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz" - integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== - -buffer-equal@0.0.1: - version "0.0.1" - resolved "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz" - integrity sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA== - -buffer-equal@1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz" - integrity sha512-tcBWO2Dl4e7Asr9hTGcpVrCe+F7DubpmqWCTbj4FHLmjqO2hIaC383acQubWtRJhdceqs5uBHs6Es+Sk//RKiQ== - -buffer-fill@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz" - integrity sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ== - -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - -buffer@6.0.3, buffer@^6.0.3: - version "6.0.3" - resolved "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz" - integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.2.1" - -buffer@^5.1.0, buffer@^5.2.0, buffer@^5.5.0: - version "5.7.1" - resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - -builder-util-runtime@9.0.3: - version "9.0.3" - resolved "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.0.3.tgz" - integrity sha512-SfG2wnyjpUbbdtpnqDpWwklujofC6GarGpvdWrEkg9p5AD/xJmTF2buTNaqs3qtsNBEVQDDjZz9xc2GGpVyMfA== - dependencies: - debug "^4.3.4" - sax "^1.2.4" - -builder-util-runtime@9.1.1: - version "9.1.1" - resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-9.1.1.tgz#2da7b34e78a64ad14ccd070d6eed4662d893bd60" - integrity sha512-azRhYLEoDvRDR8Dhis4JatELC/jUvYjm4cVSj7n9dauGTOM2eeNn9KS0z6YA6oDsjI1xphjNbY6PZZeHPzzqaw== - dependencies: - debug "^4.3.4" - sax "^1.2.4" - -builder-util@23.3.3: - version "23.3.3" - resolved "https://registry.npmjs.org/builder-util/-/builder-util-23.3.3.tgz" - integrity sha512-MJZlUiq2PY5hjYv9+XNaoYdsITqvLgRDoHSFg/4nzpInbNxNjLQOolL04Zsyp+hgfcbFvMC4h0KkR1CMPHLWbA== - dependencies: - "7zip-bin" "~5.1.1" - "@types/debug" "^4.1.6" - "@types/fs-extra" "^9.0.11" - app-builder-bin "4.0.0" - bluebird-lst "^1.0.9" - builder-util-runtime "9.0.3" - chalk "^4.1.1" - cross-spawn "^7.0.3" - debug "^4.3.4" - fs-extra "^10.0.0" - http-proxy-agent "^5.0.0" - https-proxy-agent "^5.0.0" - is-ci "^3.0.0" - js-yaml "^4.1.0" - source-map-support "^0.5.19" - stat-mode "^1.0.0" - temp-file "^3.4.0" - -builtin-modules@^3.1.0: - version "3.3.0" - resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz" - integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== - -busboy@^1.0.0: - version "1.6.0" - resolved "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz" - integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== - dependencies: - streamsearch "^1.1.0" - -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz" - integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== - -bytes@3.1.2: - version "3.1.2" - resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" - integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== - -cacache@^15.2.0: - version "15.3.0" - resolved "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz" - integrity sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ== - 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" - -cacheable-request@^6.0.0: - version "6.1.0" - resolved "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz" - integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== - dependencies: - clone-response "^1.0.2" - get-stream "^5.1.0" - http-cache-semantics "^4.0.0" - keyv "^3.0.0" - lowercase-keys "^2.0.0" - normalize-url "^4.1.0" - responselike "^1.0.2" - -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camel-case@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" - integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== - dependencies: - pascal-case "^3.1.2" - tslib "^2.0.3" - -camelcase-css@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" - integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== - -camelcase@4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz" - integrity sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw== - -camelcase@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz" - integrity sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg== - -camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -camelcase@^6.2.0, camelcase@^6.2.1: - version "6.3.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== - -caniuse-api@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz" - integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== - dependencies: - browserslist "^4.0.0" - caniuse-lite "^1.0.0" - lodash.memoize "^4.1.2" - lodash.uniq "^4.5.0" - -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001370: - version "1.0.30001387" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001387.tgz" - integrity sha512-fKDH0F1KOJvR+mWSOvhj8lVRr/Q/mc5u5nabU2vi1/sgvlSqEsE8dOq0Hy/BqVbDkCYQPRRHB1WRjW6PGB/7PA== - -caniuse-lite@^1.0.30001517, caniuse-lite@^1.0.30001520: - version "1.0.30001522" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001522.tgz#44b87a406c901269adcdb834713e23582dd71856" - integrity sha512-TKiyTVZxJGhsTszLuzb+6vUZSjVOAhClszBr2Ta2k9IwtNBT/4dzmL6aywt0HCgEZlmwJzXJd8yNiob6HgwTRg== - -case-sensitive-paths-webpack-plugin@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz#db64066c6422eed2e08cc14b986ca43796dbc6d4" - integrity sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw== - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz" - integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== - -chalk@1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz" - integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - -chalk@3.0.0, chalk@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: - version "4.1.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -char-regex@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz" - integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== - -char-regex@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-2.0.1.tgz#6dafdb25f9d3349914079f010ba8d0e6ff9cd01e" - integrity sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw== - -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - -check-types@^11.1.1: - version "11.1.2" - resolved "https://registry.npmjs.org/check-types/-/check-types-11.1.2.tgz" - integrity sha512-tzWzvgePgLORb9/3a0YenggReLKAIb2owL03H2Xdoe5pKcUyWRSEQ8xfCar8t2SIAuEDwtmx2da1YB52YuHQMQ== - -chokidar@3.5.3, "chokidar@>=3.0.0 <4.0.0", chokidar@^3.4.2, chokidar@^3.5.3: - version "3.5.3" - resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== - 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" - optionalDependencies: - fsevents "~2.3.2" - -chownr@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz" - integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== - -chrome-trace-event@^1.0.2: - 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== - -chromium-pickle-js@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz" - integrity sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw== - -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== - -ci-info@^3.2.0: - version "3.3.2" - resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.3.2.tgz" - integrity sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg== - -cjs-module-lexer@^1.0.0: - version "1.2.2" - resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz" - integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== - -class-transformer@0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/class-transformer/-/class-transformer-0.4.0.tgz" - integrity sha512-ETWD/H2TbWbKEi7m9N4Km5+cw1hNcqJSxlSYhsLsNjQzWWiZIYA1zafxpK9PwVfaZ6AqR5rrjPVUBGESm5tQUA== - -class-validator@^0.13.1: - version "0.13.2" - resolved "https://registry.npmjs.org/class-validator/-/class-validator-0.13.2.tgz" - integrity sha512-yBUcQy07FPlGzUjoLuUfIOXzgynnQPPruyK1Ge2B74k9ROwnle1E+NxLWnUv5OLU8hA/qL5leAE9XnXq3byaBw== - dependencies: - libphonenumber-js "^1.9.43" - validator "^13.7.0" - -classnames@^2.2.6, classnames@^2.3.1: - version "2.3.1" - resolved "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz" - integrity sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA== - -clean-css@^5.2.2: - version "5.3.2" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.2.tgz#70ecc7d4d4114921f5d298349ff86a31a9975224" - integrity sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww== - dependencies: - source-map "~0.6.0" - -clean-stack@^2.0.0: - version "2.2.0" - resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz" - integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== - -cli-boxes@^2.2.1: - version "2.2.1" - resolved "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz" - integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== - -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - -cli-highlight@^2.1.11: - version "2.1.11" - resolved "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.11.tgz" - integrity sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg== - dependencies: - chalk "^4.0.0" - highlight.js "^10.7.1" - mz "^2.4.0" - parse5 "^5.1.1" - parse5-htmlparser2-tree-adapter "^6.0.0" - yargs "^16.0.0" - -cli-spinners@^2.5.0: - version "2.7.0" - resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz" - integrity sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw== - -cli-table3@0.6.2: - version "0.6.2" - resolved "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.2.tgz" - integrity sha512-QyavHCaIC80cMivimWu4aWHilIpiDpfm3hGmqAmXVL1UsnbLuBSMd21hTX6VY4ZSDSM73ESLeF8TOYId3rBTbw== - dependencies: - string-width "^4.2.0" - optionalDependencies: - "@colors/colors" "1.5.0" - -cli-truncate@2.1.0, cli-truncate@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz" - integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== - dependencies: - slice-ansi "^3.0.0" - string-width "^4.2.0" - -cli-width@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz" - integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== - -cliui@^3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz" - integrity sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w== - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi "^2.0.0" - -cliui@^7.0.2: - 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" - -clone-response@^1.0.2: - version "1.0.3" - resolved "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz" - integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA== - dependencies: - mimic-response "^1.0.0" - -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz" - integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz" - integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== - -coa@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz" - integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== - dependencies: - "@types/q" "^1.5.1" - chalk "^2.4.1" - q "^1.1.2" - -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz" - integrity sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA== - -codemirror@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-6.0.1.tgz#62b91142d45904547ee3e0e0e4c1a79158035a29" - integrity sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg== - dependencies: - "@codemirror/autocomplete" "^6.0.0" - "@codemirror/commands" "^6.0.0" - "@codemirror/language" "^6.0.0" - "@codemirror/lint" "^6.0.0" - "@codemirror/search" "^6.0.0" - "@codemirror/state" "^6.0.0" - "@codemirror/view" "^6.0.0" - -collect-v8-coverage@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz" - integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - 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" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -color-support@^1.1.2, color-support@^1.1.3: - 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== - -colord@^2.9.1: - version "2.9.3" - resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43" - integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== - -colorette@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz" - integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== - -colorette@^2.0.10: - version "2.0.20" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" - integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== - -colorette@^2.0.16: - version "2.0.19" - resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz" - integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== - -colors@1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz" - integrity sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw== - -combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: - version "1.0.8" - resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -command-exists@^1.2.9: - version "1.2.9" - resolved "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz" - integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== - -commander@2.9.0: - version "2.9.0" - resolved "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz" - integrity sha512-bmkUukX8wAOjHdN26xj5c4ctEV22TQ7dQYhSmuckKhToXrkUn0iIaolHdIxYYqD55nhpSPA9zPQ1yP57GdXP2A== - dependencies: - graceful-readlink ">= 1.0.0" - -commander@4.1.1, commander@^4.0.0: - version "4.1.1" - resolved "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz" - integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== - -commander@^2.20.0: - 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== - -commander@^5.0.0: - version "5.1.0" - resolved "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz" - integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== - -commander@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" - integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== - -commander@^8.2.0, commander@^8.3.0: - version "8.3.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" - integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== - -comment-parser@1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/comment-parser/-/comment-parser-1.3.1.tgz#3d7ea3adaf9345594aedee6563f422348f165c1b" - integrity sha512-B52sN2VNghyq5ofvUsqZjmk6YkihBX5vMSChmSK9v4ShjKf3Vk5Xcmgpw4o+iIgtrnM/u5FiMpz9VKb8lpBveA== - -common-path-prefix@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz#7d007a7e07c58c4b4d5f433131a19141b29f11e0" - integrity sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w== - -common-tags@^1.8.0: - version "1.8.2" - resolved "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz" - integrity sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA== - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz" - integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== - -compare-version@^0.1.2: - version "0.1.2" - resolved "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz" - integrity sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A== - -component-emitter@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== - -compressible@~2.0.16: - version "2.0.18" - resolved "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz" - integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== - dependencies: - mime-db ">= 1.43.0 < 2" - -compression@^1.7.4: - version "1.7.4" - resolved "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz" - integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== - 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" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -concat-stream@^1.5.2, concat-stream@^1.6.2: - version "1.6.2" - resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -concurrently@^7.3.0: - version "7.3.0" - resolved "https://registry.npmjs.org/concurrently/-/concurrently-7.3.0.tgz" - integrity sha512-IiDwm+8DOcFEInca494A8V402tNTQlJaYq78RF2rijOrKEk/AOHTxhN4U1cp7GYKYX5Q6Ymh1dLTBlzIMN0ikA== - dependencies: - chalk "^4.1.0" - date-fns "^2.16.1" - lodash "^4.17.21" - rxjs "^7.0.0" - shell-quote "^1.7.3" - spawn-command "^0.0.2-1" - supports-color "^8.1.0" - tree-kill "^1.2.2" - yargs "^17.3.1" - -config-chain@^1.1.11: - version "1.1.13" - resolved "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz" - integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== - dependencies: - ini "^1.3.4" - proto-list "~1.2.1" - -configstore@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz" - integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA== - dependencies: - dot-prop "^5.2.0" - graceful-fs "^4.1.2" - make-dir "^3.0.0" - unique-string "^2.0.0" - write-file-atomic "^3.0.0" - xdg-basedir "^4.0.0" - -confusing-browser-globals@^1.0.11: - version "1.0.11" - resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz#ae40e9b57cdd3915408a2805ebd3a5585608dc81" - integrity sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA== - -connect-history-api-fallback@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz#647264845251a0daf25b97ce87834cace0f5f1c8" - integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA== - -consola@^2.15.0: - version "2.15.3" - resolved "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz" - integrity sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw== - -console-control-strings@^1.0.0, console-control-strings@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz" - integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== - -content-disposition@0.5.4: - version "0.5.4" - resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz" - integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== - dependencies: - safe-buffer "5.2.1" - -content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz" - integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== - -convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: - version "1.8.0" - resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz" - integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== - dependencies: - safe-buffer "~5.1.1" - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" - integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== - -cookie@0.5.0: - version "0.5.0" - resolved "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz" - integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== - -cookie@^0.4.1: - version "0.4.2" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" - integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== - -cookiejar@^2.1.3: - version "2.1.3" - resolved "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.3.tgz" - integrity sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ== - -copy-to-clipboard@^3.3.1: - version "3.3.2" - resolved "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.2.tgz" - integrity sha512-Vme1Z6RUDzrb6xAI7EZlVZ5uvOk2F//GaxKUxajDqm9LhOVM1inxNAD2vy+UZDYsd0uyA9s7b3/FVZPSxqrCfg== - dependencies: - toggle-selection "^1.0.6" - -core-js-compat@^3.21.0, core-js-compat@^3.22.1: - version "3.25.0" - resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.25.0.tgz" - integrity sha512-extKQM0g8/3GjFx9US12FAgx8KJawB7RCQ5y8ipYLbmfzEzmFRWdDjIlxDx82g7ygcNG85qMVUSRyABouELdow== - dependencies: - browserslist "^4.21.3" - semver "7.0.0" - -core-js-compat@^3.31.0: - version "3.32.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.32.1.tgz#55f9a7d297c0761a8eb1d31b593e0f5b6ffae964" - integrity sha512-GSvKDv4wE0bPnQtjklV101juQ85g6H3rm5PDP20mqlS5j0kXF3pP97YvAu5hl+uFHqMictp3b2VxOHljWMAtuA== - dependencies: - browserslist "^4.21.10" - -core-js-pure@^3.20.2: - version "3.25.0" - resolved "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.25.0.tgz" - integrity sha512-IeHpLwk3uoci37yoI2Laty59+YqH9x5uR65/yiA0ARAJrTrN4YU0rmauLWfvqOuk77SlNJXj2rM6oT/dBD87+A== - -core-js-pure@^3.23.3: - version "3.32.1" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.32.1.tgz#5775b88f9062885f67b6d7edce59984e89d276f3" - integrity sha512-f52QZwkFVDPf7UEQZGHKx6NYxsxmVGJe5DIvbzOdRMJlmT6yv0KDjR8rmy3ngr/t5wU54c7Sp/qIJH0ppbhVpQ== - -core-js@^3.19.2: - version "3.32.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.32.1.tgz#a7d8736a3ed9dd05940c3c4ff32c591bb735be77" - integrity sha512-lqufgNn9NLnESg5mQeYsxQP5w7wrViSj0jr/kv6ECQiByzQkrn1MKvV0L3acttpDqfQrHLwr2KCMgX5b8X+lyQ== - -core-util-is@1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== - -core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== - -cors@2.8.5: - version "2.8.5" - resolved "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz" - integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== - dependencies: - object-assign "^4" - vary "^1" - -cosmiconfig@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" - integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== - dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.1.0" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.7.2" - -cosmiconfig@^7.0.0, cosmiconfig@^7.0.1: - version "7.0.1" - resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz" - integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== - 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" - -crc@^3.8.0: - version "3.8.0" - resolved "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz" - integrity sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ== - dependencies: - buffer "^5.1.0" - -create-require@^1.1.0: - version "1.1.1" - resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz" - integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== - -crelt@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/crelt/-/crelt-1.0.5.tgz#57c0d52af8c859e354bace1883eb2e1eb182bb94" - integrity sha512-+BO9wPPi+DWTDcNYhr/W90myha8ptzftZT+LwcmUbbok0rcP/fequmFYCw8NMoH7pkAZQzU78b3kYrlua5a9eA== - -cron@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/cron/-/cron-2.0.0.tgz" - integrity sha512-RPeRunBCFr/WEo7WLp8Jnm45F/ziGJiHVvVQEBSDTSGu6uHW49b2FOP2O14DcXlGJRLhwE7TIoDzHHK4KmlL6g== - dependencies: - luxon "^1.23.x" - -cross-env@^7.0.3: - version "7.0.3" - resolved "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz" - integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw== - dependencies: - cross-spawn "^7.0.1" - -cross-fetch@^3.1.5: - version "3.1.5" - resolved "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz" - integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== - dependencies: - node-fetch "2.6.7" - -cross-fetch@^3.1.6: - version "3.1.8" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.8.tgz#0327eba65fd68a7d119f8fb2bf9334a1a7956f82" - integrity sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg== - dependencies: - node-fetch "^2.6.12" - -cross-spawn@^4.0.0: - version "4.0.2" - resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz" - integrity sha512-yAXz/pA1tD8Gtg2S98Ekf/sewp3Lcp3YoFKJ4Hkp5h5yLWnKVTDU0kwjKJ8NDCYcfTLfyGkzTikst+jWypT1iA== - dependencies: - lru-cache "^4.0.1" - which "^1.2.9" - -cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -crypto-random-string@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz" - integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== - -css-blank-pseudo@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz#36523b01c12a25d812df343a32c322d2a2324561" - integrity sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ== - dependencies: - postcss-selector-parser "^6.0.9" - -css-declaration-sorter@^6.3.1: - version "6.4.1" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz#28beac7c20bad7f1775be3a7129d7eae409a3a71" - integrity sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g== - -css-has-pseudo@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz#57f6be91ca242d5c9020ee3e51bbb5b89fc7af73" - integrity sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw== - dependencies: - postcss-selector-parser "^6.0.9" - -css-loader@^6.5.1: - version "6.8.1" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.8.1.tgz#0f8f52699f60f5e679eab4ec0fcd68b8e8a50a88" - integrity sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g== - dependencies: - icss-utils "^5.1.0" - postcss "^8.4.21" - postcss-modules-extract-imports "^3.0.0" - postcss-modules-local-by-default "^4.0.3" - postcss-modules-scope "^3.0.0" - postcss-modules-values "^4.0.0" - postcss-value-parser "^4.2.0" - semver "^7.3.8" - -css-minimizer-webpack-plugin@^3.2.0: - version "3.4.1" - resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz#ab78f781ced9181992fe7b6e4f3422e76429878f" - integrity sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q== - dependencies: - cssnano "^5.0.6" - jest-worker "^27.0.2" - postcss "^8.3.5" - schema-utils "^4.0.0" - serialize-javascript "^6.0.0" - source-map "^0.6.1" - -css-prefers-color-scheme@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz#ca8a22e5992c10a5b9d315155e7caee625903349" - integrity sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA== - -css-select-base-adapter@^0.1.1: - version "0.1.1" - resolved "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz" - integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== - -css-select@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz" - integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== - dependencies: - boolbase "^1.0.0" - css-what "^3.2.1" - domutils "^1.7.0" - nth-check "^1.0.2" - -css-select@^4.1.3: - version "4.3.0" - resolved "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz" - integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== - dependencies: - boolbase "^1.0.0" - css-what "^6.0.1" - domhandler "^4.3.1" - domutils "^2.8.0" - nth-check "^2.0.1" - -css-tree@1.0.0-alpha.37: - version "1.0.0-alpha.37" - resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz" - integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== - dependencies: - mdn-data "2.0.4" - source-map "^0.6.1" - -css-tree@^1.1.2, css-tree@^1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz" - integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== - dependencies: - mdn-data "2.0.14" - source-map "^0.6.1" - -css-what@^3.2.1: - version "3.4.2" - resolved "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz" - integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== - -css-what@^6.0.1: - version "6.1.0" - resolved "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz" - integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== - -css.escape@^1.5.1: - version "1.5.1" - resolved "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz" - integrity sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg== - -cssdb@^7.1.0: - version "7.7.1" - resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-7.7.1.tgz#759e333f516e47f26dd2c7be06147d4f4716356d" - integrity sha512-kM+Fs0BFyhJNeE6wbOrlnRsugRdL6vn7QcON0aBDZ7XRd7RI2pMlk+nxoHuTb4Et+aBobXgK0I+6NGLA0LLgTw== - -cssesc@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz" - integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== - -cssnano-preset-default@^5.2.14: - version "5.2.14" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz#309def4f7b7e16d71ab2438052093330d9ab45d8" - integrity sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A== - dependencies: - css-declaration-sorter "^6.3.1" - cssnano-utils "^3.1.0" - postcss-calc "^8.2.3" - postcss-colormin "^5.3.1" - postcss-convert-values "^5.1.3" - postcss-discard-comments "^5.1.2" - postcss-discard-duplicates "^5.1.0" - postcss-discard-empty "^5.1.1" - postcss-discard-overridden "^5.1.0" - postcss-merge-longhand "^5.1.7" - postcss-merge-rules "^5.1.4" - postcss-minify-font-values "^5.1.0" - postcss-minify-gradients "^5.1.1" - postcss-minify-params "^5.1.4" - postcss-minify-selectors "^5.2.1" - postcss-normalize-charset "^5.1.0" - postcss-normalize-display-values "^5.1.0" - postcss-normalize-positions "^5.1.1" - postcss-normalize-repeat-style "^5.1.1" - postcss-normalize-string "^5.1.0" - postcss-normalize-timing-functions "^5.1.0" - postcss-normalize-unicode "^5.1.1" - postcss-normalize-url "^5.1.0" - postcss-normalize-whitespace "^5.1.1" - postcss-ordered-values "^5.1.3" - postcss-reduce-initial "^5.1.2" - postcss-reduce-transforms "^5.1.0" - postcss-svgo "^5.1.0" - postcss-unique-selectors "^5.1.1" - -cssnano-utils@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-3.1.0.tgz#95684d08c91511edfc70d2636338ca37ef3a6861" - integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== - -cssnano@^5.0.6: - version "5.1.15" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.15.tgz#ded66b5480d5127fcb44dac12ea5a983755136bf" - integrity sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw== - dependencies: - cssnano-preset-default "^5.2.14" - lilconfig "^2.0.3" - yaml "^1.10.2" - -csso@^4.0.2, csso@^4.2.0: - version "4.2.0" - resolved "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz" - integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== - dependencies: - css-tree "^1.1.2" - -cssom@^0.4.4: - version "0.4.4" - resolved "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz" - integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== - -cssom@~0.3.6: - version "0.3.8" - resolved "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz" - integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== - -cssstyle@^2.3.0: - version "2.3.0" - resolved "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz" - integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== - dependencies: - cssom "~0.3.6" - -csstype@^3.0.2: - version "3.1.0" - resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.0.tgz" - integrity sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA== - -damerau-levenshtein@^1.0.8: - version "1.0.8" - resolved "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz" - integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz" - integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== - dependencies: - assert-plus "^1.0.0" - -data-urls@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz" - integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== - dependencies: - abab "^2.0.3" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.0.0" - -date-fns@^2.16.1, date-fns@^2.28.0: - version "2.29.2" - resolved "https://registry.npmjs.org/date-fns/-/date-fns-2.29.2.tgz" - integrity sha512-0VNbwmWJDS/G3ySwFSJA3ayhbURMTJLtwM2DTxf9CWondCnh6DTNlO9JgRSq6ibf4eD0lfMJNBxUdEAHHix+bA== - -dateformat@^5.0.1: - version "5.0.3" - resolved "https://registry.npmjs.org/dateformat/-/dateformat-5.0.3.tgz" - integrity sha512-Kvr6HmPXUMerlLcLF+Pwq3K7apHpYmGDVqrxcDasBg86UcKeTSNWbEzU8bwdXnxnR44FtMhJAxI4Bov6Y/KUfA== - -debug@2.6.9, debug@^2.6.0, debug@^2.6.8, debug@^2.6.9: - version "2.6.9" - resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: - version "4.3.4" - resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -debug@^3.2.7: - version "3.2.7" - resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -decamelize@^1.1.1: - version "1.2.0" - resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" - integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== - -decimal.js@^10.2.1: - version "10.4.0" - resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.0.tgz" - integrity sha512-Nv6ENEzyPQ6AItkGwLE2PGKinZZ9g59vSh2BeH6NqPu0OTKZ5ruJsVqh/orbAnqXc9pBbgXAIrc2EyaCj8NpGg== - -decompress-response@^3.3.0: - version "3.3.0" - resolved "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz" - integrity sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA== - dependencies: - mimic-response "^1.0.0" - -dedent@^0.7.0: - version "0.7.0" - resolved "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz" - integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== - -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - -deep-is@^0.1.3, deep-is@~0.1.3: - version "0.1.4" - resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - -deepmerge@4.2.2, deepmerge@^4.2.2: - version "4.2.2" - resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz" - integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== - -deepmerge@^2.1.1: - version "2.2.1" - resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz" - integrity sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA== - -default-gateway@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71" - integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg== - dependencies: - execa "^5.0.0" - -default-shell@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/default-shell/-/default-shell-1.0.1.tgz" - integrity sha512-/Os8tTMPSriNHCsVj3VLjMZblIl1sIg8EXz3qg7C5K+y9calfTA/qzlfPvCQ+LEgLWmtZ9wCnzE1w+S6TPPFyQ== - -defaults@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz" - integrity sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA== - dependencies: - clone "^1.0.2" - -defer-to-connect@^1.0.1: - version "1.1.3" - resolved "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz" - integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== - -define-lazy-prop@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" - integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== - -define-properties@^1.1.3, define-properties@^1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz" - integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== - dependencies: - has-property-descriptors "^1.0.0" - object-keys "^1.1.1" - -define-properties@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5" - integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA== - dependencies: - has-property-descriptors "^1.0.0" - object-keys "^1.1.1" - -del@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/del/-/del-3.0.0.tgz" - integrity sha512-7yjqSoVSlJzA4t/VUwazuEagGeANEKB3f/aNI//06pfKgwoCb7f6Q1gETN1sZzYaj6chTQ0AhIwDiPdfOjko4A== - dependencies: - globby "^6.1.0" - is-path-cwd "^1.0.0" - is-path-in-cwd "^1.0.0" - p-map "^1.1.1" - pify "^3.0.0" - rimraf "^2.2.8" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" - integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz" - integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== - -depd@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - -depd@^1.1.2, depd@~1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" - integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== - -dequal@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" - integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== - -destroy@1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" - integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== - -detect-libc@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz" - integrity sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w== - -detect-newline@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz" - integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== - -detect-node@^2.0.4, detect-node@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz" - integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== - -detect-port-alt@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275" - integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q== - dependencies: - address "^1.0.1" - debug "^2.6.0" - -dezalgo@1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz" - integrity sha512-K7i4zNfT2kgQz3GylDw40ot9GAE47sFZ9EXHFSPP6zONLgH6kWXE0KWJchkbQJLBkRazq4APwZ4OwiFFlT95OQ== - dependencies: - asap "^2.0.0" - wrappy "1" - -didyoumean@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" - integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== - -diff-sequences@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz" - integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== - -diff-sequences@^27.5.1: - version "27.5.1" - resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz" - integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== - -diff-sequences@^29.0.0: - version "29.0.0" - resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.0.0.tgz" - integrity sha512-7Qe/zd1wxSDL4D/X/FPjOMB+ZMDt71W94KYaq05I2l0oQqgXgs7s4ftYYmV38gBSrPz2vcygxfs1xn0FT+rKNA== - -diff@^4.0.1: - version "4.0.2" - resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== - -dir-compare@^2.4.0: - version "2.4.0" - resolved "https://registry.npmjs.org/dir-compare/-/dir-compare-2.4.0.tgz" - integrity sha512-l9hmu8x/rjVC9Z2zmGzkhOEowZvW7pmYws5CWHutg8u1JgvsKWMx7Q/UODeu4djLZ4FgW5besw5yvMQnBHzuCA== - dependencies: - buffer-equal "1.0.0" - colors "1.0.3" - commander "2.9.0" - minimatch "3.0.4" - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -dlv@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" - integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== - -dmg-builder@23.3.3: - version "23.3.3" - resolved "https://registry.npmjs.org/dmg-builder/-/dmg-builder-23.3.3.tgz" - integrity sha512-ECwAjt+ZWyOvddrkDx1xRD6IVUCZb5SV6vSMHZd+Va3G2sUXHrnglR1cGDKRF4oYRQm8SYVrpLZKbi8npyDcAQ== - dependencies: - app-builder-lib "23.3.3" - builder-util "23.3.3" - builder-util-runtime "9.0.3" - fs-extra "^10.0.0" - iconv-lite "^0.6.2" - js-yaml "^4.1.0" - optionalDependencies: - dmg-license "^1.0.11" - -dmg-license@^1.0.11: - version "1.0.11" - resolved "https://registry.npmjs.org/dmg-license/-/dmg-license-1.0.11.tgz" - integrity sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q== - dependencies: - "@types/plist" "^3.0.1" - "@types/verror" "^1.10.3" - ajv "^6.10.0" - crc "^3.8.0" - iconv-corefoundation "^1.1.7" - plist "^3.0.4" - smart-buffer "^4.0.2" - verror "^1.10.0" - -dns-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz" - integrity sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg== - -dns-packet@^5.2.2: - version "5.6.0" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.6.0.tgz#2202c947845c7a63c23ece58f2f70ff6ab4c2f7d" - integrity sha512-rza3UH1LwdHh9qyPXp8lkwpjSNk/AMD3dPytUoRoqnypDUhY0xvbdmVhWOfxO68frEfV9BU8V12Ez7ZsHGZpCQ== - dependencies: - "@leichtgewicht/ip-codec" "^2.0.1" - -doctrine@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz" - integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== - dependencies: - esutils "^2.0.2" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -dom-accessibility-api@^0.5.6: - version "0.5.14" - resolved "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.14.tgz" - integrity sha512-NMt+m9zFMPZe0JcY9gN224Qvk6qLIdqex29clBvc/y75ZBX9YA9wNK3frsYvu2DI1xcCIwxwnX+TlsJ2DSOADg== - -dom-converter@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz" - integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== - dependencies: - utila "~0.4" - -dom-serializer@0: - version "0.2.2" - resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz" - integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== - dependencies: - domelementtype "^2.0.1" - entities "^2.0.0" - -dom-serializer@^1.0.1: - version "1.4.1" - resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz" - integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.2.0" - entities "^2.0.0" - -dom-walk@^0.1.0: - version "0.1.2" - resolved "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz" - integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== - -domelementtype@1: - version "1.3.1" - resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz" - integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== - -domelementtype@^2.0.1, domelementtype@^2.2.0: - version "2.3.0" - resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz" - integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== - -domexception@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz" - integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== - dependencies: - webidl-conversions "^5.0.0" - -domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: - version "4.3.1" - resolved "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz" - integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== - dependencies: - domelementtype "^2.2.0" - -domutils@^1.7.0: - version "1.7.0" - resolved "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz" - integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== - dependencies: - dom-serializer "0" - domelementtype "1" - -domutils@^2.5.2, domutils@^2.8.0: - version "2.8.0" - resolved "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz" - integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== - dependencies: - dom-serializer "^1.0.1" - domelementtype "^2.2.0" - domhandler "^4.2.0" - -dot-case@^3.0.4: - version "3.0.4" - resolved "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz" - integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -dot-prop@^5.2.0: - version "5.3.0" - resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz" - integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== - dependencies: - is-obj "^2.0.0" - -dotenv-expand@8.0.3: - version "8.0.3" - resolved "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-8.0.3.tgz" - integrity sha512-SErOMvge0ZUyWd5B0NXMQlDkN+8r+HhVUsxgOO7IoPDOdDRD2JjExpN6y3KnFR66jsJMwSn1pqIivhU5rcJiNg== - -dotenv-expand@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz" - integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== - -dotenv@16.0.1: - version "16.0.1" - resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.0.1.tgz" - integrity sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ== - -dotenv@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" - integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== - -dotenv@^16.0.0, dotenv@^16.0.2: - version "16.0.2" - resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.0.2.tgz" - integrity sha512-JvpYKUmzQhYoIFgK2MOnF3bciIZoItIIoryihy0rIA+H4Jy0FmgyKYAHCTN98P5ybGSJcIFbh6QKeJdtZd1qhA== - -dotenv@^9.0.2: - version "9.0.2" - resolved "https://registry.npmjs.org/dotenv/-/dotenv-9.0.2.tgz" - integrity sha512-I9OvvrHp4pIARv4+x9iuewrWycX6CcZtoAu1XrzPxc5UygMJXJZYmBsynku8IkrJwgypE5DGNjDPmPRhDCptUg== - -duplexer3@^0.1.4: - version "0.1.5" - resolved "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz" - integrity sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA== - -duplexer@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" - integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== - -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz" - integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" - integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== - -ejs@^3.1.6: - version "3.1.9" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.9.tgz#03c9e8777fe12686a9effcef22303ca3d8eeb361" - integrity sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ== - dependencies: - jake "^10.8.5" - -ejs@^3.1.7: - version "3.1.8" - resolved "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz" - integrity sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ== - dependencies: - jake "^10.8.5" - -electron-builder@^23.3.3: - version "23.3.3" - resolved "https://registry.npmjs.org/electron-builder/-/electron-builder-23.3.3.tgz" - integrity sha512-mFYYdhoFPKevP6y5uaaF3dusmB2OtQ/HnwwpyOePeU7QDS0SEIAUokQsHUanAiJAZcBqtY7iyLBgX18QybdFFw== - dependencies: - "@types/yargs" "^17.0.1" - app-builder-lib "23.3.3" - builder-util "23.3.3" - builder-util-runtime "9.0.3" - chalk "^4.1.1" - dmg-builder "23.3.3" - fs-extra "^10.0.0" - is-ci "^3.0.0" - lazy-val "^1.0.5" - read-config-file "6.2.0" - update-notifier "^5.1.0" - yargs "^17.0.1" - -electron-icon-maker@^0.0.5: - version "0.0.5" - resolved "https://registry.npmjs.org/electron-icon-maker/-/electron-icon-maker-0.0.5.tgz" - integrity sha512-xuNGe26K7jL7p7A7HhZNJFdjuxnPhu8cH0q6PExkG6ifFX6UbsCMUkxvUAh6PGeLOCSG21wEt9i2jPkiZ3ZItg== - dependencies: - args "^2.3.0" - icon-gen "2.0.0" - jimp "^0.14.0" - -electron-is-dev@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/electron-is-dev/-/electron-is-dev-2.0.0.tgz" - integrity sha512-3X99K852Yoqu9AcW50qz3ibYBWY79/pBhlMCab8ToEWS48R0T9tyxRiQhwylE7zQdXrMnx2JKqUJyMPmt5FBqA== - -electron-log@^4.4.8: - version "4.4.8" - resolved "https://registry.yarnpkg.com/electron-log/-/electron-log-4.4.8.tgz#fcb9f714dbcaefb6ac7984c4683912c74730248a" - integrity sha512-QQ4GvrXO+HkgqqEOYbi+DHL7hj5JM+nHi/j+qrN9zeeXVKy8ZABgbu4CnG+BBqDZ2+tbeq9tUC4DZfIWFU5AZA== - -electron-notarize@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/electron-notarize/-/electron-notarize-1.2.1.tgz#347c18eca8e29dddadadee511b870c13d4008baf" - integrity sha512-u/ECWhIrhkSQpZM4cJzVZ5TsmkaqrRo5LDC/KMbGF0sPkm53Ng59+M0zp8QVaql0obfJy9vlVT+4iOkAi2UDlA== - dependencies: - debug "^4.1.1" - fs-extra "^9.0.1" - -electron-osx-sign@^0.6.0: - version "0.6.0" - resolved "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.6.0.tgz" - integrity sha512-+hiIEb2Xxk6eDKJ2FFlpofCnemCbjbT5jz+BKGpVBrRNT3kWTGs4DfNX6IzGwgi33hUcXF+kFs9JW+r6Wc1LRg== - dependencies: - bluebird "^3.5.0" - compare-version "^0.1.2" - debug "^2.6.8" - isbinaryfile "^3.0.2" - minimist "^1.2.0" - plist "^3.0.1" - -electron-publish@23.3.3: - version "23.3.3" - resolved "https://registry.npmjs.org/electron-publish/-/electron-publish-23.3.3.tgz" - integrity sha512-1dX17eE5xVXedTxjC+gjsP74oC0+sIHgqysp0ryTlF9+yfQUyXjBk6kcK+zhtBA2SsHMSglDtM+JPxDD/WpPTQ== - dependencies: - "@types/fs-extra" "^9.0.11" - builder-util "23.3.3" - builder-util-runtime "9.0.3" - chalk "^4.1.1" - fs-extra "^10.0.0" - lazy-val "^1.0.5" - mime "^2.5.2" - -electron-to-chromium@^1.4.202: - version "1.4.239" - resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.239.tgz" - integrity sha512-XbhfzxPIFzMjJm17T7yUGZEyYh5XuUjrA/FQ7JUy2bEd4qQ7MvFTaKpZ6zXZog1cfVttESo2Lx0ctnf7eQOaAQ== - -electron-to-chromium@^1.4.477: - version "1.4.498" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.498.tgz#cef35341123f62a35ba7084e439c911d25e0d81b" - integrity sha512-4LODxAzKGVy7CJyhhN5mebwe7U2L29P+0G+HUriHnabm0d7LSff8Yn7t+Wq+2/9ze2Fu1dhX7mww090xfv7qXQ== - -electron-updater@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/electron-updater/-/electron-updater-5.3.0.tgz#3ba0d20407911a2edc5a68bee45c5aa2023e9ff8" - integrity sha512-iKEr7yQBcvnQUPnSDYGSWC9t0eF2YbZWeYYYZzYxdl+HiRejXFENjYMnYjoOm2zxyD6Cr2JTHZhp9pqxiXuCOw== - dependencies: - "@types/semver" "^7.3.6" - builder-util-runtime "9.1.1" - fs-extra "^10.0.0" - js-yaml "^4.1.0" - lazy-val "^1.0.5" - lodash.escaperegexp "^4.1.2" - lodash.isequal "^4.5.0" - semver "^7.3.5" - typed-emitter "^2.1.0" - -electron@20.1.0: - version "20.1.0" - resolved "https://registry.npmjs.org/electron/-/electron-20.1.0.tgz" - integrity sha512-gzl6fdZe5g0qmzCC6Ejxa1Oa8eqUSxs4+QLtrM7SyEVp+mEPJAOoDe0xD8ayRQqeXTBxLK1LFrKtc4c98iufsg== - dependencies: - "@electron/get" "^1.14.1" - "@types/node" "^16.11.26" - extract-zip "^2.0.1" - -elliptic@^6.5.4: - version "6.5.4" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" - integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" - -emittery@^0.10.2: - version "0.10.2" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.10.2.tgz#902eec8aedb8c41938c46e9385e9db7e03182933" - integrity sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw== - -emittery@^0.8.1: - version "0.8.1" - resolved "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz" - integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emoji-regex@^9.2.2: - version "9.2.2" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" - integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== - -emojis-list@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz" - integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== - -encodeurl@^1.0.2, encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" - integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== - -encoding@^0.1.12: - version "0.1.13" - resolved "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz" - integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== - dependencies: - iconv-lite "^0.6.2" - -end-of-stream@^1.1.0: - 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== - dependencies: - once "^1.4.0" - -enhanced-resolve@^5.0.0, enhanced-resolve@^5.7.0, enhanced-resolve@^5.9.3: - version "5.10.0" - resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz" - integrity sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ== - dependencies: - graceful-fs "^4.2.4" - tapable "^2.2.0" - -enhanced-resolve@^5.15.0: - version "5.15.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz#1af946c7d93603eb88e9896cee4904dc012e9c35" - integrity sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg== - dependencies: - graceful-fs "^4.2.4" - tapable "^2.2.0" - -enquirer@^2.3.5, enquirer@^2.3.6: - version "2.3.6" - resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz" - integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== - dependencies: - ansi-colors "^4.1.1" - -entities@^2.0.0, entities@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" - integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== - -env-paths@^2.2.0: - version "2.2.1" - resolved "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz" - integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== - -envalid@^7.3.1: - version "7.3.1" - resolved "https://registry.npmjs.org/envalid/-/envalid-7.3.1.tgz" - integrity sha512-KL1YRwn8WcoF/Ty7t+yLLtZol01xr9ZJMTjzoGRM8NaSU+nQQjSWOQKKJhJP2P57bpdakJ9jbxqQX4fGTOicZg== - dependencies: - tslib "2.3.1" - -err-code@^2.0.2: - 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== - -error-ex@^1.2.0, error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -error-stack-parser@^2.0.6: - version "2.1.4" - resolved "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz" - integrity sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ== - dependencies: - stackframe "^1.3.4" - -es-abstract@^1.17.2, es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.5, es-abstract@^1.20.1: - version "1.20.1" - resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz" - integrity sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA== - dependencies: - call-bind "^1.0.2" - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - function.prototype.name "^1.1.5" - get-intrinsic "^1.1.1" - get-symbol-description "^1.0.0" - has "^1.0.3" - has-property-descriptors "^1.0.0" - has-symbols "^1.0.3" - internal-slot "^1.0.3" - is-callable "^1.2.4" - is-negative-zero "^2.0.2" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.2" - is-string "^1.0.7" - is-weakref "^1.0.2" - object-inspect "^1.12.0" - object-keys "^1.1.1" - object.assign "^4.1.2" - regexp.prototype.flags "^1.4.3" - string.prototype.trimend "^1.0.5" - string.prototype.trimstart "^1.0.5" - unbox-primitive "^1.0.2" - -es-abstract@^1.20.4, es-abstract@^1.21.2, es-abstract@^1.21.3: - version "1.22.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.1.tgz#8b4e5fc5cefd7f1660f0f8e1a52900dfbc9d9ccc" - integrity sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw== - dependencies: - array-buffer-byte-length "^1.0.0" - arraybuffer.prototype.slice "^1.0.1" - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - es-set-tostringtag "^2.0.1" - es-to-primitive "^1.2.1" - function.prototype.name "^1.1.5" - get-intrinsic "^1.2.1" - get-symbol-description "^1.0.0" - globalthis "^1.0.3" - gopd "^1.0.1" - has "^1.0.3" - has-property-descriptors "^1.0.0" - has-proto "^1.0.1" - has-symbols "^1.0.3" - internal-slot "^1.0.5" - is-array-buffer "^3.0.2" - is-callable "^1.2.7" - is-negative-zero "^2.0.2" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.2" - is-string "^1.0.7" - is-typed-array "^1.1.10" - is-weakref "^1.0.2" - object-inspect "^1.12.3" - object-keys "^1.1.1" - object.assign "^4.1.4" - regexp.prototype.flags "^1.5.0" - safe-array-concat "^1.0.0" - safe-regex-test "^1.0.0" - string.prototype.trim "^1.2.7" - string.prototype.trimend "^1.0.6" - string.prototype.trimstart "^1.0.6" - typed-array-buffer "^1.0.0" - typed-array-byte-length "^1.0.0" - typed-array-byte-offset "^1.0.0" - typed-array-length "^1.0.4" - unbox-primitive "^1.0.2" - which-typed-array "^1.1.10" - -es-array-method-boxes-properly@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz" - integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== - -es-iterator-helpers@^1.0.12: - version "1.0.13" - resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.13.tgz#72101046ffc19baf9996adc70e6177a26e6e8084" - integrity sha512-LK3VGwzvaPWobO8xzXXGRUOGw8Dcjyfk62CsY/wfHN75CwsJPbuypOYJxK6g5RyEL8YDjIWcl6jgd8foO6mmrA== - dependencies: - asynciterator.prototype "^1.0.0" - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.21.3" - es-set-tostringtag "^2.0.1" - function-bind "^1.1.1" - get-intrinsic "^1.2.1" - globalthis "^1.0.3" - has-property-descriptors "^1.0.0" - has-proto "^1.0.1" - has-symbols "^1.0.3" - internal-slot "^1.0.5" - iterator.prototype "^1.1.0" - safe-array-concat "^1.0.0" - -es-module-lexer@^0.9.0: - version "0.9.3" - resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz" - integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== - -es-module-lexer@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.3.0.tgz#6be9c9e0b4543a60cd166ff6f8b4e9dae0b0c16f" - integrity sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA== - -es-set-tostringtag@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" - integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== - dependencies: - get-intrinsic "^1.1.3" - has "^1.0.3" - has-tostringtag "^1.0.0" - -es-shim-unscopables@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz" - integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== - dependencies: - has "^1.0.3" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -es6-error@^4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz" - integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== - -es6-promise@^4.0.3: - version "4.2.8" - resolved "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz" - integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escape-goat@^2.0.0: - version "2.1.1" - resolved "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz" - integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" - integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== - -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - -escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -escodegen@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz" - integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== - dependencies: - esprima "^4.0.1" - estraverse "^5.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - -eslint-config-prettier@^8.3.0: - version "8.5.0" - resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz" - integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q== - -eslint-config-react-app@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-7.0.1.tgz#73ba3929978001c5c86274c017ea57eb5fa644b4" - integrity sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA== - dependencies: - "@babel/core" "^7.16.0" - "@babel/eslint-parser" "^7.16.3" - "@rushstack/eslint-patch" "^1.1.0" - "@typescript-eslint/eslint-plugin" "^5.5.0" - "@typescript-eslint/parser" "^5.5.0" - babel-preset-react-app "^10.0.1" - confusing-browser-globals "^1.0.11" - eslint-plugin-flowtype "^8.0.3" - eslint-plugin-import "^2.25.3" - eslint-plugin-jest "^25.3.0" - eslint-plugin-jsx-a11y "^6.5.1" - eslint-plugin-react "^7.27.1" - eslint-plugin-react-hooks "^4.3.0" - eslint-plugin-testing-library "^5.0.1" - -eslint-import-resolver-node@^0.3.7: - version "0.3.9" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" - integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== - dependencies: - debug "^3.2.7" - is-core-module "^2.13.0" - resolve "^1.22.4" - -eslint-module-utils@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz#e439fee65fc33f6bba630ff621efc38ec0375c49" - integrity sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw== - dependencies: - debug "^3.2.7" - -eslint-plugin-flowtype@^8.0.3: - version "8.0.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz#e1557e37118f24734aa3122e7536a038d34a4912" - integrity sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ== - dependencies: - lodash "^4.17.21" - string-natural-compare "^3.0.1" - -eslint-plugin-import@^2.25.3: - version "2.28.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz#63b8b5b3c409bfc75ebaf8fb206b07ab435482c4" - integrity sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A== - dependencies: - array-includes "^3.1.6" - array.prototype.findlastindex "^1.2.2" - array.prototype.flat "^1.3.1" - array.prototype.flatmap "^1.3.1" - debug "^3.2.7" - doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.7" - eslint-module-utils "^2.8.0" - has "^1.0.3" - is-core-module "^2.13.0" - is-glob "^4.0.3" - minimatch "^3.1.2" - object.fromentries "^2.0.6" - object.groupby "^1.0.0" - object.values "^1.1.6" - semver "^6.3.1" - tsconfig-paths "^3.14.2" - -eslint-plugin-jest@^25.3.0: - version "25.7.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz#ff4ac97520b53a96187bad9c9814e7d00de09a6a" - integrity sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ== - dependencies: - "@typescript-eslint/experimental-utils" "^5.0.0" - -eslint-plugin-jsdoc@^40.0.0: - version "40.3.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-40.3.0.tgz#75a91ab71c41bb797db05a32d9528ce3ab613e90" - integrity sha512-EhCqpzRkxoT2DUB4AnrU0ggBYvTh3bWrLZzQTupq6vSVE6XzNwJVKsOHa41GCoevnsWMBNmoDVjXWGqckjuG1g== - dependencies: - "@es-joy/jsdoccomment" "~0.37.0" - comment-parser "1.3.1" - debug "^4.3.4" - escape-string-regexp "^4.0.0" - esquery "^1.5.0" - semver "^7.3.8" - spdx-expression-parse "^3.0.1" - -eslint-plugin-jsx-a11y@^6.5.1: - version "6.7.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz#fca5e02d115f48c9a597a6894d5bcec2f7a76976" - integrity sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA== - dependencies: - "@babel/runtime" "^7.20.7" - aria-query "^5.1.3" - array-includes "^3.1.6" - array.prototype.flatmap "^1.3.1" - ast-types-flow "^0.0.7" - axe-core "^4.6.2" - axobject-query "^3.1.1" - damerau-levenshtein "^1.0.8" - emoji-regex "^9.2.2" - has "^1.0.3" - jsx-ast-utils "^3.3.3" - language-tags "=1.0.5" - minimatch "^3.1.2" - object.entries "^1.1.6" - object.fromentries "^2.0.6" - semver "^6.3.0" - -eslint-plugin-prettier@^4.0.0: - version "4.2.1" - resolved "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz" - integrity sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ== - dependencies: - prettier-linter-helpers "^1.0.0" - -eslint-plugin-react-hooks@^4.3.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" - integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== - -eslint-plugin-react@^7.26.0: - version "7.31.8" - resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.31.8.tgz" - integrity sha512-5lBTZmgQmARLLSYiwI71tiGVTLUuqXantZM6vlSY39OaDSV0M7+32K5DnLkmFrwTe+Ksz0ffuLUC91RUviVZfw== - dependencies: - array-includes "^3.1.5" - array.prototype.flatmap "^1.3.0" - doctrine "^2.1.0" - estraverse "^5.3.0" - jsx-ast-utils "^2.4.1 || ^3.0.0" - minimatch "^3.1.2" - object.entries "^1.1.5" - object.fromentries "^2.0.5" - object.hasown "^1.1.1" - object.values "^1.1.5" - prop-types "^15.8.1" - resolve "^2.0.0-next.3" - semver "^6.3.0" - string.prototype.matchall "^4.0.7" - -eslint-plugin-react@^7.27.1: - version "7.33.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz#69ee09443ffc583927eafe86ffebb470ee737608" - integrity sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw== - dependencies: - array-includes "^3.1.6" - array.prototype.flatmap "^1.3.1" - array.prototype.tosorted "^1.1.1" - doctrine "^2.1.0" - es-iterator-helpers "^1.0.12" - estraverse "^5.3.0" - jsx-ast-utils "^2.4.1 || ^3.0.0" - minimatch "^3.1.2" - object.entries "^1.1.6" - object.fromentries "^2.0.6" - object.hasown "^1.1.2" - object.values "^1.1.6" - prop-types "^15.8.1" - resolve "^2.0.0-next.4" - semver "^6.3.1" - string.prototype.matchall "^4.0.8" - -eslint-plugin-testing-library@^5.0.1: - version "5.11.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.11.1.tgz#5b46cdae96d4a78918711c0b4792f90088e62d20" - integrity sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw== - dependencies: - "@typescript-eslint/utils" "^5.58.0" - -eslint-scope@5.1.1, eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-scope@^7.2.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" - integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz" - integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz" - integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== - dependencies: - eslint-visitor-keys "^2.0.0" - -eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz" - integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== - -eslint-visitor-keys@^2.0.0, eslint-visitor-keys@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" - integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== - -eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: - version "3.4.3" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" - integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== - -eslint-webpack-plugin@^3.1.1: - version "3.2.0" - resolved "https://registry.yarnpkg.com/eslint-webpack-plugin/-/eslint-webpack-plugin-3.2.0.tgz#1978cdb9edc461e4b0195a20da950cf57988347c" - integrity sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w== - dependencies: - "@types/eslint" "^7.29.0 || ^8.4.1" - jest-worker "^28.0.2" - micromatch "^4.0.5" - normalize-path "^3.0.0" - schema-utils "^4.0.0" - -eslint@^7.32.0: - version "7.32.0" - resolved "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz" - integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== - dependencies: - "@babel/code-frame" "7.12.11" - "@eslint/eslintrc" "^0.4.3" - "@humanwhocodes/config-array" "^0.5.0" - ajv "^6.10.0" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.0.1" - doctrine "^3.0.0" - enquirer "^2.3.5" - escape-string-regexp "^4.0.0" - eslint-scope "^5.1.1" - eslint-utils "^2.1.0" - eslint-visitor-keys "^2.0.0" - espree "^7.3.1" - esquery "^1.4.0" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^5.1.2" - globals "^13.6.0" - ignore "^4.0.6" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - js-yaml "^3.13.1" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.0.4" - natural-compare "^1.4.0" - optionator "^0.9.1" - progress "^2.0.0" - regexpp "^3.1.0" - semver "^7.2.1" - strip-ansi "^6.0.0" - strip-json-comments "^3.1.0" - table "^6.0.9" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" - -eslint@^8.3.0, eslint@^8.34.0: - version "8.47.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.47.0.tgz#c95f9b935463fb4fad7005e626c7621052e90806" - integrity sha512-spUQWrdPt+pRVP1TTJLmfRNJJHHZryFmptzcafwSvHsceV81djHOdnEeDmkdotZyLNjDhrOasNK8nikkoG1O8Q== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.2" - "@eslint/js" "^8.47.0" - "@humanwhocodes/config-array" "^0.11.10" - "@humanwhocodes/module-importer" "^1.0.1" - "@nodelib/fs.walk" "^1.2.8" - ajv "^6.12.4" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.3.2" - doctrine "^3.0.0" - escape-string-regexp "^4.0.0" - eslint-scope "^7.2.2" - eslint-visitor-keys "^3.4.3" - espree "^9.6.1" - esquery "^1.4.2" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - find-up "^5.0.0" - glob-parent "^6.0.2" - globals "^13.19.0" - graphemer "^1.4.0" - ignore "^5.2.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - is-path-inside "^3.0.3" - js-yaml "^4.1.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.1.2" - natural-compare "^1.4.0" - optionator "^0.9.3" - strip-ansi "^6.0.1" - text-table "^0.2.0" - -espree@^7.3.0, espree@^7.3.1: - version "7.3.1" - resolved "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz" - integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== - dependencies: - acorn "^7.4.0" - acorn-jsx "^5.3.1" - eslint-visitor-keys "^1.3.0" - -espree@^9.6.0, espree@^9.6.1: - version "9.6.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" - integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== - dependencies: - acorn "^8.9.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.4.1" - -esprima@^4.0.0, esprima@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esquery@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz" - integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== - dependencies: - estraverse "^5.1.0" - -esquery@^1.4.2, esquery@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" - integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: - version "5.3.0" - resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -estree-walker@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz" - integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" - integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== - -event-target-shim@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" - integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== - -eventemitter3@^4.0.0: - version "4.0.7" - resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" - integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== - -events@^3.2.0: - version "3.3.0" - resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz" - integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== - -execa@^0.5.0: - version "0.5.1" - resolved "https://registry.npmjs.org/execa/-/execa-0.5.1.tgz" - integrity sha512-R66dW/hW3I8yV77Wg4xn6zMguRPUgt59VLm5e85NrOF05ZdPn7YOfPBSw0E9epJDvuzwVWEG+HmEaQ4muYuWKQ== - dependencies: - cross-spawn "^4.0.0" - get-stream "^2.2.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -execa@^4.0.2: - version "4.1.0" - resolved "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz" - integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== - dependencies: - cross-spawn "^7.0.0" - get-stream "^5.0.0" - human-signals "^1.1.1" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.0" - onetime "^5.1.0" - signal-exit "^3.0.2" - strip-final-newline "^2.0.0" - -execa@^5.0.0, execa@^5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" - integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== - 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" - -exif-parser@^0.1.12: - version "0.1.12" - resolved "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz" - integrity sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw== - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" - integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== - -expect@^27.5.1: - version "27.5.1" - resolved "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz" - integrity sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw== - dependencies: - "@jest/types" "^27.5.1" - jest-get-type "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" - -expect@^29.0.0: - version "29.0.1" - resolved "https://registry.npmjs.org/expect/-/expect-29.0.1.tgz" - integrity sha512-yQgemsjLU+1S8t2A7pXT3Sn/v5/37LY8J+tocWtKEA0iEYYc6gfKbbJJX2fxHZmd7K9WpdbQqXUpmYkq1aewYg== - dependencies: - "@jest/expect-utils" "^29.0.1" - jest-get-type "^29.0.0" - jest-matcher-utils "^29.0.1" - jest-message-util "^29.0.1" - jest-util "^29.0.1" - -express@4.18.1: - version "4.18.1" - resolved "https://registry.npmjs.org/express/-/express-4.18.1.tgz" - integrity sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q== - dependencies: - accepts "~1.3.8" - array-flatten "1.1.1" - body-parser "1.20.0" - content-disposition "0.5.4" - content-type "~1.0.4" - cookie "0.5.0" - cookie-signature "1.0.6" - debug "2.6.9" - depd "2.0.0" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "1.2.0" - fresh "0.5.2" - http-errors "2.0.0" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "2.4.1" - parseurl "~1.3.3" - path-to-regexp "0.1.7" - proxy-addr "~2.0.7" - qs "6.10.3" - range-parser "~1.2.1" - safe-buffer "5.2.1" - send "0.18.0" - serve-static "1.15.0" - setprototypeof "1.2.0" - statuses "2.0.1" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" - -express@^4.17.3: - version "4.18.2" - resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" - integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== - dependencies: - accepts "~1.3.8" - array-flatten "1.1.1" - body-parser "1.20.1" - content-disposition "0.5.4" - content-type "~1.0.4" - cookie "0.5.0" - cookie-signature "1.0.6" - debug "2.6.9" - depd "2.0.0" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "1.2.0" - fresh "0.5.2" - http-errors "2.0.0" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "2.4.1" - parseurl "~1.3.3" - path-to-regexp "0.1.7" - proxy-addr "~2.0.7" - qs "6.11.0" - range-parser "~1.2.1" - safe-buffer "5.2.1" - send "0.18.0" - serve-static "1.15.0" - setprototypeof "1.2.0" - statuses "2.0.1" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" - -extend@~3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -external-editor@^3.0.3: - version "3.1.0" - resolved "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - -extract-zip@^1.6.5: - version "1.7.0" - resolved "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz" - integrity sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA== - dependencies: - concat-stream "^1.6.2" - debug "^2.6.9" - mkdirp "^0.5.4" - yauzl "^2.10.0" - -extract-zip@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz" - integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg== - dependencies: - debug "^4.1.1" - get-stream "^5.1.0" - yauzl "^2.10.0" - optionalDependencies: - "@types/yauzl" "^2.9.1" - -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz" - integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== - -extsprintf@^1.2.0: - version "1.4.1" - resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz" - integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - 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== - -fast-diff@^1.1.2: - version "1.2.0" - resolved "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz" - integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== - -fast-glob@^3.2.12: - version "3.3.1" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" - integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== - 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" - -fast-glob@^3.2.9: - version "3.2.11" - resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz" - integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== - 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" - -fast-json-stable-stringify@2.1.0, fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: - 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== - -fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: - version "2.0.6" - resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" - integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== - -fast-safe-stringify@2.1.1, fast-safe-stringify@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz" - integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== - -fastq@^1.6.0: - version "1.13.0" - resolved "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz" - integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== - dependencies: - reusify "^1.0.4" - -faye-websocket@^0.11.3: - version "0.11.4" - resolved "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz" - integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== - dependencies: - websocket-driver ">=0.5.1" - -fb-watchman@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz" - integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== - dependencies: - bser "2.1.1" - -fbemitter@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/fbemitter/-/fbemitter-3.0.0.tgz" - integrity sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw== - dependencies: - fbjs "^3.0.0" - -fbjs-css-vars@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz" - integrity sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ== - -fbjs@^3.0.0, fbjs@^3.0.1: - version "3.0.4" - resolved "https://registry.npmjs.org/fbjs/-/fbjs-3.0.4.tgz" - integrity sha512-ucV0tDODnGV3JCnnkmoszb5lf4bNpzjv80K41wd4k798Etq+UYD0y0TIfalLjZoKgjive6/adkRnszwapiDgBQ== - dependencies: - cross-fetch "^3.1.5" - fbjs-css-vars "^1.0.0" - loose-envify "^1.0.0" - object-assign "^4.1.0" - promise "^7.1.1" - setimmediate "^1.0.5" - ua-parser-js "^0.7.30" - -fd-slicer@~1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz" - integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g== - dependencies: - pend "~1.2.0" - -figures@^3.0.0: - version "3.2.0" - resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz" - integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== - dependencies: - escape-string-regexp "^1.0.5" - -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -file-loader@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" - integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== - dependencies: - loader-utils "^2.0.0" - schema-utils "^3.0.0" - -file-type@^9.0.0: - version "9.0.0" - resolved "https://registry.npmjs.org/file-type/-/file-type-9.0.0.tgz" - integrity sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw== - -file-url@^2.0.0: - version "2.0.2" - resolved "https://registry.npmjs.org/file-url/-/file-url-2.0.2.tgz" - integrity sha512-x3989K8a1jM6vulMigE8VngH7C5nci0Ks5d9kVjUXmNF28gmiZUNujk5HjwaS8dAzN2QmUfX56riJKgN00dNRw== - -filelist@^1.0.1: - version "1.0.4" - resolved "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz" - integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== - dependencies: - minimatch "^5.0.1" - -filesize@^8.0.6: - version "8.0.7" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-8.0.7.tgz#695e70d80f4e47012c132d57a059e80c6b580bd8" - integrity sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ== - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -finalhandler@1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz" - integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "2.4.1" - parseurl "~1.3.3" - statuses "2.0.1" - unpipe "~1.0.0" - -find-cache-dir@^3.3.1: - 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== - dependencies: - commondir "^1.0.1" - make-dir "^3.0.2" - pkg-dir "^4.1.0" - -find-up@^1.0.0: - version "1.1.2" - resolved "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz" - integrity sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA== - dependencies: - path-exists "^2.0.0" - pinkie-promise "^2.0.0" - -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - -find-up@^4.0.0, find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -fix-path@3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/fix-path/-/fix-path-3.0.0.tgz" - integrity sha512-opGAl4+ip5jUikHR2C8Jo7czZ80pz8EK/0gMlAZu7xgDmBqIynlX8SMYg9KowYjAU6HT0nxsSJEWru0u+n+N2Q== - dependencies: - shell-path "^2.1.0" - -flat-cache@^3.0.4: - version "3.0.4" - resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== - dependencies: - flatted "^3.1.0" - rimraf "^3.0.2" - -flatted@^3.1.0: - version "3.2.7" - resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz" - integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== - -flux@^4.0.1: - version "4.0.3" - resolved "https://registry.npmjs.org/flux/-/flux-4.0.3.tgz" - integrity sha512-yKAbrp7JhZhj6uiT1FTuVMlIAT1J4jqEyBpFApi1kxpGZCvacMVc/t1pMQyotqHhAgvoE3bNvAykhCo2CLjnYw== - dependencies: - fbemitter "^3.0.0" - fbjs "^3.0.1" - -follow-redirects@^1.0.0, follow-redirects@^1.14.0, follow-redirects@^1.14.7, follow-redirects@^1.14.9: - version "1.15.1" - resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz" - integrity sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA== - -for-each@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" - integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== - dependencies: - is-callable "^1.1.3" - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" - integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== - -fork-ts-checker-webpack-plugin@7.2.11: - version "7.2.11" - resolved "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-7.2.11.tgz" - integrity sha512-2e5+NyTUTE1Xq4fWo7KFEQblCaIvvINQwUX3jRmEGlgCTc1Ecqw/975EfQrQ0GEraxJTnp8KB9d/c8hlCHUMJA== - dependencies: - "@babel/code-frame" "^7.16.7" - chalk "^4.1.2" - chokidar "^3.5.3" - cosmiconfig "^7.0.1" - deepmerge "^4.2.2" - fs-extra "^10.0.0" - memfs "^3.4.1" - minimatch "^3.0.4" - schema-utils "^3.1.1" - semver "^7.3.5" - tapable "^2.2.1" - -fork-ts-checker-webpack-plugin@^6.5.0: - version "6.5.3" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz#eda2eff6e22476a2688d10661688c47f611b37f3" - integrity sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ== - dependencies: - "@babel/code-frame" "^7.8.3" - "@types/json-schema" "^7.0.5" - chalk "^4.1.0" - chokidar "^3.4.2" - cosmiconfig "^6.0.0" - deepmerge "^4.2.2" - fs-extra "^9.0.0" - glob "^7.1.6" - memfs "^3.1.2" - minimatch "^3.0.4" - schema-utils "2.7.0" - semver "^7.3.2" - tapable "^1.0.0" - -form-data@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz" - integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - -form-data@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz" - integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - -formidable@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/formidable/-/formidable-2.0.1.tgz" - integrity sha512-rjTMNbp2BpfQShhFbR3Ruk3qk2y9jKpvMW78nJgx8QKtxjDVrwbZG+wvDOmVbifHyOUOQJXxqEy6r0faRrPzTQ== - dependencies: - dezalgo "1.0.3" - hexoid "1.0.0" - once "1.4.0" - qs "6.9.3" - -formik@^2.2.9: - version "2.2.9" - resolved "https://registry.npmjs.org/formik/-/formik-2.2.9.tgz" - integrity sha512-LQLcISMmf1r5at4/gyJigGn0gOwFbeEAlji+N9InZF6LIMXnFNkO42sCI8Jt84YZggpD4cPWObAZaxpEFtSzNA== - dependencies: - deepmerge "^2.1.1" - hoist-non-react-statics "^3.3.0" - lodash "^4.17.21" - lodash-es "^4.17.21" - react-fast-compare "^2.0.1" - tiny-warning "^1.0.2" - tslib "^1.10.0" - -forwarded@0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" - integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== - -fraction.js@^4.2.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.1.tgz#14b4cc886575a5684f8d5fd5759c5db376bb7bb8" - integrity sha512-/KxoyCnPM0GwYI4NN0Iag38Tqt+od3/mLuguepLgCAKPn0ZhC544nssAW0tG2/00zXEYl9W+7hwAIpLHo6Oc7Q== - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" - integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== - -fs-extra@10.1.0, fs-extra@^10.0.0, fs-extra@^10.1.0: - version "10.1.0" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz" - integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-extra@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz" - integrity sha512-VerQV6vEKuhDWD2HGOybV6v5I73syoc/cXAbKlgTC7M/oFVEtklWlp9QH2Ijw3IaWDOQcMkldSPa7zXy79Z/UQ== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^2.1.0" - klaw "^1.0.0" - -fs-extra@^8.1.0: - version "8.1.0" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz" - integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@^9.0.0, fs-extra@^9.0.1: - version "9.1.0" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" - integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== - dependencies: - at-least-node "^1.0.0" - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-minipass@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz" - integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== - dependencies: - minipass "^3.0.0" - -fs-monkey@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz" - integrity sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q== - -fs-monkey@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.4.tgz#ee8c1b53d3fe8bb7e5d2c5c5dfc0168afdd2f747" - integrity sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ== - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - -fsevents@^2.3.2, fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -function.prototype.name@^1.1.5: - version "1.1.5" - resolved "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz" - integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.0" - functions-have-names "^1.2.2" - -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz" - integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== - -functions-have-names@^1.2.2, functions-have-names@^1.2.3: - version "1.2.3" - resolved "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" - integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== - -gauge@^3.0.0: - version "3.0.2" - resolved "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz" - integrity sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q== - dependencies: - aproba "^1.0.3 || ^2.0.0" - color-support "^1.1.2" - console-control-strings "^1.0.0" - has-unicode "^2.0.1" - object-assign "^4.1.1" - signal-exit "^3.0.0" - string-width "^4.2.3" - strip-ansi "^6.0.1" - wide-align "^1.1.2" - -gauge@^4.0.3: - version "4.0.4" - resolved "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz" - integrity sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg== - 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" - -gensync@^1.0.0-beta.2: - 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@^1.0.1: - version "1.0.3" - resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz" - integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== - -get-caller-file@^2.0.5: - 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@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: - version "1.1.2" - resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz" - integrity sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.3" - -get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82" - integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-proto "^1.0.1" - has-symbols "^1.0.3" - -get-own-enumerable-property-symbols@^3.0.0: - version "3.0.2" - resolved "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz" - integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== - -get-package-type@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz" - integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== - -get-stream@^2.2.0: - version "2.3.1" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz" - integrity sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA== - dependencies: - object-assign "^4.0.1" - pinkie-promise "^2.0.0" - -get-stream@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - -get-stream@^5.0.0, get-stream@^5.1.0: - version "5.2.0" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz" - integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== - dependencies: - pump "^3.0.0" - -get-stream@^6.0.0: - version "6.0.1" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - -get-symbol-description@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz" - integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.1" - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz" - integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== - dependencies: - assert-plus "^1.0.0" - -gifwrap@^0.9.2: - version "0.9.4" - resolved "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.4.tgz" - integrity sha512-MDMwbhASQuVeD4JKd1fKgNgCRL3fGqMM4WaqpNhWO0JiMOAjbQdumbs4BbBZEy9/M00EHEjKN3HieVhCUlwjeQ== - dependencies: - image-q "^4.0.0" - omggif "^1.0.10" - -glob-parent@^5.1.2, glob-parent@~5.1.2: - 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" - -glob-parent@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - -glob-to-regexp@^0.4.1: - 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== - -glob@7.1.6: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== - 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" - -glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.2.0: - version "7.2.3" - resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -global-agent@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz" - integrity sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q== - dependencies: - boolean "^3.0.1" - es6-error "^4.1.1" - matcher "^3.0.0" - roarr "^2.15.3" - semver "^7.3.2" - serialize-error "^7.0.1" - -global-dirs@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz" - integrity sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA== - dependencies: - ini "2.0.0" - -global-modules@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" - integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== - dependencies: - global-prefix "^3.0.0" - -global-prefix@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz" - integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== - dependencies: - ini "^1.3.5" - kind-of "^6.0.2" - which "^1.3.1" - -global-tunnel-ng@^2.7.1: - version "2.7.1" - resolved "https://registry.npmjs.org/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz" - integrity sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg== - dependencies: - encodeurl "^1.0.2" - lodash "^4.17.10" - npm-conf "^1.1.3" - tunnel "^0.0.6" - -global@~4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" - integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== - dependencies: - min-document "^2.19.0" - process "^0.11.10" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^13.19.0: - version "13.21.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.21.0.tgz#163aae12f34ef502f5153cfbdd3600f36c63c571" - integrity sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg== - dependencies: - type-fest "^0.20.2" - -globals@^13.6.0, globals@^13.9.0: - version "13.17.0" - resolved "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz" - integrity sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw== - dependencies: - type-fest "^0.20.2" - -globalthis@^1.0.1, globalthis@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" - integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== - dependencies: - define-properties "^1.1.3" - -globby@^11.0.3, globby@^11.0.4, globby@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - 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" - -globby@^6.1.0: - version "6.1.0" - resolved "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz" - integrity sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw== - dependencies: - array-union "^1.0.1" - glob "^7.0.3" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -goober@^2.1.10: - version "2.1.11" - resolved "https://registry.npmjs.org/goober/-/goober-2.1.11.tgz" - integrity sha512-5SS2lmxbhqH0u9ABEWq7WPU69a4i2pYcHeCxqaNq6Cw3mnrF0ghWNM4tEGid4dKy8XNIAUbuThuozDHHKJVh3A== - -gopd@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" - integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== - dependencies: - get-intrinsic "^1.1.3" - -got@^9.6.0: - version "9.6.0" - resolved "https://registry.npmjs.org/got/-/got-9.6.0.tgz" - integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== - dependencies: - "@sindresorhus/is" "^0.14.0" - "@szmarczak/http-timer" "^1.1.2" - cacheable-request "^6.0.0" - decompress-response "^3.3.0" - duplexer3 "^0.1.4" - get-stream "^4.1.0" - lowercase-keys "^1.0.1" - mimic-response "^1.0.1" - p-cancelable "^1.0.0" - to-readable-stream "^1.0.0" - url-parse-lax "^3.0.0" - -graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: - version "4.2.10" - resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz" - integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== - -"graceful-readlink@>= 1.0.0": - version "1.0.1" - resolved "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz" - integrity sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w== - -graphemer@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" - integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== - -gzip-size@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" - integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== - dependencies: - duplexer "^0.1.2" - -handle-thing@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz" - integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== - -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz" - integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== - -har-validator@~5.1.3: - version "5.1.5" - resolved "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz" - integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== - dependencies: - ajv "^6.12.3" - har-schema "^2.0.0" - -harmony-reflect@^1.4.6: - version "1.6.2" - resolved "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz" - integrity sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g== - -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz" - integrity sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg== - dependencies: - ansi-regex "^2.0.0" - -has-bigints@^1.0.1, has-bigints@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz" - integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-property-descriptors@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz" - integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== - dependencies: - get-intrinsic "^1.1.1" - -has-proto@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" - integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== - -has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" - integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== - -has-tostringtag@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz" - integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== - dependencies: - has-symbols "^1.0.2" - -has-unicode@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz" - integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== - -has-yarn@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz" - integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== - -has@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -hasha@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/hasha/-/hasha-2.2.0.tgz" - integrity sha512-jZ38TU/EBiGKrmyTNNZgnvCZHNowiRI4+w/I9noMlekHTZH3KyGgvJLmhSgykeAQ9j2SYPDosM0Bg3wHfzibAQ== - dependencies: - is-stream "^1.0.1" - pinkie-promise "^2.0.0" - -he@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== - -hexoid@1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz" - integrity sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g== - -highlight.js@^10.7.1: - version "10.7.3" - resolved "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz" - integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A== - -hmac-drbg@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz" - integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -hoist-non-react-statics@^3.3.0: - version "3.3.2" - resolved "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz" - integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== - dependencies: - react-is "^16.7.0" - -hoopy@^0.1.4: - version "0.1.4" - resolved "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz" - integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ== - -hosted-git-info@^2.1.4: - version "2.8.9" - resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz" - integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== - -hosted-git-info@^4.1.0: - 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== - dependencies: - lru-cache "^6.0.0" - -hpack.js@^2.1.6: - version "2.1.6" - resolved "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz" - integrity sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ== - dependencies: - inherits "^2.0.1" - obuf "^1.0.0" - readable-stream "^2.0.1" - wbuf "^1.1.0" - -html-encoding-sniffer@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz" - integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== - dependencies: - whatwg-encoding "^1.0.5" - -html-entities@^2.1.0, html-entities@^2.3.2: - version "2.4.0" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.4.0.tgz#edd0cee70402584c8c76cc2c0556db09d1f45061" - integrity sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ== - -html-escaper@^2.0.0: - version "2.0.2" - resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== - -html-minifier-terser@^6.0.2: - version "6.1.0" - resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#bfc818934cc07918f6b3669f5774ecdfd48f32ab" - integrity sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw== - dependencies: - camel-case "^4.1.2" - clean-css "^5.2.2" - commander "^8.3.0" - he "^1.2.0" - param-case "^3.0.4" - relateurl "^0.2.7" - terser "^5.10.0" - -html-webpack-plugin@^5.5.0: - version "5.5.3" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz#72270f4a78e222b5825b296e5e3e1328ad525a3e" - integrity sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg== - dependencies: - "@types/html-minifier-terser" "^6.0.0" - html-minifier-terser "^6.0.2" - lodash "^4.17.21" - pretty-error "^4.0.0" - tapable "^2.0.0" - -htmlparser2@^6.1.0: - version "6.1.0" - resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz" - integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.0.0" - domutils "^2.5.2" - entities "^2.0.0" - -http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz" - integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== - -http-deceiver@^1.2.7: - version "1.2.7" - resolved "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz" - integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== - -http-errors@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" - integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== - dependencies: - depd "2.0.0" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses "2.0.1" - toidentifier "1.0.1" - -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" - integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - -http-parser-js@>=0.5.1: - version "0.5.8" - resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz" - integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q== - -http-proxy-agent@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz" - integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== - dependencies: - "@tootallnate/once" "1" - agent-base "6" - debug "4" - -http-proxy-agent@^5.0.0: - 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== - dependencies: - "@tootallnate/once" "2" - agent-base "6" - debug "4" - -http-proxy-middleware@^2.0.3: - version "2.0.6" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz#e1a4dd6979572c7ab5a4e4b55095d1f32a74963f" - integrity sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw== - 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" - -http-proxy@^1.18.1: - version "1.18.1" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" - integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== - dependencies: - eventemitter3 "^4.0.0" - follow-redirects "^1.0.0" - requires-port "^1.0.0" - -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz" - integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -https-proxy-agent@^5.0.0: - version "5.0.1" - resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" - integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== - dependencies: - agent-base "6" - debug "4" - -human-signals@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz" - integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== - -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - -humanize-ms@^1.2.1: - 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== - dependencies: - ms "^2.0.0" - -husky@^7.0.2: - version "7.0.4" - resolved "https://registry.yarnpkg.com/husky/-/husky-7.0.4.tgz#242048245dc49c8fb1bf0cc7cfb98dd722531535" - integrity sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ== - -icon-gen@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/icon-gen/-/icon-gen-2.0.0.tgz" - integrity sha512-Asj0rWMoFDY3AHLsZdx8UgHX7AIh/9u5ZTXYWJYH+2n8HqHQr655ATdoa1yQLidmm2fnTYlob+Rm4zzrjWr5Bw== - dependencies: - del "^3.0.0" - mkdirp "^0.5.1" - pngjs-nozlib "^1.0.0" - svg2png "4.1.1" - uuid "^3.3.2" - -iconv-corefoundation@^1.1.7: - version "1.1.7" - resolved "https://registry.npmjs.org/iconv-corefoundation/-/iconv-corefoundation-1.1.7.tgz" - integrity sha512-T10qvkw0zz4wnm560lOEg0PovVqUXuOFhhHAkixw8/sycy7TJt7v/RrkEKEQnAw2viPSJu6iAkErxnzR0g8PpQ== - dependencies: - cli-truncate "^2.1.0" - node-addon-api "^1.6.3" - -iconv-lite@0.4.24, iconv-lite@^0.4.24: - version "0.4.24" - resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -iconv-lite@^0.6.2, iconv-lite@^0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" - integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== - dependencies: - safer-buffer ">= 2.1.2 < 3.0.0" - -icss-utils@^5.0.0, icss-utils@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" - integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== - -idb@^7.0.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/idb/-/idb-7.1.1.tgz#d910ded866d32c7ced9befc5bfdf36f572ced72b" - integrity sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ== - -identity-obj-proxy@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14" - integrity sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA== - dependencies: - harmony-reflect "^1.4.6" - -ieee754@^1.1.13, ieee754@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== - -ignore@^5.1.8, ignore@^5.2.0: - version "5.2.0" - resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz" - integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== - -image-q@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/image-q/-/image-q-4.0.0.tgz" - integrity sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw== - dependencies: - "@types/node" "16.9.1" - -immer@^9.0.7: - version "9.0.21" - resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.21.tgz#1e025ea31a40f24fb064f1fef23e931496330176" - integrity sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA== - -immutable@^4.0.0: - version "4.1.0" - resolved "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz" - integrity sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ== - -import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-lazy@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz" - integrity sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A== - -import-local@^3.0.2: - version "3.1.0" - resolved "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz" - integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== - dependencies: - pkg-dir "^4.2.0" - resolve-cwd "^3.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" - integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== - -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - -infer-owner@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz" - integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" - integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== - -ini@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz" - integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== - -ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: - version "1.3.8" - resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - -inquirer@7.3.3: - version "7.3.3" - resolved "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz" - integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== - dependencies: - ansi-escapes "^4.2.1" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-width "^3.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.19" - mute-stream "0.0.8" - run-async "^2.4.0" - rxjs "^6.6.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - through "^2.3.6" - -inquirer@8.2.0: - version "8.2.0" - resolved "https://registry.npmjs.org/inquirer/-/inquirer-8.2.0.tgz" - integrity sha512-0crLweprevJ02tTuA6ThpoAERAGyVILC4sS74uib58Xf/zSr1/ZWtmm7D5CI+bSQEaA04f0K7idaHpQbSWgiVQ== - 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" - -internal-slot@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz" - integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== - dependencies: - get-intrinsic "^1.1.0" - has "^1.0.3" - side-channel "^1.0.4" - -internal-slot@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" - integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== - dependencies: - get-intrinsic "^1.2.0" - has "^1.0.3" - side-channel "^1.0.4" - -interpret@^1.0.0: - version "1.4.0" - resolved "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz" - integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== - -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz" - integrity sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ== - -ip@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz" - integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ== - -ipaddr.js@1.9.1: - 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== - -ipaddr.js@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.1.0.tgz#2119bc447ff8c257753b196fc5f1ce08a4cdf39f" - integrity sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ== - -is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" - integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.2.0" - is-typed-array "^1.1.10" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" - integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== - -is-async-function@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-async-function/-/is-async-function-2.0.0.tgz#8e4418efd3e5d3a6ebb0164c05ef5afb69aa9646" - integrity sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA== - dependencies: - has-tostringtag "^1.0.0" - -is-bigint@^1.0.1: - version "1.0.4" - resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz" - integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== - dependencies: - has-bigints "^1.0.1" - -is-binary-path@~2.1.0: - 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" - -is-boolean-object@^1.1.0: - version "1.1.2" - resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz" - integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-callable@^1.1.3, is-callable@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" - integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== - -is-callable@^1.1.4, is-callable@^1.2.4: - version "1.2.4" - resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz" - integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== - -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== - dependencies: - ci-info "^2.0.0" - -is-ci@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz" - integrity sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ== - dependencies: - ci-info "^3.2.0" - -is-core-module@^2.13.0: - version "2.13.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.0.tgz#bb52aa6e2cbd49a30c2ba68c42bf3435ba6072db" - integrity sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ== - dependencies: - has "^1.0.3" - -is-core-module@^2.9.0: - version "2.10.0" - resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz" - integrity sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg== - dependencies: - has "^1.0.3" - -is-date-object@^1.0.1, is-date-object@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz" - integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== - dependencies: - has-tostringtag "^1.0.0" - -is-docker@^2.0.0, is-docker@^2.1.1: - version "2.2.1" - resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" - integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-finalizationregistry@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz#c8749b65f17c133313e661b1289b95ad3dbd62e6" - integrity sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw== - dependencies: - call-bind "^1.0.2" - -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz" - integrity sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw== - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^3.0.0: - 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== - -is-function@^1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz" - integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ== - -is-generator-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz" - integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== - -is-generator-function@^1.0.10: - version "1.0.10" - resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" - integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== - dependencies: - has-tostringtag "^1.0.0" - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: - 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" - -is-installed-globally@^0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz" - integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== - dependencies: - global-dirs "^3.0.0" - is-path-inside "^3.0.2" - -is-interactive@^1.0.0: - 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== - -is-lambda@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz" - integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== - -is-map@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" - integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== - -is-module@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz" - integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g== - -is-negative-zero@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz" - integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== - -is-npm@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz" - integrity sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA== - -is-number-object@^1.0.4: - version "1.0.7" - resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz" - integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== - dependencies: - has-tostringtag "^1.0.0" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-obj@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz" - integrity sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg== - -is-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz" - integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== - -is-path-cwd@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz" - integrity sha512-cnS56eR9SPAscL77ik76ATVqoPARTqPIVkMDVxRaWH06zT+6+CzIroYRJ0VVvm0Z1zfAvxvz9i/D3Ppjaqt5Nw== - -is-path-in-cwd@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz" - integrity sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ== - dependencies: - is-path-inside "^1.0.0" - -is-path-inside@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz" - integrity sha512-qhsCR/Esx4U4hg/9I19OVUAJkGWtjRYHMRgUMZE2TDdj+Ag+kttZanLupfddNyglzz50cUlmWzUaI37GDfNx/g== - dependencies: - path-is-inside "^1.0.1" - -is-path-inside@^3.0.2, is-path-inside@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - -is-plain-obj@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" - integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== - -is-potential-custom-element-name@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz" - integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== - -is-regex@^1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz" - integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz" - integrity sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA== - -is-root@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" - integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== - -is-set@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" - integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== - -is-shared-array-buffer@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz" - integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== - dependencies: - call-bind "^1.0.2" - -is-stream@^1.0.1, is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz" - integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -is-string@^1.0.5, is-string@^1.0.7: - version "1.0.7" - resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz" - integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== - dependencies: - has-tostringtag "^1.0.0" - -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.4" - resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz" - integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== - dependencies: - has-symbols "^1.0.2" - -is-typed-array@^1.1.10, is-typed-array@^1.1.9: - version "1.1.12" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" - integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== - dependencies: - which-typed-array "^1.1.11" - -is-typedarray@^1.0.0, is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" - integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== - -is-unicode-supported@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" - integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== - -is-utf8@^0.2.0: - version "0.2.1" - resolved "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz" - integrity sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q== - -is-weakmap@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" - integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== - -is-weakref@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz" - integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== - dependencies: - call-bind "^1.0.2" - -is-weakset@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.2.tgz#4569d67a747a1ce5a994dfd4ef6dcea76e7c0a1d" - integrity sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.1" - -is-wsl@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== - dependencies: - is-docker "^2.0.0" - -is-yarn-global@^0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz" - integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== - -isarray@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" - integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== - -isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== - -isbinaryfile@^3.0.2: - version "3.0.3" - resolved "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz" - integrity sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw== - dependencies: - buffer-alloc "^1.2.0" - -isbinaryfile@^4.0.10: - version "4.0.10" - resolved "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz" - integrity sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" - integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== - -istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: - 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== - -istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: - version "5.2.0" - resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz" - integrity sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A== - 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" - -istanbul-lib-report@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" - integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== - dependencies: - istanbul-lib-coverage "^3.0.0" - make-dir "^3.0.0" - supports-color "^7.1.0" - -istanbul-lib-source-maps@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz" - integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== - dependencies: - debug "^4.1.1" - istanbul-lib-coverage "^3.0.0" - source-map "^0.6.1" - -istanbul-reports@^3.1.3: - version "3.1.5" - resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz" - integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w== - dependencies: - html-escaper "^2.0.0" - istanbul-lib-report "^3.0.0" - -iterare@1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz" - integrity sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q== - -iterator.prototype@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.0.tgz#690c88b043d821f783843aaf725d7ac3b62e3b46" - integrity sha512-rjuhAk1AJ1fssphHD0IFV6TWL40CwRZ53FrztKx43yk2v6rguBYsY4Bj1VU4HmoMmKwZUlx7mfnhDf9cOp4YTw== - dependencies: - define-properties "^1.1.4" - get-intrinsic "^1.1.3" - has-symbols "^1.0.3" - has-tostringtag "^1.0.0" - reflect.getprototypeof "^1.0.3" - -jake@^10.8.5: - version "10.8.5" - resolved "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz" - integrity sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw== - dependencies: - async "^3.2.3" - chalk "^4.0.2" - filelist "^1.0.1" - minimatch "^3.0.4" - -jest-changed-files@^27.5.1: - version "27.5.1" - resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz" - integrity sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw== - dependencies: - "@jest/types" "^27.5.1" - execa "^5.0.0" - throat "^6.0.1" - -jest-circus@^27.5.1: - version "27.5.1" - resolved "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz" - integrity sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - dedent "^0.7.0" - expect "^27.5.1" - is-generator-fn "^2.0.0" - jest-each "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" - jest-runtime "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" - pretty-format "^27.5.1" - slash "^3.0.0" - stack-utils "^2.0.3" - throat "^6.0.1" - -jest-cli@^27.5.1: - version "27.5.1" - resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz" - integrity sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw== - dependencies: - "@jest/core" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" - chalk "^4.0.0" - exit "^0.1.2" - graceful-fs "^4.2.9" - import-local "^3.0.2" - jest-config "^27.5.1" - jest-util "^27.5.1" - jest-validate "^27.5.1" - prompts "^2.0.1" - yargs "^16.2.0" - -jest-config@^27.5.1: - version "27.5.1" - resolved "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz" - integrity sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA== - dependencies: - "@babel/core" "^7.8.0" - "@jest/test-sequencer" "^27.5.1" - "@jest/types" "^27.5.1" - babel-jest "^27.5.1" - chalk "^4.0.0" - ci-info "^3.2.0" - deepmerge "^4.2.2" - glob "^7.1.1" - graceful-fs "^4.2.9" - jest-circus "^27.5.1" - jest-environment-jsdom "^27.5.1" - jest-environment-node "^27.5.1" - jest-get-type "^27.5.1" - jest-jasmine2 "^27.5.1" - jest-regex-util "^27.5.1" - jest-resolve "^27.5.1" - jest-runner "^27.5.1" - jest-util "^27.5.1" - jest-validate "^27.5.1" - micromatch "^4.0.4" - parse-json "^5.2.0" - pretty-format "^27.5.1" - slash "^3.0.0" - strip-json-comments "^3.1.1" - -jest-diff@^26.0.0: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394" - integrity sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA== - dependencies: - chalk "^4.0.0" - diff-sequences "^26.6.2" - jest-get-type "^26.3.0" - pretty-format "^26.6.2" - -jest-diff@^27.5.1: - version "27.5.1" - resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz" - integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw== - dependencies: - chalk "^4.0.0" - diff-sequences "^27.5.1" - jest-get-type "^27.5.1" - pretty-format "^27.5.1" - -jest-diff@^29.0.1: - version "29.0.1" - resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-29.0.1.tgz" - integrity sha512-l8PYeq2VhcdxG9tl5cU78ClAlg/N7RtVSp0v3MlXURR0Y99i6eFnegmasOandyTmO6uEdo20+FByAjBFEO9nuw== - dependencies: - chalk "^4.0.0" - diff-sequences "^29.0.0" - jest-get-type "^29.0.0" - pretty-format "^29.0.1" - -jest-docblock@^27.5.1: - version "27.5.1" - resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz" - integrity sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ== - dependencies: - detect-newline "^3.0.0" - -jest-each@^27.5.1: - version "27.5.1" - resolved "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz" - integrity sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ== - dependencies: - "@jest/types" "^27.5.1" - chalk "^4.0.0" - jest-get-type "^27.5.1" - jest-util "^27.5.1" - pretty-format "^27.5.1" - -jest-environment-jsdom@^27.5.1: - version "27.5.1" - resolved "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz" - integrity sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/fake-timers" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - jest-mock "^27.5.1" - jest-util "^27.5.1" - jsdom "^16.6.0" - -jest-environment-node@^27.5.1: - version "27.5.1" - resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz" - integrity sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/fake-timers" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - jest-mock "^27.5.1" - jest-util "^27.5.1" - -jest-get-type@^26.3.0: - version "26.3.0" - resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz" - integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== - -jest-get-type@^27.5.1: - version "27.5.1" - resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz" - integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== - -jest-get-type@^29.0.0: - version "29.0.0" - resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.0.0.tgz" - integrity sha512-83X19z/HuLKYXYHskZlBAShO7UfLFXu/vWajw9ZNJASN32li8yHMaVGAQqxFW1RCFOkB7cubaL6FaJVQqqJLSw== - -jest-haste-map@^27.5.1: - version "27.5.1" - resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz" - integrity sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng== - dependencies: - "@jest/types" "^27.5.1" - "@types/graceful-fs" "^4.1.2" - "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.9" - jest-regex-util "^27.5.1" - jest-serializer "^27.5.1" - jest-util "^27.5.1" - jest-worker "^27.5.1" - micromatch "^4.0.4" - walker "^1.0.7" - optionalDependencies: - fsevents "^2.3.2" - -jest-jasmine2@^27.5.1: - version "27.5.1" - resolved "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz" - integrity sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/source-map" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - expect "^27.5.1" - is-generator-fn "^2.0.0" - jest-each "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" - jest-runtime "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" - pretty-format "^27.5.1" - throat "^6.0.1" - -jest-leak-detector@^27.5.1: - version "27.5.1" - resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz" - integrity sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ== - dependencies: - jest-get-type "^27.5.1" - pretty-format "^27.5.1" - -jest-matcher-utils@^27.5.1: - version "27.5.1" - resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz" - integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw== - dependencies: - chalk "^4.0.0" - jest-diff "^27.5.1" - jest-get-type "^27.5.1" - pretty-format "^27.5.1" - -jest-matcher-utils@^29.0.1: - version "29.0.1" - resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.0.1.tgz" - integrity sha512-/e6UbCDmprRQFnl7+uBKqn4G22c/OmwriE5KCMVqxhElKCQUDcFnq5XM9iJeKtzy4DUjxT27y9VHmKPD8BQPaw== - dependencies: - chalk "^4.0.0" - jest-diff "^29.0.1" - jest-get-type "^29.0.0" - pretty-format "^29.0.1" - -jest-message-util@^27.5.1: - version "27.5.1" - resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz" - integrity sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g== - dependencies: - "@babel/code-frame" "^7.12.13" - "@jest/types" "^27.5.1" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.9" - micromatch "^4.0.4" - pretty-format "^27.5.1" - slash "^3.0.0" - stack-utils "^2.0.3" - -jest-message-util@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-28.1.3.tgz#232def7f2e333f1eecc90649b5b94b0055e7c43d" - integrity sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g== - dependencies: - "@babel/code-frame" "^7.12.13" - "@jest/types" "^28.1.3" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.9" - micromatch "^4.0.4" - pretty-format "^28.1.3" - slash "^3.0.0" - stack-utils "^2.0.3" - -jest-message-util@^29.0.1: - version "29.0.1" - resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.0.1.tgz" - integrity sha512-wRMAQt3HrLpxSubdnzOo68QoTfQ+NLXFzU0Heb18ZUzO2S9GgaXNEdQ4rpd0fI9dq2NXkpCk1IUWSqzYKji64A== - dependencies: - "@babel/code-frame" "^7.12.13" - "@jest/types" "^29.0.1" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.9" - micromatch "^4.0.4" - pretty-format "^29.0.1" - slash "^3.0.0" - stack-utils "^2.0.3" - -jest-mock@^27.5.1: - version "27.5.1" - resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz" - integrity sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og== - dependencies: - "@jest/types" "^27.5.1" - "@types/node" "*" - -jest-pnp-resolver@^1.2.2: - version "1.2.2" - resolved "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz" - integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== - -jest-regex-util@^27.5.1: - version "27.5.1" - resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz" - integrity sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg== - -jest-regex-util@^28.0.0: - version "28.0.2" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-28.0.2.tgz#afdc377a3b25fb6e80825adcf76c854e5bf47ead" - integrity sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw== - -jest-resolve-dependencies@^27.5.1: - version "27.5.1" - resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz" - integrity sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg== - dependencies: - "@jest/types" "^27.5.1" - jest-regex-util "^27.5.1" - jest-snapshot "^27.5.1" - -jest-resolve@^27.4.2, jest-resolve@^27.5.1: - version "27.5.1" - resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz" - integrity sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw== - dependencies: - "@jest/types" "^27.5.1" - chalk "^4.0.0" - graceful-fs "^4.2.9" - jest-haste-map "^27.5.1" - jest-pnp-resolver "^1.2.2" - jest-util "^27.5.1" - jest-validate "^27.5.1" - resolve "^1.20.0" - resolve.exports "^1.1.0" - slash "^3.0.0" - -jest-runner@^27.5.1: - version "27.5.1" - resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz" - integrity sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ== - dependencies: - "@jest/console" "^27.5.1" - "@jest/environment" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - emittery "^0.8.1" - graceful-fs "^4.2.9" - jest-docblock "^27.5.1" - jest-environment-jsdom "^27.5.1" - jest-environment-node "^27.5.1" - jest-haste-map "^27.5.1" - jest-leak-detector "^27.5.1" - jest-message-util "^27.5.1" - jest-resolve "^27.5.1" - jest-runtime "^27.5.1" - jest-util "^27.5.1" - jest-worker "^27.5.1" - source-map-support "^0.5.6" - throat "^6.0.1" - -jest-runtime@^27.5.1: - version "27.5.1" - resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz" - integrity sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/fake-timers" "^27.5.1" - "@jest/globals" "^27.5.1" - "@jest/source-map" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - chalk "^4.0.0" - cjs-module-lexer "^1.0.0" - collect-v8-coverage "^1.0.0" - execa "^5.0.0" - glob "^7.1.3" - graceful-fs "^4.2.9" - jest-haste-map "^27.5.1" - jest-message-util "^27.5.1" - jest-mock "^27.5.1" - jest-regex-util "^27.5.1" - jest-resolve "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" - slash "^3.0.0" - strip-bom "^4.0.0" - -jest-serializer@^27.5.1: - version "27.5.1" - resolved "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz" - integrity sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w== - dependencies: - "@types/node" "*" - graceful-fs "^4.2.9" - -jest-snapshot@^27.5.1: - version "27.5.1" - resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz" - integrity sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA== - dependencies: - "@babel/core" "^7.7.2" - "@babel/generator" "^7.7.2" - "@babel/plugin-syntax-typescript" "^7.7.2" - "@babel/traverse" "^7.7.2" - "@babel/types" "^7.0.0" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/babel__traverse" "^7.0.4" - "@types/prettier" "^2.1.5" - babel-preset-current-node-syntax "^1.0.0" - chalk "^4.0.0" - expect "^27.5.1" - graceful-fs "^4.2.9" - jest-diff "^27.5.1" - jest-get-type "^27.5.1" - jest-haste-map "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" - jest-util "^27.5.1" - natural-compare "^1.4.0" - pretty-format "^27.5.1" - semver "^7.3.2" - -jest-util@^27.0.0, jest-util@^27.5.1: - version "27.5.1" - resolved "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz" - integrity sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw== - dependencies: - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" - -jest-util@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-28.1.3.tgz#f4f932aa0074f0679943220ff9cbba7e497028b0" - integrity sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ== - dependencies: - "@jest/types" "^28.1.3" - "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" - -jest-util@^29.0.1: - version "29.0.1" - resolved "https://registry.npmjs.org/jest-util/-/jest-util-29.0.1.tgz" - integrity sha512-GIWkgNfkeA9d84rORDHPGGTFBrRD13A38QVSKE0bVrGSnoR1KDn8Kqz+0yI5kezMgbT/7zrWaruWP1Kbghlb2A== - dependencies: - "@jest/types" "^29.0.1" - "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" - -jest-validate@^27.5.1: - version "27.5.1" - resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz" - integrity sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ== - dependencies: - "@jest/types" "^27.5.1" - camelcase "^6.2.0" - chalk "^4.0.0" - jest-get-type "^27.5.1" - leven "^3.1.0" - pretty-format "^27.5.1" - -jest-watch-typeahead@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-1.1.0.tgz#b4a6826dfb9c9420da2f7bc900de59dad11266a9" - integrity sha512-Va5nLSJTN7YFtC2jd+7wsoe1pNe5K4ShLux/E5iHEwlB9AxaxmggY7to9KUqKojhaJw3aXqt5WAb4jGPOolpEw== - dependencies: - ansi-escapes "^4.3.1" - chalk "^4.0.0" - jest-regex-util "^28.0.0" - jest-watcher "^28.0.0" - slash "^4.0.0" - string-length "^5.0.1" - strip-ansi "^7.0.1" - -jest-watcher@^27.5.1: - version "27.5.1" - resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz" - integrity sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw== - dependencies: - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - jest-util "^27.5.1" - string-length "^4.0.1" - -jest-watcher@^28.0.0: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-28.1.3.tgz#c6023a59ba2255e3b4c57179fc94164b3e73abd4" - integrity sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g== - dependencies: - "@jest/test-result" "^28.1.3" - "@jest/types" "^28.1.3" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - emittery "^0.10.2" - jest-util "^28.1.3" - string-length "^4.0.1" - -jest-worker@^26.2.1: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" - integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^7.0.0" - -jest-worker@^27.0.2, jest-worker@^27.4.5, jest-worker@^27.5.1: - version "27.5.1" - resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz" - integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -jest-worker@^28.0.2: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-28.1.3.tgz#7e3c4ce3fa23d1bb6accb169e7f396f98ed4bb98" - integrity sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -jest@^27.0.6, jest@^27.4.3: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest/-/jest-27.5.1.tgz#dadf33ba70a779be7a6fc33015843b51494f63fc" - integrity sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ== - dependencies: - "@jest/core" "^27.5.1" - import-local "^3.0.2" - jest-cli "^27.5.1" - -jimp@^0.14.0: - version "0.14.0" - resolved "https://registry.npmjs.org/jimp/-/jimp-0.14.0.tgz" - integrity sha512-8BXU+J8+SPmwwyq9ELihpSV4dWPTiOKBWCEgtkbnxxAVMjXdf3yGmyaLSshBfXc8sP/JQ9OZj5R8nZzz2wPXgA== - dependencies: - "@babel/runtime" "^7.7.2" - "@jimp/custom" "^0.14.0" - "@jimp/plugins" "^0.14.0" - "@jimp/types" "^0.14.0" - regenerator-runtime "^0.13.3" - -jiti@^1.18.2: - version "1.19.3" - resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.19.3.tgz#ef554f76465b3c2b222dc077834a71f0d4a37569" - integrity sha512-5eEbBDQT/jF1xg6l36P+mWGGoH9Spuy0PCdSr2dtWRDGC6ph/w9ZCL4lmESW8f8F7MwT3XKescfP0wnZWAKL9w== - -joi@*, joi@^17.4.2, joi@^17.6.0: - version "17.6.0" - resolved "https://registry.npmjs.org/joi/-/joi-17.6.0.tgz" - integrity sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw== - dependencies: - "@hapi/hoek" "^9.0.0" - "@hapi/topo" "^5.0.0" - "@sideway/address" "^4.1.3" - "@sideway/formula" "^3.0.0" - "@sideway/pinpoint" "^2.0.0" - -jpeg-js@^0.4.0: - version "0.4.4" - resolved "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz" - integrity sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg== - -js-sha3@0.8.0: - version "0.8.0" - resolved "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz" - integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== - -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz" - integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== - -jsdoc-type-pratt-parser@~4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz#136f0571a99c184d84ec84662c45c29ceff71114" - integrity sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ== - -jsdom@^16.6.0: - version "16.7.0" - resolved "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz" - integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== - dependencies: - abab "^2.0.5" - acorn "^8.2.4" - acorn-globals "^6.0.0" - cssom "^0.4.4" - cssstyle "^2.3.0" - data-urls "^2.0.0" - decimal.js "^10.2.1" - domexception "^2.0.1" - escodegen "^2.0.0" - form-data "^3.0.0" - html-encoding-sniffer "^2.0.1" - http-proxy-agent "^4.0.1" - https-proxy-agent "^5.0.0" - is-potential-custom-element-name "^1.0.1" - nwsapi "^2.2.0" - parse5 "6.0.1" - saxes "^5.0.1" - symbol-tree "^3.2.4" - tough-cookie "^4.0.0" - w3c-hr-time "^1.0.2" - w3c-xmlserializer "^2.0.0" - webidl-conversions "^6.1.0" - whatwg-encoding "^1.0.5" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.5.0" - ws "^7.4.6" - xml-name-validator "^3.0.0" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" - integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== - -json-buffer@3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz" - integrity sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ== - -json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: - 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== - -json-schema-traverse@^0.4.1: - 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== - -json-schema-traverse@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" - integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== - -json-schema@0.4.0, json-schema@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" - integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" - integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== - -json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" - integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== - -json5@2.x, json5@^2.1.2, json5@^2.2.0, json5@^2.2.1: - version "2.2.1" - resolved "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz" - integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== - -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== - dependencies: - minimist "^1.2.0" - -json5@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" - integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== - dependencies: - minimist "^1.2.0" - -json5@^2.2.2: - version "2.2.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" - integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== - -jsonc-parser@3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz" - integrity sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA== - -jsonfile@^2.1.0: - version "2.4.0" - resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz" - integrity sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw== - optionalDependencies: - graceful-fs "^4.1.6" - -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz" - integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== - optionalDependencies: - graceful-fs "^4.1.6" - -jsonfile@^6.0.1: - version "6.1.0" - resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== - dependencies: - universalify "^2.0.0" - optionalDependencies: - graceful-fs "^4.1.6" - -jsonpointer@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.1.tgz#2110e0af0900fd37467b5907ecd13a7884a1b559" - integrity sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ== - -jsprim@^1.2.2: - version "1.4.2" - resolved "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz" - integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.4.0" - verror "1.10.0" - -"jsx-ast-utils@^2.4.1 || ^3.0.0": - version "3.3.3" - resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz" - integrity sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw== - dependencies: - array-includes "^3.1.5" - object.assign "^4.1.3" - -jsx-ast-utils@^3.3.3: - version "3.3.5" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#4766bd05a8e2a11af222becd19e15575e52a853a" - integrity sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ== - dependencies: - array-includes "^3.1.6" - array.prototype.flat "^1.3.1" - object.assign "^4.1.4" - object.values "^1.1.6" - -kew@^0.7.0: - version "0.7.0" - resolved "https://registry.npmjs.org/kew/-/kew-0.7.0.tgz" - integrity sha512-IG6nm0+QtAMdXt9KvbgbGdvY50RSrw+U4sGZg+KlrSKPJEwVE5JVoI3d7RWfSMdBQneRheeAOj3lIjX5VL/9RQ== - -keyv@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz" - integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== - dependencies: - json-buffer "3.0.0" - -kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -klaw@^1.0.0: - version "1.3.1" - resolved "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz" - integrity sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw== - optionalDependencies: - graceful-fs "^4.1.9" - -kleur@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" - integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== - -klona@^2.0.4: - version "2.0.5" - resolved "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz" - integrity sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ== - -klona@^2.0.5: - version "2.0.6" - resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.6.tgz#85bffbf819c03b2f53270412420a4555ef882e22" - integrity sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA== - -language-subtag-registry@~0.3.2: - version "0.3.22" - resolved "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz" - integrity sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w== - -language-tags@=1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a" - integrity sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ== - dependencies: - language-subtag-registry "~0.3.2" - -latest-version@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz" - integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== - dependencies: - package-json "^6.3.0" - -launch-editor@^2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.6.0.tgz#4c0c1a6ac126c572bd9ff9a30da1d2cae66defd7" - integrity sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ== - dependencies: - picocolors "^1.0.0" - shell-quote "^1.7.3" - -lazy-val@^1.0.4, lazy-val@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.5.tgz" - integrity sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q== - -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz" - integrity sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw== - dependencies: - invert-kv "^1.0.0" - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -levn@~0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz" - integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -libphonenumber-js@^1.9.43: - version "1.10.13" - resolved "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.10.13.tgz" - integrity sha512-b74iyWmwb4GprAUPjPkJ11GTC7KX4Pd3onpJfKxYyY8y9Rbb4ERY47LvCMEDM09WD3thiLDMXtkfDK/AX+zT7Q== - -lilconfig@^2.0.3, lilconfig@^2.0.5, lilconfig@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" - integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== - -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - -lint-staged@^11.1.2: - version "11.2.6" - resolved "https://registry.npmjs.org/lint-staged/-/lint-staged-11.2.6.tgz" - integrity sha512-Vti55pUnpvPE0J9936lKl0ngVeTdSZpEdTNhASbkaWX7J5R9OEifo1INBGQuGW4zmy6OG+TcWPJ3m5yuy5Q8Tg== - dependencies: - cli-truncate "2.1.0" - colorette "^1.4.0" - commander "^8.2.0" - cosmiconfig "^7.0.1" - debug "^4.3.2" - enquirer "^2.3.6" - execa "^5.1.1" - listr2 "^3.12.2" - micromatch "^4.0.4" - normalize-path "^3.0.0" - please-upgrade-node "^3.2.0" - string-argv "0.3.1" - stringify-object "3.3.0" - supports-color "8.1.1" - -listr2@^3.12.2: - version "3.14.0" - resolved "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz" - integrity sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g== - dependencies: - cli-truncate "^2.1.0" - colorette "^2.0.16" - log-update "^4.0.0" - p-map "^4.0.0" - rfdc "^1.3.0" - rxjs "^7.5.1" - through "^2.3.8" - wrap-ansi "^7.0.0" - -load-bmfont@^1.3.1, load-bmfont@^1.4.0: - version "1.4.1" - resolved "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.1.tgz" - integrity sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA== - dependencies: - buffer-equal "0.0.1" - mime "^1.3.4" - parse-bmfont-ascii "^1.0.3" - parse-bmfont-binary "^1.0.5" - parse-bmfont-xml "^1.1.4" - phin "^2.9.1" - xhr "^2.0.1" - xtend "^4.0.0" - -load-json-file@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz" - integrity sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A== - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - pinkie-promise "^2.0.0" - strip-bom "^2.0.0" - -loader-runner@^4.2.0: - version "4.3.0" - resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz" - integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== - -loader-utils@^2.0.0: - version "2.0.2" - resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz" - integrity sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^2.1.2" - -loader-utils@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" - integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^2.1.2" - -loader-utils@^3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-3.2.1.tgz#4fb104b599daafd82ef3e1a41fb9265f87e1f576" - integrity sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw== - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - -lodash-es@^4.17.21: - version "4.17.21" - resolved "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz" - integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== - -lodash.curry@^4.0.1: - version "4.1.1" - resolved "https://registry.npmjs.org/lodash.curry/-/lodash.curry-4.1.1.tgz" - integrity sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA== - -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz" - integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== - -lodash.escaperegexp@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz#64762c48618082518ac3df4ccf5d5886dae20347" - integrity sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw== - -lodash.flow@^3.3.0: - version "3.5.0" - resolved "https://registry.npmjs.org/lodash.flow/-/lodash.flow-3.5.0.tgz" - integrity sha512-ff3BX/tSioo+XojX4MOsOMhJw0nZoUEF011LX8g8d3gvjVbxd89cCio4BCXronjxcTUIJUoqKEUA+n4CqvvRPw== - -lodash.isequal@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" - integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== - -lodash.memoize@4.x, lodash.memoize@^4.1.2: - version "4.1.2" - resolved "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" - integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lodash.sortby@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" - integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA== - -lodash.truncate@^4.4.2: - version "4.4.2" - resolved "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz" - integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== - -lodash.uniq@^4.5.0: - version "4.5.0" - resolved "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz" - integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== - -lodash@4.17.21, lodash@^4.13.1, lodash@^4.17.10, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.7.0: - version "4.17.21" - resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -log-symbols@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" - integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== - dependencies: - chalk "^4.1.0" - is-unicode-supported "^0.1.0" - -log-update@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz" - integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== - dependencies: - ansi-escapes "^4.3.0" - cli-cursor "^3.1.0" - slice-ansi "^4.0.0" - wrap-ansi "^6.2.0" - -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -lower-case@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz" - integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== - dependencies: - tslib "^2.0.3" - -lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz" - integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== - -lowercase-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz" - integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== - -lru-cache@^4.0.1: - version "4.1.5" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz" - integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -lru-cache@^6.0.0: - 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" - -lru_map@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd" - integrity sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ== - -luxon@^1.23.x: - version "1.28.0" - resolved "https://registry.npmjs.org/luxon/-/luxon-1.28.0.tgz" - integrity sha512-TfTiyvZhwBYM/7QdAVDh+7dBTBA29v4ik0Ce9zda3Mnf8on1S5KJI8P2jKFZ8+5C0jhmr0KwJEO/Wdpm0VeWJQ== - -lz-string@^1.4.4: - version "1.4.4" - resolved "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz" - integrity sha512-0ckx7ZHRPqb0oUm8zNr+90mtf9DQB60H1wMCjBtfi62Kl3a7JbHob6gA2bC+xRvZoOL+1hzUK8jeuEIQE8svEQ== - -macos-release@^2.5.0: - version "2.5.0" - resolved "https://registry.npmjs.org/macos-release/-/macos-release-2.5.0.tgz" - integrity sha512-EIgv+QZ9r+814gjJj0Bt5vSLJLzswGmSUbUpbi9AIr/fsN2IWFBl2NucV9PAiek+U1STK468tEkxmVYUtuAN3g== - -magic-string@0.25.7, magic-string@^0.25.0, magic-string@^0.25.7: - version "0.25.7" - resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz" - integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== - dependencies: - sourcemap-codec "^1.4.4" - -make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: - 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== - dependencies: - semver "^6.0.0" - -make-error@1.x, make-error@^1.1.1: - version "1.3.6" - resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" - integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== - -make-fetch-happen@^9.1.0: - version "9.1.0" - resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz" - integrity sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg== - 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" - -makeerror@1.0.12: - version "1.0.12" - resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz" - integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== - dependencies: - tmpl "1.0.5" - -match-sorter@^6.0.2: - version "6.3.1" - resolved "https://registry.npmjs.org/match-sorter/-/match-sorter-6.3.1.tgz" - integrity sha512-mxybbo3pPNuA+ZuCUhm5bwNkXrJTbsk5VWbR5wiwz/GC6LIiegBGn2w3O08UG/jdbYLinw51fSQ5xNU1U3MgBw== - dependencies: - "@babel/runtime" "^7.12.5" - remove-accents "0.4.2" - -matcher@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz" - integrity sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng== - dependencies: - escape-string-regexp "^4.0.0" - -mdn-data@2.0.14: - version "2.0.14" - resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz" - integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== - -mdn-data@2.0.4: - version "2.0.4" - resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz" - integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" - integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== - -memfs@^3.1.2, memfs@^3.4.3: - version "3.6.0" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.6.0.tgz#d7a2110f86f79dd950a8b6df6d57bc984aa185f6" - integrity sha512-EGowvkkgbMcIChjMTMkESFDbZeSh8xZ7kNSF0hAiAN4Jh6jgHCRS0Ga/+C8y6Au+oqpezRHCfPsmJ2+DwAgiwQ== - dependencies: - fs-monkey "^1.0.4" - -memfs@^3.4.1: - version "3.4.7" - resolved "https://registry.npmjs.org/memfs/-/memfs-3.4.7.tgz" - integrity sha512-ygaiUSNalBX85388uskeCyhSAoOSgzBbtVCr9jA2RROssFL9Q19/ZXFqS+2Th2sr1ewNIWgFdLzLC3Yl1Zv+lw== - dependencies: - fs-monkey "^1.0.3" - -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" - integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.3.0, merge2@^1.4.1: - version "1.4.1" - resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -methods@^1.1.2, methods@~1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" - integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== - -micromatch@^4.0.0, micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: - version "4.0.5" - resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== - dependencies: - braces "^3.0.2" - picomatch "^2.3.1" - -microseconds@0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/microseconds/-/microseconds-0.2.0.tgz" - integrity sha512-n7DHHMjR1avBbSpsTBj6fmMGh2AGrifVV4e+WYc3Q9lO+xnSZ3NyhcBND3vzzatt05LFhoKFRxrIyklmLlUtyA== - -mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": - version "1.52.0" - resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: - version "2.1.35" - resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - -mime@1.6.0, mime@^1.3.4: - version "1.6.0" - resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mime@2.6.0, mime@^2.5.2: - version "2.6.0" - resolved "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz" - integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -mimic-response@^1.0.0, mimic-response@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz" - integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== - -min-document@^2.19.0: - version "2.19.0" - resolved "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz" - integrity sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ== - dependencies: - dom-walk "^0.1.0" - -min-indent@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz" - integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== - -mini-css-extract-plugin@^2.4.5: - version "2.7.6" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.6.tgz#282a3d38863fddcd2e0c220aaed5b90bc156564d" - integrity sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw== - dependencies: - schema-utils "^4.0.0" - -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz" - integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== - -minimatch@3.0.4: - version "3.0.4" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^5.0.1: - version "5.1.0" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz" - integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg== - dependencies: - brace-expansion "^2.0.1" - -minimist@1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz" - integrity sha512-7Wl+Jz+IGWuSdgsQEJ4JunV0si/iMhg42MnQQG6h1R6TNeVenp4U9x5CC5v/gYqz/fENLQITAWXidNtVL0NNbw== - -minimist@1.2.6, minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: - version "1.2.6" - resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz" - integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== - -minipass-collect@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz" - integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== - dependencies: - minipass "^3.0.0" - -minipass-fetch@^1.3.2: - version "1.4.1" - resolved "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz" - integrity sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw== - dependencies: - minipass "^3.1.0" - minipass-sized "^1.0.3" - minizlib "^2.0.0" - optionalDependencies: - encoding "^0.1.12" - -minipass-flush@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz" - integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== - dependencies: - minipass "^3.0.0" - -minipass-pipeline@^1.2.2, minipass-pipeline@^1.2.4: - version "1.2.4" - resolved "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz" - integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== - dependencies: - minipass "^3.0.0" - -minipass-sized@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz" - integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== - dependencies: - minipass "^3.0.0" - -minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3: - version "3.3.4" - resolved "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz" - integrity sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw== - dependencies: - yallist "^4.0.0" - -minizlib@^2.0.0, minizlib@^2.1.1: - version "2.1.2" - resolved "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz" - integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== - dependencies: - minipass "^3.0.0" - yallist "^4.0.0" - -mixpanel-browser@^2.45.0: - version "2.45.0" - resolved "https://registry.yarnpkg.com/mixpanel-browser/-/mixpanel-browser-2.45.0.tgz#a2973be5b66e6d2799ef95a1e55b8ad8eede57e8" - integrity sha512-PQ1DaTk68yyYtLA0iejmzPA9iNDhT4uIZpqZjRTw7HWpYfl123fydHb2laKanaKjm8YDmrGGz3+xZ4Q6joogyg== - -mkdirp@^0.5.1, mkdirp@^0.5.4, mkdirp@~0.5.1: - version "0.5.6" - resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" - integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== - dependencies: - minimist "^1.2.6" - -mkdirp@^1.0.3, mkdirp@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -moment@>=2.14.0: - version "2.29.4" - resolved "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz" - integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" - integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@2.1.3, ms@^2.0.0, ms@^2.1.1: - version "2.1.3" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -multer@1.4.4-lts.1: - version "1.4.4-lts.1" - resolved "https://registry.npmjs.org/multer/-/multer-1.4.4-lts.1.tgz" - integrity sha512-WeSGziVj6+Z2/MwQo3GvqzgR+9Uc+qt8SwHKh3gvNPiISKfsMfG4SvCOFYlxxgkXt7yIV2i1yczehm0EOKIxIg== - dependencies: - append-field "^1.0.0" - busboy "^1.0.0" - concat-stream "^1.5.2" - mkdirp "^0.5.4" - object-assign "^4.1.1" - type-is "^1.6.4" - xtend "^4.0.0" - -multicast-dns@^7.2.5: - version "7.2.5" - resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.5.tgz#77eb46057f4d7adbd16d9290fa7299f6fa64cced" - integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg== - dependencies: - dns-packet "^5.2.2" - thunky "^1.0.2" - -mute-stream@0.0.8: - version "0.0.8" - resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz" - integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== - -mz@^2.4.0, mz@^2.7.0: - version "2.7.0" - resolved "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz" - integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== - dependencies: - any-promise "^1.0.0" - object-assign "^4.0.1" - thenify-all "^1.0.0" - -nano-time@1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/nano-time/-/nano-time-1.0.0.tgz" - integrity sha512-flnngywOoQ0lLQOTRNexn2gGSNuM9bKj9RZAWSzhQ+UJYaAFG9bac4DW9VHjUAzrOaIcajHybCTHe/bkvozQqA== - dependencies: - big-integer "^1.6.16" - -nanoclone@^0.2.1: - version "0.2.1" - resolved "https://registry.npmjs.org/nanoclone/-/nanoclone-0.2.1.tgz" - integrity sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA== - -nanoid@^3.3.6: - version "3.3.6" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" - integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== - -natural-compare-lite@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" - integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" - integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== - -negotiator@0.6.3, negotiator@^0.6.2: - version "0.6.3" - resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" - integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== - -neo-async@^2.6.2: - version "2.6.2" - resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - -no-case@^3.0.4: - version "3.0.4" - resolved "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz" - integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== - dependencies: - lower-case "^2.0.2" - tslib "^2.0.3" - -node-abort-controller@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/node-abort-controller/-/node-abort-controller-3.0.1.tgz#f91fa50b1dee3f909afabb7e261b1e1d6b0cb74e" - integrity sha512-/ujIVxthRs+7q6hsdjHMaj8hRG9NuWmwrz+JdRwZ14jdFoKSkm+vDsCbF9PLpnSqjaWQJuTmVtcWHNLr+vrOFw== - -node-addon-api@^1.6.3: - version "1.7.2" - resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz" - integrity sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg== - -node-addon-api@^4.2.0: - version "4.3.0" - resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz" - integrity sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ== - -node-emoji@1.11.0: - version "1.11.0" - resolved "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz" - integrity sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A== - dependencies: - lodash "^4.17.21" - -node-fetch@2.6.7, node-fetch@^2.6.1, node-fetch@^2.6.7: - version "2.6.7" - resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz" - integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== - dependencies: - whatwg-url "^5.0.0" - -node-fetch@^2.6.12: - version "2.6.13" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.13.tgz#a20acbbec73c2e09f9007de5cda17104122e0010" - integrity sha512-StxNAxh15zr77QvvkmveSQ8uCQ4+v5FkvNTj0OESmiHu+VRi/gXArXtkWMElOsOUNLtUEvI4yS+rdtOHZTwlQA== - dependencies: - whatwg-url "^5.0.0" - -node-forge@^1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" - integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== - -node-gyp@8.x: - version "8.4.1" - resolved "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz" - integrity sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w== - 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" - -node-int64@^0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz" - integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== - -node-releases@^2.0.13: - version "2.0.13" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d" - integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== - -node-releases@^2.0.6: - version "2.0.6" - resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz" - integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== - -nopt@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz" - integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== - dependencies: - abbrev "1" - -normalize-package-data@^2.3.2: - version "2.5.0" - resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -normalize-range@^0.1.2: - version "0.1.2" - resolved "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz" - integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== - -normalize-url@^4.1.0: - version "4.5.1" - resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz" - integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== - -normalize-url@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" - integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== - -npm-conf@^1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz" - integrity sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw== - dependencies: - config-chain "^1.1.11" - pify "^3.0.0" - -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz" - integrity sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw== - dependencies: - path-key "^2.0.0" - -npm-run-path@^4.0.0, npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -npmlog@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz" - integrity sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw== - dependencies: - are-we-there-yet "^2.0.0" - console-control-strings "^1.1.0" - gauge "^3.0.0" - set-blocking "^2.0.0" - -npmlog@^6.0.0: - version "6.0.2" - resolved "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz" - integrity sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg== - dependencies: - are-we-there-yet "^3.0.0" - console-control-strings "^1.1.0" - gauge "^4.0.3" - set-blocking "^2.0.0" - -nth-check@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz" - integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== - dependencies: - boolbase "~1.0.0" - -nth-check@^2.0.1: - 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== - dependencies: - boolbase "^1.0.0" - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz" - integrity sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== - -nwsapi@^2.2.0: - version "2.2.1" - resolved "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.1.tgz" - integrity sha512-JYOWTeFoS0Z93587vRJgASD5Ut11fYl5NyihP3KrYBvMe1FRRs6RN7m20SA/16GM4P6hTnZjT+UmDOt38UeXNg== - -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== - -object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" - integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== - -object-hash@3.0.0, object-hash@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz" - integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== - -object-inspect@^1.12.0, object-inspect@^1.9.0: - version "1.12.2" - resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz" - integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== - -object-inspect@^1.12.3: - version "1.12.3" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" - integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== - -object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object.assign@^4.1.0, object.assign@^4.1.2, object.assign@^4.1.3, object.assign@^4.1.4: - version "4.1.4" - resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz" - integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - has-symbols "^1.0.3" - object-keys "^1.1.1" - -object.entries@^1.1.5: - version "1.1.5" - resolved "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz" - integrity sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -object.entries@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.6.tgz#9737d0e5b8291edd340a3e3264bb8a3b00d5fa23" - integrity sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - -object.fromentries@^2.0.5: - version "2.0.5" - resolved "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz" - integrity sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -object.fromentries@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.6.tgz#cdb04da08c539cffa912dcd368b886e0904bfa73" - integrity sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - -object.getownpropertydescriptors@^2.1.0: - version "2.1.4" - resolved "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.4.tgz" - integrity sha512-sccv3L/pMModT6dJAYF3fzGMVcb38ysQ0tEE6ixv2yXJDtEIPph268OlAdJj5/qZMZDq2g/jqvwppt36uS/uQQ== - dependencies: - array.prototype.reduce "^1.0.4" - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.1" - -object.groupby@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.0.tgz#cb29259cf90f37e7bac6437686c1ea8c916d12a9" - integrity sha512-70MWG6NfRH9GnbZOikuhPPYzpUpof9iW2J9E4dW7FXTqPNb6rllE6u39SKwwiNh8lCwX3DDb5OgcKGiEBrTTyw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.21.2" - get-intrinsic "^1.2.1" - -object.hasown@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.1.tgz" - integrity sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A== - dependencies: - define-properties "^1.1.4" - es-abstract "^1.19.5" - -object.hasown@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.2.tgz#f919e21fad4eb38a57bc6345b3afd496515c3f92" - integrity sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw== - dependencies: - define-properties "^1.1.4" - es-abstract "^1.20.4" - -object.values@^1.1.0, object.values@^1.1.5: - version "1.1.5" - resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz" - integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -object.values@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.6.tgz#4abbaa71eba47d63589d402856f908243eea9b1d" - integrity sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - -oblivious-set@1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/oblivious-set/-/oblivious-set-1.0.0.tgz" - integrity sha512-z+pI07qxo4c2CulUHCDf9lcqDlMSo72N/4rLUpRXf6fu+q8vjt8y0xS+Tlf8NTJDdTXHbdeO1n3MlbctwEoXZw== - -obuf@^1.0.0, obuf@^1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz" - integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== - -omggif@^1.0.10, omggif@^1.0.9: - version "1.0.10" - resolved "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz" - integrity sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw== - -on-finished@2.4.1: - version "2.4.1" - resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" - integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== - dependencies: - ee-first "1.1.1" - -on-headers@~1.0.2: - 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== - -once@1.4.0, once@^1.3.0, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -onetime@^5.1.0, onetime@^5.1.2: - version "5.1.2" - resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -open@^8.0.9, open@^8.4.0: - version "8.4.2" - resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" - integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== - dependencies: - define-lazy-prop "^2.0.0" - is-docker "^2.1.1" - is-wsl "^2.2.0" - -optionator@^0.8.1: - version "0.8.3" - resolved "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== - dependencies: - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - word-wrap "^1.2.3" - -optionator@^0.9.3: - version "0.9.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" - integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== - dependencies: - "@aashutoshrathi/word-wrap" "^1.2.3" - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - -ora@5.4.1, ora@^5.4.1: - version "5.4.1" - resolved "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz" - integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== - 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" - -os-locale@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz" - integrity sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g== - dependencies: - lcid "^1.0.0" - -os-name@4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/os-name/-/os-name-4.0.1.tgz" - integrity sha512-xl9MAoU97MH1Xt5K9ERft2YfCAoaO6msy1OBA0ozxEC0x0TmIoE6K3QvgJMMZA9yKGLmHXNY/YZoDbiGDj4zYw== - dependencies: - macos-release "^2.5.0" - windows-release "^4.0.0" - -os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" - integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== - -p-cancelable@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz" - integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz" - integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== - -p-limit@^2.0.0, p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-limit@^3.0.2: - version "3.1.0" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - -p-map@^1.1.1: - version "1.2.0" - resolved "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz" - integrity sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA== - -p-map@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz" - integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== - dependencies: - aggregate-error "^3.0.0" - -p-retry@^4.5.0: - version "4.6.2" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16" - integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== - dependencies: - "@types/retry" "0.12.0" - retry "^0.13.1" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -package-json@^6.3.0: - version "6.5.0" - resolved "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz" - integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== - dependencies: - got "^9.6.0" - registry-auth-token "^4.0.0" - registry-url "^5.0.0" - semver "^6.2.0" - -pako@^1.0.5: - version "1.0.11" - resolved "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz" - integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== - -param-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" - integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== - dependencies: - dot-case "^3.0.4" - tslib "^2.0.3" - -parent-module@^1.0.0: - 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== - dependencies: - callsites "^3.0.0" - -parse-bmfont-ascii@^1.0.3: - version "1.0.6" - resolved "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz" - integrity sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA== - -parse-bmfont-binary@^1.0.5: - version "1.0.6" - resolved "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz" - integrity sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA== - -parse-bmfont-xml@^1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz" - integrity sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ== - dependencies: - xml-parse-from-string "^1.0.0" - xml2js "^0.4.5" - -parse-headers@^2.0.0: - version "2.0.5" - resolved "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz" - integrity sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA== - -parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz" - integrity sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ== - dependencies: - error-ex "^1.2.0" - -parse-json@^5.0.0, parse-json@^5.2.0: - version "5.2.0" - resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - 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" - -parse5-htmlparser2-tree-adapter@^6.0.0: - 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== - dependencies: - parse5 "^6.0.1" - -parse5@6.0.1, parse5@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz" - integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== - -parse5@^5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz" - integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== - -parseurl@~1.3.2, parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -pascal-case@^3.1.2: - version "3.1.2" - resolved "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz" - integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -path-exists@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz" - integrity sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ== - dependencies: - pinkie-promise "^2.0.0" - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz" - integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - -path-is-inside@^1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz" - integrity sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w== - -path-key@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" - integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz" - integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== - -path-to-regexp@0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.2.5.tgz#0b426991e387fc4c675de23557f358715eb66fb0" - integrity sha512-l6qtdDPIkmAmzEO6egquYDfqQGPMRNGjYtrU13HAXb3YSRrt7HSb1sJY0pKp6o2bAa86tSB6iwaW2JbthPKr7Q== - -path-to-regexp@3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz" - integrity sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA== - -path-type@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz" - integrity sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg== - dependencies: - graceful-fs "^4.1.2" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -pend@~1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz" - integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== - -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz" - integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== - -phantomjs-prebuilt@^2.1.14: - version "2.1.16" - resolved "https://registry.npmjs.org/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.16.tgz" - integrity sha512-PIiRzBhW85xco2fuj41FmsyuYHKjKuXWmhjy3A/Y+CMpN/63TV+s9uzfVhsUwFe0G77xWtHBG8xmXf5BqEUEuQ== - dependencies: - es6-promise "^4.0.3" - extract-zip "^1.6.5" - fs-extra "^1.0.0" - hasha "^2.2.0" - kew "^0.7.0" - progress "^1.1.8" - request "^2.81.0" - request-progress "^2.0.1" - which "^1.2.10" - -phin@^2.9.1: - version "2.9.3" - resolved "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz" - integrity sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA== - -picocolors@^0.2.1: - version "0.2.1" - resolved "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz" - integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA== - -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -pify@^2.0.0, pify@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz" - integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" - integrity sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw== - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" - integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== - -pirates@^4.0.1, pirates@^4.0.4: - version "4.0.5" - resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz" - integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== - -pixelmatch@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz" - integrity sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA== - dependencies: - pngjs "^3.0.0" - -pkg-dir@^4.1.0, pkg-dir@^4.2.0: - 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== - dependencies: - find-up "^4.0.0" - -pkg-up@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" - integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== - dependencies: - find-up "^3.0.0" - -pkginfo@0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.0.tgz" - integrity sha512-PvRaVdb+mc4R87WFh2Xc7t41brwIgRFSNoDmRyG0cAov6IfnFARp0GHxU8wP5Uh4IWduQSJsRPSwaKDjgMremg== - -please-upgrade-node@^3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz" - integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== - dependencies: - semver-compare "^1.0.0" - -plist@^3.0.1, plist@^3.0.4: - version "3.0.6" - resolved "https://registry.npmjs.org/plist/-/plist-3.0.6.tgz" - integrity sha512-WiIVYyrp8TD4w8yCvyeIr+lkmrGRd5u0VbRnU+tP/aRLxP/YadJUYOMZJ/6hIa3oUyVCsycXvtNRgd5XBJIbiA== - dependencies: - base64-js "^1.5.1" - xmlbuilder "^15.1.1" - -pluralize@8.0.0: - version "8.0.0" - resolved "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz" - integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== - -pn@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz" - integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== - -pngjs-nozlib@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/pngjs-nozlib/-/pngjs-nozlib-1.0.0.tgz" - integrity sha512-N1PggqLp9xDqwAoKvGohmZ3m4/N9xpY0nDZivFqQLcpLHmliHnCp9BuNCsOeqHWMuEEgFjpEaq9dZq6RZyy0fA== - -pngjs@^3.0.0, pngjs@^3.3.3: - version "3.4.0" - resolved "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz" - integrity sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w== - -postcss-attribute-case-insensitive@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz#03d761b24afc04c09e757e92ff53716ae8ea2741" - integrity sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ== - dependencies: - postcss-selector-parser "^6.0.10" - -postcss-browser-comments@^4: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-browser-comments/-/postcss-browser-comments-4.0.0.tgz#bcfc86134df5807f5d3c0eefa191d42136b5e72a" - integrity sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg== - -postcss-calc@^8.2.3: - version "8.2.4" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5" - integrity sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q== - dependencies: - postcss-selector-parser "^6.0.9" - postcss-value-parser "^4.2.0" - -postcss-clamp@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/postcss-clamp/-/postcss-clamp-4.1.0.tgz#7263e95abadd8c2ba1bd911b0b5a5c9c93e02363" - integrity sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-color-functional-notation@^4.2.4: - version "4.2.4" - resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz#21a909e8d7454d3612d1659e471ce4696f28caec" - integrity sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-color-hex-alpha@^8.0.4: - version "8.0.4" - resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz#c66e2980f2fbc1a63f5b079663340ce8b55f25a5" - integrity sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-color-rebeccapurple@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz#63fdab91d878ebc4dd4b7c02619a0c3d6a56ced0" - integrity sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-colormin@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.3.1.tgz#86c27c26ed6ba00d96c79e08f3ffb418d1d1988f" - integrity sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ== - dependencies: - browserslist "^4.21.4" - caniuse-api "^3.0.0" - colord "^2.9.1" - postcss-value-parser "^4.2.0" - -postcss-convert-values@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz#04998bb9ba6b65aa31035d669a6af342c5f9d393" - integrity sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA== - dependencies: - browserslist "^4.21.4" - postcss-value-parser "^4.2.0" - -postcss-custom-media@^8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz#c8f9637edf45fef761b014c024cee013f80529ea" - integrity sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-custom-properties@^12.1.10: - version "12.1.11" - resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-12.1.11.tgz#d14bb9b3989ac4d40aaa0e110b43be67ac7845cf" - integrity sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-custom-selectors@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz#1ab4684d65f30fed175520f82d223db0337239d9" - integrity sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg== - dependencies: - postcss-selector-parser "^6.0.4" - -postcss-dir-pseudo-class@^6.0.5: - version "6.0.5" - resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz#2bf31de5de76added44e0a25ecf60ae9f7c7c26c" - integrity sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA== - dependencies: - postcss-selector-parser "^6.0.10" - -postcss-discard-comments@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz#8df5e81d2925af2780075840c1526f0660e53696" - integrity sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ== - -postcss-discard-duplicates@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz#9eb4fe8456706a4eebd6d3b7b777d07bad03e848" - integrity sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw== - -postcss-discard-empty@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz#e57762343ff7f503fe53fca553d18d7f0c369c6c" - integrity sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A== - -postcss-discard-overridden@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz#7e8c5b53325747e9d90131bb88635282fb4a276e" - integrity sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw== - -postcss-double-position-gradients@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz#b96318fdb477be95997e86edd29c6e3557a49b91" - integrity sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ== - dependencies: - "@csstools/postcss-progressive-custom-properties" "^1.1.0" - postcss-value-parser "^4.2.0" - -postcss-env-function@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-4.0.6.tgz#7b2d24c812f540ed6eda4c81f6090416722a8e7a" - integrity sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-flexbugs-fixes@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz#2028e145313074fc9abe276cb7ca14e5401eb49d" - integrity sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ== - -postcss-focus-visible@^6.0.4: - version "6.0.4" - resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz#50c9ea9afa0ee657fb75635fabad25e18d76bf9e" - integrity sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw== - dependencies: - postcss-selector-parser "^6.0.9" - -postcss-focus-within@^5.0.4: - version "5.0.4" - resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz#5b1d2ec603195f3344b716c0b75f61e44e8d2e20" - integrity sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ== - dependencies: - postcss-selector-parser "^6.0.9" - -postcss-font-variant@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz#efd59b4b7ea8bb06127f2d031bfbb7f24d32fa66" - integrity sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA== - -postcss-gap-properties@^3.0.5: - version "3.0.5" - resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz#f7e3cddcf73ee19e94ccf7cb77773f9560aa2fff" - integrity sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg== - -postcss-image-set-function@^4.0.7: - version "4.0.7" - resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz#08353bd756f1cbfb3b6e93182c7829879114481f" - integrity sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-import@^15.1.0: - version "15.1.0" - resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-15.1.0.tgz#41c64ed8cc0e23735a9698b3249ffdbf704adc70" - integrity sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew== - dependencies: - postcss-value-parser "^4.0.0" - read-cache "^1.0.0" - resolve "^1.1.7" - -postcss-initial@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-4.0.1.tgz#529f735f72c5724a0fb30527df6fb7ac54d7de42" - integrity sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ== - -postcss-js@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.1.tgz#61598186f3703bab052f1c4f7d805f3991bee9d2" - integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw== - dependencies: - camelcase-css "^2.0.1" - -postcss-lab-function@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz#6fe4c015102ff7cd27d1bd5385582f67ebdbdc98" - integrity sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w== - dependencies: - "@csstools/postcss-progressive-custom-properties" "^1.1.0" - postcss-value-parser "^4.2.0" - -postcss-load-config@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-4.0.1.tgz#152383f481c2758274404e4962743191d73875bd" - integrity sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA== - dependencies: - lilconfig "^2.0.5" - yaml "^2.1.1" - -postcss-loader@^6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-6.2.1.tgz#0895f7346b1702103d30fdc66e4d494a93c008ef" - integrity sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q== - dependencies: - cosmiconfig "^7.0.0" - klona "^2.0.5" - semver "^7.3.5" - -postcss-logical@^5.0.4: - version "5.0.4" - resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-5.0.4.tgz#ec75b1ee54421acc04d5921576b7d8db6b0e6f73" - integrity sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g== - -postcss-media-minmax@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz#7140bddec173e2d6d657edbd8554a55794e2a5b5" - integrity sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ== - -postcss-merge-longhand@^5.1.7: - version "5.1.7" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz#24a1bdf402d9ef0e70f568f39bdc0344d568fb16" - integrity sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ== - dependencies: - postcss-value-parser "^4.2.0" - stylehacks "^5.1.1" - -postcss-merge-rules@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz#2f26fa5cacb75b1402e213789f6766ae5e40313c" - integrity sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g== - dependencies: - browserslist "^4.21.4" - caniuse-api "^3.0.0" - cssnano-utils "^3.1.0" - postcss-selector-parser "^6.0.5" - -postcss-minify-font-values@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz#f1df0014a726083d260d3bd85d7385fb89d1f01b" - integrity sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-minify-gradients@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz#f1fe1b4f498134a5068240c2f25d46fcd236ba2c" - integrity sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw== - dependencies: - colord "^2.9.1" - cssnano-utils "^3.1.0" - postcss-value-parser "^4.2.0" - -postcss-minify-params@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz#c06a6c787128b3208b38c9364cfc40c8aa5d7352" - integrity sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw== - dependencies: - browserslist "^4.21.4" - cssnano-utils "^3.1.0" - postcss-value-parser "^4.2.0" - -postcss-minify-selectors@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz#d4e7e6b46147b8117ea9325a915a801d5fe656c6" - integrity sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg== - dependencies: - postcss-selector-parser "^6.0.5" - -postcss-modules-extract-imports@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d" - integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== - -postcss-modules-local-by-default@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz#b08eb4f083050708998ba2c6061b50c2870ca524" - integrity sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA== - dependencies: - icss-utils "^5.0.0" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.1.0" - -postcss-modules-scope@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06" - integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg== - dependencies: - postcss-selector-parser "^6.0.4" - -postcss-modules-values@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" - integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== - dependencies: - icss-utils "^5.0.0" - -postcss-nested@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.0.1.tgz#f83dc9846ca16d2f4fa864f16e9d9f7d0961662c" - integrity sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ== - dependencies: - postcss-selector-parser "^6.0.11" - -postcss-nesting@^10.2.0: - version "10.2.0" - resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-10.2.0.tgz#0b12ce0db8edfd2d8ae0aaf86427370b898890be" - integrity sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA== - dependencies: - "@csstools/selector-specificity" "^2.0.0" - postcss-selector-parser "^6.0.10" - -postcss-normalize-charset@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz#9302de0b29094b52c259e9b2cf8dc0879879f0ed" - integrity sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg== - -postcss-normalize-display-values@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz#72abbae58081960e9edd7200fcf21ab8325c3da8" - integrity sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-positions@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz#ef97279d894087b59325b45c47f1e863daefbb92" - integrity sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-repeat-style@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz#e9eb96805204f4766df66fd09ed2e13545420fb2" - integrity sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-string@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz#411961169e07308c82c1f8c55f3e8a337757e228" - integrity sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-timing-functions@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz#d5614410f8f0b2388e9f240aa6011ba6f52dafbb" - integrity sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-unicode@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz#f67297fca3fea7f17e0d2caa40769afc487aa030" - integrity sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA== - dependencies: - browserslist "^4.21.4" - postcss-value-parser "^4.2.0" - -postcss-normalize-url@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz#ed9d88ca82e21abef99f743457d3729a042adcdc" - integrity sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew== - dependencies: - normalize-url "^6.0.1" - postcss-value-parser "^4.2.0" - -postcss-normalize-whitespace@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz#08a1a0d1ffa17a7cc6efe1e6c9da969cc4493cfa" - integrity sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize@^10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize/-/postcss-normalize-10.0.1.tgz#464692676b52792a06b06880a176279216540dd7" - integrity sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA== - dependencies: - "@csstools/normalize.css" "*" - postcss-browser-comments "^4" - sanitize.css "*" - -postcss-opacity-percentage@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.3.tgz#5b89b35551a556e20c5d23eb5260fbfcf5245da6" - integrity sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A== - -postcss-ordered-values@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz#b6fd2bd10f937b23d86bc829c69e7732ce76ea38" - integrity sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ== - dependencies: - cssnano-utils "^3.1.0" - postcss-value-parser "^4.2.0" - -postcss-overflow-shorthand@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz#7ed6486fec44b76f0eab15aa4866cda5d55d893e" - integrity sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-page-break@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-3.0.4.tgz#7fbf741c233621622b68d435babfb70dd8c1ee5f" - integrity sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ== - -postcss-place@^7.0.5: - version "7.0.5" - resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-7.0.5.tgz#95dbf85fd9656a3a6e60e832b5809914236986c4" - integrity sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-preset-env@^7.0.1: - version "7.8.3" - resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-7.8.3.tgz#2a50f5e612c3149cc7af75634e202a5b2ad4f1e2" - integrity sha512-T1LgRm5uEVFSEF83vHZJV2z19lHg4yJuZ6gXZZkqVsqv63nlr6zabMH3l4Pc01FQCyfWVrh2GaUeCVy9Po+Aag== - dependencies: - "@csstools/postcss-cascade-layers" "^1.1.1" - "@csstools/postcss-color-function" "^1.1.1" - "@csstools/postcss-font-format-keywords" "^1.0.1" - "@csstools/postcss-hwb-function" "^1.0.2" - "@csstools/postcss-ic-unit" "^1.0.1" - "@csstools/postcss-is-pseudo-class" "^2.0.7" - "@csstools/postcss-nested-calc" "^1.0.0" - "@csstools/postcss-normalize-display-values" "^1.0.1" - "@csstools/postcss-oklab-function" "^1.1.1" - "@csstools/postcss-progressive-custom-properties" "^1.3.0" - "@csstools/postcss-stepped-value-functions" "^1.0.1" - "@csstools/postcss-text-decoration-shorthand" "^1.0.0" - "@csstools/postcss-trigonometric-functions" "^1.0.2" - "@csstools/postcss-unset-value" "^1.0.2" - autoprefixer "^10.4.13" - browserslist "^4.21.4" - css-blank-pseudo "^3.0.3" - css-has-pseudo "^3.0.4" - css-prefers-color-scheme "^6.0.3" - cssdb "^7.1.0" - postcss-attribute-case-insensitive "^5.0.2" - postcss-clamp "^4.1.0" - postcss-color-functional-notation "^4.2.4" - postcss-color-hex-alpha "^8.0.4" - postcss-color-rebeccapurple "^7.1.1" - postcss-custom-media "^8.0.2" - postcss-custom-properties "^12.1.10" - postcss-custom-selectors "^6.0.3" - postcss-dir-pseudo-class "^6.0.5" - postcss-double-position-gradients "^3.1.2" - postcss-env-function "^4.0.6" - postcss-focus-visible "^6.0.4" - postcss-focus-within "^5.0.4" - postcss-font-variant "^5.0.0" - postcss-gap-properties "^3.0.5" - postcss-image-set-function "^4.0.7" - postcss-initial "^4.0.1" - postcss-lab-function "^4.2.1" - postcss-logical "^5.0.4" - postcss-media-minmax "^5.0.0" - postcss-nesting "^10.2.0" - postcss-opacity-percentage "^1.1.2" - postcss-overflow-shorthand "^3.0.4" - postcss-page-break "^3.0.4" - postcss-place "^7.0.5" - postcss-pseudo-class-any-link "^7.1.6" - postcss-replace-overflow-wrap "^4.0.0" - postcss-selector-not "^6.0.1" - postcss-value-parser "^4.2.0" - -postcss-pseudo-class-any-link@^7.1.6: - version "7.1.6" - resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz#2693b221902da772c278def85a4d9a64b6e617ab" - integrity sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w== - dependencies: - postcss-selector-parser "^6.0.10" - -postcss-reduce-initial@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz#798cd77b3e033eae7105c18c9d371d989e1382d6" - integrity sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg== - dependencies: - browserslist "^4.21.4" - caniuse-api "^3.0.0" - -postcss-reduce-transforms@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz#333b70e7758b802f3dd0ddfe98bb1ccfef96b6e9" - integrity sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-replace-overflow-wrap@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz#d2df6bed10b477bf9c52fab28c568b4b29ca4319" - integrity sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw== - -postcss-selector-not@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz#8f0a709bf7d4b45222793fc34409be407537556d" - integrity sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ== - dependencies: - postcss-selector-parser "^6.0.10" - -postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9: - version "6.0.13" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz#d05d8d76b1e8e173257ef9d60b706a8e5e99bf1b" - integrity sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ== - dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" - -postcss-selector-parser@^6.0.2: - version "6.0.10" - resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz" - integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w== - dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" - -postcss-svgo@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-5.1.0.tgz#0a317400ced789f233a28826e77523f15857d80d" - integrity sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA== - dependencies: - postcss-value-parser "^4.2.0" - svgo "^2.7.0" - -postcss-unique-selectors@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz#a9f273d1eacd09e9aa6088f4b0507b18b1b541b6" - integrity sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA== - dependencies: - postcss-selector-parser "^6.0.5" - -postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: - version "4.2.0" - resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" - integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== - -postcss@^7.0.35: - version "7.0.39" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309" - integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA== - dependencies: - picocolors "^0.2.1" - source-map "^0.6.1" - -postcss@^8.3.5, postcss@^8.4.21, postcss@^8.4.23, postcss@^8.4.4: - version "8.4.28" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.28.tgz#c6cc681ed00109072816e1557f889ef51cf950a5" - integrity sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw== - dependencies: - nanoid "^3.3.6" - picocolors "^1.0.0" - source-map-js "^1.0.2" - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz" - integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== - -prepend-http@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz" - integrity sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA== - -prettier-linter-helpers@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz" - integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== - dependencies: - fast-diff "^1.1.2" - -prettier@^2.4.1: - version "2.7.1" - resolved "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz" - integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== - -pretty-bytes@^5.3.0, pretty-bytes@^5.4.1: - version "5.6.0" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" - integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== - -pretty-error@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-4.0.0.tgz#90a703f46dd7234adb46d0f84823e9d1cb8f10d6" - integrity sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw== - dependencies: - lodash "^4.17.20" - renderkid "^3.0.0" - -pretty-format@^26.0.0, pretty-format@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz" - integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== - dependencies: - "@jest/types" "^26.6.2" - ansi-regex "^5.0.0" - ansi-styles "^4.0.0" - react-is "^17.0.1" - -pretty-format@^27.5.1: - version "27.5.1" - resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz" - integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== - dependencies: - ansi-regex "^5.0.1" - ansi-styles "^5.0.0" - react-is "^17.0.1" - -pretty-format@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-28.1.3.tgz#c9fba8cedf99ce50963a11b27d982a9ae90970d5" - integrity sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q== - dependencies: - "@jest/schemas" "^28.1.3" - ansi-regex "^5.0.1" - ansi-styles "^5.0.0" - react-is "^18.0.0" - -pretty-format@^29.0.0, pretty-format@^29.0.1: - version "29.0.1" - resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-29.0.1.tgz" - integrity sha512-iTHy3QZMzuL484mSTYbQIM1AHhEQsH8mXWS2/vd2yFBYnG3EBqGiMONo28PlPgrW7P/8s/1ISv+y7WH306l8cw== - dependencies: - "@jest/schemas" "^29.0.0" - ansi-styles "^5.0.0" - react-is "^18.0.0" - -prismjs@^1.25.0: - version "1.29.0" - resolved "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz" - integrity sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q== - -process-nextick-args@~2.0.0: - 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== - -process@^0.11.10: - version "0.11.10" - resolved "https://registry.npmjs.org/process/-/process-0.11.10.tgz" - integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== - -progress@^1.1.8: - version "1.1.8" - resolved "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz" - integrity sha512-UdA8mJ4weIkUBO224tIarHzuHs4HuYiJvsuGT7j/SPQiUJVjYvNDBIPa0hAorduOfjGohB/qHWRa/lrrWX/mXw== - -progress@^2.0.0, progress@^2.0.3: - version "2.0.3" - resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - -promise-inflight@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz" - integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== - -promise-retry@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz" - integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== - dependencies: - err-code "^2.0.2" - retry "^0.12.0" - -promise@^7.1.1: - version "7.3.1" - resolved "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz" - integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== - dependencies: - asap "~2.0.3" - -promise@^8.1.0: - version "8.2.0" - resolved "https://registry.npmjs.org/promise/-/promise-8.2.0.tgz" - integrity sha512-+CMAlLHqwRYwBMXKCP+o8ns7DN+xHDUiI+0nArsiJ9y+kJVPLFxEaSw6Ha9s9H0tftxg2Yzl25wqj9G7m5wLZg== - dependencies: - asap "~2.0.6" - -prompts@^2.0.1, prompts@^2.4.2: - version "2.4.2" - resolved "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz" - integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.5" - -prop-types@^15.7.2, prop-types@^15.8.1: - version "15.8.1" - resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" - integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== - dependencies: - loose-envify "^1.4.0" - object-assign "^4.1.1" - react-is "^16.13.1" - -property-expr@^2.0.4: - version "2.0.5" - resolved "https://registry.npmjs.org/property-expr/-/property-expr-2.0.5.tgz" - integrity sha512-IJUkICM5dP5znhCckHSv30Q4b5/JA5enCtkRHYaOVOAocnH/1BQEYTC5NMfT3AVl/iXKdr3aqQbQn9DxyWknwA== - -proto-list@~1.2.1: - version "1.2.4" - resolved "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz" - integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== - -proxy-addr@~2.0.7: - 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== - dependencies: - forwarded "0.2.0" - ipaddr.js "1.9.1" - -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz" - integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ== - -psl@^1.1.28, psl@^1.1.33: - version "1.9.0" - resolved "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz" - integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -pupa@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz" - integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A== - dependencies: - escape-goat "^2.0.0" - -pure-color@^1.2.0: - version "1.3.0" - resolved "https://registry.npmjs.org/pure-color/-/pure-color-1.3.0.tgz" - integrity sha512-QFADYnsVoBMw1srW7OVKEYjG+MbIa49s54w1MA1EDY6r2r/sTcKKYqRX1f4GYvnXP7eN/Pe9HFcX+hwzmrXRHA== - -q@^1.1.2: - version "1.5.1" - resolved "https://registry.npmjs.org/q/-/q-1.5.1.tgz" - integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== - -qs@6.10.3: - version "6.10.3" - resolved "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz" - integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ== - dependencies: - side-channel "^1.0.4" - -qs@6.11.0, qs@^6.10.3: - version "6.11.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" - integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== - dependencies: - side-channel "^1.0.4" - -qs@6.9.3: - version "6.9.3" - resolved "https://registry.npmjs.org/qs/-/qs-6.9.3.tgz" - integrity sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw== - -qs@~6.5.2: - version "6.5.3" - resolved "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz" - integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== - -querystringify@^2.1.1: - version "2.2.0" - resolved "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz" - integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== - -queue-microtask@1.2.3, queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -raf@^3.4.1: - version "3.4.1" - resolved "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz" - integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== - dependencies: - performance-now "^2.1.0" - -randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -range-parser@^1.2.1, range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@2.5.1: - version "2.5.1" - resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz" - integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== - dependencies: - bytes "3.1.2" - http-errors "2.0.0" - iconv-lite "0.4.24" - unpipe "1.0.0" - -rc@1.2.8, rc@^1.2.8: - version "1.2.8" - resolved "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - -react-app-polyfill@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-3.0.0.tgz#95221e0a9bd259e5ca6b177c7bb1cb6768f68fd7" - integrity sha512-sZ41cxiU5llIB003yxxQBYrARBqe0repqPTTYBTmMqTz9szeBbE37BehCE891NZsmdZqqP+xWKdT3eo3vOzN8w== - dependencies: - core-js "^3.19.2" - object-assign "^4.1.1" - promise "^8.1.0" - raf "^3.4.1" - regenerator-runtime "^0.13.9" - whatwg-fetch "^3.6.2" - -react-base16-styling@^0.6.0: - version "0.6.0" - resolved "https://registry.npmjs.org/react-base16-styling/-/react-base16-styling-0.6.0.tgz" - integrity sha512-yvh/7CArceR/jNATXOKDlvTnPKPmGZz7zsenQ3jUwLzHkNUR0CvY3yGYJbWJ/nnxsL8Sgmt5cO3/SILVuPO6TQ== - dependencies: - base16 "^1.0.0" - lodash.curry "^4.0.1" - lodash.flow "^3.3.0" - pure-color "^1.2.0" - -react-dev-utils@^12.0.0: - version "12.0.1" - resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-12.0.1.tgz#ba92edb4a1f379bd46ccd6bcd4e7bc398df33e73" - integrity sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ== - dependencies: - "@babel/code-frame" "^7.16.0" - address "^1.1.2" - browserslist "^4.18.1" - chalk "^4.1.2" - cross-spawn "^7.0.3" - detect-port-alt "^1.1.6" - escape-string-regexp "^4.0.0" - filesize "^8.0.6" - find-up "^5.0.0" - fork-ts-checker-webpack-plugin "^6.5.0" - global-modules "^2.0.0" - globby "^11.0.4" - gzip-size "^6.0.0" - immer "^9.0.7" - is-root "^2.1.0" - loader-utils "^3.2.0" - open "^8.4.0" - pkg-up "^3.1.0" - prompts "^2.4.2" - react-error-overlay "^6.0.11" - recursive-readdir "^2.2.2" - shell-quote "^1.7.3" - strip-ansi "^6.0.1" - text-table "^0.2.0" - -react-dom@^17.0.2: - version "17.0.2" - resolved "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz" - integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - scheduler "^0.20.2" - -react-error-overlay@^6.0.11: - version "6.0.11" - resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.11.tgz#92835de5841c5cf08ba00ddd2d677b6d17ff9adb" - integrity sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg== - -react-fast-compare@^2.0.1: - version "2.0.4" - resolved "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz" - integrity sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw== - -react-fast-compare@^3.1.1: - version "3.2.2" - resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.2.tgz#929a97a532304ce9fee4bcae44234f1ce2c21d49" - integrity sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ== - -react-helmet@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/react-helmet/-/react-helmet-6.1.0.tgz#a750d5165cb13cf213e44747502652e794468726" - integrity sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw== - dependencies: - object-assign "^4.1.1" - prop-types "^15.7.2" - react-fast-compare "^3.1.1" - react-side-effect "^2.1.0" - -react-hot-toast@^2.1.1: - version "2.3.0" - resolved "https://registry.npmjs.org/react-hot-toast/-/react-hot-toast-2.3.0.tgz" - integrity sha512-/RxV+bfjld7tSJR1SCLzMAXgFuNW7fCpK6+vbYqfmbGSWcqTMz2rizrvfWKvtcPH5HK0NqxmBaC5SrAy1F42zA== - dependencies: - goober "^2.1.10" - -react-icons@^4.11.0: - version "4.11.0" - resolved "https://registry.yarnpkg.com/react-icons/-/react-icons-4.11.0.tgz#4b0e31c9bfc919608095cc429c4f1846f4d66c65" - integrity sha512-V+4khzYcE5EBk/BvcuYRq6V/osf11ODUM2J8hg2FDSswRrGvqiYUYPRy4OdrWaQOBj4NcpJfmHZLNaD+VH0TyA== - -react-is@^16.13.1, react-is@^16.7.0: - version "16.13.1" - resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== - -react-is@^17.0.1: - version "17.0.2" - resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" - integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== - -react-is@^18.0.0: - version "18.2.0" - resolved "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz" - integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== - -react-json-view@^1.21.3: - version "1.21.3" - resolved "https://registry.npmjs.org/react-json-view/-/react-json-view-1.21.3.tgz" - integrity sha512-13p8IREj9/x/Ye4WI/JpjhoIwuzEgUAtgJZNBJckfzJt1qyh24BdTm6UQNGnyTq9dapQdrqvquZTo3dz1X6Cjw== - dependencies: - flux "^4.0.1" - react-base16-styling "^0.6.0" - react-lifecycles-compat "^3.0.4" - react-textarea-autosize "^8.3.2" - -react-lifecycles-compat@^3.0.4: - version "3.0.4" - resolved "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz" - integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== - -react-modern-drawer@^1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/react-modern-drawer/-/react-modern-drawer-1.1.2.tgz" - integrity sha512-v7I6gGHZnJo7mVLFV74NyazEgl7IXJSmnmFE98olhH7sP9O0ul/1l/d7YQOARWyyLPd96P0odriX+nRusDJr6g== - -react-pro-sidebar@^0.7.1: - version "0.7.1" - resolved "https://registry.npmjs.org/react-pro-sidebar/-/react-pro-sidebar-0.7.1.tgz" - integrity sha512-Iy1X8ce4t5Vqz4CsyzjwokGUE3/IObgmYzS0ins7/2eWKle0SMUPaWdgMKFIVjtVrMr5vmjPbRicq8FxnVaf8A== - dependencies: - "@popperjs/core" "^2.4.0" - classnames "^2.2.6" - react-slidedown "^2.4.5" - resize-observer-polyfill "^1.5.1" - -react-query@^3.24.4: - version "3.39.2" - resolved "https://registry.npmjs.org/react-query/-/react-query-3.39.2.tgz" - integrity sha512-F6hYDKyNgDQfQOuR1Rsp3VRzJnWHx6aRnnIZHMNGGgbL3SBgpZTDg8MQwmxOgpCAoqZJA+JSNCydF1xGJqKOCA== - dependencies: - "@babel/runtime" "^7.5.5" - broadcast-channel "^3.4.1" - match-sorter "^6.0.2" - -react-refresh@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.11.0.tgz#77198b944733f0f1f1a90e791de4541f9f074046" - integrity sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A== - -react-router-dom@6.15.0: - version "6.15.0" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.15.0.tgz#6da7db61e56797266fbbef0d5e324d6ac443ee40" - integrity sha512-aR42t0fs7brintwBGAv2+mGlCtgtFQeOzK0BM1/OiqEzRejOZtpMZepvgkscpMUnKb8YO84G7s3LsHnnDNonbQ== - dependencies: - "@remix-run/router" "1.8.0" - react-router "6.15.0" - -react-router@6.15.0: - version "6.15.0" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.15.0.tgz#bf2cb5a4a7ed57f074d4ea88db0d95033f39cac8" - integrity sha512-NIytlzvzLwJkCQj2HLefmeakxxWHWAP+02EGqWEZy+DgfHHKQMUoBBjUQLOtFInBMhWtb3hiUy6MfFgwLjXhqg== - dependencies: - "@remix-run/router" "1.8.0" - -react-scripts@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-5.0.0.tgz#6547a6d7f8b64364ef95273767466cc577cb4b60" - integrity sha512-3i0L2CyIlROz7mxETEdfif6Sfhh9Lfpzi10CtcGs1emDQStmZfWjJbAIMtRD0opVUjQuFWqHZyRZ9PPzKCFxWg== - dependencies: - "@babel/core" "^7.16.0" - "@pmmmwh/react-refresh-webpack-plugin" "^0.5.3" - "@svgr/webpack" "^5.5.0" - babel-jest "^27.4.2" - babel-loader "^8.2.3" - babel-plugin-named-asset-import "^0.3.8" - babel-preset-react-app "^10.0.1" - bfj "^7.0.2" - browserslist "^4.18.1" - camelcase "^6.2.1" - case-sensitive-paths-webpack-plugin "^2.4.0" - css-loader "^6.5.1" - css-minimizer-webpack-plugin "^3.2.0" - dotenv "^10.0.0" - dotenv-expand "^5.1.0" - eslint "^8.3.0" - eslint-config-react-app "^7.0.0" - eslint-webpack-plugin "^3.1.1" - file-loader "^6.2.0" - fs-extra "^10.0.0" - html-webpack-plugin "^5.5.0" - identity-obj-proxy "^3.0.0" - jest "^27.4.3" - jest-resolve "^27.4.2" - jest-watch-typeahead "^1.0.0" - mini-css-extract-plugin "^2.4.5" - postcss "^8.4.4" - postcss-flexbugs-fixes "^5.0.2" - postcss-loader "^6.2.1" - postcss-normalize "^10.0.1" - postcss-preset-env "^7.0.1" - prompts "^2.4.2" - react-app-polyfill "^3.0.0" - react-dev-utils "^12.0.0" - react-refresh "^0.11.0" - resolve "^1.20.0" - resolve-url-loader "^4.0.0" - sass-loader "^12.3.0" - semver "^7.3.5" - source-map-loader "^3.0.0" - style-loader "^3.3.1" - tailwindcss "^3.0.2" - terser-webpack-plugin "^5.2.5" - webpack "^5.64.4" - webpack-dev-server "^4.6.0" - webpack-manifest-plugin "^4.0.2" - workbox-webpack-plugin "^6.4.1" - optionalDependencies: - fsevents "^2.3.2" - -react-side-effect@^2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/react-side-effect/-/react-side-effect-2.1.2.tgz#dc6345b9e8f9906dc2eeb68700b615e0b4fe752a" - integrity sha512-PVjOcvVOyIILrYoyGEpDN3vmYNLdy1CajSFNt4TDsVQC5KpTijDvWVoR+/7Rz2xT978D8/ZtFceXxzsPwZEDvw== - -react-slidedown@^2.4.5: - version "2.4.7" - resolved "https://registry.npmjs.org/react-slidedown/-/react-slidedown-2.4.7.tgz" - integrity sha512-HGDfrqo70r1WVE0DwrySPdCT27/2wcZaJYh5kOnmuPSCtjDDJrNkDdn4Ep/cma2VVfwupeAGhbc2pbrGThU6VQ== - dependencies: - tslib "^2.0.0" - -react-textarea-autosize@^8.3.2: - version "8.3.4" - resolved "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.3.4.tgz" - integrity sha512-CdtmP8Dc19xL8/R6sWvtknD/eCXkQr30dtvC4VmGInhRsfF8X/ihXCq6+9l9qbxmKRiq407/7z5fxE7cVWQNgQ== - dependencies: - "@babel/runtime" "^7.10.2" - use-composed-ref "^1.3.0" - use-latest "^1.2.1" - -react-timeago@^6.2.1: - version "6.2.1" - resolved "https://registry.npmjs.org/react-timeago/-/react-timeago-6.2.1.tgz" - integrity sha512-b9EObWO8wy4qwfOzj+g/RQZRrPvtMv1Pz12FCdAWKWCXbDGt0rZLyiyTGEr0Lh1O8w5xa48CtRpl3LI+CtGCyw== - -react-transition-state@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/react-transition-state/-/react-transition-state-2.1.1.tgz#1601a6177926b647041b7d598bf124321ab8d25b" - integrity sha512-kQx5g1FVu9knoz1T1WkapjUgFz08qQ/g1OmuWGi3/AoEFfS0kStxrPlZx81urjCXdz2d+1DqLpU6TyLW/Ro04Q== - -react@^17.0.2: - version "17.0.2" - resolved "https://registry.npmjs.org/react/-/react-17.0.2.tgz" - integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - -reactjs-popup@2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/reactjs-popup/-/reactjs-popup-2.0.5.tgz#588a74966bb126699429d739948e3448d7771eac" - integrity sha512-b5hv9a6aGsHEHXFAgPO5s1Jw1eSkopueyUVxQewGdLgqk2eW0IVXZrPRpHR629YcgIpC2oxtX8OOZ8a7bQJbxA== - -read-cache@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" - integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== - dependencies: - pify "^2.3.0" - -read-config-file@6.2.0: - version "6.2.0" - resolved "https://registry.npmjs.org/read-config-file/-/read-config-file-6.2.0.tgz" - integrity sha512-gx7Pgr5I56JtYz+WuqEbQHj/xWo+5Vwua2jhb1VwM4Wid5PqYmZ4i00ZB0YEGIfkVBsCv9UrjgyqCiQfS/Oosg== - dependencies: - dotenv "^9.0.2" - dotenv-expand "^5.1.0" - js-yaml "^4.1.0" - json5 "^2.2.0" - lazy-val "^1.0.4" - -read-pkg-up@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz" - integrity sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A== - dependencies: - find-up "^1.0.0" - read-pkg "^1.0.0" - -read-pkg@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz" - integrity sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ== - dependencies: - load-json-file "^1.0.0" - normalize-package-data "^2.3.2" - path-type "^1.0.0" - -readable-stream@^2.0.1, readable-stream@^2.2.2: - version "2.3.7" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - 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" - -readable-stream@^3.0.6, readable-stream@^3.4.0, readable-stream@^3.6.0: - version "3.6.0" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -rechoir@^0.6.2: - version "0.6.2" - resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz" - integrity sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw== - dependencies: - resolve "^1.1.6" - -recursive-readdir@^2.2.2: - version "2.2.3" - resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.3.tgz#e726f328c0d69153bcabd5c322d3195252379372" - integrity sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA== - dependencies: - minimatch "^3.0.5" - -redent@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz" - integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== - dependencies: - indent-string "^4.0.0" - strip-indent "^3.0.0" - -reflect-metadata@^0.1.13: - version "0.1.13" - resolved "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz" - integrity sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg== - -reflect.getprototypeof@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.3.tgz#2738fd896fcc3477ffbd4190b40c2458026b6928" - integrity sha512-TTAOZpkJ2YLxl7mVHWrNo3iDMEkYlva/kgFcXndqMgbo/AZUmmavEkdXV+hXtE4P8xdyEKRzalaFqZVuwIk/Nw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - get-intrinsic "^1.1.1" - globalthis "^1.0.3" - which-builtin-type "^1.1.3" - -regenerate-unicode-properties@^10.0.1: - version "10.0.1" - resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz" - integrity sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw== - dependencies: - regenerate "^1.4.2" - -regenerate-unicode-properties@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz#7c3192cab6dd24e21cb4461e5ddd7dd24fa8374c" - integrity sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ== - dependencies: - regenerate "^1.4.2" - -regenerate@^1.4.2: - version "1.4.2" - resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz" - integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== - -regenerator-runtime@^0.13.3, regenerator-runtime@^0.13.4: - version "0.13.9" - resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz" - integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== - -regenerator-runtime@^0.13.9: - version "0.13.11" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" - integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== - -regenerator-runtime@^0.14.0: - version "0.14.0" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45" - integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA== - -regenerator-transform@^0.15.0: - version "0.15.0" - resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz" - integrity sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg== - dependencies: - "@babel/runtime" "^7.8.4" - -regenerator-transform@^0.15.2: - version "0.15.2" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz#5bbae58b522098ebdf09bca2f83838929001c7a4" - integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg== - dependencies: - "@babel/runtime" "^7.8.4" - -regex-parser@^2.2.11: - version "2.2.11" - resolved "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz" - integrity sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q== - -regexp.prototype.flags@^1.4.1, regexp.prototype.flags@^1.4.3: - 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== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - functions-have-names "^1.2.2" - -regexp.prototype.flags@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz#fe7ce25e7e4cca8db37b6634c8a2c7009199b9cb" - integrity sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - functions-have-names "^1.2.3" - -regexpp@^3.1.0: - version "3.2.0" - resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz" - integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== - -regexpu-core@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.1.0.tgz" - integrity sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA== - dependencies: - regenerate "^1.4.2" - regenerate-unicode-properties "^10.0.1" - regjsgen "^0.6.0" - regjsparser "^0.8.2" - unicode-match-property-ecmascript "^2.0.0" - unicode-match-property-value-ecmascript "^2.0.0" - -regexpu-core@^5.3.1: - version "5.3.2" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" - integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== - dependencies: - "@babel/regjsgen" "^0.8.0" - regenerate "^1.4.2" - regenerate-unicode-properties "^10.1.0" - regjsparser "^0.9.1" - unicode-match-property-ecmascript "^2.0.0" - unicode-match-property-value-ecmascript "^2.1.0" - -registry-auth-token@^4.0.0: - version "4.2.2" - resolved "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz" - integrity sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg== - dependencies: - rc "1.2.8" - -registry-url@^5.0.0: - version "5.1.0" - resolved "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz" - integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== - dependencies: - rc "^1.2.8" - -regjsgen@^0.6.0: - version "0.6.0" - resolved "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz" - integrity sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA== - -regjsparser@^0.8.2: - version "0.8.4" - resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz" - integrity sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA== - dependencies: - jsesc "~0.5.0" - -regjsparser@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" - integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== - dependencies: - jsesc "~0.5.0" - -relateurl@^0.2.7: - version "0.2.7" - resolved "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz" - integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog== - -remove-accents@0.4.2: - version "0.4.2" - resolved "https://registry.npmjs.org/remove-accents/-/remove-accents-0.4.2.tgz" - integrity sha512-7pXIJqJOq5tFgG1A2Zxti3Ht8jJF337m4sowbuHsW30ZnkQFnDzy9qBNhgzX8ZLW4+UBcXiiR7SwR6pokHsxiA== - -renderkid@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-3.0.0.tgz#5fd823e4d6951d37358ecc9a58b1f06836b6268a" - integrity sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg== - dependencies: - css-select "^4.1.3" - dom-converter "^0.2.0" - htmlparser2 "^6.1.0" - lodash "^4.17.21" - strip-ansi "^6.0.1" - -request-progress@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/request-progress/-/request-progress-2.0.1.tgz" - integrity sha512-dxdraeZVUNEn9AvLrxkgB2k6buTlym71dJk1fk4v8j3Ou3RKNm07BcgbHdj2lLgYGfqX71F+awb1MR+tWPFJzA== - dependencies: - throttleit "^1.0.0" - -request@^2.81.0: - version "2.88.2" - resolved "https://registry.npmjs.org/request/-/request-2.88.2.tgz" - integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" - integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== - -require-from-string@^2.0.2: - 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== - -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz" - integrity sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug== - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" - integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== - -resize-observer-polyfill@^1.5.1: - version "1.5.1" - resolved "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz" - integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== - -resolve-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz" - integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== - dependencies: - resolve-from "^5.0.0" - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - -resolve-url-loader@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz#d50d4ddc746bb10468443167acf800dcd6c3ad57" - integrity sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA== - dependencies: - adjust-sourcemap-loader "^4.0.0" - convert-source-map "^1.7.0" - loader-utils "^2.0.0" - postcss "^7.0.35" - source-map "0.6.1" - -resolve.exports@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz" - integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== - -resolve@^1.1.6, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0: - version "1.22.1" - resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz" - integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== - dependencies: - is-core-module "^2.9.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -resolve@^1.1.7, resolve@^1.22.2, resolve@^1.22.4: - version "1.22.4" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.4.tgz#1dc40df46554cdaf8948a486a10f6ba1e2026c34" - integrity sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg== - dependencies: - is-core-module "^2.13.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -resolve@^2.0.0-next.3, resolve@^2.0.0-next.4: - version "2.0.0-next.4" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.4.tgz#3d37a113d6429f496ec4752d2a2e58efb1fd4660" - integrity sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ== - dependencies: - is-core-module "^2.9.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -responselike@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz" - integrity sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ== - dependencies: - lowercase-keys "^1.0.0" - -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - -retry@^0.12.0: - version "0.12.0" - resolved "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz" - integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== - -retry@^0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" - integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rfdc@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz" - integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== - -rimraf@3.0.2, rimraf@^3.0.0, rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -rimraf@^2.2.8: - version "2.7.1" - resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - -roarr@^2.15.3: - version "2.15.4" - resolved "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz" - integrity sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A== - dependencies: - boolean "^3.0.1" - detect-node "^2.0.4" - globalthis "^1.0.1" - json-stringify-safe "^5.0.1" - semver-compare "^1.0.0" - sprintf-js "^1.1.2" - -rollup-plugin-terser@^7.0.0: - version "7.0.2" - resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz#e8fbba4869981b2dc35ae7e8a502d5c6c04d324d" - integrity sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ== - dependencies: - "@babel/code-frame" "^7.10.4" - jest-worker "^26.2.1" - serialize-javascript "^4.0.0" - terser "^5.0.0" - -rollup@^2.43.1: - version "2.79.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.1.tgz#bedee8faef7c9f93a2647ac0108748f497f081c7" - integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw== - optionalDependencies: - fsevents "~2.3.2" - -run-async@^2.4.0: - version "2.4.1" - resolved "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz" - integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -rxjs@6.6.7, rxjs@^6.6.0: - 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" - -rxjs@^7.0.0, rxjs@^7.2.0, rxjs@^7.5.1, rxjs@^7.5.4: - version "7.5.6" - resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz" - integrity sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw== - dependencies: - tslib "^2.1.0" - -rxjs@^7.5.2: - version "7.5.7" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.7.tgz#2ec0d57fdc89ece220d2e702730ae8f1e49def39" - integrity sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA== - dependencies: - tslib "^2.1.0" - -safe-array-concat@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.0.tgz#2064223cba3c08d2ee05148eedbc563cd6d84060" - integrity sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.2.0" - has-symbols "^1.0.3" - isarray "^2.0.5" - -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-regex-test@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" - integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.3" - is-regex "^1.1.4" - -"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: - version "2.1.2" - resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sanitize-filename@^1.6.3: - version "1.6.3" - resolved "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz" - integrity sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg== - dependencies: - truncate-utf8-bytes "^1.0.0" - -sanitize.css@*: - version "13.0.0" - resolved "https://registry.yarnpkg.com/sanitize.css/-/sanitize.css-13.0.0.tgz#2675553974b27964c75562ade3bd85d79879f173" - integrity sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA== - -sass-loader@^12.3.0: - version "12.6.0" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-12.6.0.tgz#5148362c8e2cdd4b950f3c63ac5d16dbfed37bcb" - integrity sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA== - dependencies: - klona "^2.0.4" - neo-async "^2.6.2" - -sass@^1.42.1: - version "1.54.9" - resolved "https://registry.npmjs.org/sass/-/sass-1.54.9.tgz" - integrity sha512-xb1hjASzEH+0L0WI9oFjqhRi51t/gagWnxLiwUNMltA0Ab6jIDkAacgKiGYKM9Jhy109osM7woEEai6SXeJo5Q== - dependencies: - chokidar ">=3.0.0 <4.0.0" - immutable "^4.0.0" - source-map-js ">=0.6.2 <2.0.0" - -sax@>=0.6.0, sax@^1.2.4, sax@~1.2.4: - version "1.2.4" - resolved "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - -saxes@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz" - integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== - dependencies: - xmlchars "^2.2.0" - -scheduler@^0.20.2: - version "0.20.2" - resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz" - integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - -schema-utils@2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7" - integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== - dependencies: - "@types/json-schema" "^7.0.4" - ajv "^6.12.2" - ajv-keywords "^3.4.1" - -schema-utils@^2.6.5: - version "2.7.1" - resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz" - integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== - dependencies: - "@types/json-schema" "^7.0.5" - ajv "^6.12.4" - ajv-keywords "^3.5.2" - -schema-utils@^3.0.0, schema-utils@^3.1.0, schema-utils@^3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz" - integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== - dependencies: - "@types/json-schema" "^7.0.8" - ajv "^6.12.5" - ajv-keywords "^3.5.2" - -schema-utils@^3.2.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe" - integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== - dependencies: - "@types/json-schema" "^7.0.8" - ajv "^6.12.5" - ajv-keywords "^3.5.2" - -schema-utils@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.2.0.tgz#70d7c93e153a273a805801882ebd3bff20d89c8b" - integrity sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw== - dependencies: - "@types/json-schema" "^7.0.9" - ajv "^8.9.0" - ajv-formats "^2.1.1" - ajv-keywords "^5.1.0" - -select-hose@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz" - integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== - -selfsigned@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.1.1.tgz#18a7613d714c0cd3385c48af0075abf3f266af61" - integrity sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ== - dependencies: - node-forge "^1" - -semver-compare@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz" - integrity sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow== - -semver-diff@^3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz" - integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg== - dependencies: - semver "^6.3.0" - -"semver@2 || 3 || 4 || 5": - version "5.7.1" - resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz" - integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== - -semver@7.x, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7: - version "7.3.7" - resolved "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz" - integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== - dependencies: - lru-cache "^6.0.0" - -semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@^6.3.1: - version "6.3.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" - integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== - -semver@^7.3.8: - version "7.5.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" - integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== - dependencies: - lru-cache "^6.0.0" - -send@0.18.0: - version "0.18.0" - resolved "https://registry.npmjs.org/send/-/send-0.18.0.tgz" - integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== - 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" - -serialize-error@^7.0.1: - version "7.0.1" - resolved "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz" - integrity sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw== - dependencies: - type-fest "^0.13.1" - -serialize-javascript@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz" - integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== - dependencies: - randombytes "^2.1.0" - -serialize-javascript@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz" - integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== - dependencies: - randombytes "^2.1.0" - -serialize-javascript@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.1.tgz#b206efb27c3da0b0ab6b52f48d170b7996458e5c" - integrity sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w== - dependencies: - randombytes "^2.1.0" - -serve-index@^1.9.1: - version "1.9.1" - resolved "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz" - integrity sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw== - 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" - -serve-static@1.15.0: - version "1.15.0" - resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz" - integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.18.0" - -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" - integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== - -setimmediate@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" - integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== - -setprototypeof@1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz" - integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== - -setprototypeof@1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" - integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== - -sha.js@^2.4.11: - version "2.4.11" - resolved "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -sha3@^2.1.4: - version "2.1.4" - resolved "https://registry.npmjs.org/sha3/-/sha3-2.1.4.tgz" - integrity sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg== - dependencies: - buffer "6.0.3" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -shell-env@^0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/shell-env/-/shell-env-0.3.0.tgz" - integrity sha512-VrC6OSm5riGAFWvlYExA80Rrlfi4STsztNXjyet9Jf20hbiVeeKvJIesb92gJk7zlmpQjB0wOZpy8ClzVdPVWQ== - dependencies: - default-shell "^1.0.0" - execa "^0.5.0" - strip-ansi "^3.0.0" - -shell-path@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/shell-path/-/shell-path-2.1.0.tgz" - integrity sha512-w+mbrnpA+r5jSFS4MgFfxZJ1Wx8qMKkR4gvQ+wgaZEoZCMMYZ6Yl/dcNjW/zLMfmx5a9IVIFwGAtUJcnDMmFrg== - dependencies: - shell-env "^0.3.0" - -shell-quote@^1.7.3: - version "1.7.3" - resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz" - integrity sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw== - -shelljs@0.8.5: - version "0.8.5" - resolved "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz" - integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== - dependencies: - glob "^7.0.0" - interpret "^1.0.0" - rechoir "^0.6.2" - -side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== - dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" - -signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: - version "3.0.7" - resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - -sisteransi@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" - integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -slash@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" - integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== - -slice-ansi@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz" - integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - -slice-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz" - integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - -smart-buffer@^4.0.2, smart-buffer@^4.2.0: - version "4.2.0" - resolved "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz" - integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== - -sockjs@^0.3.24: - version "0.3.24" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" - integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== - dependencies: - faye-websocket "^0.11.3" - uuid "^8.3.2" - websocket-driver "^0.7.4" - -socks-proxy-agent@^6.0.0: - version "6.2.1" - resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz" - integrity sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ== - dependencies: - agent-base "^6.0.2" - debug "^4.3.3" - socks "^2.6.2" - -socks@^2.6.2: - version "2.7.0" - resolved "https://registry.npmjs.org/socks/-/socks-2.7.0.tgz" - integrity sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA== - dependencies: - ip "^2.0.0" - smart-buffer "^4.2.0" - -source-list-map@^2.0.0, source-list-map@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz" - integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== - -"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.1, source-map-js@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" - integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== - -source-map-loader@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-3.0.2.tgz#af23192f9b344daa729f6772933194cc5fa54fee" - integrity sha512-BokxPoLjyl3iOrgkWaakaxqnelAJSS+0V+De0kKIq6lyWrXuiPgYTGp6z3iHmqljKAaLXwZa+ctD8GccRJeVvg== - dependencies: - abab "^2.0.5" - iconv-lite "^0.6.3" - source-map-js "^1.0.1" - -source-map-support@0.5.21, source-map-support@^0.5.19, source-map-support@^0.5.6, source-map-support@~0.5.20: - 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== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@0.7.3: - version "0.7.3" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - -source-map@^0.7.3: - version "0.7.4" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" - integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== - -source-map@^0.8.0-beta.0: - version "0.8.0-beta.0" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.8.0-beta.0.tgz#d4c1bb42c3f7ee925f005927ba10709e0d1d1f11" - integrity sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA== - dependencies: - whatwg-url "^7.0.0" - -sourcemap-codec@^1.4.4: - version "1.4.8" - resolved "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz" - integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== - -spawn-command@^0.0.2-1: - version "0.0.2-1" - resolved "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz" - integrity sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg== - -spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz" - integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.3.0" - resolved "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz" - integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== - -spdx-expression-parse@^3.0.0, spdx-expression-parse@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.12" - resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz" - integrity sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA== - -spdy-transport@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz" - integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== - 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" - -spdy@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz" - integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== - 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" - -sprintf-js@^1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz" - integrity sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug== - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" - integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== - -sqlite3@^5.0.11: - version "5.0.11" - resolved "https://registry.npmjs.org/sqlite3/-/sqlite3-5.0.11.tgz" - integrity sha512-4akFOr7u9lJEeAWLJxmwiV43DJcGV7w3ab7SjQFAFaTVyknY3rZjvXTKIVtWqUoY4xwhjwoHKYs2HDW2SoHVsA== - dependencies: - "@mapbox/node-pre-gyp" "^1.0.0" - node-addon-api "^4.2.0" - tar "^6.1.11" - optionalDependencies: - node-gyp "8.x" - -sshpk@^1.7.0: - version "1.17.0" - resolved "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz" - integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" - -ssri@^8.0.0, ssri@^8.0.1: - version "8.0.1" - resolved "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz" - integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== - dependencies: - minipass "^3.1.1" - -stable@^0.1.8: - version "0.1.8" - resolved "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz" - integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== - -stack-utils@^2.0.3: - version "2.0.5" - resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz" - integrity sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA== - dependencies: - escape-string-regexp "^2.0.0" - -stackframe@^1.3.4: - version "1.3.4" - resolved "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz" - integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== - -stat-mode@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/stat-mode/-/stat-mode-1.0.0.tgz" - integrity sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg== - -statuses@2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" - integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== - -"statuses@>= 1.4.0 < 2": - version "1.5.0" - resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" - integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== - -streamsearch@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz" - integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== - -string-argv@0.3.1: - version "0.3.1" - resolved "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz" - integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== - -string-length@^4.0.1: - version "4.0.2" - resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz" - integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== - dependencies: - char-regex "^1.0.2" - strip-ansi "^6.0.0" - -string-length@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-5.0.1.tgz#3d647f497b6e8e8d41e422f7e0b23bc536c8381e" - integrity sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow== - dependencies: - char-regex "^2.0.0" - strip-ansi "^7.0.1" - -string-natural-compare@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz" - integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw== - -string-similarity@1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/string-similarity/-/string-similarity-1.1.0.tgz" - integrity sha512-x+Ul/yDujT1PIgcKuP6NP71VgoB+NKY8ccoH2nrfnFcYH2gtoRE0XLpUaHBIx4ZdpIWnYzWAsjp2QO+ZRC3Fjg== - dependencies: - lodash "^4.13.1" - -string-width@^1.0.1, string-width@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz" - integrity sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw== - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: - 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" - -string.prototype.matchall@^4.0.6, string.prototype.matchall@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz#3bf85722021816dcd1bf38bb714915887ca79fd3" - integrity sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - get-intrinsic "^1.1.3" - has-symbols "^1.0.3" - internal-slot "^1.0.3" - regexp.prototype.flags "^1.4.3" - side-channel "^1.0.4" - -string.prototype.matchall@^4.0.7: - version "4.0.7" - resolved "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz" - integrity sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - get-intrinsic "^1.1.1" - has-symbols "^1.0.3" - internal-slot "^1.0.3" - regexp.prototype.flags "^1.4.1" - side-channel "^1.0.4" - -string.prototype.trim@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz#a68352740859f6893f14ce3ef1bb3037f7a90533" - integrity sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - -string.prototype.trimend@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz" - integrity sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.19.5" - -string.prototype.trimend@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" - integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - -string.prototype.trimstart@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz" - integrity sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.19.5" - -string.prototype.trimstart@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4" - integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - -string_decoder@^1.1.1: - 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== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -stringify-object@3.3.0, stringify-object@^3.3.0: - version "3.3.0" - resolved "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz" - integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== - dependencies: - get-own-enumerable-property-symbols "^3.0.0" - is-obj "^1.0.1" - is-regexp "^1.0.0" - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" - integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - 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" - -strip-ansi@^7.0.1: - version "7.1.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" - integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== - dependencies: - ansi-regex "^6.0.1" - -strip-bom@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz" - integrity sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g== - dependencies: - is-utf8 "^0.2.0" - -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" - integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== - -strip-bom@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz" - integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== - -strip-comments@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-comments/-/strip-comments-2.0.1.tgz#4ad11c3fbcac177a67a40ac224ca339ca1c1ba9b" - integrity sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw== - -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz" - integrity sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q== - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -strip-indent@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz" - integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== - dependencies: - min-indent "^1.0.0" - -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz" - integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== - -style-loader@^3.3.1: - version "3.3.3" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.3.tgz#bba8daac19930169c0c9c96706749a597ae3acff" - integrity sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw== - -style-mod@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/style-mod/-/style-mod-4.0.0.tgz#97e7c2d68b592975f2ca7a63d0dd6fcacfe35a01" - integrity sha512-OPhtyEjyyN9x3nhPsu76f52yUGXiZcgvsrFVtvTkyGRQJ0XK+GPc6ov1z+lRpbeabka+MYEQxOYRnt5nF30aMw== - -stylehacks@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.1.1.tgz#7934a34eb59d7152149fa69d6e9e56f2fc34bcc9" - integrity sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw== - dependencies: - browserslist "^4.21.4" - postcss-selector-parser "^6.0.4" - -sucrase@^3.32.0: - version "3.34.0" - resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.34.0.tgz#1e0e2d8fcf07f8b9c3569067d92fbd8690fb576f" - integrity sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw== - dependencies: - "@jridgewell/gen-mapping" "^0.3.2" - commander "^4.0.0" - glob "7.1.6" - lines-and-columns "^1.1.6" - mz "^2.7.0" - pirates "^4.0.1" - ts-interface-checker "^0.1.9" - -sumchecker@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz" - integrity sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg== - dependencies: - debug "^4.1.0" - -superagent@^8.0.0: - version "8.0.0" - resolved "https://registry.npmjs.org/superagent/-/superagent-8.0.0.tgz" - integrity sha512-iudipXEel+SzlP9y29UBWGDjB+Zzag+eeA1iLosaR2YHBRr1Q1kC29iBrF2zIVD9fqVbpZnXkN/VJmwFMVyNWg== - dependencies: - component-emitter "^1.3.0" - cookiejar "^2.1.3" - debug "^4.3.4" - fast-safe-stringify "^2.1.1" - form-data "^4.0.0" - formidable "^2.0.1" - methods "^1.1.2" - mime "2.6.0" - qs "^6.10.3" - readable-stream "^3.6.0" - semver "^7.3.7" - -supertest@^6.1.3: - version "6.2.4" - resolved "https://registry.npmjs.org/supertest/-/supertest-6.2.4.tgz" - integrity sha512-M8xVnCNv+q2T2WXVzxDECvL2695Uv2uUj2O0utxsld/HRyJvOU8W9f1gvsYxSNU4wmIe0/L/ItnpU4iKq0emDA== - dependencies: - methods "^1.1.2" - superagent "^8.0.0" - -supports-color@8.1.1, supports-color@^8.0.0, supports-color@^8.1.0: - version "8.1.1" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" - integrity sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g== - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.0.0, supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-hyperlinks@^2.0.0: - version "2.2.0" - resolved "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz" - integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ== - dependencies: - has-flag "^4.0.0" - supports-color "^7.0.0" - -supports-preserve-symlinks-flag@^1.0.0: - 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== - -svg-parser@^2.0.2: - version "2.0.4" - resolved "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz" - integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== - -svg2png@4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/svg2png/-/svg2png-4.1.1.tgz" - integrity sha512-9tOp9Ugjlunuf1ugqkhiYboTmTaTI7p48dz5ZjNA5NQJ5xS1NLTZZ1tF8vkJOIBb/ZwxGJsKZvRWqVpo4q9z9Q== - dependencies: - file-url "^2.0.0" - phantomjs-prebuilt "^2.1.14" - pn "^1.0.0" - yargs "^6.5.0" - -svgo@^1.2.2: - version "1.3.2" - resolved "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz" - integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== - dependencies: - chalk "^2.4.1" - coa "^2.0.2" - css-select "^2.0.0" - css-select-base-adapter "^0.1.1" - css-tree "1.0.0-alpha.37" - csso "^4.0.2" - js-yaml "^3.13.1" - mkdirp "~0.5.1" - object.values "^1.1.0" - sax "~1.2.4" - stable "^0.1.8" - unquote "~1.1.1" - util.promisify "~1.0.0" - -svgo@^2.7.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" - integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== - dependencies: - "@trysound/sax" "0.2.0" - commander "^7.2.0" - css-select "^4.1.3" - css-tree "^1.1.3" - csso "^4.2.0" - picocolors "^1.0.0" - stable "^0.1.8" - -swagger-ui-dist@>=4.11.0: - version "4.14.0" - resolved "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-4.14.0.tgz" - integrity sha512-TBzhheU15s+o54Cgk9qxuYcZMiqSm/SkvKnapoGHOF66kz0Y5aGjpzj5BT/vpBbn6rTPJ9tUYXQxuDWfsjiGMw== - -swagger-ui-express@^4.1.6: - version "4.5.0" - resolved "https://registry.npmjs.org/swagger-ui-express/-/swagger-ui-express-4.5.0.tgz" - integrity sha512-DHk3zFvsxrkcnurGvQlAcLuTDacAVN1JHKDgcba/gr2NFRE4HGwP1YeHIXMiGznkWR4AeS7X5vEblNn4QljuNA== - dependencies: - swagger-ui-dist ">=4.11.0" - -symbol-observable@4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz" - integrity sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ== - -symbol-tree@^3.2.4: - version "3.2.4" - resolved "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz" - integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== - -table@^6.0.9: - version "6.8.0" - resolved "https://registry.npmjs.org/table/-/table-6.8.0.tgz" - integrity sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA== - dependencies: - ajv "^8.0.1" - lodash.truncate "^4.4.2" - slice-ansi "^4.0.0" - string-width "^4.2.3" - strip-ansi "^6.0.1" - -tailwindcss@^3.0.2: - version "3.3.3" - resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.3.3.tgz#90da807393a2859189e48e9e7000e6880a736daf" - integrity sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w== - dependencies: - "@alloc/quick-lru" "^5.2.0" - arg "^5.0.2" - chokidar "^3.5.3" - didyoumean "^1.2.2" - dlv "^1.1.3" - fast-glob "^3.2.12" - glob-parent "^6.0.2" - is-glob "^4.0.3" - jiti "^1.18.2" - lilconfig "^2.1.0" - micromatch "^4.0.5" - normalize-path "^3.0.0" - object-hash "^3.0.0" - picocolors "^1.0.0" - postcss "^8.4.23" - postcss-import "^15.1.0" - postcss-js "^4.0.1" - postcss-load-config "^4.0.1" - postcss-nested "^6.0.1" - postcss-selector-parser "^6.0.11" - resolve "^1.22.2" - sucrase "^3.32.0" - -tapable@^1.0.0: - version "1.1.3" - resolved "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz" - integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== - -tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1: - version "2.2.1" - resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz" - integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== - -tar@^6.0.2, tar@^6.1.11, tar@^6.1.2: - version "6.1.11" - resolved "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz" - integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== - dependencies: - chownr "^2.0.0" - fs-minipass "^2.0.0" - minipass "^3.0.0" - minizlib "^2.1.1" - mkdirp "^1.0.3" - yallist "^4.0.0" - -temp-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e" - integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== - -temp-file@^3.4.0: - version "3.4.0" - resolved "https://registry.npmjs.org/temp-file/-/temp-file-3.4.0.tgz" - integrity sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg== - dependencies: - async-exit-hook "^2.0.1" - fs-extra "^10.0.0" - -tempy@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tempy/-/tempy-0.6.0.tgz#65e2c35abc06f1124a97f387b08303442bde59f3" - integrity sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw== - dependencies: - is-stream "^2.0.0" - temp-dir "^2.0.0" - type-fest "^0.16.0" - unique-string "^2.0.0" - -terminal-link@^2.0.0: - version "2.1.1" - resolved "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz" - integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== - dependencies: - ansi-escapes "^4.2.1" - supports-hyperlinks "^2.0.0" - -terser-webpack-plugin@^5.1.3: - version "5.3.6" - resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz" - integrity sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ== - dependencies: - "@jridgewell/trace-mapping" "^0.3.14" - jest-worker "^27.4.5" - schema-utils "^3.1.1" - serialize-javascript "^6.0.0" - terser "^5.14.1" - -terser-webpack-plugin@^5.2.5, terser-webpack-plugin@^5.3.7: - version "5.3.9" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz#832536999c51b46d468067f9e37662a3b96adfe1" - integrity sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA== - dependencies: - "@jridgewell/trace-mapping" "^0.3.17" - jest-worker "^27.4.5" - schema-utils "^3.1.1" - serialize-javascript "^6.0.1" - terser "^5.16.8" - -terser@^5.0.0, terser@^5.10.0, terser@^5.16.8: - version "5.19.2" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.19.2.tgz#bdb8017a9a4a8de4663a7983f45c506534f9234e" - integrity sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA== - dependencies: - "@jridgewell/source-map" "^0.3.3" - acorn "^8.8.2" - commander "^2.20.0" - source-map-support "~0.5.20" - -terser@^5.14.1: - version "5.15.0" - resolved "https://registry.npmjs.org/terser/-/terser-5.15.0.tgz" - integrity sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA== - dependencies: - "@jridgewell/source-map" "^0.3.2" - acorn "^8.5.0" - commander "^2.20.0" - source-map-support "~0.5.20" - -test-exclude@^6.0.0: - 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== - dependencies: - "@istanbuljs/schema" "^0.1.2" - glob "^7.1.4" - minimatch "^3.0.4" - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" - integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== - -thenify-all@^1.0.0: - version "1.6.0" - resolved "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz" - integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== - dependencies: - thenify ">= 3.1.0 < 4" - -"thenify@>= 3.1.0 < 4": - version "3.3.1" - resolved "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz" - integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== - dependencies: - any-promise "^1.0.0" - -throat@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz" - integrity sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w== - -throttleit@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz" - integrity sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g== - -through@^2.3.6, through@^2.3.8: - version "2.3.8" - resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" - integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== - -thunky@^1.0.2: - version "1.1.0" - resolved "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz" - integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== - -timm@^1.6.1: - version "1.7.1" - resolved "https://registry.npmjs.org/timm/-/timm-1.7.1.tgz" - integrity sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw== - -tiny-warning@^1.0.2: - version "1.0.3" - resolved "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz" - integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== - -tinycolor2@^1.4.1: - version "1.4.2" - resolved "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.2.tgz" - integrity sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA== - -tmp-promise@^3.0.2: - version "3.0.3" - resolved "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz" - integrity sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ== - dependencies: - tmp "^0.2.0" - -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" - -tmp@^0.2.0: - version "0.2.1" - resolved "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz" - integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== - dependencies: - rimraf "^3.0.0" - -tmpl@1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz" - integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" - integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== - -to-readable-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz" - integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -toggle-selection@^1.0.6: - version "1.0.6" - resolved "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz" - integrity sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ== - -toidentifier@1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" - integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== - -toposort@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz" - integrity sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg== - -tough-cookie@^4.0.0: - version "4.1.2" - resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz" - integrity sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ== - dependencies: - psl "^1.1.33" - punycode "^2.1.1" - universalify "^0.2.0" - url-parse "^1.5.3" - -tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - -tr46@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" - integrity sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA== - dependencies: - punycode "^2.1.0" - -tr46@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz" - integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== - dependencies: - punycode "^2.1.1" - -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" - integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== - -tree-kill@1.2.2, tree-kill@^1.2.2: - version "1.2.2" - resolved "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz" - integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== - -truncate-utf8-bytes@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz" - integrity sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ== - dependencies: - utf8-byte-length "^1.0.1" - -tryer@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz" - integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== - -ts-interface-checker@^0.1.9: - version "0.1.13" - resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" - integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== - -ts-jest@^27.0.3: - version "27.1.5" - resolved "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.5.tgz" - integrity sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA== - dependencies: - bs-logger "0.x" - fast-json-stable-stringify "2.x" - jest-util "^27.0.0" - json5 "2.x" - lodash.memoize "4.x" - make-error "1.x" - semver "7.x" - yargs-parser "20.x" - -ts-loader@^9.2.3: - version "9.3.1" - resolved "https://registry.npmjs.org/ts-loader/-/ts-loader-9.3.1.tgz" - integrity sha512-OkyShkcZTsTwyS3Kt7a4rsT/t2qvEVQuKCTg4LJmpj9fhFR7ukGdZwV6Qq3tRUkqcXtfGpPR7+hFKHCG/0d3Lw== - dependencies: - chalk "^4.1.0" - enhanced-resolve "^5.0.0" - micromatch "^4.0.0" - semver "^7.3.4" - -ts-node@^10.0.0: - version "10.9.1" - resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz" - integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== - dependencies: - "@cspotcode/source-map-support" "^0.8.0" - "@tsconfig/node10" "^1.0.7" - "@tsconfig/node12" "^1.0.7" - "@tsconfig/node14" "^1.0.0" - "@tsconfig/node16" "^1.0.2" - acorn "^8.4.1" - acorn-walk "^8.1.1" - arg "^4.1.0" - create-require "^1.1.0" - diff "^4.0.1" - make-error "^1.1.1" - v8-compile-cache-lib "^3.0.1" - yn "3.1.1" - -tsconfig-paths-webpack-plugin@3.5.2: - version "3.5.2" - resolved "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-3.5.2.tgz" - integrity sha512-EhnfjHbzm5IYI9YPNVIxx1moxMI4bpHD2e0zTXeDNQcwjjRaGepP7IhTHJkyDBG0CAOoxRfe7jCG630Ou+C6Pw== - dependencies: - chalk "^4.1.0" - enhanced-resolve "^5.7.0" - tsconfig-paths "^3.9.0" - -tsconfig-paths@3.14.1, tsconfig-paths@^3.10.1, tsconfig-paths@^3.9.0: - version "3.14.1" - resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz" - integrity sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ== - dependencies: - "@types/json5" "^0.0.29" - json5 "^1.0.1" - minimist "^1.2.6" - strip-bom "^3.0.0" - -tsconfig-paths@^3.14.2: - version "3.14.2" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz#6e32f1f79412decd261f92d633a9dc1cfa99f088" - integrity sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g== - dependencies: - "@types/json5" "^0.0.29" - json5 "^1.0.2" - minimist "^1.2.6" - strip-bom "^3.0.0" - -tslib@2.3.1: - version "2.3.1" - resolved "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz" - integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== - -tslib@2.4.0, tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.1: - version "2.4.0" - resolved "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz" - integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== - -tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: - version "1.14.1" - resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz" - integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== - dependencies: - safe-buffer "^5.0.1" - -tunnel@^0.0.6: - version "0.0.6" - resolved "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz" - integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg== - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" - integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz" - integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== - dependencies: - prelude-ls "~1.1.2" - -type-detect@4.0.8: - version "4.0.8" - resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== - -type-fest@^0.13.1: - version "0.13.1" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz" - integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg== - -type-fest@^0.16.0: - version "0.16.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.16.0.tgz#3240b891a78b0deae910dbeb86553e552a148860" - integrity sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg== - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -type-fest@^0.21.3: - version "0.21.3" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" - integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== - -type-is@^1.6.4, type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -typed-array-buffer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" - integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.2.1" - is-typed-array "^1.1.10" - -typed-array-byte-length@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz#d787a24a995711611fb2b87a4052799517b230d0" - integrity sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA== - dependencies: - call-bind "^1.0.2" - for-each "^0.3.3" - has-proto "^1.0.1" - is-typed-array "^1.1.10" - -typed-array-byte-offset@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz#cbbe89b51fdef9cd6aaf07ad4707340abbc4ea0b" - integrity sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg== - dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - for-each "^0.3.3" - has-proto "^1.0.1" - is-typed-array "^1.1.10" - -typed-array-length@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" - integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== - dependencies: - call-bind "^1.0.2" - for-each "^0.3.3" - is-typed-array "^1.1.9" - -typed-emitter@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/typed-emitter/-/typed-emitter-2.1.0.tgz#ca78e3d8ef1476f228f548d62e04e3d4d3fd77fb" - integrity sha512-g/KzbYKbH5C2vPkaXGu8DJlHrGKHLsM25Zg9WuC9pMGfuvT+X25tZQWo5fK1BjBm8+UrVE9LDCvaY0CQk+fXDA== - optionalDependencies: - rxjs "^7.5.2" - -typedarray-to-buffer@^3.1.5: - version "3.1.5" - resolved "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz" - integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== - dependencies: - is-typedarray "^1.0.0" - -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" - integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== - -typeorm@^0.3.6: - version "0.3.9" - resolved "https://registry.npmjs.org/typeorm/-/typeorm-0.3.9.tgz" - integrity sha512-xNcE44D4hn74n7pjuMog9hRgep+BiO3IBpjEaQZ8fb56zsDz7xHT1GAeWwmGuuU+4nDEELp2mIqgSCR+zxR7Jw== - dependencies: - "@sqltools/formatter" "^1.2.2" - app-root-path "^3.0.0" - buffer "^6.0.3" - chalk "^4.1.0" - cli-highlight "^2.1.11" - date-fns "^2.28.0" - debug "^4.3.3" - dotenv "^16.0.0" - glob "^7.2.0" - js-yaml "^4.1.0" - mkdirp "^1.0.4" - reflect-metadata "^0.1.13" - sha.js "^2.4.11" - tslib "^2.3.1" - uuid "^8.3.2" - xml2js "^0.4.23" - yargs "^17.3.1" - -typescript@4.7.4: - version "4.7.4" - resolved "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz" - integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ== - -typescript@^4.4.3: - version "4.8.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.3.tgz#d59344522c4bc464a65a730ac695007fdb66dd88" - integrity sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig== - -ua-parser-js@^0.7.30: - version "0.7.31" - resolved "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.31.tgz" - integrity sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ== - -unbox-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz" - integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== - dependencies: - call-bind "^1.0.2" - has-bigints "^1.0.2" - has-symbols "^1.0.3" - which-boxed-primitive "^1.0.2" - -unicode-canonical-property-names-ecmascript@^2.0.0: - 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== - -unicode-match-property-ecmascript@^2.0.0: - 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== - dependencies: - unicode-canonical-property-names-ecmascript "^2.0.0" - unicode-property-aliases-ecmascript "^2.0.0" - -unicode-match-property-value-ecmascript@^2.0.0: - 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== - -unicode-match-property-value-ecmascript@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" - integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== - -unicode-property-aliases-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz" - integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ== - -unique-filename@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz" - integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== - dependencies: - unique-slug "^2.0.0" - -unique-slug@^2.0.0: - version "2.0.2" - resolved "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz" - integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== - dependencies: - imurmurhash "^0.1.4" - -unique-string@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz" - integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== - dependencies: - crypto-random-string "^2.0.0" - -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -universalify@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz" - integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== - -universalify@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz" - integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== - -unload@2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/unload/-/unload-2.2.0.tgz" - integrity sha512-B60uB5TNBLtN6/LsgAf3udH9saB5p7gqJwcFfbOEZ8BcBHnGwCf6G/TGiEqkRAxX7zAFIUtzdrXQSdL3Q/wqNA== - dependencies: - "@babel/runtime" "^7.6.2" - detect-node "^2.0.4" - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" - integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== - -unquote@~1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz" - integrity sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg== - -upath@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz" - integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== - -update-browserslist-db@^1.0.11: - version "1.0.11" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940" - integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA== - dependencies: - escalade "^3.1.1" - picocolors "^1.0.0" - -update-browserslist-db@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz" - integrity sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q== - dependencies: - escalade "^3.1.1" - picocolors "^1.0.0" - -update-notifier@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz" - integrity sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw== - dependencies: - boxen "^5.0.0" - chalk "^4.1.0" - configstore "^5.0.1" - has-yarn "^2.1.0" - import-lazy "^2.1.0" - is-ci "^2.0.0" - is-installed-globally "^0.4.0" - is-npm "^5.0.0" - is-yarn-global "^0.3.0" - latest-version "^5.1.0" - pupa "^2.1.1" - semver "^7.3.4" - semver-diff "^3.1.1" - xdg-basedir "^4.0.0" - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -url-parse-lax@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz" - integrity sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ== - dependencies: - prepend-http "^2.0.0" - -url-parse@^1.5.3: - version "1.5.10" - resolved "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz" - integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== - dependencies: - querystringify "^2.1.1" - requires-port "^1.0.0" - -use-composed-ref@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.3.0.tgz" - integrity sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ== - -use-isomorphic-layout-effect@^1.1.1: - version "1.1.2" - resolved "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz" - integrity sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA== - -use-latest@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/use-latest/-/use-latest-1.2.1.tgz" - integrity sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw== - dependencies: - use-isomorphic-layout-effect "^1.1.1" - -usehooks-ts@^2.9.1: - version "2.9.1" - resolved "https://registry.yarnpkg.com/usehooks-ts/-/usehooks-ts-2.9.1.tgz#953d3284851ffd097432379e271ce046a8180b37" - integrity sha512-2FAuSIGHlY+apM9FVlj8/oNhd+1y+Uwv5QNkMQz1oSfdHk4PXo1qoCw9I5M7j0vpH8CSWFJwXbVPeYDjLCx9PA== - -utf8-byte-length@^1.0.1: - version "1.0.4" - resolved "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz" - integrity sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA== - -utif@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz" - integrity sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg== - dependencies: - pako "^1.0.5" - -util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== - -util.promisify@~1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz" - integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.2" - has-symbols "^1.0.1" - object.getownpropertydescriptors "^2.1.0" - -utila@~0.4: - version "0.4.0" - resolved "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz" - integrity sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA== - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" - integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== - -uuid@8.3.2, uuid@^8.3.2: - version "8.3.2" - resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - -uuid@^3.3.2: - version "3.4.0" - resolved "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - -v8-compile-cache-lib@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz" - integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== - -v8-compile-cache@^2.0.3: - version "2.3.0" - resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz" - integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== - -v8-to-istanbul@^8.1.0: - version "8.1.1" - resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz" - integrity sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^1.6.0" - source-map "^0.7.3" - -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -validator@^13.7.0: - version "13.7.0" - resolved "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz" - integrity sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw== - -vary@^1, vary@~1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" - integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== - -verror@1.10.0: - version "1.10.0" - resolved "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz" - integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - -verror@^1.10.0: - version "1.10.1" - resolved "https://registry.npmjs.org/verror/-/verror-1.10.1.tgz" - integrity sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg== - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - -w3c-hr-time@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz" - integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== - dependencies: - browser-process-hrtime "^1.0.0" - -w3c-keyname@^2.2.4: - version "2.2.6" - resolved "https://registry.yarnpkg.com/w3c-keyname/-/w3c-keyname-2.2.6.tgz#8412046116bc16c5d73d4e612053ea10a189c85f" - integrity sha512-f+fciywl1SJEniZHD6H+kUO8gOnwIr7f4ijKA6+ZvJFjeGi1r4PDLl53Ayud9O/rk64RqgoQine0feoeOU0kXg== - -w3c-xmlserializer@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz" - integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== - dependencies: - xml-name-validator "^3.0.0" - -wait-on@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/wait-on/-/wait-on-6.0.1.tgz" - integrity sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw== - dependencies: - axios "^0.25.0" - joi "^17.6.0" - lodash "^4.17.21" - minimist "^1.2.5" - rxjs "^7.5.4" - -walker@^1.0.7: - version "1.0.8" - resolved "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz" - integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== - dependencies: - makeerror "1.0.12" - -watchpack@^2.3.1, watchpack@^2.4.0: - version "2.4.0" - resolved "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz" - integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== - dependencies: - glob-to-regexp "^0.4.1" - graceful-fs "^4.1.2" - -wbuf@^1.1.0, wbuf@^1.7.3: - version "1.7.3" - resolved "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz" - integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== - dependencies: - minimalistic-assert "^1.0.0" - -wcwidth@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz" - integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== - dependencies: - defaults "^1.0.3" - -web-vitals@^1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/web-vitals/-/web-vitals-1.1.2.tgz" - integrity sha512-PFMKIY+bRSXlMxVAQ+m2aw9c/ioUYfDgrYot0YUa+/xa0sakubWhSDyxAKwzymvXVdF4CZI71g06W+mqhzu6ig== - -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" - integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== - -webidl-conversions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" - integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== - -webidl-conversions@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz" - integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== - -webidl-conversions@^6.1.0: - version "6.1.0" - resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz" - integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== - -webpack-dev-middleware@^5.3.1: - version "5.3.3" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz#efae67c2793908e7311f1d9b06f2a08dcc97e51f" - integrity sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA== - dependencies: - colorette "^2.0.10" - memfs "^3.4.3" - mime-types "^2.1.31" - range-parser "^1.2.1" - schema-utils "^4.0.0" - -webpack-dev-server@^4.6.0: - version "4.15.1" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz#8944b29c12760b3a45bdaa70799b17cb91b03df7" - integrity sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA== - dependencies: - "@types/bonjour" "^3.5.9" - "@types/connect-history-api-fallback" "^1.3.5" - "@types/express" "^4.17.13" - "@types/serve-index" "^1.9.1" - "@types/serve-static" "^1.13.10" - "@types/sockjs" "^0.3.33" - "@types/ws" "^8.5.5" - ansi-html-community "^0.0.8" - bonjour-service "^1.0.11" - chokidar "^3.5.3" - colorette "^2.0.10" - compression "^1.7.4" - connect-history-api-fallback "^2.0.0" - default-gateway "^6.0.3" - express "^4.17.3" - graceful-fs "^4.2.6" - html-entities "^2.3.2" - http-proxy-middleware "^2.0.3" - ipaddr.js "^2.0.1" - launch-editor "^2.6.0" - open "^8.0.9" - p-retry "^4.5.0" - rimraf "^3.0.2" - schema-utils "^4.0.0" - selfsigned "^2.1.1" - serve-index "^1.9.1" - sockjs "^0.3.24" - spdy "^4.0.2" - webpack-dev-middleware "^5.3.1" - ws "^8.13.0" - -webpack-manifest-plugin@^4.0.2: - version "4.1.1" - resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-4.1.1.tgz#10f8dbf4714ff93a215d5a45bcc416d80506f94f" - integrity sha512-YXUAwxtfKIJIKkhg03MKuiFAD72PlrqCiwdwO4VEXdRO5V0ORCNwaOwAZawPZalCbmH9kBDmXnNeQOw+BIEiow== - dependencies: - tapable "^2.0.0" - webpack-sources "^2.2.0" - -webpack-node-externals@3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz" - integrity sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ== - -webpack-sources@^1.4.3: - version "1.4.3" - resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz" - integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== - dependencies: - source-list-map "^2.0.0" - source-map "~0.6.1" - -webpack-sources@^2.2.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-2.3.1.tgz#570de0af163949fe272233c2cefe1b56f74511fd" - integrity sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA== - dependencies: - source-list-map "^2.0.1" - source-map "^0.6.1" - -webpack-sources@^3.2.3: - 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== - -webpack@5.73.0: - version "5.73.0" - resolved "https://registry.npmjs.org/webpack/-/webpack-5.73.0.tgz" - integrity sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA== - dependencies: - "@types/eslint-scope" "^3.7.3" - "@types/estree" "^0.0.51" - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/wasm-edit" "1.11.1" - "@webassemblyjs/wasm-parser" "1.11.1" - acorn "^8.4.1" - acorn-import-assertions "^1.7.6" - browserslist "^4.14.5" - chrome-trace-event "^1.0.2" - enhanced-resolve "^5.9.3" - es-module-lexer "^0.9.0" - eslint-scope "5.1.1" - events "^3.2.0" - glob-to-regexp "^0.4.1" - graceful-fs "^4.2.9" - json-parse-even-better-errors "^2.3.1" - loader-runner "^4.2.0" - mime-types "^2.1.27" - neo-async "^2.6.2" - schema-utils "^3.1.0" - tapable "^2.1.1" - terser-webpack-plugin "^5.1.3" - watchpack "^2.3.1" - webpack-sources "^3.2.3" - -webpack@^5.64.4: - version "5.88.2" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.88.2.tgz#f62b4b842f1c6ff580f3fcb2ed4f0b579f4c210e" - integrity sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ== - dependencies: - "@types/eslint-scope" "^3.7.3" - "@types/estree" "^1.0.0" - "@webassemblyjs/ast" "^1.11.5" - "@webassemblyjs/wasm-edit" "^1.11.5" - "@webassemblyjs/wasm-parser" "^1.11.5" - acorn "^8.7.1" - acorn-import-assertions "^1.9.0" - browserslist "^4.14.5" - chrome-trace-event "^1.0.2" - enhanced-resolve "^5.15.0" - es-module-lexer "^1.2.1" - eslint-scope "5.1.1" - events "^3.2.0" - glob-to-regexp "^0.4.1" - graceful-fs "^4.2.9" - json-parse-even-better-errors "^2.3.1" - loader-runner "^4.2.0" - mime-types "^2.1.27" - neo-async "^2.6.2" - schema-utils "^3.2.0" - tapable "^2.1.1" - terser-webpack-plugin "^5.3.7" - watchpack "^2.4.0" - webpack-sources "^3.2.3" - -websocket-driver@>=0.5.1, websocket-driver@^0.7.4: - version "0.7.4" - resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz" - integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== - dependencies: - http-parser-js ">=0.5.1" - safe-buffer ">=5.1.0" - websocket-extensions ">=0.1.1" - -websocket-extensions@>=0.1.1: - version "0.1.4" - resolved "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz" - integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== - -whatwg-encoding@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz" - integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== - dependencies: - iconv-lite "0.4.24" - -whatwg-fetch@^3.6.2: - version "3.6.17" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.17.tgz#009bbbfc122b227b74ba1ff31536b3a1a0e0e212" - integrity sha512-c4ghIvG6th0eudYwKZY5keb81wtFz9/WeAHAoy8+r18kcWlitUIrmGFQ2rWEl4UCKUilD3zCLHOIPheHx5ypRQ== - -whatwg-mimetype@^2.3.0: - version "2.3.0" - resolved "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz" - integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== - -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" - integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - -whatwg-url@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" - integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== - dependencies: - lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" - -whatwg-url@^8.0.0, whatwg-url@^8.5.0: - version "8.7.0" - resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz" - integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== - dependencies: - lodash "^4.7.0" - tr46 "^2.1.0" - webidl-conversions "^6.1.0" - -which-boxed-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== - dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" - -which-builtin-type@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.1.3.tgz#b1b8443707cc58b6e9bf98d32110ff0c2cbd029b" - integrity sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw== - dependencies: - function.prototype.name "^1.1.5" - has-tostringtag "^1.0.0" - is-async-function "^2.0.0" - is-date-object "^1.0.5" - is-finalizationregistry "^1.0.2" - is-generator-function "^1.0.10" - is-regex "^1.1.4" - is-weakref "^1.0.2" - isarray "^2.0.5" - which-boxed-primitive "^1.0.2" - which-collection "^1.0.1" - which-typed-array "^1.1.9" - -which-collection@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" - integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== - dependencies: - is-map "^2.0.1" - is-set "^2.0.1" - is-weakmap "^2.0.1" - is-weakset "^2.0.1" - -which-module@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz" - integrity sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ== - -which-typed-array@^1.1.10, which-typed-array@^1.1.11, which-typed-array@^1.1.9: - version "1.1.11" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a" - integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== - dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - for-each "^0.3.3" - gopd "^1.0.1" - has-tostringtag "^1.0.0" - -which@^1.2.10, which@^1.2.9, which@^1.3.1: - version "1.3.1" - resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -which@^2.0.1, which@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -wide-align@^1.1.2, wide-align@^1.1.5: - version "1.1.5" - resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz" - integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== - dependencies: - string-width "^1.0.2 || 2 || 3 || 4" - -widest-line@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz" - integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== - dependencies: - string-width "^4.0.0" - -windows-release@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/windows-release/-/windows-release-4.0.0.tgz" - integrity sha512-OxmV4wzDKB1x7AZaZgXMVsdJ1qER1ed83ZrTYd5Bwq2HfJVg3DJS8nqlAG4sMoJ7mu8cuRmLEYyU13BKwctRAg== - dependencies: - execa "^4.0.2" - -word-wrap@^1.2.3, word-wrap@~1.2.3: - version "1.2.3" - resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== - -workbox-background-sync@6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-6.6.1.tgz#08d603a33717ce663e718c30cc336f74909aff2f" - integrity sha512-trJd3ovpWCvzu4sW0E8rV3FUyIcC0W8G+AZ+VcqzzA890AsWZlUGOTSxIMmIHVusUw/FDq1HFWfy/kC/WTRqSg== - dependencies: - idb "^7.0.1" - workbox-core "6.6.1" - -workbox-broadcast-update@6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-6.6.1.tgz#0fad9454cf8e4ace0c293e5617c64c75d8a8c61e" - integrity sha512-fBhffRdaANdeQ1V8s692R9l/gzvjjRtydBOvR6WCSB0BNE2BacA29Z4r9/RHd9KaXCPl6JTdI9q0bR25YKP8TQ== - dependencies: - workbox-core "6.6.1" - -workbox-build@6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-6.6.1.tgz#6010e9ce550910156761448f2dbea8cfcf759cb0" - integrity sha512-INPgDx6aRycAugUixbKgiEQBWD0MPZqU5r0jyr24CehvNuLPSXp/wGOpdRJmts656lNiXwqV7dC2nzyrzWEDnw== - dependencies: - "@apideck/better-ajv-errors" "^0.3.1" - "@babel/core" "^7.11.1" - "@babel/preset-env" "^7.11.0" - "@babel/runtime" "^7.11.2" - "@rollup/plugin-babel" "^5.2.0" - "@rollup/plugin-node-resolve" "^11.2.1" - "@rollup/plugin-replace" "^2.4.1" - "@surma/rollup-plugin-off-main-thread" "^2.2.3" - ajv "^8.6.0" - common-tags "^1.8.0" - fast-json-stable-stringify "^2.1.0" - fs-extra "^9.0.1" - glob "^7.1.6" - lodash "^4.17.20" - pretty-bytes "^5.3.0" - rollup "^2.43.1" - rollup-plugin-terser "^7.0.0" - source-map "^0.8.0-beta.0" - stringify-object "^3.3.0" - strip-comments "^2.0.1" - tempy "^0.6.0" - upath "^1.2.0" - workbox-background-sync "6.6.1" - workbox-broadcast-update "6.6.1" - workbox-cacheable-response "6.6.1" - workbox-core "6.6.1" - workbox-expiration "6.6.1" - workbox-google-analytics "6.6.1" - workbox-navigation-preload "6.6.1" - workbox-precaching "6.6.1" - workbox-range-requests "6.6.1" - workbox-recipes "6.6.1" - workbox-routing "6.6.1" - workbox-strategies "6.6.1" - workbox-streams "6.6.1" - workbox-sw "6.6.1" - workbox-window "6.6.1" - -workbox-cacheable-response@6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-6.6.1.tgz#284c2b86be3f4fd191970ace8c8e99797bcf58e9" - integrity sha512-85LY4veT2CnTCDxaVG7ft3NKaFbH6i4urZXgLiU4AiwvKqS2ChL6/eILiGRYXfZ6gAwDnh5RkuDbr/GMS4KSag== - dependencies: - workbox-core "6.6.1" - -workbox-core@6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-6.6.1.tgz#7184776d4134c5ed2f086878c882728fc9084265" - integrity sha512-ZrGBXjjaJLqzVothoE12qTbVnOAjFrHDXpZe7coCb6q65qI/59rDLwuFMO4PcZ7jcbxY+0+NhUVztzR/CbjEFw== - -workbox-expiration@6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-6.6.1.tgz#a841fa36676104426dbfb9da1ef6a630b4f93739" - integrity sha512-qFiNeeINndiOxaCrd2DeL1Xh1RFug3JonzjxUHc5WkvkD2u5abY3gZL1xSUNt3vZKsFFGGORItSjVTVnWAZO4A== - dependencies: - idb "^7.0.1" - workbox-core "6.6.1" - -workbox-google-analytics@6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-6.6.1.tgz#a07a6655ab33d89d1b0b0a935ffa5dea88618c5d" - integrity sha512-1TjSvbFSLmkpqLcBsF7FuGqqeDsf+uAXO/pjiINQKg3b1GN0nBngnxLcXDYo1n/XxK4N7RaRrpRlkwjY/3ocuA== - dependencies: - workbox-background-sync "6.6.1" - workbox-core "6.6.1" - workbox-routing "6.6.1" - workbox-strategies "6.6.1" - -workbox-navigation-preload@6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-6.6.1.tgz#61a34fe125558dd88cf09237f11bd966504ea059" - integrity sha512-DQCZowCecO+wRoIxJI2V6bXWK6/53ff+hEXLGlQL4Rp9ZaPDLrgV/32nxwWIP7QpWDkVEtllTAK5h6cnhxNxDA== - dependencies: - workbox-core "6.6.1" - -workbox-precaching@6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-6.6.1.tgz#dedeeba10a2d163d990bf99f1c2066ac0d1a19e2" - integrity sha512-K4znSJ7IKxCnCYEdhNkMr7X1kNh8cz+mFgx9v5jFdz1MfI84pq8C2zG+oAoeE5kFrUf7YkT5x4uLWBNg0DVZ5A== - dependencies: - workbox-core "6.6.1" - workbox-routing "6.6.1" - workbox-strategies "6.6.1" - -workbox-range-requests@6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-6.6.1.tgz#ddaf7e73af11d362fbb2f136a9063a4c7f507a39" - integrity sha512-4BDzk28govqzg2ZpX0IFkthdRmCKgAKreontYRC5YsAPB2jDtPNxqx3WtTXgHw1NZalXpcH/E4LqUa9+2xbv1g== - dependencies: - workbox-core "6.6.1" - -workbox-recipes@6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/workbox-recipes/-/workbox-recipes-6.6.1.tgz#ea70d2b2b0b0bce8de0a9d94f274d4a688e69fae" - integrity sha512-/oy8vCSzromXokDA+X+VgpeZJvtuf8SkQ8KL0xmRivMgJZrjwM3c2tpKTJn6PZA6TsbxGs3Sc7KwMoZVamcV2g== - dependencies: - workbox-cacheable-response "6.6.1" - workbox-core "6.6.1" - workbox-expiration "6.6.1" - workbox-precaching "6.6.1" - workbox-routing "6.6.1" - workbox-strategies "6.6.1" - -workbox-routing@6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-6.6.1.tgz#cba9a1c7e0d1ea11e24b6f8c518840efdc94f581" - integrity sha512-j4ohlQvfpVdoR8vDYxTY9rA9VvxTHogkIDwGdJ+rb2VRZQ5vt1CWwUUZBeD/WGFAni12jD1HlMXvJ8JS7aBWTg== - dependencies: - workbox-core "6.6.1" - -workbox-strategies@6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-6.6.1.tgz#38d0f0fbdddba97bd92e0c6418d0b1a2ccd5b8bf" - integrity sha512-WQLXkRnsk4L81fVPkkgon1rZNxnpdO5LsO+ws7tYBC6QQQFJVI6v98klrJEjFtZwzw/mB/HT5yVp7CcX0O+mrw== - dependencies: - workbox-core "6.6.1" - -workbox-streams@6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-6.6.1.tgz#b2f7ba7b315c27a6e3a96a476593f99c5d227d26" - integrity sha512-maKG65FUq9e4BLotSKWSTzeF0sgctQdYyTMq529piEN24Dlu9b6WhrAfRpHdCncRS89Zi2QVpW5V33NX8PgH3Q== - dependencies: - workbox-core "6.6.1" - workbox-routing "6.6.1" - -workbox-sw@6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-6.6.1.tgz#d4c4ca3125088e8b9fd7a748ed537fa0247bd72c" - integrity sha512-R7whwjvU2abHH/lR6kQTTXLHDFU2izht9kJOvBRYK65FbwutT4VvnUAJIgHvfWZ/fokrOPhfoWYoPCMpSgUKHQ== - -workbox-webpack-plugin@^6.4.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-6.6.1.tgz#4f81cc1ad4e5d2cd7477a86ba83c84ee2d187531" - integrity sha512-zpZ+ExFj9NmiI66cFEApyjk7hGsfJ1YMOaLXGXBoZf0v7Iu6hL0ZBe+83mnDq3YYWAfA3fnyFejritjOHkFcrA== - dependencies: - fast-json-stable-stringify "^2.1.0" - pretty-bytes "^5.4.1" - upath "^1.2.0" - webpack-sources "^1.4.3" - workbox-build "6.6.1" - -workbox-window@6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-6.6.1.tgz#f22a394cbac36240d0dadcbdebc35f711bb7b89e" - integrity sha512-wil4nwOY58nTdCvif/KEZjQ2NP8uk3gGeRNy2jPBbzypU4BT4D9L8xiwbmDBpZlSgJd2xsT9FvSNU0gsxV51JQ== - dependencies: - "@types/trusted-types" "^2.0.2" - workbox-core "6.6.1" - -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz" - integrity sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw== - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - -wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^7.0.0: - 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" - -wrappy@1: - version "1.0.2" - resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -write-file-atomic@^3.0.0: - version "3.0.3" - resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz" - integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== - dependencies: - imurmurhash "^0.1.4" - is-typedarray "^1.0.0" - signal-exit "^3.0.2" - typedarray-to-buffer "^3.1.5" - -ws@^7.4.6: - version "7.5.9" - resolved "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz" - integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== - -ws@^8.13.0: - version "8.13.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" - integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== - -xdg-basedir@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz" - integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== - -xhr@^2.0.1: - version "2.6.0" - resolved "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz" - integrity sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA== - dependencies: - global "~4.4.0" - is-function "^1.0.1" - parse-headers "^2.0.0" - xtend "^4.0.0" - -xml-name-validator@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz" - integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== - -xml-parse-from-string@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz" - integrity sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g== - -xml2js@^0.4.23, xml2js@^0.4.5: - version "0.4.23" - resolved "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz" - integrity sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug== - dependencies: - sax ">=0.6.0" - xmlbuilder "~11.0.0" - -xmlbuilder@>=11.0.1, xmlbuilder@^15.1.1: - version "15.1.1" - resolved "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz" - integrity sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg== - -xmlbuilder@~11.0.0: - version "11.0.1" - resolved "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz" - integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== - -xmlchars@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz" - integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== - -xtend@^4.0.0: - version "4.0.2" - resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -y18n@^3.2.1: - version "3.2.2" - resolved "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz" - integrity sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ== - -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz" - integrity sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A== - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2: - version "1.10.2" - resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" - integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== - -yaml@^2.1.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.1.tgz#02fe0975d23cd441242aa7204e09fc28ac2ac33b" - integrity sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ== - -yargs-parser@20.x, yargs-parser@^20.2.2: - version "20.2.9" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== - -yargs-parser@^21.0.0: - version "21.1.1" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" - integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== - -yargs-parser@^4.2.0: - version "4.2.1" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz" - integrity sha512-+QQWqC2xeL0N5/TE+TY6OGEqyNRM+g2/r712PDNYgiCdXYCApXf1vzfmDSLBxfGRwV+moTq/V8FnMI24JCm2Yg== - dependencies: - camelcase "^3.0.0" - -yargs@^16.0.0, yargs@^16.2.0: - version "16.2.0" - resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.0" - y18n "^5.0.5" - yargs-parser "^20.2.2" - -yargs@^17.0.1, yargs@^17.3.1: - version "17.5.1" - resolved "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz" - integrity sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA== - 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" - -yargs@^6.5.0: - version "6.6.0" - resolved "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz" - integrity sha512-6/QWTdisjnu5UHUzQGst+UOEuEVwIzFVGBjq3jMTFNs5WJQsH/X6nMURSaScIdF5txylr1Ao9bvbWiKi2yXbwA== - dependencies: - camelcase "^3.0.0" - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - os-locale "^1.4.0" - read-pkg-up "^1.0.1" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^1.0.2" - which-module "^1.0.0" - y18n "^3.2.1" - yargs-parser "^4.2.0" - -yauzl@^2.10.0: - version "2.10.0" - resolved "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz" - integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== - dependencies: - buffer-crc32 "~0.2.3" - fd-slicer "~1.1.0" - -yn@3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz" - integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== - -yup@^0.32.11: - version "0.32.11" - resolved "https://registry.npmjs.org/yup/-/yup-0.32.11.tgz" - integrity sha512-Z2Fe1bn+eLstG8DRR6FTavGD+MeAwyfmouhHsIUgaADz8jvFKbO/fXc2trJKZg+5EBjh4gGm3iU/t3onKlXHIg== - dependencies: - "@babel/runtime" "^7.15.4" - "@types/lodash" "^4.14.175" - lodash "^4.17.21" - lodash-es "^4.17.21" - nanoclone "^0.2.1" - property-expr "^2.0.4" - toposort "^2.0.2" From f87006e8d5acd81b6c36da6cc64d163564c19225 Mon Sep 17 00:00:00 2001 From: Bart Date: Sun, 8 Oct 2023 17:26:13 +0200 Subject: [PATCH 013/100] move reusable components to shared ui lib, setup build config (first pass) --- frontend/package.json | 2 +- frontend/src/App.scss | 4 +- frontend/src/App.tsx | 44 +- frontend/src/components/icons/FlowserIcon.tsx | 56 - .../ManagedProcess/ManagedProcess.module.scss | 55 - .../misc/ManagedProcess/ManagedProcess.tsx | 82 - .../src/contexts/confirm-dialog.context.tsx | 2 +- frontend/src/contexts/snapshots.context.tsx | 4 +- frontend/src/hooks/use-api.ts | 74 +- .../accounts/AccountName/AccountName.tsx | 17 - .../TransactionDetails.module.scss | 7 - frontend/src/styles/spacings.ts | 7 - .../components/loaders/ExitLoader.tsx | 2 +- .../components/loaders/Loader.module.scss | 8 +- .../components/loaders/UpdateLoader.tsx | 2 +- frontend/src/utils/text-utils.ts | 46 - packages/ui/package.json | 38 + .../accounts/AccountAvatar/AccountAvatar.tsx | 38 +- .../src/accounts/AccountAvatar}/avatars/1.jpg | Bin .../accounts/AccountAvatar}/avatars/10.jpg | Bin .../accounts/AccountAvatar}/avatars/11.jpg | Bin .../accounts/AccountAvatar}/avatars/12.jpg | Bin .../accounts/AccountAvatar}/avatars/13.jpg | Bin .../accounts/AccountAvatar}/avatars/14.jpg | Bin .../accounts/AccountAvatar}/avatars/15.jpg | Bin .../accounts/AccountAvatar}/avatars/16.jpg | Bin .../src/accounts/AccountAvatar}/avatars/2.jpg | Bin .../src/accounts/AccountAvatar}/avatars/3.jpg | Bin .../src/accounts/AccountAvatar}/avatars/4.jpg | Bin .../src/accounts/AccountAvatar}/avatars/5.jpg | Bin .../src/accounts/AccountAvatar}/avatars/6.jpg | Bin .../src/accounts/AccountAvatar}/avatars/7.jpg | Bin .../src/accounts/AccountAvatar}/avatars/8.jpg | Bin .../src/accounts/AccountAvatar}/avatars/9.jpg | Bin .../accounts/AccountAvatar}/avatars/README.md | 0 .../AccountAvatar}/avatars/service.png | Bin .../AccountDetails/AccountDetails.module.scss | 6 +- .../AccountDetails/AccountDetails.tsx | 16 +- .../AccountKeysTable.module.scss | 6 +- .../AccountKeysTable/AccountKeysTable.tsx | 14 +- .../AccountLink/AccountLink.module.scss | 4 +- .../src}/accounts/AccountLink/AccountLink.tsx | 2 +- .../src/accounts/AccountName/AccountName.tsx | 15 + .../AccountStorage/AccountStorage.module.scss | 0 .../AccountStorage/AccountStorage.tsx | 12 +- .../AccountsTable/AccountsTable.module.scss | 4 +- .../accounts/AccountsTable/AccountsTable.tsx | 16 +- .../InternalStorageCard.module.scss | 8 +- .../InternalStorageCard.tsx | 8 +- .../PublicPrivateStorageCard.module.scss | 8 +- .../PublicPrivateStorageCard.tsx | 8 +- .../StorageDataTypes.module.scss | 4 +- .../StorageDataTypes/StorageDataTypes.tsx | 2 +- .../StorageDomainBadge.module.scss | 6 +- .../StorageDomainBadge/StorageDomainBadge.tsx | 2 +- .../BlockDetails/BlockDetails.module.scss | 2 +- .../src}/blocks/BlockDetails/BlockDetails.tsx | 19 +- .../BlocksTable/BlocksTable.module.scss | 4 +- .../src}/blocks/BlocksTable/BlocksTable.tsx | 14 +- .../ActionButton/ActionButton.module.scss | 6 +- .../buttons/ActionButton/ActionButton.tsx | 0 .../common}/buttons/Button/Button.module.scss | 6 +- .../ui/src/common}/buttons/Button/Button.tsx | 0 .../buttons/CopyButton/CopyButton.module.scss | 0 .../common}/buttons/CopyButton/CopyButton.tsx | 4 +- .../buttons/IconButton/IconButton.module.scss | 2 +- .../common}/buttons/IconButton/IconButton.tsx | 0 .../buttons/LoaderButton/LoaderButton.tsx | 0 .../PrimaryButton/PrimaryButton.module.scss | 8 +- .../buttons/PrimaryButton/PrimaryButton.tsx | 0 .../RadioButton/RadioButton.module.scss | 2 +- .../buttons/RadioButton/RadioButton.tsx | 0 .../SimpleButton/SimpleButton.module.scss | 4 +- .../buttons/SimpleButton/SimpleButton.tsx | 0 .../ToggleButton/ToggleButton.module.scss | 4 +- .../buttons/ToggleButton/ToggleButton.tsx | 0 .../cards/BaseCard/BaseCard.module.scss | 10 +- .../src/common}/cards/BaseCard/BaseCard.tsx | 0 .../cards/DetailsCard/DetailsCard.module.scss | 6 +- .../common}/cards/DetailsCard/DetailsCard.tsx | 4 +- .../code/CadenceEditor/CadenceEditor.tsx | 0 .../code/CadenceEditor/cadence-editor.css | 0 .../code/JsonView/JsonView.module.scss | 4 +- .../ui/src/common}/code/JsonView/JsonView.tsx | 0 .../ui/src/common}/ellipsis/Ellipsis.tsx | 0 .../src/common}/ellipsis/MiddleEllipsis.tsx | 0 .../common}/errors/ErrorMessage.module.scss | 8 +- .../ui/src/common}/errors/ErrorMessage.tsx | 2 +- .../ui/src/common}/errors/Message.tsx | 0 .../icons/CaretIcon/CaretIcon.module.scss | 4 +- .../src/common}/icons/CaretIcon/CaretIcon.tsx | 4 +- packages/ui/src/common/icons/FlowserIcon.tsx | 66 + .../ui/src/common/icons/assets}/account.svg | 0 .../common/icons/assets}/artist_palette.svg | 0 .../src/common/icons/assets}/back-button.svg | 0 .../ui/src/common/icons/assets}/block.svg | 0 .../ui/src/common/icons/assets}/blocks.svg | 0 .../ui/src/common/icons/assets}/bottle.svg | 0 .../ui/src/common/icons/assets}/calendar.svg | 0 .../ui/src/common/icons/assets}/cancel.svg | 0 .../ui/src/common/icons/assets}/caret.svg | 0 .../src/common/icons/assets/circle-check.svg | 0 .../src/common/icons/assets/circle-cross.svg | 0 .../icons/assets/circle-question-mark.svg | 0 .../icons/assets}/circle_arrow_left.svg | 0 .../ui/src/common/icons/assets}/clock.svg | 0 .../src/common/icons/assets}/close-logs.svg | 0 .../ui/src/common/icons/assets}/close.svg | 0 .../common/icons/assets}/connect-circle.svg | 0 .../ui/src/common/icons/assets}/contract.svg | 0 .../ui/src/common/icons/assets}/contracts.svg | 0 .../ui/src/common/icons/assets}/copy.svg | 0 .../src/common/icons/assets}/cursor_click.svg | 0 .../ui/src/common/icons/assets}/events.svg | 0 .../common/icons/assets}/executed-tx-icon.svg | 0 .../ui/src/common/icons/assets}/exit.svg | 0 .../ui/src/common/icons/assets}/expand.svg | 0 .../icons/assets}/finalised-tx-icon.svg | 0 .../ui/src/common/icons/assets}/flow.svg | 0 .../ui/src/common/icons/assets}/key.svg | 0 .../ui/src/common/icons/assets}/link.svg | 0 .../ui/src/common/icons/assets}/logo.svg | 0 .../src/common/icons/assets}/logo_round.svg | 0 .../ui/src/common/icons/assets}/logout.svg | 0 .../ui/src/common/icons/assets}/logs.svg | 0 .../ui/src/common/icons/assets}/open-logs.svg | 0 .../ui/src/common/icons/assets}/open.svg | 0 .../common/icons/assets}/pending-tx-icon.svg | 0 .../ui/src/common/icons/assets}/play.svg | 0 .../src/common/icons/assets}/plus-round.svg | 0 .../ui/src/common/icons/assets}/plus.svg | 0 .../common/icons/assets}/question-mark.svg | 0 .../ui/src/common/icons/assets}/restart.svg | 0 .../ui/src/common/icons/assets}/script.svg | 0 .../ui/src/common/icons/assets}/search.svg | 0 .../ui/src/common/icons/assets}/settings.svg | 0 .../ui/src/common/icons/assets}/share.svg | 0 .../ui/src/common/icons/assets}/shrink.svg | 0 .../ui/src/common/icons/assets}/snapshot.svg | 0 .../ui/src/common/icons/assets}/star.svg | 0 .../src/common/icons/assets}/transaction.svg | 0 .../src/common/icons/assets}/transactions.svg | 0 .../ui/src/common/icons/assets}/trash.svg | 0 .../ui/src/common/icons/assets}/user.svg | 0 .../common}/inputs/Input/Input.module.scss | 8 +- .../ui/src/common}/inputs/Input/Input.tsx | 0 .../SearchInput/SearchInput.module.scss | 8 +- .../inputs/SearchInput/SearchInput.tsx | 0 .../SelectInput/SelectInput.module.scss | 8 +- .../inputs/SelectInput/SelectInput.tsx | 0 packages/ui/src/common/inputs/index.ts | 3 + .../BasicLayout/BasicLayout.module.scss | 2 +- .../layouts/BasicLayout/BasicLayout.tsx | 1 + .../ProjectLayout/ProjectLayout.module.scss | 6 +- .../layouts/ProjectLayout/ProjectLayout.tsx | 3 +- .../ExternalLink}/ExternalLink.module.scss | 4 +- .../links/ExternalLink}/ExternalLink.tsx | 2 +- .../ui/src/common}/links/IdeLink.tsx | 2 +- .../ui/src/common}/links/ProjectLink.tsx | 3 +- .../FullScreenLoading.module.scss | 8 +- .../FullScreenLoading/FullScreenLoading.tsx | 0 .../loaders/Spinner/Spinner.module.scss | 2 +- .../src/common}/loaders/Spinner/Spinner.tsx | 0 .../loaders/Spinner/SpinnerWithLabel.tsx | 0 .../misc/BaseBadge/BaseBadge.module.scss | 4 +- .../src/common}/misc/BaseBadge/BaseBadge.tsx | 0 .../misc/BaseTable/BaseTable.module.scss | 6 +- .../src/common}/misc/BaseTable/BaseTable.tsx | 16 +- .../misc/Breadcrumbs/Breadcrumbs.module.scss | 8 +- .../common}/misc/Breadcrumbs/Breadcrumbs.tsx | 2 +- .../common}/misc/Callout/Callout.module.scss | 6 +- .../ui/src/common}/misc/Callout/Callout.tsx | 0 .../src/common}/misc/Label/Label.module.scss | 4 +- .../ui/src/common}/misc/Label/Label.tsx | 0 .../LineSeparator/LineSeparator.module.scss | 4 +- .../misc/LineSeparator/LineSeparator.tsx | 0 .../ProjectRequirements.module.scss | 4 +- .../ProjectRequirements.tsx | 3 +- .../SideNavigation/SideNavigation.module.scss | 4 +- .../misc/SideNavigation/SideNavigation.tsx | 7 +- .../ui/src/common}/misc/SizedBox/SizedBox.tsx | 0 .../src/common}/misc/Value/Value.module.scss | 4 +- .../ui/src/common}/misc/Value/Value.tsx | 0 .../ui/src/common/overlays/Menu}/Menu.scss | 2 +- .../ui/src/common/overlays/Menu}/Menu.tsx | 0 .../src/common}/overlays/Tooltip/Tooltip.scss | 2 +- .../src/common}/overlays/Tooltip/Tooltip.tsx | 0 .../dialogs/action/ActionDialog.module.scss | 8 +- .../overlays/dialogs/action/ActionDialog.tsx | 0 .../dialogs/base/BaseDialog.module.scss | 4 +- .../overlays/dialogs/base/BaseDialog.tsx | 0 .../confirmation/ConfirmationDialog.tsx | 0 .../dialogs/consent/ConsentDialog.module.scss | 4 +- .../dialogs/consent/ConsentDialog.tsx | 2 +- .../snapshot/SnapshotDialog.module.scss | 2 +- .../dialogs/snapshot/SnapshotDialog.tsx | 6 +- .../common}/status/ErrorMessage.module.scss | 2 +- .../ui/src/common}/status/ErrorMessage.tsx | 2 +- .../ui/src/common}/status/ExecutionStatus.tsx | 12 +- .../common}/status/ExecutionStatusBadge.tsx | 4 +- .../ui/src/common}/status/GrcpStatus.tsx | 12 +- .../ui/src/common}/status/GrcpStatusBadge.tsx | 2 +- .../ui/src/common}/status/Status.module.scss | 6 +- .../status/TransactionStatusBadge.module.scss | 6 +- .../tabs/BaseTabs/BaseTabs.module.scss | 8 +- .../ui/src/common}/tabs/BaseTabs/BaseTabs.tsx | 0 .../tabs/StyledTabs/StyledTabs.module.scss | 4 +- .../common}/tabs/StyledTabs/StyledTabs.tsx | 0 .../time/DateDisplay/DateDisplay.module.scss | 0 .../common}/time/DateDisplay/DateDisplay.tsx | 2 +- .../ui/src/common}/time/TimeAgo/TimeAgo.tsx | 0 .../ContractDetails.module.scss | 2 +- .../ContractDetails/ContractDetails.tsx | 16 +- .../ContractsTable/ContractsTable.module.scss | 2 +- .../ContractsTable/ContractsTable.tsx | 16 +- .../EventDetails/EventDetails.module.scss | 4 +- .../src}/events/EventDetails/EventDetails.tsx | 22 +- .../EventOriginLink/EventOriginLink.tsx | 4 +- .../EventsTable/EventsTable.module.scss | 4 +- .../src}/events/EventsTable/EventsTable.tsx | 14 +- .../ui/src}/events/utils.ts | 0 packages/ui/src/index.ts | 6 + .../interactions/InteractionsPage.module.scss | 4 +- .../ui/src}/interactions/InteractionsPage.tsx | 6 +- .../ExecutionSettings.module.scss | 4 +- .../ExecutionSettings/ExecutionSettings.tsx | 10 +- .../InteractionHistory.module.scss | 6 +- .../InteractionHistory/InteractionHistory.tsx | 14 +- .../InteractionIcon.module.scss | 2 +- .../InteractionIcon/InteractionIcon.tsx | 2 +- .../InteractionLabel.module.scss | 2 +- .../InteractionLabel/InteractionLabel.tsx | 8 +- .../InteractionOutcomeDisplay.module.scss | 2 +- .../InteractionOutcomeDisplay.tsx | 18 +- .../InteractionTemplates.module.scss | 10 +- .../InteractionTemplates.tsx | 12 +- .../ParamBuilder/ParamBuilder.module.scss | 4 +- .../components/ParamBuilder/ParamBuilder.tsx | 0 .../AddressBuilder/AddressBuilder.module.scss | 8 +- .../AddressBuilder/AddressBuilder.tsx | 10 +- .../ArrayBuilder/ArrayBuilder.module.scss | 2 +- .../ArrayBuilder/ArrayBuilder.tsx | 4 +- .../ValueBuilder/BoolBuilder/BoolBuilder.tsx | 2 +- .../DictionaryBuilder.module.scss | 4 +- .../DictionaryBuilder/DictionaryBuilder.tsx | 6 +- .../FixedPointNumberBuilder.tsx | 2 +- .../IntegerNumberBuilder.tsx | 2 +- .../ValueBuilder/PathBuilder/PathBuilder.tsx | 4 +- .../TextualBuilder/TextualBuilder.tsx | 2 +- .../components/ValueBuilder/ValueBuilder.tsx | 10 +- .../components/ValueBuilder/interface.ts | 0 .../contexts/definition.context.tsx | 2 +- .../contexts/interaction-registry.context.tsx | 0 .../interactions/contexts/outcome.context.tsx | 4 +- .../contexts/templates.context.tsx | 6 +- .../ui/src}/interactions/core/core-types.ts | 0 .../ui/src}/interactions/core/core-utils.ts | 0 .../hooks/use-transaction-name.ts | 8 +- .../ui/src}/logs/Logs.module.scss | 8 +- .../modules => packages/ui/src}/logs/Logs.tsx | 40 +- .../FormFields/FormFields.module.scss | 8 +- .../src}/projects/FormFields/FormFields.tsx | 8 +- .../ProjectListPage.module.scss | 10 +- .../ProjectListPage/ProjectListPage.tsx | 18 +- .../ProjectSettings.module.scss | 10 +- .../ProjectSettings/ProjectSettings.tsx | 22 +- .../SettingsSection.module.scss | 6 +- .../SettingsSection/SettingsSection.tsx | 2 +- .../ui}/src/styles/animations.scss | 0 .../ui}/src/styles/colors.scss | 0 .../ui}/src/styles/rules.scss | 0 .../ui}/src/styles/scrollbars.scss | 0 .../ui}/src/styles/spacings.scss | 0 .../ui}/src/styles/typography.scss | 0 .../SignaturesTable.module.scss | 0 .../SignaturesTable/SignaturesTable.tsx | 12 +- .../TransactionDetails.module.scss | 7 + .../TransactionDetails/TransactionDetails.tsx | 7 +- .../TransactionDetailsTabs.tsx | 15 +- .../TransactionOverview.module.scss | 0 .../TransactionOverview.tsx | 18 +- .../TransactionSource.module.scss | 6 +- .../TransactionSource/TransactionSource.tsx | 14 +- .../TransactionsTable.module.scss | 4 +- .../TransactionsTable/TransactionsTable.tsx | 30 +- .../ui}/src/utils/flow-utils.test.ts | 0 .../ui}/src/utils/flow-utils.ts | 8 +- packages/ui/src/utils/misc.ts | 17 + packages/ui/src/utils/text-utils.ts | 15 + packages/ui/tsconfig.json | 8 + packages/ui/vite.config.js | 39 + yarn.lock | 11413 ++++++++++++++-- 292 files changed, 11247 insertions(+), 1802 deletions(-) delete mode 100644 frontend/src/components/icons/FlowserIcon.tsx delete mode 100644 frontend/src/components/misc/ManagedProcess/ManagedProcess.module.scss delete mode 100644 frontend/src/components/misc/ManagedProcess/ManagedProcess.tsx delete mode 100644 frontend/src/modules/accounts/AccountName/AccountName.tsx delete mode 100644 frontend/src/modules/transactions/TransactionDetails/TransactionDetails.module.scss delete mode 100644 frontend/src/styles/spacings.ts delete mode 100644 frontend/src/utils/text-utils.ts create mode 100644 packages/ui/package.json rename {frontend/src/modules => packages/ui/src}/accounts/AccountAvatar/AccountAvatar.tsx (50%) rename {frontend/src/assets/images => packages/ui/src/accounts/AccountAvatar}/avatars/1.jpg (100%) rename {frontend/src/assets/images => packages/ui/src/accounts/AccountAvatar}/avatars/10.jpg (100%) rename {frontend/src/assets/images => packages/ui/src/accounts/AccountAvatar}/avatars/11.jpg (100%) rename {frontend/src/assets/images => packages/ui/src/accounts/AccountAvatar}/avatars/12.jpg (100%) rename {frontend/src/assets/images => packages/ui/src/accounts/AccountAvatar}/avatars/13.jpg (100%) rename {frontend/src/assets/images => packages/ui/src/accounts/AccountAvatar}/avatars/14.jpg (100%) rename {frontend/src/assets/images => packages/ui/src/accounts/AccountAvatar}/avatars/15.jpg (100%) rename {frontend/src/assets/images => packages/ui/src/accounts/AccountAvatar}/avatars/16.jpg (100%) rename {frontend/src/assets/images => packages/ui/src/accounts/AccountAvatar}/avatars/2.jpg (100%) rename {frontend/src/assets/images => packages/ui/src/accounts/AccountAvatar}/avatars/3.jpg (100%) rename {frontend/src/assets/images => packages/ui/src/accounts/AccountAvatar}/avatars/4.jpg (100%) rename {frontend/src/assets/images => packages/ui/src/accounts/AccountAvatar}/avatars/5.jpg (100%) rename {frontend/src/assets/images => packages/ui/src/accounts/AccountAvatar}/avatars/6.jpg (100%) rename {frontend/src/assets/images => packages/ui/src/accounts/AccountAvatar}/avatars/7.jpg (100%) rename {frontend/src/assets/images => packages/ui/src/accounts/AccountAvatar}/avatars/8.jpg (100%) rename {frontend/src/assets/images => packages/ui/src/accounts/AccountAvatar}/avatars/9.jpg (100%) rename {frontend/src/assets/images => packages/ui/src/accounts/AccountAvatar}/avatars/README.md (100%) rename {frontend/src/assets/images => packages/ui/src/accounts/AccountAvatar}/avatars/service.png (100%) rename {frontend/src/modules => packages/ui/src}/accounts/AccountDetails/AccountDetails.module.scss (67%) rename {frontend/src/modules => packages/ui/src}/accounts/AccountDetails/AccountDetails.tsx (83%) rename {frontend/src/modules => packages/ui/src}/accounts/AccountKeysTable/AccountKeysTable.module.scss (77%) rename {frontend/src/modules => packages/ui/src}/accounts/AccountKeysTable/AccountKeysTable.tsx (79%) rename {frontend/src/modules => packages/ui/src}/accounts/AccountLink/AccountLink.module.scss (54%) rename {frontend/src/modules => packages/ui/src}/accounts/AccountLink/AccountLink.tsx (89%) create mode 100644 packages/ui/src/accounts/AccountName/AccountName.tsx rename {frontend/src/modules => packages/ui/src}/accounts/AccountStorage/AccountStorage.module.scss (100%) rename {frontend/src/modules => packages/ui/src}/accounts/AccountStorage/AccountStorage.tsx (87%) rename {frontend/src/modules => packages/ui/src}/accounts/AccountsTable/AccountsTable.module.scss (66%) rename {frontend/src/modules => packages/ui/src}/accounts/AccountsTable/AccountsTable.tsx (79%) rename {frontend/src/modules => packages/ui/src}/accounts/InternalStorageCard/InternalStorageCard.module.scss (91%) rename {frontend/src/modules => packages/ui/src}/accounts/InternalStorageCard/InternalStorageCard.tsx (85%) rename {frontend/src/modules => packages/ui/src}/accounts/PublicPrivateStorageCard/PublicPrivateStorageCard.module.scss (89%) rename {frontend/src/modules => packages/ui/src}/accounts/PublicPrivateStorageCard/PublicPrivateStorageCard.tsx (87%) rename {frontend/src/modules => packages/ui/src}/accounts/StorageDataTypes/StorageDataTypes.module.scss (83%) rename {frontend/src/modules => packages/ui/src}/accounts/StorageDataTypes/StorageDataTypes.tsx (95%) rename {frontend/src/modules => packages/ui/src}/accounts/StorageDomainBadge/StorageDomainBadge.module.scss (69%) rename {frontend/src/modules => packages/ui/src}/accounts/StorageDomainBadge/StorageDomainBadge.tsx (88%) rename {frontend/src/modules => packages/ui/src}/blocks/BlockDetails/BlockDetails.module.scss (62%) rename {frontend/src/modules => packages/ui/src}/blocks/BlockDetails/BlockDetails.tsx (74%) rename {frontend/src/modules => packages/ui/src}/blocks/BlocksTable/BlocksTable.module.scss (88%) rename {frontend/src/modules => packages/ui/src}/blocks/BlocksTable/BlocksTable.tsx (78%) rename {frontend/src/components => packages/ui/src/common}/buttons/ActionButton/ActionButton.module.scss (84%) rename {frontend/src/components => packages/ui/src/common}/buttons/ActionButton/ActionButton.tsx (100%) rename {frontend/src/components => packages/ui/src/common}/buttons/Button/Button.module.scss (92%) rename {frontend/src/components => packages/ui/src/common}/buttons/Button/Button.tsx (100%) rename {frontend/src/components => packages/ui/src/common}/buttons/CopyButton/CopyButton.module.scss (100%) rename {frontend/src/components => packages/ui/src/common}/buttons/CopyButton/CopyButton.tsx (85%) rename {frontend/src/components => packages/ui/src/common}/buttons/IconButton/IconButton.module.scss (90%) rename {frontend/src/components => packages/ui/src/common}/buttons/IconButton/IconButton.tsx (100%) rename {frontend/src/components => packages/ui/src/common}/buttons/LoaderButton/LoaderButton.tsx (100%) rename {frontend/src/components => packages/ui/src/common}/buttons/PrimaryButton/PrimaryButton.module.scss (64%) rename {frontend/src/components => packages/ui/src/common}/buttons/PrimaryButton/PrimaryButton.tsx (100%) rename {frontend/src/components => packages/ui/src/common}/buttons/RadioButton/RadioButton.module.scss (93%) rename {frontend/src/components => packages/ui/src/common}/buttons/RadioButton/RadioButton.tsx (100%) rename {frontend/src/components => packages/ui/src/common}/buttons/SimpleButton/SimpleButton.module.scss (61%) rename {frontend/src/components => packages/ui/src/common}/buttons/SimpleButton/SimpleButton.tsx (100%) rename {frontend/src/components => packages/ui/src/common}/buttons/ToggleButton/ToggleButton.module.scss (89%) rename {frontend/src/components => packages/ui/src/common}/buttons/ToggleButton/ToggleButton.tsx (100%) rename {frontend/src/components => packages/ui/src/common}/cards/BaseCard/BaseCard.module.scss (56%) rename {frontend/src/components => packages/ui/src/common}/cards/BaseCard/BaseCard.tsx (100%) rename {frontend/src/components => packages/ui/src/common}/cards/DetailsCard/DetailsCard.module.scss (83%) rename {frontend/src/components => packages/ui/src/common}/cards/DetailsCard/DetailsCard.tsx (93%) rename {frontend/src/components => packages/ui/src/common}/code/CadenceEditor/CadenceEditor.tsx (100%) rename {frontend/src/components => packages/ui/src/common}/code/CadenceEditor/cadence-editor.css (100%) rename {frontend/src/components => packages/ui/src/common}/code/JsonView/JsonView.module.scss (65%) rename {frontend/src/components => packages/ui/src/common}/code/JsonView/JsonView.tsx (100%) rename {frontend/src/components => packages/ui/src/common}/ellipsis/Ellipsis.tsx (100%) rename {frontend/src/components => packages/ui/src/common}/ellipsis/MiddleEllipsis.tsx (100%) rename {frontend/src/components => packages/ui/src/common}/errors/ErrorMessage.module.scss (70%) rename {frontend/src/components => packages/ui/src/common}/errors/ErrorMessage.tsx (91%) rename {frontend/src/components => packages/ui/src/common}/errors/Message.tsx (100%) rename {frontend/src/components => packages/ui/src/common}/icons/CaretIcon/CaretIcon.module.scss (80%) rename {frontend/src/components => packages/ui/src/common}/icons/CaretIcon/CaretIcon.tsx (89%) create mode 100644 packages/ui/src/common/icons/FlowserIcon.tsx rename {frontend/src/assets/icons => packages/ui/src/common/icons/assets}/account.svg (100%) rename {frontend/src/assets/icons => packages/ui/src/common/icons/assets}/artist_palette.svg (100%) rename {frontend/src/assets/icons => packages/ui/src/common/icons/assets}/back-button.svg (100%) rename {frontend/src/assets/icons => packages/ui/src/common/icons/assets}/block.svg (100%) rename {frontend/src/assets/icons => packages/ui/src/common/icons/assets}/blocks.svg (100%) rename {frontend/src/assets/icons => packages/ui/src/common/icons/assets}/bottle.svg (100%) rename {frontend/src/assets/icons => packages/ui/src/common/icons/assets}/calendar.svg (100%) rename {frontend/src/assets/icons => packages/ui/src/common/icons/assets}/cancel.svg (100%) rename {frontend/src/assets/icons => packages/ui/src/common/icons/assets}/caret.svg (100%) rename frontend/src/assets/icons/sealed-tx-icon.svg => packages/ui/src/common/icons/assets/circle-check.svg (100%) rename frontend/src/assets/icons/expired-tx-icon.svg => packages/ui/src/common/icons/assets/circle-cross.svg (100%) rename frontend/src/assets/icons/unknown-tx-icon.svg => packages/ui/src/common/icons/assets/circle-question-mark.svg (100%) rename {frontend/src/assets/icons => packages/ui/src/common/icons/assets}/circle_arrow_left.svg (100%) rename {frontend/src/assets/icons => packages/ui/src/common/icons/assets}/clock.svg (100%) rename {frontend/src/assets/icons => packages/ui/src/common/icons/assets}/close-logs.svg (100%) rename {frontend/src/assets/icons => packages/ui/src/common/icons/assets}/close.svg (100%) rename {frontend/src/assets/icons => packages/ui/src/common/icons/assets}/connect-circle.svg (100%) rename {frontend/src/assets/icons => packages/ui/src/common/icons/assets}/contract.svg (100%) rename {frontend/src/assets/icons => packages/ui/src/common/icons/assets}/contracts.svg (100%) rename {frontend/src/assets/icons => packages/ui/src/common/icons/assets}/copy.svg (100%) rename {frontend/src/assets/icons => packages/ui/src/common/icons/assets}/cursor_click.svg (100%) rename {frontend/src/assets/icons => packages/ui/src/common/icons/assets}/events.svg (100%) rename {frontend/src/assets/icons => packages/ui/src/common/icons/assets}/executed-tx-icon.svg (100%) rename {frontend/src/assets/icons => packages/ui/src/common/icons/assets}/exit.svg (100%) rename {frontend/src/assets/icons => packages/ui/src/common/icons/assets}/expand.svg (100%) rename {frontend/src/assets/icons => packages/ui/src/common/icons/assets}/finalised-tx-icon.svg (100%) rename {frontend/src/assets/icons => packages/ui/src/common/icons/assets}/flow.svg (100%) rename {frontend/src/assets/icons => packages/ui/src/common/icons/assets}/key.svg (100%) rename {frontend/src/assets/icons => packages/ui/src/common/icons/assets}/link.svg (100%) rename {frontend/src/assets/icons => packages/ui/src/common/icons/assets}/logo.svg (100%) rename {frontend/src/assets/icons => packages/ui/src/common/icons/assets}/logo_round.svg (100%) rename {frontend/src/assets/icons => packages/ui/src/common/icons/assets}/logout.svg (100%) rename {frontend/src/assets/icons => packages/ui/src/common/icons/assets}/logs.svg (100%) rename {frontend/src/assets/icons => packages/ui/src/common/icons/assets}/open-logs.svg (100%) rename {frontend/src/assets/icons => packages/ui/src/common/icons/assets}/open.svg (100%) rename {frontend/src/assets/icons => packages/ui/src/common/icons/assets}/pending-tx-icon.svg (100%) rename {frontend/src/assets/icons => packages/ui/src/common/icons/assets}/play.svg (100%) rename {frontend/src/assets/icons => packages/ui/src/common/icons/assets}/plus-round.svg (100%) rename {frontend/src/assets/icons => packages/ui/src/common/icons/assets}/plus.svg (100%) rename {frontend/src/assets/icons => packages/ui/src/common/icons/assets}/question-mark.svg (100%) rename {frontend/src/assets/icons => packages/ui/src/common/icons/assets}/restart.svg (100%) rename {frontend/src/assets/icons => packages/ui/src/common/icons/assets}/script.svg (100%) rename {frontend/src/assets/icons => packages/ui/src/common/icons/assets}/search.svg (100%) rename {frontend/src/assets/icons => packages/ui/src/common/icons/assets}/settings.svg (100%) rename {frontend/src/assets/icons => packages/ui/src/common/icons/assets}/share.svg (100%) rename {frontend/src/assets/icons => packages/ui/src/common/icons/assets}/shrink.svg (100%) rename {frontend/src/assets/icons => packages/ui/src/common/icons/assets}/snapshot.svg (100%) rename {frontend/src/assets/icons => packages/ui/src/common/icons/assets}/star.svg (100%) rename {frontend/src/assets/icons => packages/ui/src/common/icons/assets}/transaction.svg (100%) rename {frontend/src/assets/icons => packages/ui/src/common/icons/assets}/transactions.svg (100%) rename {frontend/src/assets/icons => packages/ui/src/common/icons/assets}/trash.svg (100%) rename {frontend/src/assets/icons => packages/ui/src/common/icons/assets}/user.svg (100%) rename {frontend/src/components => packages/ui/src/common}/inputs/Input/Input.module.scss (76%) rename {frontend/src/components => packages/ui/src/common}/inputs/Input/Input.tsx (100%) rename {frontend/src/components => packages/ui/src/common}/inputs/SearchInput/SearchInput.module.scss (83%) rename {frontend/src/components => packages/ui/src/common}/inputs/SearchInput/SearchInput.tsx (100%) rename {frontend/src/components => packages/ui/src/common}/inputs/SelectInput/SelectInput.module.scss (80%) rename {frontend/src/components => packages/ui/src/common}/inputs/SelectInput/SelectInput.tsx (100%) create mode 100644 packages/ui/src/common/inputs/index.ts rename {frontend/src/components => packages/ui/src/common}/layouts/BasicLayout/BasicLayout.module.scss (75%) rename {frontend/src/components => packages/ui/src/common}/layouts/BasicLayout/BasicLayout.tsx (90%) rename {frontend/src/components => packages/ui/src/common}/layouts/ProjectLayout/ProjectLayout.module.scss (87%) rename {frontend/src/components => packages/ui/src/common}/layouts/ProjectLayout/ProjectLayout.tsx (92%) rename {frontend/src/components/links => packages/ui/src/common/links/ExternalLink}/ExternalLink.module.scss (79%) rename {frontend/src/components/links => packages/ui/src/common/links/ExternalLink}/ExternalLink.tsx (93%) rename {frontend/src/components => packages/ui/src/common}/links/IdeLink.tsx (94%) rename {frontend/src/components => packages/ui/src/common}/links/ProjectLink.tsx (81%) rename {frontend/src/components => packages/ui/src/common}/loaders/FullScreenLoading/FullScreenLoading.module.scss (68%) rename {frontend/src/components => packages/ui/src/common}/loaders/FullScreenLoading/FullScreenLoading.tsx (100%) rename {frontend/src/components => packages/ui/src/common}/loaders/Spinner/Spinner.module.scss (91%) rename {frontend/src/components => packages/ui/src/common}/loaders/Spinner/Spinner.tsx (100%) rename {frontend/src/components => packages/ui/src/common}/loaders/Spinner/SpinnerWithLabel.tsx (100%) rename {frontend/src/components => packages/ui/src/common}/misc/BaseBadge/BaseBadge.module.scss (61%) rename {frontend/src/components => packages/ui/src/common}/misc/BaseBadge/BaseBadge.tsx (100%) rename {frontend/src/components => packages/ui/src/common}/misc/BaseTable/BaseTable.module.scss (86%) rename {frontend/src/components => packages/ui/src/common}/misc/BaseTable/BaseTable.tsx (85%) rename {frontend/src/components => packages/ui/src/common}/misc/Breadcrumbs/Breadcrumbs.module.scss (85%) rename {frontend/src/components => packages/ui/src/common}/misc/Breadcrumbs/Breadcrumbs.tsx (95%) rename {frontend/src/components => packages/ui/src/common}/misc/Callout/Callout.module.scss (74%) rename {frontend/src/components => packages/ui/src/common}/misc/Callout/Callout.tsx (100%) rename {frontend/src/components => packages/ui/src/common}/misc/Label/Label.module.scss (81%) rename {frontend/src/components => packages/ui/src/common}/misc/Label/Label.tsx (100%) rename {frontend/src/components => packages/ui/src/common}/misc/LineSeparator/LineSeparator.module.scss (73%) rename {frontend/src/components => packages/ui/src/common}/misc/LineSeparator/LineSeparator.tsx (100%) rename {frontend/src/components => packages/ui/src/common}/misc/ProjectRequirements/ProjectRequirements.module.scss (71%) rename {frontend/src/components => packages/ui/src/common}/misc/ProjectRequirements/ProjectRequirements.tsx (95%) rename {frontend/src/components => packages/ui/src/common}/misc/SideNavigation/SideNavigation.module.scss (89%) rename {frontend/src/components => packages/ui/src/common}/misc/SideNavigation/SideNavigation.tsx (87%) rename {frontend/src/components => packages/ui/src/common}/misc/SizedBox/SizedBox.tsx (100%) rename {frontend/src/components => packages/ui/src/common}/misc/Value/Value.module.scss (82%) rename {frontend/src/components => packages/ui/src/common}/misc/Value/Value.tsx (100%) rename {frontend/src/components/overlays/menus => packages/ui/src/common/overlays/Menu}/Menu.scss (86%) rename {frontend/src/components/overlays/menus => packages/ui/src/common/overlays/Menu}/Menu.tsx (100%) rename {frontend/src/components => packages/ui/src/common}/overlays/Tooltip/Tooltip.scss (80%) rename {frontend/src/components => packages/ui/src/common}/overlays/Tooltip/Tooltip.tsx (100%) rename {frontend/src/components => packages/ui/src/common}/overlays/dialogs/action/ActionDialog.module.scss (79%) rename {frontend/src/components => packages/ui/src/common}/overlays/dialogs/action/ActionDialog.tsx (100%) rename {frontend/src/components => packages/ui/src/common}/overlays/dialogs/base/BaseDialog.module.scss (87%) rename {frontend/src/components => packages/ui/src/common}/overlays/dialogs/base/BaseDialog.tsx (100%) rename {frontend/src/components => packages/ui/src/common}/overlays/dialogs/confirmation/ConfirmationDialog.tsx (100%) rename {frontend/src/components => packages/ui/src/common}/overlays/dialogs/consent/ConsentDialog.module.scss (92%) rename {frontend/src/components => packages/ui/src/common}/overlays/dialogs/consent/ConsentDialog.tsx (96%) rename {frontend/src/components => packages/ui/src/common}/overlays/dialogs/snapshot/SnapshotDialog.module.scss (63%) rename {frontend/src/components => packages/ui/src/common}/overlays/dialogs/snapshot/SnapshotDialog.tsx (87%) rename {frontend/src/components => packages/ui/src/common}/status/ErrorMessage.module.scss (63%) rename {frontend/src/components => packages/ui/src/common}/status/ErrorMessage.tsx (97%) rename {frontend/src/components => packages/ui/src/common}/status/ExecutionStatus.tsx (72%) rename {frontend/src/components => packages/ui/src/common}/status/ExecutionStatusBadge.tsx (92%) rename {frontend/src/components => packages/ui/src/common}/status/GrcpStatus.tsx (68%) rename {frontend/src/components => packages/ui/src/common}/status/GrcpStatusBadge.tsx (94%) rename {frontend/src/components => packages/ui/src/common}/status/Status.module.scss (61%) rename {frontend/src/components => packages/ui/src/common}/status/TransactionStatusBadge.module.scss (61%) rename {frontend/src/components => packages/ui/src/common}/tabs/BaseTabs/BaseTabs.module.scss (92%) rename {frontend/src/components => packages/ui/src/common}/tabs/BaseTabs/BaseTabs.tsx (100%) rename {frontend/src/components => packages/ui/src/common}/tabs/StyledTabs/StyledTabs.module.scss (84%) rename {frontend/src/components => packages/ui/src/common}/tabs/StyledTabs/StyledTabs.tsx (100%) rename {frontend/src/components => packages/ui/src/common}/time/DateDisplay/DateDisplay.module.scss (100%) rename {frontend/src/components => packages/ui/src/common}/time/DateDisplay/DateDisplay.tsx (100%) rename {frontend/src/components => packages/ui/src/common}/time/TimeAgo/TimeAgo.tsx (100%) rename {frontend/src/modules => packages/ui/src}/contracts/ContractDetails/ContractDetails.module.scss (89%) rename {frontend/src/modules => packages/ui/src}/contracts/ContractDetails/ContractDetails.tsx (75%) rename {frontend/src/modules => packages/ui/src}/contracts/ContractsTable/ContractsTable.module.scss (64%) rename {frontend/src/modules => packages/ui/src}/contracts/ContractsTable/ContractsTable.tsx (80%) rename {frontend/src/modules => packages/ui/src}/events/EventDetails/EventDetails.module.scss (60%) rename {frontend/src/modules => packages/ui/src}/events/EventDetails/EventDetails.tsx (72%) rename {frontend/src/modules => packages/ui/src}/events/EventOriginLink/EventOriginLink.tsx (84%) rename {frontend/src/modules => packages/ui/src}/events/EventsTable/EventsTable.module.scss (51%) rename {frontend/src/modules => packages/ui/src}/events/EventsTable/EventsTable.tsx (81%) rename {frontend/src/modules => packages/ui/src}/events/utils.ts (100%) create mode 100644 packages/ui/src/index.ts rename {frontend/src/modules => packages/ui/src}/interactions/InteractionsPage.module.scss (94%) rename {frontend/src/modules => packages/ui/src}/interactions/InteractionsPage.tsx (93%) rename {frontend/src/modules => packages/ui/src}/interactions/components/ExecutionSettings/ExecutionSettings.module.scss (78%) rename {frontend/src/modules => packages/ui/src}/interactions/components/ExecutionSettings/ExecutionSettings.tsx (95%) rename {frontend/src/modules => packages/ui/src}/interactions/components/InteractionHistory/InteractionHistory.module.scss (86%) rename {frontend/src/modules => packages/ui/src}/interactions/components/InteractionHistory/InteractionHistory.tsx (89%) rename {frontend/src/modules => packages/ui/src}/interactions/components/InteractionIcon/InteractionIcon.module.scss (75%) rename {frontend/src/modules => packages/ui/src}/interactions/components/InteractionIcon/InteractionIcon.tsx (90%) rename {frontend/src/modules => packages/ui/src}/interactions/components/InteractionLabel/InteractionLabel.module.scss (88%) rename {frontend/src/modules => packages/ui/src}/interactions/components/InteractionLabel/InteractionLabel.tsx (74%) rename {frontend/src/modules => packages/ui/src}/interactions/components/InteractionOutcomeDisplay/InteractionOutcomeDisplay.module.scss (82%) rename {frontend/src/modules => packages/ui/src}/interactions/components/InteractionOutcomeDisplay/InteractionOutcomeDisplay.tsx (87%) rename {frontend/src/modules => packages/ui/src}/interactions/components/InteractionTemplates/InteractionTemplates.module.scss (86%) rename {frontend/src/modules => packages/ui/src}/interactions/components/InteractionTemplates/InteractionTemplates.tsx (89%) rename {frontend/src/modules => packages/ui/src}/interactions/components/ParamBuilder/ParamBuilder.module.scss (78%) rename {frontend/src/modules => packages/ui/src}/interactions/components/ParamBuilder/ParamBuilder.tsx (100%) rename {frontend/src/modules => packages/ui/src}/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.module.scss (91%) rename {frontend/src/modules => packages/ui/src}/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.tsx (91%) rename {frontend/src/modules => packages/ui/src}/interactions/components/ValueBuilder/ArrayBuilder/ArrayBuilder.module.scss (87%) rename {frontend/src/modules => packages/ui/src}/interactions/components/ValueBuilder/ArrayBuilder/ArrayBuilder.tsx (93%) rename {frontend/src/modules => packages/ui/src}/interactions/components/ValueBuilder/BoolBuilder/BoolBuilder.tsx (93%) rename {frontend/src/modules => packages/ui/src}/interactions/components/ValueBuilder/DictionaryBuilder/DictionaryBuilder.module.scss (78%) rename {frontend/src/modules => packages/ui/src}/interactions/components/ValueBuilder/DictionaryBuilder/DictionaryBuilder.tsx (96%) rename {frontend/src/modules => packages/ui/src}/interactions/components/ValueBuilder/FixedPointNumberBuilder/FixedPointNumberBuilder.tsx (92%) rename {frontend/src/modules => packages/ui/src}/interactions/components/ValueBuilder/IntegerNumberBuilder/IntegerNumberBuilder.tsx (92%) rename {frontend/src/modules => packages/ui/src}/interactions/components/ValueBuilder/PathBuilder/PathBuilder.tsx (95%) rename {frontend/src/modules => packages/ui/src}/interactions/components/ValueBuilder/TextualBuilder/TextualBuilder.tsx (91%) rename {frontend/src/modules => packages/ui/src}/interactions/components/ValueBuilder/ValueBuilder.tsx (86%) rename {frontend/src/modules => packages/ui/src}/interactions/components/ValueBuilder/interface.ts (100%) rename {frontend/src/modules => packages/ui/src}/interactions/contexts/definition.context.tsx (96%) rename {frontend/src/modules => packages/ui/src}/interactions/contexts/interaction-registry.context.tsx (100%) rename {frontend/src/modules => packages/ui/src}/interactions/contexts/outcome.context.tsx (97%) rename {frontend/src/modules => packages/ui/src}/interactions/contexts/templates.context.tsx (96%) rename {frontend/src/modules => packages/ui/src}/interactions/core/core-types.ts (100%) rename {frontend/src/modules => packages/ui/src}/interactions/core/core-utils.ts (100%) rename {frontend/src/modules => packages/ui/src}/interactions/hooks/use-transaction-name.ts (94%) rename {frontend/src/modules => packages/ui/src}/logs/Logs.module.scss (94%) rename {frontend/src/modules => packages/ui/src}/logs/Logs.tsx (83%) rename {frontend/src/modules => packages/ui/src}/projects/FormFields/FormFields.module.scss (88%) rename {frontend/src/modules => packages/ui/src}/projects/FormFields/FormFields.tsx (91%) rename {frontend/src/modules => packages/ui/src}/projects/ProjectListPage/ProjectListPage.module.scss (96%) rename {frontend/src/modules => packages/ui/src}/projects/ProjectListPage/ProjectListPage.tsx (87%) rename {frontend/src/modules => packages/ui/src}/projects/ProjectSettings/ProjectSettings.module.scss (82%) rename {frontend/src/modules => packages/ui/src}/projects/ProjectSettings/ProjectSettings.tsx (93%) rename {frontend/src/modules => packages/ui/src}/projects/SettingsSection/SettingsSection.module.scss (93%) rename {frontend/src/modules => packages/ui/src}/projects/SettingsSection/SettingsSection.tsx (95%) rename {frontend => packages/ui}/src/styles/animations.scss (100%) rename {frontend => packages/ui}/src/styles/colors.scss (100%) rename {frontend => packages/ui}/src/styles/rules.scss (100%) rename {frontend => packages/ui}/src/styles/scrollbars.scss (100%) rename {frontend => packages/ui}/src/styles/spacings.scss (100%) rename {frontend => packages/ui}/src/styles/typography.scss (100%) rename {frontend/src/modules => packages/ui/src}/transactions/SignaturesTable/SignaturesTable.module.scss (100%) rename {frontend/src/modules => packages/ui/src}/transactions/SignaturesTable/SignaturesTable.tsx (75%) create mode 100644 packages/ui/src/transactions/TransactionDetails/TransactionDetails.module.scss rename {frontend/src/modules => packages/ui/src}/transactions/TransactionDetails/TransactionDetails.tsx (77%) rename {frontend/src/modules => packages/ui/src}/transactions/TransactionDetailsTabs/TransactionDetailsTabs.tsx (80%) rename {frontend/src/modules => packages/ui/src}/transactions/TransactionOverview/TransactionOverview.module.scss (100%) rename {frontend/src/modules => packages/ui/src}/transactions/TransactionOverview/TransactionOverview.tsx (78%) rename {frontend/src/modules => packages/ui/src}/transactions/TransactionSource/TransactionSource.module.scss (82%) rename {frontend/src/modules => packages/ui/src}/transactions/TransactionSource/TransactionSource.tsx (84%) rename {frontend/src/modules => packages/ui/src}/transactions/TransactionsTable/TransactionsTable.module.scss (62%) rename {frontend/src/modules => packages/ui/src}/transactions/TransactionsTable/TransactionsTable.tsx (66%) rename {frontend => packages/ui}/src/utils/flow-utils.test.ts (100%) rename {frontend => packages/ui}/src/utils/flow-utils.ts (97%) create mode 100644 packages/ui/src/utils/misc.ts create mode 100644 packages/ui/src/utils/text-utils.ts create mode 100644 packages/ui/tsconfig.json create mode 100644 packages/ui/vite.config.js diff --git a/frontend/package.json b/frontend/package.json index 9d8a01f35..9170c7a04 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -72,7 +72,7 @@ "lint": "eslint '*/**/*.{js,ts,tsx}' --quiet --fix", "format": "prettier --write \"src/**/*.{ts,tsx}\"", "prepare": "cd ../ && husky install ./frontend/.husky", - "prebuild:web": "cp src/targets/web/index.tsx src/index.tsx", + "prebuild:web": "cp src/targets/web/index.tsx src/index.tsx" }, "eslintConfig": { "extends": [ diff --git a/frontend/src/App.scss b/frontend/src/App.scss index 8cd96fa68..c9f008c85 100644 --- a/frontend/src/App.scss +++ b/frontend/src/App.scss @@ -1,5 +1,5 @@ -@import "styles/colors"; -@import "styles/typography"; +@import "../../packages/ui/src/styles/colors"; +@import "../../packages/ui/src/styles/typography"; * { margin: 0; diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index ec643d99d..d88d9a66a 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -10,48 +10,48 @@ import { useParams, } from "react-router-dom"; import { Toaster } from "react-hot-toast"; -import { ProjectLayout } from "./components/layouts/ProjectLayout/ProjectLayout"; +import { ProjectLayout } from "../../packages/ui/src/common/layouts/ProjectLayout/ProjectLayout"; import "./App.scss"; import { toastOptions } from "./config/toast"; import { ProjectsManagerProvider } from "./contexts/projects.context"; import { ConfirmDialogProvider } from "./contexts/confirm-dialog.context"; import { QueryClientProvider } from "react-query"; -import { ProjectRequirements } from "./components/misc/ProjectRequirements/ProjectRequirements"; +import { ProjectRequirements } from "../../packages/ui/src/common/misc/ProjectRequirements/ProjectRequirements"; import { TimeoutPollingProvider } from "./contexts/timeout-polling.context"; import { PlatformAdapterProvider, PlatformAdapterState, } from "./contexts/platform-adapter.context"; import { queryClient } from "./config/react-query"; -import { ConsentDialog } from "./components/overlays/dialogs/consent/ConsentDialog"; +import { ConsentDialog } from "../../packages/ui/src/common/overlays/dialogs/consent/ConsentDialog"; import { useAnalytics } from "./hooks/use-analytics"; import { ServiceRegistry } from "./services/service-registry"; import { AnalyticEvent } from "./services/analytics.service"; -import { InteractionsPage } from "./modules/interactions/InteractionsPage"; -import { InteractionRegistryProvider } from "modules/interactions/contexts/interaction-registry.context"; -import { ProjectSettings } from "./modules/projects/ProjectSettings/ProjectSettings"; +import { InteractionsPage } from "../../packages/ui/src/interactions/InteractionsPage"; +import { InteractionRegistryProvider } from "../../packages/ui/src/interactions/contexts/interaction-registry.context"; +import { ProjectSettings } from "../../packages/ui/src/projects/ProjectSettings/ProjectSettings"; import { useGetPollingAccounts, useGetPollingBlocks, useGetPollingContracts, - useGetPollingEvents, + useGetEvents, useGetPollingTransactions, } from "./hooks/use-api"; -import { TransactionsTable } from "./modules/transactions/TransactionsTable/TransactionsTable"; -import { TransactionDetails } from "./modules/transactions/TransactionDetails/TransactionDetails"; -import { BlockDetails } from "./modules/blocks/BlockDetails/BlockDetails"; -import { BlocksTable } from "./modules/blocks/BlocksTable/BlocksTable"; -import { AccountDetails } from "./modules/accounts/AccountDetails/AccountDetails"; -import { AccountsTable } from "./modules/accounts/AccountsTable/AccountsTable"; -import { ProjectListPage } from "./modules/projects/ProjectListPage/ProjectListPage"; -import { ContractsTable } from "./modules/contracts/ContractsTable/ContractsTable"; -import { ContractDetails } from "./modules/contracts/ContractDetails/ContractDetails"; -import { EventsTable } from "./modules/events/EventsTable/EventsTable"; -import { createCrumbHandle } from "./components/misc/Breadcrumbs/Breadcrumbs"; -import { TemplatesRegistryProvider } from "./modules/interactions/contexts/templates.context"; -import { BasicLayout } from "./components/layouts/BasicLayout/BasicLayout"; -import { EventDetails } from "./modules/events/EventDetails/EventDetails"; +import { TransactionsTable } from "../../packages/ui/src/transactions/TransactionsTable/TransactionsTable"; +import { TransactionDetails } from "../../packages/ui/src/transactions/TransactionDetails/TransactionDetails"; +import { BlockDetails } from "../../packages/ui/src/blocks/BlockDetails/BlockDetails"; +import { BlocksTable } from "../../packages/ui/src/blocks/BlocksTable/BlocksTable"; +import { AccountDetails } from "../../packages/ui/src/accounts/AccountDetails/AccountDetails"; +import { AccountsTable } from "../../packages/ui/src/accounts/AccountsTable/AccountsTable"; +import { ProjectListPage } from "../../packages/ui/src/projects/ProjectListPage/ProjectListPage"; +import { ContractsTable } from "../../packages/ui/src/contracts/ContractsTable/ContractsTable"; +import { ContractDetails } from "../../packages/ui/src/contracts/ContractDetails/ContractDetails"; +import { EventsTable } from "../../packages/ui/src/events/EventsTable/EventsTable"; +import { createCrumbHandle } from "../../packages/ui/src/common/misc/Breadcrumbs/Breadcrumbs"; +import { TemplatesRegistryProvider } from "../../packages/ui/src/interactions/contexts/templates.context"; +import { BasicLayout } from "../../packages/ui/src/common/layouts/BasicLayout/BasicLayout"; +import { EventDetails } from "../../packages/ui/src/events/EventDetails/EventDetails"; import { FlowConfigProvider } from "./contexts/flow.context"; import { SnapshotsManagerProvider } from "./contexts/snapshots.context"; @@ -341,7 +341,7 @@ function ContractDetailsPage() { } function EventsTablePage() { - const { data } = useGetPollingEvents(); + const { data } = useGetEvents(); return ; } diff --git a/frontend/src/components/icons/FlowserIcon.tsx b/frontend/src/components/icons/FlowserIcon.tsx deleted file mode 100644 index 140bc2d29..000000000 --- a/frontend/src/components/icons/FlowserIcon.tsx +++ /dev/null @@ -1,56 +0,0 @@ -import { ReactComponent as Account } from "../../assets/icons/account.svg"; -import { ReactComponent as Block } from "../../assets/icons/block.svg"; -import { ReactComponent as Contract } from "../../assets/icons/contract.svg"; -import { ReactComponent as CursorClick } from "../../assets/icons/cursor_click.svg"; -import { ReactComponent as LogoRound } from "../../assets/icons/logo_round.svg"; -import { ReactComponent as Logo } from "../../assets/icons/logo.svg"; -import { ReactComponent as Star } from "../../assets/icons/star.svg"; -import { ReactComponent as Transaction } from "../../assets/icons/transaction.svg"; -import { ReactComponent as ArtistPalette } from "../../assets/icons/artist_palette.svg"; -import { ReactComponent as Settings } from "../../assets/icons/settings.svg"; -import { ReactComponent as CircleArrowLeft } from "../../assets/icons/circle_arrow_left.svg"; -import { ReactComponent as Plus } from "../../assets/icons/plus.svg"; -import { ReactComponent as Close } from "../../assets/icons/close.svg"; -import { ReactComponent as Trash } from "../../assets/icons/trash.svg"; -import { ReactComponent as Search } from "../../assets/icons/search.svg"; -import { ReactComponent as Cancel } from "../../assets/icons/cancel.svg"; -import { ReactComponent as Link } from "../../assets/icons/link.svg"; -import { ReactComponent as Script } from "../../assets/icons/script.svg"; -import { ReactComponent as QuestionMark } from "../../assets/icons/question-mark.svg"; -import { ReactComponent as Exit } from "../../assets/icons/exit.svg"; -import { ReactComponent as Restart } from "../../assets/icons/restart.svg"; -import { ReactComponent as Open } from "../../assets/icons/open.svg"; -import { ReactComponent as Share } from "../../assets/icons/share.svg"; -import { ReactComponent as Back } from "../../assets/icons/back-button.svg"; -import { TbBrandVscode } from "react-icons/tb"; -import { SiWebstorm, SiIntellijidea } from "react-icons/si"; - -export const FlowserIcon = { - Logo: Logo, - Back: Back, - Account: Account, - Block: Block, - Contract: Contract, - CursorClick: CursorClick, - LogoRound: LogoRound, - Star: Star, - Transaction: Transaction, - Script: Script, - QuestionMark: QuestionMark, - ArtistPalette: ArtistPalette, - Settings: Settings, - Exit: Exit, - Restart: Restart, - CircleArrowLeft: CircleArrowLeft, - Plus: Plus, - Close: Close, - Trash: Trash, - Search: Search, - Cancel: Cancel, - Link: Link, - Open: Open, - Share: Share, - WebStorm: SiWebstorm, - VsCode: TbBrandVscode, - IntellijIdea: SiIntellijidea -}; diff --git a/frontend/src/components/misc/ManagedProcess/ManagedProcess.module.scss b/frontend/src/components/misc/ManagedProcess/ManagedProcess.module.scss deleted file mode 100644 index d40f72f6c..000000000 --- a/frontend/src/components/misc/ManagedProcess/ManagedProcess.module.scss +++ /dev/null @@ -1,55 +0,0 @@ -@import "styles/colors"; -@import "styles/spacings"; - -.processItem { - justify-content: space-between; - - .label { - font-size: $font-size-normal; - } - - .processItemActions { - display: flex; - align-items: center; - - .restartButton { - width: 15px; - height: 15px; - margin-right: $spacing-base; - - &:hover { - svg { - transform: scale(1.1) rotate(40deg); - } - } - - svg { - transition: 0.3s ease-in-out; - width: 100%; - height: 100%; - - path { - fill: $grey; - } - } - } - } -} - -.processStatus { - border-radius: 50%; - width: 12px; - height: 12px; -} - -.processStatusError { - background: $color-red-light; -} - -.processStatusRunning { - background: $strong-green; -} - -.processStatusNotRunning { - background: $grey; -} diff --git a/frontend/src/components/misc/ManagedProcess/ManagedProcess.tsx b/frontend/src/components/misc/ManagedProcess/ManagedProcess.tsx deleted file mode 100644 index 8884f681e..000000000 --- a/frontend/src/components/misc/ManagedProcess/ManagedProcess.tsx +++ /dev/null @@ -1,82 +0,0 @@ -import { ManagedProcess, ManagedProcessState } from "@flowser/shared"; -import { useAnalytics } from "../../../hooks/use-analytics"; -import { ServiceRegistry } from "../../../services/service-registry"; -import React, { ReactElement, useState } from "react"; -import { useErrorHandler } from "../../../hooks/use-error-handler"; -import { AnalyticEvent } from "../../../services/analytics.service"; -import classNames from "classnames"; -import classes from "../sidebar/SideBar.module.scss"; -import { SimpleButton } from "../../buttons/SimpleButton/SimpleButton"; -import { Spinner } from "../../loaders/Spinner/Spinner"; -import { FlowserIcon } from "../../icons/FlowserIcon"; - -type ManagedProcessDisplayProps = { process: ManagedProcess }; - -export function ManagedProcessDisplay( - props: ManagedProcessDisplayProps -): ReactElement { - const { process } = props; - const { track } = useAnalytics(); - const { processesService } = ServiceRegistry.getInstance(); - const [isRestarting, setRestarting] = useState(false); - const { handleError } = useErrorHandler(ManagedProcessDisplay.name); - - async function onRestart() { - track(AnalyticEvent.RESTART_PROCESS, { - processId: process.id, - processName: process.name, - }); - - setRestarting(true); - try { - await processesService.restart({ processId: process.id }); - } catch (e) { - handleError(e); - } finally { - // The restart in most cases happens so quickly that it isn't even visible in the UI - // This could fool the user that nothing happened, so let's fake a larger delay. - const fakeRestartDelay = 500; - setTimeout(() => setRestarting(false), fakeRestartDelay); - } - } - - return ( -
- {process.name} -
- - - - -
-
- ); -} - -function ManagedProcessStatus({ - state, - isRestarting, -}: { - isRestarting: boolean; - state: ManagedProcessState; -}) { - const isNotRunning = - state === ManagedProcessState.MANAGED_PROCESS_STATE_NOT_RUNNING; - const isRunning = state === ManagedProcessState.MANAGED_PROCESS_STATE_RUNNING; - const isError = state === ManagedProcessState.MANAGED_PROCESS_STATE_ERROR; - if (isRestarting) { - return ; - } - return ( -
- ); -} diff --git a/frontend/src/contexts/confirm-dialog.context.tsx b/frontend/src/contexts/confirm-dialog.context.tsx index e1d452100..e5f7972e0 100644 --- a/frontend/src/contexts/confirm-dialog.context.tsx +++ b/frontend/src/contexts/confirm-dialog.context.tsx @@ -4,7 +4,7 @@ import React, { useContext, useState, } from "react"; -import { ConfirmationDialog } from "../components/overlays/dialogs/confirmation/ConfirmationDialog"; +import { ConfirmationDialog } from "../../../packages/ui/src/common/overlays/dialogs/confirmation/ConfirmationDialog"; export type ConfirmDialogContextState = { showDialog: (props: OpenConfirmDialogProps) => void; diff --git a/frontend/src/contexts/snapshots.context.tsx b/frontend/src/contexts/snapshots.context.tsx index 786ef262a..28ab0e53c 100644 --- a/frontend/src/contexts/snapshots.context.tsx +++ b/frontend/src/contexts/snapshots.context.tsx @@ -17,8 +17,8 @@ import { import { useErrorHandler } from "../hooks/use-error-handler"; import { useAnalytics } from "../hooks/use-analytics"; import { AnalyticEvent } from "../services/analytics.service"; -import { FlowUtils } from "../utils/flow-utils"; -import { SnapshotDialog } from "components/overlays/dialogs/snapshot/SnapshotDialog"; +import { FlowUtils } from "../../../packages/ui/src/utils/flow-utils"; +import { SnapshotDialog } from "../../../packages/ui/src/common/overlays/dialogs/snapshot/SnapshotDialog"; import { useProjectManager } from "./projects.context"; export type SnapshotsManager = { diff --git a/frontend/src/hooks/use-api.ts b/frontend/src/hooks/use-api.ts index 0ea622ecf..0bb709d87 100644 --- a/frontend/src/hooks/use-api.ts +++ b/frontend/src/hooks/use-api.ts @@ -47,7 +47,7 @@ import { } from "contexts/timeout-polling.context"; import { useEffect, useState } from "react"; import { useCurrentProjectId } from "./use-current-project-id"; -import { InteractionDefinition } from "../modules/interactions/core/core-types"; +import { InteractionDefinition } from "../../../packages/ui/src/interactions/core/core-types"; const { projectsService, @@ -167,14 +167,14 @@ export function useGetBlock(blockId: string) { ); } -export function useGetPollingEvents(): TimeoutPollingHook { +export function useGetEvents(): TimeoutPollingHook { return useProjectTimeoutPolling({ resourceKey: "/events/polling", fetcher: ({ timestamp }) => eventsService.getAllWithPolling({ timestamp }), }); } -export function useGetPollingEventsByTransaction( +export function useGetEventsByTransactionId( transactionId: string ): TimeoutPollingHook { return useTimeoutPolling({ @@ -195,27 +195,6 @@ export function useGetPollingOutputs(): TimeoutPollingHook }); } -export function useGetPollingLogsByProcess( - processId: string -): TimeoutPollingHook { - return useTimeoutPolling({ - resourceKey: `/processes/${processId}/outputs/polling`, - fetcher: ({ timestamp }) => - processesService.getAllOutputsByProcessWithPolling({ - timestamp, - processId, - }), - }); -} - -export function useGetPollingProcesses(): TimeoutPollingHook { - return useTimeoutPolling({ - resourceKey: `/processes`, - fetcher: ({ timestamp }) => - processesService.getAllProcessesWithPolling({ timestamp }), - }); -} - export function useGetTransactionsByBlock( blockId: string, options?: { @@ -279,47 +258,6 @@ export function useGetProjectRequirements() { ); } -export function useGatewayStatus(): { - isInitialLoad: boolean; - error: FlowserError | undefined; -} { - const [error, setError] = useState(); - const [isInitialLoad, setIsInitialLoad] = useState(true); - const { data } = useGetPollingProjectStatus(); - - useEffect(() => { - if (isInitialLoad) { - setIsInitialLoad(data?.totalBlocksToProcess !== 0); - } - }, [data]); - - useEffect(() => { - if (data?.flowApiStatus === ServiceStatus.SERVICE_STATUS_OFFLINE) { - setError({ - name: "Service Unreachable", - message: "Flow API offline", - description: - "Can't reach Flow access node. Make sure Flow emulator is running without errors.", - }); - } else { - setError(undefined); - } - }, [data]); - - return { - error, - isInitialLoad, - }; -} - -export function useGetPollingProjectStatus() { - return useQuery( - `/projects/status`, - () => projectsService.getStatus(), - { refetchInterval: 1000 } - ); -} - export function useGetPollingFlowInteractionTemplates() { return useQuery( `/projects/templates`, @@ -344,12 +282,6 @@ export function useGetAllProjects() { }); } -export function useGetFlowserVersion() { - return useQuery("/version", () => - commonService.getFlowserVersion() - ); -} - export function useGetParsedInteraction(request: InteractionDefinition) { // We are not using `sourceCode` as the cache key, // to avoid the flickering UI effect that's caused diff --git a/frontend/src/modules/accounts/AccountName/AccountName.tsx b/frontend/src/modules/accounts/AccountName/AccountName.tsx deleted file mode 100644 index 61ab51d52..000000000 --- a/frontend/src/modules/accounts/AccountName/AccountName.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import React, { ReactElement } from "react"; -import { CommonUtils } from "utils/common-utils"; - -type AccountNameProps = { - address: string; - shorten?: boolean; - className?: string; -}; - -export function AccountName(props: AccountNameProps): ReactElement { - const { address, shorten, className } = props; - return ( -
- {shorten ? CommonUtils.shorten(address, 6) : address} -
- ); -} diff --git a/frontend/src/modules/transactions/TransactionDetails/TransactionDetails.module.scss b/frontend/src/modules/transactions/TransactionDetails/TransactionDetails.module.scss deleted file mode 100644 index 6e06bf52a..000000000 --- a/frontend/src/modules/transactions/TransactionDetails/TransactionDetails.module.scss +++ /dev/null @@ -1,7 +0,0 @@ -@import "styles/spacings"; -@import "styles/animations"; - -.root { - display: flex; - flex-direction: column; -} diff --git a/frontend/src/styles/spacings.ts b/frontend/src/styles/spacings.ts deleted file mode 100644 index 9e81a6173..000000000 --- a/frontend/src/styles/spacings.ts +++ /dev/null @@ -1,7 +0,0 @@ -// Keep in sync with spacings.scss -export const spacings = { - s: 6, - base: 12, - l: 16, - xl: 50, -}; diff --git a/frontend/src/targets/electron/components/loaders/ExitLoader.tsx b/frontend/src/targets/electron/components/loaders/ExitLoader.tsx index 450fc6e19..24ee446dc 100644 --- a/frontend/src/targets/electron/components/loaders/ExitLoader.tsx +++ b/frontend/src/targets/electron/components/loaders/ExitLoader.tsx @@ -1,4 +1,4 @@ -import { Spinner } from "components/loaders/Spinner/Spinner"; +import { Spinner } from "../../../../../../packages/ui/src/common/loaders/Spinner/Spinner"; import React, { ReactElement } from "react"; import classes from "./Loader.module.scss"; diff --git a/frontend/src/targets/electron/components/loaders/Loader.module.scss b/frontend/src/targets/electron/components/loaders/Loader.module.scss index f851a05ad..f95671c6a 100644 --- a/frontend/src/targets/electron/components/loaders/Loader.module.scss +++ b/frontend/src/targets/electron/components/loaders/Loader.module.scss @@ -1,7 +1,7 @@ -@import "styles/colors"; -@import "styles/spacings"; -@import 'styles/animations'; -@import "styles/typography"; +@import "../../../../../../packages/ui/src/styles/colors"; +@import "../../../../../../packages/ui/src/styles/spacings"; +@import '../../../../../../packages/ui/src/styles/animations'; +@import "../../../../../../packages/ui/src/styles/typography"; .background { @include fadeInAnimation(0.4s); diff --git a/frontend/src/targets/electron/components/loaders/UpdateLoader.tsx b/frontend/src/targets/electron/components/loaders/UpdateLoader.tsx index 72c07208d..44fa11238 100644 --- a/frontend/src/targets/electron/components/loaders/UpdateLoader.tsx +++ b/frontend/src/targets/electron/components/loaders/UpdateLoader.tsx @@ -1,4 +1,4 @@ -import { Spinner } from "components/loaders/Spinner/Spinner"; +import { Spinner } from "../../../../../../packages/ui/src/common/loaders/Spinner/Spinner"; import React, { ReactElement } from "react"; import classes from "./Loader.module.scss"; diff --git a/frontend/src/utils/text-utils.ts b/frontend/src/utils/text-utils.ts deleted file mode 100644 index 07ed49428..000000000 --- a/frontend/src/utils/text-utils.ts +++ /dev/null @@ -1,46 +0,0 @@ -import dateFormat from "dateformat"; -import { isToday, isThisMonth, isThisYear } from "date-fns"; -import { ManagedProcessOutput } from "@flowser/shared"; -import AnsiHtmlConvert from "ansi-to-html"; - -export class TextUtils { - static readableNumber(value: number): string { - const formatter = Intl.NumberFormat("en", { - notation: "compact", - compactDisplay: "short", - }); - return formatter.format(value); - } - - static shortDate(value: string): string { - const date = new Date(value); - if (isToday(date)) { - return dateFormat(value, "hh:MM:ss"); - } - if (isThisMonth(date)) { - return dateFormat(value, "dS hh:MM"); - } - if (isThisYear(date)) { - return dateFormat(value, "dS mmm"); - } - return dateFormat(value, "dS mmm yyyy"); - } - - static longDate(value: string): string { - return dateFormat(value, "dS mmm yyyy, hh:MM:ss"); - } - - static formatProcessOutput(log: ManagedProcessOutput): string { - const convert = new AnsiHtmlConvert({ - // See default colors used: - // https://github.com/rburns/ansi-to-html/blob/master/lib/ansi_to_html.js#L12 - colors: { - 4: "#9bdefa", - }, - }); - // The msg field in logs can contain escaped ansi codes - // We need to unescape them so that they can be parsed by ansi-to-html lib - const unescaped = log.data.replace(/\\x1b/g, "\x1b"); - return convert.toHtml(unescaped); - } -} diff --git a/packages/ui/package.json b/packages/ui/package.json new file mode 100644 index 000000000..18fdadbc6 --- /dev/null +++ b/packages/ui/package.json @@ -0,0 +1,38 @@ +{ + "name": "@onflowser/ui", + "version": "0.0.0", + "main": "./dist/flowser.umd.js", + "files": ["./dist/*"], + "types": "./dist/flowser", + "scripts": { + "build": "vite build" + }, + "devDependencies": { + "@onflowser/config": "*", + "@types/react": "^17.0.67", + "@types/react-dom": "^17.0.21", + "sass": "^1.69.0", + "typescript": "^4.9.5", + "vite-plugin-svgr": "^4.1.0" + }, + "dependencies": { + "@codemirror/legacy-modes": "^6.1.0", + "@onflowser/api": "*", + "@tanstack/react-table": "^8.5.11", + "@uidotdev/usehooks": "^2.3.1", + "@uiw/codemirror-extensions-basic-setup": "^4.12.4", + "@uiw/codemirror-theme-github": "^4.12.4", + "@uiw/react-codemirror": "^4.12.4", + "ansi-to-html": "^0.7.2", + "classnames": "^2.3.2", + "copy-to-clipboard": "^3.3.3", + "date-fns": "^2.30.0", + "dateformat": "^5.0.3", + "react": "^18.0.0", + "react-hot-toast": "^2.4.1", + "react-icons": "^4.11.0", + "react-json-view": "^1.21.3", + "react-router-dom": "6.15.0", + "react-timeago": "^7.2.0" + } +} diff --git a/frontend/src/modules/accounts/AccountAvatar/AccountAvatar.tsx b/packages/ui/src/accounts/AccountAvatar/AccountAvatar.tsx similarity index 50% rename from frontend/src/modules/accounts/AccountAvatar/AccountAvatar.tsx rename to packages/ui/src/accounts/AccountAvatar/AccountAvatar.tsx index 82c80a2f5..e2dd63b3e 100644 --- a/frontend/src/modules/accounts/AccountAvatar/AccountAvatar.tsx +++ b/packages/ui/src/accounts/AccountAvatar/AccountAvatar.tsx @@ -1,25 +1,25 @@ import React, { ReactElement, useMemo } from "react"; -import service from "../../../assets/images/avatars/service.png"; +import service from "./avatars/service.png"; -import avatar1 from "../../../assets/images/avatars/1.jpg"; -import avatar2 from "../../../assets/images/avatars/2.jpg"; -import avatar3 from "../../../assets/images/avatars/3.jpg"; -import avatar4 from "../../../assets/images/avatars/4.jpg"; -import avatar5 from "../../../assets/images/avatars/5.jpg"; -import avatar6 from "../../../assets/images/avatars/6.jpg"; -import avatar7 from "../../../assets/images/avatars/7.jpg"; -import avatar8 from "../../../assets/images/avatars/8.jpg"; -import avatar9 from "../../../assets/images/avatars/9.jpg"; -import avatar10 from "../../../assets/images/avatars/10.jpg"; -import avatar11 from "../../../assets/images/avatars/11.jpg"; -import avatar12 from "../../../assets/images/avatars/12.jpg"; -import avatar13 from "../../../assets/images/avatars/13.jpg"; -import avatar14 from "../../../assets/images/avatars/14.jpg"; -import avatar15 from "../../../assets/images/avatars/15.jpg"; -import avatar16 from "../../../assets/images/avatars/16.jpg"; -import { useGetAddressIndex } from "../../../hooks/use-api"; -import { Spinner } from "../../../components/loaders/Spinner/Spinner"; +import avatar1 from "./avatars/1.jpg"; +import avatar2 from "./avatars/2.jpg"; +import avatar3 from "./avatars/3.jpg"; +import avatar4 from "./avatars/4.jpg"; +import avatar5 from "./avatars/5.jpg"; +import avatar6 from "./avatars/6.jpg"; +import avatar7 from "./avatars/7.jpg"; +import avatar8 from "./avatars/8.jpg"; +import avatar9 from "./avatars/9.jpg"; +import avatar10 from "./avatars/10.jpg"; +import avatar11 from "./avatars/11.jpg"; +import avatar12 from "./avatars/12.jpg"; +import avatar13 from "./avatars/13.jpg"; +import avatar14 from "./avatars/14.jpg"; +import avatar15 from "./avatars/15.jpg"; +import avatar16 from "./avatars/16.jpg"; +import { useGetAddressIndex } from "../../../../../frontend/src/hooks/use-api"; +import { Spinner } from "../../common/loaders/Spinner/Spinner"; const avatarUrls = [ avatar1, diff --git a/frontend/src/assets/images/avatars/1.jpg b/packages/ui/src/accounts/AccountAvatar/avatars/1.jpg similarity index 100% rename from frontend/src/assets/images/avatars/1.jpg rename to packages/ui/src/accounts/AccountAvatar/avatars/1.jpg diff --git a/frontend/src/assets/images/avatars/10.jpg b/packages/ui/src/accounts/AccountAvatar/avatars/10.jpg similarity index 100% rename from frontend/src/assets/images/avatars/10.jpg rename to packages/ui/src/accounts/AccountAvatar/avatars/10.jpg diff --git a/frontend/src/assets/images/avatars/11.jpg b/packages/ui/src/accounts/AccountAvatar/avatars/11.jpg similarity index 100% rename from frontend/src/assets/images/avatars/11.jpg rename to packages/ui/src/accounts/AccountAvatar/avatars/11.jpg diff --git a/frontend/src/assets/images/avatars/12.jpg b/packages/ui/src/accounts/AccountAvatar/avatars/12.jpg similarity index 100% rename from frontend/src/assets/images/avatars/12.jpg rename to packages/ui/src/accounts/AccountAvatar/avatars/12.jpg diff --git a/frontend/src/assets/images/avatars/13.jpg b/packages/ui/src/accounts/AccountAvatar/avatars/13.jpg similarity index 100% rename from frontend/src/assets/images/avatars/13.jpg rename to packages/ui/src/accounts/AccountAvatar/avatars/13.jpg diff --git a/frontend/src/assets/images/avatars/14.jpg b/packages/ui/src/accounts/AccountAvatar/avatars/14.jpg similarity index 100% rename from frontend/src/assets/images/avatars/14.jpg rename to packages/ui/src/accounts/AccountAvatar/avatars/14.jpg diff --git a/frontend/src/assets/images/avatars/15.jpg b/packages/ui/src/accounts/AccountAvatar/avatars/15.jpg similarity index 100% rename from frontend/src/assets/images/avatars/15.jpg rename to packages/ui/src/accounts/AccountAvatar/avatars/15.jpg diff --git a/frontend/src/assets/images/avatars/16.jpg b/packages/ui/src/accounts/AccountAvatar/avatars/16.jpg similarity index 100% rename from frontend/src/assets/images/avatars/16.jpg rename to packages/ui/src/accounts/AccountAvatar/avatars/16.jpg diff --git a/frontend/src/assets/images/avatars/2.jpg b/packages/ui/src/accounts/AccountAvatar/avatars/2.jpg similarity index 100% rename from frontend/src/assets/images/avatars/2.jpg rename to packages/ui/src/accounts/AccountAvatar/avatars/2.jpg diff --git a/frontend/src/assets/images/avatars/3.jpg b/packages/ui/src/accounts/AccountAvatar/avatars/3.jpg similarity index 100% rename from frontend/src/assets/images/avatars/3.jpg rename to packages/ui/src/accounts/AccountAvatar/avatars/3.jpg diff --git a/frontend/src/assets/images/avatars/4.jpg b/packages/ui/src/accounts/AccountAvatar/avatars/4.jpg similarity index 100% rename from frontend/src/assets/images/avatars/4.jpg rename to packages/ui/src/accounts/AccountAvatar/avatars/4.jpg diff --git a/frontend/src/assets/images/avatars/5.jpg b/packages/ui/src/accounts/AccountAvatar/avatars/5.jpg similarity index 100% rename from frontend/src/assets/images/avatars/5.jpg rename to packages/ui/src/accounts/AccountAvatar/avatars/5.jpg diff --git a/frontend/src/assets/images/avatars/6.jpg b/packages/ui/src/accounts/AccountAvatar/avatars/6.jpg similarity index 100% rename from frontend/src/assets/images/avatars/6.jpg rename to packages/ui/src/accounts/AccountAvatar/avatars/6.jpg diff --git a/frontend/src/assets/images/avatars/7.jpg b/packages/ui/src/accounts/AccountAvatar/avatars/7.jpg similarity index 100% rename from frontend/src/assets/images/avatars/7.jpg rename to packages/ui/src/accounts/AccountAvatar/avatars/7.jpg diff --git a/frontend/src/assets/images/avatars/8.jpg b/packages/ui/src/accounts/AccountAvatar/avatars/8.jpg similarity index 100% rename from frontend/src/assets/images/avatars/8.jpg rename to packages/ui/src/accounts/AccountAvatar/avatars/8.jpg diff --git a/frontend/src/assets/images/avatars/9.jpg b/packages/ui/src/accounts/AccountAvatar/avatars/9.jpg similarity index 100% rename from frontend/src/assets/images/avatars/9.jpg rename to packages/ui/src/accounts/AccountAvatar/avatars/9.jpg diff --git a/frontend/src/assets/images/avatars/README.md b/packages/ui/src/accounts/AccountAvatar/avatars/README.md similarity index 100% rename from frontend/src/assets/images/avatars/README.md rename to packages/ui/src/accounts/AccountAvatar/avatars/README.md diff --git a/frontend/src/assets/images/avatars/service.png b/packages/ui/src/accounts/AccountAvatar/avatars/service.png similarity index 100% rename from frontend/src/assets/images/avatars/service.png rename to packages/ui/src/accounts/AccountAvatar/avatars/service.png diff --git a/frontend/src/modules/accounts/AccountDetails/AccountDetails.module.scss b/packages/ui/src/accounts/AccountDetails/AccountDetails.module.scss similarity index 67% rename from frontend/src/modules/accounts/AccountDetails/AccountDetails.module.scss rename to packages/ui/src/accounts/AccountDetails/AccountDetails.module.scss index 5a20d6420..a827147f2 100644 --- a/frontend/src/modules/accounts/AccountDetails/AccountDetails.module.scss +++ b/packages/ui/src/accounts/AccountDetails/AccountDetails.module.scss @@ -1,6 +1,6 @@ -@import "styles/spacings"; -@import "styles/colors"; -@import "styles/typography"; +@import "../../styles/spacings"; +@import "../../styles/colors"; +@import "../../styles/typography"; .root { display: flex; diff --git a/frontend/src/modules/accounts/AccountDetails/AccountDetails.tsx b/packages/ui/src/accounts/AccountDetails/AccountDetails.tsx similarity index 83% rename from frontend/src/modules/accounts/AccountDetails/AccountDetails.tsx rename to packages/ui/src/accounts/AccountDetails/AccountDetails.tsx index 7de2d896c..5c4473ef2 100644 --- a/frontend/src/modules/accounts/AccountDetails/AccountDetails.tsx +++ b/packages/ui/src/accounts/AccountDetails/AccountDetails.tsx @@ -1,27 +1,27 @@ import React, { FunctionComponent } from "react"; import classes from "./AccountDetails.module.scss"; -import FullScreenLoading from "../../../components/loaders/FullScreenLoading/FullScreenLoading"; +import FullScreenLoading from "../../common/loaders/FullScreenLoading/FullScreenLoading"; import { useGetAccount, useGetPollingContractsByAccount, useGetPollingKeysByAccount, useGetPollingTransactionsByAccount, -} from "../../../hooks/use-api"; +} from "../../../../../frontend/src/hooks/use-api"; import { DetailsCard, DetailsCardColumn, -} from "components/cards/DetailsCard/DetailsCard"; -import { SizedBox } from "../../../components/misc/SizedBox/SizedBox"; +} from "../../common/cards/DetailsCard/DetailsCard"; +import { SizedBox } from "../../common/misc/SizedBox/SizedBox"; import { AccountAvatar } from "../AccountAvatar/AccountAvatar"; import { AccountName } from "../AccountName/AccountName"; -import { StyledTabs } from "../../../components/tabs/StyledTabs/StyledTabs"; +import { StyledTabs } from "../../common/tabs/StyledTabs/StyledTabs"; import { AccountStorage } from "../AccountStorage/AccountStorage"; import { TransactionsTable } from "../../transactions/TransactionsTable/TransactionsTable"; import { ContractsTable } from "../../contracts/ContractsTable/ContractsTable"; import { AccountKeysTable } from "../AccountKeysTable/AccountKeysTable"; -import { CadenceEditor } from "../../../components/code/CadenceEditor/CadenceEditor"; -import { BaseTabItem } from "../../../components/tabs/BaseTabs/BaseTabs"; -import { DateDisplay } from "../../../components/time/DateDisplay/DateDisplay"; +import { CadenceEditor } from "../../common/code/CadenceEditor/CadenceEditor"; +import { BaseTabItem } from "../../common/tabs/BaseTabs/BaseTabs"; +import { DateDisplay } from "../../common/time/DateDisplay/DateDisplay"; type AccountDetailsProps = { accountId: string; diff --git a/frontend/src/modules/accounts/AccountKeysTable/AccountKeysTable.module.scss b/packages/ui/src/accounts/AccountKeysTable/AccountKeysTable.module.scss similarity index 77% rename from frontend/src/modules/accounts/AccountKeysTable/AccountKeysTable.module.scss rename to packages/ui/src/accounts/AccountKeysTable/AccountKeysTable.module.scss index 255c50e61..a35d47e06 100644 --- a/frontend/src/modules/accounts/AccountKeysTable/AccountKeysTable.module.scss +++ b/packages/ui/src/accounts/AccountKeysTable/AccountKeysTable.module.scss @@ -1,6 +1,6 @@ -@import "styles/spacings"; -@import "styles/colors"; -@import "styles/typography"; +@import "../../styles/spacings"; +@import "../../styles/colors"; +@import "../../styles/typography"; .cellRoot { display: flex; diff --git a/frontend/src/modules/accounts/AccountKeysTable/AccountKeysTable.tsx b/packages/ui/src/accounts/AccountKeysTable/AccountKeysTable.tsx similarity index 79% rename from frontend/src/modules/accounts/AccountKeysTable/AccountKeysTable.tsx rename to packages/ui/src/accounts/AccountKeysTable/AccountKeysTable.tsx index 434d43800..9ec48473b 100644 --- a/frontend/src/modules/accounts/AccountKeysTable/AccountKeysTable.tsx +++ b/packages/ui/src/accounts/AccountKeysTable/AccountKeysTable.tsx @@ -1,14 +1,14 @@ import { createColumnHelper } from "@tanstack/table-core"; -import { DecoratedPollingEntity } from "../../../contexts/timeout-polling.context"; +import { DecoratedPollingEntity } from "../../../../../frontend/src/contexts/timeout-polling.context"; import { AccountKey } from "@flowser/shared"; -import Label from "../../../components/misc/Label/Label"; +import Label from "../../common/misc/Label/Label"; import classes from "./AccountKeysTable.module.scss"; -import { MiddleEllipsis } from "../../../components/ellipsis/MiddleEllipsis"; -import CopyButton from "../../../components/buttons/CopyButton/CopyButton"; -import { BaseBadge } from "../../../components/misc/BaseBadge/BaseBadge"; -import { FlowUtils } from "../../../utils/flow-utils"; +import { MiddleEllipsis } from "../../common/ellipsis/MiddleEllipsis"; +import CopyButton from "../../common/buttons/CopyButton/CopyButton"; +import { BaseBadge } from "../../common/misc/BaseBadge/BaseBadge"; +import { FlowUtils } from "../../utils/flow-utils"; import React, { ReactElement } from "react"; -import { BaseTable } from "../../../components/misc/BaseTable/BaseTable"; +import { BaseTable } from "../../common/misc/BaseTable/BaseTable"; const columnsHelper = createColumnHelper>(); diff --git a/frontend/src/modules/accounts/AccountLink/AccountLink.module.scss b/packages/ui/src/accounts/AccountLink/AccountLink.module.scss similarity index 54% rename from frontend/src/modules/accounts/AccountLink/AccountLink.module.scss rename to packages/ui/src/accounts/AccountLink/AccountLink.module.scss index f72612e96..bb13ee79c 100644 --- a/frontend/src/modules/accounts/AccountLink/AccountLink.module.scss +++ b/packages/ui/src/accounts/AccountLink/AccountLink.module.scss @@ -1,5 +1,5 @@ -@import "styles/colors"; -@import "styles/spacings"; +@import "../../styles/colors"; +@import "../../styles/spacings"; .root { display: flex; diff --git a/frontend/src/modules/accounts/AccountLink/AccountLink.tsx b/packages/ui/src/accounts/AccountLink/AccountLink.tsx similarity index 89% rename from frontend/src/modules/accounts/AccountLink/AccountLink.tsx rename to packages/ui/src/accounts/AccountLink/AccountLink.tsx index 858942fc8..4e9a1496b 100644 --- a/frontend/src/modules/accounts/AccountLink/AccountLink.tsx +++ b/packages/ui/src/accounts/AccountLink/AccountLink.tsx @@ -3,7 +3,7 @@ import { NavLink } from "react-router-dom"; import { AccountAvatar } from "../AccountAvatar/AccountAvatar"; import { AccountName } from "../AccountName/AccountName"; import classes from "./AccountLink.module.scss"; -import { ProjectLink } from "../../../components/links/ProjectLink"; +import { ProjectLink } from "../../common/links/ProjectLink"; type AccountLinkProps = { address: string; diff --git a/packages/ui/src/accounts/AccountName/AccountName.tsx b/packages/ui/src/accounts/AccountName/AccountName.tsx new file mode 100644 index 000000000..400c7266c --- /dev/null +++ b/packages/ui/src/accounts/AccountName/AccountName.tsx @@ -0,0 +1,15 @@ +import React, { ReactElement } from "react"; +import { shortenText } from "../../utils/misc"; + +type AccountNameProps = { + address: string; + short?: boolean; + className?: string; +}; + +export function AccountName(props: AccountNameProps): ReactElement { + const { address, short, className } = props; + return ( +
{short ? shortenText(address, 6) : address}
+ ); +} diff --git a/frontend/src/modules/accounts/AccountStorage/AccountStorage.module.scss b/packages/ui/src/accounts/AccountStorage/AccountStorage.module.scss similarity index 100% rename from frontend/src/modules/accounts/AccountStorage/AccountStorage.module.scss rename to packages/ui/src/accounts/AccountStorage/AccountStorage.module.scss diff --git a/frontend/src/modules/accounts/AccountStorage/AccountStorage.tsx b/packages/ui/src/accounts/AccountStorage/AccountStorage.tsx similarity index 87% rename from frontend/src/modules/accounts/AccountStorage/AccountStorage.tsx rename to packages/ui/src/accounts/AccountStorage/AccountStorage.tsx index bfc2d891f..b9f8cfad7 100644 --- a/frontend/src/modules/accounts/AccountStorage/AccountStorage.tsx +++ b/packages/ui/src/accounts/AccountStorage/AccountStorage.tsx @@ -1,15 +1,15 @@ import { Account, AccountStorageDomain } from "@flowser/shared"; -import { useAnalytics } from "../../../hooks/use-analytics"; -import { useUrlQuery } from "../../../hooks/use-url-query"; -import { useGetPollingStorageByAccount } from "../../../hooks/use-api"; +import { useAnalytics } from "../../../../../frontend/src/hooks/use-analytics"; +import { useUrlQuery } from "../../../../../frontend/src/hooks/use-url-query"; +import { useGetPollingStorageByAccount } from "../../../../../frontend/src/hooks/use-api"; import React, { ReactElement, useEffect, useState } from "react"; -import { AnalyticEvent } from "../../../services/analytics.service"; +import { AnalyticEvent } from "../../../../../frontend/src/services/analytics.service"; import { PublicPrivateStorageCard } from "../PublicPrivateStorageCard/PublicPrivateStorageCard"; -import { enableDetailsIntroAnimation } from "../../../config/common"; +import { enableDetailsIntroAnimation } from "../../../../../frontend/src/config/common"; import { InternalStorageCard } from "../InternalStorageCard/InternalStorageCard"; import classNames from "classnames"; import classes from "./AccountStorage.module.scss"; -import { scrollableElementId } from "../../../components/layouts/ProjectLayout/ProjectLayout"; +import { scrollableElementId } from "../../common/layouts/ProjectLayout/ProjectLayout"; type AccountStorageProps = { account: Account; diff --git a/frontend/src/modules/accounts/AccountsTable/AccountsTable.module.scss b/packages/ui/src/accounts/AccountsTable/AccountsTable.module.scss similarity index 66% rename from frontend/src/modules/accounts/AccountsTable/AccountsTable.module.scss rename to packages/ui/src/accounts/AccountsTable/AccountsTable.module.scss index bdc0c6db5..e942cecc0 100644 --- a/frontend/src/modules/accounts/AccountsTable/AccountsTable.module.scss +++ b/packages/ui/src/accounts/AccountsTable/AccountsTable.module.scss @@ -1,5 +1,5 @@ -@import "styles/spacings"; -@import "styles/colors"; +@import "../../styles/spacings"; +@import "../../styles/colors"; .tagsColumn { display: flex; diff --git a/frontend/src/modules/accounts/AccountsTable/AccountsTable.tsx b/packages/ui/src/accounts/AccountsTable/AccountsTable.tsx similarity index 79% rename from frontend/src/modules/accounts/AccountsTable/AccountsTable.tsx rename to packages/ui/src/accounts/AccountsTable/AccountsTable.tsx index 2edd18093..319a431cd 100644 --- a/frontend/src/modules/accounts/AccountsTable/AccountsTable.tsx +++ b/packages/ui/src/accounts/AccountsTable/AccountsTable.tsx @@ -1,16 +1,16 @@ import React, { FunctionComponent } from "react"; -import Label from "../../../components/misc/Label/Label"; -import Value from "../../../components/misc/Value/Value"; -import { BaseTable } from "../../../components/misc/BaseTable/BaseTable"; +import Label from "../../common/misc/Label/Label"; +import Value from "../../common/misc/Value/Value"; +import { BaseTable } from "../../common/misc/BaseTable/BaseTable"; import { createColumnHelper } from "@tanstack/react-table"; import { Account } from "@flowser/shared"; -import { TextUtils } from "../../../utils/text-utils"; -import { DecoratedPollingEntity } from "contexts/timeout-polling.context"; +import { TextUtils } from "../../utils/text-utils"; +import { DecoratedPollingEntity } from "frontend/src/contexts/timeout-polling.context"; import { AccountLink } from "../AccountLink/AccountLink"; -import { BaseBadge } from "../../../components/misc/BaseBadge/BaseBadge"; +import { BaseBadge } from "../../common/misc/BaseBadge/BaseBadge"; import classes from "./AccountsTable.module.scss"; -import { Tooltip } from "../../../components/overlays/Tooltip/Tooltip"; -import { TimeAgo } from "../../../components/time/TimeAgo/TimeAgo"; +import { Tooltip } from "../../common/overlays/Tooltip/Tooltip"; +import { TimeAgo } from "../../common/time/TimeAgo/TimeAgo"; const columnHelper = createColumnHelper>(); diff --git a/frontend/src/modules/accounts/InternalStorageCard/InternalStorageCard.module.scss b/packages/ui/src/accounts/InternalStorageCard/InternalStorageCard.module.scss similarity index 91% rename from frontend/src/modules/accounts/InternalStorageCard/InternalStorageCard.module.scss rename to packages/ui/src/accounts/InternalStorageCard/InternalStorageCard.module.scss index 9742b5083..a5eab9370 100644 --- a/frontend/src/modules/accounts/InternalStorageCard/InternalStorageCard.module.scss +++ b/packages/ui/src/accounts/InternalStorageCard/InternalStorageCard.module.scss @@ -1,7 +1,7 @@ -@import "styles/spacings"; -@import "styles/colors"; -@import "styles/typography"; -@import "styles/animations"; +@import "../../styles/spacings"; +@import "../../styles/colors"; +@import "../../styles/typography"; +@import "../../styles/animations"; .root { display: flex; diff --git a/frontend/src/modules/accounts/InternalStorageCard/InternalStorageCard.tsx b/packages/ui/src/accounts/InternalStorageCard/InternalStorageCard.tsx similarity index 85% rename from frontend/src/modules/accounts/InternalStorageCard/InternalStorageCard.tsx rename to packages/ui/src/accounts/InternalStorageCard/InternalStorageCard.tsx index 056c916ad..5cb54a767 100644 --- a/frontend/src/modules/accounts/InternalStorageCard/InternalStorageCard.tsx +++ b/packages/ui/src/accounts/InternalStorageCard/InternalStorageCard.tsx @@ -1,11 +1,11 @@ import React, { ReactElement } from "react"; import classes from "./InternalStorageCard.module.scss"; import { AccountStorageItem } from "@flowser/shared"; -import { FlowUtils } from "utils/flow-utils"; +import { FlowUtils } from "frontend/src/utils/flow-utils"; import classNames from "classnames"; -import { SimpleButton } from "../../../components/buttons/SimpleButton/SimpleButton"; -import { DecoratedPollingEntity } from "contexts/timeout-polling.context"; -import { JsonView } from "../../../components/code/JsonView/JsonView"; +import { SimpleButton } from "../../common/buttons/SimpleButton/SimpleButton"; +import { DecoratedPollingEntity } from "frontend/src/contexts/timeout-polling.context"; +import { JsonView } from "../../common/code/JsonView/JsonView"; import { StorageDataTypes } from "../StorageDataTypes/StorageDataTypes"; type ExtendableStorageCardProps = { diff --git a/frontend/src/modules/accounts/PublicPrivateStorageCard/PublicPrivateStorageCard.module.scss b/packages/ui/src/accounts/PublicPrivateStorageCard/PublicPrivateStorageCard.module.scss similarity index 89% rename from frontend/src/modules/accounts/PublicPrivateStorageCard/PublicPrivateStorageCard.module.scss rename to packages/ui/src/accounts/PublicPrivateStorageCard/PublicPrivateStorageCard.module.scss index b0a5281b3..1af119c1f 100644 --- a/frontend/src/modules/accounts/PublicPrivateStorageCard/PublicPrivateStorageCard.module.scss +++ b/packages/ui/src/accounts/PublicPrivateStorageCard/PublicPrivateStorageCard.module.scss @@ -1,7 +1,7 @@ -@import "styles/spacings"; -@import "styles/colors"; -@import "styles/typography"; -@import "styles/animations"; +@import "../../styles/spacings"; +@import "../../styles/colors"; +@import "../../styles/typography"; +@import "../../styles/animations"; .root { display: flex; diff --git a/frontend/src/modules/accounts/PublicPrivateStorageCard/PublicPrivateStorageCard.tsx b/packages/ui/src/accounts/PublicPrivateStorageCard/PublicPrivateStorageCard.tsx similarity index 87% rename from frontend/src/modules/accounts/PublicPrivateStorageCard/PublicPrivateStorageCard.tsx rename to packages/ui/src/accounts/PublicPrivateStorageCard/PublicPrivateStorageCard.tsx index 144d057c4..2199904f1 100644 --- a/frontend/src/modules/accounts/PublicPrivateStorageCard/PublicPrivateStorageCard.tsx +++ b/packages/ui/src/accounts/PublicPrivateStorageCard/PublicPrivateStorageCard.tsx @@ -1,12 +1,12 @@ import React, { ReactElement } from "react"; import classes from "./PublicPrivateStorageCard.module.scss"; import { StorageDomainBadge } from "../StorageDomainBadge/StorageDomainBadge"; -import { ReactComponent as LinkIcon } from "../../../assets/icons/link.svg"; +import { ReactComponent as LinkIcon } from "../../common/icons/assets/link.svg"; import { AccountStorageItem } from "@flowser/shared/dist/src/generated/entities/accounts"; -import { DecoratedPollingEntity } from "contexts/timeout-polling.context"; -import gradient from "../../../assets/images/gradient.png"; +import { DecoratedPollingEntity } from "frontend/src/contexts/timeout-polling.context"; +import gradient from "../../../../../frontend/src/assets/images/gradient.png"; import classNames from "classnames"; -import { ProjectLink } from "../../../components/links/ProjectLink"; +import { ProjectLink } from "../../common/links/ProjectLink"; type StorageCardProps = { currentAccountAddress: string; diff --git a/frontend/src/modules/accounts/StorageDataTypes/StorageDataTypes.module.scss b/packages/ui/src/accounts/StorageDataTypes/StorageDataTypes.module.scss similarity index 83% rename from frontend/src/modules/accounts/StorageDataTypes/StorageDataTypes.module.scss rename to packages/ui/src/accounts/StorageDataTypes/StorageDataTypes.module.scss index 691f47a5d..12869eb2f 100644 --- a/frontend/src/modules/accounts/StorageDataTypes/StorageDataTypes.module.scss +++ b/packages/ui/src/accounts/StorageDataTypes/StorageDataTypes.module.scss @@ -1,5 +1,5 @@ -@import "styles/spacings"; -@import "styles/colors"; +@import "../../styles/spacings"; +@import "../../styles/colors"; .root { display: flex; diff --git a/frontend/src/modules/accounts/StorageDataTypes/StorageDataTypes.tsx b/packages/ui/src/accounts/StorageDataTypes/StorageDataTypes.tsx similarity index 95% rename from frontend/src/modules/accounts/StorageDataTypes/StorageDataTypes.tsx rename to packages/ui/src/accounts/StorageDataTypes/StorageDataTypes.tsx index 69add4146..a307f9645 100644 --- a/frontend/src/modules/accounts/StorageDataTypes/StorageDataTypes.tsx +++ b/packages/ui/src/accounts/StorageDataTypes/StorageDataTypes.tsx @@ -1,7 +1,7 @@ import { AccountStorageItem } from "@flowser/shared"; import React, { ReactElement } from "react"; import classes from "./StorageDataTypes.module.scss"; -import { BaseBadge } from "../../../components/misc/BaseBadge/BaseBadge"; +import { BaseBadge } from "../../common/misc/BaseBadge/BaseBadge"; type StorageDataTypesProps = { storageItem: AccountStorageItem; diff --git a/frontend/src/modules/accounts/StorageDomainBadge/StorageDomainBadge.module.scss b/packages/ui/src/accounts/StorageDomainBadge/StorageDomainBadge.module.scss similarity index 69% rename from frontend/src/modules/accounts/StorageDomainBadge/StorageDomainBadge.module.scss rename to packages/ui/src/accounts/StorageDomainBadge/StorageDomainBadge.module.scss index 27df870f3..87cc885c1 100644 --- a/frontend/src/modules/accounts/StorageDomainBadge/StorageDomainBadge.module.scss +++ b/packages/ui/src/accounts/StorageDomainBadge/StorageDomainBadge.module.scss @@ -1,6 +1,6 @@ -@import "styles/spacings"; -@import "styles/colors"; -@import "styles/typography"; +@import "../../styles/spacings"; +@import "../../styles/colors"; +@import "../../styles/typography"; .root { border-radius: 8px; diff --git a/frontend/src/modules/accounts/StorageDomainBadge/StorageDomainBadge.tsx b/packages/ui/src/accounts/StorageDomainBadge/StorageDomainBadge.tsx similarity index 88% rename from frontend/src/modules/accounts/StorageDomainBadge/StorageDomainBadge.tsx rename to packages/ui/src/accounts/StorageDomainBadge/StorageDomainBadge.tsx index 2189b0fee..7d8ac12bb 100644 --- a/frontend/src/modules/accounts/StorageDomainBadge/StorageDomainBadge.tsx +++ b/packages/ui/src/accounts/StorageDomainBadge/StorageDomainBadge.tsx @@ -1,7 +1,7 @@ import React, { ReactElement } from "react"; import classes from "./StorageDomainBadge.module.scss"; import { AccountStorageDomain } from "@flowser/shared"; -import { FlowUtils } from "../../../utils/flow-utils"; +import { FlowUtils } from "../../utils/flow-utils"; export type StorageBadgeProps = { pathDomain: AccountStorageDomain; diff --git a/frontend/src/modules/blocks/BlockDetails/BlockDetails.module.scss b/packages/ui/src/blocks/BlockDetails/BlockDetails.module.scss similarity index 62% rename from frontend/src/modules/blocks/BlockDetails/BlockDetails.module.scss rename to packages/ui/src/blocks/BlockDetails/BlockDetails.module.scss index 1ce8cf856..a2b01a553 100644 --- a/frontend/src/modules/blocks/BlockDetails/BlockDetails.module.scss +++ b/packages/ui/src/blocks/BlockDetails/BlockDetails.module.scss @@ -1,4 +1,4 @@ -@import "styles/spacings"; +@import "../../styles/spacings"; .root { display: flex; diff --git a/frontend/src/modules/blocks/BlockDetails/BlockDetails.tsx b/packages/ui/src/blocks/BlockDetails/BlockDetails.tsx similarity index 74% rename from frontend/src/modules/blocks/BlockDetails/BlockDetails.tsx rename to packages/ui/src/blocks/BlockDetails/BlockDetails.tsx index 42f1336e5..d192868b2 100644 --- a/frontend/src/modules/blocks/BlockDetails/BlockDetails.tsx +++ b/packages/ui/src/blocks/BlockDetails/BlockDetails.tsx @@ -1,17 +1,20 @@ import React, { FunctionComponent } from "react"; import classes from "./BlockDetails.module.scss"; -import FullScreenLoading from "../../../components/loaders/FullScreenLoading/FullScreenLoading"; -import { useGetBlock, useGetTransactionsByBlock } from "../../../hooks/use-api"; -import { FlowUtils } from "../../../utils/flow-utils"; +import FullScreenLoading from "../../common/loaders/FullScreenLoading/FullScreenLoading"; +import { + useGetBlock, + useGetTransactionsByBlock, +} from "../../../../../frontend/src/hooks/use-api"; +import { FlowUtils } from "../../utils/flow-utils"; import { DetailsCard, DetailsCardColumn, -} from "components/cards/DetailsCard/DetailsCard"; -import { SizedBox } from "../../../components/misc/SizedBox/SizedBox"; -import { StyledTabs } from "../../../components/tabs/StyledTabs/StyledTabs"; +} from "../../common/cards/DetailsCard/DetailsCard"; +import { SizedBox } from "../../common/misc/SizedBox/SizedBox"; +import { StyledTabs } from "../../common/tabs/StyledTabs/StyledTabs"; import { TransactionsTable } from "../../transactions/TransactionsTable/TransactionsTable"; -import { ProjectLink } from "../../../components/links/ProjectLink"; -import { DateDisplay } from "components/time/DateDisplay/DateDisplay"; +import { ProjectLink } from "../../common/links/ProjectLink"; +import { DateDisplay } from "../../common/time/DateDisplay/DateDisplay"; type BlockDetailsProps = { blockId: string; diff --git a/frontend/src/modules/blocks/BlocksTable/BlocksTable.module.scss b/packages/ui/src/blocks/BlocksTable/BlocksTable.module.scss similarity index 88% rename from frontend/src/modules/blocks/BlocksTable/BlocksTable.module.scss rename to packages/ui/src/blocks/BlocksTable/BlocksTable.module.scss index eff783eda..ae695e7db 100644 --- a/frontend/src/modules/blocks/BlocksTable/BlocksTable.module.scss +++ b/packages/ui/src/blocks/BlocksTable/BlocksTable.module.scss @@ -1,5 +1,5 @@ -@import 'styles/spacings'; -@import 'styles/animations'; +@import '../../styles/spacings'; +@import '../../styles/animations'; .card { display: flex; diff --git a/frontend/src/modules/blocks/BlocksTable/BlocksTable.tsx b/packages/ui/src/blocks/BlocksTable/BlocksTable.tsx similarity index 78% rename from frontend/src/modules/blocks/BlocksTable/BlocksTable.tsx rename to packages/ui/src/blocks/BlocksTable/BlocksTable.tsx index e295bf2eb..4c7dffe10 100644 --- a/frontend/src/modules/blocks/BlocksTable/BlocksTable.tsx +++ b/packages/ui/src/blocks/BlocksTable/BlocksTable.tsx @@ -1,14 +1,14 @@ import React, { FunctionComponent, useMemo } from "react"; -import Label from "../../../components/misc/Label/Label"; -import Value from "../../../components/misc/Value/Value"; +import Label from "../../common/misc/Label/Label"; +import Value from "../../common/misc/Value/Value"; import classes from "./BlocksTable.module.scss"; -import { MiddleEllipsis } from "../../../components/ellipsis/MiddleEllipsis"; +import { MiddleEllipsis } from "../../common/ellipsis/MiddleEllipsis"; import { createColumnHelper } from "@tanstack/table-core"; -import { BaseTable } from "../../../components/misc/BaseTable/BaseTable"; +import { BaseTable } from "../../common/misc/BaseTable/BaseTable"; import { Block } from "@flowser/shared"; -import { DecoratedPollingEntity } from "contexts/timeout-polling.context"; -import { ProjectLink } from "../../../components/links/ProjectLink"; -import { TimeAgo } from "../../../components/time/TimeAgo/TimeAgo"; +import { DecoratedPollingEntity } from "frontend/src/contexts/timeout-polling.context"; +import { ProjectLink } from "../../common/links/ProjectLink"; +import { TimeAgo } from "../../common/time/TimeAgo/TimeAgo"; const columnHelper = createColumnHelper>(); diff --git a/frontend/src/components/buttons/ActionButton/ActionButton.module.scss b/packages/ui/src/common/buttons/ActionButton/ActionButton.module.scss similarity index 84% rename from frontend/src/components/buttons/ActionButton/ActionButton.module.scss rename to packages/ui/src/common/buttons/ActionButton/ActionButton.module.scss index 059f8c395..9a78238da 100644 --- a/frontend/src/components/buttons/ActionButton/ActionButton.module.scss +++ b/packages/ui/src/common/buttons/ActionButton/ActionButton.module.scss @@ -1,6 +1,6 @@ -@import 'styles/spacings'; -@import 'styles/colors'; -@import 'styles/typography'; +@import '../../../styles/spacings'; +@import '../../../styles/colors'; +@import '../../../styles/typography'; .root { display: flex; diff --git a/frontend/src/components/buttons/ActionButton/ActionButton.tsx b/packages/ui/src/common/buttons/ActionButton/ActionButton.tsx similarity index 100% rename from frontend/src/components/buttons/ActionButton/ActionButton.tsx rename to packages/ui/src/common/buttons/ActionButton/ActionButton.tsx diff --git a/frontend/src/components/buttons/Button/Button.module.scss b/packages/ui/src/common/buttons/Button/Button.module.scss similarity index 92% rename from frontend/src/components/buttons/Button/Button.module.scss rename to packages/ui/src/common/buttons/Button/Button.module.scss index 1790f3602..597a03d3f 100644 --- a/frontend/src/components/buttons/Button/Button.module.scss +++ b/packages/ui/src/common/buttons/Button/Button.module.scss @@ -1,6 +1,6 @@ -@import "styles/colors"; -@import "styles/rules"; -@import "styles/typography"; +@import "../../../styles/colors"; +@import "../../../styles/rules"; +@import "../../../styles/typography"; .button { position: relative; diff --git a/frontend/src/components/buttons/Button/Button.tsx b/packages/ui/src/common/buttons/Button/Button.tsx similarity index 100% rename from frontend/src/components/buttons/Button/Button.tsx rename to packages/ui/src/common/buttons/Button/Button.tsx diff --git a/frontend/src/components/buttons/CopyButton/CopyButton.module.scss b/packages/ui/src/common/buttons/CopyButton/CopyButton.module.scss similarity index 100% rename from frontend/src/components/buttons/CopyButton/CopyButton.module.scss rename to packages/ui/src/common/buttons/CopyButton/CopyButton.module.scss diff --git a/frontend/src/components/buttons/CopyButton/CopyButton.tsx b/packages/ui/src/common/buttons/CopyButton/CopyButton.tsx similarity index 85% rename from frontend/src/components/buttons/CopyButton/CopyButton.tsx rename to packages/ui/src/common/buttons/CopyButton/CopyButton.tsx index eebf9ce5e..386dcaef8 100644 --- a/frontend/src/components/buttons/CopyButton/CopyButton.tsx +++ b/packages/ui/src/common/buttons/CopyButton/CopyButton.tsx @@ -1,8 +1,8 @@ import React, { FunctionComponent, useCallback } from "react"; import copy from "copy-to-clipboard"; import toast from "react-hot-toast"; -import { ReactComponent as CopyIcon } from "../../../assets/icons/copy.svg"; import classes from "./CopyButton.module.scss"; +import { FlowserIcon } from "../../icons/FlowserIcon"; export type CopyButtonProps = { value: string; @@ -22,7 +22,7 @@ const CopyButton: FunctionComponent = ({ value }) => { }, []); return ( - + ); }; diff --git a/frontend/src/components/buttons/IconButton/IconButton.module.scss b/packages/ui/src/common/buttons/IconButton/IconButton.module.scss similarity index 90% rename from frontend/src/components/buttons/IconButton/IconButton.module.scss rename to packages/ui/src/common/buttons/IconButton/IconButton.module.scss index e3d082069..c3fc791ab 100644 --- a/frontend/src/components/buttons/IconButton/IconButton.module.scss +++ b/packages/ui/src/common/buttons/IconButton/IconButton.module.scss @@ -1,4 +1,4 @@ -@import 'styles/spacings'; +@import '../../../styles/spacings'; .root { position: relative; diff --git a/frontend/src/components/buttons/IconButton/IconButton.tsx b/packages/ui/src/common/buttons/IconButton/IconButton.tsx similarity index 100% rename from frontend/src/components/buttons/IconButton/IconButton.tsx rename to packages/ui/src/common/buttons/IconButton/IconButton.tsx diff --git a/frontend/src/components/buttons/LoaderButton/LoaderButton.tsx b/packages/ui/src/common/buttons/LoaderButton/LoaderButton.tsx similarity index 100% rename from frontend/src/components/buttons/LoaderButton/LoaderButton.tsx rename to packages/ui/src/common/buttons/LoaderButton/LoaderButton.tsx diff --git a/frontend/src/components/buttons/PrimaryButton/PrimaryButton.module.scss b/packages/ui/src/common/buttons/PrimaryButton/PrimaryButton.module.scss similarity index 64% rename from frontend/src/components/buttons/PrimaryButton/PrimaryButton.module.scss rename to packages/ui/src/common/buttons/PrimaryButton/PrimaryButton.module.scss index 9691d786c..0cea80221 100644 --- a/frontend/src/components/buttons/PrimaryButton/PrimaryButton.module.scss +++ b/packages/ui/src/common/buttons/PrimaryButton/PrimaryButton.module.scss @@ -1,7 +1,7 @@ -@import "styles/colors"; -@import "styles/rules"; -@import "styles/spacings"; -@import "styles/typography"; +@import "../../../styles/colors"; +@import "../../../styles/rules"; +@import "../../../styles/spacings"; +@import "../../../styles/typography"; .root { flex: 1; diff --git a/frontend/src/components/buttons/PrimaryButton/PrimaryButton.tsx b/packages/ui/src/common/buttons/PrimaryButton/PrimaryButton.tsx similarity index 100% rename from frontend/src/components/buttons/PrimaryButton/PrimaryButton.tsx rename to packages/ui/src/common/buttons/PrimaryButton/PrimaryButton.tsx diff --git a/frontend/src/components/buttons/RadioButton/RadioButton.module.scss b/packages/ui/src/common/buttons/RadioButton/RadioButton.module.scss similarity index 93% rename from frontend/src/components/buttons/RadioButton/RadioButton.module.scss rename to packages/ui/src/common/buttons/RadioButton/RadioButton.module.scss index c2e469024..b018069b5 100644 --- a/frontend/src/components/buttons/RadioButton/RadioButton.module.scss +++ b/packages/ui/src/common/buttons/RadioButton/RadioButton.module.scss @@ -1,4 +1,4 @@ -@import 'styles/colors'; +@import '../../../styles/colors'; .root { diff --git a/frontend/src/components/buttons/RadioButton/RadioButton.tsx b/packages/ui/src/common/buttons/RadioButton/RadioButton.tsx similarity index 100% rename from frontend/src/components/buttons/RadioButton/RadioButton.tsx rename to packages/ui/src/common/buttons/RadioButton/RadioButton.tsx diff --git a/frontend/src/components/buttons/SimpleButton/SimpleButton.module.scss b/packages/ui/src/common/buttons/SimpleButton/SimpleButton.module.scss similarity index 61% rename from frontend/src/components/buttons/SimpleButton/SimpleButton.module.scss rename to packages/ui/src/common/buttons/SimpleButton/SimpleButton.module.scss index 781db0859..7d87c5689 100644 --- a/frontend/src/components/buttons/SimpleButton/SimpleButton.module.scss +++ b/packages/ui/src/common/buttons/SimpleButton/SimpleButton.module.scss @@ -1,5 +1,5 @@ -@import 'styles/colors'; -@import 'styles/typography'; +@import '../../../styles/colors'; +@import '../../../styles/typography'; .root { background: none; diff --git a/frontend/src/components/buttons/SimpleButton/SimpleButton.tsx b/packages/ui/src/common/buttons/SimpleButton/SimpleButton.tsx similarity index 100% rename from frontend/src/components/buttons/SimpleButton/SimpleButton.tsx rename to packages/ui/src/common/buttons/SimpleButton/SimpleButton.tsx diff --git a/frontend/src/components/buttons/ToggleButton/ToggleButton.module.scss b/packages/ui/src/common/buttons/ToggleButton/ToggleButton.module.scss similarity index 89% rename from frontend/src/components/buttons/ToggleButton/ToggleButton.module.scss rename to packages/ui/src/common/buttons/ToggleButton/ToggleButton.module.scss index a6816b0aa..b43e34936 100644 --- a/frontend/src/components/buttons/ToggleButton/ToggleButton.module.scss +++ b/packages/ui/src/common/buttons/ToggleButton/ToggleButton.module.scss @@ -1,5 +1,5 @@ -@import 'styles/animations'; -@import 'styles/colors'; +@import '../../../styles/animations'; +@import '../../../styles/colors'; .root { display: flex; diff --git a/frontend/src/components/buttons/ToggleButton/ToggleButton.tsx b/packages/ui/src/common/buttons/ToggleButton/ToggleButton.tsx similarity index 100% rename from frontend/src/components/buttons/ToggleButton/ToggleButton.tsx rename to packages/ui/src/common/buttons/ToggleButton/ToggleButton.tsx diff --git a/frontend/src/components/cards/BaseCard/BaseCard.module.scss b/packages/ui/src/common/cards/BaseCard/BaseCard.module.scss similarity index 56% rename from frontend/src/components/cards/BaseCard/BaseCard.module.scss rename to packages/ui/src/common/cards/BaseCard/BaseCard.module.scss index a8a65c9cd..8ac36e42e 100644 --- a/frontend/src/components/cards/BaseCard/BaseCard.module.scss +++ b/packages/ui/src/common/cards/BaseCard/BaseCard.module.scss @@ -1,8 +1,8 @@ -@import 'styles/colors'; -@import 'styles/rules'; -@import 'styles/spacings'; -@import 'styles/animations'; -@import 'styles/scrollbars'; +@import '../../../styles/colors'; +@import '../../../styles/rules'; +@import '../../../styles/spacings'; +@import '../../../styles/animations'; +@import '../../../styles/scrollbars'; .root { border-radius: $border-radius-card; diff --git a/frontend/src/components/cards/BaseCard/BaseCard.tsx b/packages/ui/src/common/cards/BaseCard/BaseCard.tsx similarity index 100% rename from frontend/src/components/cards/BaseCard/BaseCard.tsx rename to packages/ui/src/common/cards/BaseCard/BaseCard.tsx diff --git a/frontend/src/components/cards/DetailsCard/DetailsCard.module.scss b/packages/ui/src/common/cards/DetailsCard/DetailsCard.module.scss similarity index 83% rename from frontend/src/components/cards/DetailsCard/DetailsCard.module.scss rename to packages/ui/src/common/cards/DetailsCard/DetailsCard.module.scss index 6cc916653..55ce973c7 100644 --- a/frontend/src/components/cards/DetailsCard/DetailsCard.module.scss +++ b/packages/ui/src/common/cards/DetailsCard/DetailsCard.module.scss @@ -1,6 +1,6 @@ -@import "styles/spacings"; -@import "styles/animations"; -@import "styles/scrollbars"; +@import "../../../styles/spacings"; +@import "../../../styles/animations"; +@import "../../../styles/scrollbars"; .root { background: $gray-100; diff --git a/frontend/src/components/cards/DetailsCard/DetailsCard.tsx b/packages/ui/src/common/cards/DetailsCard/DetailsCard.tsx similarity index 93% rename from frontend/src/components/cards/DetailsCard/DetailsCard.tsx rename to packages/ui/src/common/cards/DetailsCard/DetailsCard.tsx index ffd832a92..758666bc6 100644 --- a/frontend/src/components/cards/DetailsCard/DetailsCard.tsx +++ b/packages/ui/src/common/cards/DetailsCard/DetailsCard.tsx @@ -1,6 +1,6 @@ import classNames from "classnames"; -import Label from "components/misc/Label/Label"; -import Value from "components/misc/Value/Value"; +import Label from "../../misc/Label/Label"; +import Value from "../../misc/Value/Value"; import React, { FC, ReactElement } from "react"; import { BaseCard } from "../BaseCard/BaseCard"; import classes from "./DetailsCard.module.scss"; diff --git a/frontend/src/components/code/CadenceEditor/CadenceEditor.tsx b/packages/ui/src/common/code/CadenceEditor/CadenceEditor.tsx similarity index 100% rename from frontend/src/components/code/CadenceEditor/CadenceEditor.tsx rename to packages/ui/src/common/code/CadenceEditor/CadenceEditor.tsx diff --git a/frontend/src/components/code/CadenceEditor/cadence-editor.css b/packages/ui/src/common/code/CadenceEditor/cadence-editor.css similarity index 100% rename from frontend/src/components/code/CadenceEditor/cadence-editor.css rename to packages/ui/src/common/code/CadenceEditor/cadence-editor.css diff --git a/frontend/src/components/code/JsonView/JsonView.module.scss b/packages/ui/src/common/code/JsonView/JsonView.module.scss similarity index 65% rename from frontend/src/components/code/JsonView/JsonView.module.scss rename to packages/ui/src/common/code/JsonView/JsonView.module.scss index ff4cf57ea..51fb0ead2 100644 --- a/frontend/src/components/code/JsonView/JsonView.module.scss +++ b/packages/ui/src/common/code/JsonView/JsonView.module.scss @@ -1,5 +1,5 @@ -@import "styles/colors"; -@import "styles/scrollbars"; +@import "../../../styles/colors"; +@import "../../../styles/scrollbars"; .root { display: inline-block; diff --git a/frontend/src/components/code/JsonView/JsonView.tsx b/packages/ui/src/common/code/JsonView/JsonView.tsx similarity index 100% rename from frontend/src/components/code/JsonView/JsonView.tsx rename to packages/ui/src/common/code/JsonView/JsonView.tsx diff --git a/frontend/src/components/ellipsis/Ellipsis.tsx b/packages/ui/src/common/ellipsis/Ellipsis.tsx similarity index 100% rename from frontend/src/components/ellipsis/Ellipsis.tsx rename to packages/ui/src/common/ellipsis/Ellipsis.tsx diff --git a/frontend/src/components/ellipsis/MiddleEllipsis.tsx b/packages/ui/src/common/ellipsis/MiddleEllipsis.tsx similarity index 100% rename from frontend/src/components/ellipsis/MiddleEllipsis.tsx rename to packages/ui/src/common/ellipsis/MiddleEllipsis.tsx diff --git a/frontend/src/components/errors/ErrorMessage.module.scss b/packages/ui/src/common/errors/ErrorMessage.module.scss similarity index 70% rename from frontend/src/components/errors/ErrorMessage.module.scss rename to packages/ui/src/common/errors/ErrorMessage.module.scss index 22dc183d1..569d1c33f 100644 --- a/frontend/src/components/errors/ErrorMessage.module.scss +++ b/packages/ui/src/common/errors/ErrorMessage.module.scss @@ -1,7 +1,7 @@ -@import 'styles/spacings'; -@import 'styles/colors'; -@import 'styles/typography'; -@import 'styles/animations'; +@import '../../styles/spacings'; +@import '../../styles/colors'; +@import '../../styles/typography'; +@import '../../styles/animations'; .root { display: flex; diff --git a/frontend/src/components/errors/ErrorMessage.tsx b/packages/ui/src/common/errors/ErrorMessage.tsx similarity index 91% rename from frontend/src/components/errors/ErrorMessage.tsx rename to packages/ui/src/common/errors/ErrorMessage.tsx index 23bb0f0be..549532c44 100644 --- a/frontend/src/components/errors/ErrorMessage.tsx +++ b/packages/ui/src/common/errors/ErrorMessage.tsx @@ -1,6 +1,6 @@ import React, { FunctionComponent } from "react"; import { FlowserError } from "@flowser/shared"; -import { CommonUtils } from "../../utils/common-utils"; +import { CommonUtils } from "../../../../../frontend/src/utils/common-utils"; import { Message } from "./Message"; export type ErrorMessageProps = { diff --git a/frontend/src/components/errors/Message.tsx b/packages/ui/src/common/errors/Message.tsx similarity index 100% rename from frontend/src/components/errors/Message.tsx rename to packages/ui/src/common/errors/Message.tsx diff --git a/frontend/src/components/icons/CaretIcon/CaretIcon.module.scss b/packages/ui/src/common/icons/CaretIcon/CaretIcon.module.scss similarity index 80% rename from frontend/src/components/icons/CaretIcon/CaretIcon.module.scss rename to packages/ui/src/common/icons/CaretIcon/CaretIcon.module.scss index ed9ed0552..1a3c7a7cf 100644 --- a/frontend/src/components/icons/CaretIcon/CaretIcon.module.scss +++ b/packages/ui/src/common/icons/CaretIcon/CaretIcon.module.scss @@ -1,5 +1,5 @@ -@import 'styles/animations'; -@import 'styles/colors'; +@import '../../../styles/animations'; +@import '../../../styles/colors'; .root { @include flipVertical(.2s, 0deg); diff --git a/frontend/src/components/icons/CaretIcon/CaretIcon.tsx b/packages/ui/src/common/icons/CaretIcon/CaretIcon.tsx similarity index 89% rename from frontend/src/components/icons/CaretIcon/CaretIcon.tsx rename to packages/ui/src/common/icons/CaretIcon/CaretIcon.tsx index 0f7b5456e..d260e16ab 100644 --- a/frontend/src/components/icons/CaretIcon/CaretIcon.tsx +++ b/packages/ui/src/common/icons/CaretIcon/CaretIcon.tsx @@ -1,7 +1,7 @@ import classNames from "classnames"; import React, { FunctionComponent, useEffect, useState } from "react"; -import { ReactComponent as CaretIconSvg } from "../../../assets/icons/caret.svg"; import classes from "./CaretIcon.module.scss"; +import { FlowserIcon } from "../FlowserIcon"; type CaretIconProps = { isOpen?: boolean; @@ -28,7 +28,7 @@ export const CaretIcon: FunctionComponent = ({ }; return ( - = (props) => { return (
diff --git a/frontend/src/components/layouts/ProjectLayout/ProjectLayout.module.scss b/packages/ui/src/common/layouts/ProjectLayout/ProjectLayout.module.scss similarity index 87% rename from frontend/src/components/layouts/ProjectLayout/ProjectLayout.module.scss rename to packages/ui/src/common/layouts/ProjectLayout/ProjectLayout.module.scss index 0ca044929..70fa8059e 100644 --- a/frontend/src/components/layouts/ProjectLayout/ProjectLayout.module.scss +++ b/packages/ui/src/common/layouts/ProjectLayout/ProjectLayout.module.scss @@ -1,6 +1,6 @@ -@import "styles/spacings"; -@import "styles/colors"; -@import "styles/scrollbars"; +@import "../../../styles/spacings"; +@import "../../../styles/colors"; +@import "../../../styles/scrollbars"; $side-nav-width: 80px; diff --git a/frontend/src/components/layouts/ProjectLayout/ProjectLayout.tsx b/packages/ui/src/common/layouts/ProjectLayout/ProjectLayout.tsx similarity index 92% rename from frontend/src/components/layouts/ProjectLayout/ProjectLayout.tsx rename to packages/ui/src/common/layouts/ProjectLayout/ProjectLayout.tsx index b59d27c79..fa49fbf78 100644 --- a/frontend/src/components/layouts/ProjectLayout/ProjectLayout.tsx +++ b/packages/ui/src/common/layouts/ProjectLayout/ProjectLayout.tsx @@ -1,6 +1,6 @@ import React, { FunctionComponent } from "react"; import classes from "./ProjectLayout.module.scss"; -import { Logs } from "../../../modules/logs/Logs"; +import { Logs } from "../../../logs/Logs"; import { useLocation } from "react-router-dom"; import classNames from "classnames"; import { Breadcrumbs } from "../../misc/Breadcrumbs/Breadcrumbs"; @@ -8,6 +8,7 @@ import { SideNavigation } from "../../misc/SideNavigation/SideNavigation"; export const scrollableElementId = "flowser-scroll"; +// TODO(restructure): Move this to app folder export const ProjectLayout: FunctionComponent = ({ children }) => { const location = useLocation(); const showMargin = !location.pathname.endsWith("interactions"); diff --git a/frontend/src/components/links/ExternalLink.module.scss b/packages/ui/src/common/links/ExternalLink/ExternalLink.module.scss similarity index 79% rename from frontend/src/components/links/ExternalLink.module.scss rename to packages/ui/src/common/links/ExternalLink/ExternalLink.module.scss index 07d8b75b5..467bba1e7 100644 --- a/frontend/src/components/links/ExternalLink.module.scss +++ b/packages/ui/src/common/links/ExternalLink/ExternalLink.module.scss @@ -1,5 +1,5 @@ -@import "styles/colors"; -@import "styles/spacings"; +@import "../../../styles/colors"; +@import "../../../styles/spacings"; .root { display: flex; diff --git a/frontend/src/components/links/ExternalLink.tsx b/packages/ui/src/common/links/ExternalLink/ExternalLink.tsx similarity index 93% rename from frontend/src/components/links/ExternalLink.tsx rename to packages/ui/src/common/links/ExternalLink/ExternalLink.tsx index fa4c7af05..04b57f371 100644 --- a/frontend/src/components/links/ExternalLink.tsx +++ b/packages/ui/src/common/links/ExternalLink/ExternalLink.tsx @@ -1,5 +1,5 @@ import React, { ReactNode, ReactElement, CSSProperties } from "react"; -import { FlowserIcon } from "../icons/FlowserIcon"; +import { FlowserIcon } from "../../icons/FlowserIcon"; import classes from "./ExternalLink.module.scss"; export type ExternalLinkProps = { diff --git a/frontend/src/components/links/IdeLink.tsx b/packages/ui/src/common/links/IdeLink.tsx similarity index 94% rename from frontend/src/components/links/IdeLink.tsx rename to packages/ui/src/common/links/IdeLink.tsx index 8221fd314..b47b85a3e 100644 --- a/frontend/src/components/links/IdeLink.tsx +++ b/packages/ui/src/common/links/IdeLink.tsx @@ -1,4 +1,4 @@ -import { ExternalLink, ExternalLinkProps } from "./ExternalLink"; +import { ExternalLink, ExternalLinkProps } from "./ExternalLink/ExternalLink"; import { FlowserIcon } from "../icons/FlowserIcon"; import React, { ReactElement } from "react"; diff --git a/frontend/src/components/links/ProjectLink.tsx b/packages/ui/src/common/links/ProjectLink.tsx similarity index 81% rename from frontend/src/components/links/ProjectLink.tsx rename to packages/ui/src/common/links/ProjectLink.tsx index fd5eed2fb..ee5743a53 100644 --- a/frontend/src/components/links/ProjectLink.tsx +++ b/packages/ui/src/common/links/ProjectLink.tsx @@ -1,10 +1,11 @@ import React from "react"; import { NavLink, NavLinkProps, To } from "react-router-dom"; import { ReactElement } from "react"; -import { useCurrentProjectId } from "../../hooks/use-current-project-id"; +import { useCurrentProjectId } from "../../../../../frontend/src/hooks/use-current-project-id"; type ProjectLinkProps = NavLinkProps; +// TODO(restructure): Move this to app folder? export function ProjectLink(props: ProjectLinkProps): ReactElement { const projectId = useCurrentProjectId(); const { to, ...otherProps } = props; diff --git a/frontend/src/components/loaders/FullScreenLoading/FullScreenLoading.module.scss b/packages/ui/src/common/loaders/FullScreenLoading/FullScreenLoading.module.scss similarity index 68% rename from frontend/src/components/loaders/FullScreenLoading/FullScreenLoading.module.scss rename to packages/ui/src/common/loaders/FullScreenLoading/FullScreenLoading.module.scss index 67cb8ff20..3fb5924b3 100644 --- a/frontend/src/components/loaders/FullScreenLoading/FullScreenLoading.module.scss +++ b/packages/ui/src/common/loaders/FullScreenLoading/FullScreenLoading.module.scss @@ -1,7 +1,7 @@ -@import 'styles/spacings'; -@import 'styles/typography'; -@import 'styles/animations'; -@import 'styles/colors'; +@import '../../../styles/spacings'; +@import '../../../styles/typography'; +@import '../../../styles/animations'; +@import '../../../styles/colors'; .container { @include fadeInAnimation(0.4s); diff --git a/frontend/src/components/loaders/FullScreenLoading/FullScreenLoading.tsx b/packages/ui/src/common/loaders/FullScreenLoading/FullScreenLoading.tsx similarity index 100% rename from frontend/src/components/loaders/FullScreenLoading/FullScreenLoading.tsx rename to packages/ui/src/common/loaders/FullScreenLoading/FullScreenLoading.tsx diff --git a/frontend/src/components/loaders/Spinner/Spinner.module.scss b/packages/ui/src/common/loaders/Spinner/Spinner.module.scss similarity index 91% rename from frontend/src/components/loaders/Spinner/Spinner.module.scss rename to packages/ui/src/common/loaders/Spinner/Spinner.module.scss index 0fbad17a2..ee465a346 100644 --- a/frontend/src/components/loaders/Spinner/Spinner.module.scss +++ b/packages/ui/src/common/loaders/Spinner/Spinner.module.scss @@ -1,4 +1,4 @@ -@import 'styles/animations'; +@import '../../../styles/animations'; // Styles were taken from: https://ui-snippets.dev .spinner { diff --git a/frontend/src/components/loaders/Spinner/Spinner.tsx b/packages/ui/src/common/loaders/Spinner/Spinner.tsx similarity index 100% rename from frontend/src/components/loaders/Spinner/Spinner.tsx rename to packages/ui/src/common/loaders/Spinner/Spinner.tsx diff --git a/frontend/src/components/loaders/Spinner/SpinnerWithLabel.tsx b/packages/ui/src/common/loaders/Spinner/SpinnerWithLabel.tsx similarity index 100% rename from frontend/src/components/loaders/Spinner/SpinnerWithLabel.tsx rename to packages/ui/src/common/loaders/Spinner/SpinnerWithLabel.tsx diff --git a/frontend/src/components/misc/BaseBadge/BaseBadge.module.scss b/packages/ui/src/common/misc/BaseBadge/BaseBadge.module.scss similarity index 61% rename from frontend/src/components/misc/BaseBadge/BaseBadge.module.scss rename to packages/ui/src/common/misc/BaseBadge/BaseBadge.module.scss index 6f29b7544..1283427e0 100644 --- a/frontend/src/components/misc/BaseBadge/BaseBadge.module.scss +++ b/packages/ui/src/common/misc/BaseBadge/BaseBadge.module.scss @@ -1,5 +1,5 @@ -@import 'styles/colors'; -@import 'styles/spacings'; +@import '../../../styles/colors'; +@import '../../../styles/spacings'; .root { border: 1px solid $gray-10; diff --git a/frontend/src/components/misc/BaseBadge/BaseBadge.tsx b/packages/ui/src/common/misc/BaseBadge/BaseBadge.tsx similarity index 100% rename from frontend/src/components/misc/BaseBadge/BaseBadge.tsx rename to packages/ui/src/common/misc/BaseBadge/BaseBadge.tsx diff --git a/frontend/src/components/misc/BaseTable/BaseTable.module.scss b/packages/ui/src/common/misc/BaseTable/BaseTable.module.scss similarity index 86% rename from frontend/src/components/misc/BaseTable/BaseTable.module.scss rename to packages/ui/src/common/misc/BaseTable/BaseTable.module.scss index 94603dcb0..9dd7426b8 100644 --- a/frontend/src/components/misc/BaseTable/BaseTable.module.scss +++ b/packages/ui/src/common/misc/BaseTable/BaseTable.module.scss @@ -1,6 +1,6 @@ -@import "styles/spacings"; -@import "styles/animations"; -@import "styles/colors"; +@import "../../../styles/spacings"; +@import "../../../styles/animations"; +@import "../../../styles/colors"; .root { height: 100%; diff --git a/frontend/src/components/misc/BaseTable/BaseTable.tsx b/packages/ui/src/common/misc/BaseTable/BaseTable.tsx similarity index 85% rename from frontend/src/components/misc/BaseTable/BaseTable.tsx rename to packages/ui/src/common/misc/BaseTable/BaseTable.tsx index ca9ca12ca..c2335235f 100644 --- a/frontend/src/components/misc/BaseTable/BaseTable.tsx +++ b/packages/ui/src/common/misc/BaseTable/BaseTable.tsx @@ -11,8 +11,6 @@ import { useReactTable, RowData, } from "@tanstack/react-table"; -import { CommonUtils } from "../../../utils/common-utils"; -import { DecoratedPollingEntity } from "../../../contexts/timeout-polling.context"; import { Message } from "../../errors/Message"; type CustomTableProps = { @@ -31,7 +29,7 @@ export type TableProps = Pick< enableIntroAnimations?: boolean; }; -export type TableData = DecoratedPollingEntity | TData; +export type TableData = TData; declare module "@tanstack/table-core" { // https://tanstack.com/table/v8/docs/api/core/column-def#meta @@ -104,9 +102,7 @@ export function BaseTable({ : bodyRowClass )} key={row.id} - showIntroAnimation={ - showIntroAnimation(row.original) && enableIntroAnimations - } + showIntroAnimation={false} > {row.getVisibleCells().map((cell) => (
({
); } - -function showIntroAnimation(dataItem: TableData) { - if (CommonUtils.isDecoratedPollingEntity(dataItem)) { - return dataItem.isNew || dataItem.isUpdated; - } else { - return false; - } -} diff --git a/frontend/src/components/misc/Breadcrumbs/Breadcrumbs.module.scss b/packages/ui/src/common/misc/Breadcrumbs/Breadcrumbs.module.scss similarity index 85% rename from frontend/src/components/misc/Breadcrumbs/Breadcrumbs.module.scss rename to packages/ui/src/common/misc/Breadcrumbs/Breadcrumbs.module.scss index 0af5bc5ad..f9ef00987 100644 --- a/frontend/src/components/misc/Breadcrumbs/Breadcrumbs.module.scss +++ b/packages/ui/src/common/misc/Breadcrumbs/Breadcrumbs.module.scss @@ -1,7 +1,7 @@ -@import "styles/typography"; -@import "styles/colors"; -@import "styles/rules"; -@import "styles/spacings"; +@import "../../../styles/typography"; +@import "../../../styles/colors"; +@import "../../../styles/rules"; +@import "../../../styles/spacings"; .root { display: flex; diff --git a/frontend/src/components/misc/Breadcrumbs/Breadcrumbs.tsx b/packages/ui/src/common/misc/Breadcrumbs/Breadcrumbs.tsx similarity index 95% rename from frontend/src/components/misc/Breadcrumbs/Breadcrumbs.tsx rename to packages/ui/src/common/misc/Breadcrumbs/Breadcrumbs.tsx index 5bb49d845..554ee0a7b 100644 --- a/frontend/src/components/misc/Breadcrumbs/Breadcrumbs.tsx +++ b/packages/ui/src/common/misc/Breadcrumbs/Breadcrumbs.tsx @@ -3,7 +3,7 @@ import { NavLink, useMatches, useNavigate } from "react-router-dom"; import classes from "./Breadcrumbs.module.scss"; import classNames from "classnames"; import { FlowserIcon } from "../../icons/FlowserIcon"; -import { useCurrentProjectId } from "../../../hooks/use-current-project-id"; +import { useCurrentProjectId } from "../../../../../../frontend/src/hooks/use-current-project-id"; type BreadcrumbsProps = { className?: string; diff --git a/frontend/src/components/misc/Callout/Callout.module.scss b/packages/ui/src/common/misc/Callout/Callout.module.scss similarity index 74% rename from frontend/src/components/misc/Callout/Callout.module.scss rename to packages/ui/src/common/misc/Callout/Callout.module.scss index c90cf0224..31a62d6f4 100644 --- a/frontend/src/components/misc/Callout/Callout.module.scss +++ b/packages/ui/src/common/misc/Callout/Callout.module.scss @@ -1,6 +1,6 @@ -@import "styles/spacings"; -@import "styles/colors"; -@import "styles/rules"; +@import "../../../styles/spacings"; +@import "../../../styles/colors"; +@import "../../../styles/rules"; .root { border-radius: $border-radius-button; diff --git a/frontend/src/components/misc/Callout/Callout.tsx b/packages/ui/src/common/misc/Callout/Callout.tsx similarity index 100% rename from frontend/src/components/misc/Callout/Callout.tsx rename to packages/ui/src/common/misc/Callout/Callout.tsx diff --git a/frontend/src/components/misc/Label/Label.module.scss b/packages/ui/src/common/misc/Label/Label.module.scss similarity index 81% rename from frontend/src/components/misc/Label/Label.module.scss rename to packages/ui/src/common/misc/Label/Label.module.scss index fb7fc179b..4e4c4282b 100644 --- a/frontend/src/components/misc/Label/Label.module.scss +++ b/packages/ui/src/common/misc/Label/Label.module.scss @@ -1,5 +1,5 @@ -@import "styles/colors"; -@import "styles/typography"; +@import "../../../styles/colors"; +@import "../../../styles/typography"; .root { color: $color-grey; diff --git a/frontend/src/components/misc/Label/Label.tsx b/packages/ui/src/common/misc/Label/Label.tsx similarity index 100% rename from frontend/src/components/misc/Label/Label.tsx rename to packages/ui/src/common/misc/Label/Label.tsx diff --git a/frontend/src/components/misc/LineSeparator/LineSeparator.module.scss b/packages/ui/src/common/misc/LineSeparator/LineSeparator.module.scss similarity index 73% rename from frontend/src/components/misc/LineSeparator/LineSeparator.module.scss rename to packages/ui/src/common/misc/LineSeparator/LineSeparator.module.scss index 726f76af2..60e78e2db 100644 --- a/frontend/src/components/misc/LineSeparator/LineSeparator.module.scss +++ b/packages/ui/src/common/misc/LineSeparator/LineSeparator.module.scss @@ -1,5 +1,5 @@ -@import "styles/colors"; -@import "styles/spacings"; +@import "../../../styles/colors"; +@import "../../../styles/spacings"; .root { background: $gray-10; diff --git a/frontend/src/components/misc/LineSeparator/LineSeparator.tsx b/packages/ui/src/common/misc/LineSeparator/LineSeparator.tsx similarity index 100% rename from frontend/src/components/misc/LineSeparator/LineSeparator.tsx rename to packages/ui/src/common/misc/LineSeparator/LineSeparator.tsx diff --git a/frontend/src/components/misc/ProjectRequirements/ProjectRequirements.module.scss b/packages/ui/src/common/misc/ProjectRequirements/ProjectRequirements.module.scss similarity index 71% rename from frontend/src/components/misc/ProjectRequirements/ProjectRequirements.module.scss rename to packages/ui/src/common/misc/ProjectRequirements/ProjectRequirements.module.scss index 7f258cfaf..c19b2488d 100644 --- a/frontend/src/components/misc/ProjectRequirements/ProjectRequirements.module.scss +++ b/packages/ui/src/common/misc/ProjectRequirements/ProjectRequirements.module.scss @@ -1,5 +1,5 @@ -@import "styles/typography"; -@import "styles/spacings"; +@import "../../../styles/typography"; +@import "../../../styles/spacings"; .missingRequirementItem { .title { diff --git a/frontend/src/components/misc/ProjectRequirements/ProjectRequirements.tsx b/packages/ui/src/common/misc/ProjectRequirements/ProjectRequirements.tsx similarity index 95% rename from frontend/src/components/misc/ProjectRequirements/ProjectRequirements.tsx rename to packages/ui/src/common/misc/ProjectRequirements/ProjectRequirements.tsx index 3fc728a29..7ec513b91 100644 --- a/frontend/src/components/misc/ProjectRequirements/ProjectRequirements.tsx +++ b/packages/ui/src/common/misc/ProjectRequirements/ProjectRequirements.tsx @@ -1,10 +1,11 @@ import React from "react"; import { ActionDialog } from "../../overlays/dialogs/action/ActionDialog"; -import { useGetProjectRequirements } from "../../../hooks/use-api"; +import { useGetProjectRequirements } from "../../../../../../frontend/src/hooks/use-api"; import { ReactElement } from "react"; import { ProjectRequirement, ProjectRequirementType } from "@flowser/shared"; import classes from "./ProjectRequirements.module.scss"; +// TODO(restructure): Move this to app folder export function ProjectRequirements(): ReactElement | null { const { data } = useGetProjectRequirements(); const { missingRequirements } = data ?? { missingRequirements: [] }; diff --git a/frontend/src/components/misc/SideNavigation/SideNavigation.module.scss b/packages/ui/src/common/misc/SideNavigation/SideNavigation.module.scss similarity index 89% rename from frontend/src/components/misc/SideNavigation/SideNavigation.module.scss rename to packages/ui/src/common/misc/SideNavigation/SideNavigation.module.scss index af5b484ad..0f8142e33 100644 --- a/frontend/src/components/misc/SideNavigation/SideNavigation.module.scss +++ b/packages/ui/src/common/misc/SideNavigation/SideNavigation.module.scss @@ -1,5 +1,5 @@ -@import "styles/colors"; -@import "styles/spacings"; +@import "../../../styles/colors"; +@import "../../../styles/spacings"; .root { display: flex; diff --git a/frontend/src/components/misc/SideNavigation/SideNavigation.tsx b/packages/ui/src/common/misc/SideNavigation/SideNavigation.tsx similarity index 87% rename from frontend/src/components/misc/SideNavigation/SideNavigation.tsx rename to packages/ui/src/common/misc/SideNavigation/SideNavigation.tsx index 667375cbc..51a7ac4d0 100644 --- a/frontend/src/components/misc/SideNavigation/SideNavigation.tsx +++ b/packages/ui/src/common/misc/SideNavigation/SideNavigation.tsx @@ -1,17 +1,18 @@ import React, { ReactElement } from "react"; import classes from "./SideNavigation.module.scss"; import { useMatches } from "react-router-dom"; -import { FlowserIcon } from "components/icons/FlowserIcon"; +import { FlowserIcon } from "packages/ui/src/components/icons/FlowserIcon"; import { SizedBox } from "../SizedBox/SizedBox"; import classNames from "classnames"; -import { useProjectManager } from "../../../contexts/projects.context"; +import { useProjectManager } from "../../../../../../frontend/src/contexts/projects.context"; import { buildProjectUrl, ProjectLink } from "../../links/ProjectLink"; -import { useCurrentProjectId } from "hooks/use-current-project-id"; +import { useCurrentProjectId } from "frontend/src/hooks/use-current-project-id"; type SideNavigationProps = { className?: string; }; +// TODO(restructure): Move this to app folder export function SideNavigation(props: SideNavigationProps): ReactElement { const { switchProject } = useProjectManager(); diff --git a/frontend/src/components/misc/SizedBox/SizedBox.tsx b/packages/ui/src/common/misc/SizedBox/SizedBox.tsx similarity index 100% rename from frontend/src/components/misc/SizedBox/SizedBox.tsx rename to packages/ui/src/common/misc/SizedBox/SizedBox.tsx diff --git a/frontend/src/components/misc/Value/Value.module.scss b/packages/ui/src/common/misc/Value/Value.module.scss similarity index 82% rename from frontend/src/components/misc/Value/Value.module.scss rename to packages/ui/src/common/misc/Value/Value.module.scss index c20bcd43e..8fb11d309 100644 --- a/frontend/src/components/misc/Value/Value.module.scss +++ b/packages/ui/src/common/misc/Value/Value.module.scss @@ -1,5 +1,5 @@ -@import "styles/colors"; -@import "styles/typography"; +@import "../../../styles/colors"; +@import "../../../styles/typography"; .root { display: flex; diff --git a/frontend/src/components/misc/Value/Value.tsx b/packages/ui/src/common/misc/Value/Value.tsx similarity index 100% rename from frontend/src/components/misc/Value/Value.tsx rename to packages/ui/src/common/misc/Value/Value.tsx diff --git a/frontend/src/components/overlays/menus/Menu.scss b/packages/ui/src/common/overlays/Menu/Menu.scss similarity index 86% rename from frontend/src/components/overlays/menus/Menu.scss rename to packages/ui/src/common/overlays/Menu/Menu.scss index 971fb2bdf..dcb3dcc13 100644 --- a/frontend/src/components/overlays/menus/Menu.scss +++ b/packages/ui/src/common/overlays/Menu/Menu.scss @@ -1,4 +1,4 @@ -@import "styles/colors"; +@import "../../../styles/colors"; .szh-menu { padding: 0; diff --git a/frontend/src/components/overlays/menus/Menu.tsx b/packages/ui/src/common/overlays/Menu/Menu.tsx similarity index 100% rename from frontend/src/components/overlays/menus/Menu.tsx rename to packages/ui/src/common/overlays/Menu/Menu.tsx diff --git a/frontend/src/components/overlays/Tooltip/Tooltip.scss b/packages/ui/src/common/overlays/Tooltip/Tooltip.scss similarity index 80% rename from frontend/src/components/overlays/Tooltip/Tooltip.scss rename to packages/ui/src/common/overlays/Tooltip/Tooltip.scss index 1dc0b2abe..22b08c6c2 100644 --- a/frontend/src/components/overlays/Tooltip/Tooltip.scss +++ b/packages/ui/src/common/overlays/Tooltip/Tooltip.scss @@ -1,4 +1,4 @@ -@import "styles/colors"; +@import "../../../styles/colors"; .popup-content { background: $violet-10; diff --git a/frontend/src/components/overlays/Tooltip/Tooltip.tsx b/packages/ui/src/common/overlays/Tooltip/Tooltip.tsx similarity index 100% rename from frontend/src/components/overlays/Tooltip/Tooltip.tsx rename to packages/ui/src/common/overlays/Tooltip/Tooltip.tsx diff --git a/frontend/src/components/overlays/dialogs/action/ActionDialog.module.scss b/packages/ui/src/common/overlays/dialogs/action/ActionDialog.module.scss similarity index 79% rename from frontend/src/components/overlays/dialogs/action/ActionDialog.module.scss rename to packages/ui/src/common/overlays/dialogs/action/ActionDialog.module.scss index 3c0cbc839..345a16d09 100644 --- a/frontend/src/components/overlays/dialogs/action/ActionDialog.module.scss +++ b/packages/ui/src/common/overlays/dialogs/action/ActionDialog.module.scss @@ -1,7 +1,7 @@ -@import "styles/colors"; -@import "styles/spacings"; -@import "styles/typography"; -@import "styles/animations"; +@import "../../../../styles/colors"; +@import "../../../../styles/spacings"; +@import "../../../../styles/typography"; +@import "../../../../styles/animations"; .root { display: flex; diff --git a/frontend/src/components/overlays/dialogs/action/ActionDialog.tsx b/packages/ui/src/common/overlays/dialogs/action/ActionDialog.tsx similarity index 100% rename from frontend/src/components/overlays/dialogs/action/ActionDialog.tsx rename to packages/ui/src/common/overlays/dialogs/action/ActionDialog.tsx diff --git a/frontend/src/components/overlays/dialogs/base/BaseDialog.module.scss b/packages/ui/src/common/overlays/dialogs/base/BaseDialog.module.scss similarity index 87% rename from frontend/src/components/overlays/dialogs/base/BaseDialog.module.scss rename to packages/ui/src/common/overlays/dialogs/base/BaseDialog.module.scss index 1363079af..d95e57442 100644 --- a/frontend/src/components/overlays/dialogs/base/BaseDialog.module.scss +++ b/packages/ui/src/common/overlays/dialogs/base/BaseDialog.module.scss @@ -1,5 +1,5 @@ -@import 'styles/colors'; -@import 'styles/rules'; +@import '../../../../styles/colors'; +@import '../../../../styles/rules'; .root { z-index: 1001; diff --git a/frontend/src/components/overlays/dialogs/base/BaseDialog.tsx b/packages/ui/src/common/overlays/dialogs/base/BaseDialog.tsx similarity index 100% rename from frontend/src/components/overlays/dialogs/base/BaseDialog.tsx rename to packages/ui/src/common/overlays/dialogs/base/BaseDialog.tsx diff --git a/frontend/src/components/overlays/dialogs/confirmation/ConfirmationDialog.tsx b/packages/ui/src/common/overlays/dialogs/confirmation/ConfirmationDialog.tsx similarity index 100% rename from frontend/src/components/overlays/dialogs/confirmation/ConfirmationDialog.tsx rename to packages/ui/src/common/overlays/dialogs/confirmation/ConfirmationDialog.tsx diff --git a/frontend/src/components/overlays/dialogs/consent/ConsentDialog.module.scss b/packages/ui/src/common/overlays/dialogs/consent/ConsentDialog.module.scss similarity index 92% rename from frontend/src/components/overlays/dialogs/consent/ConsentDialog.module.scss rename to packages/ui/src/common/overlays/dialogs/consent/ConsentDialog.module.scss index dd9164aa5..672c9f7f2 100644 --- a/frontend/src/components/overlays/dialogs/consent/ConsentDialog.module.scss +++ b/packages/ui/src/common/overlays/dialogs/consent/ConsentDialog.module.scss @@ -1,5 +1,5 @@ -@import "styles/colors"; -@import "styles/spacings"; +@import "../../../../styles/colors"; +@import "../../../../styles/spacings"; .modal { width: 800px !important; diff --git a/frontend/src/components/overlays/dialogs/consent/ConsentDialog.tsx b/packages/ui/src/common/overlays/dialogs/consent/ConsentDialog.tsx similarity index 96% rename from frontend/src/components/overlays/dialogs/consent/ConsentDialog.tsx rename to packages/ui/src/common/overlays/dialogs/consent/ConsentDialog.tsx index 603e1adb5..7e30e4f7c 100644 --- a/frontend/src/components/overlays/dialogs/consent/ConsentDialog.tsx +++ b/packages/ui/src/common/overlays/dialogs/consent/ConsentDialog.tsx @@ -1,7 +1,7 @@ import React, { ReactElement, useState } from "react"; import { BaseDialog } from "../base/BaseDialog"; import classes from "./ConsentDialog.module.scss"; -import logo from "../../../../assets/images/logo-foreground.svg"; +import logo from "../../../../../../../frontend/src/assets/images/logo-foreground.svg"; import ToggleButton, { ToggleButtonProps, } from "../../../buttons/ToggleButton/ToggleButton"; diff --git a/frontend/src/components/overlays/dialogs/snapshot/SnapshotDialog.module.scss b/packages/ui/src/common/overlays/dialogs/snapshot/SnapshotDialog.module.scss similarity index 63% rename from frontend/src/components/overlays/dialogs/snapshot/SnapshotDialog.module.scss rename to packages/ui/src/common/overlays/dialogs/snapshot/SnapshotDialog.module.scss index 81261ea4f..34d13fa21 100644 --- a/frontend/src/components/overlays/dialogs/snapshot/SnapshotDialog.module.scss +++ b/packages/ui/src/common/overlays/dialogs/snapshot/SnapshotDialog.module.scss @@ -1,4 +1,4 @@ -@import "styles/spacings"; +@import "../../../../styles/spacings"; .root { .description { diff --git a/frontend/src/components/overlays/dialogs/snapshot/SnapshotDialog.tsx b/packages/ui/src/common/overlays/dialogs/snapshot/SnapshotDialog.tsx similarity index 87% rename from frontend/src/components/overlays/dialogs/snapshot/SnapshotDialog.tsx rename to packages/ui/src/common/overlays/dialogs/snapshot/SnapshotDialog.tsx index 1bdd271c2..dde69827d 100644 --- a/frontend/src/components/overlays/dialogs/snapshot/SnapshotDialog.tsx +++ b/packages/ui/src/common/overlays/dialogs/snapshot/SnapshotDialog.tsx @@ -2,11 +2,11 @@ import React, { FC, useState } from "react"; import Button from "../../../buttons/Button/Button"; import classes from "./SnapshotDialog.module.scss"; import toast from "react-hot-toast"; -import { ServiceRegistry } from "../../../../services/service-registry"; +import { ServiceRegistry } from "../../../../../../../frontend/src/services/service-registry"; import { Input } from "../../../inputs/Input/Input"; import { ActionDialog } from "../action/ActionDialog"; -import { useErrorHandler } from "../../../../hooks/use-error-handler"; -import { useCurrentProjectId } from "../../../../hooks/use-current-project-id"; +import { useErrorHandler } from "../../../../../../../frontend/src/hooks/use-error-handler"; +import { useCurrentProjectId } from "../../../../../../../frontend/src/hooks/use-current-project-id"; export type SnapshotDialogProps = { show?: boolean; diff --git a/frontend/src/components/status/ErrorMessage.module.scss b/packages/ui/src/common/status/ErrorMessage.module.scss similarity index 63% rename from frontend/src/components/status/ErrorMessage.module.scss rename to packages/ui/src/common/status/ErrorMessage.module.scss index 95ad84ce1..19437733b 100644 --- a/frontend/src/components/status/ErrorMessage.module.scss +++ b/packages/ui/src/common/status/ErrorMessage.module.scss @@ -1,4 +1,4 @@ -@import "styles/scrollbars"; +@import "../../styles/scrollbars"; .root { overflow: scroll; diff --git a/frontend/src/components/status/ErrorMessage.tsx b/packages/ui/src/common/status/ErrorMessage.tsx similarity index 97% rename from frontend/src/components/status/ErrorMessage.tsx rename to packages/ui/src/common/status/ErrorMessage.tsx index d12d16b4b..0faf7b896 100644 --- a/frontend/src/components/status/ErrorMessage.tsx +++ b/packages/ui/src/common/status/ErrorMessage.tsx @@ -2,7 +2,7 @@ import React, { ReactElement } from "react"; import { FlowUtils } from "../../utils/flow-utils"; import classes from "./ErrorMessage.module.scss"; import { JsonView } from "../code/JsonView/JsonView"; -import { ExternalLink } from "../links/ExternalLink"; +import { ExternalLink } from "../links/ExternalLink/ExternalLink"; import { Callout } from "../misc/Callout/Callout"; import { SizedBox } from "../misc/SizedBox/SizedBox"; diff --git a/frontend/src/components/status/ExecutionStatus.tsx b/packages/ui/src/common/status/ExecutionStatus.tsx similarity index 72% rename from frontend/src/components/status/ExecutionStatus.tsx rename to packages/ui/src/common/status/ExecutionStatus.tsx index 44386339a..5a6fc40af 100644 --- a/frontend/src/components/status/ExecutionStatus.tsx +++ b/packages/ui/src/common/status/ExecutionStatus.tsx @@ -2,12 +2,12 @@ import React, { ReactElement } from "react"; import { ExecutionStatusCode, TransactionStatus } from "@flowser/shared"; import { FlowUtils } from "../../utils/flow-utils"; import classes from "./Status.module.scss"; -import { ReactComponent as ExpiredIcon } from "../../assets/icons/expired-tx-icon.svg"; -import { ReactComponent as SealedIcon } from "../../assets/icons/sealed-tx-icon.svg"; -import { ReactComponent as UnknownIcon } from "../../assets/icons/unknown-tx-icon.svg"; -import { ReactComponent as PendingIcon } from "../../assets/icons/pending-tx-icon.svg"; -import { ReactComponent as FinalizedIcon } from "../../assets/icons/finalised-tx-icon.svg"; -import { ReactComponent as ExecutedIcon } from "../../assets/icons/executed-tx-icon.svg"; +import { ReactComponent as ExpiredIcon } from "../icons/assets/circle-cross.svg"; +import { ReactComponent as SealedIcon } from "../icons/assets/circle-check.svg"; +import { ReactComponent as UnknownIcon } from "../icons/assets/circle-question-mark.svg"; +import { ReactComponent as PendingIcon } from "../icons/assets/pending-tx-icon.svg"; +import { ReactComponent as FinalizedIcon } from "../icons/assets/finalised-tx-icon.svg"; +import { ReactComponent as ExecutedIcon } from "../icons/assets/executed-tx-icon.svg"; export type ExecutionStatusProps = { status: TransactionStatus | undefined; diff --git a/frontend/src/components/status/ExecutionStatusBadge.tsx b/packages/ui/src/common/status/ExecutionStatusBadge.tsx similarity index 92% rename from frontend/src/components/status/ExecutionStatusBadge.tsx rename to packages/ui/src/common/status/ExecutionStatusBadge.tsx index bf6c034c7..3aedf650d 100644 --- a/frontend/src/components/status/ExecutionStatusBadge.tsx +++ b/packages/ui/src/common/status/ExecutionStatusBadge.tsx @@ -1,8 +1,8 @@ import React, { FunctionComponent } from "react"; -import { ExecutionStatusCode, TransactionStatus } from "@flowser/shared"; import classes from "./TransactionStatusBadge.module.scss"; import { FlowUtils } from "../../utils/flow-utils"; import classNames from "classnames"; +import { ExecutionStatusCode, TransactionStatus } from "@onflowser/api"; type ExecutionStatusCodeProps = { status: TransactionStatus | undefined; @@ -39,7 +39,6 @@ function getBackgroundColor(statusCode: ExecutionStatusCode | undefined) { case ExecutionStatusCode.EXECUTION_STATUS_SEALED: return "#A2CE8D"; case ExecutionStatusCode.EXECUTION_STATUS_UNKNOWN: - case ExecutionStatusCode.UNRECOGNIZED: default: return "#D0D2D6"; } @@ -58,7 +57,6 @@ function getTextColor(statusCode: ExecutionStatusCode | undefined) { case ExecutionStatusCode.EXECUTION_STATUS_SEALED: return "#218300"; case ExecutionStatusCode.EXECUTION_STATUS_UNKNOWN: - case ExecutionStatusCode.UNRECOGNIZED: default: return "#837E7E"; } diff --git a/frontend/src/components/status/GrcpStatus.tsx b/packages/ui/src/common/status/GrcpStatus.tsx similarity index 68% rename from frontend/src/components/status/GrcpStatus.tsx rename to packages/ui/src/common/status/GrcpStatus.tsx index ad5f76d86..f330e344f 100644 --- a/frontend/src/components/status/GrcpStatus.tsx +++ b/packages/ui/src/common/status/GrcpStatus.tsx @@ -1,10 +1,8 @@ import React, { ReactElement } from "react"; -import { GrcpStatusCode, TransactionStatus } from "@flowser/shared"; import { FlowUtils } from "../../utils/flow-utils"; import classes from "./Status.module.scss"; -import { ReactComponent as ExpiredIcon } from "../../assets/icons/expired-tx-icon.svg"; -import { ReactComponent as SealedIcon } from "../../assets/icons/sealed-tx-icon.svg"; -import { ReactComponent as UnknownIcon } from "../../assets/icons/unknown-tx-icon.svg"; +import { GrcpStatusCode, TransactionStatus } from "@onflowser/api"; +import { FlowserIcon } from "../icons/FlowserIcon"; export type GrcpStatusProps = { status: TransactionStatus | undefined; @@ -30,11 +28,11 @@ export function GrcpStatusIcon(props: GrcpStatusIconProps): ReactElement { const iconProps = props.size ? { width: props.size, height: props.size } : {}; switch (props.statusCode) { case GrcpStatusCode.GRCP_STATUS_OK: - return ; + return ; case GrcpStatusCode.GRCP_STATUS_FAILED: - return ; + return ; case GrcpStatusCode.UNRECOGNIZED: default: - return ; + return ; } } diff --git a/frontend/src/components/status/GrcpStatusBadge.tsx b/packages/ui/src/common/status/GrcpStatusBadge.tsx similarity index 94% rename from frontend/src/components/status/GrcpStatusBadge.tsx rename to packages/ui/src/common/status/GrcpStatusBadge.tsx index 33d9790b5..81a4294cd 100644 --- a/frontend/src/components/status/GrcpStatusBadge.tsx +++ b/packages/ui/src/common/status/GrcpStatusBadge.tsx @@ -1,8 +1,8 @@ import React, { FunctionComponent } from "react"; import { FlowUtils } from "../../utils/flow-utils"; import classes from "./TransactionStatusBadge.module.scss"; -import { GrcpStatusCode, TransactionStatus } from "@flowser/shared"; import classNames from "classnames"; +import { GrcpStatusCode, TransactionStatus } from "@onflowser/api"; type GrcpStatusBadgeProps = { status: TransactionStatus | undefined; diff --git a/frontend/src/components/status/Status.module.scss b/packages/ui/src/common/status/Status.module.scss similarity index 61% rename from frontend/src/components/status/Status.module.scss rename to packages/ui/src/common/status/Status.module.scss index 9e5db1631..511988294 100644 --- a/frontend/src/components/status/Status.module.scss +++ b/packages/ui/src/common/status/Status.module.scss @@ -1,6 +1,6 @@ -@import "styles/spacings"; -@import "styles/colors"; -@import "styles/typography"; +@import "../../styles/spacings"; +@import "../../styles/colors"; +@import "../../styles/typography"; .root { display: flex; diff --git a/frontend/src/components/status/TransactionStatusBadge.module.scss b/packages/ui/src/common/status/TransactionStatusBadge.module.scss similarity index 61% rename from frontend/src/components/status/TransactionStatusBadge.module.scss rename to packages/ui/src/common/status/TransactionStatusBadge.module.scss index e0c734066..d42b32dc1 100644 --- a/frontend/src/components/status/TransactionStatusBadge.module.scss +++ b/packages/ui/src/common/status/TransactionStatusBadge.module.scss @@ -1,6 +1,6 @@ -@import 'styles/spacings'; -@import 'styles/typography'; -@import 'styles/colors'; +@import '../../styles/spacings'; +@import '../../styles/typography'; +@import '../../styles/colors'; .root { font-size: $font-size-small; diff --git a/frontend/src/components/tabs/BaseTabs/BaseTabs.module.scss b/packages/ui/src/common/tabs/BaseTabs/BaseTabs.module.scss similarity index 92% rename from frontend/src/components/tabs/BaseTabs/BaseTabs.module.scss rename to packages/ui/src/common/tabs/BaseTabs/BaseTabs.module.scss index 11b7fdc72..2723b5562 100644 --- a/frontend/src/components/tabs/BaseTabs/BaseTabs.module.scss +++ b/packages/ui/src/common/tabs/BaseTabs/BaseTabs.module.scss @@ -1,7 +1,7 @@ -@import 'styles/spacings'; -@import 'styles/typography'; -@import 'styles/colors'; -@import 'styles/scrollbars'; +@import '../../../styles/spacings'; +@import '../../../styles/typography'; +@import '../../../styles/colors'; +@import '../../../styles/scrollbars'; .root { display: flex; diff --git a/frontend/src/components/tabs/BaseTabs/BaseTabs.tsx b/packages/ui/src/common/tabs/BaseTabs/BaseTabs.tsx similarity index 100% rename from frontend/src/components/tabs/BaseTabs/BaseTabs.tsx rename to packages/ui/src/common/tabs/BaseTabs/BaseTabs.tsx diff --git a/frontend/src/components/tabs/StyledTabs/StyledTabs.module.scss b/packages/ui/src/common/tabs/StyledTabs/StyledTabs.module.scss similarity index 84% rename from frontend/src/components/tabs/StyledTabs/StyledTabs.module.scss rename to packages/ui/src/common/tabs/StyledTabs/StyledTabs.module.scss index 33a2e115f..33559e22c 100644 --- a/frontend/src/components/tabs/StyledTabs/StyledTabs.module.scss +++ b/packages/ui/src/common/tabs/StyledTabs/StyledTabs.module.scss @@ -1,5 +1,5 @@ -@import "styles/spacings"; -@import "styles/colors"; +@import "../../../styles/spacings"; +@import "../../../styles/colors"; .tab { max-width: 120px; diff --git a/frontend/src/components/tabs/StyledTabs/StyledTabs.tsx b/packages/ui/src/common/tabs/StyledTabs/StyledTabs.tsx similarity index 100% rename from frontend/src/components/tabs/StyledTabs/StyledTabs.tsx rename to packages/ui/src/common/tabs/StyledTabs/StyledTabs.tsx diff --git a/frontend/src/components/time/DateDisplay/DateDisplay.module.scss b/packages/ui/src/common/time/DateDisplay/DateDisplay.module.scss similarity index 100% rename from frontend/src/components/time/DateDisplay/DateDisplay.module.scss rename to packages/ui/src/common/time/DateDisplay/DateDisplay.module.scss diff --git a/frontend/src/components/time/DateDisplay/DateDisplay.tsx b/packages/ui/src/common/time/DateDisplay/DateDisplay.tsx similarity index 100% rename from frontend/src/components/time/DateDisplay/DateDisplay.tsx rename to packages/ui/src/common/time/DateDisplay/DateDisplay.tsx index 5ad107445..2b300945a 100644 --- a/frontend/src/components/time/DateDisplay/DateDisplay.tsx +++ b/packages/ui/src/common/time/DateDisplay/DateDisplay.tsx @@ -1,6 +1,6 @@ import React, { ReactElement } from "react"; -import { TextUtils } from "../../../utils/text-utils"; import classes from "./DateDisplay.module.scss"; +import { TextUtils } from "../../../utils/text-utils"; type DateDisplayProps = { date: string; diff --git a/frontend/src/components/time/TimeAgo/TimeAgo.tsx b/packages/ui/src/common/time/TimeAgo/TimeAgo.tsx similarity index 100% rename from frontend/src/components/time/TimeAgo/TimeAgo.tsx rename to packages/ui/src/common/time/TimeAgo/TimeAgo.tsx diff --git a/frontend/src/modules/contracts/ContractDetails/ContractDetails.module.scss b/packages/ui/src/contracts/ContractDetails/ContractDetails.module.scss similarity index 89% rename from frontend/src/modules/contracts/ContractDetails/ContractDetails.module.scss rename to packages/ui/src/contracts/ContractDetails/ContractDetails.module.scss index 375fe0e45..229488070 100644 --- a/frontend/src/modules/contracts/ContractDetails/ContractDetails.module.scss +++ b/packages/ui/src/contracts/ContractDetails/ContractDetails.module.scss @@ -1,4 +1,4 @@ -@import "styles/spacings"; +@import "../../styles/spacings"; .root { display: flex; diff --git a/frontend/src/modules/contracts/ContractDetails/ContractDetails.tsx b/packages/ui/src/contracts/ContractDetails/ContractDetails.tsx similarity index 75% rename from frontend/src/modules/contracts/ContractDetails/ContractDetails.tsx rename to packages/ui/src/contracts/ContractDetails/ContractDetails.tsx index 5f8b9425d..78e31809e 100644 --- a/frontend/src/modules/contracts/ContractDetails/ContractDetails.tsx +++ b/packages/ui/src/contracts/ContractDetails/ContractDetails.tsx @@ -1,16 +1,16 @@ import React, { FunctionComponent } from "react"; -import FullScreenLoading from "../../../components/loaders/FullScreenLoading/FullScreenLoading"; -import { useGetContract } from "../../../hooks/use-api"; +import FullScreenLoading from "../../common/loaders/FullScreenLoading/FullScreenLoading"; +import { useGetContract } from "../../../../../frontend/src/hooks/use-api"; import classes from "./ContractDetails.module.scss"; import { DetailsCard, DetailsCardColumn, -} from "components/cards/DetailsCard/DetailsCard"; -import { SizedBox } from "../../../components/misc/SizedBox/SizedBox"; -import { CadenceEditor } from "../../../components/code/CadenceEditor/CadenceEditor"; -import { DateDisplay } from "../../../components/time/DateDisplay/DateDisplay"; -import { ProjectLink } from "../../../components/links/ProjectLink"; -import { IdeLink } from "../../../components/links/IdeLink"; +} from "../../common/cards/DetailsCard/DetailsCard"; +import { SizedBox } from "../../common/misc/SizedBox/SizedBox"; +import { CadenceEditor } from "../../common/code/CadenceEditor/CadenceEditor"; +import { DateDisplay } from "../../common/time/DateDisplay/DateDisplay"; +import { ProjectLink } from "../../common/links/ProjectLink"; +import { IdeLink } from "../../common/links/IdeLink"; type ContractDetailsProps = { contractId: string; diff --git a/frontend/src/modules/contracts/ContractsTable/ContractsTable.module.scss b/packages/ui/src/contracts/ContractsTable/ContractsTable.module.scss similarity index 64% rename from frontend/src/modules/contracts/ContractsTable/ContractsTable.module.scss rename to packages/ui/src/contracts/ContractsTable/ContractsTable.module.scss index 82bf6e9ac..238d26f01 100644 --- a/frontend/src/modules/contracts/ContractsTable/ContractsTable.module.scss +++ b/packages/ui/src/contracts/ContractsTable/ContractsTable.module.scss @@ -1,4 +1,4 @@ -@import "styles/colors"; +@import "../../styles/colors"; .tag { border-color: $green-10; diff --git a/frontend/src/modules/contracts/ContractsTable/ContractsTable.tsx b/packages/ui/src/contracts/ContractsTable/ContractsTable.tsx similarity index 80% rename from frontend/src/modules/contracts/ContractsTable/ContractsTable.tsx rename to packages/ui/src/contracts/ContractsTable/ContractsTable.tsx index 4eb303ff5..c04b18f5a 100644 --- a/frontend/src/modules/contracts/ContractsTable/ContractsTable.tsx +++ b/packages/ui/src/contracts/ContractsTable/ContractsTable.tsx @@ -1,16 +1,16 @@ import { createColumnHelper } from "@tanstack/table-core"; -import { DecoratedPollingEntity } from "../../../contexts/timeout-polling.context"; +import { DecoratedPollingEntity } from "../../../../../frontend/src/contexts/timeout-polling.context"; import { AccountContract } from "@flowser/shared"; -import Label from "../../../components/misc/Label/Label"; -import Value from "../../../components/misc/Value/Value"; +import Label from "../../common/misc/Label/Label"; +import Value from "../../common/misc/Value/Value"; import { AccountLink } from "../../accounts/AccountLink/AccountLink"; import React, { ReactElement, useMemo } from "react"; -import { BaseTable } from "../../../components/misc/BaseTable/BaseTable"; -import { ProjectLink } from "../../../components/links/ProjectLink"; -import { Tooltip } from "../../../components/overlays/Tooltip/Tooltip"; -import { BaseBadge } from "../../../components/misc/BaseBadge/BaseBadge"; +import { BaseTable } from "../../common/misc/BaseTable/BaseTable"; +import { ProjectLink } from "../../common/links/ProjectLink"; +import { Tooltip } from "../../common/overlays/Tooltip/Tooltip"; +import { BaseBadge } from "../../common/misc/BaseBadge/BaseBadge"; import classes from "./ContractsTable.module.scss"; -import { TimeAgo } from "../../../components/time/TimeAgo/TimeAgo"; +import { TimeAgo } from "../../common/time/TimeAgo/TimeAgo"; const columnHelper = createColumnHelper>(); diff --git a/frontend/src/modules/events/EventDetails/EventDetails.module.scss b/packages/ui/src/events/EventDetails/EventDetails.module.scss similarity index 60% rename from frontend/src/modules/events/EventDetails/EventDetails.module.scss rename to packages/ui/src/events/EventDetails/EventDetails.module.scss index e29cee3f2..31fb85871 100644 --- a/frontend/src/modules/events/EventDetails/EventDetails.module.scss +++ b/packages/ui/src/events/EventDetails/EventDetails.module.scss @@ -1,5 +1,5 @@ -@import "styles/spacings"; -@import "styles/colors"; +@import "../../styles/spacings"; +@import "../../styles/colors"; .root { display: flex; diff --git a/frontend/src/modules/events/EventDetails/EventDetails.tsx b/packages/ui/src/events/EventDetails/EventDetails.tsx similarity index 72% rename from frontend/src/modules/events/EventDetails/EventDetails.tsx rename to packages/ui/src/events/EventDetails/EventDetails.tsx index f2aa2c0f2..5f628c0ff 100644 --- a/frontend/src/modules/events/EventDetails/EventDetails.tsx +++ b/packages/ui/src/events/EventDetails/EventDetails.tsx @@ -1,20 +1,20 @@ import React, { FunctionComponent } from "react"; -import FullScreenLoading from "../../../components/loaders/FullScreenLoading/FullScreenLoading"; -import { useGetPollingEvents } from "../../../hooks/use-api"; +import FullScreenLoading from "../../common/loaders/FullScreenLoading/FullScreenLoading"; +import { useGetEvents } from "../../../../../frontend/src/hooks/use-api"; import classes from "./EventDetails.module.scss"; import { DetailsCard, DetailsCardColumn, -} from "components/cards/DetailsCard/DetailsCard"; -import { SizedBox } from "../../../components/misc/SizedBox/SizedBox"; -import { DateDisplay } from "../../../components/time/DateDisplay/DateDisplay"; -import { JsonView } from "../../../components/code/JsonView/JsonView"; -import { ProjectLink } from "../../../components/links/ProjectLink"; -import { MiddleEllipsis } from "../../../components/ellipsis/MiddleEllipsis"; -import Value from "../../../components/misc/Value/Value"; +} from "../../common/cards/DetailsCard/DetailsCard"; +import { SizedBox } from "../../common/misc/SizedBox/SizedBox"; +import { DateDisplay } from "../../common/time/DateDisplay/DateDisplay"; +import { JsonView } from "../../common/code/JsonView/JsonView"; +import { ProjectLink } from "../../common/links/ProjectLink"; +import { MiddleEllipsis } from "../../common/ellipsis/MiddleEllipsis"; +import Value from "../../common/misc/Value/Value"; import { EventOriginLink } from "../EventOriginLink/EventOriginLink"; import { EventUtils } from "../utils"; -import { BaseCard } from "../../../components/cards/BaseCard/BaseCard"; +import { BaseCard } from "../../common/cards/BaseCard/BaseCard"; type EventDetailsProps = { eventId: string; @@ -22,7 +22,7 @@ type EventDetailsProps = { export const EventDetails: FunctionComponent = (props) => { const { eventId } = props; - const { data } = useGetPollingEvents(); + const { data } = useGetEvents(); const event = data.find((event) => event.id === eventId); if (!event) { diff --git a/frontend/src/modules/events/EventOriginLink/EventOriginLink.tsx b/packages/ui/src/events/EventOriginLink/EventOriginLink.tsx similarity index 84% rename from frontend/src/modules/events/EventOriginLink/EventOriginLink.tsx rename to packages/ui/src/events/EventOriginLink/EventOriginLink.tsx index 29f6edf9e..661a84ad7 100644 --- a/frontend/src/modules/events/EventOriginLink/EventOriginLink.tsx +++ b/packages/ui/src/events/EventOriginLink/EventOriginLink.tsx @@ -1,6 +1,6 @@ import { Event } from "@flowser/shared"; -import { ProjectLink } from "../../../components/links/ProjectLink"; -import { ExternalLink } from "../../../components/links/ExternalLink"; +import { ProjectLink } from "../../common/links/ProjectLink"; +import { ExternalLink } from "../../common/links/ExternalLink/ExternalLink"; import React, { ReactElement } from "react"; import { EventUtils } from "../utils"; diff --git a/frontend/src/modules/events/EventsTable/EventsTable.module.scss b/packages/ui/src/events/EventsTable/EventsTable.module.scss similarity index 51% rename from frontend/src/modules/events/EventsTable/EventsTable.module.scss rename to packages/ui/src/events/EventsTable/EventsTable.module.scss index 08b33c793..9c8fb2a03 100644 --- a/frontend/src/modules/events/EventsTable/EventsTable.module.scss +++ b/packages/ui/src/events/EventsTable/EventsTable.module.scss @@ -1,5 +1,5 @@ -@import 'styles/spacings'; -@import 'styles/animations'; +@import '../../styles/spacings'; +@import '../../styles/animations'; .hashEvents { max-width: 13vw; diff --git a/frontend/src/modules/events/EventsTable/EventsTable.tsx b/packages/ui/src/events/EventsTable/EventsTable.tsx similarity index 81% rename from frontend/src/modules/events/EventsTable/EventsTable.tsx rename to packages/ui/src/events/EventsTable/EventsTable.tsx index ae66c5588..15e18dd07 100644 --- a/frontend/src/modules/events/EventsTable/EventsTable.tsx +++ b/packages/ui/src/events/EventsTable/EventsTable.tsx @@ -1,16 +1,16 @@ import React, { ReactElement } from "react"; import classes from "./EventsTable.module.scss"; -import Label from "../../../components/misc/Label/Label"; -import Value from "../../../components/misc/Value/Value"; -import { MiddleEllipsis } from "../../../components/ellipsis/MiddleEllipsis"; +import Label from "../../common/misc/Label/Label"; +import Value from "../../common/misc/Value/Value"; +import { MiddleEllipsis } from "../../common/ellipsis/MiddleEllipsis"; import { createColumnHelper } from "@tanstack/table-core"; import { Event } from "@flowser/shared"; -import { BaseTable } from "../../../components/misc/BaseTable/BaseTable"; -import { DecoratedPollingEntity } from "contexts/timeout-polling.context"; -import { ProjectLink } from "../../../components/links/ProjectLink"; +import { BaseTable } from "../../common/misc/BaseTable/BaseTable"; +import { DecoratedPollingEntity } from "frontend/src/contexts/timeout-polling.context"; +import { ProjectLink } from "../../common/links/ProjectLink"; import { EventOriginLink } from "../EventOriginLink/EventOriginLink"; import { EventUtils } from "../utils"; -import { TimeAgo } from "../../../components/time/TimeAgo/TimeAgo"; +import { TimeAgo } from "../../common/time/TimeAgo/TimeAgo"; const columnHelper = createColumnHelper>(); diff --git a/frontend/src/modules/events/utils.ts b/packages/ui/src/events/utils.ts similarity index 100% rename from frontend/src/modules/events/utils.ts rename to packages/ui/src/events/utils.ts diff --git a/packages/ui/src/index.ts b/packages/ui/src/index.ts new file mode 100644 index 000000000..c3e9227a9 --- /dev/null +++ b/packages/ui/src/index.ts @@ -0,0 +1,6 @@ +// export * from "./transactions/TransactionOverview/TransactionOverview"; +// export * from "./transactions/TransactionsTable/TransactionsTable"; +// export * from "./transactions/TransactionSource/TransactionSource"; +// export * from "./transactions/TransactionDetailsTabs/TransactionDetailsTabs"; + +export * from "./accounts/AccountName/AccountName"; diff --git a/frontend/src/modules/interactions/InteractionsPage.module.scss b/packages/ui/src/interactions/InteractionsPage.module.scss similarity index 94% rename from frontend/src/modules/interactions/InteractionsPage.module.scss rename to packages/ui/src/interactions/InteractionsPage.module.scss index b83a1c878..86244e6e6 100644 --- a/frontend/src/modules/interactions/InteractionsPage.module.scss +++ b/packages/ui/src/interactions/InteractionsPage.module.scss @@ -1,5 +1,5 @@ -@import 'styles/spacings'; -@import 'styles/colors'; +@import '../styles/spacings'; +@import '../styles/colors'; .pageRoot { height: 100%; diff --git a/frontend/src/modules/interactions/InteractionsPage.tsx b/packages/ui/src/interactions/InteractionsPage.tsx similarity index 93% rename from frontend/src/modules/interactions/InteractionsPage.tsx rename to packages/ui/src/interactions/InteractionsPage.tsx index a0b55afc0..94596aa9a 100644 --- a/frontend/src/modules/interactions/InteractionsPage.tsx +++ b/packages/ui/src/interactions/InteractionsPage.tsx @@ -1,6 +1,6 @@ import React, { ReactElement, useState } from "react"; import classes from "./InteractionsPage.module.scss"; -import { BaseTabs, BaseTabItem } from "../../components/tabs/BaseTabs/BaseTabs"; +import { BaseTabs, BaseTabItem } from "../common/tabs/BaseTabs/BaseTabs"; import { useInteractionRegistry } from "./contexts/interaction-registry.context"; import { InteractionOutcomeManagerProvider } from "./contexts/outcome.context"; import { InteractionHistory } from "./components/InteractionHistory/InteractionHistory"; @@ -10,9 +10,9 @@ import { } from "./contexts/definition.context"; import { InteractionTemplates } from "./components/InteractionTemplates/InteractionTemplates"; import { ExecutionSettings } from "./components/ExecutionSettings/ExecutionSettings"; -import { CadenceEditor } from "../../components/code/CadenceEditor/CadenceEditor"; +import { CadenceEditor } from "../common/code/CadenceEditor/CadenceEditor"; import { InteractionOutcomeDisplay } from "./components/InteractionOutcomeDisplay/InteractionOutcomeDisplay"; -import { SpinnerWithLabel } from "../../components/loaders/Spinner/SpinnerWithLabel"; +import { SpinnerWithLabel } from "../common/loaders/Spinner/SpinnerWithLabel"; import { InteractionLabel } from "./components/InteractionLabel/InteractionLabel"; export function InteractionsPage(): ReactElement { diff --git a/frontend/src/modules/interactions/components/ExecutionSettings/ExecutionSettings.module.scss b/packages/ui/src/interactions/components/ExecutionSettings/ExecutionSettings.module.scss similarity index 78% rename from frontend/src/modules/interactions/components/ExecutionSettings/ExecutionSettings.module.scss rename to packages/ui/src/interactions/components/ExecutionSettings/ExecutionSettings.module.scss index e180ed9df..53c522d99 100644 --- a/frontend/src/modules/interactions/components/ExecutionSettings/ExecutionSettings.module.scss +++ b/packages/ui/src/interactions/components/ExecutionSettings/ExecutionSettings.module.scss @@ -1,5 +1,5 @@ -@import 'styles/spacings'; -@import 'styles/typography'; +@import '../../../styles/spacings'; +@import '../../../styles/typography'; .root { flex: 1; diff --git a/frontend/src/modules/interactions/components/ExecutionSettings/ExecutionSettings.tsx b/packages/ui/src/interactions/components/ExecutionSettings/ExecutionSettings.tsx similarity index 95% rename from frontend/src/modules/interactions/components/ExecutionSettings/ExecutionSettings.tsx rename to packages/ui/src/interactions/components/ExecutionSettings/ExecutionSettings.tsx index 8ff092cf6..b39e6fd97 100644 --- a/frontend/src/modules/interactions/components/ExecutionSettings/ExecutionSettings.tsx +++ b/packages/ui/src/interactions/components/ExecutionSettings/ExecutionSettings.tsx @@ -1,5 +1,5 @@ import React, { ReactElement, useEffect } from "react"; -import { SizedBox } from "../../../../components/misc/SizedBox/SizedBox"; +import { SizedBox } from "../../../common/misc/SizedBox/SizedBox"; import { ParamBuilder, ParamListBuilder } from "../ParamBuilder/ParamBuilder"; import { CadenceTypeKind, @@ -9,12 +9,12 @@ import { Parameter, } from "@flowser/shared"; import classes from "./ExecutionSettings.module.scss"; -import { LoaderButton } from "../../../../components/buttons/LoaderButton/LoaderButton"; +import { LoaderButton } from "../../../common/buttons/LoaderButton/LoaderButton"; import { useInteractionOutcomeManager } from "../../contexts/outcome.context"; import { useInteractionDefinitionManager } from "../../contexts/definition.context"; -import { Callout } from "../../../../components/misc/Callout/Callout"; -import { ExternalLink } from "../../../../components/links/ExternalLink"; -import { TransactionOptions } from "modules/interactions/core/core-types"; +import { Callout } from "../../../common/misc/Callout/Callout"; +import { ExternalLink } from "../../../common/links/ExternalLink/ExternalLink"; +import { TransactionOptions } from "packages/ui/src/interactions/core/core-types"; export function ExecutionSettings(): ReactElement { return ( diff --git a/frontend/src/modules/interactions/components/InteractionHistory/InteractionHistory.module.scss b/packages/ui/src/interactions/components/InteractionHistory/InteractionHistory.module.scss similarity index 86% rename from frontend/src/modules/interactions/components/InteractionHistory/InteractionHistory.module.scss rename to packages/ui/src/interactions/components/InteractionHistory/InteractionHistory.module.scss index 5fc33f5c1..b31faf050 100644 --- a/frontend/src/modules/interactions/components/InteractionHistory/InteractionHistory.module.scss +++ b/packages/ui/src/interactions/components/InteractionHistory/InteractionHistory.module.scss @@ -1,6 +1,6 @@ -@import "styles/spacings"; -@import "styles/colors"; -@import "styles/animations"; +@import "../../../styles/spacings"; +@import "../../../styles/colors"; +@import "../../../styles/animations"; .loadingRoot { display: flex; diff --git a/frontend/src/modules/interactions/components/InteractionHistory/InteractionHistory.tsx b/packages/ui/src/interactions/components/InteractionHistory/InteractionHistory.tsx similarity index 89% rename from frontend/src/modules/interactions/components/InteractionHistory/InteractionHistory.tsx rename to packages/ui/src/interactions/components/InteractionHistory/InteractionHistory.tsx index fd6d258fa..2a16e9ba3 100644 --- a/frontend/src/modules/interactions/components/InteractionHistory/InteractionHistory.tsx +++ b/packages/ui/src/interactions/components/InteractionHistory/InteractionHistory.tsx @@ -3,17 +3,17 @@ import classes from "./InteractionHistory.module.scss"; import { useGetPollingBlocks, useGetTransactionsByBlock, -} from "../../../../hooks/use-api"; +} from "../../../../../../frontend/src/hooks/use-api"; import { Block, Transaction } from "@flowser/shared"; -import { FlowserIcon } from "../../../../components/icons/FlowserIcon"; -import { SizedBox } from "../../../../components/misc/SizedBox/SizedBox"; -import { Spinner } from "../../../../components/loaders/Spinner/Spinner"; +import { FlowserIcon } from "../../../common/icons/FlowserIcon"; +import { SizedBox } from "../../../common/misc/SizedBox/SizedBox"; +import { Spinner } from "../../../common/loaders/Spinner/Spinner"; import { useInteractionRegistry } from "../../contexts/interaction-registry.context"; import { useTransactionName } from "../../hooks/use-transaction-name"; import { MenuItem } from "@szhsin/react-menu"; -import { FlowserMenu } from "../../../../components/overlays/menus/Menu"; -import { GrcpStatusIcon } from "../../../../components/status/GrcpStatus"; -import { useSnapshotsManager } from "../../../../contexts/snapshots.context"; +import { FlowserMenu } from "../../../common/overlays/Menu/Menu"; +import { GrcpStatusIcon } from "../../../common/status/GrcpStatus"; +import { useSnapshotsManager } from "../../../../../../frontend/src/contexts/snapshots.context"; export function InteractionHistory(): ReactElement { const { data: blocks } = useGetPollingBlocks(); diff --git a/frontend/src/modules/interactions/components/InteractionIcon/InteractionIcon.module.scss b/packages/ui/src/interactions/components/InteractionIcon/InteractionIcon.module.scss similarity index 75% rename from frontend/src/modules/interactions/components/InteractionIcon/InteractionIcon.module.scss rename to packages/ui/src/interactions/components/InteractionIcon/InteractionIcon.module.scss index 5d989fb3a..298e67dde 100644 --- a/frontend/src/modules/interactions/components/InteractionIcon/InteractionIcon.module.scss +++ b/packages/ui/src/interactions/components/InteractionIcon/InteractionIcon.module.scss @@ -1,4 +1,4 @@ -@import "styles/colors"; +@import "../../../styles/colors"; .script {} diff --git a/frontend/src/modules/interactions/components/InteractionIcon/InteractionIcon.tsx b/packages/ui/src/interactions/components/InteractionIcon/InteractionIcon.tsx similarity index 90% rename from frontend/src/modules/interactions/components/InteractionIcon/InteractionIcon.tsx rename to packages/ui/src/interactions/components/InteractionIcon/InteractionIcon.tsx index ce242a565..8632f1d14 100644 --- a/frontend/src/modules/interactions/components/InteractionIcon/InteractionIcon.tsx +++ b/packages/ui/src/interactions/components/InteractionIcon/InteractionIcon.tsx @@ -1,6 +1,6 @@ import React, { ReactElement } from "react"; import { InteractionKind } from "@flowser/shared"; -import { FlowserIcon } from "../../../../components/icons/FlowserIcon"; +import { FlowserIcon } from "../../../common/icons/FlowserIcon"; import classes from "./InteractionIcon.module.scss"; type InteractionIconProps = { diff --git a/frontend/src/modules/interactions/components/InteractionLabel/InteractionLabel.module.scss b/packages/ui/src/interactions/components/InteractionLabel/InteractionLabel.module.scss similarity index 88% rename from frontend/src/modules/interactions/components/InteractionLabel/InteractionLabel.module.scss rename to packages/ui/src/interactions/components/InteractionLabel/InteractionLabel.module.scss index 33268a137..87aa9f6d9 100644 --- a/frontend/src/modules/interactions/components/InteractionLabel/InteractionLabel.module.scss +++ b/packages/ui/src/interactions/components/InteractionLabel/InteractionLabel.module.scss @@ -1,4 +1,4 @@ -@import "styles/spacings"; +@import "../../../styles/spacings"; .root { display: flex; diff --git a/frontend/src/modules/interactions/components/InteractionLabel/InteractionLabel.tsx b/packages/ui/src/interactions/components/InteractionLabel/InteractionLabel.tsx similarity index 74% rename from frontend/src/modules/interactions/components/InteractionLabel/InteractionLabel.tsx rename to packages/ui/src/interactions/components/InteractionLabel/InteractionLabel.tsx index 61e25687e..a695c77b2 100644 --- a/frontend/src/modules/interactions/components/InteractionLabel/InteractionLabel.tsx +++ b/packages/ui/src/interactions/components/InteractionLabel/InteractionLabel.tsx @@ -1,11 +1,11 @@ import React, { ReactElement } from "react"; import { InteractionIcon } from "../InteractionIcon/InteractionIcon"; -import { SizedBox } from "../../../../components/misc/SizedBox/SizedBox"; -import { useGetParsedInteraction } from "../../../../hooks/use-api"; -import { Spinner } from "../../../../components/loaders/Spinner/Spinner"; +import { SizedBox } from "../../../common/misc/SizedBox/SizedBox"; +import { useGetParsedInteraction } from "../../../../../../frontend/src/hooks/use-api"; +import { Spinner } from "../../../common/loaders/Spinner/Spinner"; import classes from "./InteractionLabel.module.scss"; import { InteractionKind } from "@flowser/shared"; -import { InteractionDefinition } from "modules/interactions/core/core-types"; +import { InteractionDefinition } from "packages/ui/src/interactions/core/core-types"; type InteractionLabelProps = { interaction: InteractionDefinition; diff --git a/frontend/src/modules/interactions/components/InteractionOutcomeDisplay/InteractionOutcomeDisplay.module.scss b/packages/ui/src/interactions/components/InteractionOutcomeDisplay/InteractionOutcomeDisplay.module.scss similarity index 82% rename from frontend/src/modules/interactions/components/InteractionOutcomeDisplay/InteractionOutcomeDisplay.module.scss rename to packages/ui/src/interactions/components/InteractionOutcomeDisplay/InteractionOutcomeDisplay.module.scss index a0b21f28c..5246be264 100644 --- a/frontend/src/modules/interactions/components/InteractionOutcomeDisplay/InteractionOutcomeDisplay.module.scss +++ b/packages/ui/src/interactions/components/InteractionOutcomeDisplay/InteractionOutcomeDisplay.module.scss @@ -1,4 +1,4 @@ -@import "styles/spacings"; +@import "../../../styles/spacings"; .root { max-height: 40vh; diff --git a/frontend/src/modules/interactions/components/InteractionOutcomeDisplay/InteractionOutcomeDisplay.tsx b/packages/ui/src/interactions/components/InteractionOutcomeDisplay/InteractionOutcomeDisplay.tsx similarity index 87% rename from frontend/src/modules/interactions/components/InteractionOutcomeDisplay/InteractionOutcomeDisplay.tsx rename to packages/ui/src/interactions/components/InteractionOutcomeDisplay/InteractionOutcomeDisplay.tsx index b0419ddce..174a4d5a4 100644 --- a/frontend/src/modules/interactions/components/InteractionOutcomeDisplay/InteractionOutcomeDisplay.tsx +++ b/packages/ui/src/interactions/components/InteractionOutcomeDisplay/InteractionOutcomeDisplay.tsx @@ -1,17 +1,17 @@ import React, { ReactElement, useEffect, useState } from "react"; import { useInteractionOutcomeManager } from "../../contexts/outcome.context"; -import { ScriptError } from "../../../../components/status/ErrorMessage"; -import { JsonView } from "../../../../components/code/JsonView/JsonView"; -import { useGetTransaction } from "../../../../hooks/use-api"; +import { ScriptError } from "../../../common/status/ErrorMessage"; +import { JsonView } from "../../../common/code/JsonView/JsonView"; +import { useGetTransaction } from "../../../../../../frontend/src/hooks/use-api"; import classes from "./InteractionOutcomeDisplay.module.scss"; -import { BaseTabItem } from "../../../../components/tabs/BaseTabs/BaseTabs"; -import { Callout } from "../../../../components/misc/Callout/Callout"; +import { BaseTabItem } from "../../../common/tabs/BaseTabs/BaseTabs"; +import { Callout } from "../../../common/misc/Callout/Callout"; import { useInteractionDefinitionManager } from "../../contexts/definition.context"; import { InteractionKind } from "@flowser/shared"; -import { ExternalLink } from "../../../../components/links/ExternalLink"; -import { LineSeparator } from "../../../../components/misc/LineSeparator/LineSeparator"; -import { SpinnerWithLabel } from "../../../../components/loaders/Spinner/SpinnerWithLabel"; -import { StyledTabs } from "../../../../components/tabs/StyledTabs/StyledTabs"; +import { ExternalLink } from "../../../common/links/ExternalLink/ExternalLink"; +import { LineSeparator } from "../../../common/misc/LineSeparator/LineSeparator"; +import { SpinnerWithLabel } from "../../../common/loaders/Spinner/SpinnerWithLabel"; +import { StyledTabs } from "../../../common/tabs/StyledTabs/StyledTabs"; import { TransactionDetailsTabs } from "../../../transactions/TransactionDetailsTabs/TransactionDetailsTabs"; import { ScriptOutcome, TransactionOutcome } from "../../core/core-types"; diff --git a/frontend/src/modules/interactions/components/InteractionTemplates/InteractionTemplates.module.scss b/packages/ui/src/interactions/components/InteractionTemplates/InteractionTemplates.module.scss similarity index 86% rename from frontend/src/modules/interactions/components/InteractionTemplates/InteractionTemplates.module.scss rename to packages/ui/src/interactions/components/InteractionTemplates/InteractionTemplates.module.scss index bd679a72d..8f8ce5cce 100644 --- a/frontend/src/modules/interactions/components/InteractionTemplates/InteractionTemplates.module.scss +++ b/packages/ui/src/interactions/components/InteractionTemplates/InteractionTemplates.module.scss @@ -1,8 +1,8 @@ -@import "styles/colors"; -@import "styles/spacings"; -@import "styles/typography"; -@import "styles/animations"; -@import "styles/scrollbars"; +@import "../../../styles/colors"; +@import "../../../styles/spacings"; +@import "../../../styles/typography"; +@import "../../../styles/animations"; +@import "../../../styles/scrollbars"; .root { height: 100%; diff --git a/frontend/src/modules/interactions/components/InteractionTemplates/InteractionTemplates.tsx b/packages/ui/src/interactions/components/InteractionTemplates/InteractionTemplates.tsx similarity index 89% rename from frontend/src/modules/interactions/components/InteractionTemplates/InteractionTemplates.tsx rename to packages/ui/src/interactions/components/InteractionTemplates/InteractionTemplates.tsx index 47d878721..a1acd6397 100644 --- a/frontend/src/modules/interactions/components/InteractionTemplates/InteractionTemplates.tsx +++ b/packages/ui/src/interactions/components/InteractionTemplates/InteractionTemplates.tsx @@ -1,15 +1,15 @@ import React, { ReactElement, useMemo, useState } from "react"; import { useInteractionRegistry } from "../../contexts/interaction-registry.context"; import classes from "./InteractionTemplates.module.scss"; -import { FlowserIcon } from "../../../../components/icons/FlowserIcon"; -import { PrimaryButton } from "../../../../components/buttons/PrimaryButton/PrimaryButton"; -import { Input } from "../../../../components/inputs/Input/Input"; -import { SearchInput } from "../../../../components/inputs/SearchInput/SearchInput"; -import { useConfirmDialog } from "../../../../contexts/confirm-dialog.context"; +import { FlowserIcon } from "../../../common/icons/FlowserIcon"; +import { PrimaryButton } from "../../../common/buttons/PrimaryButton/PrimaryButton"; +import { Input } from "../../../common/inputs/Input/Input"; +import { SearchInput } from "../../../common/inputs/SearchInput/SearchInput"; +import { useConfirmDialog } from "../../../../../../frontend/src/contexts/confirm-dialog.context"; import classNames from "classnames"; import { InteractionLabel } from "../InteractionLabel/InteractionLabel"; import { useTemplatesRegistry } from "../../contexts/templates.context"; -import { IdeLink } from "../../../../components/links/IdeLink"; +import { IdeLink } from "../../../common/links/IdeLink"; export function InteractionTemplates(): ReactElement { return ( diff --git a/frontend/src/modules/interactions/components/ParamBuilder/ParamBuilder.module.scss b/packages/ui/src/interactions/components/ParamBuilder/ParamBuilder.module.scss similarity index 78% rename from frontend/src/modules/interactions/components/ParamBuilder/ParamBuilder.module.scss rename to packages/ui/src/interactions/components/ParamBuilder/ParamBuilder.module.scss index 463183c66..f1fc408c4 100644 --- a/frontend/src/modules/interactions/components/ParamBuilder/ParamBuilder.module.scss +++ b/packages/ui/src/interactions/components/ParamBuilder/ParamBuilder.module.scss @@ -1,5 +1,5 @@ -@import "styles/spacings"; -@import "styles/colors"; +@import "../../../styles/spacings"; +@import "../../../styles/colors"; .paramListRoot { display: flex; diff --git a/frontend/src/modules/interactions/components/ParamBuilder/ParamBuilder.tsx b/packages/ui/src/interactions/components/ParamBuilder/ParamBuilder.tsx similarity index 100% rename from frontend/src/modules/interactions/components/ParamBuilder/ParamBuilder.tsx rename to packages/ui/src/interactions/components/ParamBuilder/ParamBuilder.tsx diff --git a/frontend/src/modules/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.module.scss b/packages/ui/src/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.module.scss similarity index 91% rename from frontend/src/modules/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.module.scss rename to packages/ui/src/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.module.scss index 917985872..8483c8518 100644 --- a/frontend/src/modules/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.module.scss +++ b/packages/ui/src/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.module.scss @@ -1,7 +1,7 @@ -@import "styles/spacings"; -@import "styles/colors"; -@import "styles/scrollbars"; -@import 'styles/rules'; +@import "../../../../styles/spacings"; +@import "../../../../styles/colors"; +@import "../../../../styles/scrollbars"; +@import '../../../../styles/rules'; $avatar-size: 30px; diff --git a/frontend/src/modules/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.tsx b/packages/ui/src/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.tsx similarity index 91% rename from frontend/src/modules/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.tsx rename to packages/ui/src/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.tsx index 0c92de5cc..7d903a7a0 100644 --- a/frontend/src/modules/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.tsx +++ b/packages/ui/src/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.tsx @@ -1,14 +1,14 @@ import React, { ReactElement, useEffect, useMemo, useState } from "react"; import classes from "./AddressBuilder.module.scss"; import { CadenceValueBuilder } from "../interface"; -import { useGetPollingAccounts } from "../../../../../hooks/use-api"; +import { useGetPollingAccounts } from "../../../../../../../frontend/src/hooks/use-api"; import { AccountAvatar } from "../../../../accounts/AccountAvatar/AccountAvatar"; import { AccountName } from "../../../../accounts/AccountName/AccountName"; -import { FlowserIcon } from "../../../../../components/icons/FlowserIcon"; +import { FlowserIcon } from "../../../../common/icons/FlowserIcon"; import classNames from "classnames"; -import { ServiceRegistry } from "../../../../../services/service-registry"; +import { ServiceRegistry } from "../../../../../../../frontend/src/services/service-registry"; import { Account, FclValues } from "@flowser/shared"; -import { Spinner } from "../../../../../components/loaders/Spinner/Spinner"; +import { Spinner } from "../../../../common/loaders/Spinner/Spinner"; export function AddressBuilder(props: CadenceValueBuilder): ReactElement { const { disabled, value, setValue, addressBuilderOptions } = props; @@ -83,7 +83,7 @@ function AccountButton(props: AccountButtonProps) { ); diff --git a/frontend/src/modules/interactions/components/ValueBuilder/ArrayBuilder/ArrayBuilder.module.scss b/packages/ui/src/interactions/components/ValueBuilder/ArrayBuilder/ArrayBuilder.module.scss similarity index 87% rename from frontend/src/modules/interactions/components/ValueBuilder/ArrayBuilder/ArrayBuilder.module.scss rename to packages/ui/src/interactions/components/ValueBuilder/ArrayBuilder/ArrayBuilder.module.scss index f638815d5..c8ccc71c1 100644 --- a/frontend/src/modules/interactions/components/ValueBuilder/ArrayBuilder/ArrayBuilder.module.scss +++ b/packages/ui/src/interactions/components/ValueBuilder/ArrayBuilder/ArrayBuilder.module.scss @@ -1,4 +1,4 @@ -@import "styles/spacings"; +@import "../../../../styles/spacings"; .root { display: flex; diff --git a/frontend/src/modules/interactions/components/ValueBuilder/ArrayBuilder/ArrayBuilder.tsx b/packages/ui/src/interactions/components/ValueBuilder/ArrayBuilder/ArrayBuilder.tsx similarity index 93% rename from frontend/src/modules/interactions/components/ValueBuilder/ArrayBuilder/ArrayBuilder.tsx rename to packages/ui/src/interactions/components/ValueBuilder/ArrayBuilder/ArrayBuilder.tsx index 68155230d..c84b70b16 100644 --- a/frontend/src/modules/interactions/components/ValueBuilder/ArrayBuilder/ArrayBuilder.tsx +++ b/packages/ui/src/interactions/components/ValueBuilder/ArrayBuilder/ArrayBuilder.tsx @@ -3,8 +3,8 @@ import { CadenceValueBuilder } from "../interface"; import { ValueBuilder } from "../ValueBuilder"; import classes from "./ArrayBuilder.module.scss"; import { FclArrayValue, FclValue, FclValues } from "@flowser/shared"; -import { SimpleButton } from "../../../../../components/buttons/SimpleButton/SimpleButton"; -import { SizedBox } from "../../../../../components/misc/SizedBox/SizedBox"; +import { SimpleButton } from "../../../../common/buttons/SimpleButton/SimpleButton"; +import { SizedBox } from "../../../../common/misc/SizedBox/SizedBox"; export function ArrayBuilder(props: CadenceValueBuilder): ReactElement { const { disabled, type, value, setValue } = props; diff --git a/frontend/src/modules/interactions/components/ValueBuilder/BoolBuilder/BoolBuilder.tsx b/packages/ui/src/interactions/components/ValueBuilder/BoolBuilder/BoolBuilder.tsx similarity index 93% rename from frontend/src/modules/interactions/components/ValueBuilder/BoolBuilder/BoolBuilder.tsx rename to packages/ui/src/interactions/components/ValueBuilder/BoolBuilder/BoolBuilder.tsx index efc9de9bb..78a9348f5 100644 --- a/frontend/src/modules/interactions/components/ValueBuilder/BoolBuilder/BoolBuilder.tsx +++ b/packages/ui/src/interactions/components/ValueBuilder/BoolBuilder/BoolBuilder.tsx @@ -1,7 +1,7 @@ import React, { ReactElement, useEffect } from "react"; import { CadenceValueBuilder } from "../interface"; import { FclValues } from "@flowser/shared"; -import SelectInput from "../../../../../components/inputs/SelectInput/SelectInput"; +import SelectInput from "../../../../common/inputs/SelectInput/SelectInput"; export function BoolBuilder(props: CadenceValueBuilder): ReactElement { const { disabled, value, setValue } = props; diff --git a/frontend/src/modules/interactions/components/ValueBuilder/DictionaryBuilder/DictionaryBuilder.module.scss b/packages/ui/src/interactions/components/ValueBuilder/DictionaryBuilder/DictionaryBuilder.module.scss similarity index 78% rename from frontend/src/modules/interactions/components/ValueBuilder/DictionaryBuilder/DictionaryBuilder.module.scss rename to packages/ui/src/interactions/components/ValueBuilder/DictionaryBuilder/DictionaryBuilder.module.scss index 144dab430..27ac823c6 100644 --- a/frontend/src/modules/interactions/components/ValueBuilder/DictionaryBuilder/DictionaryBuilder.module.scss +++ b/packages/ui/src/interactions/components/ValueBuilder/DictionaryBuilder/DictionaryBuilder.module.scss @@ -1,5 +1,5 @@ -@import "styles/spacings"; -@import "styles/colors"; +@import "../../../../styles/spacings"; +@import "../../../../styles/colors"; .root { display: flex; diff --git a/frontend/src/modules/interactions/components/ValueBuilder/DictionaryBuilder/DictionaryBuilder.tsx b/packages/ui/src/interactions/components/ValueBuilder/DictionaryBuilder/DictionaryBuilder.tsx similarity index 96% rename from frontend/src/modules/interactions/components/ValueBuilder/DictionaryBuilder/DictionaryBuilder.tsx rename to packages/ui/src/interactions/components/ValueBuilder/DictionaryBuilder/DictionaryBuilder.tsx index 80bcd075b..99ed6f6e3 100644 --- a/frontend/src/modules/interactions/components/ValueBuilder/DictionaryBuilder/DictionaryBuilder.tsx +++ b/packages/ui/src/interactions/components/ValueBuilder/DictionaryBuilder/DictionaryBuilder.tsx @@ -2,11 +2,11 @@ import React, { ReactElement, useEffect, useRef } from "react"; import { CadenceValueBuilder } from "../interface"; import { ValueBuilder } from "../ValueBuilder"; import { FclDictionaryEntry, FclValue, FclValues } from "@flowser/shared"; -import { MultiMap } from "utils/multi-map"; +import { MultiMap } from "frontend/src/utils/multi-map"; import toast from "react-hot-toast"; import classes from "./DictionaryBuilder.module.scss"; -import { SimpleButton } from "../../../../../components/buttons/SimpleButton/SimpleButton"; -import { SizedBox } from "../../../../../components/misc/SizedBox/SizedBox"; +import { SimpleButton } from "../../../../common/buttons/SimpleButton/SimpleButton"; +import { SizedBox } from "../../../../common/misc/SizedBox/SizedBox"; export function DictionaryBuilder(props: CadenceValueBuilder): ReactElement { const { disabled, type, value, setValue } = props; diff --git a/frontend/src/modules/interactions/components/ValueBuilder/FixedPointNumberBuilder/FixedPointNumberBuilder.tsx b/packages/ui/src/interactions/components/ValueBuilder/FixedPointNumberBuilder/FixedPointNumberBuilder.tsx similarity index 92% rename from frontend/src/modules/interactions/components/ValueBuilder/FixedPointNumberBuilder/FixedPointNumberBuilder.tsx rename to packages/ui/src/interactions/components/ValueBuilder/FixedPointNumberBuilder/FixedPointNumberBuilder.tsx index 506ac4a3a..9cd57ae81 100644 --- a/frontend/src/modules/interactions/components/ValueBuilder/FixedPointNumberBuilder/FixedPointNumberBuilder.tsx +++ b/packages/ui/src/interactions/components/ValueBuilder/FixedPointNumberBuilder/FixedPointNumberBuilder.tsx @@ -1,6 +1,6 @@ import React, { ReactElement, useEffect } from "react"; import { CadenceValueBuilder } from "../interface"; -import { Input } from "../../../../../components/inputs/Input/Input"; +import { Input } from "../../../../common/inputs/Input/Input"; import { FclValues } from "@flowser/shared"; export function FixedPointNumberBuilder( diff --git a/frontend/src/modules/interactions/components/ValueBuilder/IntegerNumberBuilder/IntegerNumberBuilder.tsx b/packages/ui/src/interactions/components/ValueBuilder/IntegerNumberBuilder/IntegerNumberBuilder.tsx similarity index 92% rename from frontend/src/modules/interactions/components/ValueBuilder/IntegerNumberBuilder/IntegerNumberBuilder.tsx rename to packages/ui/src/interactions/components/ValueBuilder/IntegerNumberBuilder/IntegerNumberBuilder.tsx index 25bbdcd6e..93b0d89e8 100644 --- a/frontend/src/modules/interactions/components/ValueBuilder/IntegerNumberBuilder/IntegerNumberBuilder.tsx +++ b/packages/ui/src/interactions/components/ValueBuilder/IntegerNumberBuilder/IntegerNumberBuilder.tsx @@ -1,6 +1,6 @@ import React, { ReactElement, useEffect } from "react"; import { CadenceValueBuilder } from "../interface"; -import { Input } from "../../../../../components/inputs/Input/Input"; +import { Input } from "../../../../common/inputs/Input/Input"; import { FclValues } from "@flowser/shared"; export function IntegerNumberBuilder(props: CadenceValueBuilder): ReactElement { diff --git a/frontend/src/modules/interactions/components/ValueBuilder/PathBuilder/PathBuilder.tsx b/packages/ui/src/interactions/components/ValueBuilder/PathBuilder/PathBuilder.tsx similarity index 95% rename from frontend/src/modules/interactions/components/ValueBuilder/PathBuilder/PathBuilder.tsx rename to packages/ui/src/interactions/components/ValueBuilder/PathBuilder/PathBuilder.tsx index bb84f1828..45961acdc 100644 --- a/frontend/src/modules/interactions/components/ValueBuilder/PathBuilder/PathBuilder.tsx +++ b/packages/ui/src/interactions/components/ValueBuilder/PathBuilder/PathBuilder.tsx @@ -4,8 +4,8 @@ import { ReactElement, useEffect } from "react"; import { CadenceValueBuilder } from "../interface"; import SelectInput, { SelectInputOption, -} from "../../../../../components/inputs/SelectInput/SelectInput"; -import { Input } from "../../../../../components/inputs/Input/Input"; +} from "../../../../common/inputs/SelectInput/SelectInput"; +import { Input } from "../../../../common/inputs/Input/Input"; export function PathBuilder(props: CadenceValueBuilder): ReactElement { const { disabled, type, value, setValue } = props; diff --git a/frontend/src/modules/interactions/components/ValueBuilder/TextualBuilder/TextualBuilder.tsx b/packages/ui/src/interactions/components/ValueBuilder/TextualBuilder/TextualBuilder.tsx similarity index 91% rename from frontend/src/modules/interactions/components/ValueBuilder/TextualBuilder/TextualBuilder.tsx rename to packages/ui/src/interactions/components/ValueBuilder/TextualBuilder/TextualBuilder.tsx index 0398c87c4..dffa8f8e2 100644 --- a/frontend/src/modules/interactions/components/ValueBuilder/TextualBuilder/TextualBuilder.tsx +++ b/packages/ui/src/interactions/components/ValueBuilder/TextualBuilder/TextualBuilder.tsx @@ -1,6 +1,6 @@ import React, { ReactElement, useEffect } from "react"; import { CadenceValueBuilder } from "../interface"; -import { Input } from "../../../../../components/inputs/Input/Input"; +import { Input } from "../../../../common/inputs/Input/Input"; export function TextualBuilder(props: CadenceValueBuilder): ReactElement { const { disabled, value, setValue } = props; diff --git a/frontend/src/modules/interactions/components/ValueBuilder/ValueBuilder.tsx b/packages/ui/src/interactions/components/ValueBuilder/ValueBuilder.tsx similarity index 86% rename from frontend/src/modules/interactions/components/ValueBuilder/ValueBuilder.tsx rename to packages/ui/src/interactions/components/ValueBuilder/ValueBuilder.tsx index 79158f473..d4830746b 100644 --- a/frontend/src/modules/interactions/components/ValueBuilder/ValueBuilder.tsx +++ b/packages/ui/src/interactions/components/ValueBuilder/ValueBuilder.tsx @@ -1,5 +1,4 @@ import React from "react"; -import { CadenceTypeKind } from "@flowser/shared"; import { ReactElement } from "react"; import { CadenceValueBuilder } from "./interface"; import { TextualBuilder } from "./TextualBuilder/TextualBuilder"; @@ -9,11 +8,12 @@ import { AddressBuilder } from "./AddressBuilder/AddressBuilder"; import { DictionaryBuilder } from "./DictionaryBuilder/DictionaryBuilder"; import { PathBuilder } from "./PathBuilder/PathBuilder"; import { BoolBuilder } from "./BoolBuilder/BoolBuilder"; -import { Callout } from "../../../../components/misc/Callout/Callout"; -import { ExternalLink } from "../../../../components/links/ExternalLink"; -import { FlowserIcon } from "../../../../components/icons/FlowserIcon"; -import { SizedBox } from "../../../../components/misc/SizedBox/SizedBox"; +import { Callout } from "../../../common/misc/Callout/Callout"; +import { ExternalLink } from "../../../common/links/ExternalLink/ExternalLink"; +import { FlowserIcon } from "../../../common/icons/FlowserIcon"; +import { SizedBox } from "../../../common/misc/SizedBox/SizedBox"; import { IntegerNumberBuilder } from "./IntegerNumberBuilder/IntegerNumberBuilder"; +import { CadenceTypeKind } from "@onflowser/api"; export function ValueBuilder(props: CadenceValueBuilder): ReactElement { const { type } = props; diff --git a/frontend/src/modules/interactions/components/ValueBuilder/interface.ts b/packages/ui/src/interactions/components/ValueBuilder/interface.ts similarity index 100% rename from frontend/src/modules/interactions/components/ValueBuilder/interface.ts rename to packages/ui/src/interactions/components/ValueBuilder/interface.ts diff --git a/frontend/src/modules/interactions/contexts/definition.context.tsx b/packages/ui/src/interactions/contexts/definition.context.tsx similarity index 96% rename from frontend/src/modules/interactions/contexts/definition.context.tsx rename to packages/ui/src/interactions/contexts/definition.context.tsx index 792de358a..e97ce5d06 100644 --- a/frontend/src/modules/interactions/contexts/definition.context.tsx +++ b/packages/ui/src/interactions/contexts/definition.context.tsx @@ -5,7 +5,7 @@ import React, { useContext, } from "react"; import { useInteractionRegistry } from "./interaction-registry.context"; -import { useGetParsedInteraction } from "../../../hooks/use-api"; +import { useGetParsedInteraction } from "../../../../../frontend/src/hooks/use-api"; import { FclValue, Interaction } from "@flowser/shared"; import { InteractionDefinition } from "../core/core-types"; diff --git a/frontend/src/modules/interactions/contexts/interaction-registry.context.tsx b/packages/ui/src/interactions/contexts/interaction-registry.context.tsx similarity index 100% rename from frontend/src/modules/interactions/contexts/interaction-registry.context.tsx rename to packages/ui/src/interactions/contexts/interaction-registry.context.tsx diff --git a/frontend/src/modules/interactions/contexts/outcome.context.tsx b/packages/ui/src/interactions/contexts/outcome.context.tsx similarity index 97% rename from frontend/src/modules/interactions/contexts/outcome.context.tsx rename to packages/ui/src/interactions/contexts/outcome.context.tsx index dbfad4eeb..b49cdac8a 100644 --- a/frontend/src/modules/interactions/contexts/outcome.context.tsx +++ b/packages/ui/src/interactions/contexts/outcome.context.tsx @@ -1,4 +1,4 @@ -import { ServiceRegistry } from "../../../services/service-registry"; +import { ServiceRegistry } from "../../../../../frontend/src/services/service-registry"; import React, { createContext, ReactElement, @@ -6,7 +6,7 @@ import React, { useContext, useMemo, } from "react"; -import { CommonUtils } from "../../../utils/common-utils"; +import { CommonUtils } from "../../../../../frontend/src/utils/common-utils"; import * as fcl from "@onflow/fcl"; import { InteractionKind, diff --git a/frontend/src/modules/interactions/contexts/templates.context.tsx b/packages/ui/src/interactions/contexts/templates.context.tsx similarity index 96% rename from frontend/src/modules/interactions/contexts/templates.context.tsx rename to packages/ui/src/interactions/contexts/templates.context.tsx index ab5c47acd..299e4c5b5 100644 --- a/frontend/src/modules/interactions/contexts/templates.context.tsx +++ b/packages/ui/src/interactions/contexts/templates.context.tsx @@ -1,8 +1,8 @@ import React, { createContext, ReactElement, useContext, useMemo } from "react"; -import { useLocalStorage } from "usehooks-ts"; -import { FclValue } from "@flowser/shared"; -import { useGetPollingFlowInteractionTemplates } from "../../../hooks/use-api"; +import { useGetPollingFlowInteractionTemplates } from "../../../../../frontend/src/hooks/use-api"; import { InteractionDefinition } from "../core/core-types"; +import { FclValue } from "@onflowser/core"; +import { useLocalStorage } from "@uidotdev/usehooks"; type InteractionTemplatesRegistry = { templates: InteractionDefinitionTemplate[]; diff --git a/frontend/src/modules/interactions/core/core-types.ts b/packages/ui/src/interactions/core/core-types.ts similarity index 100% rename from frontend/src/modules/interactions/core/core-types.ts rename to packages/ui/src/interactions/core/core-types.ts diff --git a/frontend/src/modules/interactions/core/core-utils.ts b/packages/ui/src/interactions/core/core-utils.ts similarity index 100% rename from frontend/src/modules/interactions/core/core-utils.ts rename to packages/ui/src/interactions/core/core-utils.ts diff --git a/frontend/src/modules/interactions/hooks/use-transaction-name.ts b/packages/ui/src/interactions/hooks/use-transaction-name.ts similarity index 94% rename from frontend/src/modules/interactions/hooks/use-transaction-name.ts rename to packages/ui/src/interactions/hooks/use-transaction-name.ts index 0c067bf3e..2c86f31d7 100644 --- a/frontend/src/modules/interactions/hooks/use-transaction-name.ts +++ b/packages/ui/src/interactions/hooks/use-transaction-name.ts @@ -1,11 +1,11 @@ import { useInteractionRegistry } from "../contexts/interaction-registry.context"; import { useMemo } from "react"; -import { Transaction } from "@flowser/shared"; import { useTemplatesRegistry } from "../contexts/templates.context"; import { InteractionUtils } from "../core/core-utils"; +import { FlowTransaction } from "@onflowser/api"; type UseInteractionNameProps = { - transaction: Transaction | undefined; + transaction: FlowTransaction | undefined; }; enum TransactionKind { @@ -93,7 +93,7 @@ export function useTransactionName( } function getStandardInteractionName( - transaction: Transaction + transaction: FlowTransaction ): string | undefined { const kind = transactionKindBySource.get( InteractionUtils.normalizeCadenceCode(transaction.script) @@ -115,7 +115,7 @@ function getStandardInteractionName( } } -function getArgumentValueById(transaction: Transaction, id: string) { +function getArgumentValueById(transaction: FlowTransaction, id: string) { return JSON.parse( transaction.arguments.find((argument) => argument.identifier === id) ?.valueAsJson ?? "" diff --git a/frontend/src/modules/logs/Logs.module.scss b/packages/ui/src/logs/Logs.module.scss similarity index 94% rename from frontend/src/modules/logs/Logs.module.scss rename to packages/ui/src/logs/Logs.module.scss index 906bbd9f0..2327fae3f 100644 --- a/frontend/src/modules/logs/Logs.module.scss +++ b/packages/ui/src/logs/Logs.module.scss @@ -1,7 +1,7 @@ -@import 'styles/colors'; -@import 'styles/spacings'; -@import 'styles/typography'; -@import 'styles/scrollbars'; +@import '../styles/colors'; +@import '../styles/spacings'; +@import '../styles/typography'; +@import '../styles/scrollbars'; @mixin overlay { z-index: 99; diff --git a/frontend/src/modules/logs/Logs.tsx b/packages/ui/src/logs/Logs.tsx similarity index 83% rename from frontend/src/modules/logs/Logs.tsx rename to packages/ui/src/logs/Logs.tsx index 81742a3a9..8f9fb8abb 100644 --- a/frontend/src/modules/logs/Logs.tsx +++ b/packages/ui/src/logs/Logs.tsx @@ -7,21 +7,21 @@ import React, { useState, } from "react"; import classes from "./Logs.module.scss"; -import { ReactComponent as ExpandIcon } from "../../assets/icons/expand.svg"; -import { ReactComponent as ShrinkIcon } from "../../assets/icons/shrink.svg"; -import { ReactComponent as LogsIcon } from "../../assets/icons/logs.svg"; -import { CaretIcon } from "../../components/icons/CaretIcon/CaretIcon"; -import { useFilterData } from "../../hooks/use-filter-data"; -import { useMouseMove } from "../../hooks/use-mouse-move"; -import { useGetPollingOutputs } from "../../hooks/use-api"; +import { ReactComponent as ExpandIcon } from "../common/icons/assets/expand.svg"; +import { ReactComponent as ShrinkIcon } from "../common/icons/assets/shrink.svg"; +import { ReactComponent as LogsIcon } from "../common/icons/assets/logs.svg"; +import { CaretIcon } from "../common/icons/CaretIcon/CaretIcon"; +import { useFilterData } from "../../../../frontend/src/hooks/use-filter-data"; +import { useMouseMove } from "../../../../frontend/src/hooks/use-mouse-move"; +import { useGetPollingOutputs } from "../../../../frontend/src/hooks/use-api"; import { ManagedProcessOutput, ProcessOutputSource } from "@flowser/shared"; import { toast } from "react-hot-toast"; import classNames from "classnames"; -import { SimpleButton } from "../../components/buttons/SimpleButton/SimpleButton"; -import { TextUtils } from "../../utils/text-utils"; -import { Callout } from "../../components/misc/Callout/Callout"; -import { CommonUtils } from "../../utils/common-utils"; -import { SearchInput } from "../../components/inputs/SearchInput/SearchInput"; +import { SimpleButton } from "../common/buttons/SimpleButton/SimpleButton"; +import { TextUtils } from "../utils/text-utils"; +import { Callout } from "../common/misc/Callout/Callout"; +import { CommonUtils } from "../../../../frontend/src/utils/common-utils"; +import { SearchInput } from "../common/inputs/SearchInput/SearchInput"; type LogsProps = { className?: string; @@ -212,12 +212,26 @@ function LogLine({ log }: { log: ManagedProcessOutput }) { : {} } dangerouslySetInnerHTML={{ - __html: TextUtils.formatProcessOutput(log), + __html: formatProcessOutput(log), }} /> ); } +function formatProcessOutput(log: ManagedProcessOutput): string { + const convert = new AnsiHtmlConvert({ + // See default colors used: + // https://github.com/rburns/ansi-to-html/blob/master/lib/ansi_to_html.js#L12 + colors: { + 4: "#9bdefa", + }, + }); + // The msg field in logs can contain escaped ansi codes + // We need to unescape them so that they can be parsed by ansi-to-html lib + const unescaped = log.data.replace(/\\x1b/g, "\x1b"); + return convert.toHtml(unescaped); +} + function NoLogsHelpBanner() { return ( (); diff --git a/packages/ui/src/transactions/TransactionDetails/TransactionDetails.module.scss b/packages/ui/src/transactions/TransactionDetails/TransactionDetails.module.scss new file mode 100644 index 000000000..6d6f9d33d --- /dev/null +++ b/packages/ui/src/transactions/TransactionDetails/TransactionDetails.module.scss @@ -0,0 +1,7 @@ +@import "../../styles/spacings"; +@import "../../styles/animations"; + +.root { + display: flex; + flex-direction: column; +} diff --git a/frontend/src/modules/transactions/TransactionDetails/TransactionDetails.tsx b/packages/ui/src/transactions/TransactionDetails/TransactionDetails.tsx similarity index 77% rename from frontend/src/modules/transactions/TransactionDetails/TransactionDetails.tsx rename to packages/ui/src/transactions/TransactionDetails/TransactionDetails.tsx index 67d7cc250..0a0596898 100644 --- a/frontend/src/modules/transactions/TransactionDetails/TransactionDetails.tsx +++ b/packages/ui/src/transactions/TransactionDetails/TransactionDetails.tsx @@ -1,15 +1,16 @@ import React, { FunctionComponent } from "react"; import classes from "./TransactionDetails.module.scss"; -import FullScreenLoading from "../../../components/loaders/FullScreenLoading/FullScreenLoading"; -import { useGetTransaction } from "../../../hooks/use-api"; +import FullScreenLoading from "../../common/loaders/FullScreenLoading/FullScreenLoading"; +import { useGetTransaction } from "../../../../../frontend/src/hooks/use-api"; import { TransactionOverview } from "../TransactionOverview/TransactionOverview"; -import { SizedBox } from "../../../components/misc/SizedBox/SizedBox"; +import { SizedBox } from "../../common/misc/SizedBox/SizedBox"; import { TransactionDetailsTabs } from "../TransactionDetailsTabs/TransactionDetailsTabs"; type TransactionDetailsProps = { transactionId: string; }; +// TODO(restructure): Move this to app dir export const TransactionDetails: FunctionComponent = ( props ) => { diff --git a/frontend/src/modules/transactions/TransactionDetailsTabs/TransactionDetailsTabs.tsx b/packages/ui/src/transactions/TransactionDetailsTabs/TransactionDetailsTabs.tsx similarity index 80% rename from frontend/src/modules/transactions/TransactionDetailsTabs/TransactionDetailsTabs.tsx rename to packages/ui/src/transactions/TransactionDetailsTabs/TransactionDetailsTabs.tsx index 4d30e147c..c93b7f9b7 100644 --- a/frontend/src/modules/transactions/TransactionDetailsTabs/TransactionDetailsTabs.tsx +++ b/packages/ui/src/transactions/TransactionDetailsTabs/TransactionDetailsTabs.tsx @@ -1,5 +1,5 @@ -import { BaseTabItem } from "../../../components/tabs/BaseTabs/BaseTabs"; -import { TransactionError } from "../../../components/status/ErrorMessage"; +import { BaseTabItem } from "../../common/tabs/BaseTabs/BaseTabs"; +import { TransactionError } from "../../common/status/ErrorMessage"; import { TransactionSource } from "../TransactionSource/TransactionSource"; import { EventsTable } from "../../events/EventsTable/EventsTable"; import { SignaturesTable } from "../SignaturesTable/SignaturesTable"; @@ -7,13 +7,14 @@ import React, { ReactElement } from "react"; import { StyledTabs, StyledTabsProps, -} from "../../../components/tabs/StyledTabs/StyledTabs"; -import { Transaction } from "@flowser/shared"; -import { useGetPollingEventsByTransaction } from "../../../hooks/use-api"; +} from "../../common/tabs/StyledTabs/StyledTabs"; +import { useGetEventsByTransactionId } from "../../../../../frontend/src/hooks/use-api"; import { TransactionOverview } from "../TransactionOverview/TransactionOverview"; +import { FlowEvent, FlowTransaction } from '@onflowser/api'; type TransactionDetailsTabsProps = Omit & { - transaction: Transaction; + transaction: FlowTransaction; + events: FlowEvent[]; includeOverviewTab: boolean; includeScriptTab: boolean; }; @@ -24,7 +25,7 @@ export function TransactionDetailsTabs( const { transaction, includeOverviewTab, includeScriptTab, ...tabProps } = props; - const { data: events } = useGetPollingEventsByTransaction(transaction.id); + const { data: events } = useGetEventsByTransactionId(transaction.id); const tabs: BaseTabItem[] = []; diff --git a/frontend/src/modules/transactions/TransactionOverview/TransactionOverview.module.scss b/packages/ui/src/transactions/TransactionOverview/TransactionOverview.module.scss similarity index 100% rename from frontend/src/modules/transactions/TransactionOverview/TransactionOverview.module.scss rename to packages/ui/src/transactions/TransactionOverview/TransactionOverview.module.scss diff --git a/frontend/src/modules/transactions/TransactionOverview/TransactionOverview.tsx b/packages/ui/src/transactions/TransactionOverview/TransactionOverview.tsx similarity index 78% rename from frontend/src/modules/transactions/TransactionOverview/TransactionOverview.tsx rename to packages/ui/src/transactions/TransactionOverview/TransactionOverview.tsx index 01d1f5ad4..0ccd63473 100644 --- a/frontend/src/modules/transactions/TransactionOverview/TransactionOverview.tsx +++ b/packages/ui/src/transactions/TransactionOverview/TransactionOverview.tsx @@ -2,18 +2,18 @@ import React, { ReactElement } from "react"; import { DetailsCard, DetailsCardColumn, -} from "../../../components/cards/DetailsCard/DetailsCard"; -import { MiddleEllipsis } from "../../../components/ellipsis/MiddleEllipsis"; +} from "../../common/cards/DetailsCard/DetailsCard"; +import { MiddleEllipsis } from "../../common/ellipsis/MiddleEllipsis"; import classes from "./TransactionOverview.module.scss"; -import { ExecutionStatusBadge } from "../../../components/status/ExecutionStatusBadge"; -import { GrcpStatusBadge } from "../../../components/status/GrcpStatusBadge"; -import { Transaction } from "@flowser/shared"; +import { ExecutionStatusBadge } from "../../common/status/ExecutionStatusBadge"; +import { GrcpStatusBadge } from "../../common/status/GrcpStatusBadge"; import { AccountLink } from "../../accounts/AccountLink/AccountLink"; -import { ProjectLink } from "../../../components/links/ProjectLink"; -import { DateDisplay } from "../../../components/time/DateDisplay/DateDisplay"; +import { ProjectLink } from "../../common/links/ProjectLink"; +import { DateDisplay } from "../../common/time/DateDisplay/DateDisplay"; +import { FlowTransaction } from "@onflowser/api"; type TransactionOverviewProps = { - transaction: Transaction; + transaction: FlowTransaction; className?: string; }; @@ -44,7 +44,7 @@ export function TransactionOverview( }, { label: "Created date", - value: , + value: , }, { label: "Block ID", diff --git a/frontend/src/modules/transactions/TransactionSource/TransactionSource.module.scss b/packages/ui/src/transactions/TransactionSource/TransactionSource.module.scss similarity index 82% rename from frontend/src/modules/transactions/TransactionSource/TransactionSource.module.scss rename to packages/ui/src/transactions/TransactionSource/TransactionSource.module.scss index 5271bd336..8ff6418ed 100644 --- a/frontend/src/modules/transactions/TransactionSource/TransactionSource.module.scss +++ b/packages/ui/src/transactions/TransactionSource/TransactionSource.module.scss @@ -1,6 +1,6 @@ -@import "styles/typography"; -@import "styles/spacings"; -@import "styles/colors"; +@import "../../styles/typography"; +@import "../../styles/spacings"; +@import "../../styles/colors"; .root { display: flex; diff --git a/frontend/src/modules/transactions/TransactionSource/TransactionSource.tsx b/packages/ui/src/transactions/TransactionSource/TransactionSource.tsx similarity index 84% rename from frontend/src/modules/transactions/TransactionSource/TransactionSource.tsx rename to packages/ui/src/transactions/TransactionSource/TransactionSource.tsx index 968a6990d..c425b3a09 100644 --- a/frontend/src/modules/transactions/TransactionSource/TransactionSource.tsx +++ b/packages/ui/src/transactions/TransactionSource/TransactionSource.tsx @@ -1,17 +1,17 @@ import React, { FC } from "react"; -import { BaseCard } from "../../../components/cards/BaseCard/BaseCard"; +import { BaseCard } from "../../common/cards/BaseCard/BaseCard"; import classes from "./TransactionSource.module.scss"; -import { Transaction } from "@flowser/shared"; -import { CadenceEditor } from "../../../components/code/CadenceEditor/CadenceEditor"; +import { CadenceEditor } from "../../common/code/CadenceEditor/CadenceEditor"; import { ParamBuilder } from "../../interactions/components/ParamBuilder/ParamBuilder"; -import { SizedBox } from "../../../components/misc/SizedBox/SizedBox"; -import { ProjectLink } from "../../../components/links/ProjectLink"; -import { FlowserIcon } from "../../../components/icons/FlowserIcon"; +import { SizedBox } from "../../common/misc/SizedBox/SizedBox"; +import { ProjectLink } from "../../common/links/ProjectLink"; +import { FlowserIcon } from "../../common/icons/FlowserIcon"; import { useInteractionRegistry } from "../../interactions/contexts/interaction-registry.context"; import { useTransactionName } from "../../interactions/hooks/use-transaction-name"; +import { FlowTransaction } from "@onflowser/api"; type TransactionSourceProps = { - transaction: Transaction; + transaction: FlowTransaction; }; export const TransactionSource: FC = ({ diff --git a/frontend/src/modules/transactions/TransactionsTable/TransactionsTable.module.scss b/packages/ui/src/transactions/TransactionsTable/TransactionsTable.module.scss similarity index 62% rename from frontend/src/modules/transactions/TransactionsTable/TransactionsTable.module.scss rename to packages/ui/src/transactions/TransactionsTable/TransactionsTable.module.scss index d3df0d455..6ea0a2ed6 100644 --- a/frontend/src/modules/transactions/TransactionsTable/TransactionsTable.module.scss +++ b/packages/ui/src/transactions/TransactionsTable/TransactionsTable.module.scss @@ -1,5 +1,5 @@ -@import "styles/spacings"; -@import "styles/animations"; +@import "../../styles/spacings"; +@import "../../styles/animations"; .hash { max-width: 15vw; diff --git a/frontend/src/modules/transactions/TransactionsTable/TransactionsTable.tsx b/packages/ui/src/transactions/TransactionsTable/TransactionsTable.tsx similarity index 66% rename from frontend/src/modules/transactions/TransactionsTable/TransactionsTable.tsx rename to packages/ui/src/transactions/TransactionsTable/TransactionsTable.tsx index fa49dfb36..c91faa9a1 100644 --- a/frontend/src/modules/transactions/TransactionsTable/TransactionsTable.tsx +++ b/packages/ui/src/transactions/TransactionsTable/TransactionsTable.tsx @@ -1,20 +1,19 @@ import { createColumnHelper } from "@tanstack/table-core"; -import { DecoratedPollingEntity } from "../../../contexts/timeout-polling.context"; -import { Transaction } from "@flowser/shared"; -import Label from "../../../components/misc/Label/Label"; -import Value from "../../../components/misc/Value/Value"; -import { MiddleEllipsis } from "../../../components/ellipsis/MiddleEllipsis"; +import { FlowTransaction } from "@onflowser/api"; +import Label from "../../common/misc/Label/Label"; +import Value from "../../common/misc/Value/Value"; +import { MiddleEllipsis } from "../../common/ellipsis/MiddleEllipsis"; import classes from "./TransactionsTable.module.scss"; import { AccountLink } from "../../accounts/AccountLink/AccountLink"; -import { GrcpStatus } from "../../../components/status/GrcpStatus"; +import { GrcpStatus } from "../../common/status/GrcpStatus"; import React, { ReactElement } from "react"; -import { BaseTable } from "../../../components/misc/BaseTable/BaseTable"; +import { BaseTable } from "../../common/misc/BaseTable/BaseTable"; import { useTransactionName } from "../../interactions/hooks/use-transaction-name"; -import { Ellipsis } from "../../../components/ellipsis/Ellipsis"; -import { ProjectLink } from "../../../components/links/ProjectLink"; -import { TimeAgo } from "../../../components/time/TimeAgo/TimeAgo"; +import { Ellipsis } from "../../common/ellipsis/Ellipsis"; +import { ProjectLink } from "../../common/links/ProjectLink"; +import { TimeAgo } from "../../common/time/TimeAgo/TimeAgo"; -const columnHelper = createColumnHelper>(); +const columnHelper = createColumnHelper(); const columns = [ columnHelper.accessor("id", { @@ -68,19 +67,16 @@ const columns = [ ]; type TransactionsTableProps = { - transactions: DecoratedPollingEntity[]; + transactions: FlowTransaction[]; }; export function TransactionsTable(props: TransactionsTableProps): ReactElement { return ( - > - data={props.transactions} - columns={columns} - /> + data={props.transactions} columns={columns} /> ); } -function TransactionName(props: { transaction: Transaction }) { +function TransactionName(props: { transaction: FlowTransaction }) { const name = useTransactionName({ transaction: props.transaction, }); diff --git a/frontend/src/utils/flow-utils.test.ts b/packages/ui/src/utils/flow-utils.test.ts similarity index 100% rename from frontend/src/utils/flow-utils.test.ts rename to packages/ui/src/utils/flow-utils.test.ts diff --git a/frontend/src/utils/flow-utils.ts b/packages/ui/src/utils/flow-utils.ts similarity index 97% rename from frontend/src/utils/flow-utils.ts rename to packages/ui/src/utils/flow-utils.ts index 11c805f5b..99f8aa42e 100644 --- a/frontend/src/utils/flow-utils.ts +++ b/packages/ui/src/utils/flow-utils.ts @@ -1,11 +1,11 @@ +import { isDefined } from "./misc"; import { AccountStorageDomain, + ExecutionStatusCode, GrcpStatusCode, HashAlgorithm, SignatureAlgorithm, - ExecutionStatusCode, -} from "@flowser/shared"; -import { CommonUtils } from "./common-utils"; +} from "@onflowser/api"; type FlowScriptError = { hostname: string; @@ -64,7 +64,7 @@ export class FlowUtils { .split(/\n[ +]/) .map((line) => line.trim().replace("\n", " ")) .map((line) => parseKeyValueEntry(line)) - .filter(CommonUtils.isDefined); + .filter(isDefined); // If no structured entries are found, fallback to raw error message. if (structuredEntries.length === 0) { diff --git a/packages/ui/src/utils/misc.ts b/packages/ui/src/utils/misc.ts new file mode 100644 index 000000000..5a60c616f --- /dev/null +++ b/packages/ui/src/utils/misc.ts @@ -0,0 +1,17 @@ +export function shortenText(text: string, maxLength: number): string { + if (maxLength >= text.length) { + return text; + } + const delimiter = "..."; + const charsToTake = maxLength / 2; + return `${text.slice(0, charsToTake)}${delimiter}${text.slice( + text.length - charsToTake, + text.length + )}`; +} + +export function isDefined( + value: Value | null | undefined +): value is Value { + return value !== null && value !== undefined; +} diff --git a/packages/ui/src/utils/text-utils.ts b/packages/ui/src/utils/text-utils.ts new file mode 100644 index 000000000..8997e5114 --- /dev/null +++ b/packages/ui/src/utils/text-utils.ts @@ -0,0 +1,15 @@ +import dateFormat from "dateformat"; + +export class TextUtils { + static readableNumber(value: number): string { + const formatter = Intl.NumberFormat("en", { + notation: "compact", + compactDisplay: "short", + }); + return formatter.format(value); + } + + static longDate(value: string): string { + return dateFormat(value, "dS mmm yyyy, hh:MM:ss"); + } +} diff --git a/packages/ui/tsconfig.json b/packages/ui/tsconfig.json new file mode 100644 index 000000000..a991f4ef0 --- /dev/null +++ b/packages/ui/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "@onflowser/config/tsconfig.json", + "include": ["src"], + "exclude": ["dist", "node_modules"], + "compilerOptions": { + "outDir": "./dist" + } +} diff --git a/packages/ui/vite.config.js b/packages/ui/vite.config.js new file mode 100644 index 000000000..d70b3f051 --- /dev/null +++ b/packages/ui/vite.config.js @@ -0,0 +1,39 @@ +import ViteSvgPlugin from "vite-plugin-svgr"; +import * as path from "path"; +import { defineConfig } from "vite"; + +export default defineConfig({ + plugins: [ViteSvgPlugin()], + css: { + preprocessorOptions: { + scss: { + additionalData: ` + @import "./src/styles/animations.scss"; + @import "./src/styles/colors.scss"; + @import "./src/styles/scrollbars.scss"; + @import "./src/styles/spacings.scss"; + @import "./src/styles/typography.scss"; + @import "./src/styles/rules.scss";`, + }, + }, + }, + build: { + lib: { + entry: path.resolve(__dirname, "src/index.ts"), + name: "Flowser UI", + fileName: (format) => `flowser.${format}.js`, + }, + rollupOptions: { + // Ensure to add external dependencies to avoid bundling them in your library + external: ["react", "react-dom"], + output: { + // Provide global variables to use in the UMD build + // for externalized deps + globals: { + react: "React", + "react-dom": "ReactDOM", + }, + }, + }, + }, +}); diff --git a/yarn.lock b/yarn.lock index 9c7546126..f708a03d5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7,7 +7,20 @@ "resolved" "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz" "version" "1.2.6" -"@babel/code-frame@^7.12.13": +"@adobe/css-tools@^4.3.0": + "integrity" "sha512-/62yikz7NLScCGAAST5SHdnjaDJQBDq0M2muyRTpf2VQhw6StBg2ALiu73zSJQ4fMVLA+0uBhBHAle7Wg+2kSg==" + "resolved" "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.1.tgz" + "version" "4.3.1" + +"@ampproject/remapping@^2.2.0": + "integrity" "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==" + "resolved" "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz" + "version" "2.2.1" + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.22.13": "integrity" "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==" "resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz" "version" "7.22.13" @@ -15,19 +28,232 @@ "@babel/highlight" "^7.22.13" "chalk" "^2.4.2" -"@babel/code-frame@7.12.11": - "integrity" "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==" - "resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz" - "version" "7.12.11" +"@babel/compat-data@^7.22.20", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9": + "integrity" "sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==" + "resolved" "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.20.tgz" + "version" "7.22.20" + +"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.0.0-0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.11.6", "@babel/core@^7.12.0", "@babel/core@^7.12.3", "@babel/core@^7.13.0", "@babel/core@^7.21.3", "@babel/core@^7.4.0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.8.0", "@babel/core@>=7.0.0-beta.0 <8": + "integrity" "sha512-97z/ju/Jy1rZmDxybphrBuI+jtJjFVoz7Mr9yUQVVVi+DNZE333uFQeMOqcCIy1x3WYBIbWftUSLmbNXNT7qFQ==" + "resolved" "https://registry.npmjs.org/@babel/core/-/core-7.23.0.tgz" + "version" "7.23.0" + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.22.13" + "@babel/generator" "^7.23.0" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-module-transforms" "^7.23.0" + "@babel/helpers" "^7.23.0" + "@babel/parser" "^7.23.0" + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.0" + "@babel/types" "^7.23.0" + "convert-source-map" "^2.0.0" + "debug" "^4.1.0" + "gensync" "^1.0.0-beta.2" + "json5" "^2.2.3" + "semver" "^6.3.1" + +"@babel/generator@^7.23.0", "@babel/generator@^7.7.2": + "integrity" "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==" + "resolved" "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz" + "version" "7.23.0" + dependencies: + "@babel/types" "^7.23.0" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + "jsesc" "^2.5.1" + +"@babel/helper-annotate-as-pure@^7.22.5": + "integrity" "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==" + "resolved" "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.5": + "integrity" "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==" + "resolved" "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz" + "version" "7.22.15" + dependencies: + "@babel/types" "^7.22.15" + +"@babel/helper-compilation-targets@^7.22.15", "@babel/helper-compilation-targets@^7.22.5", "@babel/helper-compilation-targets@^7.22.6": + "integrity" "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==" + "resolved" "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz" + "version" "7.22.15" + dependencies: + "@babel/compat-data" "^7.22.9" + "@babel/helper-validator-option" "^7.22.15" + "browserslist" "^4.21.9" + "lru-cache" "^5.1.1" + "semver" "^6.3.1" + +"@babel/helper-create-class-features-plugin@^7.22.11", "@babel/helper-create-class-features-plugin@^7.22.15", "@babel/helper-create-class-features-plugin@^7.22.5": + "integrity" "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==" + "resolved" "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz" + "version" "7.22.15" + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-function-name" "^7.22.5" + "@babel/helper-member-expression-to-functions" "^7.22.15" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "semver" "^6.3.1" + +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.5": + "integrity" "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==" + "resolved" "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz" + "version" "7.22.15" + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "regexpu-core" "^5.3.1" + "semver" "^6.3.1" + +"@babel/helper-define-polyfill-provider@^0.4.2": + "integrity" "sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==" + "resolved" "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz" + "version" "0.4.2" + dependencies: + "@babel/helper-compilation-targets" "^7.22.6" + "@babel/helper-plugin-utils" "^7.22.5" + "debug" "^4.1.1" + "lodash.debounce" "^4.0.8" + "resolve" "^1.14.2" + +"@babel/helper-environment-visitor@^7.22.20", "@babel/helper-environment-visitor@^7.22.5": + "integrity" "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==" + "resolved" "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz" + "version" "7.22.20" + +"@babel/helper-function-name@^7.22.5", "@babel/helper-function-name@^7.23.0": + "integrity" "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==" + "resolved" "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz" + "version" "7.23.0" + dependencies: + "@babel/template" "^7.22.15" + "@babel/types" "^7.23.0" + +"@babel/helper-hoist-variables@^7.22.5": + "integrity" "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==" + "resolved" "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-member-expression-to-functions@^7.22.15": + "integrity" "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==" + "resolved" "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz" + "version" "7.23.0" + dependencies: + "@babel/types" "^7.23.0" + +"@babel/helper-module-imports@^7.22.15", "@babel/helper-module-imports@^7.22.5": + "integrity" "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==" + "resolved" "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz" + "version" "7.22.15" + dependencies: + "@babel/types" "^7.22.15" + +"@babel/helper-module-transforms@^7.22.5", "@babel/helper-module-transforms@^7.23.0": + "integrity" "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==" + "resolved" "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz" + "version" "7.23.0" + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-simple-access" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/helper-validator-identifier" "^7.22.20" + +"@babel/helper-optimise-call-expression@^7.22.5": + "integrity" "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==" + "resolved" "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + "integrity" "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==" + "resolved" "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz" + "version" "7.22.5" + +"@babel/helper-remap-async-to-generator@^7.22.5", "@babel/helper-remap-async-to-generator@^7.22.9": + "integrity" "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==" + "resolved" "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz" + "version" "7.22.20" + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-wrap-function" "^7.22.20" + +"@babel/helper-replace-supers@^7.22.5", "@babel/helper-replace-supers@^7.22.9": + "integrity" "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==" + "resolved" "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz" + "version" "7.22.20" + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-member-expression-to-functions" "^7.22.15" + "@babel/helper-optimise-call-expression" "^7.22.5" + +"@babel/helper-simple-access@^7.22.5": + "integrity" "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==" + "resolved" "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-skip-transparent-expression-wrappers@^7.22.5": + "integrity" "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==" + "resolved" "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz" + "version" "7.22.5" dependencies: - "@babel/highlight" "^7.10.4" + "@babel/types" "^7.22.5" + +"@babel/helper-split-export-declaration@^7.22.6": + "integrity" "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==" + "resolved" "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz" + "version" "7.22.6" + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-string-parser@^7.22.5": + "integrity" "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==" + "resolved" "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz" + "version" "7.22.5" "@babel/helper-validator-identifier@^7.22.20": "integrity" "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==" "resolved" "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz" "version" "7.22.20" -"@babel/highlight@^7.10.4", "@babel/highlight@^7.22.13": +"@babel/helper-validator-option@^7.22.15": + "integrity" "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==" + "resolved" "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz" + "version" "7.22.15" + +"@babel/helper-wrap-function@^7.22.20": + "integrity" "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==" + "resolved" "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz" + "version" "7.22.20" + dependencies: + "@babel/helper-function-name" "^7.22.5" + "@babel/template" "^7.22.15" + "@babel/types" "^7.22.19" + +"@babel/helpers@^7.23.0": + "integrity" "sha512-chNpneuK18yW5Oxsr+t553UZzzAs3aZnFm4bxhebsNTeshrC95yA7l5yl7GBAG+JG1rF0F7zzD2EixK9mWSDoA==" + "resolved" "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.1.tgz" + "version" "7.23.1" + dependencies: + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.0" + "@babel/types" "^7.23.0" + +"@babel/highlight@^7.22.13": "integrity" "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==" "resolved" "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz" "version" "7.22.20" @@ -36,13 +262,965 @@ "chalk" "^2.4.2" "js-tokens" "^4.0.0" -"@babel/runtime@^7.18.6": +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.22.15", "@babel/parser@^7.23.0": + "integrity" "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==" + "resolved" "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz" + "version" "7.23.0" + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.22.15": + "integrity" "sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz" + "version" "7.22.15" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.22.15": + "integrity" "sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz" + "version" "7.22.15" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-transform-optional-chaining" "^7.22.15" + +"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": + "integrity" "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==" + "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz" + "version" "7.21.0-placeholder-for-preset-env.2" + +"@babel/plugin-syntax-async-generators@^7.8.4": + "integrity" "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" + "version" "7.8.4" + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-bigint@^7.8.3": + "integrity" "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz" + "version" "7.8.3" + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": + "integrity" "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz" + "version" "7.12.13" + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-class-static-block@^7.14.5": + "integrity" "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz" + "version" "7.14.5" + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-dynamic-import@^7.8.3": + "integrity" "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz" + "version" "7.8.3" + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + "integrity" "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz" + "version" "7.8.3" + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-import-assertions@^7.22.5": + "integrity" "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-import-attributes@^7.22.5": + "integrity" "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-import-meta@^7.10.4", "@babel/plugin-syntax-import-meta@^7.8.3": + "integrity" "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz" + "version" "7.10.4" + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.3": + "integrity" "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz" + "version" "7.8.3" + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.22.5", "@babel/plugin-syntax-jsx@^7.7.2": + "integrity" "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": + "integrity" "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" + "version" "7.10.4" + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + "integrity" "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" + "version" "7.8.3" + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": + "integrity" "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz" + "version" "7.10.4" + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.3": + "integrity" "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz" + "version" "7.8.3" + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + "integrity" "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz" + "version" "7.8.3" + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.3": + "integrity" "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" + "version" "7.8.3" + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + "integrity" "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz" + "version" "7.14.5" + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": + "integrity" "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz" + "version" "7.14.5" + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-typescript@^7.22.5", "@babel/plugin-syntax-typescript@^7.7.2": + "integrity" "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": + "integrity" "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz" + "version" "7.18.6" + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-arrow-functions@^7.22.5": + "integrity" "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-async-generator-functions@^7.22.15": + "integrity" "sha512-jBm1Es25Y+tVoTi5rfd5t1KLmL8ogLKpXszboWOTTtGFGz2RKnQe2yn7HbZ+kb/B8N0FVSGQo874NSlOU1T4+w==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.15.tgz" + "version" "7.22.15" + dependencies: + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-remap-async-to-generator" "^7.22.9" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-transform-async-to-generator@^7.22.5": + "integrity" "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-module-imports" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-remap-async-to-generator" "^7.22.5" + +"@babel/plugin-transform-block-scoped-functions@^7.22.5": + "integrity" "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-block-scoping@^7.22.15": + "integrity" "sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.0.tgz" + "version" "7.23.0" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-class-properties@^7.22.5": + "integrity" "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-class-static-block@^7.22.11": + "integrity" "sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz" + "version" "7.22.11" + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.11" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + +"@babel/plugin-transform-classes@^7.22.15": + "integrity" "sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz" + "version" "7.22.15" + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-function-name" "^7.22.5" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.9" + "@babel/helper-split-export-declaration" "^7.22.6" + "globals" "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.22.5": + "integrity" "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/template" "^7.22.5" + +"@babel/plugin-transform-destructuring@^7.22.15": + "integrity" "sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.0.tgz" + "version" "7.23.0" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-dotall-regex@^7.22.5": + "integrity" "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-duplicate-keys@^7.22.5": + "integrity" "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-dynamic-import@^7.22.11": + "integrity" "sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz" + "version" "7.22.11" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + +"@babel/plugin-transform-exponentiation-operator@^7.22.5": + "integrity" "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-export-namespace-from@^7.22.11": + "integrity" "sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz" + "version" "7.22.11" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-transform-for-of@^7.22.15": + "integrity" "sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz" + "version" "7.22.15" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-function-name@^7.22.5": + "integrity" "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-compilation-targets" "^7.22.5" + "@babel/helper-function-name" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-json-strings@^7.22.11": + "integrity" "sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz" + "version" "7.22.11" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-json-strings" "^7.8.3" + +"@babel/plugin-transform-literals@^7.22.5": + "integrity" "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-logical-assignment-operators@^7.22.11": + "integrity" "sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz" + "version" "7.22.11" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-transform-member-expression-literals@^7.22.5": + "integrity" "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-modules-amd@^7.22.5": + "integrity" "sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.0.tgz" + "version" "7.23.0" + dependencies: + "@babel/helper-module-transforms" "^7.23.0" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-modules-commonjs@^7.22.15", "@babel/plugin-transform-modules-commonjs@^7.23.0": + "integrity" "sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz" + "version" "7.23.0" + dependencies: + "@babel/helper-module-transforms" "^7.23.0" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-simple-access" "^7.22.5" + +"@babel/plugin-transform-modules-systemjs@^7.22.11": + "integrity" "sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.0.tgz" + "version" "7.23.0" + dependencies: + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-module-transforms" "^7.23.0" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.20" + +"@babel/plugin-transform-modules-umd@^7.22.5": + "integrity" "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-module-transforms" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": + "integrity" "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-new-target@^7.22.5": + "integrity" "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-nullish-coalescing-operator@^7.22.11": + "integrity" "sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz" + "version" "7.22.11" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-transform-numeric-separator@^7.22.11": + "integrity" "sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz" + "version" "7.22.11" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-transform-object-rest-spread@^7.22.15": + "integrity" "sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz" + "version" "7.22.15" + dependencies: + "@babel/compat-data" "^7.22.9" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.22.15" + +"@babel/plugin-transform-object-super@^7.22.5": + "integrity" "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.5" + +"@babel/plugin-transform-optional-catch-binding@^7.22.11": + "integrity" "sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz" + "version" "7.22.11" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-transform-optional-chaining@^7.22.15": + "integrity" "sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.0.tgz" + "version" "7.23.0" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-transform-parameters@^7.22.15": + "integrity" "sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz" + "version" "7.22.15" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-private-methods@^7.22.5": + "integrity" "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-private-property-in-object@^7.22.11": + "integrity" "sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz" + "version" "7.22.11" + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.22.11" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + +"@babel/plugin-transform-property-literals@^7.22.5": + "integrity" "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-react-constant-elements@^7.21.3": + "integrity" "sha512-BF5SXoO+nX3h5OhlN78XbbDrBOffv+AxPP2ENaJOVqjWCgBDeOY3WcaUcddutGSfoap+5NEQ/q/4I3WZIvgkXA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-react-display-name@^7.22.5": + "integrity" "sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-react-jsx-development@^7.22.5": + "integrity" "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/plugin-transform-react-jsx" "^7.22.5" + +"@babel/plugin-transform-react-jsx@^7.22.15", "@babel/plugin-transform-react-jsx@^7.22.5": + "integrity" "sha512-oKckg2eZFa8771O/5vi7XeTvmM6+O9cxZu+kanTU7tD4sin5nO/G8jGJhq8Hvt2Z0kUoEDRayuZLaUlYl8QuGA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.15.tgz" + "version" "7.22.15" + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-jsx" "^7.22.5" + "@babel/types" "^7.22.15" + +"@babel/plugin-transform-react-pure-annotations@^7.22.5": + "integrity" "sha512-gP4k85wx09q+brArVinTXhWiyzLl9UpmGva0+mWyKxk6JZequ05x3eUcIUE+FyttPKJFRRVtAvQaJ6YF9h1ZpA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-regenerator@^7.22.10": + "integrity" "sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz" + "version" "7.22.10" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "regenerator-transform" "^0.15.2" + +"@babel/plugin-transform-reserved-words@^7.22.5": + "integrity" "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-shorthand-properties@^7.22.5": + "integrity" "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-spread@^7.22.5": + "integrity" "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + +"@babel/plugin-transform-sticky-regex@^7.22.5": + "integrity" "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-template-literals@^7.22.5": + "integrity" "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-typeof-symbol@^7.22.5": + "integrity" "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-typescript@^7.22.15": + "integrity" "sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.15.tgz" + "version" "7.22.15" + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-typescript" "^7.22.5" + +"@babel/plugin-transform-unicode-escapes@^7.22.10": + "integrity" "sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz" + "version" "7.22.10" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-unicode-property-regex@^7.22.5": + "integrity" "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-unicode-regex@^7.22.5": + "integrity" "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-unicode-sets-regex@^7.22.5": + "integrity" "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz" + "version" "7.22.5" + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/preset-env@^7.20.2": + "integrity" "sha512-11MY04gGC4kSzlPHRfvVkNAZhUxOvm7DCJ37hPDnUENwe06npjIRAfInEMTGSb4LZK5ZgDFkv5hw0lGebHeTyg==" + "resolved" "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.20.tgz" + "version" "7.22.20" + dependencies: + "@babel/compat-data" "^7.22.20" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.22.15" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.22.15" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.22.15" + "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-import-assertions" "^7.22.5" + "@babel/plugin-syntax-import-attributes" "^7.22.5" + "@babel/plugin-syntax-import-meta" "^7.10.4" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" + "@babel/plugin-transform-arrow-functions" "^7.22.5" + "@babel/plugin-transform-async-generator-functions" "^7.22.15" + "@babel/plugin-transform-async-to-generator" "^7.22.5" + "@babel/plugin-transform-block-scoped-functions" "^7.22.5" + "@babel/plugin-transform-block-scoping" "^7.22.15" + "@babel/plugin-transform-class-properties" "^7.22.5" + "@babel/plugin-transform-class-static-block" "^7.22.11" + "@babel/plugin-transform-classes" "^7.22.15" + "@babel/plugin-transform-computed-properties" "^7.22.5" + "@babel/plugin-transform-destructuring" "^7.22.15" + "@babel/plugin-transform-dotall-regex" "^7.22.5" + "@babel/plugin-transform-duplicate-keys" "^7.22.5" + "@babel/plugin-transform-dynamic-import" "^7.22.11" + "@babel/plugin-transform-exponentiation-operator" "^7.22.5" + "@babel/plugin-transform-export-namespace-from" "^7.22.11" + "@babel/plugin-transform-for-of" "^7.22.15" + "@babel/plugin-transform-function-name" "^7.22.5" + "@babel/plugin-transform-json-strings" "^7.22.11" + "@babel/plugin-transform-literals" "^7.22.5" + "@babel/plugin-transform-logical-assignment-operators" "^7.22.11" + "@babel/plugin-transform-member-expression-literals" "^7.22.5" + "@babel/plugin-transform-modules-amd" "^7.22.5" + "@babel/plugin-transform-modules-commonjs" "^7.22.15" + "@babel/plugin-transform-modules-systemjs" "^7.22.11" + "@babel/plugin-transform-modules-umd" "^7.22.5" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" + "@babel/plugin-transform-new-target" "^7.22.5" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.22.11" + "@babel/plugin-transform-numeric-separator" "^7.22.11" + "@babel/plugin-transform-object-rest-spread" "^7.22.15" + "@babel/plugin-transform-object-super" "^7.22.5" + "@babel/plugin-transform-optional-catch-binding" "^7.22.11" + "@babel/plugin-transform-optional-chaining" "^7.22.15" + "@babel/plugin-transform-parameters" "^7.22.15" + "@babel/plugin-transform-private-methods" "^7.22.5" + "@babel/plugin-transform-private-property-in-object" "^7.22.11" + "@babel/plugin-transform-property-literals" "^7.22.5" + "@babel/plugin-transform-regenerator" "^7.22.10" + "@babel/plugin-transform-reserved-words" "^7.22.5" + "@babel/plugin-transform-shorthand-properties" "^7.22.5" + "@babel/plugin-transform-spread" "^7.22.5" + "@babel/plugin-transform-sticky-regex" "^7.22.5" + "@babel/plugin-transform-template-literals" "^7.22.5" + "@babel/plugin-transform-typeof-symbol" "^7.22.5" + "@babel/plugin-transform-unicode-escapes" "^7.22.10" + "@babel/plugin-transform-unicode-property-regex" "^7.22.5" + "@babel/plugin-transform-unicode-regex" "^7.22.5" + "@babel/plugin-transform-unicode-sets-regex" "^7.22.5" + "@babel/preset-modules" "0.1.6-no-external-plugins" + "@babel/types" "^7.22.19" + "babel-plugin-polyfill-corejs2" "^0.4.5" + "babel-plugin-polyfill-corejs3" "^0.8.3" + "babel-plugin-polyfill-regenerator" "^0.5.2" + "core-js-compat" "^3.31.0" + "semver" "^6.3.1" + +"@babel/preset-modules@0.1.6-no-external-plugins": + "integrity" "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==" + "resolved" "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz" + "version" "0.1.6-no-external-plugins" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/types" "^7.4.4" + "esutils" "^2.0.2" + +"@babel/preset-react@^7.18.6": + "integrity" "sha512-Csy1IJ2uEh/PecCBXXoZGAZBeCATTuePzCSB7dLYWS0vOEj6CNpjxIhW4duWwZodBNueH7QO14WbGn8YyeuN9w==" + "resolved" "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.22.15.tgz" + "version" "7.22.15" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.22.15" + "@babel/plugin-transform-react-display-name" "^7.22.5" + "@babel/plugin-transform-react-jsx" "^7.22.15" + "@babel/plugin-transform-react-jsx-development" "^7.22.5" + "@babel/plugin-transform-react-pure-annotations" "^7.22.5" + +"@babel/preset-typescript@^7.21.0": + "integrity" "sha512-6P6VVa/NM/VlAYj5s2Aq/gdVg8FSENCg3wlZ6Qau9AcPaoF5LbN1nyGlR9DTRIw9PpxI94e+ReydsJHcjwAweg==" + "resolved" "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.23.0.tgz" + "version" "7.23.0" + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.22.15" + "@babel/plugin-syntax-jsx" "^7.22.5" + "@babel/plugin-transform-modules-commonjs" "^7.23.0" + "@babel/plugin-transform-typescript" "^7.22.15" + +"@babel/regjsgen@^0.8.0": + "integrity" "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" + "resolved" "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz" + "version" "0.8.0" + +"@babel/runtime@^7.12.5", "@babel/runtime@^7.18.6", "@babel/runtime@^7.20.13", "@babel/runtime@^7.20.7", "@babel/runtime@^7.21.0", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": "integrity" "sha512-hC2v6p8ZSI/W0HUzh3V8C5g+NwSKzKPtJwSpTjwl0o297GP9+ZLQSkdvHz46CM3LqyoXxq+5G9komY+eSqSO0g==" "resolved" "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.1.tgz" "version" "7.23.1" dependencies: "regenerator-runtime" "^0.14.0" +"@babel/template@^7.22.15", "@babel/template@^7.22.5", "@babel/template@^7.3.3": + "integrity" "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==" + "resolved" "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz" + "version" "7.22.15" + dependencies: + "@babel/code-frame" "^7.22.13" + "@babel/parser" "^7.22.15" + "@babel/types" "^7.22.15" + +"@babel/traverse@^7.23.0": + "integrity" "sha512-t/QaEvyIoIkwzpiZ7aoSKK8kObQYeF7T2v+dazAYCb8SXtp58zEVkWW7zAnju8FNKNdr4ScAOEDmMItbyOmEYw==" + "resolved" "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.0.tgz" + "version" "7.23.0" + dependencies: + "@babel/code-frame" "^7.22.13" + "@babel/generator" "^7.23.0" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.23.0" + "@babel/types" "^7.23.0" + "debug" "^4.1.0" + "globals" "^11.1.0" + +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.21.3", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + "integrity" "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==" + "resolved" "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz" + "version" "7.23.0" + dependencies: + "@babel/helper-string-parser" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.20" + "to-fast-properties" "^2.0.0" + +"@bcoe/v8-coverage@^0.2.3": + "integrity" "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==" + "resolved" "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz" + "version" "0.2.3" + +"@codemirror/autocomplete@^6.0.0": + "integrity" "sha512-suItGf7PhtfgQMCd8ofYzycdsAHDBB8BkNrmyxeLvptW7yNT6zGT6ZzwhAfmB94TUyAAStrHjaDGC4/foenF2A==" + "resolved" "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.9.2.tgz" + "version" "6.9.2" + dependencies: + "@codemirror/language" "^6.0.0" + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.17.0" + "@lezer/common" "^1.0.0" + +"@codemirror/commands@^6.0.0", "@codemirror/commands@^6.1.0": + "integrity" "sha512-tFfcxRIlOWiQDFhjBSWJ10MxcvbCIsRr6V64SgrcaY0MwNk32cUOcCuNlWo8VjV4qRQCgNgUAnIeo0svkk4R5Q==" + "resolved" "https://registry.npmjs.org/@codemirror/commands/-/commands-6.3.0.tgz" + "version" "6.3.0" + dependencies: + "@codemirror/language" "^6.0.0" + "@codemirror/state" "^6.2.0" + "@codemirror/view" "^6.0.0" + "@lezer/common" "^1.1.0" + +"@codemirror/language@^6.0.0": + "integrity" "sha512-lWRP3Y9IUdOms6DXuBpoWwjkR7yRmnS0hKYCbSfPz9v6Em1A1UCRujAkDiCrdYfs1Z0Eu4dGtwovNPStIfkgNA==" + "resolved" "https://registry.npmjs.org/@codemirror/language/-/language-6.9.1.tgz" + "version" "6.9.1" + dependencies: + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.0.0" + "@lezer/common" "^1.1.0" + "@lezer/highlight" "^1.0.0" + "@lezer/lr" "^1.0.0" + "style-mod" "^4.0.0" + +"@codemirror/legacy-modes@^6.1.0": + "integrity" "sha512-X0Z48odJ0KIoh/HY8Ltz75/4tDYc9msQf1E/2trlxFaFFhgjpVHjZ/BCXe1Lk7s4Gd67LL/CeEEHNI+xHOiESg==" + "resolved" "https://registry.npmjs.org/@codemirror/legacy-modes/-/legacy-modes-6.3.3.tgz" + "version" "6.3.3" + dependencies: + "@codemirror/language" "^6.0.0" + +"@codemirror/lint@^6.0.0": + "integrity" "sha512-wzRkluWb1ptPKdzlsrbwwjYCPLgzU6N88YBAmlZi8WFyuiEduSd05MnJYNogzyc8rPK7pj6m95ptUApc8sHKVA==" + "resolved" "https://registry.npmjs.org/@codemirror/lint/-/lint-6.4.2.tgz" + "version" "6.4.2" + dependencies: + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.0.0" + "crelt" "^1.0.5" + +"@codemirror/search@^6.0.0": + "integrity" "sha512-YoTrvjv9e8EbPs58opjZKyJ3ewFrVSUzQ/4WXlULQLSDDr1nGPJ67mMXFNNVYwdFhybzhrzrtqgHmtpJwIF+8g==" + "resolved" "https://registry.npmjs.org/@codemirror/search/-/search-6.5.4.tgz" + "version" "6.5.4" + dependencies: + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.0.0" + "crelt" "^1.0.5" + +"@codemirror/state@^6.0.0", "@codemirror/state@^6.1.1", "@codemirror/state@^6.1.4", "@codemirror/state@^6.2.0": + "integrity" "sha512-RupHSZ8+OjNT38zU9fKH2sv+Dnlr8Eb8sl4NOnnqz95mCFTZUaiRP8Xv5MeeaG0px2b8Bnfe7YGwCV3nsBhbuw==" + "resolved" "https://registry.npmjs.org/@codemirror/state/-/state-6.2.1.tgz" + "version" "6.2.1" + +"@codemirror/theme-one-dark@^6.0.0": + "integrity" "sha512-F+sH0X16j/qFLMAfbciKTxVOwkdAS336b7AXTKOZhy8BR3eH/RelsnLgLFINrpST63mmN2OuwUt0W2ndUgYwUA==" + "resolved" "https://registry.npmjs.org/@codemirror/theme-one-dark/-/theme-one-dark-6.1.2.tgz" + "version" "6.1.2" + dependencies: + "@codemirror/language" "^6.0.0" + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.0.0" + "@lezer/highlight" "^1.0.0" + +"@codemirror/view@^6.0.0", "@codemirror/view@^6.17.0", "@codemirror/view@>=6.0.0": + "integrity" "sha512-8l1aSQ6MygzL4Nx7GVYhucSXvW4jQd0F6Zm3v9Dg+6nZEfwzJVqi4C2zHfDljID+73gsQrWp9TgHc81xU15O4A==" + "resolved" "https://registry.npmjs.org/@codemirror/view/-/view-6.21.3.tgz" + "version" "6.21.3" + dependencies: + "@codemirror/state" "^6.1.4" + "style-mod" "^4.1.0" + "w3c-keyname" "^2.2.4" + +"@cspotcode/source-map-support@^0.8.0": + "integrity" "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==" + "resolved" "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz" + "version" "0.8.1" + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + +"@develar/schema-utils@~2.6.5": + "integrity" "sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==" + "resolved" "https://registry.npmjs.org/@develar/schema-utils/-/schema-utils-2.6.5.tgz" + "version" "2.6.5" + dependencies: + "ajv" "^6.12.0" + "ajv-keywords" "^3.4.1" + +"@discoveryjs/json-ext@^0.5.0", "@discoveryjs/json-ext@0.5.7": + "integrity" "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==" + "resolved" "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz" + "version" "0.5.7" + +"@electron/asar@^3.2.1": + "integrity" "sha512-8FaSCAIiZGYFWyjeevPQt+0e9xCK9YmJ2Rjg5SXgdsXon6cRnU0Yxnbe6CvJbQn26baifur2Y2G5EBayRIsjyg==" + "resolved" "https://registry.npmjs.org/@electron/asar/-/asar-3.2.7.tgz" + "version" "3.2.7" + dependencies: + "commander" "^5.0.0" + "glob" "^7.1.6" + "minimatch" "^3.0.4" + +"@electron/get@^2.0.0": + "integrity" "sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==" + "resolved" "https://registry.npmjs.org/@electron/get/-/get-2.0.3.tgz" + "version" "2.0.3" + dependencies: + "debug" "^4.1.1" + "env-paths" "^2.2.0" + "fs-extra" "^8.1.0" + "got" "^11.8.5" + "progress" "^2.0.3" + "semver" "^6.2.0" + "sumchecker" "^3.0.1" + optionalDependencies: + "global-agent" "^3.0.0" + +"@electron/notarize@^2.1.0", "@electron/notarize@2.1.0": + "integrity" "sha512-Q02xem1D0sg4v437xHgmBLxI2iz/fc0D4K7fiVWHa/AnW8o7D751xyKNXgziA6HrTOme9ul1JfWN5ark8WH1xA==" + "resolved" "https://registry.npmjs.org/@electron/notarize/-/notarize-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "debug" "^4.1.1" + "fs-extra" "^9.0.1" + "promise-retry" "^2.0.1" + +"@electron/osx-sign@1.0.5": + "integrity" "sha512-k9ZzUQtamSoweGQDV2jILiRIHUu7lYlJ3c6IEmjv1hC17rclE+eb9U+f6UFlOOETo0JzY1HNlXy4YOlCvl+Lww==" + "resolved" "https://registry.npmjs.org/@electron/osx-sign/-/osx-sign-1.0.5.tgz" + "version" "1.0.5" + dependencies: + "compare-version" "^0.1.2" + "debug" "^4.3.4" + "fs-extra" "^10.0.0" + "isbinaryfile" "^4.0.8" + "minimist" "^1.2.6" + "plist" "^3.0.5" + +"@electron/rebuild@^3.3.0": + "integrity" "sha512-S1vgpzIOS1wCJmsYjdLz97MTUV6UTLcMk/HE3w90HYtVxvW+PQdwxLbgsrECX2bysqcnmM5a0K6mXj/gwVgYtQ==" + "resolved" "https://registry.npmjs.org/@electron/rebuild/-/rebuild-3.3.0.tgz" + "version" "3.3.0" + dependencies: + "@malept/cross-spawn-promise" "^2.0.0" + "chalk" "^4.0.0" + "debug" "^4.1.1" + "detect-libc" "^2.0.1" + "fs-extra" "^10.0.0" + "got" "^11.7.0" + "node-abi" "^3.45.0" + "node-api-version" "^0.1.4" + "node-gyp" "^9.0.0" + "ora" "^5.1.0" + "semver" "^7.3.5" + "tar" "^6.0.5" + "yargs" "^17.0.1" + +"@electron/universal@1.4.1": + "integrity" "sha512-lE/U3UNw1YHuowNbTmKNs9UlS3En3cPgwM5MI+agIgr/B1hSze9NdOP0qn7boZaI9Lph8IDv3/24g9IxnJP7aQ==" + "resolved" "https://registry.npmjs.org/@electron/universal/-/universal-1.4.1.tgz" + "version" "1.4.1" + dependencies: + "@electron/asar" "^3.2.1" + "@malept/cross-spawn-promise" "^1.1.0" + "debug" "^4.3.1" + "dir-compare" "^3.0.0" + "fs-extra" "^9.0.1" + "minimatch" "^3.0.4" + "plist" "^3.0.4" + "@es-joy/jsdoccomment@~0.37.0": "integrity" "sha512-5vxWJ1gEkEF0yRd0O+uK6dHJf7adrxwQSX8PuRiPfFSAbNLnY0ZJfXaZucoz14Jj2N11xn2DnlEPwWRpYpvRjg==" "resolved" "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.37.1.tgz" @@ -52,33 +1230,23 @@ "esquery" "^1.5.0" "jsdoc-type-pratt-parser" "~4.0.0" -"@eslint-community/eslint-utils@^4.2.0": +"@esbuild/darwin-arm64@0.18.20": + "integrity" "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==" + "resolved" "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz" + "version" "0.18.20" + +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": "integrity" "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==" "resolved" "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz" "version" "4.4.0" dependencies: "eslint-visitor-keys" "^3.3.0" -"@eslint-community/regexpp@^4.6.1": +"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": "integrity" "sha512-zJmuCWj2VLBt4c25CfBIbMZLGLyhkvs7LznyVX5HfpzeocThgIj5XQK4L+g3U36mMcx8bPMhGyPpwCATamC4jQ==" "resolved" "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.0.tgz" "version" "4.9.0" -"@eslint/eslintrc@^0.4.3": - "integrity" "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==" - "resolved" "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz" - "version" "0.4.3" - dependencies: - "ajv" "^6.12.4" - "debug" "^4.1.1" - "espree" "^7.3.0" - "globals" "^13.9.0" - "ignore" "^4.0.6" - "import-fresh" "^3.2.1" - "js-yaml" "^3.13.1" - "minimatch" "^3.0.4" - "strip-json-comments" "^3.1.1" - "@eslint/eslintrc@^2.1.2": "integrity" "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==" "resolved" "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz" @@ -94,10 +1262,10 @@ "minimatch" "^3.1.2" "strip-json-comments" "^3.1.1" -"@eslint/js@8.50.0": - "integrity" "sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ==" - "resolved" "https://registry.npmjs.org/@eslint/js/-/js-8.50.0.tgz" - "version" "8.50.0" +"@eslint/js@8.51.0": + "integrity" "sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg==" + "resolved" "https://registry.npmjs.org/@eslint/js/-/js-8.51.0.tgz" + "version" "8.51.0" "@humanwhocodes/config-array@^0.11.11": "integrity" "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==" @@ -108,60 +1276,388 @@ "debug" "^4.1.1" "minimatch" "^3.0.5" -"@humanwhocodes/config-array@^0.5.0": - "integrity" "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==" - "resolved" "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz" - "version" "0.5.0" - dependencies: - "@humanwhocodes/object-schema" "^1.2.0" - "debug" "^4.1.1" - "minimatch" "^3.0.4" - "@humanwhocodes/module-importer@^1.0.1": "integrity" "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==" "resolved" "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" "version" "1.0.1" -"@humanwhocodes/object-schema@^1.2.0", "@humanwhocodes/object-schema@^1.2.1": +"@humanwhocodes/object-schema@^1.2.1": "integrity" "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" "resolved" "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz" "version" "1.2.1" -"@jest/expect-utils@^29.7.0": - "integrity" "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==" - "resolved" "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz" - "version" "29.7.0" +"@isaacs/cliui@^8.0.2": + "integrity" "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==" + "resolved" "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz" + "version" "8.0.2" dependencies: - "jest-get-type" "^29.6.3" + "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" -"@jest/schemas@^29.6.3": - "integrity" "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==" - "resolved" "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz" - "version" "29.6.3" +"@istanbuljs/load-nyc-config@^1.0.0": + "integrity" "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==" + "resolved" "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz" + "version" "1.1.0" dependencies: - "@sinclair/typebox" "^0.27.8" + "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" -"@jest/types@^29.6.3": - "integrity" "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==" - "resolved" "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz" - "version" "29.6.3" +"@istanbuljs/schema@^0.1.2": + "integrity" "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==" + "resolved" "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz" + "version" "0.1.3" + +"@jest/console@^29.7.0": + "integrity" "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==" + "resolved" "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz" + "version" "29.7.0" dependencies: - "@jest/schemas" "^29.6.3" - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" + "@jest/types" "^29.6.3" "@types/node" "*" - "@types/yargs" "^17.0.8" "chalk" "^4.0.0" + "jest-message-util" "^29.7.0" + "jest-util" "^29.7.0" + "slash" "^3.0.0" -"@nestjs/common@^8.0.0": - "integrity" "sha512-m/YsbcBal+gA5CFrDpqXqsSfylo+DIQrkFY3qhVIltsYRfu8ct8J9pqsTO6OPf3mvqdOpFGrV5sBjoyAzOBvsw==" - "resolved" "https://registry.npmjs.org/@nestjs/common/-/common-8.4.7.tgz" - "version" "8.4.7" +"@jest/core@^29.7.0": + "integrity" "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==" + "resolved" "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz" + "version" "29.7.0" dependencies: - "axios" "0.27.2" - "iterare" "1.2.1" - "tslib" "2.4.0" - "uuid" "8.3.2" + "@jest/console" "^29.7.0" + "@jest/reporters" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + "ansi-escapes" "^4.2.1" + "chalk" "^4.0.0" + "ci-info" "^3.2.0" + "exit" "^0.1.2" + "graceful-fs" "^4.2.9" + "jest-changed-files" "^29.7.0" + "jest-config" "^29.7.0" + "jest-haste-map" "^29.7.0" + "jest-message-util" "^29.7.0" + "jest-regex-util" "^29.6.3" + "jest-resolve" "^29.7.0" + "jest-resolve-dependencies" "^29.7.0" + "jest-runner" "^29.7.0" + "jest-runtime" "^29.7.0" + "jest-snapshot" "^29.7.0" + "jest-util" "^29.7.0" + "jest-validate" "^29.7.0" + "jest-watcher" "^29.7.0" + "micromatch" "^4.0.4" + "pretty-format" "^29.7.0" + "slash" "^3.0.0" + "strip-ansi" "^6.0.0" + +"@jest/environment@^27.5.1": + "integrity" "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==" + "resolved" "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz" + "version" "27.5.1" + dependencies: + "@jest/fake-timers" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + "jest-mock" "^27.5.1" + +"@jest/environment@^29.7.0": + "integrity" "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==" + "resolved" "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz" + "version" "29.7.0" + dependencies: + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + "jest-mock" "^29.7.0" + +"@jest/expect-utils@^29.7.0": + "integrity" "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==" + "resolved" "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz" + "version" "29.7.0" + dependencies: + "jest-get-type" "^29.6.3" + +"@jest/expect@^29.7.0": + "integrity" "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==" + "resolved" "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz" + "version" "29.7.0" + dependencies: + "expect" "^29.7.0" + "jest-snapshot" "^29.7.0" + +"@jest/fake-timers@^27.5.1": + "integrity" "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==" + "resolved" "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz" + "version" "27.5.1" + dependencies: + "@jest/types" "^27.5.1" + "@sinonjs/fake-timers" "^8.0.1" + "@types/node" "*" + "jest-message-util" "^27.5.1" + "jest-mock" "^27.5.1" + "jest-util" "^27.5.1" + +"@jest/fake-timers@^29.7.0": + "integrity" "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==" + "resolved" "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz" + "version" "29.7.0" + dependencies: + "@jest/types" "^29.6.3" + "@sinonjs/fake-timers" "^10.0.2" + "@types/node" "*" + "jest-message-util" "^29.7.0" + "jest-mock" "^29.7.0" + "jest-util" "^29.7.0" + +"@jest/globals@^29.7.0": + "integrity" "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==" + "resolved" "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz" + "version" "29.7.0" + dependencies: + "@jest/environment" "^29.7.0" + "@jest/expect" "^29.7.0" + "@jest/types" "^29.6.3" + "jest-mock" "^29.7.0" + +"@jest/globals@>= 28": + "integrity" "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==" + "resolved" "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz" + "version" "27.5.1" + dependencies: + "@jest/environment" "^27.5.1" + "@jest/types" "^27.5.1" + "expect" "^27.5.1" + +"@jest/reporters@^29.7.0": + "integrity" "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==" + "resolved" "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz" + "version" "29.7.0" + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@jridgewell/trace-mapping" "^0.3.18" + "@types/node" "*" + "chalk" "^4.0.0" + "collect-v8-coverage" "^1.0.0" + "exit" "^0.1.2" + "glob" "^7.1.3" + "graceful-fs" "^4.2.9" + "istanbul-lib-coverage" "^3.0.0" + "istanbul-lib-instrument" "^6.0.0" + "istanbul-lib-report" "^3.0.0" + "istanbul-lib-source-maps" "^4.0.0" + "istanbul-reports" "^3.1.3" + "jest-message-util" "^29.7.0" + "jest-util" "^29.7.0" + "jest-worker" "^29.7.0" + "slash" "^3.0.0" + "string-length" "^4.0.1" + "strip-ansi" "^6.0.0" + "v8-to-istanbul" "^9.0.1" + +"@jest/schemas@^29.6.3": + "integrity" "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==" + "resolved" "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz" + "version" "29.6.3" + dependencies: + "@sinclair/typebox" "^0.27.8" + +"@jest/source-map@^29.6.3": + "integrity" "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==" + "resolved" "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz" + "version" "29.6.3" + dependencies: + "@jridgewell/trace-mapping" "^0.3.18" + "callsites" "^3.0.0" + "graceful-fs" "^4.2.9" + +"@jest/test-result@^29.7.0": + "integrity" "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==" + "resolved" "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz" + "version" "29.7.0" + dependencies: + "@jest/console" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/istanbul-lib-coverage" "^2.0.0" + "collect-v8-coverage" "^1.0.0" + +"@jest/test-sequencer@^29.7.0": + "integrity" "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==" + "resolved" "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz" + "version" "29.7.0" + dependencies: + "@jest/test-result" "^29.7.0" + "graceful-fs" "^4.2.9" + "jest-haste-map" "^29.7.0" + "slash" "^3.0.0" + +"@jest/transform@^29.7.0": + "integrity" "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==" + "resolved" "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz" + "version" "29.7.0" + dependencies: + "@babel/core" "^7.11.6" + "@jest/types" "^29.6.3" + "@jridgewell/trace-mapping" "^0.3.18" + "babel-plugin-istanbul" "^6.1.1" + "chalk" "^4.0.0" + "convert-source-map" "^2.0.0" + "fast-json-stable-stringify" "^2.1.0" + "graceful-fs" "^4.2.9" + "jest-haste-map" "^29.7.0" + "jest-regex-util" "^29.6.3" + "jest-util" "^29.7.0" + "micromatch" "^4.0.4" + "pirates" "^4.0.4" + "slash" "^3.0.0" + "write-file-atomic" "^4.0.2" + +"@jest/types@^27.5.1": + "integrity" "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==" + "resolved" "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz" + "version" "27.5.1" + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^16.0.0" + "chalk" "^4.0.0" + +"@jest/types@^29.0.0", "@jest/types@^29.6.3": + "integrity" "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==" + "resolved" "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz" + "version" "29.6.3" + dependencies: + "@jest/schemas" "^29.6.3" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + "chalk" "^4.0.0" + +"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": + "integrity" "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==" + "resolved" "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz" + "version" "0.3.3" + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0": + "integrity" "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==" + "resolved" "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz" + "version" "3.1.1" + +"@jridgewell/set-array@^1.0.1": + "integrity" "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" + "resolved" "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" + "version" "1.1.2" + +"@jridgewell/source-map@^0.3.3": + "integrity" "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==" + "resolved" "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz" + "version" "0.3.5" + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": + "integrity" "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + "resolved" "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz" + "version" "1.4.15" + +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.9": + "integrity" "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==" + "resolved" "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz" + "version" "0.3.19" + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@jridgewell/trace-mapping@0.3.9": + "integrity" "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==" + "resolved" "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz" + "version" "0.3.9" + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@leichtgewicht/ip-codec@^2.0.1": + "integrity" "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==" + "resolved" "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz" + "version" "2.0.4" + +"@lezer/common@^1.0.0", "@lezer/common@^1.1.0": + "integrity" "sha512-XPIN3cYDXsoJI/oDWoR2tD++juVrhgIago9xyKhZ7IhGlzdDM9QgC8D8saKNCz5pindGcznFr2HBSsEQSWnSjw==" + "resolved" "https://registry.npmjs.org/@lezer/common/-/common-1.1.0.tgz" + "version" "1.1.0" + +"@lezer/highlight@^1.0.0": + "integrity" "sha512-cmSJYa2us+r3SePpRCjN5ymCqCPv+zyXmDl0ciWtVaNiORT/MxM7ZgOMQZADD0o51qOaOg24qc/zBViOIwAjJg==" + "resolved" "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.1.6.tgz" + "version" "1.1.6" + dependencies: + "@lezer/common" "^1.0.0" + +"@lezer/lr@^1.0.0": + "integrity" "sha512-RLAbau/4uSzKgIKj96mI5WUtG1qtiR0Frn0Ei9zhPj8YOkHM+1Bb8SgdVvmR/aWJCFIzjo2KFnDiRZ75Xf5NdQ==" + "resolved" "https://registry.npmjs.org/@lezer/lr/-/lr-1.3.13.tgz" + "version" "1.3.13" + dependencies: + "@lezer/common" "^1.0.0" + +"@malept/cross-spawn-promise@^1.1.0": + "integrity" "sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==" + "resolved" "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz" + "version" "1.1.1" + dependencies: + "cross-spawn" "^7.0.1" + +"@malept/cross-spawn-promise@^2.0.0": + "integrity" "sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg==" + "resolved" "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "cross-spawn" "^7.0.1" + +"@malept/flatpak-bundler@^0.4.0": + "integrity" "sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q==" + "resolved" "https://registry.npmjs.org/@malept/flatpak-bundler/-/flatpak-bundler-0.4.0.tgz" + "version" "0.4.0" + dependencies: + "debug" "^4.1.1" + "fs-extra" "^9.0.0" + "lodash" "^4.17.15" + "tmp-promise" "^3.0.2" + +"@mdn/browser-compat-data@^5.2.34", "@mdn/browser-compat-data@^5.3.13": + "integrity" "sha512-0MTNMfRvhzksN+XOtXikglAzXIiMQW1JzOZxOz0ymL7LFxX5orVdg8zrlLkgF/3s55Zb7xRadFs15LxpgtD36g==" + "resolved" "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-5.3.21.tgz" + "version" "5.3.21" + +"@nestjs/common@^8.0.0": + "integrity" "sha512-m/YsbcBal+gA5CFrDpqXqsSfylo+DIQrkFY3qhVIltsYRfu8ct8J9pqsTO6OPf3mvqdOpFGrV5sBjoyAzOBvsw==" + "resolved" "https://registry.npmjs.org/@nestjs/common/-/common-8.4.7.tgz" + "version" "8.4.7" + dependencies: + "axios" "0.27.2" + "iterare" "1.2.1" + "tslib" "2.4.0" + "uuid" "8.3.2" "@nodelib/fs.scandir@2.1.5": "integrity" "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==" @@ -171,12 +1667,12 @@ "@nodelib/fs.stat" "2.0.5" "run-parallel" "^1.1.9" -"@nodelib/fs.stat@2.0.5": +"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": "integrity" "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" "resolved" "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" "version" "2.0.5" -"@nodelib/fs.walk@^1.2.8": +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": "integrity" "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==" "resolved" "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" "version" "1.2.8" @@ -184,6 +1680,13 @@ "@nodelib/fs.scandir" "2.1.5" "fastq" "^1.6.0" +"@npmcli/fs@^3.1.0": + "integrity" "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==" + "resolved" "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "semver" "^7.3.5" + "@onflow/config@^1.1.1", "@onflow/config@^1.1.2": "integrity" "sha512-Jnorp86YkGFJLpCE4ufY8wva5vW8MJxkPzLRITW+aqUDVH9FQvYuTCLHsujy/Mrr9+WgrClf6MQrA2bUCE2zEg==" "resolved" "https://registry.npmjs.org/@onflow/config/-/config-1.1.2.tgz" @@ -256,7 +1759,7 @@ "abort-controller" "^3.0.0" "cross-fetch" "^3.1.6" -"@onflow/types@^1.1.0": +"@onflow/types@^1.0.3", "@onflow/types@^1.1.0": "integrity" "sha512-UUd2ZAFqdd8BHW//uTg+YRlh3EIH9Na+UYJ9qXpt6y87qjW0Lf4Zkhn6H5IqvhIJsjK17QYnXLFpoXItD/+ToQ==" "resolved" "https://registry.npmjs.org/@onflow/types/-/types-1.1.0.tgz" "version" "1.1.0" @@ -306,11 +1809,11 @@ dependencies: "@babel/runtime" "^7.18.6" -"@onflowser/api@file:/Users/bartkozorog/Projects/flowser/packages/api": +"@onflowser/api@*", "@onflowser/api@file:/Users/bartkozorog/Projects/flowser/packages/api": "resolved" "file:packages/api" "version" "1.0.0" dependencies: - "config" "*" + "@onflowser/config" "*" "@onflowser/config@*", "@onflowser/config@file:/Users/bartkozorog/Projects/flowser/packages/config": "resolved" "file:packages/config" @@ -322,6 +1825,7 @@ dependencies: "@nestjs/common" "^8.0.0" "@onflow/fcl" "^1.6.0" + "@onflowser/api" "*" "@onflowser/config" "*" "axios" "^0.21.4" "node-abort-controller" "^3.0.1" @@ -330,6 +1834,7 @@ "resolved" "file:apps/demo-app" "version" "1.0.0" dependencies: + "@onflowser/api" "*" "@onflowser/config" "*" "@onflowser/core" "*" "@onflowser/indexer" "*" @@ -341,6 +1846,29 @@ "@onflowser/config" "*" "@onflowser/core" "*" +"@onflowser/ui@*", "@onflowser/ui@file:/Users/bartkozorog/Projects/flowser/packages/ui": + "resolved" "file:packages/ui" + "version" "0.0.0" + dependencies: + "@codemirror/legacy-modes" "^6.1.0" + "@onflowser/api" "*" + "@tanstack/react-table" "^8.5.11" + "@uidotdev/usehooks" "^2.3.1" + "@uiw/codemirror-extensions-basic-setup" "^4.12.4" + "@uiw/codemirror-theme-github" "^4.12.4" + "@uiw/react-codemirror" "^4.12.4" + "ansi-to-html" "^0.7.2" + "classnames" "^2.3.2" + "copy-to-clipboard" "^3.3.3" + "date-fns" "^2.30.0" + "dateformat" "^5.0.3" + "react" "^18.0.0" + "react-hot-toast" "^2.4.1" + "react-icons" "^4.11.0" + "react-json-view" "^1.21.3" + "react-router-dom" "6.15.0" + "react-timeago" "^7.2.0" + "@onflowser/wallet@file:/Users/bartkozorog/Projects/flowser/packages/wallet": "resolved" "file:packages/wallet" "version" "1.0.0" @@ -349,920 +1877,4806 @@ "@onflowser/config" "*" "elliptic" "^6.5.4" +"@pkgjs/parseargs@^0.11.0": + "integrity" "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==" + "resolved" "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz" + "version" "0.11.0" + +"@pkgr/utils@^2.3.1": + "integrity" "sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==" + "resolved" "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.2.tgz" + "version" "2.4.2" + dependencies: + "cross-spawn" "^7.0.3" + "fast-glob" "^3.3.0" + "is-glob" "^4.0.3" + "open" "^9.1.0" + "picocolors" "^1.0.0" + "tslib" "^2.6.0" + +"@pmmmwh/react-refresh-webpack-plugin@^0.5.11": + "integrity" "sha512-7j/6vdTym0+qZ6u4XbSAxrWBGYSdCfTzySkj7WAFgDLmSyWlOrWvpyzxlFh5jtw9dn0oL/jtW+06XfFiisN3JQ==" + "resolved" "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.11.tgz" + "version" "0.5.11" + dependencies: + "ansi-html-community" "^0.0.8" + "common-path-prefix" "^3.0.0" + "core-js-pure" "^3.23.3" + "error-stack-parser" "^2.0.6" + "find-up" "^5.0.0" + "html-entities" "^2.1.0" + "loader-utils" "^2.0.4" + "schema-utils" "^3.0.0" + "source-map" "^0.7.3" + +"@polka/url@^1.0.0-next.20": + "integrity" "sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg==" + "resolved" "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.23.tgz" + "version" "1.0.0-next.23" + +"@remix-run/router@1.8.0": + "integrity" "sha512-mrfKqIHnSZRyIzBcanNJmVQELTnX+qagEDlcKO90RgRBVOZGSGvZKeDihTRfWcqoDn5N/NkUcwWTccnpN18Tfg==" + "resolved" "https://registry.npmjs.org/@remix-run/router/-/router-1.8.0.tgz" + "version" "1.8.0" + +"@remix-run/router@1.9.0": + "integrity" "sha512-bV63itrKBC0zdT27qYm6SDZHlkXwFL1xMBuhkn+X7l0+IIhNaH5wuuvZKp6eKhCD4KFhujhfhCT1YxXW6esUIA==" + "resolved" "https://registry.npmjs.org/@remix-run/router/-/router-1.9.0.tgz" + "version" "1.9.0" + +"@rollup/pluginutils@^5.0.4": + "integrity" "sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==" + "resolved" "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.5.tgz" + "version" "5.0.5" + dependencies: + "@types/estree" "^1.0.0" + "estree-walker" "^2.0.2" + "picomatch" "^2.3.1" + "@sinclair/typebox@^0.27.8": "integrity" "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==" "resolved" "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz" "version" "0.27.8" -"@types/bn.js@*": - "integrity" "sha512-dkpZu0szUtn9UXTmw+e0AJFd4D2XAxDnsCLdc05SfqpqzPEBft8eQr8uaFitfo/dUUOZERaLec2hHMG87A4Dxg==" - "resolved" "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.2.tgz" - "version" "5.1.2" - dependencies: - "@types/node" "*" +"@sindresorhus/is@^4.0.0": + "integrity" "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==" + "resolved" "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz" + "version" "4.6.0" -"@types/elliptic@^6.4.14": - "integrity" "sha512-tW9Z/mrlymYEbx/WWcO/Kkly0VxqPNaf/p3KcZTYKI282ZX+50efZvY/p6FoMuTpFq+QMyABQNfs6OXvdmVUhQ==" - "resolved" "https://registry.npmjs.org/@types/elliptic/-/elliptic-6.4.15.tgz" - "version" "6.4.15" +"@sinonjs/commons@^1.7.0": + "integrity" "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==" + "resolved" "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz" + "version" "1.8.6" dependencies: - "@types/bn.js" "*" - -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": - "integrity" "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==" - "resolved" "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz" - "version" "2.0.4" + "type-detect" "4.0.8" -"@types/istanbul-lib-report@*": - "integrity" "sha512-gPQuzaPR5h/djlAv2apEG1HVOyj1IUs7GpfMZixU0/0KXT3pm64ylHuMUI1/Akh+sq/iikxg6Z2j+fcMDXaaTQ==" - "resolved" "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz" - "version" "3.0.1" +"@sinonjs/commons@^3.0.0": + "integrity" "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==" + "resolved" "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz" + "version" "3.0.0" dependencies: - "@types/istanbul-lib-coverage" "*" + "type-detect" "4.0.8" -"@types/istanbul-reports@^3.0.0": - "integrity" "sha512-kv43F9eb3Lhj+lr/Hn6OcLCs/sSM8bt+fIaP11rCYngfV6NVjzWXJ17owQtDQTL9tQ8WSLUrGsSJ6rJz0F1w1A==" - "resolved" "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.2.tgz" - "version" "3.0.2" +"@sinonjs/fake-timers@^10.0.2": + "integrity" "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==" + "resolved" "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz" + "version" "10.3.0" dependencies: - "@types/istanbul-lib-report" "*" + "@sinonjs/commons" "^3.0.0" -"@types/jest@^29.5.5": - "integrity" "sha512-ebylz2hnsWR9mYvmBFbXJXr+33UPc4+ZdxyDXh5w0FlPBTfCVN3wPL+kuOiQt3xvrK419v7XWeAs+AeOksafXg==" - "resolved" "https://registry.npmjs.org/@types/jest/-/jest-29.5.5.tgz" - "version" "29.5.5" +"@sinonjs/fake-timers@^8.0.1": + "integrity" "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==" + "resolved" "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz" + "version" "8.1.0" dependencies: - "expect" "^29.0.0" - "pretty-format" "^29.0.0" + "@sinonjs/commons" "^1.7.0" -"@types/node@*", "@types/node@^16.11.6": - "integrity" "sha512-Y1zz/LIuJek01+hlPNzzXQhmq/Z2BCP96j18MSXC0S0jSu/IG4FFxmBs7W4/lI2vPJ7foVfEB0hUVtnOjnCiTg==" - "resolved" "https://registry.npmjs.org/@types/node/-/node-16.18.55.tgz" - "version" "16.18.55" +"@svgr/babel-plugin-add-jsx-attribute@8.0.0": + "integrity" "sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==" + "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz" + "version" "8.0.0" -"@types/stack-utils@^2.0.0": - "integrity" "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==" - "resolved" "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz" - "version" "2.0.1" +"@svgr/babel-plugin-remove-jsx-attribute@8.0.0": + "integrity" "sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==" + "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz" + "version" "8.0.0" -"@types/yargs-parser@*": - "integrity" "sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ==" - "resolved" "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.1.tgz" - "version" "21.0.1" +"@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0": + "integrity" "sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==" + "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz" + "version" "8.0.0" -"@types/yargs@^17.0.8": - "integrity" "sha512-N3e3fkS86hNhtk6BEnc0rj3zcehaxx8QWhCROJkqpl5Zaoi7nAic3jH8q94jVD3zu5LGk+PUB6KAiDmimYOEQw==" - "resolved" "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.28.tgz" - "version" "17.0.28" - dependencies: - "@types/yargs-parser" "*" +"@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0": + "integrity" "sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==" + "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz" + "version" "8.0.0" -"abort-controller@^3.0.0": - "integrity" "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==" - "resolved" "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "event-target-shim" "^5.0.0" +"@svgr/babel-plugin-svg-dynamic-title@8.0.0": + "integrity" "sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==" + "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz" + "version" "8.0.0" -"acorn-jsx@^5.3.1", "acorn-jsx@^5.3.2": - "integrity" "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==" - "resolved" "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" - "version" "5.3.2" +"@svgr/babel-plugin-svg-em-dimensions@8.0.0": + "integrity" "sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==" + "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz" + "version" "8.0.0" -"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", "acorn@^7.4.0": - "integrity" "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" - "resolved" "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" - "version" "7.4.1" +"@svgr/babel-plugin-transform-react-native-svg@8.1.0": + "integrity" "sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==" + "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz" + "version" "8.1.0" -"acorn@^8.9.0": - "integrity" "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==" - "resolved" "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz" - "version" "8.10.0" +"@svgr/babel-plugin-transform-svg-component@8.0.0": + "integrity" "sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==" + "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz" + "version" "8.0.0" -"aggregate-error@^3.0.0": - "integrity" "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==" - "resolved" "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz" - "version" "3.1.0" +"@svgr/babel-preset@8.1.0": + "integrity" "sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==" + "resolved" "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-8.1.0.tgz" + "version" "8.1.0" + dependencies: + "@svgr/babel-plugin-add-jsx-attribute" "8.0.0" + "@svgr/babel-plugin-remove-jsx-attribute" "8.0.0" + "@svgr/babel-plugin-remove-jsx-empty-expression" "8.0.0" + "@svgr/babel-plugin-replace-jsx-attribute-value" "8.0.0" + "@svgr/babel-plugin-svg-dynamic-title" "8.0.0" + "@svgr/babel-plugin-svg-em-dimensions" "8.0.0" + "@svgr/babel-plugin-transform-react-native-svg" "8.1.0" + "@svgr/babel-plugin-transform-svg-component" "8.0.0" + +"@svgr/core@*", "@svgr/core@^8.1.0", "@svgr/core@8.1.0": + "integrity" "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==" + "resolved" "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz" + "version" "8.1.0" + dependencies: + "@babel/core" "^7.21.3" + "@svgr/babel-preset" "8.1.0" + "camelcase" "^6.2.0" + "cosmiconfig" "^8.1.3" + "snake-case" "^3.0.4" + +"@svgr/hast-util-to-babel-ast@8.0.0": + "integrity" "sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==" + "resolved" "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz" + "version" "8.0.0" dependencies: - "clean-stack" "^2.0.0" - "indent-string" "^4.0.0" - -"ajv@^6.10.0": - "integrity" "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==" - "resolved" "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" - "version" "6.12.6" + "@babel/types" "^7.21.3" + "entities" "^4.4.0" + +"@svgr/plugin-jsx@^8.1.0", "@svgr/plugin-jsx@8.1.0": + "integrity" "sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==" + "resolved" "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz" + "version" "8.1.0" + dependencies: + "@babel/core" "^7.21.3" + "@svgr/babel-preset" "8.1.0" + "@svgr/hast-util-to-babel-ast" "8.0.0" + "svg-parser" "^2.0.4" + +"@svgr/plugin-svgo@8.1.0": + "integrity" "sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==" + "resolved" "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz" + "version" "8.1.0" + dependencies: + "cosmiconfig" "^8.1.3" + "deepmerge" "^4.3.1" + "svgo" "^3.0.2" + +"@svgr/webpack@^8.1.0": + "integrity" "sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA==" + "resolved" "https://registry.npmjs.org/@svgr/webpack/-/webpack-8.1.0.tgz" + "version" "8.1.0" + dependencies: + "@babel/core" "^7.21.3" + "@babel/plugin-transform-react-constant-elements" "^7.21.3" + "@babel/preset-env" "^7.20.2" + "@babel/preset-react" "^7.18.6" + "@babel/preset-typescript" "^7.21.0" + "@svgr/core" "8.1.0" + "@svgr/plugin-jsx" "8.1.0" + "@svgr/plugin-svgo" "8.1.0" + +"@szmarczak/http-timer@^4.0.5": + "integrity" "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==" + "resolved" "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz" + "version" "4.0.6" 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" + "defer-to-connect" "^2.0.0" -"ajv@^6.12.4": - "integrity" "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==" - "resolved" "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" - "version" "6.12.6" +"@tanstack/react-table@^8.5.11": + "integrity" "sha512-D0VEfkIYnIKdy6SHiBNEaMc4SxO+MV7ojaPhRu8jP933/gbMi367+Wul2LxkdovJ5cq6awm0L1+jgxdS/unzIg==" + "resolved" "https://registry.npmjs.org/@tanstack/react-table/-/react-table-8.10.6.tgz" + "version" "8.10.6" 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" + "@tanstack/table-core" "8.10.6" -"ajv@^8.0.1": - "integrity" "sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==" - "resolved" "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz" - "version" "8.9.0" +"@tanstack/table-core@8.10.6": + "integrity" "sha512-9t8brthhAmCBIjzk7fCDa/kPKoLQTtA31l9Ir76jYxciTlHU61r/6gYm69XF9cbg9n88gVL5y7rNpeJ2dc1AFA==" + "resolved" "https://registry.npmjs.org/@tanstack/table-core/-/table-core-8.10.6.tgz" + "version" "8.10.6" + +"@teamsupercell/typings-for-css-modules-loader@^2.5.2": + "integrity" "sha512-3sqH2B4itcm5XgV1IHENt4NOaW7bOC1CwJr63vrdKWWyKVxNxtBM+ABVhJZYFCCVAwNy7ulA64z6HyQqw96m4A==" + "resolved" "https://registry.npmjs.org/@teamsupercell/typings-for-css-modules-loader/-/typings-for-css-modules-loader-2.5.2.tgz" + "version" "2.5.2" dependencies: - "fast-deep-equal" "^3.1.1" - "json-schema-traverse" "^1.0.0" - "require-from-string" "^2.0.2" - "uri-js" "^4.2.2" + "camelcase" "^5.3.1" + "loader-utils" "^1.4.2" + "schema-utils" "^2.0.1" + optionalDependencies: + "prettier" "*" + +"@testing-library/dom@^9.0.0": + "integrity" "sha512-fB0R+fa3AUqbLHWyxXa2kGVtf1Fe1ZZFr0Zp6AIbIAzXb2mKbEXl+PCQNUOaq5lbTab5tfctfXRNsWXxa2f7Aw==" + "resolved" "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.3.tgz" + "version" "9.3.3" + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/runtime" "^7.12.5" + "@types/aria-query" "^5.0.1" + "aria-query" "5.1.3" + "chalk" "^4.1.0" + "dom-accessibility-api" "^0.5.9" + "lz-string" "^1.5.0" + "pretty-format" "^27.0.2" + +"@testing-library/jest-dom@^5.14.1", "@testing-library/jest-dom@^6.1.3": + "integrity" "sha512-YzpjRHoCBWPzpPNtg6gnhasqtE/5O4qz8WCwDEaxtfnPO6gkaLrnuXusrGSPyhIGPezr1HM7ZH0CFaUTY9PJEQ==" + "resolved" "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.1.3.tgz" + "version" "6.1.3" + dependencies: + "@adobe/css-tools" "^4.3.0" + "@babel/runtime" "^7.9.2" + "aria-query" "^5.0.0" + "chalk" "^3.0.0" + "css.escape" "^1.5.1" + "dom-accessibility-api" "^0.5.6" + "lodash" "^4.17.15" + "redent" "^3.0.0" + +"@testing-library/react@^14.0.0": + "integrity" "sha512-S04gSNJbYE30TlIMLTzv6QCTzt9AqIF5y6s6SzVFILNcNvbV/jU96GeiTPillGQo+Ny64M/5PV7klNYYgv5Dfg==" + "resolved" "https://registry.npmjs.org/@testing-library/react/-/react-14.0.0.tgz" + "version" "14.0.0" + dependencies: + "@babel/runtime" "^7.12.5" + "@testing-library/dom" "^9.0.0" + "@types/react-dom" "^18.0.0" + +"@tootallnate/once@2": + "integrity" "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==" + "resolved" "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz" + "version" "2.0.0" -"ansi-colors@^4.1.1": - "integrity" "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==" - "resolved" "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz" - "version" "4.1.3" +"@trysound/sax@0.2.0": + "integrity" "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==" + "resolved" "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz" + "version" "0.2.0" -"ansi-escapes@^4.3.0": - "integrity" "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==" - "resolved" "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" - "version" "4.3.2" - dependencies: - "type-fest" "^0.21.3" +"@tsconfig/node10@^1.0.7": + "integrity" "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==" + "resolved" "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz" + "version" "1.0.9" -"ansi-regex@^5.0.1": - "integrity" "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" - "version" "5.0.1" +"@tsconfig/node12@^1.0.7": + "integrity" "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==" + "resolved" "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz" + "version" "1.0.11" -"ansi-regex@^6.0.1": - "integrity" "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" - "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz" - "version" "6.0.1" +"@tsconfig/node14@^1.0.0": + "integrity" "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==" + "resolved" "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz" + "version" "1.0.3" -"ansi-styles@^3.2.1": - "integrity" "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==" - "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" - "version" "3.2.1" - dependencies: - "color-convert" "^1.9.0" +"@tsconfig/node16@^1.0.2": + "integrity" "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==" + "resolved" "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz" + "version" "1.0.4" -"ansi-styles@^4.0.0", "ansi-styles@^4.1.0": - "integrity" "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==" - "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" - "version" "4.3.0" +"@types/aria-query@^5.0.1": + "integrity" "sha512-PHKZuMN+K5qgKIWhBodXzQslTo5P+K/6LqeKXS6O/4liIDdZqaX5RXrCK++LAw+y/nptN48YmUMFiQHRSWYwtQ==" + "resolved" "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.2.tgz" + "version" "5.0.2" + +"@types/babel__core@^7.1.14": + "integrity" "sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA==" + "resolved" "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.2.tgz" + "version" "7.20.2" dependencies: - "color-convert" "^2.0.1" + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" -"ansi-styles@^5.0.0": - "integrity" "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" - "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" - "version" "5.2.0" +"@types/babel__generator@*": + "integrity" "sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w==" + "resolved" "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.5.tgz" + "version" "7.6.5" + dependencies: + "@babel/types" "^7.0.0" -"ansi-styles@^6.0.0": - "integrity" "sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==" - "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.1.0.tgz" - "version" "6.1.0" +"@types/babel__template@*": + "integrity" "sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ==" + "resolved" "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.2.tgz" + "version" "7.4.2" + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" -"argparse@^1.0.7": - "integrity" "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==" - "resolved" "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" - "version" "1.0.10" +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": + "integrity" "sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw==" + "resolved" "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.2.tgz" + "version" "7.20.2" dependencies: - "sprintf-js" "~1.0.2" + "@babel/types" "^7.20.7" -"argparse@^2.0.1": - "integrity" "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - "resolved" "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" - "version" "2.0.1" +"@types/bn.js@*": + "integrity" "sha512-dkpZu0szUtn9UXTmw+e0AJFd4D2XAxDnsCLdc05SfqpqzPEBft8eQr8uaFitfo/dUUOZERaLec2hHMG87A4Dxg==" + "resolved" "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.2.tgz" + "version" "5.1.2" + dependencies: + "@types/node" "*" -"astral-regex@^2.0.0": - "integrity" "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==" - "resolved" "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz" - "version" "2.0.0" +"@types/body-parser@*": + "integrity" "sha512-oyl4jvAfTGX9Bt6Or4H9ni1Z447/tQuxnZsytsCaExKlmJiU8sFgnIBRzJUpKwB5eWn9HuBYlUlVA74q/yN0eQ==" + "resolved" "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.3.tgz" + "version" "1.19.3" + dependencies: + "@types/connect" "*" + "@types/node" "*" -"asynckit@^0.4.0": - "integrity" "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - "resolved" "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" - "version" "0.4.0" +"@types/bonjour@^3.5.9": + "integrity" "sha512-isGhjmBtLIxdHBDl2xGwUzEM8AOyOvWsADWq7rqirdi/ZQoHnLWErHvsThcEzTX8juDRiZtzp2Qkv5bgNh6mAg==" + "resolved" "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.11.tgz" + "version" "3.5.11" + dependencies: + "@types/node" "*" -"axios@^0.21.4": - "integrity" "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==" - "resolved" "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz" - "version" "0.21.4" +"@types/cacheable-request@^6.0.1": + "integrity" "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==" + "resolved" "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz" + "version" "6.0.3" dependencies: - "follow-redirects" "^1.14.0" + "@types/http-cache-semantics" "*" + "@types/keyv" "^3.1.4" + "@types/node" "*" + "@types/responselike" "^1.0.0" -"axios@0.27.2": - "integrity" "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==" - "resolved" "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz" - "version" "0.27.2" +"@types/connect-history-api-fallback@^1.3.5": + "integrity" "sha512-iaQslNbARe8fctL5Lk+DsmgWOM83lM+7FzP0eQUJs1jd3kBE8NWqBTIT2S8SqQOJjxvt2eyIjpOuYeRXq2AdMw==" + "resolved" "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.1.tgz" + "version" "1.5.1" dependencies: - "follow-redirects" "^1.14.9" - "form-data" "^4.0.0" + "@types/express-serve-static-core" "*" + "@types/node" "*" -"balanced-match@^1.0.0": - "integrity" "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - "resolved" "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" - "version" "1.0.2" +"@types/connect@*": + "integrity" "sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==" + "resolved" "https://registry.npmjs.org/@types/connect/-/connect-3.4.36.tgz" + "version" "3.4.36" + dependencies: + "@types/node" "*" -"base64-js@^1.3.1": - "integrity" "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - "resolved" "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" - "version" "1.5.1" +"@types/debug@^4.1.6": + "integrity" "sha512-8Hz50m2eoS56ldRlepxSBa6PWEVCtzUo/92HgLc2qTMnotJNIm7xP+UZhyWoYsyOdd5dxZ+NZLb24rsKyFs2ow==" + "resolved" "https://registry.npmjs.org/@types/debug/-/debug-4.1.9.tgz" + "version" "4.1.9" + dependencies: + "@types/ms" "*" -"bn.js@^4.11.9": - "integrity" "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" - "version" "4.12.0" +"@types/elliptic@^6.4.14": + "integrity" "sha512-tW9Z/mrlymYEbx/WWcO/Kkly0VxqPNaf/p3KcZTYKI282ZX+50efZvY/p6FoMuTpFq+QMyABQNfs6OXvdmVUhQ==" + "resolved" "https://registry.npmjs.org/@types/elliptic/-/elliptic-6.4.15.tgz" + "version" "6.4.15" + dependencies: + "@types/bn.js" "*" -"brace-expansion@^1.1.7": - "integrity" "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==" - "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" - "version" "1.1.11" +"@types/eslint-scope@^3.7.3": + "integrity" "sha512-JNvhIEyxVW6EoMIFIvj93ZOywYFatlpu9deeH6eSx6PE3WHYvHaQtmHmQeNw7aA81bYGBPPQqdtBm6b1SsQMmA==" + "resolved" "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.5.tgz" + "version" "3.7.5" dependencies: - "balanced-match" "^1.0.0" - "concat-map" "0.0.1" + "@types/eslint" "*" + "@types/estree" "*" -"braces@^3.0.2": - "integrity" "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==" - "resolved" "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" - "version" "3.0.2" +"@types/eslint@*", "@types/eslint@>=8.0.0": + "integrity" "sha512-iM/WfkwAhwmPff3wZuPLYiHX18HI24jU8k1ZSH7P8FHwxTjZ2P6CoX2wnF43oprR+YXJM6UUxATkNvyv/JHd+g==" + "resolved" "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.3.tgz" + "version" "8.44.3" dependencies: - "fill-range" "^7.0.1" + "@types/estree" "*" + "@types/json-schema" "*" -"brorand@^1.1.0": - "integrity" "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" - "resolved" "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz" - "version" "1.1.0" +"@types/estree@*", "@types/estree@^1.0.0": + "integrity" "sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA==" + "resolved" "https://registry.npmjs.org/@types/estree/-/estree-1.0.2.tgz" + "version" "1.0.2" -"buffer@^6.0.3", "buffer@6.0.3": - "integrity" "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==" - "resolved" "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz" - "version" "6.0.3" +"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33": + "integrity" "sha512-ZohaCYTgGFcOP7u6aJOhY9uIZQgZ2vxC2yWoArY+FeDXlqeH66ZVBjgvg+RLVAS/DWNq4Ap9ZXu1+SUQiiWYMg==" + "resolved" "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.37.tgz" + "version" "4.17.37" dependencies: - "base64-js" "^1.3.1" - "ieee754" "^1.2.1" + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + "@types/send" "*" -"callsites@^3.0.0": - "integrity" "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" - "resolved" "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" - "version" "3.1.0" +"@types/express@*", "@types/express@^4.17.13": + "integrity" "sha512-Sxv8BSLLgsBYmcnGdGjjEjqET2U+AKAdCRODmMiq02FgjwuV75Ut85DRpvFjyw/Mk0vgUOliGRU0UUmuuZHByQ==" + "resolved" "https://registry.npmjs.org/@types/express/-/express-4.17.18.tgz" + "version" "4.17.18" + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.33" + "@types/qs" "*" + "@types/serve-static" "*" -"chalk@^2.4.2": - "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" - "version" "2.4.2" +"@types/fs-extra@^9.0.11", "@types/fs-extra@9.0.13": + "integrity" "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==" + "resolved" "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz" + "version" "9.0.13" dependencies: - "ansi-styles" "^3.2.1" - "escape-string-regexp" "^1.0.5" - "supports-color" "^5.3.0" + "@types/node" "*" -"chalk@^4.0.0": - "integrity" "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" - "version" "4.1.2" +"@types/graceful-fs@^4.1.2", "@types/graceful-fs@^4.1.3": + "integrity" "sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw==" + "resolved" "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.7.tgz" + "version" "4.1.7" dependencies: - "ansi-styles" "^4.1.0" - "supports-color" "^7.1.0" + "@types/node" "*" -"ci-info@^3.2.0": - "integrity" "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==" - "resolved" "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz" - "version" "3.9.0" +"@types/html-minifier-terser@^6.0.0": + "integrity" "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==" + "resolved" "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz" + "version" "6.1.0" -"class-transformer@*": - "integrity" "sha512-ETWD/H2TbWbKEi7m9N4Km5+cw1hNcqJSxlSYhsLsNjQzWWiZIYA1zafxpK9PwVfaZ6AqR5rrjPVUBGESm5tQUA==" - "resolved" "https://registry.npmjs.org/class-transformer/-/class-transformer-0.4.0.tgz" - "version" "0.4.0" +"@types/http-cache-semantics@*": + "integrity" "sha512-FD+nQWA2zJjh4L9+pFXqWOi0Hs1ryBCfI+985NjluQ1p8EYtoLvjLOKidXBtZ4/IcxDX4o8/E8qDS3540tNliw==" + "resolved" "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.2.tgz" + "version" "4.0.2" -"class-validator@*": - "integrity" "sha512-yBUcQy07FPlGzUjoLuUfIOXzgynnQPPruyK1Ge2B74k9ROwnle1E+NxLWnUv5OLU8hA/qL5leAE9XnXq3byaBw==" - "resolved" "https://registry.npmjs.org/class-validator/-/class-validator-0.13.2.tgz" - "version" "0.13.2" +"@types/http-errors@*": + "integrity" "sha512-lPG6KlZs88gef6aD85z3HNkztpj7w2R7HmR3gygjfXCQmsLloWNARFkMuzKiiY8FGdh1XDpgBdrSf4aKDiA7Kg==" + "resolved" "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.2.tgz" + "version" "2.0.2" + +"@types/http-proxy@^1.17.8": + "integrity" "sha512-kQtujO08dVtQ2wXAuSFfk9ASy3sug4+ogFR8Kd8UgP8PEuc1/G/8yjYRmp//PcDNJEUKOza/MrQu15bouEUCiw==" + "resolved" "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.12.tgz" + "version" "1.17.12" dependencies: - "libphonenumber-js" "^1.9.43" - "validator" "^13.7.0" + "@types/node" "*" -"clean-stack@^2.0.0": - "integrity" "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" - "resolved" "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz" - "version" "2.2.0" +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": + "integrity" "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==" + "resolved" "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz" + "version" "2.0.4" -"cli-cursor@^3.1.0": - "integrity" "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==" - "resolved" "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" - "version" "3.1.0" +"@types/istanbul-lib-report@*": + "integrity" "sha512-gPQuzaPR5h/djlAv2apEG1HVOyj1IUs7GpfMZixU0/0KXT3pm64ylHuMUI1/Akh+sq/iikxg6Z2j+fcMDXaaTQ==" + "resolved" "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz" + "version" "3.0.1" dependencies: - "restore-cursor" "^3.1.0" + "@types/istanbul-lib-coverage" "*" -"cli-truncate@^2.1.0": - "integrity" "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==" - "resolved" "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz" - "version" "2.1.0" +"@types/istanbul-reports@^3.0.0": + "integrity" "sha512-kv43F9eb3Lhj+lr/Hn6OcLCs/sSM8bt+fIaP11rCYngfV6NVjzWXJ17owQtDQTL9tQ8WSLUrGsSJ6rJz0F1w1A==" + "resolved" "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.2.tgz" + "version" "3.0.2" dependencies: - "slice-ansi" "^3.0.0" - "string-width" "^4.2.0" + "@types/istanbul-lib-report" "*" -"cli-truncate@^3.1.0": - "integrity" "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==" - "resolved" "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz" - "version" "3.1.0" +"@types/jest@^26.0.24", "@types/jest@^27.0.2", "@types/jest@^29.5.5", "@types/jest@>= 28": + "integrity" "sha512-ebylz2hnsWR9mYvmBFbXJXr+33UPc4+ZdxyDXh5w0FlPBTfCVN3wPL+kuOiQt3xvrK419v7XWeAs+AeOksafXg==" + "resolved" "https://registry.npmjs.org/@types/jest/-/jest-29.5.5.tgz" + "version" "29.5.5" dependencies: - "slice-ansi" "^5.0.0" - "string-width" "^5.0.0" + "expect" "^29.0.0" + "pretty-format" "^29.0.0" -"color-convert@^1.9.0": - "integrity" "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==" - "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" - "version" "1.9.3" +"@types/jsdom@^20.0.0": + "integrity" "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==" + "resolved" "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz" + "version" "20.0.1" dependencies: - "color-name" "1.1.3" + "@types/node" "*" + "@types/tough-cookie" "*" + "parse5" "^7.0.0" -"color-convert@^2.0.1": - "integrity" "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==" - "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "color-name" "~1.1.4" +"@types/json-schema@*", "@types/json-schema@^7.0.12", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": + "integrity" "sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==" + "resolved" "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.13.tgz" + "version" "7.0.13" -"color-name@~1.1.4": - "integrity" "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" - "version" "1.1.4" +"@types/json5@^0.0.29": + "integrity" "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" + "resolved" "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" + "version" "0.0.29" -"color-name@1.1.3": - "integrity" "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" - "version" "1.1.3" +"@types/keyv@^3.1.4": + "integrity" "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==" + "resolved" "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz" + "version" "3.1.4" + dependencies: + "@types/node" "*" -"colorette@^2.0.16": - "integrity" "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==" - "resolved" "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz" - "version" "2.0.19" +"@types/mime@*", "@types/mime@^1": + "integrity" "sha512-Ys+/St+2VF4+xuY6+kDIXGxbNRO0mesVg0bbxEfB97Od1Vjpjx9KD1qxs64Gcb3CWPirk9Xe+PT4YiiHQ9T+eg==" + "resolved" "https://registry.npmjs.org/@types/mime/-/mime-1.3.3.tgz" + "version" "1.3.3" -"combined-stream@^1.0.8": - "integrity" "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==" - "resolved" "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" - "version" "1.0.8" - dependencies: - "delayed-stream" "~1.0.0" +"@types/ms@*": + "integrity" "sha512-xPSg0jm4mqgEkNhowKgZFBNtwoEwF6gJ4Dhww+GFpm3IgtNseHQZ5IqdNwnquZEoANxyDAKDRAdVo4Z72VvD/g==" + "resolved" "https://registry.npmjs.org/@types/ms/-/ms-0.7.32.tgz" + "version" "0.7.32" -"commander@^9.3.0": - "integrity" "sha512-sRPT+umqkz90UA8M1yqYfnHlZA7fF6nSphDtxeywPZ49ysjxDQybzk13CL+mXekDRG92skbcqCLVovuCusNmFw==" - "resolved" "https://registry.npmjs.org/commander/-/commander-9.4.0.tgz" - "version" "9.4.0" +"@types/node@*", "@types/node@^12.20.27", "@types/node@^16.11.6", "@types/node@>= 14", "@types/node@18.18.4": + "integrity" "sha512-Y1zz/LIuJek01+hlPNzzXQhmq/Z2BCP96j18MSXC0S0jSu/IG4FFxmBs7W4/lI2vPJ7foVfEB0hUVtnOjnCiTg==" + "resolved" "https://registry.npmjs.org/@types/node/-/node-16.18.55.tgz" + "version" "16.18.55" -"comment-parser@1.3.1": - "integrity" "sha512-B52sN2VNghyq5ofvUsqZjmk6YkihBX5vMSChmSK9v4ShjKf3Vk5Xcmgpw4o+iIgtrnM/u5FiMpz9VKb8lpBveA==" - "resolved" "https://registry.npmjs.org/comment-parser/-/comment-parser-1.3.1.tgz" - "version" "1.3.1" +"@types/node@^18.11.18": + "integrity" "sha512-t3rNFBgJRugIhackit2mVcLfF6IRc0JE4oeizPQL8Zrm8n2WY/0wOdpOPhdtG0V9Q2TlW/axbF1MJ6z+Yj/kKQ==" + "resolved" "https://registry.npmjs.org/@types/node/-/node-18.18.4.tgz" + "version" "18.18.4" -"concat-map@0.0.1": - "integrity" "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - "resolved" "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - "version" "0.0.1" +"@types/node@20.6.2": + "integrity" "sha512-Y+/1vGBHV/cYk6OI1Na/LHzwnlNCAfU3ZNGrc1LdRe/LAIbdDPTTv/HU3M7yXN448aTVDq3eKRm2cg7iKLb8gw==" + "resolved" "https://registry.npmjs.org/@types/node/-/node-20.6.2.tgz" + "version" "20.6.2" -"config@*": - "resolved" "file:packages/config" - "version" "0.0.0" +"@types/parse-json@^4.0.0": + "integrity" "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + "resolved" "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz" + "version" "4.0.0" -"cross-fetch@^3.1.6": - "integrity" "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==" - "resolved" "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz" - "version" "3.1.8" +"@types/plist@^3.0.1": + "integrity" "sha512-DXkBoKc7jwUR0p439icInmXXMJNhoImdpOrrgA5/nDFK7LVtcJ9MyQNKhJEKpEztnHGWnNWMWLOIR62By0Ln0A==" + "resolved" "https://registry.npmjs.org/@types/plist/-/plist-3.0.3.tgz" + "version" "3.0.3" dependencies: - "node-fetch" "^2.6.12" + "@types/node" "*" + "xmlbuilder" ">=11.0.1" -"cross-spawn@^7.0.2", "cross-spawn@^7.0.3": - "integrity" "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==" - "resolved" "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" - "version" "7.0.3" - dependencies: - "path-key" "^3.1.0" - "shebang-command" "^2.0.0" - "which" "^2.0.1" +"@types/prop-types@*": + "integrity" "sha512-kMpQpfZKSCBqltAJwskgePRaYRFukDkm1oItcAbC3gNELR20XIBcN9VRgg4+m8DKsTfkWeA4m4Imp4DDuWy7FQ==" + "resolved" "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.8.tgz" + "version" "15.7.8" -"debug@^4.0.1", "debug@^4.1.1", "debug@^4.3.2", "debug@^4.3.4": - "integrity" "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==" - "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" - "version" "4.3.4" +"@types/qs@*": + "integrity" "sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg==" + "resolved" "https://registry.npmjs.org/@types/qs/-/qs-6.9.8.tgz" + "version" "6.9.8" + +"@types/range-parser@*": + "integrity" "sha512-xrO9OoVPqFuYyR/loIHjnbvvyRZREYKLjxV4+dY6v3FQR3stQ9ZxIGkaclF7YhI9hfjpuTbu14hZEy94qKLtOA==" + "resolved" "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.5.tgz" + "version" "1.2.5" + +"@types/react-dom@^17.0.21": + "integrity" "sha512-3rQEFUNUUz2MYiRwJJj6UekcW7rFLOtmK7ajQP7qJpjNdggInl3I/xM4I3Hq1yYPdCGVMgax1gZsB7BBTtayXg==" + "resolved" "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.21.tgz" + "version" "17.0.21" dependencies: - "ms" "2.1.2" + "@types/react" "^17" -"deep-is@^0.1.3": - "integrity" "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" - "resolved" "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" - "version" "0.1.4" +"@types/react-dom@^17.0.9", "@types/react-dom@^18.0.0", "@types/react-dom@^18.2.7": + "integrity" "sha512-zq6Dy0EiCuF9pWFW6I6k6W2LdpUixLE4P6XjXU1QHLfak3GPACQfLwEuHzY5pOYa4hzj1d0GxX/P141aFjZsyg==" + "resolved" "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.11.tgz" + "version" "18.2.11" + dependencies: + "@types/react" "*" -"deepmerge@^4.2.2": - "integrity" "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==" - "resolved" "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz" - "version" "4.3.1" +"@types/react-test-renderer@^18.0.1": + "integrity" "sha512-4wcNLnY6nIT+L6g94CpzL4CXX2P18JvKPU9CDlaHr3DnbP3GiaQLhDotJqjWlVqOcE4UhLRjp0MtxqwuNKONnA==" + "resolved" "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-18.0.3.tgz" + "version" "18.0.3" + dependencies: + "@types/react" "*" -"delayed-stream@~1.0.0": - "integrity" "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" - "resolved" "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" - "version" "1.0.0" +"@types/react@*", "@types/react@^17.0.24", "@types/react@^18.2.21": + "integrity" "sha512-24xqse6+VByVLIr+xWaQ9muX1B4bXJKXBbjszbld/UEDslGLY53+ZucF44HCmLbMPejTzGG9XgR+3m2/Wqu1kw==" + "resolved" "https://registry.npmjs.org/@types/react/-/react-18.2.25.tgz" + "version" "18.2.25" + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + "csstype" "^3.0.2" -"diff-sequences@^29.6.3": - "integrity" "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==" - "resolved" "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz" - "version" "29.6.3" +"@types/react@^17", "@types/react@^17.0.67": + "integrity" "sha512-zE76EIJ0Y58Oy9yDX/9csb/NuKjt0Eq2YgWb/8Wxo91YmuLzzbyiRoaqJE9h8iDlsT7n35GdpoLomHlaB1kFbg==" + "resolved" "https://registry.npmjs.org/@types/react/-/react-17.0.67.tgz" + "version" "17.0.67" + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + "csstype" "^3.0.2" -"doctrine@^3.0.0": - "integrity" "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==" - "resolved" "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" - "version" "3.0.0" +"@types/responselike@^1.0.0": + "integrity" "sha512-TiGnitEDxj2X0j+98Eqk5lv/Cij8oHd32bU4D/Yw6AOq7vvTk0gSD2GPj0G/HkvhMoVsdlhYF4yqqlyPBTM6Sg==" + "resolved" "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.1.tgz" + "version" "1.0.1" dependencies: - "esutils" "^2.0.2" + "@types/node" "*" -"eastasianwidth@^0.2.0": - "integrity" "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" - "resolved" "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" - "version" "0.2.0" +"@types/retry@0.12.0": + "integrity" "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" + "resolved" "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz" + "version" "0.12.0" -"elliptic@^6.5.4": - "integrity" "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==" - "resolved" "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz" - "version" "6.5.4" +"@types/scheduler@*": + "integrity" "sha512-2L9ifAGl7wmXwP4v3pN4p2FLhD0O1qsJpvKmNin5VA8+UvNVb447UDaAEV6UdrkA+m/Xs58U1RFps44x6TFsVQ==" + "resolved" "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.4.tgz" + "version" "0.16.4" + +"@types/semver@^7.3.12", "@types/semver@^7.5.0": + "integrity" "sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==" + "resolved" "https://registry.npmjs.org/@types/semver/-/semver-7.5.3.tgz" + "version" "7.5.3" + +"@types/send@*": + "integrity" "sha512-aAG6yRf6r0wQ29bkS+x97BIs64ZLxeE/ARwyS6wrldMm3C1MdKwCcnnEwMC1slI8wuxJOpiUH9MioC0A0i+GJw==" + "resolved" "https://registry.npmjs.org/@types/send/-/send-0.17.2.tgz" + "version" "0.17.2" dependencies: - "bn.js" "^4.11.9" - "brorand" "^1.1.0" - "hash.js" "^1.0.0" - "hmac-drbg" "^1.0.1" - "inherits" "^2.0.4" - "minimalistic-assert" "^1.0.1" - "minimalistic-crypto-utils" "^1.0.1" + "@types/mime" "^1" + "@types/node" "*" -"emoji-regex@^8.0.0": - "integrity" "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" - "version" "8.0.0" +"@types/serve-index@^1.9.1": + "integrity" "sha512-asaEIoc6J+DbBKXtO7p2shWUpKacZOoMBEGBgPG91P8xhO53ohzHWGCs4ScZo5pQMf5ukQzVT9fhX1WzpHihig==" + "resolved" "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.2.tgz" + "version" "1.9.2" + dependencies: + "@types/express" "*" -"emoji-regex@^9.2.2": - "integrity" "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" - "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" - "version" "9.2.2" +"@types/serve-static@*", "@types/serve-static@^1.13.10": + "integrity" "sha512-yVRvFsEMrv7s0lGhzrggJjNOSmZCdgCjw9xWrPr/kNNLp6FaDfMC1KaYl3TSJ0c58bECwNBMoQrZJ8hA8E1eFg==" + "resolved" "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.3.tgz" + "version" "1.15.3" + dependencies: + "@types/http-errors" "*" + "@types/mime" "*" + "@types/node" "*" -"encoding@^0.1.0": - "integrity" "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==" - "resolved" "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz" - "version" "0.1.13" +"@types/sockjs@^0.3.33": + "integrity" "sha512-R+n7qBFnm/6jinlteC9DBL5dGiDGjWAvjo4viUanpnc/dG1y7uDoacXPIQ/PQEg1fI912SMHIa014ZjRpvDw4g==" + "resolved" "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.34.tgz" + "version" "0.3.34" dependencies: - "iconv-lite" "^0.6.2" + "@types/node" "*" -"enquirer@^2.3.5", "enquirer@>= 2.3.0 < 3": - "integrity" "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==" - "resolved" "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz" - "version" "2.3.6" +"@types/stack-utils@^2.0.0": + "integrity" "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==" + "resolved" "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz" + "version" "2.0.1" + +"@types/terser-webpack-plugin@^5.0.4": + "integrity" "sha512-iHDR2pRfFjGyDqCALX2tgUgFtGoQf2AJhKpC2XD1IMBQVJF2bny6WChGRDKj9eaZJl4F2RmvBhxJNtVPj7aTRw==" + "resolved" "https://registry.npmjs.org/@types/terser-webpack-plugin/-/terser-webpack-plugin-5.2.0.tgz" + "version" "5.2.0" dependencies: - "ansi-colors" "^4.1.1" + "terser-webpack-plugin" "*" -"escape-string-regexp@^1.0.5": - "integrity" "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" - "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - "version" "1.0.5" +"@types/tough-cookie@*": + "integrity" "sha512-THo502dA5PzG/sfQH+42Lw3fvmYkceefOspdCwpHRul8ik2Jv1K8I5OZz1AT3/rs46kwgMCe9bSBmDLYkkOMGg==" + "resolved" "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.3.tgz" + "version" "4.0.3" -"escape-string-regexp@^2.0.0": - "integrity" "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" - "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" - "version" "2.0.0" +"@types/verror@^1.10.3": + "integrity" "sha512-4c5F4T0qMSoXq1KHx7WV1FMuD2h0xdaFoJ7HSVWUfQ8w5YbqCwLOA8K7/yy1I+Txuzvm417dnPUaLmqazX1F7g==" + "resolved" "https://registry.npmjs.org/@types/verror/-/verror-1.10.7.tgz" + "version" "1.10.7" -"escape-string-regexp@^4.0.0": - "integrity" "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" - "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" - "version" "4.0.0" +"@types/webpack-bundle-analyzer@^4.6.0": + "integrity" "sha512-MQ9GBzu8N7bsjmE9xtWe9JUrRUsPljKxS8fd5EdSIU/x+/U0Ga8f0OsVJZTX1yWF87xZSt0Ai1Iaiwi+Gq+ugA==" + "resolved" "https://registry.npmjs.org/@types/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.6.1.tgz" + "version" "4.6.1" + dependencies: + "@types/node" "*" + "tapable" "^2.2.0" + "webpack" "^5" -"eslint-plugin-jsdoc@^40.0.0": - "integrity" "sha512-EhCqpzRkxoT2DUB4AnrU0ggBYvTh3bWrLZzQTupq6vSVE6XzNwJVKsOHa41GCoevnsWMBNmoDVjXWGqckjuG1g==" - "resolved" "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-40.3.0.tgz" - "version" "40.3.0" +"@types/ws@^8.5.5": + "integrity" "sha512-8B5EO9jLVCy+B58PLHvLDuOD8DRVMgQzq8d55SjLCOn9kqGyqOvy27exVaTio1q1nX5zLu8/6N0n2ThSxOM6tg==" + "resolved" "https://registry.npmjs.org/@types/ws/-/ws-8.5.6.tgz" + "version" "8.5.6" dependencies: - "@es-joy/jsdoccomment" "~0.37.0" - "comment-parser" "1.3.1" - "debug" "^4.3.4" - "escape-string-regexp" "^4.0.0" - "esquery" "^1.5.0" - "semver" "^7.3.8" - "spdx-expression-parse" "^3.0.1" + "@types/node" "*" -"eslint-scope@^5.1.1": - "integrity" "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==" - "resolved" "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" - "version" "5.1.1" +"@types/yargs-parser@*": + "integrity" "sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ==" + "resolved" "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.1.tgz" + "version" "21.0.1" + +"@types/yargs@^16.0.0": + "integrity" "sha512-oTP7/Q13GSPrgcwEwdlnkoZSQ1Hg9THe644qq8PG6hhJzjZ3qj1JjEFPIwWV/IXVs5XGIVqtkNOS9kh63WIJ+A==" + "resolved" "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.6.tgz" + "version" "16.0.6" dependencies: - "esrecurse" "^4.3.0" - "estraverse" "^4.1.1" + "@types/yargs-parser" "*" -"eslint-scope@^7.2.2": - "integrity" "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==" - "resolved" "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz" - "version" "7.2.2" +"@types/yargs@^17.0.8": + "integrity" "sha512-N3e3fkS86hNhtk6BEnc0rj3zcehaxx8QWhCROJkqpl5Zaoi7nAic3jH8q94jVD3zu5LGk+PUB6KAiDmimYOEQw==" + "resolved" "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.28.tgz" + "version" "17.0.28" dependencies: - "esrecurse" "^4.3.0" - "estraverse" "^5.2.0" + "@types/yargs-parser" "*" -"eslint-utils@^2.1.0": - "integrity" "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==" - "resolved" "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz" - "version" "2.1.0" +"@types/yauzl@^2.9.1": + "integrity" "sha512-CHzgNU3qYBnp/O4S3yv2tXPlvMTq0YWSTVg2/JYLqWZGHwwgJGAwd00poay/11asPq8wLFwHzubyInqHIFmmiw==" + "resolved" "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.1.tgz" + "version" "2.10.1" dependencies: - "eslint-visitor-keys" "^1.1.0" + "@types/node" "*" -"eslint-visitor-keys@^1.1.0": - "integrity" "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==" - "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz" - "version" "1.3.0" +"@typescript-eslint/eslint-plugin@^4.28.2", "@typescript-eslint/eslint-plugin@^4.31.2", "@typescript-eslint/eslint-plugin@^5.0.0 || ^6.0.0", "@typescript-eslint/eslint-plugin@^5.13.0 || ^6.0.0", "@typescript-eslint/eslint-plugin@^6.7.0", "@typescript-eslint/eslint-plugin@6.7.4": + "integrity" "sha512-DAbgDXwtX+pDkAHwiGhqP3zWUGpW49B7eqmgpPtg+BKJXwdct79ut9+ifqOFPJGClGKSHXn2PTBatCnldJRUoA==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.4.tgz" + "version" "6.7.4" + dependencies: + "@eslint-community/regexpp" "^4.5.1" + "@typescript-eslint/scope-manager" "6.7.4" + "@typescript-eslint/type-utils" "6.7.4" + "@typescript-eslint/utils" "6.7.4" + "@typescript-eslint/visitor-keys" "6.7.4" + "debug" "^4.3.4" + "graphemer" "^1.4.0" + "ignore" "^5.2.4" + "natural-compare" "^1.4.0" + "semver" "^7.5.4" + "ts-api-utils" "^1.0.1" + +"@typescript-eslint/parser@^4.28.2", "@typescript-eslint/parser@^4.31.2", "@typescript-eslint/parser@^5.0.0 || ^6.0.0", "@typescript-eslint/parser@^6.0.0 || ^6.0.0-alpha", "@typescript-eslint/parser@^6.7.0": + "integrity" "sha512-I5zVZFY+cw4IMZUeNCU7Sh2PO5O57F7Lr0uyhgCJmhN/BuTlnc55KxPonR4+EM3GBdfiCyGZye6DgMjtubQkmA==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.7.4.tgz" + "version" "6.7.4" + dependencies: + "@typescript-eslint/scope-manager" "6.7.4" + "@typescript-eslint/types" "6.7.4" + "@typescript-eslint/typescript-estree" "6.7.4" + "@typescript-eslint/visitor-keys" "6.7.4" + "debug" "^4.3.4" -"eslint-visitor-keys@^1.3.0": - "integrity" "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==" - "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz" - "version" "1.3.0" +"@typescript-eslint/scope-manager@5.62.0": + "integrity" "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz" + "version" "5.62.0" + dependencies: + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" -"eslint-visitor-keys@^2.0.0": - "integrity" "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==" - "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz" - "version" "2.1.0" +"@typescript-eslint/scope-manager@6.7.4": + "integrity" "sha512-SdGqSLUPTXAXi7c3Ob7peAGVnmMoGzZ361VswK2Mqf8UOYcODiYvs8rs5ILqEdfvX1lE7wEZbLyELCW+Yrql1A==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.7.4.tgz" + "version" "6.7.4" + dependencies: + "@typescript-eslint/types" "6.7.4" + "@typescript-eslint/visitor-keys" "6.7.4" -"eslint-visitor-keys@^3.3.0": - "integrity" "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==" - "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" - "version" "3.4.3" +"@typescript-eslint/type-utils@6.7.4": + "integrity" "sha512-n+g3zi1QzpcAdHFP9KQF+rEFxMb2KxtnJGID3teA/nxKHOVi3ylKovaqEzGBbVY2pBttU6z85gp0D00ufLzViQ==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.7.4.tgz" + "version" "6.7.4" + dependencies: + "@typescript-eslint/typescript-estree" "6.7.4" + "@typescript-eslint/utils" "6.7.4" + "debug" "^4.3.4" + "ts-api-utils" "^1.0.1" -"eslint-visitor-keys@^3.4.1", "eslint-visitor-keys@^3.4.3": - "integrity" "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==" - "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" - "version" "3.4.3" +"@typescript-eslint/types@5.62.0": + "integrity" "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz" + "version" "5.62.0" -"eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^7.0.0 || ^8.0.0": - "integrity" "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==" - "resolved" "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz" - "version" "7.32.0" +"@typescript-eslint/types@6.7.4": + "integrity" "sha512-o9XWK2FLW6eSS/0r/tgjAGsYasLAnOWg7hvZ/dGYSSNjCh+49k5ocPN8OmG5aZcSJ8pclSOyVKP2x03Sj+RrCA==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.4.tgz" + "version" "6.7.4" + +"@typescript-eslint/typescript-estree@5.62.0": + "integrity" "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz" + "version" "5.62.0" dependencies: - "@babel/code-frame" "7.12.11" - "@eslint/eslintrc" "^0.4.3" - "@humanwhocodes/config-array" "^0.5.0" - "ajv" "^6.10.0" - "chalk" "^4.0.0" - "cross-spawn" "^7.0.2" - "debug" "^4.0.1" - "doctrine" "^3.0.0" - "enquirer" "^2.3.5" - "escape-string-regexp" "^4.0.0" - "eslint-scope" "^5.1.1" - "eslint-utils" "^2.1.0" - "eslint-visitor-keys" "^2.0.0" - "espree" "^7.3.1" - "esquery" "^1.4.0" - "esutils" "^2.0.2" - "fast-deep-equal" "^3.1.3" - "file-entry-cache" "^6.0.1" - "functional-red-black-tree" "^1.0.1" - "glob-parent" "^5.1.2" - "globals" "^13.6.0" - "ignore" "^4.0.6" - "import-fresh" "^3.0.0" - "imurmurhash" "^0.1.4" - "is-glob" "^4.0.0" - "js-yaml" "^3.13.1" - "json-stable-stringify-without-jsonify" "^1.0.1" - "levn" "^0.4.1" - "lodash.merge" "^4.6.2" - "minimatch" "^3.0.4" - "natural-compare" "^1.4.0" - "optionator" "^0.9.1" - "progress" "^2.0.0" - "regexpp" "^3.1.0" - "semver" "^7.2.1" - "strip-ansi" "^6.0.0" - "strip-json-comments" "^3.1.0" - "table" "^6.0.9" - "text-table" "^0.2.0" - "v8-compile-cache" "^2.0.3" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" + "debug" "^4.3.4" + "globby" "^11.1.0" + "is-glob" "^4.0.3" + "semver" "^7.3.7" + "tsutils" "^3.21.0" -"eslint@^8.34.0": - "integrity" "sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg==" - "resolved" "https://registry.npmjs.org/eslint/-/eslint-8.50.0.tgz" - "version" "8.50.0" +"@typescript-eslint/typescript-estree@6.7.4": + "integrity" "sha512-ty8b5qHKatlNYd9vmpHooQz3Vki3gG+3PchmtsA4TgrZBKWHNjWfkQid7K7xQogBqqc7/BhGazxMD5vr6Ha+iQ==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.4.tgz" + "version" "6.7.4" dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.2" - "@eslint/js" "8.50.0" - "@humanwhocodes/config-array" "^0.11.11" - "@humanwhocodes/module-importer" "^1.0.1" - "@nodelib/fs.walk" "^1.2.8" - "ajv" "^6.12.4" - "chalk" "^4.0.0" - "cross-spawn" "^7.0.2" - "debug" "^4.3.2" - "doctrine" "^3.0.0" - "escape-string-regexp" "^4.0.0" - "eslint-scope" "^7.2.2" - "eslint-visitor-keys" "^3.4.3" - "espree" "^9.6.1" - "esquery" "^1.4.2" - "esutils" "^2.0.2" - "fast-deep-equal" "^3.1.3" - "file-entry-cache" "^6.0.1" - "find-up" "^5.0.0" - "glob-parent" "^6.0.2" - "globals" "^13.19.0" - "graphemer" "^1.4.0" - "ignore" "^5.2.0" - "imurmurhash" "^0.1.4" - "is-glob" "^4.0.0" - "is-path-inside" "^3.0.3" - "js-yaml" "^4.1.0" - "json-stable-stringify-without-jsonify" "^1.0.1" - "levn" "^0.4.1" - "lodash.merge" "^4.6.2" - "minimatch" "^3.1.2" - "natural-compare" "^1.4.0" - "optionator" "^0.9.3" - "strip-ansi" "^6.0.1" - "text-table" "^0.2.0" + "@typescript-eslint/types" "6.7.4" + "@typescript-eslint/visitor-keys" "6.7.4" + "debug" "^4.3.4" + "globby" "^11.1.0" + "is-glob" "^4.0.3" + "semver" "^7.5.4" + "ts-api-utils" "^1.0.1" -"espree@^7.3.0", "espree@^7.3.1": - "integrity" "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==" - "resolved" "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz" - "version" "7.3.1" +"@typescript-eslint/utils@^5.10.0": + "integrity" "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz" + "version" "5.62.0" dependencies: - "acorn" "^7.4.0" - "acorn-jsx" "^5.3.1" - "eslint-visitor-keys" "^1.3.0" + "@eslint-community/eslint-utils" "^4.2.0" + "@types/json-schema" "^7.0.9" + "@types/semver" "^7.3.12" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" + "eslint-scope" "^5.1.1" + "semver" "^7.3.7" + +"@typescript-eslint/utils@6.7.4": + "integrity" "sha512-PRQAs+HUn85Qdk+khAxsVV+oULy3VkbH3hQ8hxLRJXWBEd7iI+GbQxH5SEUSH7kbEoTp6oT1bOwyga24ELALTA==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.7.4.tgz" + "version" "6.7.4" + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@types/json-schema" "^7.0.12" + "@types/semver" "^7.5.0" + "@typescript-eslint/scope-manager" "6.7.4" + "@typescript-eslint/types" "6.7.4" + "@typescript-eslint/typescript-estree" "6.7.4" + "semver" "^7.5.4" + +"@typescript-eslint/visitor-keys@5.62.0": + "integrity" "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz" + "version" "5.62.0" + dependencies: + "@typescript-eslint/types" "5.62.0" + "eslint-visitor-keys" "^3.3.0" -"espree@^9.6.0", "espree@^9.6.1": - "integrity" "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==" - "resolved" "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz" - "version" "9.6.1" +"@typescript-eslint/visitor-keys@6.7.4": + "integrity" "sha512-pOW37DUhlTZbvph50x5zZCkFn3xzwkGtNoJHzIM3svpiSkJzwOYr/kVBaXmf+RAQiUDs1AHEZVNPg6UJCJpwRA==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.4.tgz" + "version" "6.7.4" dependencies: - "acorn" "^8.9.0" - "acorn-jsx" "^5.3.2" + "@typescript-eslint/types" "6.7.4" "eslint-visitor-keys" "^3.4.1" -"esprima@^4.0.0": - "integrity" "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - "resolved" "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" - "version" "4.0.1" +"@uidotdev/usehooks@^2.3.1": + "integrity" "sha512-1GL8CatTsTGZdwPNrZ44JhJI5QWip7oyDXEXFBEibJ+P+p+ZBi7mKrpG90ZIdQTSEcvkfiE2Y492Uo3ubPBZ3g==" + "resolved" "https://registry.npmjs.org/@uidotdev/usehooks/-/usehooks-2.3.1.tgz" + "version" "2.3.1" -"esquery@^1.4.0", "esquery@^1.4.2", "esquery@^1.5.0": - "integrity" "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==" - "resolved" "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz" - "version" "1.5.0" +"@uiw/codemirror-extensions-basic-setup@^4.12.4", "@uiw/codemirror-extensions-basic-setup@4.21.19": + "integrity" "sha512-FwnzjNSc1mbzlcOlGmZgK2JMFcmPSHDeDUoql4ioyffF6ytiUD6LB9exOlQlAppzAZkKBYHqBwBjd0gdJYpH/w==" + "resolved" "https://registry.npmjs.org/@uiw/codemirror-extensions-basic-setup/-/codemirror-extensions-basic-setup-4.21.19.tgz" + "version" "4.21.19" dependencies: - "estraverse" "^5.1.0" + "@codemirror/autocomplete" "^6.0.0" + "@codemirror/commands" "^6.0.0" + "@codemirror/language" "^6.0.0" + "@codemirror/lint" "^6.0.0" + "@codemirror/search" "^6.0.0" + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.0.0" -"esrecurse@^4.3.0": - "integrity" "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==" - "resolved" "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" - "version" "4.3.0" +"@uiw/codemirror-theme-github@^4.12.4": + "integrity" "sha512-VgtASDyTHH7IoVb9gI6AFyclwnQgCCWIEFm8v/QhENqwumpU2ar5P10usT4agk5WOWiy1kM2YS/MBCnfe0wutw==" + "resolved" "https://registry.npmjs.org/@uiw/codemirror-theme-github/-/codemirror-theme-github-4.21.19.tgz" + "version" "4.21.19" dependencies: - "estraverse" "^5.2.0" + "@uiw/codemirror-themes" "4.21.19" -"estraverse@^4.1.1": - "integrity" "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" - "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" - "version" "4.3.0" +"@uiw/codemirror-themes@4.21.19": + "integrity" "sha512-fA06v3jiPiCCXWQA6f3T7A4wzIYxLKxom5WgP0Qy5eP/hioTYaHAeS/4R/oomQ4AmtEoGa1L+mXEjBeCahhLsg==" + "resolved" "https://registry.npmjs.org/@uiw/codemirror-themes/-/codemirror-themes-4.21.19.tgz" + "version" "4.21.19" + dependencies: + "@codemirror/language" "^6.0.0" + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.0.0" -"estraverse@^5.1.0", "estraverse@^5.2.0": - "integrity" "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" - "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" - "version" "5.3.0" +"@uiw/react-codemirror@^4.12.4": + "integrity" "sha512-KCm+izhkeRCz9uuPY4WtlMAwEE6HsGR/iHGFDABj2OFq9DfnpAIFyVx2Z87NxMHvHi7zttn6JerxwNLJdV12og==" + "resolved" "https://registry.npmjs.org/@uiw/react-codemirror/-/react-codemirror-4.21.19.tgz" + "version" "4.21.19" + dependencies: + "@babel/runtime" "^7.18.6" + "@codemirror/commands" "^6.1.0" + "@codemirror/state" "^6.1.1" + "@codemirror/theme-one-dark" "^6.0.0" + "@uiw/codemirror-extensions-basic-setup" "4.21.19" + "codemirror" "^6.0.0" + +"@webassemblyjs/ast@^1.11.5", "@webassemblyjs/ast@1.11.6": + "integrity" "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz" + "version" "1.11.6" + dependencies: + "@webassemblyjs/helper-numbers" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + +"@webassemblyjs/floating-point-hex-parser@1.11.6": + "integrity" "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz" + "version" "1.11.6" + +"@webassemblyjs/helper-api-error@1.11.6": + "integrity" "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz" + "version" "1.11.6" + +"@webassemblyjs/helper-buffer@1.11.6": + "integrity" "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz" + "version" "1.11.6" + +"@webassemblyjs/helper-numbers@1.11.6": + "integrity" "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz" + "version" "1.11.6" + dependencies: + "@webassemblyjs/floating-point-hex-parser" "1.11.6" + "@webassemblyjs/helper-api-error" "1.11.6" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/helper-wasm-bytecode@1.11.6": + "integrity" "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz" + "version" "1.11.6" + +"@webassemblyjs/helper-wasm-section@1.11.6": + "integrity" "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz" + "version" "1.11.6" + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/wasm-gen" "1.11.6" + +"@webassemblyjs/ieee754@1.11.6": + "integrity" "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz" + "version" "1.11.6" + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.11.6": + "integrity" "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz" + "version" "1.11.6" + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.11.6": + "integrity" "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz" + "version" "1.11.6" + +"@webassemblyjs/wasm-edit@^1.11.5": + "integrity" "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz" + "version" "1.11.6" + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/helper-wasm-section" "1.11.6" + "@webassemblyjs/wasm-gen" "1.11.6" + "@webassemblyjs/wasm-opt" "1.11.6" + "@webassemblyjs/wasm-parser" "1.11.6" + "@webassemblyjs/wast-printer" "1.11.6" + +"@webassemblyjs/wasm-gen@1.11.6": + "integrity" "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz" + "version" "1.11.6" + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/ieee754" "1.11.6" + "@webassemblyjs/leb128" "1.11.6" + "@webassemblyjs/utf8" "1.11.6" + +"@webassemblyjs/wasm-opt@1.11.6": + "integrity" "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz" + "version" "1.11.6" + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/wasm-gen" "1.11.6" + "@webassemblyjs/wasm-parser" "1.11.6" + +"@webassemblyjs/wasm-parser@^1.11.5", "@webassemblyjs/wasm-parser@1.11.6": + "integrity" "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz" + "version" "1.11.6" + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-api-error" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/ieee754" "1.11.6" + "@webassemblyjs/leb128" "1.11.6" + "@webassemblyjs/utf8" "1.11.6" + +"@webassemblyjs/wast-printer@1.11.6": + "integrity" "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz" + "version" "1.11.6" + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@xtuc/long" "4.2.2" + +"@webpack-cli/configtest@^2.1.1": + "integrity" "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==" + "resolved" "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz" + "version" "2.1.1" -"esutils@^2.0.2": - "integrity" "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" - "resolved" "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" - "version" "2.0.3" +"@webpack-cli/info@^2.0.2": + "integrity" "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==" + "resolved" "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz" + "version" "2.0.2" -"event-target-shim@^5.0.0": - "integrity" "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" - "resolved" "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz" - "version" "5.0.1" +"@webpack-cli/serve@^2.0.5": + "integrity" "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==" + "resolved" "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz" + "version" "2.0.5" -"execa@^5.1.1": - "integrity" "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==" - "resolved" "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" - "version" "5.1.1" - 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" +"@xmldom/xmldom@^0.8.8": + "integrity" "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==" + "resolved" "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz" + "version" "0.8.10" -"expect@^29.0.0": - "integrity" "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==" - "resolved" "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz" - "version" "29.7.0" - dependencies: - "@jest/expect-utils" "^29.7.0" - "jest-get-type" "^29.6.3" - "jest-matcher-utils" "^29.7.0" - "jest-message-util" "^29.7.0" - "jest-util" "^29.7.0" +"@xtuc/ieee754@^1.2.0": + "integrity" "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + "resolved" "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz" + "version" "1.2.0" -"fast-deep-equal@^3.1.1", "fast-deep-equal@^3.1.3": - "integrity" "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - "resolved" "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" - "version" "3.1.3" +"@xtuc/long@4.2.2": + "integrity" "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + "resolved" "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz" + "version" "4.2.2" -"fast-json-stable-stringify@^2.0.0": - "integrity" "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - "resolved" "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" - "version" "2.1.0" +"7zip-bin@~5.1.1": + "integrity" "sha512-sAP4LldeWNz0lNzmTird3uWfFDWWTeg6V/MsmyyLR9X1idwKBWIgt/ZvinqQldJm3LecKEs1emkbquO6PCiLVQ==" + "resolved" "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.1.1.tgz" + "version" "5.1.1" -"fast-levenshtein@^2.0.6": - "integrity" "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" - "resolved" "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" +"abab@^2.0.6": + "integrity" "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==" + "resolved" "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz" "version" "2.0.6" -"fastq@^1.6.0": - "integrity" "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==" - "resolved" "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz" - "version" "1.15.0" +"abbrev@^1.0.0": + "integrity" "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + "resolved" "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz" + "version" "1.1.1" + +"abort-controller@^3.0.0": + "integrity" "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==" + "resolved" "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz" + "version" "3.0.0" dependencies: - "reusify" "^1.0.4" + "event-target-shim" "^5.0.0" -"file-entry-cache@^6.0.1": - "integrity" "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==" - "resolved" "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" - "version" "6.0.1" +"accepts@~1.3.4", "accepts@~1.3.5", "accepts@~1.3.8": + "integrity" "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==" + "resolved" "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz" + "version" "1.3.8" dependencies: - "flat-cache" "^3.0.4" + "mime-types" "~2.1.34" + "negotiator" "0.6.3" -"fill-range@^7.0.1": - "integrity" "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==" - "resolved" "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" +"acorn-globals@^7.0.0": + "integrity" "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==" + "resolved" "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz" "version" "7.0.1" dependencies: - "to-regex-range" "^5.0.1" + "acorn" "^8.1.0" + "acorn-walk" "^8.0.2" -"find-up@^5.0.0": - "integrity" "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==" - "resolved" "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "locate-path" "^6.0.0" - "path-exists" "^4.0.0" +"acorn-import-assertions@^1.9.0": + "integrity" "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==" + "resolved" "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz" + "version" "1.9.0" -"flat-cache@^3.0.4": - "integrity" "sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==" - "resolved" "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "flatted" "^3.2.7" - "keyv" "^4.5.3" - "rimraf" "^3.0.2" +"acorn-jsx@^5.3.2": + "integrity" "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==" + "resolved" "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" + "version" "5.3.2" -"flatted@^3.2.7": - "integrity" "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==" - "resolved" "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz" - "version" "3.2.9" +"acorn-walk@^8.0.0", "acorn-walk@^8.0.2", "acorn-walk@^8.1.1": + "integrity" "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==" + "resolved" "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz" + "version" "8.2.0" -"follow-redirects@^1.14.0", "follow-redirects@^1.14.9": - "integrity" "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==" - "resolved" "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz" - "version" "1.15.3" +"acorn@^6.0.0 || ^7.0.0 || ^8.0.0": + "integrity" "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" + "resolved" "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" + "version" "7.4.1" -"form-data@^4.0.0": - "integrity" "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==" - "resolved" "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "asynckit" "^0.4.0" - "combined-stream" "^1.0.8" - "mime-types" "^2.1.12" +"acorn@^8.0.4": + "integrity" "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==" + "resolved" "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz" + "version" "8.10.0" -"fs.realpath@^1.0.0": - "integrity" "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - "resolved" "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - "version" "1.0.0" +"acorn@^8.1.0": + "integrity" "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==" + "resolved" "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz" + "version" "8.10.0" -"functional-red-black-tree@^1.0.1": - "integrity" "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==" - "resolved" "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz" - "version" "1.0.1" +"acorn@^8.4.1": + "integrity" "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==" + "resolved" "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz" + "version" "8.10.0" -"get-stream@^6.0.0": - "integrity" "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" - "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" - "version" "6.0.1" +"acorn@^8.8.1": + "integrity" "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==" + "resolved" "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz" + "version" "8.10.0" -"glob-parent@^5.1.2": - "integrity" "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==" - "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" - "version" "5.1.2" - dependencies: - "is-glob" "^4.0.1" +"acorn@^8.8.2": + "integrity" "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==" + "resolved" "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz" + "version" "8.10.0" -"glob-parent@^6.0.2": - "integrity" "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==" - "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" +"acorn@^8.9.0": + "integrity" "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==" + "resolved" "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz" + "version" "8.10.0" + +"acorn@^8", "acorn@^8.7.1": + "integrity" "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==" + "resolved" "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz" + "version" "8.10.0" + +"address@^1.0.1": + "integrity" "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==" + "resolved" "https://registry.npmjs.org/address/-/address-1.2.2.tgz" + "version" "1.2.2" + +"agent-base@^6.0.2", "agent-base@6": + "integrity" "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==" + "resolved" "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" "version" "6.0.2" dependencies: - "is-glob" "^4.0.3" + "debug" "4" -"glob@^7.1.3": - "integrity" "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==" - "resolved" "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" - "version" "7.2.3" +"agentkeepalive@^4.2.1": + "integrity" "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==" + "resolved" "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz" + "version" "4.5.0" dependencies: - "fs.realpath" "^1.0.0" - "inflight" "^1.0.4" - "inherits" "2" - "minimatch" "^3.1.1" - "once" "^1.3.0" - "path-is-absolute" "^1.0.0" + "humanize-ms" "^1.2.1" -"globals@^13.19.0", "globals@^13.6.0", "globals@^13.9.0": - "integrity" "sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw==" - "resolved" "https://registry.npmjs.org/globals/-/globals-13.22.0.tgz" - "version" "13.22.0" +"aggregate-error@^3.0.0": + "integrity" "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==" + "resolved" "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz" + "version" "3.1.0" dependencies: - "type-fest" "^0.20.2" + "clean-stack" "^2.0.0" + "indent-string" "^4.0.0" -"graceful-fs@^4.2.9": - "integrity" "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - "resolved" "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" - "version" "4.2.11" +"ajv-formats@^2.1.1": + "integrity" "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==" + "resolved" "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz" + "version" "2.1.1" + dependencies: + "ajv" "^8.0.0" -"graphemer@^1.4.0": - "integrity" "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==" - "resolved" "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz" - "version" "1.4.0" +"ajv-keywords@^3.4.1": + "integrity" "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" + "resolved" "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" + "version" "3.5.2" -"has-flag@^3.0.0": - "integrity" "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" - "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" - "version" "3.0.0" +"ajv-keywords@^3.5.2": + "integrity" "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" + "resolved" "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" + "version" "3.5.2" -"has-flag@^4.0.0": - "integrity" "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" - "version" "4.0.0" +"ajv-keywords@^5.1.0": + "integrity" "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==" + "resolved" "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz" + "version" "5.1.0" + dependencies: + "fast-deep-equal" "^3.1.3" -"hash.js@^1.0.0", "hash.js@^1.0.3": - "integrity" "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==" - "resolved" "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz" - "version" "1.1.7" +"ajv@^6.10.0": + "integrity" "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==" + "resolved" "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" + "version" "6.12.6" dependencies: - "inherits" "^2.0.3" - "minimalistic-assert" "^1.0.1" + "fast-deep-equal" "^3.1.1" + "fast-json-stable-stringify" "^2.0.0" + "json-schema-traverse" "^0.4.1" + "uri-js" "^4.2.2" -"hmac-drbg@^1.0.1": - "integrity" "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==" - "resolved" "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz" - "version" "1.0.1" +"ajv@^6.12.0", "ajv@^6.12.4", "ajv@^6.12.5", "ajv@^6.9.1": + "integrity" "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==" + "resolved" "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" + "version" "6.12.6" dependencies: - "hash.js" "^1.0.3" - "minimalistic-assert" "^1.0.0" - "minimalistic-crypto-utils" "^1.0.1" + "fast-deep-equal" "^3.1.1" + "fast-json-stable-stringify" "^2.0.0" + "json-schema-traverse" "^0.4.1" + "uri-js" "^4.2.2" -"human-signals@^2.1.0": - "integrity" "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" - "resolved" "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" - "version" "2.1.0" +"ajv@^8.0.0", "ajv@^8.8.2", "ajv@^8.9.0": + "integrity" "sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==" + "resolved" "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz" + "version" "8.9.0" + dependencies: + "fast-deep-equal" "^3.1.1" + "json-schema-traverse" "^1.0.0" + "require-from-string" "^2.0.2" + "uri-js" "^4.2.2" -"husky@^8.0.1": - "integrity" "sha512-xs7/chUH/CKdOCs7Zy0Aev9e/dKOMZf3K1Az1nar3tzlv0jfqnYtu235bstsWTmXOR0EfINrPa97yy4Lz6RiKw==" - "resolved" "https://registry.npmjs.org/husky/-/husky-8.0.1.tgz" - "version" "8.0.1" +"ansi-colors@^4.1.1": + "integrity" "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==" + "resolved" "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz" + "version" "4.1.3" -"iconv-lite@^0.6.2": - "integrity" "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==" - "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" - "version" "0.6.3" +"ansi-escapes@^4.2.1", "ansi-escapes@^4.3.0": + "integrity" "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==" + "resolved" "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" + "version" "4.3.2" dependencies: - "safer-buffer" ">= 2.1.2 < 3.0.0" - -"ieee754@^1.2.1": - "integrity" "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - "resolved" "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" - "version" "1.2.1" + "type-fest" "^0.21.3" -"ignore@^4.0.6": - "integrity" "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" - "resolved" "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz" - "version" "4.0.6" +"ansi-html-community@^0.0.8": + "integrity" "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==" + "resolved" "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz" + "version" "0.0.8" -"ignore@^5.2.0": - "integrity" "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==" - "resolved" "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz" - "version" "5.2.4" +"ansi-regex@^5.0.1": + "integrity" "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" + "version" "5.0.1" -"import-fresh@^3.0.0", "import-fresh@^3.2.1": - "integrity" "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==" - "resolved" "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" +"ansi-regex@^6.0.1": + "integrity" "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" + "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz" + "version" "6.0.1" + +"ansi-styles@^3.2.1": + "integrity" "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==" + "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" + "version" "3.2.1" + dependencies: + "color-convert" "^1.9.0" + +"ansi-styles@^4.0.0", "ansi-styles@^4.1.0": + "integrity" "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==" + "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + "version" "4.3.0" + dependencies: + "color-convert" "^2.0.1" + +"ansi-styles@^5.0.0": + "integrity" "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" + "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" + "version" "5.2.0" + +"ansi-styles@^6.0.0": + "integrity" "sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==" + "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.1.0.tgz" + "version" "6.1.0" + +"ansi-styles@^6.1.0": + "integrity" "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==" + "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" + "version" "6.2.1" + +"ansi-to-html@^0.7.2": + "integrity" "sha512-v6MqmEpNlxF+POuyhKkidusCHWWkaLcGRURzivcU3I9tv7k4JVhFcnukrM5Rlk2rUywdZuzYAZ+kbZqWCnfN3g==" + "resolved" "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.7.2.tgz" + "version" "0.7.2" + dependencies: + "entities" "^2.2.0" + +"anymatch@^3.0.3", "anymatch@~3.1.2": + "integrity" "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==" + "resolved" "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" + "version" "3.1.3" + dependencies: + "normalize-path" "^3.0.0" + "picomatch" "^2.0.4" + +"app-builder-bin@4.0.0": + "integrity" "sha512-xwdG0FJPQMe0M0UA4Tz0zEB8rBJTRA5a476ZawAqiBkMv16GRK5xpXThOjMaEOFnZ6zabejjG4J3da0SXG63KA==" + "resolved" "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-4.0.0.tgz" + "version" "4.0.0" + +"app-builder-lib@24.6.4": + "integrity" "sha512-m9931WXb83teb32N0rKg+ulbn6+Hl8NV5SUpVDOVz9MWOXfhV6AQtTdftf51zJJvCQnQugGtSqoLvgw6mdF/Rg==" + "resolved" "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-24.6.4.tgz" + "version" "24.6.4" + dependencies: + "@develar/schema-utils" "~2.6.5" + "@electron/notarize" "2.1.0" + "@electron/osx-sign" "1.0.5" + "@electron/universal" "1.4.1" + "@malept/flatpak-bundler" "^0.4.0" + "@types/fs-extra" "9.0.13" + "7zip-bin" "~5.1.1" + "async-exit-hook" "^2.0.1" + "bluebird-lst" "^1.0.9" + "builder-util" "24.5.0" + "builder-util-runtime" "9.2.1" + "chromium-pickle-js" "^0.2.0" + "debug" "^4.3.4" + "ejs" "^3.1.8" + "electron-publish" "24.5.0" + "form-data" "^4.0.0" + "fs-extra" "^10.1.0" + "hosted-git-info" "^4.1.0" + "is-ci" "^3.0.0" + "isbinaryfile" "^5.0.0" + "js-yaml" "^4.1.0" + "lazy-val" "^1.0.5" + "minimatch" "^5.1.1" + "read-config-file" "6.3.2" + "sanitize-filename" "^1.6.3" + "semver" "^7.3.8" + "tar" "^6.1.12" + "temp-file" "^3.4.0" + +"aproba@^1.0.3 || ^2.0.0": + "integrity" "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" + "resolved" "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz" + "version" "2.0.0" + +"are-we-there-yet@^3.0.0": + "integrity" "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==" + "resolved" "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "delegates" "^1.0.0" + "readable-stream" "^3.6.0" + +"arg@^4.1.0": + "integrity" "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" + "resolved" "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz" + "version" "4.1.3" + +"argparse@^1.0.7": + "integrity" "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==" + "resolved" "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" + "version" "1.0.10" + dependencies: + "sprintf-js" "~1.0.2" + +"argparse@^2.0.1": + "integrity" "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + "resolved" "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" + "version" "2.0.1" + +"aria-query@^5.0.0", "aria-query@^5.1.3": + "integrity" "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==" + "resolved" "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz" + "version" "5.3.0" + dependencies: + "dequal" "^2.0.3" + +"aria-query@5.1.3": + "integrity" "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==" + "resolved" "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz" + "version" "5.1.3" + dependencies: + "deep-equal" "^2.0.5" + +"array-buffer-byte-length@^1.0.0": + "integrity" "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==" + "resolved" "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "call-bind" "^1.0.2" + "is-array-buffer" "^3.0.1" + +"array-flatten@^2.1.2": + "integrity" "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" + "resolved" "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz" + "version" "2.1.2" + +"array-flatten@1.1.1": + "integrity" "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + "resolved" "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" + "version" "1.1.1" + +"array-includes@^3.1.6": + "integrity" "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==" + "resolved" "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz" + "version" "3.1.7" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.2.0" + "es-abstract" "^1.22.1" + "get-intrinsic" "^1.2.1" + "is-string" "^1.0.7" + +"array-union@^2.1.0": + "integrity" "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" + "resolved" "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" + "version" "2.1.0" + +"array.prototype.find@^2.2.1": + "integrity" "sha512-DRumkfW97iZGOfn+lIXbkVrXL04sfYKX+EfOodo8XboR5sxPDVvOjZTF/rysusa9lmhmSOeD6Vp6RKQP+eP4Tg==" + "resolved" "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.2.2.tgz" + "version" "2.2.2" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.2.0" + "es-abstract" "^1.22.1" + "es-shim-unscopables" "^1.0.0" + +"array.prototype.findlastindex@^1.2.2": + "integrity" "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==" + "resolved" "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz" + "version" "1.2.3" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.2.0" + "es-abstract" "^1.22.1" + "es-shim-unscopables" "^1.0.0" + "get-intrinsic" "^1.2.1" + +"array.prototype.flat@^1.3.1": + "integrity" "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==" + "resolved" "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz" + "version" "1.3.2" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.2.0" + "es-abstract" "^1.22.1" + "es-shim-unscopables" "^1.0.0" + +"array.prototype.flatmap@^1.3.1": + "integrity" "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==" + "resolved" "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz" + "version" "1.3.2" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.2.0" + "es-abstract" "^1.22.1" + "es-shim-unscopables" "^1.0.0" + +"array.prototype.tosorted@^1.1.1": + "integrity" "sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==" + "resolved" "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz" + "version" "1.1.2" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.2.0" + "es-abstract" "^1.22.1" + "es-shim-unscopables" "^1.0.0" + "get-intrinsic" "^1.2.1" + +"arraybuffer.prototype.slice@^1.0.2": + "integrity" "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==" + "resolved" "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "array-buffer-byte-length" "^1.0.0" + "call-bind" "^1.0.2" + "define-properties" "^1.2.0" + "es-abstract" "^1.22.1" + "get-intrinsic" "^1.2.1" + "is-array-buffer" "^3.0.2" + "is-shared-array-buffer" "^1.0.2" + +"asap@~2.0.3": + "integrity" "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" + "resolved" "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz" + "version" "2.0.6" + +"assert-plus@^1.0.0": + "integrity" "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==" + "resolved" "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" + "version" "1.0.0" + +"ast-metadata-inferer@^0.8.0": + "integrity" "sha512-jOMKcHht9LxYIEQu+RVd22vtgrPaVCtDRQ/16IGmurdzxvYbDd5ynxjnyrzLnieG96eTcAyaoj/wN/4/1FyyeA==" + "resolved" "https://registry.npmjs.org/ast-metadata-inferer/-/ast-metadata-inferer-0.8.0.tgz" + "version" "0.8.0" + dependencies: + "@mdn/browser-compat-data" "^5.2.34" + +"ast-types-flow@^0.0.7": + "integrity" "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==" + "resolved" "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz" + "version" "0.0.7" + +"astral-regex@^2.0.0": + "integrity" "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==" + "resolved" "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz" + "version" "2.0.0" + +"async-exit-hook@^2.0.1": + "integrity" "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==" + "resolved" "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz" + "version" "2.0.1" + +"async@^3.2.3": + "integrity" "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" + "resolved" "https://registry.npmjs.org/async/-/async-3.2.4.tgz" + "version" "3.2.4" + +"asynciterator.prototype@^1.0.0": + "integrity" "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==" + "resolved" "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "has-symbols" "^1.0.3" + +"asynckit@^0.4.0": + "integrity" "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + "resolved" "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" + "version" "0.4.0" + +"at-least-node@^1.0.0": + "integrity" "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" + "resolved" "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz" + "version" "1.0.0" + +"available-typed-arrays@^1.0.5": + "integrity" "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" + "resolved" "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz" + "version" "1.0.5" + +"axe-core@^4.6.2": + "integrity" "sha512-/dlp0fxyM3R8YW7MFzaHWXrf4zzbr0vaYb23VBFCl83R7nWNPg/yaQw2Dc8jzCMmDVLhSdzH8MjrsuIUuvX+6g==" + "resolved" "https://registry.npmjs.org/axe-core/-/axe-core-4.8.2.tgz" + "version" "4.8.2" + +"axios@^0.21.4": + "integrity" "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==" + "resolved" "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz" + "version" "0.21.4" + dependencies: + "follow-redirects" "^1.14.0" + +"axios@0.27.2": + "integrity" "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==" + "resolved" "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz" + "version" "0.27.2" + dependencies: + "follow-redirects" "^1.14.9" + "form-data" "^4.0.0" + +"axobject-query@^3.1.1": + "integrity" "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==" + "resolved" "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz" + "version" "3.2.1" + dependencies: + "dequal" "^2.0.3" + +"babel-jest@^29.0.0", "babel-jest@^29.7.0": + "integrity" "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==" + "resolved" "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz" + "version" "29.7.0" + dependencies: + "@jest/transform" "^29.7.0" + "@types/babel__core" "^7.1.14" + "babel-plugin-istanbul" "^6.1.1" + "babel-preset-jest" "^29.6.3" + "chalk" "^4.0.0" + "graceful-fs" "^4.2.9" + "slash" "^3.0.0" + +"babel-plugin-istanbul@^6.1.1": + "integrity" "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==" + "resolved" "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz" + "version" "6.1.1" + 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" + +"babel-plugin-jest-hoist@^29.6.3": + "integrity" "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==" + "resolved" "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz" + "version" "29.6.3" + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.1.14" + "@types/babel__traverse" "^7.0.6" + +"babel-plugin-macros@^3.1.0": + "integrity" "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==" + "resolved" "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "@babel/runtime" "^7.12.5" + "cosmiconfig" "^7.0.0" + "resolve" "^1.19.0" + +"babel-plugin-polyfill-corejs2@^0.4.5": + "integrity" "sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==" + "resolved" "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz" + "version" "0.4.5" + dependencies: + "@babel/compat-data" "^7.22.6" + "@babel/helper-define-polyfill-provider" "^0.4.2" + "semver" "^6.3.1" + +"babel-plugin-polyfill-corejs3@^0.8.3": + "integrity" "sha512-9l//BZZsPR+5XjyJMPtZSK4jv0BsTO1zDac2GC6ygx9WLGlcsnRd1Co0B2zT5fF5Ic6BZy+9m3HNZ3QcOeDKfg==" + "resolved" "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.4.tgz" + "version" "0.8.4" + dependencies: + "@babel/helper-define-polyfill-provider" "^0.4.2" + "core-js-compat" "^3.32.2" + +"babel-plugin-polyfill-regenerator@^0.5.2": + "integrity" "sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==" + "resolved" "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz" + "version" "0.5.2" + dependencies: + "@babel/helper-define-polyfill-provider" "^0.4.2" + +"babel-preset-current-node-syntax@^1.0.0": + "integrity" "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==" + "resolved" "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.8.3" + "@babel/plugin-syntax-import-meta" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + +"babel-preset-jest@^29.6.3": + "integrity" "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==" + "resolved" "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz" + "version" "29.6.3" + dependencies: + "babel-plugin-jest-hoist" "^29.6.3" + "babel-preset-current-node-syntax" "^1.0.0" + +"balanced-match@^1.0.0": + "integrity" "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + "resolved" "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" + "version" "1.0.2" + +"base16@^1.0.0": + "integrity" "sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ==" + "resolved" "https://registry.npmjs.org/base16/-/base16-1.0.0.tgz" + "version" "1.0.0" + +"base64-js@^1.3.1", "base64-js@^1.5.1": + "integrity" "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + "resolved" "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" + "version" "1.5.1" + +"batch@0.6.1": + "integrity" "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==" + "resolved" "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz" + "version" "0.6.1" + +"big-integer@^1.6.44": + "integrity" "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==" + "resolved" "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz" + "version" "1.6.51" + +"big.js@^5.2.2": + "integrity" "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" + "resolved" "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz" + "version" "5.2.2" + +"binary-extensions@^2.0.0": + "integrity" "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" + "resolved" "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" + "version" "2.2.0" + +"bl@^4.1.0": + "integrity" "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==" + "resolved" "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "buffer" "^5.5.0" + "inherits" "^2.0.4" + "readable-stream" "^3.4.0" + +"bluebird-lst@^1.0.9": + "integrity" "sha512-7B1Rtx82hjnSD4PGLAjVWeYH3tHAcVUmChh85a3lltKQm6FresXh9ErQo6oAv6CqxttczC3/kEg8SY5NluPuUw==" + "resolved" "https://registry.npmjs.org/bluebird-lst/-/bluebird-lst-1.0.9.tgz" + "version" "1.0.9" + dependencies: + "bluebird" "^3.5.5" + +"bluebird@^3.5.5": + "integrity" "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + "resolved" "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz" + "version" "3.7.2" + +"bn.js@^4.11.9": + "integrity" "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" + "version" "4.12.0" + +"body-parser@1.20.1": + "integrity" "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==" + "resolved" "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz" + "version" "1.20.1" + dependencies: + "bytes" "3.1.2" + "content-type" "~1.0.4" + "debug" "2.6.9" + "depd" "2.0.0" + "destroy" "1.2.0" + "http-errors" "2.0.0" + "iconv-lite" "0.4.24" + "on-finished" "2.4.1" + "qs" "6.11.0" + "raw-body" "2.5.1" + "type-is" "~1.6.18" + "unpipe" "1.0.0" + +"bonjour-service@^1.0.11": + "integrity" "sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg==" + "resolved" "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.1.tgz" + "version" "1.1.1" + dependencies: + "array-flatten" "^2.1.2" + "dns-equal" "^1.0.0" + "fast-deep-equal" "^3.1.3" + "multicast-dns" "^7.2.5" + +"boolbase@^1.0.0": + "integrity" "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + "resolved" "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" + "version" "1.0.0" + +"boolean@^3.0.1": + "integrity" "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==" + "resolved" "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz" + "version" "3.2.0" + +"bplist-parser@^0.2.0": + "integrity" "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==" + "resolved" "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz" + "version" "0.2.0" + dependencies: + "big-integer" "^1.6.44" + +"brace-expansion@^1.1.7": + "integrity" "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==" + "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" + "version" "1.1.11" + dependencies: + "balanced-match" "^1.0.0" + "concat-map" "0.0.1" + +"brace-expansion@^2.0.1": + "integrity" "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==" + "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "balanced-match" "^1.0.0" + +"braces@^3.0.2", "braces@~3.0.2": + "integrity" "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==" + "resolved" "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" + "version" "3.0.2" + dependencies: + "fill-range" "^7.0.1" + +"brorand@^1.1.0": + "integrity" "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" + "resolved" "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz" + "version" "1.1.0" + +"browserslist-config-erb@^0.0.3": + "integrity" "sha512-y47DryCY92lxkKyRVMlaZvXAolIY7U33q9e4CS0MdWeJkoAht7OzsrkfdZFCBOP3H5q1EVUxS0L7VVsKM6gZCQ==" + "resolved" "https://registry.npmjs.org/browserslist-config-erb/-/browserslist-config-erb-0.0.3.tgz" + "version" "0.0.3" + +"browserslist@^4.0.0", "browserslist@^4.14.5", "browserslist@^4.21.10", "browserslist@^4.21.4", "browserslist@^4.21.9", "browserslist@^4.22.1", "browserslist@>= 4.21.0": + "integrity" "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==" + "resolved" "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz" + "version" "4.22.1" + dependencies: + "caniuse-lite" "^1.0.30001541" + "electron-to-chromium" "^1.4.535" + "node-releases" "^2.0.13" + "update-browserslist-db" "^1.0.13" + +"bs-logger@0.x": + "integrity" "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==" + "resolved" "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz" + "version" "0.2.6" + dependencies: + "fast-json-stable-stringify" "2.x" + +"bser@2.1.1": + "integrity" "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==" + "resolved" "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz" + "version" "2.1.1" + dependencies: + "node-int64" "^0.4.0" + +"buffer-crc32@~0.2.3": + "integrity" "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==" + "resolved" "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz" + "version" "0.2.13" + +"buffer-equal@^1.0.0": + "integrity" "sha512-tcBWO2Dl4e7Asr9hTGcpVrCe+F7DubpmqWCTbj4FHLmjqO2hIaC383acQubWtRJhdceqs5uBHs6Es+Sk//RKiQ==" + "resolved" "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz" + "version" "1.0.0" + +"buffer-from@^1.0.0": + "integrity" "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + "resolved" "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" + "version" "1.1.2" + +"buffer@^5.1.0": + "integrity" "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==" + "resolved" "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" + "version" "5.7.1" + dependencies: + "base64-js" "^1.3.1" + "ieee754" "^1.1.13" + +"buffer@^5.5.0": + "integrity" "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==" + "resolved" "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" + "version" "5.7.1" + dependencies: + "base64-js" "^1.3.1" + "ieee754" "^1.1.13" + +"buffer@^6.0.3", "buffer@6.0.3": + "integrity" "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==" + "resolved" "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz" + "version" "6.0.3" + dependencies: + "base64-js" "^1.3.1" + "ieee754" "^1.2.1" + +"builder-util-runtime@9.2.1": + "integrity" "sha512-2rLv/uQD2x+dJ0J3xtsmI12AlRyk7p45TEbE/6o/fbb633e/S3pPgm+ct+JHsoY7r39dKHnGEFk/AASRFdnXmA==" + "resolved" "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.2.1.tgz" + "version" "9.2.1" + dependencies: + "debug" "^4.3.4" + "sax" "^1.2.4" + +"builder-util@24.5.0": + "integrity" "sha512-STnBmZN/M5vGcv01u/K8l+H+kplTaq4PAIn3yeuufUKSpcdro0DhJWxPI81k5XcNfC//bjM3+n9nr8F9uV4uAQ==" + "resolved" "https://registry.npmjs.org/builder-util/-/builder-util-24.5.0.tgz" + "version" "24.5.0" + dependencies: + "@types/debug" "^4.1.6" + "7zip-bin" "~5.1.1" + "app-builder-bin" "4.0.0" + "bluebird-lst" "^1.0.9" + "builder-util-runtime" "9.2.1" + "chalk" "^4.1.2" + "cross-spawn" "^7.0.3" + "debug" "^4.3.4" + "fs-extra" "^10.1.0" + "http-proxy-agent" "^5.0.0" + "https-proxy-agent" "^5.0.1" + "is-ci" "^3.0.0" + "js-yaml" "^4.1.0" + "source-map-support" "^0.5.19" + "stat-mode" "^1.0.0" + "temp-file" "^3.4.0" + +"bundle-name@^3.0.0": + "integrity" "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==" + "resolved" "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "run-applescript" "^5.0.0" + +"bytes@3.0.0": + "integrity" "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==" + "resolved" "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz" + "version" "3.0.0" + +"bytes@3.1.2": + "integrity" "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" + "resolved" "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" + "version" "3.1.2" + +"cacache@^17.0.0": + "integrity" "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==" + "resolved" "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz" + "version" "17.1.4" + dependencies: + "@npmcli/fs" "^3.1.0" + "fs-minipass" "^3.0.0" + "glob" "^10.2.2" + "lru-cache" "^7.7.1" + "minipass" "^7.0.3" + "minipass-collect" "^1.0.2" + "minipass-flush" "^1.0.5" + "minipass-pipeline" "^1.2.4" + "p-map" "^4.0.0" + "ssri" "^10.0.0" + "tar" "^6.1.11" + "unique-filename" "^3.0.0" + +"cacheable-lookup@^5.0.3": + "integrity" "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==" + "resolved" "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz" + "version" "5.0.4" + +"cacheable-request@^7.0.2": + "integrity" "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==" + "resolved" "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz" + "version" "7.0.4" + dependencies: + "clone-response" "^1.0.2" + "get-stream" "^5.1.0" + "http-cache-semantics" "^4.0.0" + "keyv" "^4.0.0" + "lowercase-keys" "^2.0.0" + "normalize-url" "^6.0.1" + "responselike" "^2.0.0" + +"call-bind@^1.0.0", "call-bind@^1.0.2": + "integrity" "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==" + "resolved" "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "function-bind" "^1.1.1" + "get-intrinsic" "^1.0.2" + +"callsites@^3.0.0": + "integrity" "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + "resolved" "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" + "version" "3.1.0" + +"camel-case@^4.1.2": + "integrity" "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==" + "resolved" "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz" + "version" "4.1.2" + dependencies: + "pascal-case" "^3.1.2" + "tslib" "^2.0.3" + +"camelcase@^5.3.1": + "integrity" "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" + "version" "5.3.1" + +"camelcase@^6.2.0": + "integrity" "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" + "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" + "version" "6.3.0" + +"caniuse-api@^3.0.0": + "integrity" "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==" + "resolved" "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "browserslist" "^4.0.0" + "caniuse-lite" "^1.0.0" + "lodash.memoize" "^4.1.2" + "lodash.uniq" "^4.5.0" + +"caniuse-lite@^1.0.0", "caniuse-lite@^1.0.30001524", "caniuse-lite@^1.0.30001541": + "integrity" "sha512-zvtSJwuQFpewSyRrI3AsftF6rM0X80mZkChIt1spBGEvRglCrjTniXvinc8JKRoqTwXAgvqTImaN9igfSMtUBw==" + "resolved" "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001546.tgz" + "version" "1.0.30001546" + +"chalk@^2.4.2": + "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==" + "resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + "version" "2.4.2" + dependencies: + "ansi-styles" "^3.2.1" + "escape-string-regexp" "^1.0.5" + "supports-color" "^5.3.0" + +"chalk@^3.0.0": + "integrity" "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==" + "resolved" "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "ansi-styles" "^4.1.0" + "supports-color" "^7.1.0" + +"chalk@^4.0.0", "chalk@^4.0.2", "chalk@^4.1.0", "chalk@^4.1.2": + "integrity" "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==" + "resolved" "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + "version" "4.1.2" + dependencies: + "ansi-styles" "^4.1.0" + "supports-color" "^7.1.0" + +"char-regex@^1.0.2": + "integrity" "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==" + "resolved" "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz" + "version" "1.0.2" + +"chokidar@^3.5.3", "chokidar@>=3.0.0 <4.0.0": + "integrity" "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==" + "resolved" "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" + "version" "3.5.3" + 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" + optionalDependencies: + "fsevents" "~2.3.2" + +"chownr@^2.0.0": + "integrity" "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" + "resolved" "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz" + "version" "2.0.0" + +"chrome-trace-event@^1.0.2": + "integrity" "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==" + "resolved" "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz" + "version" "1.0.3" + +"chromium-pickle-js@^0.2.0": + "integrity" "sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==" + "resolved" "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz" + "version" "0.2.0" + +"ci-info@^3.2.0": + "integrity" "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==" + "resolved" "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz" + "version" "3.9.0" + +"cjs-module-lexer@^1.0.0": + "integrity" "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==" + "resolved" "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz" + "version" "1.2.3" + +"class-transformer@*", "class-transformer@0.4.0": + "integrity" "sha512-ETWD/H2TbWbKEi7m9N4Km5+cw1hNcqJSxlSYhsLsNjQzWWiZIYA1zafxpK9PwVfaZ6AqR5rrjPVUBGESm5tQUA==" + "resolved" "https://registry.npmjs.org/class-transformer/-/class-transformer-0.4.0.tgz" + "version" "0.4.0" + +"class-validator@*", "class-validator@^0.13.1": + "integrity" "sha512-yBUcQy07FPlGzUjoLuUfIOXzgynnQPPruyK1Ge2B74k9ROwnle1E+NxLWnUv5OLU8hA/qL5leAE9XnXq3byaBw==" + "resolved" "https://registry.npmjs.org/class-validator/-/class-validator-0.13.2.tgz" + "version" "0.13.2" + dependencies: + "libphonenumber-js" "^1.9.43" + "validator" "^13.7.0" + +"classnames@^2.3.1", "classnames@^2.3.2": + "integrity" "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" + "resolved" "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz" + "version" "2.3.2" + +"clean-css@^5.2.2": + "integrity" "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==" + "resolved" "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz" + "version" "5.3.2" + dependencies: + "source-map" "~0.6.0" + +"clean-stack@^2.0.0": + "integrity" "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" + "resolved" "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz" + "version" "2.2.0" + +"cli-cursor@^3.1.0": + "integrity" "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==" + "resolved" "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "restore-cursor" "^3.1.0" + +"cli-spinners@^2.5.0": + "integrity" "sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==" + "resolved" "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.1.tgz" + "version" "2.9.1" + +"cli-truncate@^2.1.0": + "integrity" "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==" + "resolved" "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "slice-ansi" "^3.0.0" + "string-width" "^4.2.0" + +"cli-truncate@^3.1.0": + "integrity" "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==" + "resolved" "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "slice-ansi" "^5.0.0" + "string-width" "^5.0.0" + +"cliui@^8.0.1": + "integrity" "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==" + "resolved" "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" + "version" "8.0.1" + dependencies: + "string-width" "^4.2.0" + "strip-ansi" "^6.0.1" + "wrap-ansi" "^7.0.0" + +"clone-deep@^4.0.1": + "integrity" "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==" + "resolved" "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz" + "version" "4.0.1" + dependencies: + "is-plain-object" "^2.0.4" + "kind-of" "^6.0.2" + "shallow-clone" "^3.0.0" + +"clone-response@^1.0.2": + "integrity" "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==" + "resolved" "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz" + "version" "1.0.3" + dependencies: + "mimic-response" "^1.0.0" + +"clone@^1.0.2": + "integrity" "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==" + "resolved" "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz" + "version" "1.0.4" + +"co@^4.6.0": + "integrity" "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==" + "resolved" "https://registry.npmjs.org/co/-/co-4.6.0.tgz" + "version" "4.6.0" + +"codemirror@^6.0.0": + "integrity" "sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==" + "resolved" "https://registry.npmjs.org/codemirror/-/codemirror-6.0.1.tgz" + "version" "6.0.1" + dependencies: + "@codemirror/autocomplete" "^6.0.0" + "@codemirror/commands" "^6.0.0" + "@codemirror/language" "^6.0.0" + "@codemirror/lint" "^6.0.0" + "@codemirror/search" "^6.0.0" + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.0.0" + +"collect-v8-coverage@^1.0.0": + "integrity" "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==" + "resolved" "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz" + "version" "1.0.2" + +"color-convert@^1.9.0": + "integrity" "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==" + "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" + "version" "1.9.3" + dependencies: + "color-name" "1.1.3" + +"color-convert@^2.0.1": + "integrity" "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==" + "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "color-name" "~1.1.4" + +"color-name@~1.1.4": + "integrity" "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + "version" "1.1.4" + +"color-name@1.1.3": + "integrity" "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + "version" "1.1.3" + +"color-support@^1.1.3": + "integrity" "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" + "resolved" "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz" + "version" "1.1.3" + +"colord@^2.9.1": + "integrity" "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==" + "resolved" "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz" + "version" "2.9.3" + +"colorette@^2.0.10", "colorette@^2.0.14", "colorette@^2.0.16": + "integrity" "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==" + "resolved" "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz" + "version" "2.0.19" + +"combined-stream@^1.0.8": + "integrity" "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==" + "resolved" "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" + "version" "1.0.8" + dependencies: + "delayed-stream" "~1.0.0" + +"commander@^10.0.1": + "integrity" "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==" + "resolved" "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz" + "version" "10.0.1" + +"commander@^2.20.0": + "integrity" "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "resolved" "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" + "version" "2.20.3" + +"commander@^5.0.0": + "integrity" "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==" + "resolved" "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz" + "version" "5.1.0" + +"commander@^7.2.0": + "integrity" "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" + "resolved" "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" + "version" "7.2.0" + +"commander@^8.3.0": + "integrity" "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==" + "resolved" "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz" + "version" "8.3.0" + +"commander@^9.3.0": + "integrity" "sha512-sRPT+umqkz90UA8M1yqYfnHlZA7fF6nSphDtxeywPZ49ysjxDQybzk13CL+mXekDRG92skbcqCLVovuCusNmFw==" + "resolved" "https://registry.npmjs.org/commander/-/commander-9.4.0.tgz" + "version" "9.4.0" + +"comment-parser@1.3.1": + "integrity" "sha512-B52sN2VNghyq5ofvUsqZjmk6YkihBX5vMSChmSK9v4ShjKf3Vk5Xcmgpw4o+iIgtrnM/u5FiMpz9VKb8lpBveA==" + "resolved" "https://registry.npmjs.org/comment-parser/-/comment-parser-1.3.1.tgz" + "version" "1.3.1" + +"common-path-prefix@^3.0.0": + "integrity" "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==" + "resolved" "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz" + "version" "3.0.0" + +"compare-version@^0.1.2": + "integrity" "sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==" + "resolved" "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz" + "version" "0.1.2" + +"compressible@~2.0.16": + "integrity" "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==" + "resolved" "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz" + "version" "2.0.18" + dependencies: + "mime-db" ">= 1.43.0 < 2" + +"compression@^1.7.4": + "integrity" "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==" + "resolved" "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz" + "version" "1.7.4" + 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" + +"concat-map@0.0.1": + "integrity" "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + "resolved" "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + "version" "0.0.1" + +"concurrently@^7.3.0", "concurrently@^8.2.1": + "integrity" "sha512-nVraf3aXOpIcNud5pB9M82p1tynmZkrSGQ1p6X/VY8cJ+2LMVqAgXsJxYYefACSHbTYlm92O1xuhdGTjwoEvbQ==" + "resolved" "https://registry.npmjs.org/concurrently/-/concurrently-8.2.1.tgz" + "version" "8.2.1" + dependencies: + "chalk" "^4.1.2" + "date-fns" "^2.30.0" + "lodash" "^4.17.21" + "rxjs" "^7.8.1" + "shell-quote" "^1.8.1" + "spawn-command" "0.0.2" + "supports-color" "^8.1.1" + "tree-kill" "^1.2.2" + "yargs" "^17.7.2" + +"config-file-ts@^0.2.4": + "integrity" "sha512-cKSW0BfrSaAUnxpgvpXPLaaW/umg4bqg4k3GO1JqlRfpx+d5W0GDXznCMkWotJQek5Mmz1MJVChQnz3IVaeMZQ==" + "resolved" "https://registry.npmjs.org/config-file-ts/-/config-file-ts-0.2.4.tgz" + "version" "0.2.4" + dependencies: + "glob" "^7.1.6" + "typescript" "^4.0.2" + +"confusing-browser-globals@^1.0.10": + "integrity" "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==" + "resolved" "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz" + "version" "1.0.11" + +"connect-history-api-fallback@^2.0.0": + "integrity" "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==" + "resolved" "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz" + "version" "2.0.0" + +"console-control-strings@^1.1.0": + "integrity" "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" + "resolved" "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz" + "version" "1.1.0" + +"content-disposition@0.5.4": + "integrity" "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==" + "resolved" "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz" + "version" "0.5.4" + dependencies: + "safe-buffer" "5.2.1" + +"content-type@~1.0.4": + "integrity" "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" + "resolved" "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz" + "version" "1.0.5" + +"convert-source-map@^2.0.0": + "integrity" "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" + "resolved" "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz" + "version" "2.0.0" + +"cookie-signature@1.0.6": + "integrity" "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + "resolved" "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" + "version" "1.0.6" + +"cookie@0.5.0": + "integrity" "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" + "resolved" "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz" + "version" "0.5.0" + +"copy-to-clipboard@^3.3.1", "copy-to-clipboard@^3.3.3": + "integrity" "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==" + "resolved" "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz" + "version" "3.3.3" + dependencies: + "toggle-selection" "^1.0.6" + +"core-js-compat@^3.31.0", "core-js-compat@^3.32.2": + "integrity" "sha512-0w4LcLXsVEuNkIqwjjf9rjCoPhK8uqA4tMRh4Ge26vfLtUutshn+aRJU21I9LCJlh2QQHfisNToLjw1XEJLTWw==" + "resolved" "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.0.tgz" + "version" "3.33.0" + dependencies: + "browserslist" "^4.22.1" + +"core-js-pure@^3.23.3": + "integrity" "sha512-FKSIDtJnds/YFIEaZ4HszRX7hkxGpNKM7FC9aJ9WLJbSd3lD4vOltFuVIBLR8asSx9frkTSqL0dw90SKQxgKrg==" + "resolved" "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.33.0.tgz" + "version" "3.33.0" + +"core-js@^3.32.2": + "integrity" "sha512-HoZr92+ZjFEKar5HS6MC776gYslNOKHt75mEBKWKnPeFDpZ6nH5OeF3S6HFT1mUAUZKrzkez05VboaX8myjSuw==" + "resolved" "https://registry.npmjs.org/core-js/-/core-js-3.33.0.tgz" + "version" "3.33.0" + +"core-util-is@~1.0.0": + "integrity" "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + "resolved" "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" + "version" "1.0.3" + +"core-util-is@1.0.2": + "integrity" "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" + "resolved" "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + "version" "1.0.2" + +"cosmiconfig@^7.0.0": + "integrity" "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==" + "resolved" "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz" + "version" "7.1.0" + 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" + +"cosmiconfig@^8.1.3": + "integrity" "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==" + "resolved" "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz" + "version" "8.3.6" + dependencies: + "import-fresh" "^3.3.0" + "js-yaml" "^4.1.0" + "parse-json" "^5.2.0" + "path-type" "^4.0.0" + +"crc@^3.8.0": + "integrity" "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==" + "resolved" "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz" + "version" "3.8.0" + dependencies: + "buffer" "^5.1.0" + +"create-jest@^29.7.0": + "integrity" "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==" + "resolved" "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz" + "version" "29.7.0" + dependencies: + "@jest/types" "^29.6.3" + "chalk" "^4.0.0" + "exit" "^0.1.2" + "graceful-fs" "^4.2.9" + "jest-config" "^29.7.0" + "jest-util" "^29.7.0" + "prompts" "^2.0.1" + +"create-require@^1.1.0": + "integrity" "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" + "resolved" "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz" + "version" "1.1.1" + +"crelt@^1.0.5": + "integrity" "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==" + "resolved" "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz" + "version" "1.0.6" + +"cross-env@^7.0.3", "cross-env@7.0.3": + "integrity" "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==" + "resolved" "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz" + "version" "7.0.3" + dependencies: + "cross-spawn" "^7.0.1" + +"cross-fetch@^3.1.5", "cross-fetch@^3.1.6": + "integrity" "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==" + "resolved" "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz" + "version" "3.1.8" + dependencies: + "node-fetch" "^2.6.12" + +"cross-spawn@^7.0.0", "cross-spawn@^7.0.1", "cross-spawn@^7.0.2", "cross-spawn@^7.0.3": + "integrity" "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==" + "resolved" "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" + "version" "7.0.3" + dependencies: + "path-key" "^3.1.0" + "shebang-command" "^2.0.0" + "which" "^2.0.1" + +"css-declaration-sorter@^6.3.1": + "integrity" "sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==" + "resolved" "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz" + "version" "6.4.1" + +"css-loader@^6.8.1": + "integrity" "sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==" + "resolved" "https://registry.npmjs.org/css-loader/-/css-loader-6.8.1.tgz" + "version" "6.8.1" + dependencies: + "icss-utils" "^5.1.0" + "postcss" "^8.4.21" + "postcss-modules-extract-imports" "^3.0.0" + "postcss-modules-local-by-default" "^4.0.3" + "postcss-modules-scope" "^3.0.0" + "postcss-modules-values" "^4.0.0" + "postcss-value-parser" "^4.2.0" + "semver" "^7.3.8" + +"css-minimizer-webpack-plugin@^5.0.1": + "integrity" "sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg==" + "resolved" "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-5.0.1.tgz" + "version" "5.0.1" + dependencies: + "@jridgewell/trace-mapping" "^0.3.18" + "cssnano" "^6.0.1" + "jest-worker" "^29.4.3" + "postcss" "^8.4.24" + "schema-utils" "^4.0.1" + "serialize-javascript" "^6.0.1" + +"css-select@^4.1.3": + "integrity" "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==" + "resolved" "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz" + "version" "4.3.0" + dependencies: + "boolbase" "^1.0.0" + "css-what" "^6.0.1" + "domhandler" "^4.3.1" + "domutils" "^2.8.0" + "nth-check" "^2.0.1" + +"css-select@^5.1.0": + "integrity" "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==" + "resolved" "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz" + "version" "5.1.0" + dependencies: + "boolbase" "^1.0.0" + "css-what" "^6.1.0" + "domhandler" "^5.0.2" + "domutils" "^3.0.1" + "nth-check" "^2.0.1" + +"css-tree@^2.2.1": + "integrity" "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==" + "resolved" "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz" + "version" "2.3.1" + dependencies: + "mdn-data" "2.0.30" + "source-map-js" "^1.0.1" + +"css-tree@~2.2.0": + "integrity" "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==" + "resolved" "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz" + "version" "2.2.1" + dependencies: + "mdn-data" "2.0.28" + "source-map-js" "^1.0.1" + +"css-what@^6.0.1", "css-what@^6.1.0": + "integrity" "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==" + "resolved" "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz" + "version" "6.1.0" + +"css.escape@^1.5.1": + "integrity" "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==" + "resolved" "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz" + "version" "1.5.1" + +"cssesc@^3.0.0": + "integrity" "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" + "resolved" "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz" + "version" "3.0.0" + +"cssnano-preset-default@^6.0.1": + "integrity" "sha512-7VzyFZ5zEB1+l1nToKyrRkuaJIx0zi/1npjvZfbBwbtNTzhLtlvYraK/7/uqmX2Wb2aQtd983uuGw79jAjLSuQ==" + "resolved" "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.0.1.tgz" + "version" "6.0.1" + dependencies: + "css-declaration-sorter" "^6.3.1" + "cssnano-utils" "^4.0.0" + "postcss-calc" "^9.0.0" + "postcss-colormin" "^6.0.0" + "postcss-convert-values" "^6.0.0" + "postcss-discard-comments" "^6.0.0" + "postcss-discard-duplicates" "^6.0.0" + "postcss-discard-empty" "^6.0.0" + "postcss-discard-overridden" "^6.0.0" + "postcss-merge-longhand" "^6.0.0" + "postcss-merge-rules" "^6.0.1" + "postcss-minify-font-values" "^6.0.0" + "postcss-minify-gradients" "^6.0.0" + "postcss-minify-params" "^6.0.0" + "postcss-minify-selectors" "^6.0.0" + "postcss-normalize-charset" "^6.0.0" + "postcss-normalize-display-values" "^6.0.0" + "postcss-normalize-positions" "^6.0.0" + "postcss-normalize-repeat-style" "^6.0.0" + "postcss-normalize-string" "^6.0.0" + "postcss-normalize-timing-functions" "^6.0.0" + "postcss-normalize-unicode" "^6.0.0" + "postcss-normalize-url" "^6.0.0" + "postcss-normalize-whitespace" "^6.0.0" + "postcss-ordered-values" "^6.0.0" + "postcss-reduce-initial" "^6.0.0" + "postcss-reduce-transforms" "^6.0.0" + "postcss-svgo" "^6.0.0" + "postcss-unique-selectors" "^6.0.0" + +"cssnano-utils@^4.0.0": + "integrity" "sha512-Z39TLP+1E0KUcd7LGyF4qMfu8ZufI0rDzhdyAMsa/8UyNUU8wpS0fhdBxbQbv32r64ea00h4878gommRVg2BHw==" + "resolved" "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-4.0.0.tgz" + "version" "4.0.0" + +"cssnano@^6.0.1": + "integrity" "sha512-fVO1JdJ0LSdIGJq68eIxOqFpIJrZqXUsBt8fkrBcztCQqAjQD51OhZp7tc0ImcbwXD4k7ny84QTV90nZhmqbkg==" + "resolved" "https://registry.npmjs.org/cssnano/-/cssnano-6.0.1.tgz" + "version" "6.0.1" + dependencies: + "cssnano-preset-default" "^6.0.1" + "lilconfig" "^2.1.0" + +"csso@^5.0.5": + "integrity" "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==" + "resolved" "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz" + "version" "5.0.5" + dependencies: + "css-tree" "~2.2.0" + +"cssom@^0.5.0": + "integrity" "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==" + "resolved" "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz" + "version" "0.5.0" + +"cssom@~0.3.6": + "integrity" "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" + "resolved" "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz" + "version" "0.3.8" + +"cssstyle@^2.3.0": + "integrity" "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==" + "resolved" "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz" + "version" "2.3.0" + dependencies: + "cssom" "~0.3.6" + +"csstype@^3.0.10", "csstype@^3.0.2": + "integrity" "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + "resolved" "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz" + "version" "3.1.2" + +"damerau-levenshtein@^1.0.8": + "integrity" "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==" + "resolved" "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz" + "version" "1.0.8" + +"data-urls@^3.0.2": + "integrity" "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==" + "resolved" "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz" + "version" "3.0.2" + dependencies: + "abab" "^2.0.6" + "whatwg-mimetype" "^3.0.0" + "whatwg-url" "^11.0.0" + +"date-fns@^2.30.0": + "integrity" "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==" + "resolved" "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz" + "version" "2.30.0" + dependencies: + "@babel/runtime" "^7.21.0" + +"dateformat@^5.0.1", "dateformat@^5.0.3": + "integrity" "sha512-Kvr6HmPXUMerlLcLF+Pwq3K7apHpYmGDVqrxcDasBg86UcKeTSNWbEzU8bwdXnxnR44FtMhJAxI4Bov6Y/KUfA==" + "resolved" "https://registry.npmjs.org/dateformat/-/dateformat-5.0.3.tgz" + "version" "5.0.3" + +"debug@^3.2.7": + "integrity" "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==" + "resolved" "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" + "version" "3.2.7" + dependencies: + "ms" "^2.1.1" + +"debug@^4.0.1", "debug@^4.1.0", "debug@^4.1.1", "debug@^4.3.1", "debug@^4.3.2", "debug@^4.3.3", "debug@^4.3.4", "debug@4": + "integrity" "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==" + "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" + "version" "4.3.4" + dependencies: + "ms" "2.1.2" + +"debug@2.6.9": + "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" + "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + "version" "2.6.9" + dependencies: + "ms" "2.0.0" + +"decimal.js@^10.4.2": + "integrity" "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" + "resolved" "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz" + "version" "10.4.3" + +"decompress-response@^6.0.0": + "integrity" "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==" + "resolved" "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "mimic-response" "^3.1.0" + +"dedent@^1.0.0": + "integrity" "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==" + "resolved" "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz" + "version" "1.5.1" + +"deep-equal@^2.0.5": + "integrity" "sha512-xjVyBf0w5vH0I42jdAZzOKVldmPgSulmiyPRywoyq7HXC9qdgo17kxJE+rdnif5Tz6+pIrpJI8dCpMNLIGkUiA==" + "resolved" "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.2.tgz" + "version" "2.2.2" + dependencies: + "array-buffer-byte-length" "^1.0.0" + "call-bind" "^1.0.2" + "es-get-iterator" "^1.1.3" + "get-intrinsic" "^1.2.1" + "is-arguments" "^1.1.1" + "is-array-buffer" "^3.0.2" + "is-date-object" "^1.0.5" + "is-regex" "^1.1.4" + "is-shared-array-buffer" "^1.0.2" + "isarray" "^2.0.5" + "object-is" "^1.1.5" + "object-keys" "^1.1.1" + "object.assign" "^4.1.4" + "regexp.prototype.flags" "^1.5.0" + "side-channel" "^1.0.4" + "which-boxed-primitive" "^1.0.2" + "which-collection" "^1.0.1" + "which-typed-array" "^1.1.9" + +"deep-is@^0.1.3": + "integrity" "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + "resolved" "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" + "version" "0.1.4" + +"deepmerge@^4.2.2", "deepmerge@^4.3.1": + "integrity" "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==" + "resolved" "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz" + "version" "4.3.1" + +"default-browser-id@^3.0.0": + "integrity" "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==" + "resolved" "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "bplist-parser" "^0.2.0" + "untildify" "^4.0.0" + +"default-browser@^4.0.0": + "integrity" "sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==" + "resolved" "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "bundle-name" "^3.0.0" + "default-browser-id" "^3.0.0" + "execa" "^7.1.1" + "titleize" "^3.0.0" + +"default-gateway@^6.0.3": + "integrity" "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==" + "resolved" "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz" + "version" "6.0.3" + dependencies: + "execa" "^5.0.0" + +"defaults@^1.0.3": + "integrity" "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==" + "resolved" "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz" + "version" "1.0.4" + dependencies: + "clone" "^1.0.2" + +"defer-to-connect@^2.0.0": + "integrity" "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==" + "resolved" "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz" + "version" "2.0.1" + +"define-data-property@^1.0.1": + "integrity" "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==" + "resolved" "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz" + "version" "1.1.0" + dependencies: + "get-intrinsic" "^1.2.1" + "gopd" "^1.0.1" + "has-property-descriptors" "^1.0.0" + +"define-lazy-prop@^2.0.0": + "integrity" "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==" + "resolved" "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz" + "version" "2.0.0" + +"define-lazy-prop@^3.0.0": + "integrity" "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==" + "resolved" "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz" + "version" "3.0.0" + +"define-properties@^1.1.3", "define-properties@^1.1.4", "define-properties@^1.2.0", "define-properties@^1.2.1": + "integrity" "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==" + "resolved" "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz" + "version" "1.2.1" + dependencies: + "define-data-property" "^1.0.1" + "has-property-descriptors" "^1.0.0" + "object-keys" "^1.1.1" + +"delayed-stream@~1.0.0": + "integrity" "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + "resolved" "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" + "version" "1.0.0" + +"delegates@^1.0.0": + "integrity" "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" + "resolved" "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz" + "version" "1.0.0" + +"depd@~1.1.2": + "integrity" "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==" + "resolved" "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" + "version" "1.1.2" + +"depd@2.0.0": + "integrity" "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + "resolved" "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" + "version" "2.0.0" + +"dequal@^2.0.3": + "integrity" "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==" + "resolved" "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz" + "version" "2.0.3" + +"destroy@1.2.0": + "integrity" "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" + "resolved" "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" + "version" "1.2.0" + +"detect-libc@^2.0.1": + "integrity" "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==" + "resolved" "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz" + "version" "2.0.2" + +"detect-newline@^3.0.0": + "integrity" "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==" + "resolved" "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz" + "version" "3.1.0" + +"detect-node@^2.0.4": + "integrity" "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" + "resolved" "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz" + "version" "2.1.0" + +"detect-port@^1.5.1": + "integrity" "sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==" + "resolved" "https://registry.npmjs.org/detect-port/-/detect-port-1.5.1.tgz" + "version" "1.5.1" + dependencies: + "address" "^1.0.1" + "debug" "4" + +"diff-sequences@^27.5.1": + "integrity" "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==" + "resolved" "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz" + "version" "27.5.1" + +"diff-sequences@^29.6.3": + "integrity" "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==" + "resolved" "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz" + "version" "29.6.3" + +"diff@^4.0.1": + "integrity" "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" + "resolved" "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" + "version" "4.0.2" + +"dir-compare@^3.0.0": + "integrity" "sha512-J7/et3WlGUCxjdnD3HAAzQ6nsnc0WL6DD7WcwJb7c39iH1+AWfg+9OqzJNaI6PkBwBvm1mhZNL9iY/nRiZXlPg==" + "resolved" "https://registry.npmjs.org/dir-compare/-/dir-compare-3.3.0.tgz" + "version" "3.3.0" + dependencies: + "buffer-equal" "^1.0.0" + "minimatch" "^3.0.4" + +"dir-glob@^3.0.1": + "integrity" "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==" + "resolved" "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "path-type" "^4.0.0" + +"dmg-builder@24.6.4": + "integrity" "sha512-BNcHRc9CWEuI9qt0E655bUBU/j/3wUCYBVKGu1kVpbN5lcUdEJJJeiO0NHK3dgKmra6LUUZlo+mWqc+OCbi0zw==" + "resolved" "https://registry.npmjs.org/dmg-builder/-/dmg-builder-24.6.4.tgz" + "version" "24.6.4" + dependencies: + "app-builder-lib" "24.6.4" + "builder-util" "24.5.0" + "builder-util-runtime" "9.2.1" + "fs-extra" "^10.1.0" + "iconv-lite" "^0.6.2" + "js-yaml" "^4.1.0" + optionalDependencies: + "dmg-license" "^1.0.11" + +"dmg-license@^1.0.11": + "integrity" "sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q==" + "resolved" "https://registry.npmjs.org/dmg-license/-/dmg-license-1.0.11.tgz" + "version" "1.0.11" + dependencies: + "@types/plist" "^3.0.1" + "@types/verror" "^1.10.3" + "ajv" "^6.10.0" + "crc" "^3.8.0" + "iconv-corefoundation" "^1.1.7" + "plist" "^3.0.4" + "smart-buffer" "^4.0.2" + "verror" "^1.10.0" + +"dns-equal@^1.0.0": + "integrity" "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==" + "resolved" "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz" + "version" "1.0.0" + +"dns-packet@^5.2.2": + "integrity" "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==" + "resolved" "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz" + "version" "5.6.1" + dependencies: + "@leichtgewicht/ip-codec" "^2.0.1" + +"doctrine@^2.1.0": + "integrity" "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==" + "resolved" "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "esutils" "^2.0.2" + +"doctrine@^3.0.0": + "integrity" "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==" + "resolved" "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "esutils" "^2.0.2" + +"dom-accessibility-api@^0.5.6", "dom-accessibility-api@^0.5.9": + "integrity" "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==" + "resolved" "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz" + "version" "0.5.16" + +"dom-converter@^0.2.0": + "integrity" "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==" + "resolved" "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz" + "version" "0.2.0" + dependencies: + "utila" "~0.4" + +"dom-serializer@^1.0.1": + "integrity" "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==" + "resolved" "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz" + "version" "1.4.1" + dependencies: + "domelementtype" "^2.0.1" + "domhandler" "^4.2.0" + "entities" "^2.0.0" + +"dom-serializer@^2.0.0": + "integrity" "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==" + "resolved" "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "domelementtype" "^2.3.0" + "domhandler" "^5.0.2" + "entities" "^4.2.0" + +"domelementtype@^2.0.1", "domelementtype@^2.2.0", "domelementtype@^2.3.0": + "integrity" "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" + "resolved" "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz" + "version" "2.3.0" + +"domexception@^4.0.0": + "integrity" "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==" + "resolved" "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "webidl-conversions" "^7.0.0" + +"domhandler@^4.0.0", "domhandler@^4.2.0", "domhandler@^4.3.1": + "integrity" "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==" + "resolved" "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz" + "version" "4.3.1" + dependencies: + "domelementtype" "^2.2.0" + +"domhandler@^5.0.2", "domhandler@^5.0.3": + "integrity" "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==" + "resolved" "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz" + "version" "5.0.3" + dependencies: + "domelementtype" "^2.3.0" + +"domutils@^2.5.2", "domutils@^2.8.0": + "integrity" "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==" + "resolved" "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz" + "version" "2.8.0" + dependencies: + "dom-serializer" "^1.0.1" + "domelementtype" "^2.2.0" + "domhandler" "^4.2.0" + +"domutils@^3.0.1": + "integrity" "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==" + "resolved" "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "dom-serializer" "^2.0.0" + "domelementtype" "^2.3.0" + "domhandler" "^5.0.3" + +"dot-case@^3.0.4": + "integrity" "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==" + "resolved" "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz" + "version" "3.0.4" + dependencies: + "no-case" "^3.0.4" + "tslib" "^2.0.3" + +"dotenv-expand@^5.1.0": + "integrity" "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==" + "resolved" "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz" + "version" "5.1.0" + +"dotenv@^9.0.2": + "integrity" "sha512-I9OvvrHp4pIARv4+x9iuewrWycX6CcZtoAu1XrzPxc5UygMJXJZYmBsynku8IkrJwgypE5DGNjDPmPRhDCptUg==" + "resolved" "https://registry.npmjs.org/dotenv/-/dotenv-9.0.2.tgz" + "version" "9.0.2" + +"duplexer@^0.1.2": + "integrity" "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" + "resolved" "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz" + "version" "0.1.2" + +"eastasianwidth@^0.2.0": + "integrity" "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + "resolved" "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" + "version" "0.2.0" + +"ee-first@1.1.1": + "integrity" "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + "resolved" "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" + "version" "1.1.1" + +"ejs@^3.1.8": + "integrity" "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==" + "resolved" "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz" + "version" "3.1.9" + dependencies: + "jake" "^10.8.5" + +"electron-builder@^23.3.3", "electron-builder@^24.6.4", "electron-builder@24.6.4": + "integrity" "sha512-uNWQoU7pE7qOaIQ6CJHpBi44RJFVG8OHRBIadUxrsDJVwLLo8Nma3K/EEtx5/UyWAQYdcK4nVPYKoRqBb20hbA==" + "resolved" "https://registry.npmjs.org/electron-builder/-/electron-builder-24.6.4.tgz" + "version" "24.6.4" + dependencies: + "app-builder-lib" "24.6.4" + "builder-util" "24.5.0" + "builder-util-runtime" "9.2.1" + "chalk" "^4.1.2" + "dmg-builder" "24.6.4" + "fs-extra" "^10.1.0" + "is-ci" "^3.0.0" + "lazy-val" "^1.0.5" + "read-config-file" "6.3.2" + "simple-update-notifier" "2.0.0" + "yargs" "^17.6.2" + +"electron-debug@^3.2.0": + "integrity" "sha512-7xZh+LfUvJ52M9rn6N+tPuDw6oRAjxUj9SoxAZfJ0hVCXhZCsdkrSt7TgXOiWiEOBgEV8qwUIO/ScxllsPS7ow==" + "resolved" "https://registry.npmjs.org/electron-debug/-/electron-debug-3.2.0.tgz" + "version" "3.2.0" + dependencies: + "electron-is-dev" "^1.1.0" + "electron-localshortcut" "^3.1.0" + +"electron-devtools-installer@^3.2.0": + "integrity" "sha512-t3UczsYugm4OAbqvdImMCImIMVdFzJAHgbwHpkl5jmfu1izVgUcP/mnrPqJIpEeCK1uZGpt+yHgWEN+9EwoYhQ==" + "resolved" "https://registry.npmjs.org/electron-devtools-installer/-/electron-devtools-installer-3.2.0.tgz" + "version" "3.2.0" + dependencies: + "rimraf" "^3.0.2" + "semver" "^7.2.1" + "tslib" "^2.1.0" + "unzip-crx-3" "^0.2.0" + +"electron-is-accelerator@^0.1.0": + "integrity" "sha512-fLGSAjXZtdn1sbtZxx52+krefmtNuVwnJCV2gNiVt735/ARUboMl8jnNC9fZEqQdlAv2ZrETfmBUsoQci5evJA==" + "resolved" "https://registry.npmjs.org/electron-is-accelerator/-/electron-is-accelerator-0.1.2.tgz" + "version" "0.1.2" + +"electron-is-dev@^1.1.0": + "integrity" "sha512-R1oD5gMBPS7PVU8gJwH6CtT0e6VSoD0+SzSnYpNm+dBkcijgA+K7VAMHDfnRq/lkKPZArpzplTW6jfiMYosdzw==" + "resolved" "https://registry.npmjs.org/electron-is-dev/-/electron-is-dev-1.2.0.tgz" + "version" "1.2.0" + +"electron-localshortcut@^3.1.0": + "integrity" "sha512-DWvhKv36GsdXKnaFFhEiK8kZZA+24/yFLgtTwJJHc7AFgDjNRIBJZ/jq62Y/dWv9E4ypYwrVWN2bVrCYw1uv7Q==" + "resolved" "https://registry.npmjs.org/electron-localshortcut/-/electron-localshortcut-3.2.1.tgz" + "version" "3.2.1" + dependencies: + "debug" "^4.0.1" + "electron-is-accelerator" "^0.1.0" + "keyboardevent-from-electron-accelerator" "^2.0.0" + "keyboardevents-areequal" "^0.2.1" + +"electron-log@^4.4.8": + "integrity" "sha512-QQ4GvrXO+HkgqqEOYbi+DHL7hj5JM+nHi/j+qrN9zeeXVKy8ZABgbu4CnG+BBqDZ2+tbeq9tUC4DZfIWFU5AZA==" + "resolved" "https://registry.npmjs.org/electron-log/-/electron-log-4.4.8.tgz" + "version" "4.4.8" + +"electron-publish@24.5.0": + "integrity" "sha512-zwo70suH15L15B4ZWNDoEg27HIYoPsGJUF7xevLJLSI7JUPC8l2yLBdLGwqueJ5XkDL7ucYyRZzxJVR8ElV9BA==" + "resolved" "https://registry.npmjs.org/electron-publish/-/electron-publish-24.5.0.tgz" + "version" "24.5.0" + dependencies: + "@types/fs-extra" "^9.0.11" + "builder-util" "24.5.0" + "builder-util-runtime" "9.2.1" + "chalk" "^4.1.2" + "fs-extra" "^10.1.0" + "lazy-val" "^1.0.5" + "mime" "^2.5.2" + +"electron-to-chromium@^1.4.535": + "integrity" "sha512-54z7squS1FyFRSUqq/knOFSptjjogLZXbKcYk3B0qkE1KZzvqASwRZnY2KzZQJqIYLVD38XZeoiMRflYSwyO4w==" + "resolved" "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.544.tgz" + "version" "1.4.544" + +"electron-updater@^5.3.0", "electron-updater@^6.1.4", "electron-updater@6.1.4": + "integrity" "sha512-yYAJc6RQjjV4WtInZVn+ZcLyXRhbVXoomKEfUUwDqIk5s2wxzLhWaor7lrNgxODyODhipjg4SVPMhJHi5EnsCA==" + "resolved" "https://registry.npmjs.org/electron-updater/-/electron-updater-6.1.4.tgz" + "version" "6.1.4" + dependencies: + "builder-util-runtime" "9.2.1" + "fs-extra" "^10.1.0" + "js-yaml" "^4.1.0" + "lazy-val" "^1.0.5" + "lodash.escaperegexp" "^4.1.2" + "lodash.isequal" "^4.5.0" + "semver" "^7.3.8" + "tiny-typed-emitter" "^2.1.0" + +"electron@^26.2.1", "electron@>=12.0.0": + "integrity" "sha512-7ZpvSHu+jmqialSvywTZnOQZZGLqlyj+yV5HGDrEzFnMiFaXBRpbByHgoUhaExJ/8t/0xKQjKlMRAY65w+zNZQ==" + "resolved" "https://registry.npmjs.org/electron/-/electron-26.3.0.tgz" + "version" "26.3.0" + dependencies: + "@electron/get" "^2.0.0" + "@types/node" "^18.11.18" + "extract-zip" "^2.0.1" + +"electron@20.1.0", "electron@26.3.0", "electron@file:/Users/bartkozorog/Projects/flowser/apps/electron": + "resolved" "file:apps/electron" + dependencies: + "electron-debug" "^3.2.0" + "electron-log" "^4.4.8" + "electron-updater" "^6.1.4" + "react" "^18.2.0" + "react-dom" "^18.2.0" + "react-router-dom" "^6.16.0" + +"electronmon@^2.0.2": + "integrity" "sha512-Yw1CXEp5HJT9P6Sns3UP3Krwm5eb2JKqTRAVczKdsUa+U/dMTgONwKIHkPbKSSmtyTV+5JwobxkhFPiRgegObA==" + "resolved" "https://registry.npmjs.org/electronmon/-/electronmon-2.0.2.tgz" + "version" "2.0.2" + dependencies: + "chalk" "^3.0.0" + "import-from" "^3.0.0" + "runtime-required" "^1.1.0" + "watchboy" "^0.4.3" + +"elliptic@^6.5.4": + "integrity" "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==" + "resolved" "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz" + "version" "6.5.4" + dependencies: + "bn.js" "^4.11.9" + "brorand" "^1.1.0" + "hash.js" "^1.0.0" + "hmac-drbg" "^1.0.1" + "inherits" "^2.0.4" + "minimalistic-assert" "^1.0.1" + "minimalistic-crypto-utils" "^1.0.1" + +"emittery@^0.13.1": + "integrity" "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==" + "resolved" "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz" + "version" "0.13.1" + +"emoji-regex@^8.0.0": + "integrity" "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" + "version" "8.0.0" + +"emoji-regex@^9.2.2": + "integrity" "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" + "version" "9.2.2" + +"emojis-list@^3.0.0": + "integrity" "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" + "resolved" "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz" + "version" "3.0.0" + +"encodeurl@~1.0.2": + "integrity" "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" + "resolved" "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" + "version" "1.0.2" + +"encoding@^0.1.0", "encoding@^0.1.13": + "integrity" "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==" + "resolved" "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz" + "version" "0.1.13" + dependencies: + "iconv-lite" "^0.6.2" + +"end-of-stream@^1.1.0": + "integrity" "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==" + "resolved" "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz" + "version" "1.4.4" + dependencies: + "once" "^1.4.0" + +"enhanced-resolve@^0.9.1": + "integrity" "sha512-kxpoMgrdtkXZ5h0SeraBS1iRntpTpQ3R8ussdb38+UAFnMGX5DDyJXePm+OCHOcoXvHDw7mc2erbJBpDnl7TPw==" + "resolved" "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz" + "version" "0.9.1" + dependencies: + "graceful-fs" "^4.1.2" + "memory-fs" "^0.2.0" + "tapable" "^0.1.8" + +"enhanced-resolve@^5.0.0", "enhanced-resolve@^5.12.0", "enhanced-resolve@^5.15.0", "enhanced-resolve@^5.7.0": + "integrity" "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==" + "resolved" "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz" + "version" "5.15.0" + dependencies: + "graceful-fs" "^4.2.4" + "tapable" "^2.2.0" + +"enquirer@>= 2.3.0 < 3": + "integrity" "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==" + "resolved" "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz" + "version" "2.3.6" + dependencies: + "ansi-colors" "^4.1.1" + +"entities@^2.0.0": + "integrity" "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" + "resolved" "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz" + "version" "2.2.0" + +"entities@^2.2.0": + "integrity" "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" + "resolved" "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz" + "version" "2.2.0" + +"entities@^4.2.0", "entities@^4.4.0": + "integrity" "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==" + "resolved" "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz" + "version" "4.5.0" + +"env-paths@^2.2.0": + "integrity" "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==" + "resolved" "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz" + "version" "2.2.1" + +"envinfo@^7.7.3": + "integrity" "sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw==" + "resolved" "https://registry.npmjs.org/envinfo/-/envinfo-7.10.0.tgz" + "version" "7.10.0" + +"err-code@^2.0.2": + "integrity" "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==" + "resolved" "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz" + "version" "2.0.3" + +"error-ex@^1.3.1": + "integrity" "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==" + "resolved" "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" + "version" "1.3.2" + dependencies: + "is-arrayish" "^0.2.1" + +"error-stack-parser@^2.0.6": + "integrity" "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==" + "resolved" "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz" + "version" "2.1.4" + dependencies: + "stackframe" "^1.3.4" + +"es-abstract@^1.22.1": + "integrity" "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==" + "resolved" "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz" + "version" "1.22.2" + dependencies: + "array-buffer-byte-length" "^1.0.0" + "arraybuffer.prototype.slice" "^1.0.2" + "available-typed-arrays" "^1.0.5" + "call-bind" "^1.0.2" + "es-set-tostringtag" "^2.0.1" + "es-to-primitive" "^1.2.1" + "function.prototype.name" "^1.1.6" + "get-intrinsic" "^1.2.1" + "get-symbol-description" "^1.0.0" + "globalthis" "^1.0.3" + "gopd" "^1.0.1" + "has" "^1.0.3" + "has-property-descriptors" "^1.0.0" + "has-proto" "^1.0.1" + "has-symbols" "^1.0.3" + "internal-slot" "^1.0.5" + "is-array-buffer" "^3.0.2" + "is-callable" "^1.2.7" + "is-negative-zero" "^2.0.2" + "is-regex" "^1.1.4" + "is-shared-array-buffer" "^1.0.2" + "is-string" "^1.0.7" + "is-typed-array" "^1.1.12" + "is-weakref" "^1.0.2" + "object-inspect" "^1.12.3" + "object-keys" "^1.1.1" + "object.assign" "^4.1.4" + "regexp.prototype.flags" "^1.5.1" + "safe-array-concat" "^1.0.1" + "safe-regex-test" "^1.0.0" + "string.prototype.trim" "^1.2.8" + "string.prototype.trimend" "^1.0.7" + "string.prototype.trimstart" "^1.0.7" + "typed-array-buffer" "^1.0.0" + "typed-array-byte-length" "^1.0.0" + "typed-array-byte-offset" "^1.0.0" + "typed-array-length" "^1.0.4" + "unbox-primitive" "^1.0.2" + "which-typed-array" "^1.1.11" + +"es-get-iterator@^1.1.3": + "integrity" "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==" + "resolved" "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz" + "version" "1.1.3" + dependencies: + "call-bind" "^1.0.2" + "get-intrinsic" "^1.1.3" + "has-symbols" "^1.0.3" + "is-arguments" "^1.1.1" + "is-map" "^2.0.2" + "is-set" "^2.0.2" + "is-string" "^1.0.7" + "isarray" "^2.0.5" + "stop-iteration-iterator" "^1.0.0" + +"es-iterator-helpers@^1.0.12": + "integrity" "sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==" + "resolved" "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz" + "version" "1.0.15" + dependencies: + "asynciterator.prototype" "^1.0.0" + "call-bind" "^1.0.2" + "define-properties" "^1.2.1" + "es-abstract" "^1.22.1" + "es-set-tostringtag" "^2.0.1" + "function-bind" "^1.1.1" + "get-intrinsic" "^1.2.1" + "globalthis" "^1.0.3" + "has-property-descriptors" "^1.0.0" + "has-proto" "^1.0.1" + "has-symbols" "^1.0.3" + "internal-slot" "^1.0.5" + "iterator.prototype" "^1.1.2" + "safe-array-concat" "^1.0.1" + +"es-module-lexer@^1.2.1": + "integrity" "sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==" + "resolved" "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.1.tgz" + "version" "1.3.1" + +"es-set-tostringtag@^2.0.1": + "integrity" "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==" + "resolved" "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "get-intrinsic" "^1.1.3" + "has" "^1.0.3" + "has-tostringtag" "^1.0.0" + +"es-shim-unscopables@^1.0.0": + "integrity" "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==" + "resolved" "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "has" "^1.0.3" + +"es-to-primitive@^1.2.1": + "integrity" "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==" + "resolved" "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz" + "version" "1.2.1" + dependencies: + "is-callable" "^1.1.4" + "is-date-object" "^1.0.1" + "is-symbol" "^1.0.2" + +"es6-error@^4.1.1": + "integrity" "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==" + "resolved" "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz" + "version" "4.1.1" + +"esbuild@^0.18.10": + "integrity" "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==" + "resolved" "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz" + "version" "0.18.20" + optionalDependencies: + "@esbuild/android-arm" "0.18.20" + "@esbuild/android-arm64" "0.18.20" + "@esbuild/android-x64" "0.18.20" + "@esbuild/darwin-arm64" "0.18.20" + "@esbuild/darwin-x64" "0.18.20" + "@esbuild/freebsd-arm64" "0.18.20" + "@esbuild/freebsd-x64" "0.18.20" + "@esbuild/linux-arm" "0.18.20" + "@esbuild/linux-arm64" "0.18.20" + "@esbuild/linux-ia32" "0.18.20" + "@esbuild/linux-loong64" "0.18.20" + "@esbuild/linux-mips64el" "0.18.20" + "@esbuild/linux-ppc64" "0.18.20" + "@esbuild/linux-riscv64" "0.18.20" + "@esbuild/linux-s390x" "0.18.20" + "@esbuild/linux-x64" "0.18.20" + "@esbuild/netbsd-x64" "0.18.20" + "@esbuild/openbsd-x64" "0.18.20" + "@esbuild/sunos-x64" "0.18.20" + "@esbuild/win32-arm64" "0.18.20" + "@esbuild/win32-ia32" "0.18.20" + "@esbuild/win32-x64" "0.18.20" + +"escalade@^3.1.1": + "integrity" "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + "resolved" "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" + "version" "3.1.1" + +"escape-html@~1.0.3": + "integrity" "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + "resolved" "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" + "version" "1.0.3" + +"escape-string-regexp@^1.0.5": + "integrity" "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" + "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + "version" "1.0.5" + +"escape-string-regexp@^2.0.0": + "integrity" "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" + "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" + "version" "2.0.0" + +"escape-string-regexp@^4.0.0": + "integrity" "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" + "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" + "version" "4.0.0" + +"escodegen@^2.0.0": + "integrity" "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==" + "resolved" "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "esprima" "^4.0.1" + "estraverse" "^5.2.0" + "esutils" "^2.0.2" + optionalDependencies: + "source-map" "~0.6.1" + +"eslint-config-airbnb-base@^15.0.0": + "integrity" "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==" + "resolved" "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz" + "version" "15.0.0" + dependencies: + "confusing-browser-globals" "^1.0.10" + "object.assign" "^4.1.2" + "object.entries" "^1.1.5" + "semver" "^6.3.0" + +"eslint-config-airbnb-typescript@^17.1.0": + "integrity" "sha512-GPxI5URre6dDpJ0CtcthSZVBAfI+Uw7un5OYNVxP2EYi3H81Jw701yFP7AU+/vCE7xBtFmjge7kfhhk4+RAiig==" + "resolved" "https://registry.npmjs.org/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-17.1.0.tgz" + "version" "17.1.0" + dependencies: + "eslint-config-airbnb-base" "^15.0.0" + +"eslint-config-airbnb@^19.0.4": + "integrity" "sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==" + "resolved" "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-19.0.4.tgz" + "version" "19.0.4" + dependencies: + "eslint-config-airbnb-base" "^15.0.0" + "object.assign" "^4.1.2" + "object.entries" "^1.1.5" + +"eslint-config-erb@^4.1.0-0": + "integrity" "sha512-30Ysy1JJmxu+VElnNcBZLOsDRWHJh1exfCLMIwe1lscnby8WeTAWJNS0j+WgS9GzYm+5JoNeas90O1wq2bLnJQ==" + "resolved" "https://registry.npmjs.org/eslint-config-erb/-/eslint-config-erb-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "@typescript-eslint/eslint-plugin" "^6.7.0" + "@typescript-eslint/parser" "^6.7.0" + "eslint-config-airbnb" "^19.0.4" + "eslint-config-airbnb-typescript" "^17.1.0" + "eslint-config-prettier" "^9.0.0" + "eslint-plugin-compat" "^4.2.0" + "eslint-plugin-import" "^2.28.1" + "eslint-plugin-jest" "^27.4.0" + "eslint-plugin-jsx-a11y" "6.7.1" + "eslint-plugin-prettier" "^5.0.0" + "eslint-plugin-promise" "^6.1.1" + "eslint-plugin-react" "^7.33.2" + "eslint-plugin-react-hooks" "^4.6.0" + +"eslint-config-prettier@^9.0.0": + "integrity" "sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==" + "resolved" "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz" + "version" "9.0.0" + +"eslint-import-resolver-node@^0.3.7": + "integrity" "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==" + "resolved" "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz" + "version" "0.3.9" + dependencies: + "debug" "^3.2.7" + "is-core-module" "^2.13.0" + "resolve" "^1.22.4" + +"eslint-import-resolver-typescript@^3.6.0": + "integrity" "sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==" + "resolved" "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz" + "version" "3.6.1" + dependencies: + "debug" "^4.3.4" + "enhanced-resolve" "^5.12.0" + "eslint-module-utils" "^2.7.4" + "fast-glob" "^3.3.1" + "get-tsconfig" "^4.5.0" + "is-core-module" "^2.11.0" + "is-glob" "^4.0.3" + +"eslint-import-resolver-webpack@^0.13.7": + "integrity" "sha512-2a+meyMeABBRO4K53Oj1ygkmt5lhQS79Lmx2f684Qnv6gjvD4RLOM5jfPGTXwQ0A2K03WSoKt3HRQu/uBgxF7w==" + "resolved" "https://registry.npmjs.org/eslint-import-resolver-webpack/-/eslint-import-resolver-webpack-0.13.7.tgz" + "version" "0.13.7" + dependencies: + "array.prototype.find" "^2.2.1" + "debug" "^3.2.7" + "enhanced-resolve" "^0.9.1" + "find-root" "^1.1.0" + "has" "^1.0.3" + "interpret" "^1.4.0" + "is-core-module" "^2.13.0" + "is-regex" "^1.1.4" + "lodash" "^4.17.21" + "resolve" "^2.0.0-next.4" + "semver" "^5.7.2" + +"eslint-module-utils@^2.7.4", "eslint-module-utils@^2.8.0": + "integrity" "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==" + "resolved" "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz" + "version" "2.8.0" + dependencies: + "debug" "^3.2.7" + +"eslint-plugin-compat@^4.2.0": + "integrity" "sha512-RDKSYD0maWy5r7zb5cWQS+uSPc26mgOzdORJ8hxILmWM7S/Ncwky7BcAtXVY5iRbKjBdHsWU8Yg7hfoZjtkv7w==" + "resolved" "https://registry.npmjs.org/eslint-plugin-compat/-/eslint-plugin-compat-4.2.0.tgz" + "version" "4.2.0" + dependencies: + "@mdn/browser-compat-data" "^5.3.13" + "ast-metadata-inferer" "^0.8.0" + "browserslist" "^4.21.10" + "caniuse-lite" "^1.0.30001524" + "find-up" "^5.0.0" + "lodash.memoize" "^4.1.2" + "semver" "^7.5.4" + +"eslint-plugin-import@*", "eslint-plugin-import@^2.25.2", "eslint-plugin-import@^2.25.3", "eslint-plugin-import@^2.28.1", "eslint-plugin-import@>=1.4.0": + "integrity" "sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==" + "resolved" "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz" + "version" "2.28.1" + dependencies: + "array-includes" "^3.1.6" + "array.prototype.findlastindex" "^1.2.2" + "array.prototype.flat" "^1.3.1" + "array.prototype.flatmap" "^1.3.1" + "debug" "^3.2.7" + "doctrine" "^2.1.0" + "eslint-import-resolver-node" "^0.3.7" + "eslint-module-utils" "^2.8.0" + "has" "^1.0.3" + "is-core-module" "^2.13.0" + "is-glob" "^4.0.3" + "minimatch" "^3.1.2" + "object.fromentries" "^2.0.6" + "object.groupby" "^1.0.0" + "object.values" "^1.1.6" + "semver" "^6.3.1" + "tsconfig-paths" "^3.14.2" + +"eslint-plugin-jest@^27.4.0": + "integrity" "sha512-3Nfvv3wbq2+PZlRTf2oaAWXWwbdBejFRBR2O8tAO67o+P8zno+QGbcDYaAXODlreXVg+9gvWhKKmG2rgfb8GEg==" + "resolved" "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.4.2.tgz" + "version" "27.4.2" + dependencies: + "@typescript-eslint/utils" "^5.10.0" + +"eslint-plugin-jsdoc@^40.0.0": + "integrity" "sha512-EhCqpzRkxoT2DUB4AnrU0ggBYvTh3bWrLZzQTupq6vSVE6XzNwJVKsOHa41GCoevnsWMBNmoDVjXWGqckjuG1g==" + "resolved" "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-40.3.0.tgz" + "version" "40.3.0" + dependencies: + "@es-joy/jsdoccomment" "~0.37.0" + "comment-parser" "1.3.1" + "debug" "^4.3.4" + "escape-string-regexp" "^4.0.0" + "esquery" "^1.5.0" + "semver" "^7.3.8" + "spdx-expression-parse" "^3.0.1" + +"eslint-plugin-jsx-a11y@^6.5.1", "eslint-plugin-jsx-a11y@^6.7.1", "eslint-plugin-jsx-a11y@6.7.1": + "integrity" "sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==" + "resolved" "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz" + "version" "6.7.1" + dependencies: + "@babel/runtime" "^7.20.7" + "aria-query" "^5.1.3" + "array-includes" "^3.1.6" + "array.prototype.flatmap" "^1.3.1" + "ast-types-flow" "^0.0.7" + "axe-core" "^4.6.2" + "axobject-query" "^3.1.1" + "damerau-levenshtein" "^1.0.8" + "emoji-regex" "^9.2.2" + "has" "^1.0.3" + "jsx-ast-utils" "^3.3.3" + "language-tags" "=1.0.5" + "minimatch" "^3.1.2" + "object.entries" "^1.1.6" + "object.fromentries" "^2.0.6" + "semver" "^6.3.0" + +"eslint-plugin-prettier@^5.0.0": + "integrity" "sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==" + "resolved" "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "prettier-linter-helpers" "^1.0.0" + "synckit" "^0.8.5" + +"eslint-plugin-promise@^6.1.1": + "integrity" "sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==" + "resolved" "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz" + "version" "6.1.1" + +"eslint-plugin-react-hooks@^4.3.0", "eslint-plugin-react-hooks@^4.6.0": + "integrity" "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==" + "resolved" "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz" + "version" "4.6.0" + +"eslint-plugin-react@^7.26.0", "eslint-plugin-react@^7.28.0", "eslint-plugin-react@^7.33.2": + "integrity" "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==" + "resolved" "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz" + "version" "7.33.2" + dependencies: + "array-includes" "^3.1.6" + "array.prototype.flatmap" "^1.3.1" + "array.prototype.tosorted" "^1.1.1" + "doctrine" "^2.1.0" + "es-iterator-helpers" "^1.0.12" + "estraverse" "^5.3.0" + "jsx-ast-utils" "^2.4.1 || ^3.0.0" + "minimatch" "^3.1.2" + "object.entries" "^1.1.6" + "object.fromentries" "^2.0.6" + "object.hasown" "^1.1.2" + "object.values" "^1.1.6" + "prop-types" "^15.8.1" + "resolve" "^2.0.0-next.4" + "semver" "^6.3.1" + "string.prototype.matchall" "^4.0.8" + +"eslint-scope@^5.1.1", "eslint-scope@5.1.1": + "integrity" "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==" + "resolved" "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" + "version" "5.1.1" + dependencies: + "esrecurse" "^4.3.0" + "estraverse" "^4.1.1" + +"eslint-scope@^7.2.2": + "integrity" "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==" + "resolved" "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz" + "version" "7.2.2" + dependencies: + "esrecurse" "^4.3.0" + "estraverse" "^5.2.0" + +"eslint-visitor-keys@^3.3.0": + "integrity" "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==" + "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" + "version" "3.4.3" + +"eslint-visitor-keys@^3.4.1", "eslint-visitor-keys@^3.4.3": + "integrity" "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==" + "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" + "version" "3.4.3" + +"eslint@*", "eslint@^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8", "eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8", "eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", "eslint@^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0", "eslint@^6.0.0 || ^7.0.0 || ^8.0.0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^7.0.0 || ^8.0.0", "eslint@^7.32.0", "eslint@^7.32.0 || ^8.2.0", "eslint@^8.34.0", "eslint@^8.49.0", "eslint@>=7 || >=8", "eslint@>=7.0.0", "eslint@>=8.0.0", "eslint@8.51.0": + "integrity" "sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==" + "resolved" "https://registry.npmjs.org/eslint/-/eslint-8.51.0.tgz" + "version" "8.51.0" + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.2" + "@eslint/js" "8.51.0" + "@humanwhocodes/config-array" "^0.11.11" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + "ajv" "^6.12.4" + "chalk" "^4.0.0" + "cross-spawn" "^7.0.2" + "debug" "^4.3.2" + "doctrine" "^3.0.0" + "escape-string-regexp" "^4.0.0" + "eslint-scope" "^7.2.2" + "eslint-visitor-keys" "^3.4.3" + "espree" "^9.6.1" + "esquery" "^1.4.2" + "esutils" "^2.0.2" + "fast-deep-equal" "^3.1.3" + "file-entry-cache" "^6.0.1" + "find-up" "^5.0.0" + "glob-parent" "^6.0.2" + "globals" "^13.19.0" + "graphemer" "^1.4.0" + "ignore" "^5.2.0" + "imurmurhash" "^0.1.4" + "is-glob" "^4.0.0" + "is-path-inside" "^3.0.3" + "js-yaml" "^4.1.0" + "json-stable-stringify-without-jsonify" "^1.0.1" + "levn" "^0.4.1" + "lodash.merge" "^4.6.2" + "minimatch" "^3.1.2" + "natural-compare" "^1.4.0" + "optionator" "^0.9.3" + "strip-ansi" "^6.0.1" + "text-table" "^0.2.0" + +"espree@^9.6.0", "espree@^9.6.1": + "integrity" "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==" + "resolved" "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz" + "version" "9.6.1" + dependencies: + "acorn" "^8.9.0" + "acorn-jsx" "^5.3.2" + "eslint-visitor-keys" "^3.4.1" + +"esprima@^4.0.0", "esprima@^4.0.1": + "integrity" "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + "resolved" "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" + "version" "4.0.1" + +"esquery@^1.4.2", "esquery@^1.5.0": + "integrity" "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==" + "resolved" "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz" + "version" "1.5.0" + dependencies: + "estraverse" "^5.1.0" + +"esrecurse@^4.3.0": + "integrity" "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==" + "resolved" "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" + "version" "4.3.0" + dependencies: + "estraverse" "^5.2.0" + +"estraverse@^4.1.1": + "integrity" "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" + "version" "4.3.0" + +"estraverse@^5.1.0", "estraverse@^5.2.0", "estraverse@^5.3.0": + "integrity" "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" + "version" "5.3.0" + +"estree-walker@^2.0.2": + "integrity" "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + "resolved" "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz" + "version" "2.0.2" + +"esutils@^2.0.2": + "integrity" "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + "resolved" "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" + "version" "2.0.3" + +"etag@~1.8.1": + "integrity" "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" + "resolved" "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" + "version" "1.8.1" + +"event-target-shim@^5.0.0": + "integrity" "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" + "resolved" "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz" + "version" "5.0.1" + +"eventemitter3@^4.0.0": + "integrity" "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + "resolved" "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" + "version" "4.0.7" + +"events@^3.2.0": + "integrity" "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" + "resolved" "https://registry.npmjs.org/events/-/events-3.3.0.tgz" + "version" "3.3.0" + +"execa@^5.0.0", "execa@^5.1.1": + "integrity" "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==" + "resolved" "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" + "version" "5.1.1" + 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" + +"execa@^7.1.1": + "integrity" "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==" + "resolved" "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz" + "version" "7.2.0" + dependencies: + "cross-spawn" "^7.0.3" + "get-stream" "^6.0.1" + "human-signals" "^4.3.0" + "is-stream" "^3.0.0" + "merge-stream" "^2.0.0" + "npm-run-path" "^5.1.0" + "onetime" "^6.0.0" + "signal-exit" "^3.0.7" + "strip-final-newline" "^3.0.0" + +"exit@^0.1.2": + "integrity" "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==" + "resolved" "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" + "version" "0.1.2" + +"expect@^27.5.1": + "integrity" "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==" + "resolved" "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz" + "version" "27.5.1" + dependencies: + "@jest/types" "^27.5.1" + "jest-get-type" "^27.5.1" + "jest-matcher-utils" "^27.5.1" + "jest-message-util" "^27.5.1" + +"expect@^29.0.0", "expect@^29.7.0": + "integrity" "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==" + "resolved" "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz" + "version" "29.7.0" + dependencies: + "@jest/expect-utils" "^29.7.0" + "jest-get-type" "^29.6.3" + "jest-matcher-utils" "^29.7.0" + "jest-message-util" "^29.7.0" + "jest-util" "^29.7.0" + +"exponential-backoff@^3.1.1": + "integrity" "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==" + "resolved" "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz" + "version" "3.1.1" + +"express@^4.17.3": + "integrity" "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==" + "resolved" "https://registry.npmjs.org/express/-/express-4.18.2.tgz" + "version" "4.18.2" + dependencies: + "accepts" "~1.3.8" + "array-flatten" "1.1.1" + "body-parser" "1.20.1" + "content-disposition" "0.5.4" + "content-type" "~1.0.4" + "cookie" "0.5.0" + "cookie-signature" "1.0.6" + "debug" "2.6.9" + "depd" "2.0.0" + "encodeurl" "~1.0.2" + "escape-html" "~1.0.3" + "etag" "~1.8.1" + "finalhandler" "1.2.0" + "fresh" "0.5.2" + "http-errors" "2.0.0" + "merge-descriptors" "1.0.1" + "methods" "~1.1.2" + "on-finished" "2.4.1" + "parseurl" "~1.3.3" + "path-to-regexp" "0.1.7" + "proxy-addr" "~2.0.7" + "qs" "6.11.0" + "range-parser" "~1.2.1" + "safe-buffer" "5.2.1" + "send" "0.18.0" + "serve-static" "1.15.0" + "setprototypeof" "1.2.0" + "statuses" "2.0.1" + "type-is" "~1.6.18" + "utils-merge" "1.0.1" + "vary" "~1.1.2" + +"extract-zip@^2.0.1": + "integrity" "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==" + "resolved" "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "debug" "^4.1.1" + "get-stream" "^5.1.0" + "yauzl" "^2.10.0" + optionalDependencies: + "@types/yauzl" "^2.9.1" + +"extsprintf@^1.2.0": + "integrity" "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==" + "resolved" "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz" + "version" "1.3.0" + +"fast-deep-equal@^3.1.1", "fast-deep-equal@^3.1.3": + "integrity" "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + "resolved" "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" + "version" "3.1.3" + +"fast-diff@^1.1.2": + "integrity" "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==" + "resolved" "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz" + "version" "1.3.0" + +"fast-glob@^3.2.9", "fast-glob@^3.3.0", "fast-glob@^3.3.1": + "integrity" "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==" + "resolved" "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz" + "version" "3.3.1" + 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" + +"fast-json-stable-stringify@^2.0.0", "fast-json-stable-stringify@^2.1.0", "fast-json-stable-stringify@2.x": + "integrity" "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + "resolved" "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" + "version" "2.1.0" + +"fast-levenshtein@^2.0.6": + "integrity" "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" + "resolved" "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" + "version" "2.0.6" + +"fastest-levenshtein@^1.0.12": + "integrity" "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==" + "resolved" "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz" + "version" "1.0.16" + +"fastq@^1.6.0": + "integrity" "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==" + "resolved" "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz" + "version" "1.15.0" + dependencies: + "reusify" "^1.0.4" + +"faye-websocket@^0.11.3": + "integrity" "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==" + "resolved" "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz" + "version" "0.11.4" + dependencies: + "websocket-driver" ">=0.5.1" + +"fb-watchman@^2.0.0": + "integrity" "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==" + "resolved" "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz" + "version" "2.0.2" + dependencies: + "bser" "2.1.1" + +"fbemitter@^3.0.0": + "integrity" "sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==" + "resolved" "https://registry.npmjs.org/fbemitter/-/fbemitter-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "fbjs" "^3.0.0" + +"fbjs-css-vars@^1.0.0": + "integrity" "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==" + "resolved" "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz" + "version" "1.0.2" + +"fbjs@^3.0.0", "fbjs@^3.0.1": + "integrity" "sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==" + "resolved" "https://registry.npmjs.org/fbjs/-/fbjs-3.0.5.tgz" + "version" "3.0.5" + dependencies: + "cross-fetch" "^3.1.5" + "fbjs-css-vars" "^1.0.0" + "loose-envify" "^1.0.0" + "object-assign" "^4.1.0" + "promise" "^7.1.1" + "setimmediate" "^1.0.5" + "ua-parser-js" "^1.0.35" + +"fd-slicer@~1.1.0": + "integrity" "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==" + "resolved" "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz" + "version" "1.1.0" + dependencies: + "pend" "~1.2.0" + +"file-entry-cache@^6.0.1": + "integrity" "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==" + "resolved" "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" + "version" "6.0.1" + dependencies: + "flat-cache" "^3.0.4" + +"file-loader@*", "file-loader@^6.2.0": + "integrity" "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==" + "resolved" "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz" + "version" "6.2.0" + dependencies: + "loader-utils" "^2.0.0" + "schema-utils" "^3.0.0" + +"filelist@^1.0.4": + "integrity" "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==" + "resolved" "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz" + "version" "1.0.4" + dependencies: + "minimatch" "^5.0.1" + +"fill-range@^7.0.1": + "integrity" "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==" + "resolved" "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" + "version" "7.0.1" + dependencies: + "to-regex-range" "^5.0.1" + +"finalhandler@1.2.0": + "integrity" "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==" + "resolved" "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz" + "version" "1.2.0" + dependencies: + "debug" "2.6.9" + "encodeurl" "~1.0.2" + "escape-html" "~1.0.3" + "on-finished" "2.4.1" + "parseurl" "~1.3.3" + "statuses" "2.0.1" + "unpipe" "~1.0.0" + +"find-root@^1.1.0": + "integrity" "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" + "resolved" "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz" + "version" "1.1.0" + +"find-up@^4.0.0": + "integrity" "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==" + "resolved" "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "locate-path" "^5.0.0" + "path-exists" "^4.0.0" + +"find-up@^4.1.0": + "integrity" "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==" + "resolved" "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "locate-path" "^5.0.0" + "path-exists" "^4.0.0" + +"find-up@^5.0.0": + "integrity" "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==" + "resolved" "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "locate-path" "^6.0.0" + "path-exists" "^4.0.0" + +"flat-cache@^3.0.4": + "integrity" "sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==" + "resolved" "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "flatted" "^3.2.7" + "keyv" "^4.5.3" + "rimraf" "^3.0.2" + +"flatted@^3.2.7": + "integrity" "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==" + "resolved" "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz" + "version" "3.2.9" + +"flux@^4.0.1": + "integrity" "sha512-NCj3XlayA2UsapRpM7va6wU1+9rE5FIL7qoMcmxWHRzbp0yujihMBm9BBHZ1MDIk5h5o2Bl6eGiCe8rYELAmYw==" + "resolved" "https://registry.npmjs.org/flux/-/flux-4.0.4.tgz" + "version" "4.0.4" + dependencies: + "fbemitter" "^3.0.0" + "fbjs" "^3.0.1" + +"follow-redirects@^1.0.0", "follow-redirects@^1.14.0", "follow-redirects@^1.14.9": + "integrity" "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==" + "resolved" "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz" + "version" "1.15.3" + +"for-each@^0.3.3": + "integrity" "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==" + "resolved" "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz" + "version" "0.3.3" + dependencies: + "is-callable" "^1.1.3" + +"foreground-child@^3.1.0": + "integrity" "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==" + "resolved" "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz" + "version" "3.1.1" + dependencies: + "cross-spawn" "^7.0.0" + "signal-exit" "^4.0.1" + +"form-data@^4.0.0": + "integrity" "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==" + "resolved" "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "asynckit" "^0.4.0" + "combined-stream" "^1.0.8" + "mime-types" "^2.1.12" + +"forwarded@0.2.0": + "integrity" "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" + "resolved" "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" + "version" "0.2.0" + +"fresh@0.5.2": + "integrity" "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" + "resolved" "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" + "version" "0.5.2" + +"fs-extra@^10.0.0", "fs-extra@^10.1.0": + "integrity" "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==" + "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz" + "version" "10.1.0" + dependencies: + "graceful-fs" "^4.2.0" + "jsonfile" "^6.0.1" + "universalify" "^2.0.0" + +"fs-extra@^8.1.0": + "integrity" "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==" + "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz" + "version" "8.1.0" + dependencies: + "graceful-fs" "^4.2.0" + "jsonfile" "^4.0.0" + "universalify" "^0.1.0" + +"fs-extra@^9.0.0": + "integrity" "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==" + "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" + "version" "9.1.0" + dependencies: + "at-least-node" "^1.0.0" + "graceful-fs" "^4.2.0" + "jsonfile" "^6.0.1" + "universalify" "^2.0.0" + +"fs-extra@^9.0.1": + "integrity" "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==" + "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" + "version" "9.1.0" + dependencies: + "at-least-node" "^1.0.0" + "graceful-fs" "^4.2.0" + "jsonfile" "^6.0.1" + "universalify" "^2.0.0" + +"fs-minipass@^2.0.0": + "integrity" "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==" + "resolved" "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "minipass" "^3.0.0" + +"fs-minipass@^3.0.0": + "integrity" "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==" + "resolved" "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz" + "version" "3.0.3" + dependencies: + "minipass" "^7.0.3" + +"fs-monkey@^1.0.4": + "integrity" "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==" + "resolved" "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz" + "version" "1.0.5" + +"fs.realpath@^1.0.0": + "integrity" "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + "resolved" "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + "version" "1.0.0" + +"fsevents@^2.3.2", "fsevents@~2.3.2": + "integrity" "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==" + "resolved" "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz" + "version" "2.3.3" + +"function-bind@^1.1.1": + "integrity" "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "resolved" "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" + "version" "1.1.1" + +"function.prototype.name@^1.1.5", "function.prototype.name@^1.1.6": + "integrity" "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==" + "resolved" "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz" + "version" "1.1.6" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.2.0" + "es-abstract" "^1.22.1" + "functions-have-names" "^1.2.3" + +"functions-have-names@^1.2.3": + "integrity" "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" + "resolved" "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" + "version" "1.2.3" + +"gauge@^4.0.3": + "integrity" "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==" + "resolved" "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz" + "version" "4.0.4" + 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" + +"gensync@^1.0.0-beta.2": + "integrity" "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" + "resolved" "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" + "version" "1.0.0-beta.2" + +"get-caller-file@^2.0.5": + "integrity" "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + "resolved" "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" + "version" "2.0.5" + +"get-intrinsic@^1.0.2", "get-intrinsic@^1.1.1", "get-intrinsic@^1.1.3", "get-intrinsic@^1.2.0", "get-intrinsic@^1.2.1": + "integrity" "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==" + "resolved" "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz" + "version" "1.2.1" + dependencies: + "function-bind" "^1.1.1" + "has" "^1.0.3" + "has-proto" "^1.0.1" + "has-symbols" "^1.0.3" + +"get-package-type@^0.1.0": + "integrity" "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==" + "resolved" "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz" + "version" "0.1.0" + +"get-stream@^5.1.0": + "integrity" "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==" + "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz" + "version" "5.2.0" + dependencies: + "pump" "^3.0.0" + +"get-stream@^6.0.0", "get-stream@^6.0.1": + "integrity" "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" + "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" + "version" "6.0.1" + +"get-symbol-description@^1.0.0": + "integrity" "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==" + "resolved" "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "call-bind" "^1.0.2" + "get-intrinsic" "^1.1.1" + +"get-tsconfig@^4.5.0": + "integrity" "sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==" + "resolved" "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.2.tgz" + "version" "4.7.2" + dependencies: + "resolve-pkg-maps" "^1.0.0" + +"glob-parent@^5.1.2", "glob-parent@~5.1.2": + "integrity" "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==" + "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + "version" "5.1.2" + dependencies: + "is-glob" "^4.0.1" + +"glob-parent@^6.0.2": + "integrity" "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==" + "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" + "version" "6.0.2" + dependencies: + "is-glob" "^4.0.3" + +"glob-to-regexp@^0.4.1": + "integrity" "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + "resolved" "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" + "version" "0.4.1" + +"glob@^10.2.2": + "integrity" "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==" + "resolved" "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz" + "version" "10.3.10" + dependencies: + "foreground-child" "^3.1.0" + "jackspeak" "^2.3.5" + "minimatch" "^9.0.1" + "minipass" "^5.0.0 || ^6.0.2 || ^7.0.0" + "path-scurry" "^1.10.1" + +"glob@^10.3.7": + "integrity" "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==" + "resolved" "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz" + "version" "10.3.10" + dependencies: + "foreground-child" "^3.1.0" + "jackspeak" "^2.3.5" + "minimatch" "^9.0.1" + "minipass" "^5.0.0 || ^6.0.2 || ^7.0.0" + "path-scurry" "^1.10.1" + +"glob@^7.1.3", "glob@^7.1.4", "glob@^7.1.6": + "integrity" "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==" + "resolved" "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + "version" "7.2.3" + dependencies: + "fs.realpath" "^1.0.0" + "inflight" "^1.0.4" + "inherits" "2" + "minimatch" "^3.1.1" + "once" "^1.3.0" + "path-is-absolute" "^1.0.0" + +"global-agent@^3.0.0": + "integrity" "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==" + "resolved" "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "boolean" "^3.0.1" + "es6-error" "^4.1.1" + "matcher" "^3.0.0" + "roarr" "^2.15.3" + "semver" "^7.3.2" + "serialize-error" "^7.0.1" + +"globals@^11.1.0": + "integrity" "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + "resolved" "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" + "version" "11.12.0" + +"globals@^13.19.0": + "integrity" "sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw==" + "resolved" "https://registry.npmjs.org/globals/-/globals-13.22.0.tgz" + "version" "13.22.0" + dependencies: + "type-fest" "^0.20.2" + +"globalthis@^1.0.1", "globalthis@^1.0.3": + "integrity" "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==" + "resolved" "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz" + "version" "1.0.3" + dependencies: + "define-properties" "^1.1.3" + +"globby@^11.1.0": + "integrity" "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==" + "resolved" "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" + "version" "11.1.0" + 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" + +"goober@^2.1.10": + "integrity" "sha512-jFj3BQeleOoy7t93E9rZ2de+ScC4lQICLwiAQmKMg9F6roKGaLSHoCDYKkWlSafg138jejvq/mTdvmnwDQgqoQ==" + "resolved" "https://registry.npmjs.org/goober/-/goober-2.1.13.tgz" + "version" "2.1.13" + +"gopd@^1.0.1": + "integrity" "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==" + "resolved" "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "get-intrinsic" "^1.1.3" + +"got@^11.7.0": + "integrity" "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==" + "resolved" "https://registry.npmjs.org/got/-/got-11.8.6.tgz" + "version" "11.8.6" + dependencies: + "@sindresorhus/is" "^4.0.0" + "@szmarczak/http-timer" "^4.0.5" + "@types/cacheable-request" "^6.0.1" + "@types/responselike" "^1.0.0" + "cacheable-lookup" "^5.0.3" + "cacheable-request" "^7.0.2" + "decompress-response" "^6.0.0" + "http2-wrapper" "^1.0.0-beta.5.2" + "lowercase-keys" "^2.0.0" + "p-cancelable" "^2.0.0" + "responselike" "^2.0.0" + +"got@^11.8.5": + "integrity" "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==" + "resolved" "https://registry.npmjs.org/got/-/got-11.8.6.tgz" + "version" "11.8.6" + dependencies: + "@sindresorhus/is" "^4.0.0" + "@szmarczak/http-timer" "^4.0.5" + "@types/cacheable-request" "^6.0.1" + "@types/responselike" "^1.0.0" + "cacheable-lookup" "^5.0.3" + "cacheable-request" "^7.0.2" + "decompress-response" "^6.0.0" + "http2-wrapper" "^1.0.0-beta.5.2" + "lowercase-keys" "^2.0.0" + "p-cancelable" "^2.0.0" + "responselike" "^2.0.0" + +"graceful-fs@^4.1.2", "graceful-fs@^4.1.6", "graceful-fs@^4.2.0", "graceful-fs@^4.2.4", "graceful-fs@^4.2.6", "graceful-fs@^4.2.9": + "integrity" "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + "resolved" "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" + "version" "4.2.11" + +"graphemer@^1.4.0": + "integrity" "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==" + "resolved" "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz" + "version" "1.4.0" + +"gzip-size@^6.0.0": + "integrity" "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==" + "resolved" "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "duplexer" "^0.1.2" + +"handle-thing@^2.0.0": + "integrity" "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" + "resolved" "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz" + "version" "2.0.1" + +"harmony-reflect@^1.4.6": + "integrity" "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==" + "resolved" "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz" + "version" "1.6.2" + +"has-bigints@^1.0.1", "has-bigints@^1.0.2": + "integrity" "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" + "resolved" "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz" + "version" "1.0.2" + +"has-flag@^3.0.0": + "integrity" "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" + "version" "3.0.0" + +"has-flag@^4.0.0": + "integrity" "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" + "version" "4.0.0" + +"has-property-descriptors@^1.0.0": + "integrity" "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==" + "resolved" "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "get-intrinsic" "^1.1.1" + +"has-proto@^1.0.1": + "integrity" "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" + "resolved" "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz" + "version" "1.0.1" + +"has-symbols@^1.0.2", "has-symbols@^1.0.3": + "integrity" "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + "resolved" "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" + "version" "1.0.3" + +"has-tostringtag@^1.0.0": + "integrity" "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==" + "resolved" "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "has-symbols" "^1.0.2" + +"has-unicode@^2.0.1": + "integrity" "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" + "resolved" "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz" + "version" "2.0.1" + +"has@^1.0.3": + "integrity" "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==" + "resolved" "https://registry.npmjs.org/has/-/has-1.0.4.tgz" + "version" "1.0.4" + +"hash.js@^1.0.0", "hash.js@^1.0.3": + "integrity" "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==" + "resolved" "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz" + "version" "1.1.7" + dependencies: + "inherits" "^2.0.3" + "minimalistic-assert" "^1.0.1" + +"he@^1.2.0": + "integrity" "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" + "resolved" "https://registry.npmjs.org/he/-/he-1.2.0.tgz" + "version" "1.2.0" + +"hmac-drbg@^1.0.1": + "integrity" "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==" + "resolved" "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "hash.js" "^1.0.3" + "minimalistic-assert" "^1.0.0" + "minimalistic-crypto-utils" "^1.0.1" + +"hosted-git-info@^4.1.0": + "integrity" "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==" + "resolved" "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "lru-cache" "^6.0.0" + +"hpack.js@^2.1.6": + "integrity" "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==" + "resolved" "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz" + "version" "2.1.6" + dependencies: + "inherits" "^2.0.1" + "obuf" "^1.0.0" + "readable-stream" "^2.0.1" + "wbuf" "^1.1.0" + +"html-encoding-sniffer@^3.0.0": + "integrity" "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==" + "resolved" "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "whatwg-encoding" "^2.0.0" + +"html-entities@^2.1.0", "html-entities@^2.3.2": + "integrity" "sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==" + "resolved" "https://registry.npmjs.org/html-entities/-/html-entities-2.4.0.tgz" + "version" "2.4.0" + +"html-escaper@^2.0.0": + "integrity" "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==" + "resolved" "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz" + "version" "2.0.2" + +"html-minifier-terser@^6.0.2": + "integrity" "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==" + "resolved" "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz" + "version" "6.1.0" + dependencies: + "camel-case" "^4.1.2" + "clean-css" "^5.2.2" + "commander" "^8.3.0" + "he" "^1.2.0" + "param-case" "^3.0.4" + "relateurl" "^0.2.7" + "terser" "^5.10.0" + +"html-webpack-plugin@^5.5.3": + "integrity" "sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==" + "resolved" "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz" + "version" "5.5.3" + dependencies: + "@types/html-minifier-terser" "^6.0.0" + "html-minifier-terser" "^6.0.2" + "lodash" "^4.17.21" + "pretty-error" "^4.0.0" + "tapable" "^2.0.0" + +"htmlparser2@^6.1.0": + "integrity" "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==" + "resolved" "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz" + "version" "6.1.0" + dependencies: + "domelementtype" "^2.0.1" + "domhandler" "^4.0.0" + "domutils" "^2.5.2" + "entities" "^2.0.0" + +"http-cache-semantics@^4.0.0", "http-cache-semantics@^4.1.1": + "integrity" "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" + "resolved" "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz" + "version" "4.1.1" + +"http-deceiver@^1.2.7": + "integrity" "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==" + "resolved" "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz" + "version" "1.2.7" + +"http-errors@~1.6.2": + "integrity" "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==" + "resolved" "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" + "version" "1.6.3" + dependencies: + "depd" "~1.1.2" + "inherits" "2.0.3" + "setprototypeof" "1.1.0" + "statuses" ">= 1.4.0 < 2" + +"http-errors@2.0.0": + "integrity" "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==" + "resolved" "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "depd" "2.0.0" + "inherits" "2.0.4" + "setprototypeof" "1.2.0" + "statuses" "2.0.1" + "toidentifier" "1.0.1" + +"http-parser-js@>=0.5.1": + "integrity" "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==" + "resolved" "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz" + "version" "0.5.8" + +"http-proxy-agent@^5.0.0": + "integrity" "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==" + "resolved" "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "@tootallnate/once" "2" + "agent-base" "6" + "debug" "4" + +"http-proxy-middleware@^2.0.3": + "integrity" "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==" + "resolved" "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz" + "version" "2.0.6" + 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" + +"http-proxy@^1.18.1": + "integrity" "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==" + "resolved" "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz" + "version" "1.18.1" + dependencies: + "eventemitter3" "^4.0.0" + "follow-redirects" "^1.0.0" + "requires-port" "^1.0.0" + +"http2-wrapper@^1.0.0-beta.5.2": + "integrity" "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==" + "resolved" "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz" + "version" "1.0.3" + dependencies: + "quick-lru" "^5.1.1" + "resolve-alpn" "^1.0.0" + +"https-proxy-agent@^5.0.0", "https-proxy-agent@^5.0.1": + "integrity" "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==" + "resolved" "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" + "version" "5.0.1" + dependencies: + "agent-base" "6" + "debug" "4" + +"human-signals@^2.1.0": + "integrity" "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" + "resolved" "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" + "version" "2.1.0" + +"human-signals@^4.3.0": + "integrity" "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==" + "resolved" "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz" + "version" "4.3.1" + +"humanize-ms@^1.2.1": + "integrity" "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==" + "resolved" "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz" + "version" "1.2.1" + dependencies: + "ms" "^2.0.0" + +"husky@^7.0.2", "husky@^8.0.1": + "integrity" "sha512-xs7/chUH/CKdOCs7Zy0Aev9e/dKOMZf3K1Az1nar3tzlv0jfqnYtu235bstsWTmXOR0EfINrPa97yy4Lz6RiKw==" + "resolved" "https://registry.npmjs.org/husky/-/husky-8.0.1.tgz" + "version" "8.0.1" + +"iconv-corefoundation@^1.1.7": + "integrity" "sha512-T10qvkw0zz4wnm560lOEg0PovVqUXuOFhhHAkixw8/sycy7TJt7v/RrkEKEQnAw2viPSJu6iAkErxnzR0g8PpQ==" + "resolved" "https://registry.npmjs.org/iconv-corefoundation/-/iconv-corefoundation-1.1.7.tgz" + "version" "1.1.7" + dependencies: + "cli-truncate" "^2.1.0" + "node-addon-api" "^1.6.3" + +"iconv-lite@^0.6.2": + "integrity" "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==" + "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" + "version" "0.6.3" + dependencies: + "safer-buffer" ">= 2.1.2 < 3.0.0" + +"iconv-lite@0.4.24": + "integrity" "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==" + "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" + "version" "0.4.24" + dependencies: + "safer-buffer" ">= 2.1.2 < 3" + +"iconv-lite@0.6.3": + "integrity" "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==" + "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" + "version" "0.6.3" + dependencies: + "safer-buffer" ">= 2.1.2 < 3.0.0" + +"icss-utils@^5.0.0", "icss-utils@^5.1.0": + "integrity" "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==" + "resolved" "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz" + "version" "5.1.0" + +"identity-obj-proxy@^3.0.0": + "integrity" "sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==" + "resolved" "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "harmony-reflect" "^1.4.6" + +"ieee754@^1.1.13", "ieee754@^1.2.1": + "integrity" "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + "resolved" "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" + "version" "1.2.1" + +"ignore@^5.2.0", "ignore@^5.2.4": + "integrity" "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==" + "resolved" "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz" + "version" "5.2.4" + +"immediate@~3.0.5": + "integrity" "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" + "resolved" "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz" + "version" "3.0.6" + +"immutable@^4.0.0": + "integrity" "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==" + "resolved" "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz" + "version" "4.3.4" + +"import-fresh@^3.2.1", "import-fresh@^3.3.0": + "integrity" "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==" + "resolved" "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" "version" "3.3.0" dependencies: "parent-module" "^1.0.0" "resolve-from" "^4.0.0" +"import-from@^3.0.0": + "integrity" "sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==" + "resolved" "https://registry.npmjs.org/import-from/-/import-from-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "resolve-from" "^5.0.0" + +"import-local@^3.0.2": + "integrity" "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==" + "resolved" "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "pkg-dir" "^4.2.0" + "resolve-cwd" "^3.0.0" + "imurmurhash@^0.1.4": "integrity" "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" "resolved" "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" @@ -1281,57 +6695,534 @@ "once" "^1.3.0" "wrappy" "1" -"inherits@^2.0.3", "inherits@^2.0.4", "inherits@2": +"inherits@^2.0.1", "inherits@^2.0.3", "inherits@^2.0.4", "inherits@~2.0.3", "inherits@2", "inherits@2.0.4": "integrity" "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" "version" "2.0.4" +"inherits@2.0.3": + "integrity" "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" + "version" "2.0.3" + +"internal-slot@^1.0.4", "internal-slot@^1.0.5": + "integrity" "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==" + "resolved" "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz" + "version" "1.0.5" + dependencies: + "get-intrinsic" "^1.2.0" + "has" "^1.0.3" + "side-channel" "^1.0.4" + +"interpret@^1.4.0": + "integrity" "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" + "resolved" "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz" + "version" "1.4.0" + +"interpret@^3.1.1": + "integrity" "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==" + "resolved" "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz" + "version" "3.1.1" + +"ip@^2.0.0": + "integrity" "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" + "resolved" "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz" + "version" "2.0.0" + +"ipaddr.js@^2.0.1": + "integrity" "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==" + "resolved" "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz" + "version" "2.1.0" + +"ipaddr.js@1.9.1": + "integrity" "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + "resolved" "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" + "version" "1.9.1" + +"is-arguments@^1.1.1": + "integrity" "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==" + "resolved" "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz" + "version" "1.1.1" + dependencies: + "call-bind" "^1.0.2" + "has-tostringtag" "^1.0.0" + +"is-array-buffer@^3.0.1", "is-array-buffer@^3.0.2": + "integrity" "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==" + "resolved" "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz" + "version" "3.0.2" + dependencies: + "call-bind" "^1.0.2" + "get-intrinsic" "^1.2.0" + "is-typed-array" "^1.1.10" + +"is-arrayish@^0.2.1": + "integrity" "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + "resolved" "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" + "version" "0.2.1" + +"is-async-function@^2.0.0": + "integrity" "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==" + "resolved" "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "has-tostringtag" "^1.0.0" + +"is-bigint@^1.0.1": + "integrity" "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==" + "resolved" "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz" + "version" "1.0.4" + dependencies: + "has-bigints" "^1.0.1" + +"is-binary-path@~2.1.0": + "integrity" "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==" + "resolved" "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "binary-extensions" "^2.0.0" + +"is-boolean-object@^1.1.0": + "integrity" "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==" + "resolved" "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz" + "version" "1.1.2" + dependencies: + "call-bind" "^1.0.2" + "has-tostringtag" "^1.0.0" + +"is-callable@^1.1.3", "is-callable@^1.1.4", "is-callable@^1.2.7": + "integrity" "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" + "resolved" "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz" + "version" "1.2.7" + +"is-ci@^3.0.0": + "integrity" "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==" + "resolved" "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "ci-info" "^3.2.0" + +"is-core-module@^2.11.0", "is-core-module@^2.13.0", "is-core-module@^2.9.0": + "integrity" "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==" + "resolved" "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz" + "version" "2.13.0" + dependencies: + "has" "^1.0.3" + +"is-date-object@^1.0.1", "is-date-object@^1.0.5": + "integrity" "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==" + "resolved" "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz" + "version" "1.0.5" + dependencies: + "has-tostringtag" "^1.0.0" + +"is-docker@^2.0.0", "is-docker@^2.1.1": + "integrity" "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==" + "resolved" "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" + "version" "2.2.1" + +"is-docker@^3.0.0": + "integrity" "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==" + "resolved" "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz" + "version" "3.0.0" + "is-extglob@^2.1.1": "integrity" "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" "resolved" "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" "version" "2.1.1" +"is-finalizationregistry@^1.0.2": + "integrity" "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==" + "resolved" "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "call-bind" "^1.0.2" + "is-fullwidth-code-point@^3.0.0": "integrity" "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" "version" "3.0.0" -"is-fullwidth-code-point@^4.0.0": - "integrity" "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==" - "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz" - "version" "4.0.0" +"is-fullwidth-code-point@^4.0.0": + "integrity" "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==" + "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz" + "version" "4.0.0" + +"is-generator-fn@^2.0.0": + "integrity" "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==" + "resolved" "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz" + "version" "2.1.0" + +"is-generator-function@^1.0.10": + "integrity" "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==" + "resolved" "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz" + "version" "1.0.10" + dependencies: + "has-tostringtag" "^1.0.0" + +"is-glob@^4.0.0", "is-glob@^4.0.1", "is-glob@^4.0.3", "is-glob@~4.0.1": + "integrity" "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==" + "resolved" "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" + "version" "4.0.3" + dependencies: + "is-extglob" "^2.1.1" + +"is-inside-container@^1.0.0": + "integrity" "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==" + "resolved" "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "is-docker" "^3.0.0" + +"is-interactive@^1.0.0": + "integrity" "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==" + "resolved" "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz" + "version" "1.0.0" + +"is-lambda@^1.0.1": + "integrity" "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==" + "resolved" "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz" + "version" "1.0.1" + +"is-map@^2.0.1", "is-map@^2.0.2": + "integrity" "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==" + "resolved" "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz" + "version" "2.0.2" + +"is-negative-zero@^2.0.2": + "integrity" "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" + "resolved" "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz" + "version" "2.0.2" + +"is-number-object@^1.0.4": + "integrity" "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==" + "resolved" "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz" + "version" "1.0.7" + dependencies: + "has-tostringtag" "^1.0.0" + +"is-number@^7.0.0": + "integrity" "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + "resolved" "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" + "version" "7.0.0" + +"is-path-inside@^3.0.3": + "integrity" "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" + "resolved" "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" + "version" "3.0.3" + +"is-plain-obj@^3.0.0": + "integrity" "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==" + "resolved" "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz" + "version" "3.0.0" + +"is-plain-object@^2.0.4": + "integrity" "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==" + "resolved" "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" + "version" "2.0.4" + dependencies: + "isobject" "^3.0.1" + +"is-plain-object@^5.0.0": + "integrity" "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" + "resolved" "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz" + "version" "5.0.0" + +"is-potential-custom-element-name@^1.0.1": + "integrity" "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" + "resolved" "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz" + "version" "1.0.1" + +"is-regex@^1.1.4": + "integrity" "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==" + "resolved" "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz" + "version" "1.1.4" + dependencies: + "call-bind" "^1.0.2" + "has-tostringtag" "^1.0.0" + +"is-set@^2.0.1", "is-set@^2.0.2": + "integrity" "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==" + "resolved" "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz" + "version" "2.0.2" + +"is-shared-array-buffer@^1.0.2": + "integrity" "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==" + "resolved" "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "call-bind" "^1.0.2" + +"is-stream@^2.0.0": + "integrity" "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" + "resolved" "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" + "version" "2.0.1" + +"is-stream@^3.0.0": + "integrity" "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==" + "resolved" "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz" + "version" "3.0.0" + +"is-string@^1.0.5", "is-string@^1.0.7": + "integrity" "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==" + "resolved" "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz" + "version" "1.0.7" + dependencies: + "has-tostringtag" "^1.0.0" + +"is-symbol@^1.0.2", "is-symbol@^1.0.3": + "integrity" "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==" + "resolved" "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz" + "version" "1.0.4" + dependencies: + "has-symbols" "^1.0.2" + +"is-typed-array@^1.1.10", "is-typed-array@^1.1.12", "is-typed-array@^1.1.9": + "integrity" "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==" + "resolved" "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz" + "version" "1.1.12" + dependencies: + "which-typed-array" "^1.1.11" + +"is-unicode-supported@^0.1.0": + "integrity" "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==" + "resolved" "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" + "version" "0.1.0" + +"is-weakmap@^2.0.1": + "integrity" "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==" + "resolved" "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz" + "version" "2.0.1" + +"is-weakref@^1.0.2": + "integrity" "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==" + "resolved" "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "call-bind" "^1.0.2" + +"is-weakset@^2.0.1": + "integrity" "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==" + "resolved" "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz" + "version" "2.0.2" + dependencies: + "call-bind" "^1.0.2" + "get-intrinsic" "^1.1.1" + +"is-wsl@^2.2.0": + "integrity" "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==" + "resolved" "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" + "version" "2.2.0" + dependencies: + "is-docker" "^2.0.0" + +"isarray@^2.0.5": + "integrity" "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + "resolved" "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz" + "version" "2.0.5" + +"isarray@~1.0.0": + "integrity" "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + "resolved" "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + "version" "1.0.0" + +"isbinaryfile@^4.0.8": + "integrity" "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==" + "resolved" "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz" + "version" "4.0.10" + +"isbinaryfile@^5.0.0": + "integrity" "sha512-UDdnyGvMajJUWCkib7Cei/dvyJrrvo4FIrsvSFWdPpXSUorzXrDJ0S+X5Q4ZlasfPjca4yqCNNsjbCeiy8FFeg==" + "resolved" "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-5.0.0.tgz" + "version" "5.0.0" + +"isexe@^2.0.0": + "integrity" "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + "resolved" "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + "version" "2.0.0" + +"isobject@^3.0.1": + "integrity" "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==" + "resolved" "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" + "version" "3.0.1" + +"istanbul-lib-coverage@^3.0.0", "istanbul-lib-coverage@^3.2.0": + "integrity" "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==" + "resolved" "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz" + "version" "3.2.0" + +"istanbul-lib-instrument@^5.0.4": + "integrity" "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==" + "resolved" "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz" + "version" "5.2.1" + 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" + +"istanbul-lib-instrument@^6.0.0": + "integrity" "sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==" + "resolved" "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz" + "version" "6.0.1" + dependencies: + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + "istanbul-lib-coverage" "^3.2.0" + "semver" "^7.5.4" + +"istanbul-lib-report@^3.0.0": + "integrity" "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==" + "resolved" "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "istanbul-lib-coverage" "^3.0.0" + "make-dir" "^4.0.0" + "supports-color" "^7.1.0" + +"istanbul-lib-source-maps@^4.0.0": + "integrity" "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==" + "resolved" "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz" + "version" "4.0.1" + dependencies: + "debug" "^4.1.1" + "istanbul-lib-coverage" "^3.0.0" + "source-map" "^0.6.1" + +"istanbul-reports@^3.1.3": + "integrity" "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==" + "resolved" "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz" + "version" "3.1.6" + dependencies: + "html-escaper" "^2.0.0" + "istanbul-lib-report" "^3.0.0" + +"iterare@1.2.1": + "integrity" "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==" + "resolved" "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz" + "version" "1.2.1" + +"iterator.prototype@^1.1.2": + "integrity" "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==" + "resolved" "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz" + "version" "1.1.2" + dependencies: + "define-properties" "^1.2.1" + "get-intrinsic" "^1.2.1" + "has-symbols" "^1.0.3" + "reflect.getprototypeof" "^1.0.4" + "set-function-name" "^2.0.1" + +"jackspeak@^2.3.5": + "integrity" "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==" + "resolved" "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz" + "version" "2.3.6" + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" -"is-glob@^4.0.0", "is-glob@^4.0.1", "is-glob@^4.0.3": - "integrity" "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==" - "resolved" "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" - "version" "4.0.3" +"jake@^10.8.5": + "integrity" "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==" + "resolved" "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz" + "version" "10.8.7" dependencies: - "is-extglob" "^2.1.1" + "async" "^3.2.3" + "chalk" "^4.0.2" + "filelist" "^1.0.4" + "minimatch" "^3.1.2" -"is-number@^7.0.0": - "integrity" "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - "resolved" "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" - "version" "7.0.0" +"jest-changed-files@^29.7.0": + "integrity" "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==" + "resolved" "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz" + "version" "29.7.0" + dependencies: + "execa" "^5.0.0" + "jest-util" "^29.7.0" + "p-limit" "^3.1.0" -"is-path-inside@^3.0.3": - "integrity" "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" - "resolved" "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" - "version" "3.0.3" +"jest-circus@^29.7.0": + "integrity" "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==" + "resolved" "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz" + "version" "29.7.0" + dependencies: + "@jest/environment" "^29.7.0" + "@jest/expect" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + "chalk" "^4.0.0" + "co" "^4.6.0" + "dedent" "^1.0.0" + "is-generator-fn" "^2.0.0" + "jest-each" "^29.7.0" + "jest-matcher-utils" "^29.7.0" + "jest-message-util" "^29.7.0" + "jest-runtime" "^29.7.0" + "jest-snapshot" "^29.7.0" + "jest-util" "^29.7.0" + "p-limit" "^3.1.0" + "pretty-format" "^29.7.0" + "pure-rand" "^6.0.0" + "slash" "^3.0.0" + "stack-utils" "^2.0.3" -"is-stream@^2.0.0": - "integrity" "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" - "resolved" "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" - "version" "2.0.1" +"jest-cli@^29.7.0": + "integrity" "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==" + "resolved" "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz" + "version" "29.7.0" + dependencies: + "@jest/core" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" + "chalk" "^4.0.0" + "create-jest" "^29.7.0" + "exit" "^0.1.2" + "import-local" "^3.0.2" + "jest-config" "^29.7.0" + "jest-util" "^29.7.0" + "jest-validate" "^29.7.0" + "yargs" "^17.3.1" -"isexe@^2.0.0": - "integrity" "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - "resolved" "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" - "version" "2.0.0" +"jest-config@^29.7.0": + "integrity" "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==" + "resolved" "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz" + "version" "29.7.0" + dependencies: + "@babel/core" "^7.11.6" + "@jest/test-sequencer" "^29.7.0" + "@jest/types" "^29.6.3" + "babel-jest" "^29.7.0" + "chalk" "^4.0.0" + "ci-info" "^3.2.0" + "deepmerge" "^4.2.2" + "glob" "^7.1.3" + "graceful-fs" "^4.2.9" + "jest-circus" "^29.7.0" + "jest-environment-node" "^29.7.0" + "jest-get-type" "^29.6.3" + "jest-regex-util" "^29.6.3" + "jest-resolve" "^29.7.0" + "jest-runner" "^29.7.0" + "jest-util" "^29.7.0" + "jest-validate" "^29.7.0" + "micromatch" "^4.0.4" + "parse-json" "^5.2.0" + "pretty-format" "^29.7.0" + "slash" "^3.0.0" + "strip-json-comments" "^3.1.1" -"iterare@1.2.1": - "integrity" "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==" - "resolved" "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz" - "version" "1.2.1" +"jest-diff@^27.5.1": + "integrity" "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==" + "resolved" "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz" + "version" "27.5.1" + dependencies: + "chalk" "^4.0.0" + "diff-sequences" "^27.5.1" + "jest-get-type" "^27.5.1" + "pretty-format" "^27.5.1" "jest-diff@^29.7.0": "integrity" "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==" @@ -1343,11 +7234,117 @@ "jest-get-type" "^29.6.3" "pretty-format" "^29.7.0" +"jest-docblock@^29.7.0": + "integrity" "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==" + "resolved" "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz" + "version" "29.7.0" + dependencies: + "detect-newline" "^3.0.0" + +"jest-each@^29.7.0": + "integrity" "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==" + "resolved" "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz" + "version" "29.7.0" + dependencies: + "@jest/types" "^29.6.3" + "chalk" "^4.0.0" + "jest-get-type" "^29.6.3" + "jest-util" "^29.7.0" + "pretty-format" "^29.7.0" + +"jest-environment-jsdom@^29.7.0": + "integrity" "sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==" + "resolved" "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz" + "version" "29.7.0" + dependencies: + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/jsdom" "^20.0.0" + "@types/node" "*" + "jest-mock" "^29.7.0" + "jest-util" "^29.7.0" + "jsdom" "^20.0.0" + +"jest-environment-node@^29.7.0": + "integrity" "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==" + "resolved" "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz" + "version" "29.7.0" + dependencies: + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + "jest-mock" "^29.7.0" + "jest-util" "^29.7.0" + +"jest-get-type@^27.5.1": + "integrity" "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==" + "resolved" "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz" + "version" "27.5.1" + "jest-get-type@^29.6.3": "integrity" "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==" "resolved" "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz" "version" "29.6.3" +"jest-haste-map@^27.5.1": + "integrity" "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==" + "resolved" "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz" + "version" "27.5.1" + dependencies: + "@jest/types" "^27.5.1" + "@types/graceful-fs" "^4.1.2" + "@types/node" "*" + "anymatch" "^3.0.3" + "fb-watchman" "^2.0.0" + "graceful-fs" "^4.2.9" + "jest-regex-util" "^27.5.1" + "jest-serializer" "^27.5.1" + "jest-util" "^27.5.1" + "jest-worker" "^27.5.1" + "micromatch" "^4.0.4" + "walker" "^1.0.7" + optionalDependencies: + "fsevents" "^2.3.2" + +"jest-haste-map@^29.7.0": + "integrity" "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==" + "resolved" "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz" + "version" "29.7.0" + dependencies: + "@jest/types" "^29.6.3" + "@types/graceful-fs" "^4.1.3" + "@types/node" "*" + "anymatch" "^3.0.3" + "fb-watchman" "^2.0.0" + "graceful-fs" "^4.2.9" + "jest-regex-util" "^29.6.3" + "jest-util" "^29.7.0" + "jest-worker" "^29.7.0" + "micromatch" "^4.0.4" + "walker" "^1.0.8" + optionalDependencies: + "fsevents" "^2.3.2" + +"jest-leak-detector@^29.7.0": + "integrity" "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==" + "resolved" "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz" + "version" "29.7.0" + dependencies: + "jest-get-type" "^29.6.3" + "pretty-format" "^29.7.0" + +"jest-matcher-utils@^27.5.1": + "integrity" "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==" + "resolved" "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz" + "version" "27.5.1" + dependencies: + "chalk" "^4.0.0" + "jest-diff" "^27.5.1" + "jest-get-type" "^27.5.1" + "pretty-format" "^27.5.1" + "jest-matcher-utils@^29.7.0": "integrity" "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==" "resolved" "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz" @@ -1358,32 +7355,308 @@ "jest-get-type" "^29.6.3" "pretty-format" "^29.7.0" +"jest-message-util@^27.5.1": + "integrity" "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==" + "resolved" "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz" + "version" "27.5.1" + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^27.5.1" + "@types/stack-utils" "^2.0.0" + "chalk" "^4.0.0" + "graceful-fs" "^4.2.9" + "micromatch" "^4.0.4" + "pretty-format" "^27.5.1" + "slash" "^3.0.0" + "stack-utils" "^2.0.3" + "jest-message-util@^29.7.0": "integrity" "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==" "resolved" "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz" "version" "29.7.0" dependencies: - "@babel/code-frame" "^7.12.13" - "@jest/types" "^29.6.3" - "@types/stack-utils" "^2.0.0" - "chalk" "^4.0.0" - "graceful-fs" "^4.2.9" - "micromatch" "^4.0.4" - "pretty-format" "^29.7.0" - "slash" "^3.0.0" - "stack-utils" "^2.0.3" + "@babel/code-frame" "^7.12.13" + "@jest/types" "^29.6.3" + "@types/stack-utils" "^2.0.0" + "chalk" "^4.0.0" + "graceful-fs" "^4.2.9" + "micromatch" "^4.0.4" + "pretty-format" "^29.7.0" + "slash" "^3.0.0" + "stack-utils" "^2.0.3" + +"jest-mock@^27.5.1": + "integrity" "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==" + "resolved" "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz" + "version" "27.5.1" + dependencies: + "@jest/types" "^27.5.1" + "@types/node" "*" + +"jest-mock@^29.7.0": + "integrity" "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==" + "resolved" "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz" + "version" "29.7.0" + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + "jest-util" "^29.7.0" + +"jest-pnp-resolver@^1.2.2": + "integrity" "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==" + "resolved" "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz" + "version" "1.2.3" + +"jest-regex-util@^27.5.1": + "integrity" "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==" + "resolved" "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz" + "version" "27.5.1" + +"jest-regex-util@^29.6.3": + "integrity" "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==" + "resolved" "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz" + "version" "29.6.3" + +"jest-resolve-dependencies@^29.7.0": + "integrity" "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==" + "resolved" "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz" + "version" "29.7.0" + dependencies: + "jest-regex-util" "^29.6.3" + "jest-snapshot" "^29.7.0" + +"jest-resolve@*": + "integrity" "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==" + "resolved" "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz" + "version" "27.5.1" + dependencies: + "@jest/types" "^27.5.1" + "chalk" "^4.0.0" + "graceful-fs" "^4.2.9" + "jest-haste-map" "^27.5.1" + "jest-pnp-resolver" "^1.2.2" + "jest-util" "^27.5.1" + "jest-validate" "^27.5.1" + "resolve" "^1.20.0" + "resolve.exports" "^1.1.0" + "slash" "^3.0.0" + +"jest-resolve@^29.7.0": + "integrity" "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==" + "resolved" "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz" + "version" "29.7.0" + dependencies: + "chalk" "^4.0.0" + "graceful-fs" "^4.2.9" + "jest-haste-map" "^29.7.0" + "jest-pnp-resolver" "^1.2.2" + "jest-util" "^29.7.0" + "jest-validate" "^29.7.0" + "resolve" "^1.20.0" + "resolve.exports" "^2.0.0" + "slash" "^3.0.0" + +"jest-runner@^29.7.0": + "integrity" "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==" + "resolved" "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz" + "version" "29.7.0" + dependencies: + "@jest/console" "^29.7.0" + "@jest/environment" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + "chalk" "^4.0.0" + "emittery" "^0.13.1" + "graceful-fs" "^4.2.9" + "jest-docblock" "^29.7.0" + "jest-environment-node" "^29.7.0" + "jest-haste-map" "^29.7.0" + "jest-leak-detector" "^29.7.0" + "jest-message-util" "^29.7.0" + "jest-resolve" "^29.7.0" + "jest-runtime" "^29.7.0" + "jest-util" "^29.7.0" + "jest-watcher" "^29.7.0" + "jest-worker" "^29.7.0" + "p-limit" "^3.1.0" + "source-map-support" "0.5.13" + +"jest-runtime@^29.7.0": + "integrity" "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==" + "resolved" "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz" + "version" "29.7.0" + dependencies: + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" + "@jest/globals" "^29.7.0" + "@jest/source-map" "^29.6.3" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + "chalk" "^4.0.0" + "cjs-module-lexer" "^1.0.0" + "collect-v8-coverage" "^1.0.0" + "glob" "^7.1.3" + "graceful-fs" "^4.2.9" + "jest-haste-map" "^29.7.0" + "jest-message-util" "^29.7.0" + "jest-mock" "^29.7.0" + "jest-regex-util" "^29.6.3" + "jest-resolve" "^29.7.0" + "jest-snapshot" "^29.7.0" + "jest-util" "^29.7.0" + "slash" "^3.0.0" + "strip-bom" "^4.0.0" + +"jest-serializer@^27.5.1": + "integrity" "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==" + "resolved" "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz" + "version" "27.5.1" + dependencies: + "@types/node" "*" + "graceful-fs" "^4.2.9" + +"jest-snapshot@^29.7.0": + "integrity" "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==" + "resolved" "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz" + "version" "29.7.0" + dependencies: + "@babel/core" "^7.11.6" + "@babel/generator" "^7.7.2" + "@babel/plugin-syntax-jsx" "^7.7.2" + "@babel/plugin-syntax-typescript" "^7.7.2" + "@babel/types" "^7.3.3" + "@jest/expect-utils" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "babel-preset-current-node-syntax" "^1.0.0" + "chalk" "^4.0.0" + "expect" "^29.7.0" + "graceful-fs" "^4.2.9" + "jest-diff" "^29.7.0" + "jest-get-type" "^29.6.3" + "jest-matcher-utils" "^29.7.0" + "jest-message-util" "^29.7.0" + "jest-util" "^29.7.0" + "natural-compare" "^1.4.0" + "pretty-format" "^29.7.0" + "semver" "^7.5.3" + +"jest-util@^27.5.1": + "integrity" "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==" + "resolved" "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz" + "version" "27.5.1" + dependencies: + "@jest/types" "^27.5.1" + "@types/node" "*" + "chalk" "^4.0.0" + "ci-info" "^3.2.0" + "graceful-fs" "^4.2.9" + "picomatch" "^2.2.3" + +"jest-util@^29.0.0": + "integrity" "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==" + "resolved" "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz" + "version" "29.7.0" + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + "chalk" "^4.0.0" + "ci-info" "^3.2.0" + "graceful-fs" "^4.2.9" + "picomatch" "^2.2.3" + +"jest-util@^29.7.0": + "integrity" "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==" + "resolved" "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz" + "version" "29.7.0" + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + "chalk" "^4.0.0" + "ci-info" "^3.2.0" + "graceful-fs" "^4.2.9" + "picomatch" "^2.2.3" + +"jest-validate@^27.5.1": + "integrity" "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==" + "resolved" "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz" + "version" "27.5.1" + dependencies: + "@jest/types" "^27.5.1" + "camelcase" "^6.2.0" + "chalk" "^4.0.0" + "jest-get-type" "^27.5.1" + "leven" "^3.1.0" + "pretty-format" "^27.5.1" + +"jest-validate@^29.7.0": + "integrity" "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==" + "resolved" "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz" + "version" "29.7.0" + dependencies: + "@jest/types" "^29.6.3" + "camelcase" "^6.2.0" + "chalk" "^4.0.0" + "jest-get-type" "^29.6.3" + "leven" "^3.1.0" + "pretty-format" "^29.7.0" + +"jest-watcher@^29.7.0": + "integrity" "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==" + "resolved" "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz" + "version" "29.7.0" + dependencies: + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + "ansi-escapes" "^4.2.1" + "chalk" "^4.0.0" + "emittery" "^0.13.1" + "jest-util" "^29.7.0" + "string-length" "^4.0.1" + +"jest-worker@^27.4.5", "jest-worker@^27.5.1": + "integrity" "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==" + "resolved" "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz" + "version" "27.5.1" + dependencies: + "@types/node" "*" + "merge-stream" "^2.0.0" + "supports-color" "^8.0.0" + +"jest-worker@^29.4.3": + "integrity" "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==" + "resolved" "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz" + "version" "29.7.0" + dependencies: + "@types/node" "*" + "jest-util" "^29.7.0" + "merge-stream" "^2.0.0" + "supports-color" "^8.0.0" + +"jest-worker@^29.7.0": + "integrity" "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==" + "resolved" "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz" + "version" "29.7.0" + dependencies: + "@types/node" "*" + "jest-util" "^29.7.0" + "merge-stream" "^2.0.0" + "supports-color" "^8.0.0" -"jest-util@^29.7.0": - "integrity" "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==" - "resolved" "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz" +"jest@*", "jest@^27.0.6", "jest@^29.0.0", "jest@^29.7.0", "jest@>= 28", "jest@>=27.0.0": + "integrity" "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==" + "resolved" "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz" "version" "29.7.0" dependencies: + "@jest/core" "^29.7.0" "@jest/types" "^29.6.3" - "@types/node" "*" - "chalk" "^4.0.0" - "ci-info" "^3.2.0" - "graceful-fs" "^4.2.9" - "picomatch" "^2.2.3" + "import-local" "^3.0.2" + "jest-cli" "^29.7.0" "js-tokens@^3.0.0 || ^4.0.0", "js-tokens@^4.0.0": "integrity" "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" @@ -1410,11 +7683,58 @@ "resolved" "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz" "version" "4.0.0" +"jsdom@^20.0.0": + "integrity" "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==" + "resolved" "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz" + "version" "20.0.3" + dependencies: + "abab" "^2.0.6" + "acorn" "^8.8.1" + "acorn-globals" "^7.0.0" + "cssom" "^0.5.0" + "cssstyle" "^2.3.0" + "data-urls" "^3.0.2" + "decimal.js" "^10.4.2" + "domexception" "^4.0.0" + "escodegen" "^2.0.0" + "form-data" "^4.0.0" + "html-encoding-sniffer" "^3.0.0" + "http-proxy-agent" "^5.0.0" + "https-proxy-agent" "^5.0.1" + "is-potential-custom-element-name" "^1.0.1" + "nwsapi" "^2.2.2" + "parse5" "^7.1.1" + "saxes" "^6.0.0" + "symbol-tree" "^3.2.4" + "tough-cookie" "^4.1.2" + "w3c-xmlserializer" "^4.0.0" + "webidl-conversions" "^7.0.0" + "whatwg-encoding" "^2.0.0" + "whatwg-mimetype" "^3.0.0" + "whatwg-url" "^11.0.0" + "ws" "^8.11.0" + "xml-name-validator" "^4.0.0" + +"jsesc@^2.5.1": + "integrity" "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + "resolved" "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" + "version" "2.5.2" + +"jsesc@~0.5.0": + "integrity" "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==" + "resolved" "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" + "version" "0.5.0" + "json-buffer@3.0.1": "integrity" "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" "resolved" "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz" "version" "3.0.1" +"json-parse-even-better-errors@^2.3.0", "json-parse-even-better-errors@^2.3.1": + "integrity" "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + "resolved" "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" + "version" "2.3.1" + "json-schema-traverse@^0.4.1": "integrity" "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" "resolved" "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" @@ -1430,13 +7750,123 @@ "resolved" "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" "version" "1.0.1" -"keyv@^4.5.3": +"json-stringify-safe@^5.0.1": + "integrity" "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" + "resolved" "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" + "version" "5.0.1" + +"json5@^1.0.1": + "integrity" "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==" + "resolved" "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "minimist" "^1.2.0" + +"json5@^1.0.2": + "integrity" "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==" + "resolved" "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "minimist" "^1.2.0" + +"json5@^2.1.2", "json5@^2.2.0", "json5@^2.2.2", "json5@^2.2.3": + "integrity" "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" + "resolved" "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" + "version" "2.2.3" + +"jsonfile@^4.0.0": + "integrity" "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==" + "resolved" "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz" + "version" "4.0.0" + optionalDependencies: + "graceful-fs" "^4.1.6" + +"jsonfile@^6.0.1": + "integrity" "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==" + "resolved" "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" + "version" "6.1.0" + dependencies: + "universalify" "^2.0.0" + optionalDependencies: + "graceful-fs" "^4.1.6" + +"jsx-ast-utils@^2.4.1 || ^3.0.0", "jsx-ast-utils@^3.3.3": + "integrity" "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==" + "resolved" "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz" + "version" "3.3.5" + dependencies: + "array-includes" "^3.1.6" + "array.prototype.flat" "^1.3.1" + "object.assign" "^4.1.4" + "object.values" "^1.1.6" + +"jszip@^3.1.0": + "integrity" "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==" + "resolved" "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz" + "version" "3.10.1" + dependencies: + "lie" "~3.3.0" + "pako" "~1.0.2" + "readable-stream" "~2.3.6" + "setimmediate" "^1.0.5" + +"keyboardevent-from-electron-accelerator@^2.0.0": + "integrity" "sha512-iQcmNA0M4ETMNi0kG/q0h/43wZk7rMeKYrXP7sqKIJbHkTU8Koowgzv+ieR/vWJbOwxx5nDC3UnudZ0aLSu4VA==" + "resolved" "https://registry.npmjs.org/keyboardevent-from-electron-accelerator/-/keyboardevent-from-electron-accelerator-2.0.0.tgz" + "version" "2.0.0" + +"keyboardevents-areequal@^0.2.1": + "integrity" "sha512-Nv+Kr33T0mEjxR500q+I6IWisOQ0lK1GGOncV0kWE6n4KFmpcu7RUX5/2B0EUtX51Cb0HjZ9VJsSY3u4cBa0kw==" + "resolved" "https://registry.npmjs.org/keyboardevents-areequal/-/keyboardevents-areequal-0.2.2.tgz" + "version" "0.2.2" + +"keyv@^4.0.0", "keyv@^4.5.3": "integrity" "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==" "resolved" "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz" "version" "4.5.3" dependencies: "json-buffer" "3.0.1" +"kind-of@^6.0.2": + "integrity" "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + "resolved" "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" + "version" "6.0.3" + +"kleur@^3.0.3": + "integrity" "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" + "resolved" "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" + "version" "3.0.3" + +"language-subtag-registry@~0.3.2": + "integrity" "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==" + "resolved" "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz" + "version" "0.3.22" + +"language-tags@=1.0.5": + "integrity" "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==" + "resolved" "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz" + "version" "1.0.5" + dependencies: + "language-subtag-registry" "~0.3.2" + +"launch-editor@^2.6.0": + "integrity" "sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==" + "resolved" "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.1.tgz" + "version" "2.6.1" + dependencies: + "picocolors" "^1.0.0" + "shell-quote" "^1.8.1" + +"lazy-val@^1.0.4", "lazy-val@^1.0.5": + "integrity" "sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==" + "resolved" "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.5.tgz" + "version" "1.0.5" + +"leven@^3.1.0": + "integrity" "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==" + "resolved" "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" + "version" "3.1.0" + "levn@^0.4.1": "integrity" "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==" "resolved" "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" @@ -1450,12 +7880,29 @@ "resolved" "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.10.45.tgz" "version" "1.10.45" +"lie@~3.3.0": + "integrity" "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==" + "resolved" "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz" + "version" "3.3.0" + dependencies: + "immediate" "~3.0.5" + +"lilconfig@^2.1.0": + "integrity" "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==" + "resolved" "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz" + "version" "2.1.0" + "lilconfig@2.0.5": "integrity" "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==" "resolved" "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz" "version" "2.0.5" -"lint-staged@^12.4.2": +"lines-and-columns@^1.1.6": + "integrity" "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + "resolved" "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" + "version" "1.2.4" + +"lint-staged@^11.1.2", "lint-staged@^12.4.2", "lint-staged@^13.0.3": "integrity" "sha512-BKLUjWDsKquV/JuIcoQW4MSAI3ggwEImF1+sB4zaKvyVx1wBk3FsG7UK9bpnmBTN1pm7EH2BBcMwINJzCRv12g==" "resolved" "https://registry.npmjs.org/lint-staged/-/lint-staged-12.5.0.tgz" "version" "12.5.0" @@ -1489,6 +7936,36 @@ "through" "^2.3.8" "wrap-ansi" "^7.0.0" +"loader-runner@^4.2.0": + "integrity" "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==" + "resolved" "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz" + "version" "4.3.0" + +"loader-utils@^1.4.2": + "integrity" "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==" + "resolved" "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz" + "version" "1.4.2" + dependencies: + "big.js" "^5.2.2" + "emojis-list" "^3.0.0" + "json5" "^1.0.1" + +"loader-utils@^2.0.0", "loader-utils@^2.0.4": + "integrity" "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==" + "resolved" "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz" + "version" "2.0.4" + dependencies: + "big.js" "^5.2.2" + "emojis-list" "^3.0.0" + "json5" "^2.1.2" + +"locate-path@^5.0.0": + "integrity" "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==" + "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "p-locate" "^4.1.0" + "locate-path@^6.0.0": "integrity" "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==" "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" @@ -1496,15 +7973,88 @@ dependencies: "p-locate" "^5.0.0" +"lodash.curry@^4.0.1": + "integrity" "sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA==" + "resolved" "https://registry.npmjs.org/lodash.curry/-/lodash.curry-4.1.1.tgz" + "version" "4.1.1" + +"lodash.debounce@^4.0.8": + "integrity" "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" + "resolved" "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz" + "version" "4.0.8" + +"lodash.difference@^4.5.0": + "integrity" "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==" + "resolved" "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz" + "version" "4.5.0" + +"lodash.escape@^4.0.1": + "integrity" "sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw==" + "resolved" "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz" + "version" "4.0.1" + +"lodash.escaperegexp@^4.1.2": + "integrity" "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==" + "resolved" "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz" + "version" "4.1.2" + +"lodash.flatten@^4.4.0": + "integrity" "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==" + "resolved" "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz" + "version" "4.4.0" + +"lodash.flow@^3.3.0": + "integrity" "sha512-ff3BX/tSioo+XojX4MOsOMhJw0nZoUEF011LX8g8d3gvjVbxd89cCio4BCXronjxcTUIJUoqKEUA+n4CqvvRPw==" + "resolved" "https://registry.npmjs.org/lodash.flow/-/lodash.flow-3.5.0.tgz" + "version" "3.5.0" + +"lodash.invokemap@^4.6.0": + "integrity" "sha512-CfkycNtMqgUlfjfdh2BhKO/ZXrP8ePOX5lEU/g0R3ItJcnuxWDwokMGKx1hWcfOikmyOVx6X9IwWnDGlgKl61w==" + "resolved" "https://registry.npmjs.org/lodash.invokemap/-/lodash.invokemap-4.6.0.tgz" + "version" "4.6.0" + +"lodash.isequal@^4.5.0": + "integrity" "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" + "resolved" "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz" + "version" "4.5.0" + +"lodash.memoize@^4.1.2", "lodash.memoize@4.x": + "integrity" "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==" + "resolved" "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" + "version" "4.1.2" + "lodash.merge@^4.6.2": "integrity" "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" "resolved" "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" "version" "4.6.2" -"lodash.truncate@^4.4.2": - "integrity" "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==" - "resolved" "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz" - "version" "4.4.2" +"lodash.pullall@^4.2.0": + "integrity" "sha512-VhqxBKH0ZxPpLhiu68YD1KnHmbhQJQctcipvmFnqIBDYzcIHzf3Zpu0tpeOKtR4x76p9yohc506eGdOjTmyIBg==" + "resolved" "https://registry.npmjs.org/lodash.pullall/-/lodash.pullall-4.2.0.tgz" + "version" "4.2.0" + +"lodash.uniq@^4.5.0": + "integrity" "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" + "resolved" "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz" + "version" "4.5.0" + +"lodash.uniqby@^4.7.0": + "integrity" "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==" + "resolved" "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz" + "version" "4.7.0" + +"lodash@^4.17.15", "lodash@^4.17.20", "lodash@^4.17.21": + "integrity" "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "resolved" "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" + "version" "4.17.21" + +"log-symbols@^4.1.0": + "integrity" "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==" + "resolved" "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "chalk" "^4.1.0" + "is-unicode-supported" "^0.1.0" "log-update@^4.0.0": "integrity" "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==" @@ -1516,13 +8066,32 @@ "slice-ansi" "^4.0.0" "wrap-ansi" "^6.2.0" -"loose-envify@^1.1.0": +"loose-envify@^1.0.0", "loose-envify@^1.1.0", "loose-envify@^1.4.0": "integrity" "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==" "resolved" "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" "version" "1.4.0" dependencies: "js-tokens" "^3.0.0 || ^4.0.0" +"lower-case@^2.0.2": + "integrity" "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==" + "resolved" "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz" + "version" "2.0.2" + dependencies: + "tslib" "^2.0.3" + +"lowercase-keys@^2.0.0": + "integrity" "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + "resolved" "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz" + "version" "2.0.0" + +"lru-cache@^5.1.1": + "integrity" "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==" + "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" + "version" "5.1.1" + dependencies: + "yallist" "^3.0.2" + "lru-cache@^6.0.0": "integrity" "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==" "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" @@ -1530,12 +8099,116 @@ dependencies: "yallist" "^4.0.0" +"lru-cache@^7.7.1": + "integrity" "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==" + "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz" + "version" "7.18.3" + +"lru-cache@^9.1.1 || ^10.0.0": + "integrity" "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==" + "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz" + "version" "10.0.1" + +"lz-string@^1.5.0": + "integrity" "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==" + "resolved" "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz" + "version" "1.5.0" + +"make-dir@^4.0.0": + "integrity" "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==" + "resolved" "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "semver" "^7.5.3" + +"make-error@^1.1.1", "make-error@1.x": + "integrity" "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" + "resolved" "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" + "version" "1.3.6" + +"make-fetch-happen@^11.0.3": + "integrity" "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==" + "resolved" "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz" + "version" "11.1.1" + dependencies: + "agentkeepalive" "^4.2.1" + "cacache" "^17.0.0" + "http-cache-semantics" "^4.1.1" + "http-proxy-agent" "^5.0.0" + "https-proxy-agent" "^5.0.0" + "is-lambda" "^1.0.1" + "lru-cache" "^7.7.1" + "minipass" "^5.0.0" + "minipass-fetch" "^3.0.0" + "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" "^10.0.0" + +"makeerror@1.0.12": + "integrity" "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==" + "resolved" "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz" + "version" "1.0.12" + dependencies: + "tmpl" "1.0.5" + +"matcher@^3.0.0": + "integrity" "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==" + "resolved" "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "escape-string-regexp" "^4.0.0" + +"mdn-data@2.0.28": + "integrity" "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==" + "resolved" "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz" + "version" "2.0.28" + +"mdn-data@2.0.30": + "integrity" "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==" + "resolved" "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz" + "version" "2.0.30" + +"media-typer@0.3.0": + "integrity" "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" + "resolved" "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" + "version" "0.3.0" + +"memfs@^3.4.3": + "integrity" "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==" + "resolved" "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz" + "version" "3.5.3" + dependencies: + "fs-monkey" "^1.0.4" + +"memory-fs@^0.2.0": + "integrity" "sha512-+y4mDxU4rvXXu5UDSGCGNiesFmwCHuefGMoPCO1WYucNYj7DsLqrFaa2fXVI0H+NNiPTwwzKwspn9yTZqUGqng==" + "resolved" "https://registry.npmjs.org/memory-fs/-/memory-fs-0.2.0.tgz" + "version" "0.2.0" + +"merge-descriptors@1.0.1": + "integrity" "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + "resolved" "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" + "version" "1.0.1" + "merge-stream@^2.0.0": "integrity" "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" "resolved" "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" "version" "2.0.0" -"micromatch@^4.0.4", "micromatch@^4.0.5": +"merge2@^1.3.0", "merge2@^1.4.1": + "integrity" "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" + "resolved" "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" + "version" "1.4.1" + +"methods@~1.1.2": + "integrity" "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" + "resolved" "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" + "version" "1.1.2" + +"micromatch@^4.0.0", "micromatch@^4.0.2", "micromatch@^4.0.4", "micromatch@^4.0.5": "integrity" "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==" "resolved" "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" "version" "4.0.5" @@ -1543,23 +8216,60 @@ "braces" "^3.0.2" "picomatch" "^2.3.1" -"mime-db@1.52.0": +"mime-db@>= 1.43.0 < 2", "mime-db@1.52.0": "integrity" "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" "resolved" "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" "version" "1.52.0" -"mime-types@^2.1.12": +"mime-types@^2.1.12", "mime-types@^2.1.27", "mime-types@^2.1.31", "mime-types@~2.1.17", "mime-types@~2.1.24", "mime-types@~2.1.34": "integrity" "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==" "resolved" "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" "version" "2.1.35" dependencies: "mime-db" "1.52.0" +"mime@^2.5.2": + "integrity" "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==" + "resolved" "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz" + "version" "2.6.0" + +"mime@1.6.0": + "integrity" "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + "resolved" "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" + "version" "1.6.0" + "mimic-fn@^2.1.0": "integrity" "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" "resolved" "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" "version" "2.1.0" +"mimic-fn@^4.0.0": + "integrity" "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==" + "resolved" "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz" + "version" "4.0.0" + +"mimic-response@^1.0.0": + "integrity" "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + "resolved" "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz" + "version" "1.0.1" + +"mimic-response@^3.1.0": + "integrity" "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" + "resolved" "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz" + "version" "3.1.0" + +"min-indent@^1.0.0": + "integrity" "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==" + "resolved" "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz" + "version" "1.0.1" + +"mini-css-extract-plugin@^2.7.6": + "integrity" "sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw==" + "resolved" "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.6.tgz" + "version" "2.7.6" + dependencies: + "schema-utils" "^4.0.0" + "minimalistic-assert@^1.0.0", "minimalistic-assert@^1.0.1": "integrity" "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" "resolved" "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" @@ -1577,51 +8287,388 @@ dependencies: "brace-expansion" "^1.1.7" -"ms@2.1.2": +"minimatch@^5.0.1": + "integrity" "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==" + "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz" + "version" "5.1.6" + dependencies: + "brace-expansion" "^2.0.1" + +"minimatch@^5.1.1": + "integrity" "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==" + "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz" + "version" "5.1.6" + dependencies: + "brace-expansion" "^2.0.1" + +"minimatch@^9.0.1": + "integrity" "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==" + "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz" + "version" "9.0.3" + dependencies: + "brace-expansion" "^2.0.1" + +"minimist@^1.2.0", "minimist@^1.2.6": + "integrity" "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + "resolved" "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz" + "version" "1.2.6" + +"minipass-collect@^1.0.2": + "integrity" "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==" + "resolved" "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "minipass" "^3.0.0" + +"minipass-fetch@^3.0.0": + "integrity" "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==" + "resolved" "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.4.tgz" + "version" "3.0.4" + dependencies: + "minipass" "^7.0.3" + "minipass-sized" "^1.0.3" + "minizlib" "^2.1.2" + optionalDependencies: + "encoding" "^0.1.13" + +"minipass-flush@^1.0.5": + "integrity" "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==" + "resolved" "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz" + "version" "1.0.5" + dependencies: + "minipass" "^3.0.0" + +"minipass-pipeline@^1.2.4": + "integrity" "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==" + "resolved" "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz" + "version" "1.2.4" + dependencies: + "minipass" "^3.0.0" + +"minipass-sized@^1.0.3": + "integrity" "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==" + "resolved" "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz" + "version" "1.0.3" + dependencies: + "minipass" "^3.0.0" + +"minipass@^3.0.0": + "integrity" "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==" + "resolved" "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz" + "version" "3.3.6" + dependencies: + "yallist" "^4.0.0" + +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", "minipass@^7.0.3": + "integrity" "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==" + "resolved" "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz" + "version" "7.0.4" + +"minipass@^5.0.0": + "integrity" "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==" + "resolved" "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz" + "version" "5.0.0" + +"minipass@^7.0.3": + "integrity" "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==" + "resolved" "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz" + "version" "7.0.4" + +"minizlib@^2.1.1", "minizlib@^2.1.2": + "integrity" "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==" + "resolved" "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz" + "version" "2.1.2" + dependencies: + "minipass" "^3.0.0" + "yallist" "^4.0.0" + +"mkdirp@^0.5.1": + "integrity" "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==" + "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" + "version" "0.5.6" + dependencies: + "minimist" "^1.2.6" + +"mkdirp@^1.0.3": + "integrity" "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" + "version" "1.0.4" + +"mrmime@^1.0.0": + "integrity" "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==" + "resolved" "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz" + "version" "1.0.1" + +"ms@^2.0.0", "ms@^2.1.1", "ms@2.1.2": "integrity" "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" "version" "2.1.2" +"ms@2.0.0": + "integrity" "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + "resolved" "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" + "version" "2.0.0" + +"ms@2.1.3": + "integrity" "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" + "version" "2.1.3" + +"multicast-dns@^7.2.5": + "integrity" "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==" + "resolved" "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz" + "version" "7.2.5" + dependencies: + "dns-packet" "^5.2.2" + "thunky" "^1.0.2" + +"nanoid@^3.3.6": + "integrity" "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==" + "resolved" "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz" + "version" "3.3.6" + "natural-compare@^1.4.0": "integrity" "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" "resolved" "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" "version" "1.4.0" +"negotiator@^0.6.3", "negotiator@0.6.3": + "integrity" "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" + "resolved" "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" + "version" "0.6.3" + +"neo-async@^2.6.2": + "integrity" "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + "resolved" "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" + "version" "2.6.2" + +"no-case@^3.0.4": + "integrity" "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==" + "resolved" "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz" + "version" "3.0.4" + dependencies: + "lower-case" "^2.0.2" + "tslib" "^2.0.3" + +"node-abi@^3.45.0": + "integrity" "sha512-2s6B2CWZM//kPgwnuI0KrYwNjfdByE25zvAaEpq9IH4zcNsarH8Ihu/UuX6XMPEogDAxkuUFeZn60pXNHAqn3A==" + "resolved" "https://registry.npmjs.org/node-abi/-/node-abi-3.47.0.tgz" + "version" "3.47.0" + dependencies: + "semver" "^7.3.5" + "node-abort-controller@^3.0.1": "integrity" "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==" "resolved" "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz" "version" "3.1.1" +"node-addon-api@^1.6.3": + "integrity" "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==" + "resolved" "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz" + "version" "1.7.2" + +"node-api-version@^0.1.4": + "integrity" "sha512-KGXihXdUChwJAOHO53bv9/vXcLmdUsZ6jIptbvYvkpKfth+r7jw44JkVxQFA3kX5nQjzjmGu1uAu/xNNLNlI5g==" + "resolved" "https://registry.npmjs.org/node-api-version/-/node-api-version-0.1.4.tgz" + "version" "0.1.4" + dependencies: + "semver" "^7.3.5" + "node-fetch@^2.6.12": "integrity" "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==" "resolved" "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz" "version" "2.7.0" dependencies: - "whatwg-url" "^5.0.0" + "whatwg-url" "^5.0.0" + +"node-forge@^1": + "integrity" "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==" + "resolved" "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz" + "version" "1.3.1" + +"node-gyp@^9.0.0": + "integrity" "sha512-dMXsYP6gc9rRbejLXmTbVRYjAHw7ppswsKyMxuxJxxOHzluIO1rGp9TOQgjFJ+2MCqcOcQTOPB/8Xwhr+7s4Eg==" + "resolved" "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.0.tgz" + "version" "9.4.0" + dependencies: + "env-paths" "^2.2.0" + "exponential-backoff" "^3.1.1" + "glob" "^7.1.4" + "graceful-fs" "^4.2.6" + "make-fetch-happen" "^11.0.3" + "nopt" "^6.0.0" + "npmlog" "^6.0.0" + "rimraf" "^3.0.2" + "semver" "^7.3.5" + "tar" "^6.1.2" + "which" "^2.0.2" + +"node-int64@^0.4.0": + "integrity" "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==" + "resolved" "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz" + "version" "0.4.0" + +"node-releases@^2.0.13": + "integrity" "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==" + "resolved" "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz" + "version" "2.0.13" + +"nopt@^6.0.0": + "integrity" "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==" + "resolved" "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "abbrev" "^1.0.0" + +"normalize-path@^2.1.1": + "integrity" "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==" + "resolved" "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz" + "version" "2.1.1" + dependencies: + "remove-trailing-separator" "^1.0.1" + +"normalize-path@^3.0.0", "normalize-path@~3.0.0": + "integrity" "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + "resolved" "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" + "version" "3.0.0" + +"normalize-url@^6.0.1": + "integrity" "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==" + "resolved" "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz" + "version" "6.1.0" + +"npm-run-path@^4.0.1": + "integrity" "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==" + "resolved" "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" + "version" "4.0.1" + dependencies: + "path-key" "^3.0.0" + +"npm-run-path@^5.1.0": + "integrity" "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==" + "resolved" "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz" + "version" "5.1.0" + dependencies: + "path-key" "^4.0.0" + +"npmlog@^6.0.0": + "integrity" "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==" + "resolved" "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz" + "version" "6.0.2" + dependencies: + "are-we-there-yet" "^3.0.0" + "console-control-strings" "^1.1.0" + "gauge" "^4.0.3" + "set-blocking" "^2.0.0" + +"nth-check@^2.0.1": + "integrity" "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==" + "resolved" "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz" + "version" "2.1.1" + dependencies: + "boolbase" "^1.0.0" + +"nwsapi@^2.2.2": + "integrity" "sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==" + "resolved" "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz" + "version" "2.2.7" + +"object-assign@^4.1.0", "object-assign@^4.1.1": + "integrity" "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" + "resolved" "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + "version" "4.1.1" + +"object-inspect@^1.12.2", "object-inspect@^1.12.3", "object-inspect@^1.9.0": + "integrity" "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==" + "resolved" "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz" + "version" "1.12.3" + +"object-is@^1.1.5": + "integrity" "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==" + "resolved" "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz" + "version" "1.1.5" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.3" + +"object-keys@^1.1.1": + "integrity" "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + "resolved" "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" + "version" "1.1.1" + +"object.assign@^4.1.2", "object.assign@^4.1.4": + "integrity" "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==" + "resolved" "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz" + "version" "4.1.4" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.4" + "has-symbols" "^1.0.3" + "object-keys" "^1.1.1" + +"object.entries@^1.1.5", "object.entries@^1.1.6": + "integrity" "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==" + "resolved" "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz" + "version" "1.1.7" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.2.0" + "es-abstract" "^1.22.1" + +"object.fromentries@^2.0.6": + "integrity" "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==" + "resolved" "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz" + "version" "2.0.7" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.2.0" + "es-abstract" "^1.22.1" + +"object.groupby@^1.0.0": + "integrity" "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==" + "resolved" "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.2.0" + "es-abstract" "^1.22.1" + "get-intrinsic" "^1.2.1" + +"object.hasown@^1.1.2": + "integrity" "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==" + "resolved" "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz" + "version" "1.1.3" + dependencies: + "define-properties" "^1.2.0" + "es-abstract" "^1.22.1" + +"object.values@^1.1.6": + "integrity" "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==" + "resolved" "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz" + "version" "1.1.7" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.2.0" + "es-abstract" "^1.22.1" -"normalize-path@^3.0.0": - "integrity" "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - "resolved" "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" - "version" "3.0.0" +"obuf@^1.0.0", "obuf@^1.1.2": + "integrity" "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" + "resolved" "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz" + "version" "1.1.2" -"npm-run-path@^4.0.1": - "integrity" "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==" - "resolved" "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" - "version" "4.0.1" +"on-finished@2.4.1": + "integrity" "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==" + "resolved" "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" + "version" "2.4.1" dependencies: - "path-key" "^3.0.0" - -"object-assign@^4.1.1": - "integrity" "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" - "resolved" "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" - "version" "4.1.1" + "ee-first" "1.1.1" -"object-inspect@^1.12.2": - "integrity" "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==" - "resolved" "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz" - "version" "1.12.3" +"on-headers@~1.0.2": + "integrity" "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" + "resolved" "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz" + "version" "1.0.2" -"once@^1.3.0": +"once@^1.3.0", "once@^1.3.1", "once@^1.4.0": "integrity" "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==" "resolved" "https://registry.npmjs.org/once/-/once-1.4.0.tgz" "version" "1.4.0" @@ -1635,7 +8682,38 @@ dependencies: "mimic-fn" "^2.1.0" -"optionator@^0.9.1", "optionator@^0.9.3": +"onetime@^6.0.0": + "integrity" "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==" + "resolved" "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "mimic-fn" "^4.0.0" + +"open@^8.0.9": + "integrity" "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==" + "resolved" "https://registry.npmjs.org/open/-/open-8.4.2.tgz" + "version" "8.4.2" + dependencies: + "define-lazy-prop" "^2.0.0" + "is-docker" "^2.1.1" + "is-wsl" "^2.2.0" + +"open@^9.1.0": + "integrity" "sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==" + "resolved" "https://registry.npmjs.org/open/-/open-9.1.0.tgz" + "version" "9.1.0" + dependencies: + "default-browser" "^4.0.0" + "define-lazy-prop" "^3.0.0" + "is-inside-container" "^1.0.0" + "is-wsl" "^2.2.0" + +"opener@^1.5.2": + "integrity" "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==" + "resolved" "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz" + "version" "1.5.2" + +"optionator@^0.9.3": "integrity" "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==" "resolved" "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz" "version" "0.9.3" @@ -1647,13 +8725,47 @@ "prelude-ls" "^1.2.1" "type-check" "^0.4.0" -"p-limit@^3.0.2": +"ora@^5.1.0": + "integrity" "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==" + "resolved" "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz" + "version" "5.4.1" + 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" + +"p-cancelable@^2.0.0": + "integrity" "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==" + "resolved" "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz" + "version" "2.1.1" + +"p-limit@^2.2.0": + "integrity" "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==" + "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" + "version" "2.3.0" + dependencies: + "p-try" "^2.0.0" + +"p-limit@^3.0.2", "p-limit@^3.1.0": "integrity" "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==" "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" "version" "3.1.0" dependencies: "yocto-queue" "^0.1.0" +"p-locate@^4.1.0": + "integrity" "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==" + "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "p-limit" "^2.2.0" + "p-locate@^5.0.0": "integrity" "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==" "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" @@ -1668,6 +8780,32 @@ dependencies: "aggregate-error" "^3.0.0" +"p-retry@^4.5.0": + "integrity" "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==" + "resolved" "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz" + "version" "4.6.2" + dependencies: + "@types/retry" "0.12.0" + "retry" "^0.13.1" + +"p-try@^2.0.0": + "integrity" "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + "resolved" "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" + "version" "2.2.0" + +"pako@~1.0.2": + "integrity" "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + "resolved" "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz" + "version" "1.0.11" + +"param-case@^3.0.4": + "integrity" "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==" + "resolved" "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz" + "version" "3.0.4" + dependencies: + "dot-case" "^3.0.4" + "tslib" "^2.0.3" + "parent-module@^1.0.0": "integrity" "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==" "resolved" "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" @@ -1675,6 +8813,36 @@ dependencies: "callsites" "^3.0.0" +"parse-json@^5.0.0", "parse-json@^5.2.0": + "integrity" "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==" + "resolved" "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" + "version" "5.2.0" + 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" + +"parse5@^7.0.0", "parse5@^7.1.1": + "integrity" "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==" + "resolved" "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz" + "version" "7.1.2" + dependencies: + "entities" "^4.4.0" + +"parseurl@~1.3.2", "parseurl@~1.3.3": + "integrity" "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + "resolved" "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" + "version" "1.3.3" + +"pascal-case@^3.1.2": + "integrity" "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==" + "resolved" "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz" + "version" "3.1.2" + dependencies: + "no-case" "^3.0.4" + "tslib" "^2.0.3" + "path-exists@^4.0.0": "integrity" "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" "resolved" "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" @@ -1695,7 +8863,45 @@ "resolved" "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" "version" "3.1.1" -"picomatch@^2.2.3", "picomatch@^2.3.1": +"path-key@^4.0.0": + "integrity" "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==" + "resolved" "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz" + "version" "4.0.0" + +"path-parse@^1.0.7": + "integrity" "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + "resolved" "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" + "version" "1.0.7" + +"path-scurry@^1.10.1": + "integrity" "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==" + "resolved" "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz" + "version" "1.10.1" + dependencies: + "lru-cache" "^9.1.1 || ^10.0.0" + "minipass" "^5.0.0 || ^6.0.2 || ^7.0.0" + +"path-to-regexp@0.1.7": + "integrity" "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + "resolved" "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz" + "version" "0.1.7" + +"path-type@^4.0.0": + "integrity" "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" + "resolved" "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" + "version" "4.0.0" + +"pend@~1.2.0": + "integrity" "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" + "resolved" "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz" + "version" "1.2.0" + +"picocolors@^1.0.0": + "integrity" "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "resolved" "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" + "version" "1.0.0" + +"picomatch@^2.0.4", "picomatch@^2.2.1", "picomatch@^2.2.3", "picomatch@^2.3.1": "integrity" "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" "resolved" "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" "version" "2.3.1" @@ -1705,16 +8911,322 @@ "resolved" "https://registry.npmjs.org/pidtree/-/pidtree-0.5.0.tgz" "version" "0.5.0" +"pify@^4.0.1": + "integrity" "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + "resolved" "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" + "version" "4.0.1" + +"pirates@^4.0.4": + "integrity" "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==" + "resolved" "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz" + "version" "4.0.6" + +"pkg-dir@^4.2.0": + "integrity" "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==" + "resolved" "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" + "version" "4.2.0" + dependencies: + "find-up" "^4.0.0" + +"plist@^3.0.4", "plist@^3.0.5": + "integrity" "sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==" + "resolved" "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "@xmldom/xmldom" "^0.8.8" + "base64-js" "^1.5.1" + "xmlbuilder" "^15.1.1" + +"postcss-calc@^9.0.0": + "integrity" "sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==" + "resolved" "https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.1.tgz" + "version" "9.0.1" + dependencies: + "postcss-selector-parser" "^6.0.11" + "postcss-value-parser" "^4.2.0" + +"postcss-colormin@^6.0.0": + "integrity" "sha512-EuO+bAUmutWoZYgHn2T1dG1pPqHU6L4TjzPlu4t1wZGXQ/fxV16xg2EJmYi0z+6r+MGV1yvpx1BHkUaRrPa2bw==" + "resolved" "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "browserslist" "^4.21.4" + "caniuse-api" "^3.0.0" + "colord" "^2.9.1" + "postcss-value-parser" "^4.2.0" + +"postcss-convert-values@^6.0.0": + "integrity" "sha512-U5D8QhVwqT++ecmy8rnTb+RL9n/B806UVaS3m60lqle4YDFcpbS3ae5bTQIh3wOGUSDHSEtMYLs/38dNG7EYFw==" + "resolved" "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "browserslist" "^4.21.4" + "postcss-value-parser" "^4.2.0" + +"postcss-discard-comments@^6.0.0": + "integrity" "sha512-p2skSGqzPMZkEQvJsgnkBhCn8gI7NzRH2683EEjrIkoMiwRELx68yoUJ3q3DGSGuQ8Ug9Gsn+OuDr46yfO+eFw==" + "resolved" "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-6.0.0.tgz" + "version" "6.0.0" + +"postcss-discard-duplicates@^6.0.0": + "integrity" "sha512-bU1SXIizMLtDW4oSsi5C/xHKbhLlhek/0/yCnoMQany9k3nPBq+Ctsv/9oMmyqbR96HYHxZcHyK2HR5P/mqoGA==" + "resolved" "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.0.tgz" + "version" "6.0.0" + +"postcss-discard-empty@^6.0.0": + "integrity" "sha512-b+h1S1VT6dNhpcg+LpyiUrdnEZfICF0my7HAKgJixJLW7BnNmpRH34+uw/etf5AhOlIhIAuXApSzzDzMI9K/gQ==" + "resolved" "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-6.0.0.tgz" + "version" "6.0.0" + +"postcss-discard-overridden@^6.0.0": + "integrity" "sha512-4VELwssYXDFigPYAZ8vL4yX4mUepF/oCBeeIT4OXsJPYOtvJumyz9WflmJWTfDwCUcpDR+z0zvCWBXgTx35SVw==" + "resolved" "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-6.0.0.tgz" + "version" "6.0.0" + +"postcss-merge-longhand@^6.0.0": + "integrity" "sha512-4VSfd1lvGkLTLYcxFuISDtWUfFS4zXe0FpF149AyziftPFQIWxjvFSKhA4MIxMe4XM3yTDgQMbSNgzIVxChbIg==" + "resolved" "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "postcss-value-parser" "^4.2.0" + "stylehacks" "^6.0.0" + +"postcss-merge-rules@^6.0.1": + "integrity" "sha512-a4tlmJIQo9SCjcfiCcCMg/ZCEe0XTkl/xK0XHBs955GWg9xDX3NwP9pwZ78QUOWB8/0XCjZeJn98Dae0zg6AAw==" + "resolved" "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.0.1.tgz" + "version" "6.0.1" + dependencies: + "browserslist" "^4.21.4" + "caniuse-api" "^3.0.0" + "cssnano-utils" "^4.0.0" + "postcss-selector-parser" "^6.0.5" + +"postcss-minify-font-values@^6.0.0": + "integrity" "sha512-zNRAVtyh5E8ndZEYXA4WS8ZYsAp798HiIQ1V2UF/C/munLp2r1UGHwf1+6JFu7hdEhJFN+W1WJQKBrtjhFgEnA==" + "resolved" "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "postcss-value-parser" "^4.2.0" + +"postcss-minify-gradients@^6.0.0": + "integrity" "sha512-wO0F6YfVAR+K1xVxF53ueZJza3L+R3E6cp0VwuXJQejnNUH0DjcAFe3JEBeTY1dLwGa0NlDWueCA1VlEfiKgAA==" + "resolved" "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "colord" "^2.9.1" + "cssnano-utils" "^4.0.0" + "postcss-value-parser" "^4.2.0" + +"postcss-minify-params@^6.0.0": + "integrity" "sha512-Fz/wMQDveiS0n5JPcvsMeyNXOIMrwF88n7196puSuQSWSa+/Ofc1gDOSY2xi8+A4PqB5dlYCKk/WfqKqsI+ReQ==" + "resolved" "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "browserslist" "^4.21.4" + "cssnano-utils" "^4.0.0" + "postcss-value-parser" "^4.2.0" + +"postcss-minify-selectors@^6.0.0": + "integrity" "sha512-ec/q9JNCOC2CRDNnypipGfOhbYPuUkewGwLnbv6omue/PSASbHSU7s6uSQ0tcFRVv731oMIx8k0SP4ZX6be/0g==" + "resolved" "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "postcss-selector-parser" "^6.0.5" + +"postcss-modules-extract-imports@^3.0.0": + "integrity" "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==" + "resolved" "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz" + "version" "3.0.0" + +"postcss-modules-local-by-default@^4.0.3": + "integrity" "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==" + "resolved" "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz" + "version" "4.0.3" + dependencies: + "icss-utils" "^5.0.0" + "postcss-selector-parser" "^6.0.2" + "postcss-value-parser" "^4.1.0" + +"postcss-modules-scope@^3.0.0": + "integrity" "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==" + "resolved" "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "postcss-selector-parser" "^6.0.4" + +"postcss-modules-values@^4.0.0": + "integrity" "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==" + "resolved" "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "icss-utils" "^5.0.0" + +"postcss-normalize-charset@^6.0.0": + "integrity" "sha512-cqundwChbu8yO/gSWkuFDmKrCZ2vJzDAocheT2JTd0sFNA4HMGoKMfbk2B+J0OmO0t5GUkiAkSM5yF2rSLUjgQ==" + "resolved" "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-6.0.0.tgz" + "version" "6.0.0" + +"postcss-normalize-display-values@^6.0.0": + "integrity" "sha512-Qyt5kMrvy7dJRO3OjF7zkotGfuYALETZE+4lk66sziWSPzlBEt7FrUshV6VLECkI4EN8Z863O6Nci4NXQGNzYw==" + "resolved" "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "postcss-value-parser" "^4.2.0" + +"postcss-normalize-positions@^6.0.0": + "integrity" "sha512-mPCzhSV8+30FZyWhxi6UoVRYd3ZBJgTRly4hOkaSifo0H+pjDYcii/aVT4YE6QpOil15a5uiv6ftnY3rm0igPg==" + "resolved" "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "postcss-value-parser" "^4.2.0" + +"postcss-normalize-repeat-style@^6.0.0": + "integrity" "sha512-50W5JWEBiOOAez2AKBh4kRFm2uhrT3O1Uwdxz7k24aKtbD83vqmcVG7zoIwo6xI2FZ/HDlbrCopXhLeTpQib1A==" + "resolved" "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "postcss-value-parser" "^4.2.0" + +"postcss-normalize-string@^6.0.0": + "integrity" "sha512-KWkIB7TrPOiqb8ZZz6homet2KWKJwIlysF5ICPZrXAylGe2hzX/HSf4NTX2rRPJMAtlRsj/yfkrWGavFuB+c0w==" + "resolved" "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "postcss-value-parser" "^4.2.0" + +"postcss-normalize-timing-functions@^6.0.0": + "integrity" "sha512-tpIXWciXBp5CiFs8sem90IWlw76FV4oi6QEWfQwyeREVwUy39VSeSqjAT7X0Qw650yAimYW5gkl2Gd871N5SQg==" + "resolved" "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "postcss-value-parser" "^4.2.0" + +"postcss-normalize-unicode@^6.0.0": + "integrity" "sha512-ui5crYkb5ubEUDugDc786L/Me+DXp2dLg3fVJbqyAl0VPkAeALyAijF2zOsnZyaS1HyfPuMH0DwyY18VMFVNkg==" + "resolved" "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "browserslist" "^4.21.4" + "postcss-value-parser" "^4.2.0" + +"postcss-normalize-url@^6.0.0": + "integrity" "sha512-98mvh2QzIPbb02YDIrYvAg4OUzGH7s1ZgHlD3fIdTHLgPLRpv1ZTKJDnSAKr4Rt21ZQFzwhGMXxpXlfrUBKFHw==" + "resolved" "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "postcss-value-parser" "^4.2.0" + +"postcss-normalize-whitespace@^6.0.0": + "integrity" "sha512-7cfE1AyLiK0+ZBG6FmLziJzqQCpTQY+8XjMhMAz8WSBSCsCNNUKujgIgjCAmDT3cJ+3zjTXFkoD15ZPsckArVw==" + "resolved" "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "postcss-value-parser" "^4.2.0" + +"postcss-ordered-values@^6.0.0": + "integrity" "sha512-K36XzUDpvfG/nWkjs6d1hRBydeIxGpKS2+n+ywlKPzx1nMYDYpoGbcjhj5AwVYJK1qV2/SDoDEnHzlPD6s3nMg==" + "resolved" "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "cssnano-utils" "^4.0.0" + "postcss-value-parser" "^4.2.0" + +"postcss-reduce-initial@^6.0.0": + "integrity" "sha512-s2UOnidpVuXu6JiiI5U+fV2jamAw5YNA9Fdi/GRK0zLDLCfXmSGqQtzpUPtfN66RtCbb9fFHoyZdQaxOB3WxVA==" + "resolved" "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "browserslist" "^4.21.4" + "caniuse-api" "^3.0.0" + +"postcss-reduce-transforms@^6.0.0": + "integrity" "sha512-FQ9f6xM1homnuy1wLe9lP1wujzxnwt1EwiigtWwuyf8FsqqXUDUp2Ulxf9A5yjlUOTdCJO6lonYjg1mgqIIi2w==" + "resolved" "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "postcss-value-parser" "^4.2.0" + +"postcss-selector-parser@^6.0.11", "postcss-selector-parser@^6.0.2", "postcss-selector-parser@^6.0.4", "postcss-selector-parser@^6.0.5": + "integrity" "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==" + "resolved" "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz" + "version" "6.0.13" + dependencies: + "cssesc" "^3.0.0" + "util-deprecate" "^1.0.2" + +"postcss-svgo@^6.0.0": + "integrity" "sha512-r9zvj/wGAoAIodn84dR/kFqwhINp5YsJkLoujybWG59grR/IHx+uQ2Zo+IcOwM0jskfYX3R0mo+1Kip1VSNcvw==" + "resolved" "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "postcss-value-parser" "^4.2.0" + "svgo" "^3.0.2" + +"postcss-unique-selectors@^6.0.0": + "integrity" "sha512-EPQzpZNxOxP7777t73RQpZE5e9TrnCrkvp7AH7a0l89JmZiPnS82y216JowHXwpBCQitfyxrof9TK3rYbi7/Yw==" + "resolved" "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "postcss-selector-parser" "^6.0.5" + +"postcss-value-parser@^4.1.0", "postcss-value-parser@^4.2.0": + "integrity" "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + "resolved" "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" + "version" "4.2.0" + +"postcss@^8.0.9", "postcss@^8.1.0", "postcss@^8.2.15", "postcss@^8.2.2", "postcss@^8.4.21", "postcss@^8.4.24", "postcss@^8.4.27": + "integrity" "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==" + "resolved" "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz" + "version" "8.4.31" + dependencies: + "nanoid" "^3.3.6" + "picocolors" "^1.0.0" + "source-map-js" "^1.0.2" + "prelude-ls@^1.2.1": "integrity" "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" "resolved" "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" "version" "1.2.1" -"prettier@^2.5.1": +"prettier-linter-helpers@^1.0.0": + "integrity" "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==" + "resolved" "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "fast-diff" "^1.1.2" + +"prettier@*", "prettier@^2.3.2", "prettier@^2.4.1", "prettier@^2.5.1": "integrity" "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==" "resolved" "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz" "version" "2.7.1" +"prettier@^3.0.3": + "integrity" "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==" + "resolved" "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz" + "version" "3.0.3" + +"prettier@>=3.0.0": + "integrity" "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==" + "resolved" "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz" + "version" "3.0.3" + +"pretty-error@^4.0.0": + "integrity" "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==" + "resolved" "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "lodash" "^4.17.20" + "renderkid" "^3.0.0" + +"pretty-format@^27.0.2", "pretty-format@^27.5.1": + "integrity" "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==" + "resolved" "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz" + "version" "27.5.1" + dependencies: + "ansi-regex" "^5.0.1" + "ansi-styles" "^5.0.0" + "react-is" "^17.0.1" + "pretty-format@^29.0.0": "integrity" "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==" "resolved" "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz" @@ -1733,27 +9245,272 @@ "ansi-styles" "^5.0.0" "react-is" "^18.0.0" -"progress@^2.0.0": +"process-nextick-args@~2.0.0": + "integrity" "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + "resolved" "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" + "version" "2.0.1" + +"progress@^2.0.3": "integrity" "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" "resolved" "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz" "version" "2.0.3" -"punycode@^2.1.0": - "integrity" "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==" - "resolved" "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz" - "version" "2.3.0" +"promise-retry@^2.0.1": + "integrity" "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==" + "resolved" "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "err-code" "^2.0.2" + "retry" "^0.12.0" + +"promise@^7.1.1": + "integrity" "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==" + "resolved" "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz" + "version" "7.3.1" + dependencies: + "asap" "~2.0.3" + +"prompts@^2.0.1": + "integrity" "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==" + "resolved" "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz" + "version" "2.4.2" + dependencies: + "kleur" "^3.0.3" + "sisteransi" "^1.0.5" + +"prop-types@^15.8.1": + "integrity" "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==" + "resolved" "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" + "version" "15.8.1" + dependencies: + "loose-envify" "^1.4.0" + "object-assign" "^4.1.1" + "react-is" "^16.13.1" + +"proxy-addr@~2.0.7": + "integrity" "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==" + "resolved" "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz" + "version" "2.0.7" + dependencies: + "forwarded" "0.2.0" + "ipaddr.js" "1.9.1" + +"psl@^1.1.33": + "integrity" "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" + "resolved" "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz" + "version" "1.9.0" + +"pump@^3.0.0": + "integrity" "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==" + "resolved" "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "end-of-stream" "^1.1.0" + "once" "^1.3.1" + +"punycode@^2.1.0", "punycode@^2.1.1": + "integrity" "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==" + "resolved" "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz" + "version" "2.3.0" + +"pure-color@^1.2.0": + "integrity" "sha512-QFADYnsVoBMw1srW7OVKEYjG+MbIa49s54w1MA1EDY6r2r/sTcKKYqRX1f4GYvnXP7eN/Pe9HFcX+hwzmrXRHA==" + "resolved" "https://registry.npmjs.org/pure-color/-/pure-color-1.3.0.tgz" + "version" "1.3.0" + +"pure-rand@^6.0.0": + "integrity" "sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==" + "resolved" "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.4.tgz" + "version" "6.0.4" + +"qs@6.11.0": + "integrity" "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==" + "resolved" "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz" + "version" "6.11.0" + dependencies: + "side-channel" "^1.0.4" + +"querystringify@^2.1.1": + "integrity" "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" + "resolved" "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz" + "version" "2.2.0" + +"queue-microtask@^1.2.2", "queue-microtask@1.2.3": + "integrity" "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" + "resolved" "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" + "version" "1.2.3" + +"quick-lru@^5.1.1": + "integrity" "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" + "resolved" "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz" + "version" "5.1.1" + +"randombytes@^2.1.0": + "integrity" "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==" + "resolved" "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "safe-buffer" "^5.1.0" + +"range-parser@^1.2.1", "range-parser@~1.2.1": + "integrity" "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + "resolved" "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" + "version" "1.2.1" + +"raw-body@2.5.1": + "integrity" "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==" + "resolved" "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz" + "version" "2.5.1" + dependencies: + "bytes" "3.1.2" + "http-errors" "2.0.0" + "iconv-lite" "0.4.24" + "unpipe" "1.0.0" + +"react-base16-styling@^0.6.0": + "integrity" "sha512-yvh/7CArceR/jNATXOKDlvTnPKPmGZz7zsenQ3jUwLzHkNUR0CvY3yGYJbWJ/nnxsL8Sgmt5cO3/SILVuPO6TQ==" + "resolved" "https://registry.npmjs.org/react-base16-styling/-/react-base16-styling-0.6.0.tgz" + "version" "0.6.0" + dependencies: + "base16" "^1.0.0" + "lodash.curry" "^4.0.1" + "lodash.flow" "^3.3.0" + "pure-color" "^1.2.0" + +"react-dom@^17.0.0 || ^16.3.0 || ^15.5.4", "react-dom@^17.0.2", "react-dom@>=16", "react-dom@>=16.8", "react-dom@>=16.8.0": + "integrity" "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==" + "resolved" "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz" + "version" "17.0.2" + dependencies: + "loose-envify" "^1.1.0" + "object-assign" "^4.1.1" + "scheduler" "^0.20.2" + +"react-dom@^18.0.0", "react-dom@^18.2.0": + "integrity" "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==" + "resolved" "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz" + "version" "18.2.0" + dependencies: + "loose-envify" "^1.1.0" + "scheduler" "^0.23.0" + +"react-dom@>=18.0.0": + "integrity" "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==" + "resolved" "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz" + "version" "18.2.0" + dependencies: + "loose-envify" "^1.1.0" + "scheduler" "^0.23.0" + +"react-hot-toast@^2.1.1", "react-hot-toast@^2.4.1": + "integrity" "sha512-j8z+cQbWIM5LY37pR6uZR6D4LfseplqnuAO4co4u8917hBUvXlEqyP1ZzqVLcqoyUesZZv/ImreoCeHVDpE5pQ==" + "resolved" "https://registry.npmjs.org/react-hot-toast/-/react-hot-toast-2.4.1.tgz" + "version" "2.4.1" + dependencies: + "goober" "^2.1.10" + +"react-icons@^4.11.0": + "integrity" "sha512-V+4khzYcE5EBk/BvcuYRq6V/osf11ODUM2J8hg2FDSswRrGvqiYUYPRy4OdrWaQOBj4NcpJfmHZLNaD+VH0TyA==" + "resolved" "https://registry.npmjs.org/react-icons/-/react-icons-4.11.0.tgz" + "version" "4.11.0" + +"react-is@^16.12.0 || ^17.0.0 || ^18.0.0", "react-is@^18.0.0", "react-is@^18.2.0": + "integrity" "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + "resolved" "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz" + "version" "18.2.0" + +"react-is@^16.13.1": + "integrity" "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + "resolved" "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" + "version" "16.13.1" + +"react-is@^17.0.1": + "integrity" "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" + "resolved" "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" + "version" "17.0.2" + +"react-json-view@^1.21.3": + "integrity" "sha512-13p8IREj9/x/Ye4WI/JpjhoIwuzEgUAtgJZNBJckfzJt1qyh24BdTm6UQNGnyTq9dapQdrqvquZTo3dz1X6Cjw==" + "resolved" "https://registry.npmjs.org/react-json-view/-/react-json-view-1.21.3.tgz" + "version" "1.21.3" + dependencies: + "flux" "^4.0.1" + "react-base16-styling" "^0.6.0" + "react-lifecycles-compat" "^3.0.4" + "react-textarea-autosize" "^8.3.2" + +"react-lifecycles-compat@^3.0.4": + "integrity" "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" + "resolved" "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz" + "version" "3.0.4" + +"react-refresh@^0.14.0", "react-refresh@>=0.10.0 <1.0.0": + "integrity" "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==" + "resolved" "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz" + "version" "0.14.0" + +"react-router-dom@^6.16.0": + "integrity" "sha512-aTfBLv3mk/gaKLxgRDUPbPw+s4Y/O+ma3rEN1u8EgEpLpPe6gNjIsWt9rxushMHHMb7mSwxRGdGlGdvmFsyPIg==" + "resolved" "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.16.0.tgz" + "version" "6.16.0" + dependencies: + "@remix-run/router" "1.9.0" + "react-router" "6.16.0" + +"react-router-dom@6.15.0": + "integrity" "sha512-aR42t0fs7brintwBGAv2+mGlCtgtFQeOzK0BM1/OiqEzRejOZtpMZepvgkscpMUnKb8YO84G7s3LsHnnDNonbQ==" + "resolved" "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.15.0.tgz" + "version" "6.15.0" + dependencies: + "@remix-run/router" "1.8.0" + "react-router" "6.15.0" + +"react-router@6.15.0": + "integrity" "sha512-NIytlzvzLwJkCQj2HLefmeakxxWHWAP+02EGqWEZy+DgfHHKQMUoBBjUQLOtFInBMhWtb3hiUy6MfFgwLjXhqg==" + "resolved" "https://registry.npmjs.org/react-router/-/react-router-6.15.0.tgz" + "version" "6.15.0" + dependencies: + "@remix-run/router" "1.8.0" -"queue-microtask@^1.2.2", "queue-microtask@1.2.3": - "integrity" "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" - "resolved" "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" - "version" "1.2.3" +"react-router@6.16.0": + "integrity" "sha512-VT4Mmc4jj5YyjpOi5jOf0I+TYzGpvzERy4ckNSvSh2RArv8LLoCxlsZ2D+tc7zgjxcY34oTz2hZaeX5RVprKqA==" + "resolved" "https://registry.npmjs.org/react-router/-/react-router-6.16.0.tgz" + "version" "6.16.0" + dependencies: + "@remix-run/router" "1.9.0" -"react-is@^18.0.0": - "integrity" "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" - "resolved" "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz" +"react-shallow-renderer@^16.15.0": + "integrity" "sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==" + "resolved" "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz" + "version" "16.15.0" + dependencies: + "object-assign" "^4.1.1" + "react-is" "^16.12.0 || ^17.0.0 || ^18.0.0" + +"react-test-renderer@^18.2.0": + "integrity" "sha512-JWD+aQ0lh2gvh4NM3bBM42Kx+XybOxCpgYK7F8ugAlpaTSnWsX+39Z4XkOykGZAHrjwwTZT3x3KxswVWxHPUqA==" + "resolved" "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-18.2.0.tgz" "version" "18.2.0" + dependencies: + "react-is" "^18.2.0" + "react-shallow-renderer" "^16.15.0" + "scheduler" "^0.23.0" + +"react-textarea-autosize@^8.3.2": + "integrity" "sha512-XT1024o2pqCuZSuBt9FwHlaDeNtVrtCXu0Rnz88t1jUGheCLa3PhjE1GH8Ctm2axEtvdCl5SUHYschyQ0L5QHQ==" + "resolved" "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.5.3.tgz" + "version" "8.5.3" + dependencies: + "@babel/runtime" "^7.20.13" + "use-composed-ref" "^1.3.0" + "use-latest" "^1.2.1" + +"react-timeago@^6.2.1", "react-timeago@^7.2.0": + "integrity" "sha512-2KsBEEs+qRhKx/kekUVNSTIpop3Jwd7SRBm0R4Eiq3mPeswRGSsftY9FpKsE/lXLdURyQFiHeHFrIUxLYskG5g==" + "resolved" "https://registry.npmjs.org/react-timeago/-/react-timeago-7.2.0.tgz" + "version" "7.2.0" -"react@^17.0.0 || ^18.0.0": +"react@*", "react@^15.0.2 || ^16.0.0 || ^17.0.0", "react@^16.0.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^17.0.0 || ^16.3.0 || ^15.5.4", "react@^17.0.0 || ^18.0.0", "react@^17.0.2", "react@>=16", "react@>=16.8", "react@>=16.8.0", "react@>=17.0.0 || >=18.0.0", "react@17.0.2": "integrity" "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==" "resolved" "https://registry.npmjs.org/react/-/react-17.0.2.tgz" "version" "17.0.2" @@ -1761,31 +9518,281 @@ "loose-envify" "^1.1.0" "object-assign" "^4.1.1" -"reflect-metadata@^0.1.12": +"react@^18.0.0", "react@^18.2.0", "react@>=18.0.0": + "integrity" "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==" + "resolved" "https://registry.npmjs.org/react/-/react-18.2.0.tgz" + "version" "18.2.0" + dependencies: + "loose-envify" "^1.1.0" + +"read-config-file@6.3.2": + "integrity" "sha512-M80lpCjnE6Wt6zb98DoW8WHR09nzMSpu8XHtPkiTHrJ5Az9CybfeQhTJ8D7saeBHpGhLPIVyA8lcL6ZmdKwY6Q==" + "resolved" "https://registry.npmjs.org/read-config-file/-/read-config-file-6.3.2.tgz" + "version" "6.3.2" + dependencies: + "config-file-ts" "^0.2.4" + "dotenv" "^9.0.2" + "dotenv-expand" "^5.1.0" + "js-yaml" "^4.1.0" + "json5" "^2.2.0" + "lazy-val" "^1.0.4" + +"readable-stream@^2.0.1", "readable-stream@~2.3.6": + "integrity" "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==" + "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" + "version" "2.3.8" + 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" + +"readable-stream@^3.0.6": + "integrity" "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==" + "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" + "version" "3.6.2" + dependencies: + "inherits" "^2.0.3" + "string_decoder" "^1.1.1" + "util-deprecate" "^1.0.1" + +"readable-stream@^3.4.0": + "integrity" "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==" + "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" + "version" "3.6.2" + dependencies: + "inherits" "^2.0.3" + "string_decoder" "^1.1.1" + "util-deprecate" "^1.0.1" + +"readable-stream@^3.6.0": + "integrity" "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==" + "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" + "version" "3.6.2" + dependencies: + "inherits" "^2.0.3" + "string_decoder" "^1.1.1" + "util-deprecate" "^1.0.1" + +"readdirp@~3.6.0": + "integrity" "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==" + "resolved" "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" + "version" "3.6.0" + dependencies: + "picomatch" "^2.2.1" + +"rechoir@^0.8.0": + "integrity" "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==" + "resolved" "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz" + "version" "0.8.0" + dependencies: + "resolve" "^1.20.0" + +"redent@^3.0.0": + "integrity" "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==" + "resolved" "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "indent-string" "^4.0.0" + "strip-indent" "^3.0.0" + +"reflect-metadata@^0.1.12", "reflect-metadata@^0.1.13": "integrity" "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" "resolved" "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz" "version" "0.1.13" +"reflect.getprototypeof@^1.0.4": + "integrity" "sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==" + "resolved" "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz" + "version" "1.0.4" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.2.0" + "es-abstract" "^1.22.1" + "get-intrinsic" "^1.2.1" + "globalthis" "^1.0.3" + "which-builtin-type" "^1.1.3" + +"regenerate-unicode-properties@^10.1.0": + "integrity" "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==" + "resolved" "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz" + "version" "10.1.1" + dependencies: + "regenerate" "^1.4.2" + +"regenerate@^1.4.2": + "integrity" "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" + "resolved" "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz" + "version" "1.4.2" + "regenerator-runtime@^0.14.0": "integrity" "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" "resolved" "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz" "version" "0.14.0" -"regexpp@^3.1.0": - "integrity" "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==" - "resolved" "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz" - "version" "3.2.0" +"regenerator-transform@^0.15.2": + "integrity" "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==" + "resolved" "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz" + "version" "0.15.2" + dependencies: + "@babel/runtime" "^7.8.4" + +"regexp.prototype.flags@^1.5.0", "regexp.prototype.flags@^1.5.1": + "integrity" "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==" + "resolved" "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz" + "version" "1.5.1" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.2.0" + "set-function-name" "^2.0.0" + +"regexpu-core@^5.3.1": + "integrity" "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==" + "resolved" "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz" + "version" "5.3.2" + dependencies: + "@babel/regjsgen" "^0.8.0" + "regenerate" "^1.4.2" + "regenerate-unicode-properties" "^10.1.0" + "regjsparser" "^0.9.1" + "unicode-match-property-ecmascript" "^2.0.0" + "unicode-match-property-value-ecmascript" "^2.1.0" + +"regjsparser@^0.9.1": + "integrity" "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==" + "resolved" "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz" + "version" "0.9.1" + dependencies: + "jsesc" "~0.5.0" + +"relateurl@^0.2.7": + "integrity" "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==" + "resolved" "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz" + "version" "0.2.7" + +"remove-trailing-separator@^1.0.1": + "integrity" "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==" + "resolved" "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz" + "version" "1.1.0" + +"renderkid@^3.0.0": + "integrity" "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==" + "resolved" "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "css-select" "^4.1.3" + "dom-converter" "^0.2.0" + "htmlparser2" "^6.1.0" + "lodash" "^4.17.21" + "strip-ansi" "^6.0.1" + +"require-directory@^2.1.1": + "integrity" "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" + "resolved" "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" + "version" "2.1.1" "require-from-string@^2.0.2": "integrity" "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" "resolved" "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" "version" "2.0.2" +"requires-port@^1.0.0": + "integrity" "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + "resolved" "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" + "version" "1.0.0" + +"resolve-alpn@^1.0.0": + "integrity" "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" + "resolved" "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz" + "version" "1.2.1" + +"resolve-cwd@^3.0.0": + "integrity" "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==" + "resolved" "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "resolve-from" "^5.0.0" + "resolve-from@^4.0.0": "integrity" "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" "resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" "version" "4.0.0" +"resolve-from@^5.0.0": + "integrity" "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" + "resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" + "version" "5.0.0" + +"resolve-pkg-maps@^1.0.0": + "integrity" "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==" + "resolved" "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz" + "version" "1.0.0" + +"resolve.exports@^1.1.0": + "integrity" "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==" + "resolved" "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz" + "version" "1.1.1" + +"resolve.exports@^2.0.0": + "integrity" "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==" + "resolved" "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz" + "version" "2.0.2" + +"resolve@^1.14.2": + "integrity" "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==" + "resolved" "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz" + "version" "1.22.6" + dependencies: + "is-core-module" "^2.13.0" + "path-parse" "^1.0.7" + "supports-preserve-symlinks-flag" "^1.0.0" + +"resolve@^1.19.0": + "integrity" "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==" + "resolved" "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz" + "version" "1.22.6" + dependencies: + "is-core-module" "^2.13.0" + "path-parse" "^1.0.7" + "supports-preserve-symlinks-flag" "^1.0.0" + +"resolve@^1.20.0": + "integrity" "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==" + "resolved" "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz" + "version" "1.22.6" + dependencies: + "is-core-module" "^2.13.0" + "path-parse" "^1.0.7" + "supports-preserve-symlinks-flag" "^1.0.0" + +"resolve@^1.22.4": + "integrity" "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==" + "resolved" "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz" + "version" "1.22.6" + dependencies: + "is-core-module" "^2.13.0" + "path-parse" "^1.0.7" + "supports-preserve-symlinks-flag" "^1.0.0" + +"resolve@^2.0.0-next.4": + "integrity" "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==" + "resolved" "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz" + "version" "2.0.0-next.4" + dependencies: + "is-core-module" "^2.9.0" + "path-parse" "^1.0.7" + "supports-preserve-symlinks-flag" "^1.0.0" + +"responselike@^2.0.0": + "integrity" "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==" + "resolved" "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "lowercase-keys" "^2.0.0" + "restore-cursor@^3.1.0": "integrity" "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==" "resolved" "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" @@ -1794,6 +9801,16 @@ "onetime" "^5.1.0" "signal-exit" "^3.0.2" +"retry@^0.12.0": + "integrity" "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==" + "resolved" "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz" + "version" "0.12.0" + +"retry@^0.13.1": + "integrity" "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==" + "resolved" "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz" + "version" "0.13.1" + "reusify@^1.0.4": "integrity" "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" "resolved" "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" @@ -1804,13 +9821,46 @@ "resolved" "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz" "version" "1.3.0" -"rimraf@^3.0.2": +"rimraf@^3.0.0", "rimraf@^3.0.2": "integrity" "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==" "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" "version" "3.0.2" dependencies: "glob" "^7.1.3" +"rimraf@^5.0.1": + "integrity" "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==" + "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz" + "version" "5.0.5" + dependencies: + "glob" "^10.3.7" + +"roarr@^2.15.3": + "integrity" "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==" + "resolved" "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz" + "version" "2.15.4" + dependencies: + "boolean" "^3.0.1" + "detect-node" "^2.0.4" + "globalthis" "^1.0.1" + "json-stringify-safe" "^5.0.1" + "semver-compare" "^1.0.0" + "sprintf-js" "^1.1.2" + +"rollup@^1.20.0||^2.0.0||^3.0.0||^4.0.0", "rollup@^3.27.1": + "integrity" "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==" + "resolved" "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz" + "version" "3.29.4" + optionalDependencies: + "fsevents" "~2.3.2" + +"run-applescript@^5.0.0": + "integrity" "sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==" + "resolved" "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "execa" "^5.0.0" + "run-parallel@^1.1.9": "integrity" "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==" "resolved" "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" @@ -1818,25 +9868,286 @@ dependencies: "queue-microtask" "^1.2.2" -"rxjs@^7.1.0", "rxjs@^7.5.5": +"runtime-required@^1.1.0": + "integrity" "sha512-yX97f5E0WfNpcQnfVjap6vzQcvErkYYCx6eTK4siqGEdC8lglwypUFgZVTX7ShvIlgfkC4XGFl9O1KTYcff0pw==" + "resolved" "https://registry.npmjs.org/runtime-required/-/runtime-required-1.1.0.tgz" + "version" "1.1.0" + +"rxjs@^7.1.0", "rxjs@^7.2.0", "rxjs@^7.5.5": "integrity" "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==" "resolved" "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz" "version" "7.5.6" dependencies: "tslib" "^2.1.0" -"safer-buffer@>= 2.1.2 < 3.0.0": +"rxjs@^7.8.1": + "integrity" "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==" + "resolved" "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz" + "version" "7.8.1" + dependencies: + "tslib" "^2.1.0" + +"safe-array-concat@^1.0.1": + "integrity" "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==" + "resolved" "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "call-bind" "^1.0.2" + "get-intrinsic" "^1.2.1" + "has-symbols" "^1.0.3" + "isarray" "^2.0.5" + +"safe-buffer@^5.1.0", "safe-buffer@>=5.1.0", "safe-buffer@5.2.1": + "integrity" "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + "version" "5.2.1" + +"safe-buffer@~5.1.0": + "integrity" "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + "version" "5.1.2" + +"safe-buffer@~5.1.1": + "integrity" "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + "version" "5.1.2" + +"safe-buffer@5.1.2": + "integrity" "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + "version" "5.1.2" + +"safe-regex-test@^1.0.0": + "integrity" "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==" + "resolved" "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "call-bind" "^1.0.2" + "get-intrinsic" "^1.1.3" + "is-regex" "^1.1.4" + +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": "integrity" "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" "resolved" "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" "version" "2.1.2" -"semver@^7.2.1", "semver@^7.3.8": +"sanitize-filename@^1.6.3": + "integrity" "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==" + "resolved" "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz" + "version" "1.6.3" + dependencies: + "truncate-utf8-bytes" "^1.0.0" + +"sass-loader@^13.3.2": + "integrity" "sha512-CQbKl57kdEv+KDLquhC+gE3pXt74LEAzm+tzywcA0/aHZuub8wTErbjAoNI57rPUWRYRNC5WUnNl8eGJNbDdwg==" + "resolved" "https://registry.npmjs.org/sass-loader/-/sass-loader-13.3.2.tgz" + "version" "13.3.2" + dependencies: + "neo-async" "^2.6.2" + +"sass@*", "sass@^1.3.0", "sass@^1.42.1", "sass@^1.67.0", "sass@^1.69.0": + "integrity" "sha512-l3bbFpfTOGgQZCLU/gvm1lbsQ5mC/WnLz3djL2v4WCJBDrWm58PO+jgngcGRNnKUh6wSsdm50YaovTqskZ0xDQ==" + "resolved" "https://registry.npmjs.org/sass/-/sass-1.69.0.tgz" + "version" "1.69.0" + dependencies: + "chokidar" ">=3.0.0 <4.0.0" + "immutable" "^4.0.0" + "source-map-js" ">=0.6.2 <2.0.0" + +"sax@^1.2.4": + "integrity" "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==" + "resolved" "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz" + "version" "1.3.0" + +"saxes@^6.0.0": + "integrity" "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==" + "resolved" "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "xmlchars" "^2.2.0" + +"scheduler@^0.20.2": + "integrity" "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==" + "resolved" "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz" + "version" "0.20.2" + dependencies: + "loose-envify" "^1.1.0" + "object-assign" "^4.1.1" + +"scheduler@^0.23.0": + "integrity" "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==" + "resolved" "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz" + "version" "0.23.0" + dependencies: + "loose-envify" "^1.1.0" + +"schema-utils@^2.0.1": + "integrity" "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==" + "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz" + "version" "2.7.1" + dependencies: + "@types/json-schema" "^7.0.5" + "ajv" "^6.12.4" + "ajv-keywords" "^3.5.2" + +"schema-utils@^3.0.0", "schema-utils@^3.1.1", "schema-utils@^3.2.0": + "integrity" "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==" + "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" + "version" "3.3.0" + dependencies: + "@types/json-schema" "^7.0.8" + "ajv" "^6.12.5" + "ajv-keywords" "^3.5.2" + +"schema-utils@^4.0.0": + "integrity" "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==" + "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz" + "version" "4.2.0" + dependencies: + "@types/json-schema" "^7.0.9" + "ajv" "^8.9.0" + "ajv-formats" "^2.1.1" + "ajv-keywords" "^5.1.0" + +"schema-utils@^4.0.1": + "integrity" "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==" + "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz" + "version" "4.2.0" + dependencies: + "@types/json-schema" "^7.0.9" + "ajv" "^8.9.0" + "ajv-formats" "^2.1.1" + "ajv-keywords" "^5.1.0" + +"select-hose@^2.0.0": + "integrity" "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==" + "resolved" "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz" + "version" "2.0.0" + +"selfsigned@^2.1.1": + "integrity" "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==" + "resolved" "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz" + "version" "2.1.1" + dependencies: + "node-forge" "^1" + +"semver-compare@^1.0.0": + "integrity" "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==" + "resolved" "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz" + "version" "1.0.0" + +"semver@^5.7.2": + "integrity" "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" + "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" + "version" "5.7.2" + +"semver@^6.2.0": + "integrity" "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + "version" "6.3.1" + +"semver@^6.3.0": + "integrity" "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + "version" "6.3.1" + +"semver@^6.3.1": + "integrity" "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + "version" "6.3.1" + +"semver@^7.2.1", "semver@^7.3.2", "semver@^7.3.4", "semver@^7.3.5", "semver@^7.3.7", "semver@^7.3.8", "semver@^7.5.3", "semver@^7.5.4": "integrity" "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==" "resolved" "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz" "version" "7.5.4" dependencies: "lru-cache" "^6.0.0" +"send@0.18.0": + "integrity" "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==" + "resolved" "https://registry.npmjs.org/send/-/send-0.18.0.tgz" + "version" "0.18.0" + 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" + +"serialize-error@^7.0.1": + "integrity" "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==" + "resolved" "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz" + "version" "7.0.1" + dependencies: + "type-fest" "^0.13.1" + +"serialize-javascript@^6.0.1": + "integrity" "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==" + "resolved" "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz" + "version" "6.0.1" + dependencies: + "randombytes" "^2.1.0" + +"serve-index@^1.9.1": + "integrity" "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==" + "resolved" "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz" + "version" "1.9.1" + 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" + +"serve-static@1.15.0": + "integrity" "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==" + "resolved" "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz" + "version" "1.15.0" + dependencies: + "encodeurl" "~1.0.2" + "escape-html" "~1.0.3" + "parseurl" "~1.3.3" + "send" "0.18.0" + +"set-blocking@^2.0.0": + "integrity" "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + "resolved" "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" + "version" "2.0.0" + +"set-function-name@^2.0.0", "set-function-name@^2.0.1": + "integrity" "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==" + "resolved" "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "define-data-property" "^1.0.1" + "functions-have-names" "^1.2.3" + "has-property-descriptors" "^1.0.0" + +"setimmediate@^1.0.5": + "integrity" "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + "resolved" "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" + "version" "1.0.5" + +"setprototypeof@1.1.0": + "integrity" "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + "resolved" "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz" + "version" "1.1.0" + +"setprototypeof@1.2.0": + "integrity" "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + "resolved" "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" + "version" "1.2.0" + "sha3@^2.1.4": "integrity" "sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg==" "resolved" "https://registry.npmjs.org/sha3/-/sha3-2.1.4.tgz" @@ -1844,6 +10155,13 @@ dependencies: "buffer" "6.0.3" +"shallow-clone@^3.0.0": + "integrity" "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==" + "resolved" "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "kind-of" "^6.0.2" + "shebang-command@^2.0.0": "integrity" "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==" "resolved" "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" @@ -1856,11 +10174,51 @@ "resolved" "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" "version" "3.0.0" -"signal-exit@^3.0.2", "signal-exit@^3.0.3": +"shell-quote@^1.8.1": + "integrity" "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==" + "resolved" "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz" + "version" "1.8.1" + +"side-channel@^1.0.4": + "integrity" "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==" + "resolved" "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" + "version" "1.0.4" + dependencies: + "call-bind" "^1.0.0" + "get-intrinsic" "^1.0.2" + "object-inspect" "^1.9.0" + +"signal-exit@^3.0.2", "signal-exit@^3.0.3", "signal-exit@^3.0.7": "integrity" "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" "resolved" "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" "version" "3.0.7" +"signal-exit@^4.0.1": + "integrity" "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==" + "resolved" "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz" + "version" "4.1.0" + +"simple-update-notifier@2.0.0": + "integrity" "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==" + "resolved" "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "semver" "^7.5.3" + +"sirv@^2.0.3": + "integrity" "sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==" + "resolved" "https://registry.npmjs.org/sirv/-/sirv-2.0.3.tgz" + "version" "2.0.3" + dependencies: + "@polka/url" "^1.0.0-next.20" + "mrmime" "^1.0.0" + "totalist" "^3.0.0" + +"sisteransi@^1.0.5": + "integrity" "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" + "resolved" "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" + "version" "1.0.5" + "slash@^3.0.0": "integrity" "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" "resolved" "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" @@ -1892,6 +10250,86 @@ "ansi-styles" "^6.0.0" "is-fullwidth-code-point" "^4.0.0" +"smart-buffer@^4.0.2", "smart-buffer@^4.2.0": + "integrity" "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==" + "resolved" "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz" + "version" "4.2.0" + +"snake-case@^3.0.4": + "integrity" "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==" + "resolved" "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz" + "version" "3.0.4" + dependencies: + "dot-case" "^3.0.4" + "tslib" "^2.0.3" + +"sockjs@^0.3.24": + "integrity" "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==" + "resolved" "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz" + "version" "0.3.24" + dependencies: + "faye-websocket" "^0.11.3" + "uuid" "^8.3.2" + "websocket-driver" "^0.7.4" + +"socks-proxy-agent@^7.0.0": + "integrity" "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==" + "resolved" "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz" + "version" "7.0.0" + dependencies: + "agent-base" "^6.0.2" + "debug" "^4.3.3" + "socks" "^2.6.2" + +"socks@^2.6.2": + "integrity" "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==" + "resolved" "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz" + "version" "2.7.1" + dependencies: + "ip" "^2.0.0" + "smart-buffer" "^4.2.0" + +"source-map-js@^1.0.1", "source-map-js@^1.0.2", "source-map-js@>=0.6.2 <2.0.0": + "integrity" "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" + "resolved" "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" + "version" "1.0.2" + +"source-map-support@^0.5.19", "source-map-support@~0.5.20": + "integrity" "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==" + "resolved" "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" + "version" "0.5.21" + dependencies: + "buffer-from" "^1.0.0" + "source-map" "^0.6.0" + +"source-map-support@0.5.13": + "integrity" "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==" + "resolved" "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz" + "version" "0.5.13" + dependencies: + "buffer-from" "^1.0.0" + "source-map" "^0.6.0" + +"source-map@^0.6.0", "source-map@^0.6.1", "source-map@~0.6.0", "source-map@~0.6.1": + "integrity" "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + "version" "0.6.1" + +"source-map@^0.7.3": + "integrity" "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==" + "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" + "version" "0.7.4" + +"source-map@^0.7.4": + "integrity" "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==" + "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" + "version" "0.7.4" + +"spawn-command@0.0.2": + "integrity" "sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==" + "resolved" "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz" + "version" "0.0.2" + "spdx-exceptions@^2.1.0": "integrity" "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" "resolved" "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz" @@ -1910,11 +10348,46 @@ "resolved" "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.15.tgz" "version" "3.0.15" +"spdy-transport@^3.0.0": + "integrity" "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==" + "resolved" "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz" + "version" "3.0.0" + 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" + +"spdy@^4.0.2": + "integrity" "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==" + "resolved" "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz" + "version" "4.0.2" + 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" + +"sprintf-js@^1.1.2": + "integrity" "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==" + "resolved" "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz" + "version" "1.1.3" + "sprintf-js@~1.0.2": "integrity" "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" "resolved" "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" "version" "1.0.3" +"ssri@^10.0.0": + "integrity" "sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==" + "resolved" "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz" + "version" "10.0.5" + dependencies: + "minipass" "^7.0.3" + "stack-utils@^2.0.3": "integrity" "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==" "resolved" "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz" @@ -1922,12 +10395,63 @@ dependencies: "escape-string-regexp" "^2.0.0" +"stackframe@^1.3.4": + "integrity" "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==" + "resolved" "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz" + "version" "1.3.4" + +"stat-mode@^1.0.0": + "integrity" "sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg==" + "resolved" "https://registry.npmjs.org/stat-mode/-/stat-mode-1.0.0.tgz" + "version" "1.0.0" + +"statuses@>= 1.4.0 < 2": + "integrity" "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==" + "resolved" "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" + "version" "1.5.0" + +"statuses@2.0.1": + "integrity" "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" + "resolved" "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" + "version" "2.0.1" + +"stop-iteration-iterator@^1.0.0": + "integrity" "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==" + "resolved" "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "internal-slot" "^1.0.4" + +"string_decoder@^1.1.1", "string_decoder@~1.1.1": + "integrity" "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==" + "resolved" "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + "version" "1.1.1" + dependencies: + "safe-buffer" "~5.1.0" + "string-argv@^0.3.1": "integrity" "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==" "resolved" "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz" "version" "0.3.1" -"string-width@^4.1.0", "string-width@^4.2.0", "string-width@^4.2.3": +"string-length@^4.0.1": + "integrity" "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==" + "resolved" "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz" + "version" "4.0.2" + dependencies: + "char-regex" "^1.0.2" + "strip-ansi" "^6.0.0" + +"string-width-cjs@npm:string-width@^4.2.0": + "integrity" "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==" + "resolved" "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + "version" "4.2.3" + dependencies: + "emoji-regex" "^8.0.0" + "is-fullwidth-code-point" "^3.0.0" + "strip-ansi" "^6.0.1" + +"string-width@^1.0.2 || 2 || 3 || 4", "string-width@^4.1.0", "string-width@^4.2.0", "string-width@^4.2.3": "integrity" "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==" "resolved" "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" "version" "4.2.3" @@ -1945,6 +10469,64 @@ "emoji-regex" "^9.2.2" "strip-ansi" "^7.0.1" +"string-width@^5.0.1", "string-width@^5.1.2": + "integrity" "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==" + "resolved" "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz" + "version" "5.1.2" + dependencies: + "eastasianwidth" "^0.2.0" + "emoji-regex" "^9.2.2" + "strip-ansi" "^7.0.1" + +"string.prototype.matchall@^4.0.8": + "integrity" "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==" + "resolved" "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz" + "version" "4.0.10" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.2.0" + "es-abstract" "^1.22.1" + "get-intrinsic" "^1.2.1" + "has-symbols" "^1.0.3" + "internal-slot" "^1.0.5" + "regexp.prototype.flags" "^1.5.0" + "set-function-name" "^2.0.0" + "side-channel" "^1.0.4" + +"string.prototype.trim@^1.2.8": + "integrity" "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==" + "resolved" "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz" + "version" "1.2.8" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.2.0" + "es-abstract" "^1.22.1" + +"string.prototype.trimend@^1.0.7": + "integrity" "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==" + "resolved" "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz" + "version" "1.0.7" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.2.0" + "es-abstract" "^1.22.1" + +"string.prototype.trimstart@^1.0.7": + "integrity" "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==" + "resolved" "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz" + "version" "1.0.7" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.2.0" + "es-abstract" "^1.22.1" + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + "integrity" "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==" + "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + "version" "6.0.1" + dependencies: + "ansi-regex" "^5.0.1" + "strip-ansi@^6.0.0", "strip-ansi@^6.0.1": "integrity" "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==" "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" @@ -1953,20 +10535,69 @@ "ansi-regex" "^5.0.1" "strip-ansi@^7.0.1": - "version" "7.0.1" + "integrity" "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==" + "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz" + "version" "7.1.0" dependencies: "ansi-regex" "^6.0.1" +"strip-bom@^3.0.0": + "integrity" "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==" + "resolved" "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" + "version" "3.0.0" + +"strip-bom@^4.0.0": + "integrity" "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==" + "resolved" "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz" + "version" "4.0.0" + "strip-final-newline@^2.0.0": "integrity" "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" "resolved" "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" "version" "2.0.0" -"strip-json-comments@^3.1.0", "strip-json-comments@^3.1.1": +"strip-final-newline@^3.0.0": + "integrity" "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==" + "resolved" "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz" + "version" "3.0.0" + +"strip-indent@^3.0.0": + "integrity" "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==" + "resolved" "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "min-indent" "^1.0.0" + +"strip-json-comments@^3.1.1": "integrity" "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" "resolved" "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" "version" "3.1.1" +"style-loader@^3.3.3": + "integrity" "sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw==" + "resolved" "https://registry.npmjs.org/style-loader/-/style-loader-3.3.3.tgz" + "version" "3.3.3" + +"style-mod@^4.0.0", "style-mod@^4.1.0": + "integrity" "sha512-Ca5ib8HrFn+f+0n4N4ScTIA9iTOQ7MaGS1ylHcoVqW9J7w2w8PzN6g9gKmTYgGEBH8e120+RCmhpje6jC5uGWA==" + "resolved" "https://registry.npmjs.org/style-mod/-/style-mod-4.1.0.tgz" + "version" "4.1.0" + +"stylehacks@^6.0.0": + "integrity" "sha512-+UT589qhHPwz6mTlCLSt/vMNTJx8dopeJlZAlBMJPWA3ORqu6wmQY7FBXf+qD+FsqoBJODyqNxOUP3jdntFRdw==" + "resolved" "https://registry.npmjs.org/stylehacks/-/stylehacks-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "browserslist" "^4.21.4" + "postcss-selector-parser" "^6.0.4" + +"sumchecker@^3.0.1": + "integrity" "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==" + "resolved" "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "debug" "^4.1.0" + "supports-color@^5.3.0": "integrity" "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==" "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" @@ -1981,21 +10612,112 @@ dependencies: "has-flag" "^4.0.0" +"supports-color@^8.0.0", "supports-color@^8.1.1": + "integrity" "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==" + "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" + "version" "8.1.1" + dependencies: + "has-flag" "^4.0.0" + "supports-color@^9.2.2": "integrity" "sha512-XC6g/Kgux+rJXmwokjm9ECpD6k/smUoS5LKlUCcsYr4IY3rW0XyAympon2RmxGrlnZURMpg5T18gWDP9CsHXFA==" "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-9.2.2.tgz" "version" "9.2.2" -"table@^6.0.9": - "integrity" "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==" - "resolved" "https://registry.npmjs.org/table/-/table-6.8.1.tgz" - "version" "6.8.1" +"supports-preserve-symlinks-flag@^1.0.0": + "integrity" "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" + "resolved" "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" + "version" "1.0.0" + +"svg-parser@^2.0.4": + "integrity" "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==" + "resolved" "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz" + "version" "2.0.4" + +"svgo@^3.0.2": + "integrity" "sha512-Z706C1U2pb1+JGP48fbazf3KxHrWOsLme6Rv7imFBn5EnuanDW1GPaA/P1/dvObE670JDePC3mnj0k0B7P0jjQ==" + "resolved" "https://registry.npmjs.org/svgo/-/svgo-3.0.2.tgz" + "version" "3.0.2" dependencies: - "ajv" "^8.0.1" - "lodash.truncate" "^4.4.2" - "slice-ansi" "^4.0.0" - "string-width" "^4.2.3" - "strip-ansi" "^6.0.1" + "@trysound/sax" "0.2.0" + "commander" "^7.2.0" + "css-select" "^5.1.0" + "css-tree" "^2.2.1" + "csso" "^5.0.5" + "picocolors" "^1.0.0" + +"symbol-tree@^3.2.4": + "integrity" "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" + "resolved" "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz" + "version" "3.2.4" + +"synckit@^0.8.5": + "integrity" "sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==" + "resolved" "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz" + "version" "0.8.5" + dependencies: + "@pkgr/utils" "^2.3.1" + "tslib" "^2.5.0" + +"tapable@^0.1.8": + "integrity" "sha512-jX8Et4hHg57mug1/079yitEKWGB3LCwoxByLsNim89LABq8NqgiX+6iYVOsq0vX8uJHkU+DZ5fnq95f800bEsQ==" + "resolved" "https://registry.npmjs.org/tapable/-/tapable-0.1.10.tgz" + "version" "0.1.10" + +"tapable@^2.0.0", "tapable@^2.1.1", "tapable@^2.2.0": + "integrity" "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" + "resolved" "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz" + "version" "2.2.1" + +"tar@^6.0.5", "tar@^6.1.11", "tar@^6.1.12", "tar@^6.1.2": + "integrity" "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==" + "resolved" "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz" + "version" "6.2.0" + 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" + +"temp-file@^3.4.0": + "integrity" "sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg==" + "resolved" "https://registry.npmjs.org/temp-file/-/temp-file-3.4.0.tgz" + "version" "3.4.0" + dependencies: + "async-exit-hook" "^2.0.1" + "fs-extra" "^10.0.0" + +"terser-webpack-plugin@*", "terser-webpack-plugin@^5.3.7", "terser-webpack-plugin@^5.3.9": + "integrity" "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==" + "resolved" "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz" + "version" "5.3.9" + dependencies: + "@jridgewell/trace-mapping" "^0.3.17" + "jest-worker" "^27.4.5" + "schema-utils" "^3.1.1" + "serialize-javascript" "^6.0.1" + "terser" "^5.16.8" + +"terser@^5.10.0", "terser@^5.16.8", "terser@^5.4.0": + "integrity" "sha512-WtnFKrxu9kaoXuiZFSGrcAvvBqAdmKx0SFNmVNYdJamMu9yyN3I/QF0FbH4QcqJQ+y1CJnzxGIKH0cSj+FGYRw==" + "resolved" "https://registry.npmjs.org/terser/-/terser-5.21.0.tgz" + "version" "5.21.0" + dependencies: + "@jridgewell/source-map" "^0.3.3" + "acorn" "^8.8.2" + "commander" "^2.20.0" + "source-map-support" "~0.5.20" + +"test-exclude@^6.0.0": + "integrity" "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==" + "resolved" "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "@istanbuljs/schema" "^0.1.2" + "glob" "^7.1.4" + "minimatch" "^3.0.4" "text-table@^0.2.0": "integrity" "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" @@ -2007,6 +10729,45 @@ "resolved" "https://registry.npmjs.org/through/-/through-2.3.8.tgz" "version" "2.3.8" +"thunky@^1.0.2": + "integrity" "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" + "resolved" "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz" + "version" "1.1.0" + +"tiny-typed-emitter@^2.1.0": + "integrity" "sha512-qVtvMxeXbVej0cQWKqVSSAHmKZEHAvxdF8HEUBFWts8h+xEo5m/lEiPakuyZ3BnCBjOD8i24kzNOiOLLgsSxhA==" + "resolved" "https://registry.npmjs.org/tiny-typed-emitter/-/tiny-typed-emitter-2.1.0.tgz" + "version" "2.1.0" + +"titleize@^3.0.0": + "integrity" "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==" + "resolved" "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz" + "version" "3.0.0" + +"tmp-promise@^3.0.2": + "integrity" "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==" + "resolved" "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz" + "version" "3.0.3" + dependencies: + "tmp" "^0.2.0" + +"tmp@^0.2.0": + "integrity" "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==" + "resolved" "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz" + "version" "0.2.1" + dependencies: + "rimraf" "^3.0.0" + +"tmpl@1.0.5": + "integrity" "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==" + "resolved" "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz" + "version" "1.0.5" + +"to-fast-properties@^2.0.0": + "integrity" "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" + "resolved" "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" + "version" "2.0.0" + "to-regex-range@^5.0.1": "integrity" "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==" "resolved" "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" @@ -2014,16 +10775,159 @@ dependencies: "is-number" "^7.0.0" +"toggle-selection@^1.0.6": + "integrity" "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==" + "resolved" "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz" + "version" "1.0.6" + +"toidentifier@1.0.1": + "integrity" "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" + "resolved" "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" + "version" "1.0.1" + +"totalist@^3.0.0": + "integrity" "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==" + "resolved" "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz" + "version" "3.0.1" + +"tough-cookie@^4.1.2": + "integrity" "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==" + "resolved" "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz" + "version" "4.1.3" + dependencies: + "psl" "^1.1.33" + "punycode" "^2.1.1" + "universalify" "^0.2.0" + "url-parse" "^1.5.3" + +"tr46@^3.0.0": + "integrity" "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==" + "resolved" "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "punycode" "^2.1.1" + "tr46@~0.0.3": "integrity" "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" "resolved" "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" "version" "0.0.3" -"tslib@^2.1.0", "tslib@2.4.0": +"tree-kill@^1.2.2": + "integrity" "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==" + "resolved" "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz" + "version" "1.2.2" + +"truncate-utf8-bytes@^1.0.0": + "integrity" "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==" + "resolved" "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "utf8-byte-length" "^1.0.1" + +"ts-api-utils@^1.0.1": + "integrity" "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==" + "resolved" "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz" + "version" "1.0.3" + +"ts-jest@^27.0.3", "ts-jest@^29.1.1": + "integrity" "sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==" + "resolved" "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz" + "version" "29.1.1" + dependencies: + "bs-logger" "0.x" + "fast-json-stable-stringify" "2.x" + "jest-util" "^29.0.0" + "json5" "^2.2.3" + "lodash.memoize" "4.x" + "make-error" "1.x" + "semver" "^7.5.3" + "yargs-parser" "^21.0.1" + +"ts-loader@^9.2.3", "ts-loader@^9.4.4": + "integrity" "sha512-LLlB/pkB4q9mW2yLdFMnK3dEHbrBjeZTYguaaIfusyojBgAGf5kF+O6KcWqiGzWqHk0LBsoolrp4VftEURhybg==" + "resolved" "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.0.tgz" + "version" "9.5.0" + dependencies: + "chalk" "^4.1.0" + "enhanced-resolve" "^5.0.0" + "micromatch" "^4.0.0" + "semver" "^7.3.4" + "source-map" "^0.7.4" + +"ts-node@^10.0.0", "ts-node@^10.9.1", "ts-node@>=9.0.0": + "integrity" "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==" + "resolved" "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz" + "version" "10.9.1" + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + "acorn" "^8.4.1" + "acorn-walk" "^8.1.1" + "arg" "^4.1.0" + "create-require" "^1.1.0" + "diff" "^4.0.1" + "make-error" "^1.1.1" + "v8-compile-cache-lib" "^3.0.1" + "yn" "3.1.1" + +"tsconfig-paths-webpack-plugin@^4.1.0": + "integrity" "sha512-xWFISjviPydmtmgeUAuXp4N1fky+VCtfhOkDUFIv5ea7p4wuTomI4QTrXvFBX2S4jZsmyTSrStQl+E+4w+RzxA==" + "resolved" "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "chalk" "^4.1.0" + "enhanced-resolve" "^5.7.0" + "tsconfig-paths" "^4.1.2" + +"tsconfig-paths@^3.10.1", "tsconfig-paths@^3.14.2": + "integrity" "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==" + "resolved" "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz" + "version" "3.14.2" + dependencies: + "@types/json5" "^0.0.29" + "json5" "^1.0.2" + "minimist" "^1.2.6" + "strip-bom" "^3.0.0" + +"tsconfig-paths@^4.1.2": + "integrity" "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==" + "resolved" "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz" + "version" "4.2.0" + dependencies: + "json5" "^2.2.2" + "minimist" "^1.2.6" + "strip-bom" "^3.0.0" + +"tslib@^1.8.1": + "integrity" "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "resolved" "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" + "version" "1.14.1" + +"tslib@^2.0.3", "tslib@^2.1.0", "tslib@2.4.0": "integrity" "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz" "version" "2.4.0" +"tslib@^2.5.0": + "integrity" "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" + "version" "2.6.2" + +"tslib@^2.6.0": + "integrity" "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" + "version" "2.6.2" + +"tsutils@^3.21.0": + "integrity" "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==" + "resolved" "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz" + "version" "3.21.0" + dependencies: + "tslib" "^1.8.1" + "turbo-darwin-arm64@1.10.4": "integrity" "sha512-N0XPFLXsZRLE6gKDa5MREpPQp0drOz9PrADaaMXTlspxWS/tmmxyH+ZQ/uGqKC/0mqsNIhZuSFsEVZe1PGaqxw==" "resolved" "https://registry.npmjs.org/turbo-darwin-arm64/-/turbo-darwin-arm64-1.10.4.tgz" @@ -2048,6 +10952,16 @@ dependencies: "prelude-ls" "^1.2.1" +"type-detect@4.0.8": + "integrity" "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" + "resolved" "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" + "version" "4.0.8" + +"type-fest@^0.13.1": + "integrity" "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==" + "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz" + "version" "0.13.1" + "type-fest@^0.20.2": "integrity" "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" @@ -2058,11 +10972,179 @@ "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" "version" "0.21.3" -"typescript@^4.3.5": +"type-fest@>=0.17.0 <5.0.0": + "integrity" "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==" + "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz" + "version" "1.4.0" + +"type-is@~1.6.18": + "integrity" "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==" + "resolved" "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" + "version" "1.6.18" + dependencies: + "media-typer" "0.3.0" + "mime-types" "~2.1.24" + +"typed-array-buffer@^1.0.0": + "integrity" "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==" + "resolved" "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "call-bind" "^1.0.2" + "get-intrinsic" "^1.2.1" + "is-typed-array" "^1.1.10" + +"typed-array-byte-length@^1.0.0": + "integrity" "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==" + "resolved" "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "call-bind" "^1.0.2" + "for-each" "^0.3.3" + "has-proto" "^1.0.1" + "is-typed-array" "^1.1.10" + +"typed-array-byte-offset@^1.0.0": + "integrity" "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==" + "resolved" "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "available-typed-arrays" "^1.0.5" + "call-bind" "^1.0.2" + "for-each" "^0.3.3" + "has-proto" "^1.0.1" + "is-typed-array" "^1.1.10" + +"typed-array-length@^1.0.4": + "integrity" "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==" + "resolved" "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz" + "version" "1.0.4" + dependencies: + "call-bind" "^1.0.2" + "for-each" "^0.3.3" + "is-typed-array" "^1.1.9" + +"typescript@*", "typescript@^4.0.2", "typescript@^4.3.5", "typescript@^4.4.3", "typescript@>=2.7", "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta", "typescript@>=4.2.0", "typescript@>=4.3 <6", "typescript@5.2.2": "integrity" "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==" "resolved" "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz" "version" "4.7.4" +"typescript@^4.9.5": + "integrity" "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==" + "resolved" "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz" + "version" "4.9.5" + +"typescript@^5.2.2": + "integrity" "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==" + "resolved" "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz" + "version" "5.2.2" + +"typescript@>=4.9.5": + "integrity" "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==" + "resolved" "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz" + "version" "5.2.2" + +"ua-parser-js@^1.0.35": + "integrity" "sha512-znuyCIXzl8ciS3+y3fHJI/2OhQIXbXw9MWC/o3qwyR+RGppjZHrM27CGFSKCJXi2Kctiz537iOu2KnXs1lMQhw==" + "resolved" "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.36.tgz" + "version" "1.0.36" + +"unbox-primitive@^1.0.2": + "integrity" "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==" + "resolved" "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "call-bind" "^1.0.2" + "has-bigints" "^1.0.2" + "has-symbols" "^1.0.3" + "which-boxed-primitive" "^1.0.2" + +"unicode-canonical-property-names-ecmascript@^2.0.0": + "integrity" "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==" + "resolved" "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz" + "version" "2.0.0" + +"unicode-match-property-ecmascript@^2.0.0": + "integrity" "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==" + "resolved" "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "unicode-canonical-property-names-ecmascript" "^2.0.0" + "unicode-property-aliases-ecmascript" "^2.0.0" + +"unicode-match-property-value-ecmascript@^2.1.0": + "integrity" "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==" + "resolved" "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz" + "version" "2.1.0" + +"unicode-property-aliases-ecmascript@^2.0.0": + "integrity" "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==" + "resolved" "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz" + "version" "2.1.0" + +"unique-filename@^3.0.0": + "integrity" "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==" + "resolved" "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "unique-slug" "^4.0.0" + +"unique-slug@^4.0.0": + "integrity" "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==" + "resolved" "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "imurmurhash" "^0.1.4" + +"universalify@^0.1.0": + "integrity" "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + "resolved" "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" + "version" "0.1.2" + +"universalify@^0.2.0": + "integrity" "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==" + "resolved" "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz" + "version" "0.2.0" + +"universalify@^2.0.0": + "integrity" "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" + "resolved" "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz" + "version" "2.0.0" + +"unixify@^1.0.0": + "integrity" "sha512-6bc58dPYhCMHHuwxldQxO3RRNZ4eCogZ/st++0+fcC1nr0jiGUtAdBJ2qzmLQWSxbtz42pWt4QQMiZ9HvZf5cg==" + "resolved" "https://registry.npmjs.org/unixify/-/unixify-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "normalize-path" "^2.1.1" + +"unpipe@~1.0.0", "unpipe@1.0.0": + "integrity" "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" + "resolved" "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" + "version" "1.0.0" + +"untildify@^4.0.0": + "integrity" "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==" + "resolved" "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz" + "version" "4.0.0" + +"unzip-crx-3@^0.2.0": + "integrity" "sha512-0+JiUq/z7faJ6oifVB5nSwt589v1KCduqIJupNVDoWSXZtWDmjDGO3RAEOvwJ07w90aoXoP4enKsR7ecMrJtWQ==" + "resolved" "https://registry.npmjs.org/unzip-crx-3/-/unzip-crx-3-0.2.0.tgz" + "version" "0.2.0" + dependencies: + "jszip" "^3.1.0" + "mkdirp" "^0.5.1" + "yaku" "^0.16.6" + +"update-browserslist-db@^1.0.13": + "integrity" "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==" + "resolved" "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz" + "version" "1.0.13" + dependencies: + "escalade" "^3.1.1" + "picocolors" "^1.0.0" + "uri-js@^4.2.2": "integrity" "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==" "resolved" "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" @@ -2070,26 +11152,345 @@ dependencies: "punycode" "^2.1.0" -"uuid@8.3.2": +"url-loader@^4.1.1": + "integrity" "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==" + "resolved" "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz" + "version" "4.1.1" + dependencies: + "loader-utils" "^2.0.0" + "mime-types" "^2.1.27" + "schema-utils" "^3.0.0" + +"url-parse@^1.5.3": + "integrity" "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==" + "resolved" "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz" + "version" "1.5.10" + dependencies: + "querystringify" "^2.1.1" + "requires-port" "^1.0.0" + +"use-composed-ref@^1.3.0": + "integrity" "sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==" + "resolved" "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.3.0.tgz" + "version" "1.3.0" + +"use-isomorphic-layout-effect@^1.1.1": + "integrity" "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==" + "resolved" "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz" + "version" "1.1.2" + +"use-latest@^1.2.1": + "integrity" "sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==" + "resolved" "https://registry.npmjs.org/use-latest/-/use-latest-1.2.1.tgz" + "version" "1.2.1" + dependencies: + "use-isomorphic-layout-effect" "^1.1.1" + +"utf8-byte-length@^1.0.1": + "integrity" "sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==" + "resolved" "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz" + "version" "1.0.4" + +"util-deprecate@^1.0.1", "util-deprecate@^1.0.2", "util-deprecate@~1.0.1": + "integrity" "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + "resolved" "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + "version" "1.0.2" + +"utila@~0.4": + "integrity" "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==" + "resolved" "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz" + "version" "0.4.0" + +"utils-merge@1.0.1": + "integrity" "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" + "resolved" "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" + "version" "1.0.1" + +"uuid@^8.3.2", "uuid@8.3.2": "integrity" "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" "resolved" "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" "version" "8.3.2" -"v8-compile-cache@^2.0.3": - "integrity" "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==" - "resolved" "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz" - "version" "2.4.0" +"v8-compile-cache-lib@^3.0.1": + "integrity" "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==" + "resolved" "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz" + "version" "3.0.1" + +"v8-to-istanbul@^9.0.1": + "integrity" "sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg==" + "resolved" "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.3.tgz" + "version" "9.1.3" + dependencies: + "@jridgewell/trace-mapping" "^0.3.12" + "@types/istanbul-lib-coverage" "^2.0.1" + "convert-source-map" "^2.0.0" "validator@^13.7.0": "integrity" "sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==" "resolved" "https://registry.npmjs.org/validator/-/validator-13.11.0.tgz" "version" "13.11.0" +"vary@~1.1.2": + "integrity" "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" + "resolved" "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" + "version" "1.1.2" + +"verror@^1.10.0": + "integrity" "sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==" + "resolved" "https://registry.npmjs.org/verror/-/verror-1.10.1.tgz" + "version" "1.10.1" + dependencies: + "assert-plus" "^1.0.0" + "core-util-is" "1.0.2" + "extsprintf" "^1.2.0" + +"vite-plugin-svgr@^4.1.0": + "integrity" "sha512-v7Qic+FWmCChgQNGSI4V8X63OEYsdUoLt66iqIcHozq9bfK/Dwmr0V+LBy1NE8CE98Y8HouEBJ+pto4AMfN5xw==" + "resolved" "https://registry.npmjs.org/vite-plugin-svgr/-/vite-plugin-svgr-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "@rollup/pluginutils" "^5.0.4" + "@svgr/core" "^8.1.0" + "@svgr/plugin-jsx" "^8.1.0" + +"vite@^2.6.0 || 3 || 4", "vite@4.4.11": + "integrity" "sha512-ksNZJlkcU9b0lBwAGZGGaZHCMqHsc8OpgtoYhsQ4/I2v5cnpmmmqe5pM4nv/4Hn6G/2GhTdj0DhZh2e+Er1q5A==" + "resolved" "https://registry.npmjs.org/vite/-/vite-4.4.11.tgz" + "version" "4.4.11" + dependencies: + "esbuild" "^0.18.10" + "postcss" "^8.4.27" + "rollup" "^3.27.1" + optionalDependencies: + "fsevents" "~2.3.2" + +"w3c-keyname@^2.2.4": + "integrity" "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==" + "resolved" "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz" + "version" "2.2.8" + +"w3c-xmlserializer@^4.0.0": + "integrity" "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==" + "resolved" "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "xml-name-validator" "^4.0.0" + +"walker@^1.0.7", "walker@^1.0.8": + "integrity" "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==" + "resolved" "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz" + "version" "1.0.8" + dependencies: + "makeerror" "1.0.12" + +"watchboy@^0.4.3": + "integrity" "sha512-GHs1HxwvxSMBsqd/WfTOZhj5gBdMqf5HQpfgtKxDfZRxrlYPDdVLRB61LCeRzJaWANmvSIMlfmRVDwVmJFgAKA==" + "resolved" "https://registry.npmjs.org/watchboy/-/watchboy-0.4.3.tgz" + "version" "0.4.3" + dependencies: + "lodash.difference" "^4.5.0" + "micromatch" "^4.0.2" + "pify" "^4.0.1" + "unixify" "^1.0.0" + +"watchpack@^2.4.0": + "integrity" "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==" + "resolved" "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz" + "version" "2.4.0" + dependencies: + "glob-to-regexp" "^0.4.1" + "graceful-fs" "^4.1.2" + +"wbuf@^1.1.0", "wbuf@^1.7.3": + "integrity" "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==" + "resolved" "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz" + "version" "1.7.3" + dependencies: + "minimalistic-assert" "^1.0.0" + +"wcwidth@^1.0.1": + "integrity" "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==" + "resolved" "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "defaults" "^1.0.3" + "webidl-conversions@^3.0.0": "integrity" "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" "resolved" "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" "version" "3.0.1" +"webidl-conversions@^7.0.0": + "integrity" "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==" + "resolved" "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz" + "version" "7.0.0" + +"webpack-bundle-analyzer@^4.9.1": + "integrity" "sha512-jnd6EoYrf9yMxCyYDPj8eutJvtjQNp8PHmni/e/ulydHBWhT5J3menXt3HEkScsu9YqMAcG4CfFjs3rj5pVU1w==" + "resolved" "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.9.1.tgz" + "version" "4.9.1" + dependencies: + "@discoveryjs/json-ext" "0.5.7" + "acorn" "^8.0.4" + "acorn-walk" "^8.0.0" + "commander" "^7.2.0" + "escape-string-regexp" "^4.0.0" + "gzip-size" "^6.0.0" + "is-plain-object" "^5.0.0" + "lodash.debounce" "^4.0.8" + "lodash.escape" "^4.0.1" + "lodash.flatten" "^4.4.0" + "lodash.invokemap" "^4.6.0" + "lodash.pullall" "^4.2.0" + "lodash.uniqby" "^4.7.0" + "opener" "^1.5.2" + "picocolors" "^1.0.0" + "sirv" "^2.0.3" + "ws" "^7.3.1" + +"webpack-cli@^5.1.4", "webpack-cli@5.x.x": + "integrity" "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==" + "resolved" "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz" + "version" "5.1.4" + dependencies: + "@discoveryjs/json-ext" "^0.5.0" + "@webpack-cli/configtest" "^2.1.1" + "@webpack-cli/info" "^2.0.2" + "@webpack-cli/serve" "^2.0.5" + "colorette" "^2.0.14" + "commander" "^10.0.1" + "cross-spawn" "^7.0.3" + "envinfo" "^7.7.3" + "fastest-levenshtein" "^1.0.12" + "import-local" "^3.0.2" + "interpret" "^3.1.1" + "rechoir" "^0.8.0" + "webpack-merge" "^5.7.3" + +"webpack-dev-middleware@^5.3.1": + "integrity" "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==" + "resolved" "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz" + "version" "5.3.3" + dependencies: + "colorette" "^2.0.10" + "memfs" "^3.4.3" + "mime-types" "^2.1.31" + "range-parser" "^1.2.1" + "schema-utils" "^4.0.0" + +"webpack-dev-server@^4.15.1", "webpack-dev-server@3.x || 4.x": + "integrity" "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==" + "resolved" "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz" + "version" "4.15.1" + dependencies: + "@types/bonjour" "^3.5.9" + "@types/connect-history-api-fallback" "^1.3.5" + "@types/express" "^4.17.13" + "@types/serve-index" "^1.9.1" + "@types/serve-static" "^1.13.10" + "@types/sockjs" "^0.3.33" + "@types/ws" "^8.5.5" + "ansi-html-community" "^0.0.8" + "bonjour-service" "^1.0.11" + "chokidar" "^3.5.3" + "colorette" "^2.0.10" + "compression" "^1.7.4" + "connect-history-api-fallback" "^2.0.0" + "default-gateway" "^6.0.3" + "express" "^4.17.3" + "graceful-fs" "^4.2.6" + "html-entities" "^2.3.2" + "http-proxy-middleware" "^2.0.3" + "ipaddr.js" "^2.0.1" + "launch-editor" "^2.6.0" + "open" "^8.0.9" + "p-retry" "^4.5.0" + "rimraf" "^3.0.2" + "schema-utils" "^4.0.0" + "selfsigned" "^2.1.1" + "serve-index" "^1.9.1" + "sockjs" "^0.3.24" + "spdy" "^4.0.2" + "webpack-dev-middleware" "^5.3.1" + "ws" "^8.13.0" + +"webpack-merge@^5.7.3", "webpack-merge@^5.9.0": + "integrity" "sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg==" + "resolved" "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.9.0.tgz" + "version" "5.9.0" + dependencies: + "clone-deep" "^4.0.1" + "wildcard" "^2.0.0" + +"webpack-sources@^3.2.3": + "integrity" "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==" + "resolved" "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz" + "version" "3.2.3" + +"webpack@^4.0.0 || ^5.0.0", "webpack@^4.37.0 || ^5.0.0", "webpack@^5", "webpack@^5.0.0", "webpack@^5.1.0", "webpack@^5.20.0", "webpack@^5.88.2", "webpack@>=1.11.0", "webpack@>=4.43.0 <6.0.0", "webpack@5.x.x": + "integrity" "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==" + "resolved" "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz" + "version" "5.88.2" + dependencies: + "@types/eslint-scope" "^3.7.3" + "@types/estree" "^1.0.0" + "@webassemblyjs/ast" "^1.11.5" + "@webassemblyjs/wasm-edit" "^1.11.5" + "@webassemblyjs/wasm-parser" "^1.11.5" + "acorn" "^8.7.1" + "acorn-import-assertions" "^1.9.0" + "browserslist" "^4.14.5" + "chrome-trace-event" "^1.0.2" + "enhanced-resolve" "^5.15.0" + "es-module-lexer" "^1.2.1" + "eslint-scope" "5.1.1" + "events" "^3.2.0" + "glob-to-regexp" "^0.4.1" + "graceful-fs" "^4.2.9" + "json-parse-even-better-errors" "^2.3.1" + "loader-runner" "^4.2.0" + "mime-types" "^2.1.27" + "neo-async" "^2.6.2" + "schema-utils" "^3.2.0" + "tapable" "^2.1.1" + "terser-webpack-plugin" "^5.3.7" + "watchpack" "^2.4.0" + "webpack-sources" "^3.2.3" + +"websocket-driver@^0.7.4", "websocket-driver@>=0.5.1": + "integrity" "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==" + "resolved" "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz" + "version" "0.7.4" + dependencies: + "http-parser-js" ">=0.5.1" + "safe-buffer" ">=5.1.0" + "websocket-extensions" ">=0.1.1" + +"websocket-extensions@>=0.1.1": + "integrity" "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==" + "resolved" "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz" + "version" "0.1.4" + +"whatwg-encoding@^2.0.0": + "integrity" "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==" + "resolved" "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "iconv-lite" "0.6.3" + +"whatwg-mimetype@^3.0.0": + "integrity" "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==" + "resolved" "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz" + "version" "3.0.0" + +"whatwg-url@^11.0.0": + "integrity" "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==" + "resolved" "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz" + "version" "11.0.0" + dependencies: + "tr46" "^3.0.0" + "webidl-conversions" "^7.0.0" + "whatwg-url@^5.0.0": "integrity" "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==" "resolved" "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" @@ -2098,13 +11499,84 @@ "tr46" "~0.0.3" "webidl-conversions" "^3.0.0" -"which@^2.0.1": +"which-boxed-primitive@^1.0.2": + "integrity" "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==" + "resolved" "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "is-bigint" "^1.0.1" + "is-boolean-object" "^1.1.0" + "is-number-object" "^1.0.4" + "is-string" "^1.0.5" + "is-symbol" "^1.0.3" + +"which-builtin-type@^1.1.3": + "integrity" "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==" + "resolved" "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz" + "version" "1.1.3" + dependencies: + "function.prototype.name" "^1.1.5" + "has-tostringtag" "^1.0.0" + "is-async-function" "^2.0.0" + "is-date-object" "^1.0.5" + "is-finalizationregistry" "^1.0.2" + "is-generator-function" "^1.0.10" + "is-regex" "^1.1.4" + "is-weakref" "^1.0.2" + "isarray" "^2.0.5" + "which-boxed-primitive" "^1.0.2" + "which-collection" "^1.0.1" + "which-typed-array" "^1.1.9" + +"which-collection@^1.0.1": + "integrity" "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==" + "resolved" "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "is-map" "^2.0.1" + "is-set" "^2.0.1" + "is-weakmap" "^2.0.1" + "is-weakset" "^2.0.1" + +"which-typed-array@^1.1.11", "which-typed-array@^1.1.9": + "integrity" "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==" + "resolved" "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz" + "version" "1.1.11" + dependencies: + "available-typed-arrays" "^1.0.5" + "call-bind" "^1.0.2" + "for-each" "^0.3.3" + "gopd" "^1.0.1" + "has-tostringtag" "^1.0.0" + +"which@^2.0.1", "which@^2.0.2": "integrity" "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==" "resolved" "https://registry.npmjs.org/which/-/which-2.0.2.tgz" "version" "2.0.2" dependencies: "isexe" "^2.0.0" +"wide-align@^1.1.5": + "integrity" "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==" + "resolved" "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz" + "version" "1.1.5" + dependencies: + "string-width" "^1.0.2 || 2 || 3 || 4" + +"wildcard@^2.0.0": + "integrity" "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==" + "resolved" "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz" + "version" "2.0.1" + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + "integrity" "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==" + "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + "version" "7.0.0" + dependencies: + "ansi-styles" "^4.0.0" + "string-width" "^4.1.0" + "strip-ansi" "^6.0.0" + "wrap-ansi@^6.2.0": "integrity" "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==" "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz" @@ -2123,21 +11595,114 @@ "string-width" "^4.1.0" "strip-ansi" "^6.0.0" +"wrap-ansi@^8.1.0": + "integrity" "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==" + "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz" + "version" "8.1.0" + dependencies: + "ansi-styles" "^6.1.0" + "string-width" "^5.0.1" + "strip-ansi" "^7.0.1" + "wrappy@1": "integrity" "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" "resolved" "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" "version" "1.0.2" +"write-file-atomic@^4.0.2": + "integrity" "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==" + "resolved" "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz" + "version" "4.0.2" + dependencies: + "imurmurhash" "^0.1.4" + "signal-exit" "^3.0.7" + +"ws@^7.3.1": + "integrity" "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==" + "resolved" "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz" + "version" "7.5.9" + +"ws@^8.11.0", "ws@^8.13.0": + "integrity" "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==" + "resolved" "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz" + "version" "8.14.2" + +"xml-name-validator@^4.0.0": + "integrity" "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==" + "resolved" "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz" + "version" "4.0.0" + +"xmlbuilder@^15.1.1", "xmlbuilder@>=11.0.1": + "integrity" "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==" + "resolved" "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz" + "version" "15.1.1" + +"xmlchars@^2.2.0": + "integrity" "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" + "resolved" "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz" + "version" "2.2.0" + +"y18n@^5.0.5": + "integrity" "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" + "resolved" "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" + "version" "5.0.8" + +"yaku@^0.16.6": + "integrity" "sha512-Syu3IB3rZvKvYk7yTiyl1bo/jiEFaaStrgv1V2TIJTqYPStSMQVO8EQjg/z+DRzLq/4LIIharNT3iH1hylEIRw==" + "resolved" "https://registry.npmjs.org/yaku/-/yaku-0.16.7.tgz" + "version" "0.16.7" + +"yallist@^3.0.2": + "integrity" "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + "resolved" "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" + "version" "3.1.1" + "yallist@^4.0.0": "integrity" "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" "resolved" "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" "version" "4.0.0" -"yaml@^1.10.2": +"yaml@^1.10.0", "yaml@^1.10.2": "integrity" "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" "resolved" "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" "version" "1.10.2" +"yargs-parser@^21.0.1": + "integrity" "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" + "resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" + "version" "21.1.1" + +"yargs-parser@^21.1.1": + "integrity" "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" + "resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" + "version" "21.1.1" + +"yargs@^17.0.1", "yargs@^17.3.1", "yargs@^17.6.2", "yargs@^17.7.2": + "integrity" "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==" + "resolved" "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz" + "version" "17.7.2" + dependencies: + "cliui" "^8.0.1" + "escalade" "^3.1.1" + "get-caller-file" "^2.0.5" + "require-directory" "^2.1.1" + "string-width" "^4.2.3" + "y18n" "^5.0.5" + "yargs-parser" "^21.1.1" + +"yauzl@^2.10.0": + "integrity" "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==" + "resolved" "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz" + "version" "2.10.0" + dependencies: + "buffer-crc32" "~0.2.3" + "fd-slicer" "~1.1.0" + +"yn@3.1.1": + "integrity" "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==" + "resolved" "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz" + "version" "3.1.1" + "yocto-queue@^0.1.0": "integrity" "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" "resolved" "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" From 183597f19a09da9d73fe902b178cd577182dae59 Mon Sep 17 00:00:00 2001 From: Bart Date: Sun, 8 Oct 2023 21:23:37 +0200 Subject: [PATCH 014/100] refactor hook apis --- frontend/src/App.tsx | 79 +++-- frontend/src/config/common.ts | 7 - frontend/src/config/react-query.ts | 3 - frontend/src/config/toast.ts | 11 - frontend/src/hooks/use-analytics.ts | 33 -- frontend/src/hooks/use-api.ts | 327 ------------------ frontend/src/services/analytics.service.ts | 16 +- frontend/src/utils/common-utils.ts | 64 ---- frontend/src/utils/event-utils.ts | 41 --- frontend/src/utils/multi-map.ts | 13 - packages/api/src/resources.ts | 68 +++- .../core/src/flow/flow-storage.service.ts | 10 +- packages/core/src/flow/go-bindings.service.ts | 10 +- packages/ui/package.json | 9 +- .../accounts/AccountAvatar/AccountAvatar.tsx | 7 +- .../AccountDetails/AccountDetails.tsx | 40 ++- .../AccountKeysTable/AccountKeysTable.tsx | 18 +- .../src/accounts/AccountLink/AccountLink.tsx | 1 - .../src/accounts/AccountName/AccountName.tsx | 6 +- .../AccountStorage/AccountStorage.tsx | 27 +- .../accounts/AccountsTable/AccountsTable.tsx | 40 +-- .../InternalStorageCard.tsx | 14 +- .../PublicPrivateStorageCard.tsx | 6 +- .../PublicPrivateStorageCard}/gradient.png | Bin .../StorageDataTypes/StorageDataTypes.tsx | 4 +- .../StorageDomainBadge/StorageDomainBadge.tsx | 4 +- .../ui/src/assets}/logo-foreground.svg | 0 .../ui/src/assets}/long_logo.png | Bin .../src/blocks/BlockDetails/BlockDetails.tsx | 11 +- .../ui/src/blocks/BlocksTable/BlocksTable.tsx | 9 +- .../ui/src/common/errors/ErrorMessage.tsx | 13 +- packages/ui/src/common/icons/FlowserIcon.tsx | 6 + packages/ui/src/common/links/ProjectLink.tsx | 2 +- .../common/misc/Breadcrumbs/Breadcrumbs.tsx | 2 +- .../FlowserUsageRequirements.module.scss} | 0 .../FlowserUsageRequirements.tsx} | 30 +- .../misc/SideNavigation/SideNavigation.tsx | 2 +- .../dialogs/consent/ConsentDialog.tsx | 2 +- .../dialogs/snapshot/SnapshotDialog.tsx | 4 +- .../src/contexts/confirm-dialog.context.tsx | 2 +- .../ui}/src/contexts/flow.context.tsx | 11 +- .../ui/src/contexts/flowser-api.context.tsx | 71 ++++ .../src/contexts/platform-adapter.context.tsx | 2 +- .../ui}/src/contexts/projects.context.tsx | 38 +- .../ui}/src/contexts/snapshots.context.tsx | 46 ++- .../src/contexts/timeout-polling.context.tsx | 0 .../ContractDetails/ContractDetails.tsx | 14 +- .../ContractsTable/ContractsTable.tsx | 19 +- .../src/events/EventDetails/EventDetails.tsx | 8 +- .../ui/src/events/EventsTable/EventsTable.tsx | 7 +- packages/ui/src/hooks/use-analytics.ts | 45 +++ .../ui}/src/hooks/use-current-project-id.ts | 0 .../ui}/src/hooks/use-error-handler.ts | 10 +- .../ui}/src/hooks/use-filter-data.ts | 0 .../ui}/src/hooks/use-mouse-move.ts | 0 .../ui}/src/hooks/use-url-query.ts | 0 .../InteractionHistory/InteractionHistory.tsx | 26 +- .../InteractionLabel/InteractionLabel.tsx | 15 +- .../InteractionOutcomeDisplay.tsx | 13 +- .../InteractionTemplates.tsx | 2 +- .../AddressBuilder/AddressBuilder.tsx | 12 +- .../contexts/definition.context.tsx | 10 +- .../interactions/contexts/outcome.context.tsx | 2 +- .../contexts/templates.context.tsx | 9 +- .../ui/src/interactions/core/core-types.ts | 2 +- packages/ui/src/logs/Logs.tsx | 39 +-- .../ui/src/projects/FormFields/FormFields.tsx | 2 +- .../ProjectListPage/ProjectListPage.tsx | 15 +- .../ProjectSettings/ProjectSettings.tsx | 15 +- .../TransactionDetails/TransactionDetails.tsx | 7 +- .../TransactionDetailsTabs.tsx | 16 +- packages/ui/src/utils/common-utils.ts | 25 ++ packages/ui/src/utils/flow-utils.ts | 14 +- packages/ui/src/utils/misc.ts | 17 - packages/ui/src/utils/text-utils.ts | 12 + packages/ui/tsconfig.json | 3 +- yarn.lock | 121 +++++-- 77 files changed, 668 insertions(+), 921 deletions(-) delete mode 100644 frontend/src/config/common.ts delete mode 100644 frontend/src/config/react-query.ts delete mode 100644 frontend/src/config/toast.ts delete mode 100644 frontend/src/hooks/use-analytics.ts delete mode 100644 frontend/src/hooks/use-api.ts delete mode 100644 frontend/src/utils/common-utils.ts delete mode 100644 frontend/src/utils/event-utils.ts delete mode 100644 frontend/src/utils/multi-map.ts rename {frontend/src/assets/images => packages/ui/src/accounts/PublicPrivateStorageCard}/gradient.png (100%) rename {frontend/src/assets/images => packages/ui/src/assets}/logo-foreground.svg (100%) rename {frontend/src/assets/images => packages/ui/src/assets}/long_logo.png (100%) rename packages/ui/src/common/misc/{ProjectRequirements/ProjectRequirements.module.scss => FlowserUsageRequirements/FlowserUsageRequirements.module.scss} (100%) rename packages/ui/src/common/misc/{ProjectRequirements/ProjectRequirements.tsx => FlowserUsageRequirements/FlowserUsageRequirements.tsx} (72%) rename {frontend => packages/ui}/src/contexts/confirm-dialog.context.tsx (93%) rename {frontend => packages/ui}/src/contexts/flow.context.tsx (77%) create mode 100644 packages/ui/src/contexts/flowser-api.context.tsx rename {frontend => packages/ui}/src/contexts/platform-adapter.context.tsx (90%) rename {frontend => packages/ui}/src/contexts/projects.context.tsx (77%) rename {frontend => packages/ui}/src/contexts/snapshots.context.tsx (81%) rename {frontend => packages/ui}/src/contexts/timeout-polling.context.tsx (100%) create mode 100644 packages/ui/src/hooks/use-analytics.ts rename {frontend => packages/ui}/src/hooks/use-current-project-id.ts (100%) rename {frontend => packages/ui}/src/hooks/use-error-handler.ts (82%) rename {frontend => packages/ui}/src/hooks/use-filter-data.ts (100%) rename {frontend => packages/ui}/src/hooks/use-mouse-move.ts (100%) rename {frontend => packages/ui}/src/hooks/use-url-query.ts (100%) create mode 100644 packages/ui/src/utils/common-utils.ts delete mode 100644 packages/ui/src/utils/misc.ts diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index d88d9a66a..c4368e75d 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -12,32 +12,23 @@ import { import { Toaster } from "react-hot-toast"; import { ProjectLayout } from "../../packages/ui/src/common/layouts/ProjectLayout/ProjectLayout"; import "./App.scss"; -import { toastOptions } from "./config/toast"; - -import { ProjectsManagerProvider } from "./contexts/projects.context"; -import { ConfirmDialogProvider } from "./contexts/confirm-dialog.context"; +import { ProjectsManagerProvider } from "../../packages/ui/src/contexts/projects.context"; +import { ConfirmDialogProvider } from "../../packages/ui/src/contexts/confirm-dialog.context"; import { QueryClientProvider } from "react-query"; -import { ProjectRequirements } from "../../packages/ui/src/common/misc/ProjectRequirements/ProjectRequirements"; -import { TimeoutPollingProvider } from "./contexts/timeout-polling.context"; +import { FlowserUsageRequirements } from "../../packages/ui/src/common/misc/FlowserUsageRequirements/FlowserUsageRequirements"; +import { TimeoutPollingProvider } from "../../packages/ui/src/contexts/timeout-polling.context"; import { PlatformAdapterProvider, PlatformAdapterState, -} from "./contexts/platform-adapter.context"; -import { queryClient } from "./config/react-query"; +} from "../../packages/ui/src/contexts/platform-adapter.context"; import { ConsentDialog } from "../../packages/ui/src/common/overlays/dialogs/consent/ConsentDialog"; -import { useAnalytics } from "./hooks/use-analytics"; +import { useAnalytics } from "../../packages/ui/src/hooks/use-analytics"; import { ServiceRegistry } from "./services/service-registry"; import { AnalyticEvent } from "./services/analytics.service"; import { InteractionsPage } from "../../packages/ui/src/interactions/InteractionsPage"; import { InteractionRegistryProvider } from "../../packages/ui/src/interactions/contexts/interaction-registry.context"; import { ProjectSettings } from "../../packages/ui/src/projects/ProjectSettings/ProjectSettings"; -import { - useGetPollingAccounts, - useGetPollingBlocks, - useGetPollingContracts, - useGetEvents, - useGetPollingTransactions, -} from "./hooks/use-api"; +import { useFlowserHooksApi } from "../../packages/ui/src/contexts/flowser-api.context"; import { TransactionsTable } from "../../packages/ui/src/transactions/TransactionsTable/TransactionsTable"; import { TransactionDetails } from "../../packages/ui/src/transactions/TransactionDetails/TransactionDetails"; import { BlockDetails } from "../../packages/ui/src/blocks/BlockDetails/BlockDetails"; @@ -52,8 +43,9 @@ import { createCrumbHandle } from "../../packages/ui/src/common/misc/Breadcrumbs import { TemplatesRegistryProvider } from "../../packages/ui/src/interactions/contexts/templates.context"; import { BasicLayout } from "../../packages/ui/src/common/layouts/BasicLayout/BasicLayout"; import { EventDetails } from "../../packages/ui/src/events/EventDetails/EventDetails"; -import { FlowConfigProvider } from "./contexts/flow.context"; -import { SnapshotsManagerProvider } from "./contexts/snapshots.context"; +import { FlowConfigProvider } from "../../packages/ui/src/contexts/flow.context"; +import { SnapshotsManagerProvider } from "../../packages/ui/src/contexts/snapshots.context"; +import FullScreenLoading from "../../packages/ui/src/common/loaders/FullScreenLoading/FullScreenLoading"; const BrowserRouterEvents = (props: { children: ReactNode }): ReactElement => { const location = useLocation(); @@ -79,6 +71,8 @@ export type FlowserClientAppProps = { enableTimeoutPolling?: boolean; }; +export const queryClient = new QueryClient(); + export const FlowserClientApp = ({ useHashRouter, platformAdapter, @@ -90,14 +84,24 @@ export const FlowserClientApp = ({ - + @@ -293,7 +297,12 @@ function ProjectSettingsPage() { } function TransactionsTablePage() { - const { data } = useGetPollingTransactions(); + const api = useFlowserHooksApi(); + const { data } = api.useGetTransactions(); + + if (!data) { + return ; + } return ; } @@ -305,7 +314,12 @@ function TransactionDetailsPage() { } function BlocksTablePage() { - const { data } = useGetPollingBlocks(); + const api = useFlowserHooksApi(); + const { data } = api.useGetBlocks(); + + if (!data) { + return ; + } return ; } @@ -317,7 +331,12 @@ function BlockDetailsPage() { } function AccountsTablePage() { - const { data } = useGetPollingAccounts(); + const api = useFlowserHooksApi(); + const { data } = api.useGetAccounts(); + + if (!data) { + return ; + } return ; } @@ -329,7 +348,12 @@ function AccountDetailsPage() { } function ContractsTablePage() { - const { data } = useGetPollingContracts(); + const api = useFlowserHooksApi(); + const { data } = api.useGetContracts(); + + if (!data) { + return ; + } return ; } @@ -341,7 +365,12 @@ function ContractDetailsPage() { } function EventsTablePage() { - const { data } = useGetEvents(); + const api = useFlowserHooksApi(); + const { data } = api.useGetEvents(); + + if (!data) { + return ; + } return ; } diff --git a/frontend/src/config/common.ts b/frontend/src/config/common.ts deleted file mode 100644 index a977c5497..000000000 --- a/frontend/src/config/common.ts +++ /dev/null @@ -1,7 +0,0 @@ -// Don't show intro animation, -// because that gets shown every time you visit "Events" tab, -// (table is rebuild everytime you visit tab) -// which is kinda disturbing -// TODO: Rework unseen/new logic -// https://www.notion.so/flowser/Future-ideas-86df19c006c04641ad1b71db4000ec54#2f3b34e47c9a4944a1c326d7a2ad38e4 -export const enableDetailsIntroAnimation = false; diff --git a/frontend/src/config/react-query.ts b/frontend/src/config/react-query.ts deleted file mode 100644 index 33b5f6b0e..000000000 --- a/frontend/src/config/react-query.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { QueryClient } from "react-query"; - -export const queryClient = new QueryClient(); diff --git a/frontend/src/config/toast.ts b/frontend/src/config/toast.ts deleted file mode 100644 index 250c6fc6d..000000000 --- a/frontend/src/config/toast.ts +++ /dev/null @@ -1,11 +0,0 @@ -export const toastOptions = { - className: "", - style: { - background: "#9BDEFA", // $blue - color: "#363F53", // $table-line-background - padding: "12px", // $spacing-base - maxWidth: "400px", - maxHeight: "200px", - textOverflow: "ellipsis", - }, -}; diff --git a/frontend/src/hooks/use-analytics.ts b/frontend/src/hooks/use-analytics.ts deleted file mode 100644 index 08b951887..000000000 --- a/frontend/src/hooks/use-analytics.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { useEffect } from "react"; -import { ServiceRegistry } from "../services/service-registry"; -import { useLocalStorage } from "usehooks-ts"; -import { AnalyticEvent } from "../services/analytics.service"; -import { Dict } from "mixpanel-browser"; - -type Analytics = { - setIsConsented: (isConsented: boolean) => void; - isConsented: boolean | undefined; - track: (event: AnalyticEvent, properties?: Dict) => void; -}; - -export function useAnalytics(): Analytics { - const { analyticsService } = ServiceRegistry.getInstance(); - const [isConsented, setIsConsented] = useLocalStorage( - "consent-analytics", - undefined - ); - - useEffect(() => { - if (isConsented) { - analyticsService.enable(); - } else { - analyticsService.disable(); - } - }, [isConsented]); - - return { - isConsented, - setIsConsented, - track: analyticsService.track, - }; -} diff --git a/frontend/src/hooks/use-api.ts b/frontend/src/hooks/use-api.ts deleted file mode 100644 index 0bb709d87..000000000 --- a/frontend/src/hooks/use-api.ts +++ /dev/null @@ -1,327 +0,0 @@ -import { - Account, - AccountContract, - AccountKey, - AccountStorageItem, - Transaction, - Block, - Event, - ManagedProcessOutput, - ManagedProcess, - GetFlowserVersionResponse, - GetSingleProjectResponse, - GetPollingTransactionsResponse, - GetSingleTransactionResponse, - GetPollingBlocksResponse, - GetSingleBlockResponse, - GetPollingContractsResponse, - GetSingleContractResponse, - GetPollingAccountsResponse, - GetPollingKeysResponse, - GetPollingStorageResponse, - GetSingleAccountResponse, - GetFlowCliInfoResponse, - GetPollingEventsResponse, - GetPollingOutputsResponse, - EmulatorSnapshot, - GetPollingEmulatorSnapshotsResponse, - GetPollingManagedProcessesResponse, - GetProjectRequirementsResponse, - GetProjectStatusResponse, - Project, - GetPollingProjectsResponse, - ServiceStatus, - FlowserError, - GetParsedInteractionResponse, - GetAddressIndexResponse, - GetAddressIndexRequest, - GetFlowInteractionTemplatesResponse, - GetFlowConfigResponse, -} from "@flowser/shared"; -import { ServiceRegistry } from "../services/service-registry"; -import { useQuery } from "react-query"; -import { - useTimeoutPolling, - TimeoutPollingHook, - useProjectTimeoutPolling, -} from "contexts/timeout-polling.context"; -import { useEffect, useState } from "react"; -import { useCurrentProjectId } from "./use-current-project-id"; -import { InteractionDefinition } from "../../../packages/ui/src/interactions/core/core-types"; - -const { - projectsService, - flowService, - commonService, - contractsService, - transactionsService, - storageService, - blocksService, - eventsService, - processesService, - accountsService, - snapshotService, - goBindingsService, -} = ServiceRegistry.getInstance(); - -export function useGetPollingAccounts(): TimeoutPollingHook { - return useProjectTimeoutPolling({ - resourceKey: "/accounts/polling", - fetcher: (data) => accountsService.getAllWithPolling(data), - }); -} - -export function useGetAccount(address: string) { - return useQuery(`/accounts/${address}`, () => - accountsService.getSingle(address) - ); -} - -export function useGetPollingTransactionsByAccount( - accountAddress: string -): TimeoutPollingHook { - return useTimeoutPolling({ - resourceKey: `/accounts/${accountAddress}/transactions/polling`, - fetcher: (data) => - transactionsService.getAllByAccountWithPolling({ - ...data, - accountAddress, - }), - }); -} - -export function useGetPollingContractsByAccount( - accountAddress: string -): TimeoutPollingHook { - return useTimeoutPolling({ - resourceKey: `/accounts/${accountAddress}/contracts/polling`, - fetcher: ({ timestamp }) => - contractsService.getAllByAccountWithPolling({ - accountAddress, - timestamp, - }), - }); -} - -export function useGetPollingStorageByAccount( - accountAddress: string -): TimeoutPollingHook { - return useTimeoutPolling({ - resourceKey: `/accounts/${accountAddress}/storage/polling`, - fetcher: ({ timestamp }) => - storageService.getAllByAccountWithPolling({ timestamp, accountAddress }), - }); -} - -export function useGetPollingKeysByAccount( - accountAddress: string -): TimeoutPollingHook { - return useTimeoutPolling({ - resourceKey: `/accounts/${accountAddress}/keys/polling`, - fetcher: ({ timestamp }) => - accountsService.getAllKeysByAccountWithPolling({ - timestamp, - accountAddress, - }), - }); -} - -export function useGetPollingContracts(): TimeoutPollingHook { - return useProjectTimeoutPolling( - { - resourceKey: "/contracts/polling", - fetcher: ({ timestamp }) => - contractsService.getAllWithPolling({ timestamp }), - } - ); -} - -export function useGetContract(contractId: string) { - return useQuery( - `/contract/${contractId}`, - () => contractsService.getSingle(contractId), - { - refetchInterval: 2000, - } - ); -} - -export function useGetPollingTransactions(): TimeoutPollingHook { - return useProjectTimeoutPolling({ - resourceKey: "/transactions/polling", - fetcher: ({ timestamp }) => - transactionsService.getAllWithPolling({ timestamp }), - }); -} - -export function useGetPollingBlocks(): TimeoutPollingHook { - return useProjectTimeoutPolling({ - resourceKey: "/blocks/polling", - fetcher: ({ timestamp }) => blocksService.getAllWithPolling({ timestamp }), - }); -} - -export function useGetBlock(blockId: string) { - return useQuery(`/blocks/${blockId}`, () => - blocksService.getSingle(blockId) - ); -} - -export function useGetEvents(): TimeoutPollingHook { - return useProjectTimeoutPolling({ - resourceKey: "/events/polling", - fetcher: ({ timestamp }) => eventsService.getAllWithPolling({ timestamp }), - }); -} - -export function useGetEventsByTransactionId( - transactionId: string -): TimeoutPollingHook { - return useTimeoutPolling({ - resourceKey: `/transaction/${transactionId}/events/polling`, - fetcher: ({ timestamp }) => - eventsService.getAllWithPollingByTransaction({ - timestamp, - transactionId, - }), - }); -} - -export function useGetPollingOutputs(): TimeoutPollingHook { - return useTimeoutPolling({ - resourceKey: "/processes/outputs/polling", - fetcher: ({ timestamp }) => - processesService.getAllOutputsWithPolling({ timestamp }), - }); -} - -export function useGetTransactionsByBlock( - blockId: string, - options?: { - pollingInterval?: number; - } -): TimeoutPollingHook { - return useTimeoutPolling({ - resourceKey: `/block/${blockId}/transactions/polling`, - fetcher: ({ timestamp }) => - transactionsService.getAllByBlockWithPolling({ - blockId, - timestamp, - }), - interval: options?.pollingInterval, - }); -} - -export function useGetTransaction(transactionId: string | undefined) { - return useQuery( - `/transactions/${transactionId}`, - () => - transactionId - ? transactionsService.getSingle(transactionId) - : GetSingleTransactionResponse.fromPartial({}), - { - // Poll until the transaction is found - refetchInterval: (data) => (data?.transaction ? false : 500), - enabled: Boolean(transactionId), - } - ); -} - -export const getCurrentProjectKey = "/projects/current"; - -export function useGetCurrentProject() { - const { data, ...rest } = useQuery( - getCurrentProjectKey, - () => projectsService.getCurrentProject().catch(() => undefined) - ); - - return { - data, - ...rest, - }; -} - -export function useGetProjectRequirements() { - return useQuery( - `/projects/requirements`, - () => projectsService.getRequirements(), - { - refetchInterval(data: GetProjectRequirementsResponse | undefined) { - // Refetch only if not all requirements are satisfied - // to verify if user fixed the required issues - if (!data || data.missingRequirements.length > 0) { - return 1000; - } - return false; - }, - } - ); -} - -export function useGetPollingFlowInteractionTemplates() { - return useQuery( - `/projects/templates`, - () => flowService.getInteractionTemplates(), - { refetchInterval: 3000 } - ); -} - -export function useGetFlowConfig() { - return useQuery( - `/projects/config`, - () => flowService.getConfig(), - { refetchInterval: 3000 } - ); -} - -export function useGetAllProjects() { - return useTimeoutPolling({ - resourceKey: "/projects/polling", - fetcher: ({ timestamp }) => - projectsService.getAllWithPolling({ timestamp }), - }); -} - -export function useGetParsedInteraction(request: InteractionDefinition) { - // We are not using `sourceCode` as the cache key, - // to avoid the flickering UI effect that's caused - // by undefined parsed interaction every time the source code changes. - const queryState = useQuery( - `/go-bindings/get-parsed-interaction/${request.id}`, - () => - goBindingsService.getParsedInteraction({ - sourceCode: request.code, - }) - ); - - useEffect(() => { - queryState.refetch(); - }, [request.code]); - - return queryState; -} - -export function useGetAddressIndex(request: GetAddressIndexRequest) { - return useQuery( - `/go-bindings/get-address-index/${JSON.stringify(request)}`, - () => goBindingsService.getAddressIndex(request) - ); -} - -export function useGetFlowCliInfo() { - return useQuery("/version", () => - commonService.getFlowCliInfo() - ); -} - -export function useGetPollingEmulatorSnapshots(): TimeoutPollingHook { - const projectId = useCurrentProjectId(); - return useTimeoutPolling< - EmulatorSnapshot, - GetPollingEmulatorSnapshotsResponse - >({ - resourceKey: `/${projectId}/snapshots/polling`, - fetcher: ({ timestamp }) => - snapshotService.getAllWithPolling({ timestamp, projectId }), - }); -} diff --git a/frontend/src/services/analytics.service.ts b/frontend/src/services/analytics.service.ts index 3ff6832a4..1261f99c2 100644 --- a/frontend/src/services/analytics.service.ts +++ b/frontend/src/services/analytics.service.ts @@ -1,7 +1,4 @@ import mixpanel, { Dict } from "mixpanel-browser"; -import { queryClient } from "../config/react-query"; -import { getCurrentProjectKey } from "../hooks/use-api"; -import { GetSingleProjectResponse } from "@flowser/shared"; import { FingerprintService } from "./fingerprint.service"; export enum AnalyticEvent { @@ -58,19 +55,8 @@ export class AnalyticsService { return; } - const { project } = - queryClient.getQueryData( - getCurrentProjectKey - ) ?? {}; - - const staticProperties = { - projectName: project?.name, - }; try { - mixpanel.track(event, { - ...staticProperties, - ...properties, - }); + mixpanel.track(event, properties); } catch (e) { console.error("Mixpanel error:", e); } diff --git a/frontend/src/utils/common-utils.ts b/frontend/src/utils/common-utils.ts deleted file mode 100644 index 8a4de4a27..000000000 --- a/frontend/src/utils/common-utils.ts +++ /dev/null @@ -1,64 +0,0 @@ -import { FlowserError } from "@flowser/shared"; -import { DecoratedPollingEntity } from "contexts/timeout-polling.context"; - -export class CommonUtils { - static shorten(text: string, maxLength: number): string { - if (maxLength >= text.length) { - return text; - } - const delimiter = "..."; - const charsToTake = maxLength / 2; - return `${text.slice(0, charsToTake)}${delimiter}${text.slice( - text.length - charsToTake, - text.length - )}`; - } - - static isEmulatorProcessId(processId: string): boolean { - return processId === "emulator"; - } - - static isDecoratedPollingEntity( - entity: Entity - ): entity is DecoratedPollingEntity { - return "isNew" in entity && "isUpdated" in entity; - } - - static isFlowserError(error: unknown): error is FlowserError { - return ( - typeof error === "object" && - error !== null && - "name" in error && - "message" in error && - "description" in error - ); - } - - static isStandardError(error: unknown): error is Error { - return typeof error === "object" && error !== null && "message" in error; - } - - static isNotEmpty(value: Value | null | undefined): value is Value { - return value !== null && value !== undefined; - } - - static getNestedValue(object: unknown, path: string): unknown { - const keys = path.split("."); - let result: unknown = object; - for (const key of keys) { - if (!this.isRecord(result)) { - return undefined; - } - result = result[key]; - } - return result; - } - - static isRecord(value: unknown): value is Record { - return typeof value === "object" && value !== null; - } - - static isDefined(value: Value | null | undefined): value is Value { - return value !== null && value !== undefined; - } -} diff --git a/frontend/src/utils/event-utils.ts b/frontend/src/utils/event-utils.ts deleted file mode 100644 index 4fb1e557b..000000000 --- a/frontend/src/utils/event-utils.ts +++ /dev/null @@ -1,41 +0,0 @@ -export type ComputedEventData = { - name: string; - type: string; - value: string; -}; - -export class EventUtils { - static computeEventData( - data: Record | undefined - ): ComputedEventData[] { - if (!data) { - return []; - } - const keys = Object.keys(data); - return keys.map((key) => { - const item = data[key]; - return { - name: key, - type: this.getEventDataType(item), - value: `${JSON.stringify(item)}`, - }; - }); - } - - static getEventDataType(value: unknown): string { - switch (true) { - case typeof value === "number": - return "Number"; - case typeof value === "string": - return "String"; - case value instanceof Array: - return "Array"; - case value instanceof Object: - return "Object"; - case value === null: - return "NULL"; - default: - return "unknown"; - } - } -} diff --git a/frontend/src/utils/multi-map.ts b/frontend/src/utils/multi-map.ts deleted file mode 100644 index 4d117e69d..000000000 --- a/frontend/src/utils/multi-map.ts +++ /dev/null @@ -1,13 +0,0 @@ -// https://en.wikipedia.org/wiki/Multimap -export class MultiMap extends Map { - constructor(entries?: readonly (readonly [K, V])[] | null) { - super(); - - for (const entry of entries ?? []) { - const [key, value] = entry; - const existingEntries = this.get(key) ?? []; - existingEntries.push(value); - this.set(key, existingEntries); - } - } -} diff --git a/packages/api/src/resources.ts b/packages/api/src/resources.ts index 1894f764b..ac5c17a53 100644 --- a/packages/api/src/resources.ts +++ b/packages/api/src/resources.ts @@ -15,7 +15,13 @@ export enum InteractionKind { INTERACTION_TRANSACTION = 2, } -export interface CadenceInteraction { +export interface ParsedInteractionOrError { + interaction: ParsedInteraction | undefined; + program: { [key: string]: any } | undefined; + error: string; +} + +export interface ParsedInteraction { kind: InteractionKind; parameters: CadenceParameter[]; transaction: CadenceInteraction_Transaction | undefined; @@ -34,7 +40,7 @@ export interface CadenceParameter { type: CadenceType | undefined; } -export interface PollingResource { +export interface TimestampedResource { createdAt: Date; updatedAt: Date; deletedAt: Date | undefined; @@ -48,7 +54,7 @@ export interface BlockScopedResource { blockId: string; } -export interface FlowAccount { +export interface FlowAccount extends TimestampedResource { // ID is equal to the address. id: string; address: string; @@ -56,9 +62,15 @@ export interface FlowAccount { balance: number; code: string; isDefaultAccount: boolean; + tags: FlowAccountTag[]; keys: FlowAccountKey[]; } +export interface FlowAccountTag { + name: string; + description: string; +} + // https://docs.onflow.org/cadence/language/crypto/#hashing export enum SignatureAlgorithm { // Enum values must be kept unchanged. @@ -92,13 +104,19 @@ export interface FlowAccountKey { revoked: boolean; } -export interface FlowContract { +export interface FlowContract extends TimestampedResource { // ID is the combination of `address` and `name`. id: string; address: string; name: string; blockId: string; code: string; + localConfig: FlowContractLocalConfig | undefined; +} + +export interface FlowContractLocalConfig { + relativePath: string; + absolutePath: string; } export interface FlowAccountCapability { @@ -112,7 +130,7 @@ export interface FlowAccountCapability { * Every account storage path consists of a domain and identifier: // * See official docs: https://developers.flow.com/cadence/language/accounts#paths */ -export enum AccountStorageDomain { +export enum FlowStorageDomain { STORAGE_DOMAIN_PRIVATE = 1, STORAGE_DOMAIN_PUBLIC = 2, STORAGE_DOMAIN_STORAGE = 3, @@ -121,15 +139,16 @@ export enum AccountStorageDomain { export interface FlowAccountStorage { id: string; address: string; - domain: AccountStorageDomain; + domain: FlowStorageDomain; // TODO(restructure): Split data into multiple type-specific fields data: any; path: string; targetPath: string; } -export interface FlowBlock { +export interface FlowBlock extends TimestampedResource { id: string; + height: number; parentId: string; blockHeight: number; timestamp: Date; @@ -143,7 +162,7 @@ export interface CollectionGuarantee { signatures: string[]; } -export interface FlowTransaction { +export interface FlowTransaction extends TimestampedResource { id: string; script: string; blockId: string; @@ -156,8 +175,6 @@ export interface FlowTransaction { authorizers: string[]; envelopeSignatures: SignableObject[]; payloadSignatures: SignableObject[]; - createdAt: Date; - updatedAt: Date; } export interface TransactionProposalKey { @@ -227,7 +244,7 @@ export enum ExecutionStatusCode { EXECUTION_STATUS_EXPIRED = 5, } -export interface FlowEvent { +export interface FlowEvent extends TimestampedResource { // ID is the combination of `transactionId` and `eventIndex`. id: string; transactionId: string; @@ -283,3 +300,32 @@ export enum ProcessOutputSource { OUTPUT_SOURCE_STDERR = 2, UNRECOGNIZED = -1, } + +export interface FlowserProject extends TimestampedResource { + id: string; + name: string; +} + +export enum FlowserUsageRequirementType { + UNSUPPORTED_CLI_VERSION, + MISSING_FLOW_CLI +} + +export interface FlowserUsageRequirement { + title: string; + description: string; + type: FlowserUsageRequirementType; +} + +export interface InteractionTemplate extends TimestampedResource { + id: string; + name: string; + code: string; + source: { + filePath?: string; + }; +} + +export interface FlowCliInfo { + version: string; +} diff --git a/packages/core/src/flow/flow-storage.service.ts b/packages/core/src/flow/flow-storage.service.ts index 0687e92a5..67bc61d6f 100644 --- a/packages/core/src/flow/flow-storage.service.ts +++ b/packages/core/src/flow/flow-storage.service.ts @@ -1,7 +1,7 @@ import { FlowGatewayService } from "./flow-gateway.service"; import { ensurePrefixedAddress } from "../utils"; import { - AccountStorageDomain, + FlowStorageDomain, CadenceTypeKind, FlowAccountStorage, } from "@onflowser/api"; @@ -191,15 +191,15 @@ export class FlowAccountStorageService { }); } - private getStorageDomainFromPath(path: string): AccountStorageDomain { + private getStorageDomainFromPath(path: string): FlowStorageDomain { const rawDomain = path.split("/")[1]; switch (rawDomain) { case "public": - return AccountStorageDomain.STORAGE_DOMAIN_PUBLIC; + return FlowStorageDomain.STORAGE_DOMAIN_PUBLIC; case "private": - return AccountStorageDomain.STORAGE_DOMAIN_PRIVATE; + return FlowStorageDomain.STORAGE_DOMAIN_PRIVATE; case "storage": - return AccountStorageDomain.STORAGE_DOMAIN_STORAGE; + return FlowStorageDomain.STORAGE_DOMAIN_STORAGE; default: throw new Error(`Unknown domain: ${rawDomain}`); } diff --git a/packages/core/src/flow/go-bindings.service.ts b/packages/core/src/flow/go-bindings.service.ts index 028ef40b8..6378cf8d1 100644 --- a/packages/core/src/flow/go-bindings.service.ts +++ b/packages/core/src/flow/go-bindings.service.ts @@ -1,18 +1,12 @@ import { spawn } from "node:child_process"; import * as path from "path"; import * as os from "os"; -import { CadenceInteraction } from "@onflowser/api"; +import { ParsedInteractionOrError } from "@onflowser/api"; export interface GetParsedInteractionRequest { sourceCode: string; } -export interface GetParsedInteractionResponse { - interaction: CadenceInteraction | undefined; - program: { [key: string]: any } | undefined; - error: string; -} - export interface GetAddressIndexRequest { chainId: string; hexAddress: string; @@ -35,7 +29,7 @@ type ExecuteGoBinResponse = { export class GoBindingsService { public async getParsedInteraction( request: GetParsedInteractionRequest - ): Promise { + ): Promise { const response = await this.execute({ command: "get-parsed-interaction", arguments: [], diff --git a/packages/ui/package.json b/packages/ui/package.json index 18fdadbc6..4d46804b2 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -2,7 +2,9 @@ "name": "@onflowser/ui", "version": "0.0.0", "main": "./dist/flowser.umd.js", - "files": ["./dist/*"], + "files": [ + "./dist/*" + ], "types": "./dist/flowser", "scripts": { "build": "vite build" @@ -28,11 +30,14 @@ "copy-to-clipboard": "^3.3.3", "date-fns": "^2.30.0", "dateformat": "^5.0.3", + "mixpanel-browser": "^2.47.0", "react": "^18.0.0", + "react-helmet": "^6.1.0", "react-hot-toast": "^2.4.1", "react-icons": "^4.11.0", "react-json-view": "^1.21.3", "react-router-dom": "6.15.0", - "react-timeago": "^7.2.0" + "react-timeago": "^7.2.0", + "swr": "^2.2.4" } } diff --git a/packages/ui/src/accounts/AccountAvatar/AccountAvatar.tsx b/packages/ui/src/accounts/AccountAvatar/AccountAvatar.tsx index e2dd63b3e..4a56a200d 100644 --- a/packages/ui/src/accounts/AccountAvatar/AccountAvatar.tsx +++ b/packages/ui/src/accounts/AccountAvatar/AccountAvatar.tsx @@ -18,8 +18,8 @@ import avatar13 from "./avatars/13.jpg"; import avatar14 from "./avatars/14.jpg"; import avatar15 from "./avatars/15.jpg"; import avatar16 from "./avatars/16.jpg"; -import { useGetAddressIndex } from "../../../../../frontend/src/hooks/use-api"; import { Spinner } from "../../common/loaders/Spinner/Spinner"; +import { useFlowserHooksApi } from "../../contexts/flowser-api.context"; const avatarUrls = [ avatar1, @@ -51,8 +51,9 @@ export function AccountAvatar({ address, className, }: AccountAvatarProps): ReactElement | null { - const { data } = useGetAddressIndex({ - hexAddress: address, + const api = useFlowserHooksApi(); + const { data } = api.useGetAddressIndex({ + address, chainId: "flow-emulator", }); diff --git a/packages/ui/src/accounts/AccountDetails/AccountDetails.tsx b/packages/ui/src/accounts/AccountDetails/AccountDetails.tsx index 5c4473ef2..9af43b70a 100644 --- a/packages/ui/src/accounts/AccountDetails/AccountDetails.tsx +++ b/packages/ui/src/accounts/AccountDetails/AccountDetails.tsx @@ -1,12 +1,7 @@ import React, { FunctionComponent } from "react"; import classes from "./AccountDetails.module.scss"; import FullScreenLoading from "../../common/loaders/FullScreenLoading/FullScreenLoading"; -import { - useGetAccount, - useGetPollingContractsByAccount, - useGetPollingKeysByAccount, - useGetPollingTransactionsByAccount, -} from "../../../../../frontend/src/hooks/use-api"; +import { useFlowserHooksApi } from "../../contexts/flowser-api.context"; import { DetailsCard, DetailsCardColumn, @@ -31,11 +26,12 @@ export const AccountDetails: FunctionComponent = ( props ) => { const { accountId } = props; - const { data, isLoading } = useGetAccount(accountId); - const { data: transactions } = useGetPollingTransactionsByAccount(accountId); - const { data: contracts } = useGetPollingContractsByAccount(accountId); - const { data: keys } = useGetPollingKeysByAccount(accountId); - const { account } = data ?? {}; + const api = useFlowserHooksApi(); + const { data: account, isLoading } = api.useGetAccount(accountId); + const { data: transactions } = api.useGetTransactionsByAccount(accountId); + const { data: contracts } = api.useGetContractsByAccount(accountId); + const { data: keys } = api.useGetKeysByAccount(accountId); + const { data: storageItems } = api.useGetStoragesByAccount(accountId); if (isLoading || !account) { return ; @@ -64,7 +60,7 @@ export const AccountDetails: FunctionComponent = ( }, { label: "Created date", - value: , + value: , }, ], ]; @@ -73,22 +69,34 @@ export const AccountDetails: FunctionComponent = ( { id: "storage", label: "Storage", - content: , + content: storageItems ? ( + + ) : ( + + ), }, { id: "transactions", label: "Transactions", - content: , + content: transactions ? ( + + ) : ( + + ), }, { id: "contracts", label: "Contracts", - content: , + content: contracts ? ( + + ) : ( + + ), }, { id: "keys", label: "Keys", - content: , + content: keys ? : , }, ]; diff --git a/packages/ui/src/accounts/AccountKeysTable/AccountKeysTable.tsx b/packages/ui/src/accounts/AccountKeysTable/AccountKeysTable.tsx index 9ec48473b..b689d7e07 100644 --- a/packages/ui/src/accounts/AccountKeysTable/AccountKeysTable.tsx +++ b/packages/ui/src/accounts/AccountKeysTable/AccountKeysTable.tsx @@ -1,6 +1,4 @@ import { createColumnHelper } from "@tanstack/table-core"; -import { DecoratedPollingEntity } from "../../../../../frontend/src/contexts/timeout-polling.context"; -import { AccountKey } from "@flowser/shared"; import Label from "../../common/misc/Label/Label"; import classes from "./AccountKeysTable.module.scss"; import { MiddleEllipsis } from "../../common/ellipsis/MiddleEllipsis"; @@ -9,8 +7,9 @@ import { BaseBadge } from "../../common/misc/BaseBadge/BaseBadge"; import { FlowUtils } from "../../utils/flow-utils"; import React, { ReactElement } from "react"; import { BaseTable } from "../../common/misc/BaseTable/BaseTable"; +import { FlowAccountKey } from "@onflowser/api"; -const columnsHelper = createColumnHelper>(); +const columnsHelper = createColumnHelper(); const columns = [ columnsHelper.accessor("accountAddress", { @@ -27,10 +26,10 @@ const columns = [ INDEX: {info.row.original.index} SIGN CURVE:{" "} - {FlowUtils.getSignatureAlgoName(info.row.original.signAlgo)} + {FlowUtils.getSignatureAlgoName(info.row.original.signAlgo!)} - HASH ALGO.: {FlowUtils.getHashAlgoName(info.row.original.hashAlgo)} + HASH ALGO.: {FlowUtils.getHashAlgoName(info.row.original.hashAlgo!)} REVOKED: {info.row.original.revoked ? "YES" : "NO"} @@ -52,14 +51,9 @@ function KeyDisplay(props: { label: string; keyValue: string }) { } type KeysTableProps = { - keys: DecoratedPollingEntity[]; + keys: FlowAccountKey[]; }; export function AccountKeysTable(props: KeysTableProps): ReactElement { - return ( - > - columns={columns} - data={props.keys} - /> - ); + return columns={columns} data={props.keys} />; } diff --git a/packages/ui/src/accounts/AccountLink/AccountLink.tsx b/packages/ui/src/accounts/AccountLink/AccountLink.tsx index 4e9a1496b..636731f57 100644 --- a/packages/ui/src/accounts/AccountLink/AccountLink.tsx +++ b/packages/ui/src/accounts/AccountLink/AccountLink.tsx @@ -1,5 +1,4 @@ import React, { ReactElement } from "react"; -import { NavLink } from "react-router-dom"; import { AccountAvatar } from "../AccountAvatar/AccountAvatar"; import { AccountName } from "../AccountName/AccountName"; import classes from "./AccountLink.module.scss"; diff --git a/packages/ui/src/accounts/AccountName/AccountName.tsx b/packages/ui/src/accounts/AccountName/AccountName.tsx index 400c7266c..cae6508ab 100644 --- a/packages/ui/src/accounts/AccountName/AccountName.tsx +++ b/packages/ui/src/accounts/AccountName/AccountName.tsx @@ -1,5 +1,5 @@ import React, { ReactElement } from "react"; -import { shortenText } from "../../utils/misc"; +import { TextUtils } from "../../utils/text-utils"; type AccountNameProps = { address: string; @@ -10,6 +10,8 @@ type AccountNameProps = { export function AccountName(props: AccountNameProps): ReactElement { const { address, short, className } = props; return ( -
{short ? shortenText(address, 6) : address}
+
+ {short ? TextUtils.shorten(address, 6) : address} +
); } diff --git a/packages/ui/src/accounts/AccountStorage/AccountStorage.tsx b/packages/ui/src/accounts/AccountStorage/AccountStorage.tsx index b9f8cfad7..8e3fb379a 100644 --- a/packages/ui/src/accounts/AccountStorage/AccountStorage.tsx +++ b/packages/ui/src/accounts/AccountStorage/AccountStorage.tsx @@ -1,26 +1,26 @@ -import { Account, AccountStorageDomain } from "@flowser/shared"; -import { useAnalytics } from "../../../../../frontend/src/hooks/use-analytics"; -import { useUrlQuery } from "../../../../../frontend/src/hooks/use-url-query"; -import { useGetPollingStorageByAccount } from "../../../../../frontend/src/hooks/use-api"; +import { useAnalytics } from "../../hooks/use-analytics"; +import { useUrlQuery } from "../../hooks/use-url-query"; import React, { ReactElement, useEffect, useState } from "react"; import { AnalyticEvent } from "../../../../../frontend/src/services/analytics.service"; import { PublicPrivateStorageCard } from "../PublicPrivateStorageCard/PublicPrivateStorageCard"; -import { enableDetailsIntroAnimation } from "../../../../../frontend/src/config/common"; import { InternalStorageCard } from "../InternalStorageCard/InternalStorageCard"; import classNames from "classnames"; import classes from "./AccountStorage.module.scss"; import { scrollableElementId } from "../../common/layouts/ProjectLayout/ProjectLayout"; +import { + FlowStorageDomain, + FlowAccountStorage +} from '@onflowser/api'; type AccountStorageProps = { - account: Account; + storageItems: FlowAccountStorage[]; }; export function AccountStorage(props: AccountStorageProps): ReactElement { - const { account } = props; + const {storageItems} = props; const { track } = useAnalytics(); const urlQueryParams = useUrlQuery(); const focusedStorageId = urlQueryParams.get("focusedStorageId"); - const { data: storageItems } = useGetPollingStorageByAccount(account.address); const [expandedCardIds, setExpandedCardIds] = useState( new Set(focusedStorageId ? [focusedStorageId] : []) ); @@ -64,13 +64,13 @@ export function AccountStorage(props: AccountStorageProps): ReactElement { }; const privateStorageItems = storageItems.filter( - (item) => item.pathDomain === AccountStorageDomain.STORAGE_DOMAIN_PRIVATE + (item) => item.domain === FlowStorageDomain.STORAGE_DOMAIN_PRIVATE ); const publicStorageItems = storageItems.filter( - (item) => item.pathDomain === AccountStorageDomain.STORAGE_DOMAIN_PUBLIC + (item) => item.domain === FlowStorageDomain.STORAGE_DOMAIN_PUBLIC ); const internalStorageItems = storageItems.filter( - (item) => item.pathDomain === AccountStorageDomain.STORAGE_DOMAIN_STORAGE + (item) => item.domain === FlowStorageDomain.STORAGE_DOMAIN_STORAGE ); const privateAndPublicStorageItems = [ @@ -83,8 +83,8 @@ export function AccountStorage(props: AccountStorageProps): ReactElement { {privateAndPublicStorageItems.map((item) => ( ))} @@ -94,7 +94,6 @@ export function AccountStorage(props: AccountStorageProps): ReactElement { toggleCardExpand(item.id)} isExpanded={expandedCardIds.has(item.id)} className={classNames({ diff --git a/packages/ui/src/accounts/AccountsTable/AccountsTable.tsx b/packages/ui/src/accounts/AccountsTable/AccountsTable.tsx index 319a431cd..2b84b6756 100644 --- a/packages/ui/src/accounts/AccountsTable/AccountsTable.tsx +++ b/packages/ui/src/accounts/AccountsTable/AccountsTable.tsx @@ -3,16 +3,14 @@ import Label from "../../common/misc/Label/Label"; import Value from "../../common/misc/Value/Value"; import { BaseTable } from "../../common/misc/BaseTable/BaseTable"; import { createColumnHelper } from "@tanstack/react-table"; -import { Account } from "@flowser/shared"; import { TextUtils } from "../../utils/text-utils"; -import { DecoratedPollingEntity } from "frontend/src/contexts/timeout-polling.context"; import { AccountLink } from "../AccountLink/AccountLink"; import { BaseBadge } from "../../common/misc/BaseBadge/BaseBadge"; import classes from "./AccountsTable.module.scss"; import { Tooltip } from "../../common/overlays/Tooltip/Tooltip"; -import { TimeAgo } from "../../common/time/TimeAgo/TimeAgo"; +import { FlowAccount } from "@onflowser/api"; -const columnHelper = createColumnHelper>(); +const columnHelper = createColumnHelper(); const columns = [ columnHelper.accessor("address", { @@ -49,29 +47,25 @@ const columns = [ header: () => , cell: (info) => {info.getValue().length ?? 0}, }), - columnHelper.accessor("transactions", { - header: () => , - cell: (info) => {info.getValue().length ?? 0}, - }), - columnHelper.accessor("createdAt", { - header: () => , - cell: (info) => ( - - - - ), - }), + // TODO(restructure): Provide this info + // columnHelper.accessor("transactions", { + // header: () => , + // cell: (info) => {info.getValue().length ?? 0}, + // }), + // columnHelper.accessor("createdAt", { + // header: () => , + // cell: (info) => ( + // + // + // + // ), + // }), ]; type AccountsTableProps = { - accounts: DecoratedPollingEntity[]; + accounts: FlowAccount[]; }; export const AccountsTable: FunctionComponent = (props) => { - return ( - > - columns={columns} - data={props.accounts} - /> - ); + return columns={columns} data={props.accounts} />; }; diff --git a/packages/ui/src/accounts/InternalStorageCard/InternalStorageCard.tsx b/packages/ui/src/accounts/InternalStorageCard/InternalStorageCard.tsx index 5cb54a767..54dc62c4e 100644 --- a/packages/ui/src/accounts/InternalStorageCard/InternalStorageCard.tsx +++ b/packages/ui/src/accounts/InternalStorageCard/InternalStorageCard.tsx @@ -1,19 +1,17 @@ import React, { ReactElement } from "react"; import classes from "./InternalStorageCard.module.scss"; -import { AccountStorageItem } from "@flowser/shared"; -import { FlowUtils } from "frontend/src/utils/flow-utils"; import classNames from "classnames"; import { SimpleButton } from "../../common/buttons/SimpleButton/SimpleButton"; -import { DecoratedPollingEntity } from "frontend/src/contexts/timeout-polling.context"; import { JsonView } from "../../common/code/JsonView/JsonView"; import { StorageDataTypes } from "../StorageDataTypes/StorageDataTypes"; +import { FlowUtils } from "../../utils/flow-utils"; +import { FlowAccountStorage } from '@onflowser/api'; type ExtendableStorageCardProps = { - storageItem: DecoratedPollingEntity; + storageItem: FlowAccountStorage; onToggleExpand: () => void; isExpanded: boolean; className?: string; - enableIntroAnimation?: boolean; }; export function InternalStorageCard({ @@ -21,13 +19,11 @@ export function InternalStorageCard({ onToggleExpand, isExpanded, className, - enableIntroAnimation = true, }: ExtendableStorageCardProps): ReactElement { const extendClass = classNames(className, { [classes.root]: true, [classes.gridItemExtended]: isExpanded, - [classes.introAnimation]: - enableIntroAnimation && (storageItem.isNew || storageItem.isUpdated), + [classes.introAnimation]: false }); const pathIdentifier = storageItem.path.split("/").reverse()[0]; @@ -36,7 +32,7 @@ export function InternalStorageCard({
onToggleExpand()}>
- {FlowUtils.getLowerCasedPathDomain(storageItem.pathDomain)} + {FlowUtils.getLowerCasedPathDomain(storageItem.domain)}
{isExpanded ? "-" : "+"}
diff --git a/packages/ui/src/accounts/PublicPrivateStorageCard/PublicPrivateStorageCard.tsx b/packages/ui/src/accounts/PublicPrivateStorageCard/PublicPrivateStorageCard.tsx index 2199904f1..d36f015b5 100644 --- a/packages/ui/src/accounts/PublicPrivateStorageCard/PublicPrivateStorageCard.tsx +++ b/packages/ui/src/accounts/PublicPrivateStorageCard/PublicPrivateStorageCard.tsx @@ -1,12 +1,12 @@ import React, { ReactElement } from "react"; import classes from "./PublicPrivateStorageCard.module.scss"; import { StorageDomainBadge } from "../StorageDomainBadge/StorageDomainBadge"; -import { ReactComponent as LinkIcon } from "../../common/icons/assets/link.svg"; import { AccountStorageItem } from "@flowser/shared/dist/src/generated/entities/accounts"; import { DecoratedPollingEntity } from "frontend/src/contexts/timeout-polling.context"; -import gradient from "../../../../../frontend/src/assets/images/gradient.png"; +import gradient from "./gradient.png"; import classNames from "classnames"; import { ProjectLink } from "../../common/links/ProjectLink"; +import { FlowserIcon } from "../../common/icons/FlowserIcon"; type StorageCardProps = { currentAccountAddress: string; @@ -42,7 +42,7 @@ export function PublicPrivateStorageCard({
{pathIdentifier}
- +
{storageItem.targetPath}
diff --git a/frontend/src/assets/images/gradient.png b/packages/ui/src/accounts/PublicPrivateStorageCard/gradient.png similarity index 100% rename from frontend/src/assets/images/gradient.png rename to packages/ui/src/accounts/PublicPrivateStorageCard/gradient.png diff --git a/packages/ui/src/accounts/StorageDataTypes/StorageDataTypes.tsx b/packages/ui/src/accounts/StorageDataTypes/StorageDataTypes.tsx index a307f9645..a455c9519 100644 --- a/packages/ui/src/accounts/StorageDataTypes/StorageDataTypes.tsx +++ b/packages/ui/src/accounts/StorageDataTypes/StorageDataTypes.tsx @@ -1,10 +1,10 @@ -import { AccountStorageItem } from "@flowser/shared"; import React, { ReactElement } from "react"; import classes from "./StorageDataTypes.module.scss"; import { BaseBadge } from "../../common/misc/BaseBadge/BaseBadge"; +import { FlowAccountStorage } from "@onflowser/api"; type StorageDataTypesProps = { - storageItem: AccountStorageItem; + storageItem: FlowAccountStorage; }; export function StorageDataTypes(props: StorageDataTypesProps): ReactElement { diff --git a/packages/ui/src/accounts/StorageDomainBadge/StorageDomainBadge.tsx b/packages/ui/src/accounts/StorageDomainBadge/StorageDomainBadge.tsx index 7d8ac12bb..ad14d2dbb 100644 --- a/packages/ui/src/accounts/StorageDomainBadge/StorageDomainBadge.tsx +++ b/packages/ui/src/accounts/StorageDomainBadge/StorageDomainBadge.tsx @@ -1,10 +1,10 @@ import React, { ReactElement } from "react"; import classes from "./StorageDomainBadge.module.scss"; -import { AccountStorageDomain } from "@flowser/shared"; import { FlowUtils } from "../../utils/flow-utils"; +import { FlowStorageDomain } from "@onflowser/api"; export type StorageBadgeProps = { - pathDomain: AccountStorageDomain; + pathDomain: FlowStorageDomain; }; export function StorageDomainBadge({ diff --git a/frontend/src/assets/images/logo-foreground.svg b/packages/ui/src/assets/logo-foreground.svg similarity index 100% rename from frontend/src/assets/images/logo-foreground.svg rename to packages/ui/src/assets/logo-foreground.svg diff --git a/frontend/src/assets/images/long_logo.png b/packages/ui/src/assets/long_logo.png similarity index 100% rename from frontend/src/assets/images/long_logo.png rename to packages/ui/src/assets/long_logo.png diff --git a/packages/ui/src/blocks/BlockDetails/BlockDetails.tsx b/packages/ui/src/blocks/BlockDetails/BlockDetails.tsx index d192868b2..79c5d93ce 100644 --- a/packages/ui/src/blocks/BlockDetails/BlockDetails.tsx +++ b/packages/ui/src/blocks/BlockDetails/BlockDetails.tsx @@ -2,9 +2,8 @@ import React, { FunctionComponent } from "react"; import classes from "./BlockDetails.module.scss"; import FullScreenLoading from "../../common/loaders/FullScreenLoading/FullScreenLoading"; import { - useGetBlock, - useGetTransactionsByBlock, -} from "../../../../../frontend/src/hooks/use-api"; + useFlowserHooksApi, +} from '../../contexts/flowser-api.context'; import { FlowUtils } from "../../utils/flow-utils"; import { DetailsCard, @@ -21,9 +20,9 @@ type BlockDetailsProps = { }; export const BlockDetails: FunctionComponent = (props) => { - const { isLoading, data } = useGetBlock(props.blockId); - const { block } = data ?? {}; - const { data: transactions } = useGetTransactionsByBlock(props.blockId); + const api = useFlowserHooksApi() + const { isLoading, data: block } = api.useGetBlock(props.blockId); + const { data: transactions } = api.useGetTransactionsByBlock(props.blockId); if (isLoading || !block) { return ; diff --git a/packages/ui/src/blocks/BlocksTable/BlocksTable.tsx b/packages/ui/src/blocks/BlocksTable/BlocksTable.tsx index 4c7dffe10..bbb66c96b 100644 --- a/packages/ui/src/blocks/BlocksTable/BlocksTable.tsx +++ b/packages/ui/src/blocks/BlocksTable/BlocksTable.tsx @@ -5,15 +5,14 @@ import classes from "./BlocksTable.module.scss"; import { MiddleEllipsis } from "../../common/ellipsis/MiddleEllipsis"; import { createColumnHelper } from "@tanstack/table-core"; import { BaseTable } from "../../common/misc/BaseTable/BaseTable"; -import { Block } from "@flowser/shared"; -import { DecoratedPollingEntity } from "frontend/src/contexts/timeout-polling.context"; import { ProjectLink } from "../../common/links/ProjectLink"; import { TimeAgo } from "../../common/time/TimeAgo/TimeAgo"; +import { FlowBlock } from "@onflowser/api"; -const columnHelper = createColumnHelper>(); +const columnHelper = createColumnHelper(); type BlocksTableProps = { - blocks: DecoratedPollingEntity[]; + blocks: FlowBlock[]; }; export const BlocksTable: FunctionComponent = (props) => { @@ -59,7 +58,7 @@ export const BlocksTable: FunctionComponent = (props) => { ); return ( - > + data={blocks} columns={columns} headerRowClass={classes.tableRow} diff --git a/packages/ui/src/common/errors/ErrorMessage.tsx b/packages/ui/src/common/errors/ErrorMessage.tsx index 549532c44..50c5b8982 100644 --- a/packages/ui/src/common/errors/ErrorMessage.tsx +++ b/packages/ui/src/common/errors/ErrorMessage.tsx @@ -1,11 +1,10 @@ import React, { FunctionComponent } from "react"; -import { FlowserError } from "@flowser/shared"; -import { CommonUtils } from "../../../../../frontend/src/utils/common-utils"; +import { CommonUtils } from "../../utils/common-utils"; import { Message } from "./Message"; export type ErrorMessageProps = { className?: string; - error: Error | FlowserError | string; + error: Error | string; }; export const ErrorMessage: FunctionComponent = ({ @@ -23,13 +22,7 @@ type ErrorInfo = { description?: string; }; -function getErrorInfo(error: Error | FlowserError | string): ErrorInfo { - if (CommonUtils.isFlowserError(error)) { - return { - title: error.message, - description: error.description, - }; - } +function getErrorInfo(error: Error | string): ErrorInfo { if (CommonUtils.isStandardError(error)) { return { title: error.message, diff --git a/packages/ui/src/common/icons/FlowserIcon.tsx b/packages/ui/src/common/icons/FlowserIcon.tsx index 52004fcd4..98810022c 100644 --- a/packages/ui/src/common/icons/FlowserIcon.tsx +++ b/packages/ui/src/common/icons/FlowserIcon.tsx @@ -27,10 +27,16 @@ import Caret from "./assets/caret.svg"; import CircleCross from "./assets/circle-cross.svg"; import CircleCheck from "./assets/circle-check.svg"; import CircleQuestionMark from "./assets/circle-question-mark.svg"; +import Expand from "./assets/expand.svg"; +import Shrink from "./assets/shrink.svg"; +import Logs from "./assets/logs.svg"; import { TbBrandVscode } from "react-icons/tb"; import { SiWebstorm, SiIntellijidea } from "react-icons/si"; export const FlowserIcon = { + Logs: Logs, + Expand: Expand, + Shrink: Shrink, CircleCross: CircleCross, CircleCheck: CircleCheck, CircleQuestionMark: CircleQuestionMark, diff --git a/packages/ui/src/common/links/ProjectLink.tsx b/packages/ui/src/common/links/ProjectLink.tsx index ee5743a53..fbea23c46 100644 --- a/packages/ui/src/common/links/ProjectLink.tsx +++ b/packages/ui/src/common/links/ProjectLink.tsx @@ -1,7 +1,7 @@ import React from "react"; import { NavLink, NavLinkProps, To } from "react-router-dom"; import { ReactElement } from "react"; -import { useCurrentProjectId } from "../../../../../frontend/src/hooks/use-current-project-id"; +import { useCurrentProjectId } from "../../hooks/use-current-project-id"; type ProjectLinkProps = NavLinkProps; diff --git a/packages/ui/src/common/misc/Breadcrumbs/Breadcrumbs.tsx b/packages/ui/src/common/misc/Breadcrumbs/Breadcrumbs.tsx index 554ee0a7b..5bb49d845 100644 --- a/packages/ui/src/common/misc/Breadcrumbs/Breadcrumbs.tsx +++ b/packages/ui/src/common/misc/Breadcrumbs/Breadcrumbs.tsx @@ -3,7 +3,7 @@ import { NavLink, useMatches, useNavigate } from "react-router-dom"; import classes from "./Breadcrumbs.module.scss"; import classNames from "classnames"; import { FlowserIcon } from "../../icons/FlowserIcon"; -import { useCurrentProjectId } from "../../../../../../frontend/src/hooks/use-current-project-id"; +import { useCurrentProjectId } from "../../../hooks/use-current-project-id"; type BreadcrumbsProps = { className?: string; diff --git a/packages/ui/src/common/misc/ProjectRequirements/ProjectRequirements.module.scss b/packages/ui/src/common/misc/FlowserUsageRequirements/FlowserUsageRequirements.module.scss similarity index 100% rename from packages/ui/src/common/misc/ProjectRequirements/ProjectRequirements.module.scss rename to packages/ui/src/common/misc/FlowserUsageRequirements/FlowserUsageRequirements.module.scss diff --git a/packages/ui/src/common/misc/ProjectRequirements/ProjectRequirements.tsx b/packages/ui/src/common/misc/FlowserUsageRequirements/FlowserUsageRequirements.tsx similarity index 72% rename from packages/ui/src/common/misc/ProjectRequirements/ProjectRequirements.tsx rename to packages/ui/src/common/misc/FlowserUsageRequirements/FlowserUsageRequirements.tsx index 7ec513b91..b10d8535d 100644 --- a/packages/ui/src/common/misc/ProjectRequirements/ProjectRequirements.tsx +++ b/packages/ui/src/common/misc/FlowserUsageRequirements/FlowserUsageRequirements.tsx @@ -1,14 +1,16 @@ import React from "react"; import { ActionDialog } from "../../overlays/dialogs/action/ActionDialog"; -import { useGetProjectRequirements } from "../../../../../../frontend/src/hooks/use-api"; +import { useFlowserHooksApi } from "../../../contexts/flowser-api.context"; import { ReactElement } from "react"; -import { ProjectRequirement, ProjectRequirementType } from "@flowser/shared"; -import classes from "./ProjectRequirements.module.scss"; +import classes from "./FlowserUsageRequirements.module.scss"; +import { + FlowserUsageRequirement, + FlowserUsageRequirementType, +} from "@onflowser/api"; -// TODO(restructure): Move this to app folder -export function ProjectRequirements(): ReactElement | null { - const { data } = useGetProjectRequirements(); - const { missingRequirements } = data ?? { missingRequirements: [] }; +export function FlowserUsageRequirements(): ReactElement | null { + const api = useFlowserHooksApi(); + const { data: missingRequirements } = api.useGetFlowserUsageRequirements(); const showModal = missingRequirements.length > 0; if (!showModal) { @@ -32,7 +34,7 @@ export function ProjectRequirements(): ReactElement | null { function MissingRequirementItem({ requirement, }: { - requirement: ProjectRequirement; + requirement: FlowserUsageRequirement; }) { return (
@@ -42,21 +44,21 @@ function MissingRequirementItem({ ); } -function getTitle(requirement: ProjectRequirement) { +function getTitle(requirement: FlowserUsageRequirement) { switch (requirement.type) { - case ProjectRequirementType.PROJECT_REQUIREMENT_UNSUPPORTED_FLOW_CLI_VERSION: + case FlowserUsageRequirementType.PROJECT_REQUIREMENT_UNSUPPORTED_FLOW_CLI_VERSION: return "Unsupported flow-cli version"; - case ProjectRequirementType.PROJECT_REQUIREMENT_MISSING_FLOW_CLI: + case FlowserUsageRequirementType.PROJECT_REQUIREMENT_MISSING_FLOW_CLI: return "Missing flow-cli"; default: return "Unknown"; } } -function getDescription(requirement: ProjectRequirement) { +function getDescription(requirement: FlowserUsageRequirement) { const { missingVersionRequirement, type } = requirement; switch (type) { - case ProjectRequirementType.PROJECT_REQUIREMENT_UNSUPPORTED_FLOW_CLI_VERSION: + case FlowserUsageRequirementType.PROJECT_REQUIREMENT_UNSUPPORTED_FLOW_CLI_VERSION: return ( <>

@@ -82,7 +84,7 @@ function getDescription(requirement: ProjectRequirement) {

); - case ProjectRequirementType.PROJECT_REQUIREMENT_MISSING_FLOW_CLI: + case FlowserUsageRequirementType.PROJECT_REQUIREMENT_MISSING_FLOW_CLI: return ( <>

diff --git a/packages/ui/src/common/misc/SideNavigation/SideNavigation.tsx b/packages/ui/src/common/misc/SideNavigation/SideNavigation.tsx index 51a7ac4d0..2c3136b5b 100644 --- a/packages/ui/src/common/misc/SideNavigation/SideNavigation.tsx +++ b/packages/ui/src/common/misc/SideNavigation/SideNavigation.tsx @@ -4,7 +4,7 @@ import { useMatches } from "react-router-dom"; import { FlowserIcon } from "packages/ui/src/components/icons/FlowserIcon"; import { SizedBox } from "../SizedBox/SizedBox"; import classNames from "classnames"; -import { useProjectManager } from "../../../../../../frontend/src/contexts/projects.context"; +import { useProjectManager } from "../../../contexts/projects.context"; import { buildProjectUrl, ProjectLink } from "../../links/ProjectLink"; import { useCurrentProjectId } from "frontend/src/hooks/use-current-project-id"; diff --git a/packages/ui/src/common/overlays/dialogs/consent/ConsentDialog.tsx b/packages/ui/src/common/overlays/dialogs/consent/ConsentDialog.tsx index 7e30e4f7c..4698b63d8 100644 --- a/packages/ui/src/common/overlays/dialogs/consent/ConsentDialog.tsx +++ b/packages/ui/src/common/overlays/dialogs/consent/ConsentDialog.tsx @@ -1,7 +1,7 @@ import React, { ReactElement, useState } from "react"; import { BaseDialog } from "../base/BaseDialog"; import classes from "./ConsentDialog.module.scss"; -import logo from "../../../../../../../frontend/src/assets/images/logo-foreground.svg"; +import logo from "../../../../assets/logo-foreground.svg"; import ToggleButton, { ToggleButtonProps, } from "../../../buttons/ToggleButton/ToggleButton"; diff --git a/packages/ui/src/common/overlays/dialogs/snapshot/SnapshotDialog.tsx b/packages/ui/src/common/overlays/dialogs/snapshot/SnapshotDialog.tsx index dde69827d..27573402e 100644 --- a/packages/ui/src/common/overlays/dialogs/snapshot/SnapshotDialog.tsx +++ b/packages/ui/src/common/overlays/dialogs/snapshot/SnapshotDialog.tsx @@ -5,8 +5,8 @@ import toast from "react-hot-toast"; import { ServiceRegistry } from "../../../../../../../frontend/src/services/service-registry"; import { Input } from "../../../inputs/Input/Input"; import { ActionDialog } from "../action/ActionDialog"; -import { useErrorHandler } from "../../../../../../../frontend/src/hooks/use-error-handler"; -import { useCurrentProjectId } from "../../../../../../../frontend/src/hooks/use-current-project-id"; +import { useErrorHandler } from "../../../../hooks/use-error-handler"; +import { useCurrentProjectId } from "../../../../hooks/use-current-project-id"; export type SnapshotDialogProps = { show?: boolean; diff --git a/frontend/src/contexts/confirm-dialog.context.tsx b/packages/ui/src/contexts/confirm-dialog.context.tsx similarity index 93% rename from frontend/src/contexts/confirm-dialog.context.tsx rename to packages/ui/src/contexts/confirm-dialog.context.tsx index e5f7972e0..9abdd3c1b 100644 --- a/frontend/src/contexts/confirm-dialog.context.tsx +++ b/packages/ui/src/contexts/confirm-dialog.context.tsx @@ -4,7 +4,7 @@ import React, { useContext, useState, } from "react"; -import { ConfirmationDialog } from "../../../packages/ui/src/common/overlays/dialogs/confirmation/ConfirmationDialog"; +import { ConfirmationDialog } from "../common/overlays/dialogs/confirmation/ConfirmationDialog"; export type ConfirmDialogContextState = { showDialog: (props: OpenConfirmDialogProps) => void; diff --git a/frontend/src/contexts/flow.context.tsx b/packages/ui/src/contexts/flow.context.tsx similarity index 77% rename from frontend/src/contexts/flow.context.tsx rename to packages/ui/src/contexts/flow.context.tsx index f9081ade8..b19fe2094 100644 --- a/frontend/src/contexts/flow.context.tsx +++ b/packages/ui/src/contexts/flow.context.tsx @@ -1,5 +1,5 @@ import React, { createContext, ReactElement, useEffect } from "react"; -import { useGetFlowConfig } from "../hooks/use-api"; +import { useFlowserHooksApi } from './flowser-api.context'; import * as fcl from "@onflow/fcl"; import { useProjectManager } from "./projects.context"; @@ -13,11 +13,12 @@ export function FlowConfigProvider({ }: { children: ReactElement; }): ReactElement { + const api = useFlowserHooksApi() const { currentProject } = useProjectManager(); - const { data: flowConfigData } = useGetFlowConfig(); + const { data: flowJSON } = api.useGetFlowJson(); useEffect(() => { - if (currentProject && flowConfigData?.flowJson) { + if (currentProject && flowJSON) { const accessNodePort = currentProject.emulator?.restServerPort ?? 8888; fcl .config({ @@ -27,10 +28,10 @@ export function FlowConfigProvider({ "flow.network": "local", }) .load({ - flowJSON: JSON.parse(flowConfigData.flowJson), + flowJSON: JSON.parse(flowJSON), }); } - }, [currentProject, flowConfigData]); + }, [currentProject, flowJSON]); return ( diff --git a/packages/ui/src/contexts/flowser-api.context.tsx b/packages/ui/src/contexts/flowser-api.context.tsx new file mode 100644 index 000000000..a3b1c1466 --- /dev/null +++ b/packages/ui/src/contexts/flowser-api.context.tsx @@ -0,0 +1,71 @@ +import { createContext, useContext } from "react"; +import { InteractionDefinition } from "../interactions/core/core-types"; +import { SWRResponse } from "swr"; +import { + FlowAccount, + FlowAccountKey, + FlowAccountStorage, + FlowBlock, + FlowCliInfo, + FlowContract, + FlowEvent, + FlowserProject, + FlowserUsageRequirement, + FlowStateSnapshot, + FlowTransaction, + InteractionTemplate, + ManagedProcessOutput, +} from "@onflowser/api"; + +type FlowserHooksApi = { + useGetAccounts(): SWRResponse; + useGetAccount(id: string): SWRResponse; + useGetKeysByAccount(address: string): SWRResponse; + useGetStoragesByAccount(address: string): SWRResponse; + useGetBlocks(): SWRResponse; + useGetBlock(id: string): SWRResponse; + // TODO(restructure): Test polling of not found resources + useGetTransaction(id: string): SWRResponse; + useGetTransactions(): SWRResponse; + useGetTransactionsByAccount(address: string): SWRResponse; + useGetTransactionsByBlock(id: string): SWRResponse; + useGetContracts(): SWRResponse; + useGetContract(id: string): SWRResponse; + useGetContractsByAccount(address: string): SWRResponse; + useGetStateSnapshots(): SWRResponse; + useGetEvents(): SWRResponse; + useGetEvent(id: string): SWRResponse; + useGetEventsByTransaction(id: string): SWRResponse; + useGetOutputsByProcess(id: string): SWRResponse; + useGetFlowserProjects(): SWRResponse; + useGetFlowserProject(id: string): SWRResponse; + useGetFlowserUsageRequirements(): SWRResponse; + useGetInteractionTemplates(): SWRResponse; + // TODO(restructure): See below note + // We are not using `sourceCode` as the cache key, + // to avoid the flickering UI effect that's caused + // by undefined parsed interaction every time the source code changes. + useGetParsedInteraction( + request: InteractionDefinition + ): SWRResponse; + useGetFlowCliInfo(): SWRResponse; + useGetAddressIndex(options: { + address: string; + chainId: "flow-emulator"; + }): SWRResponse; + useGetFlowJson(): SWRResponse; +}; + +const FlowserHooksApiContext = createContext( + undefined as never +); + +export function useFlowserHooksApi() { + const context = useContext(FlowserHooksApiContext); + + if (context === undefined) { + throw new Error("FlowserHooksApi context not found"); + } + + return context; +} diff --git a/frontend/src/contexts/platform-adapter.context.tsx b/packages/ui/src/contexts/platform-adapter.context.tsx similarity index 90% rename from frontend/src/contexts/platform-adapter.context.tsx rename to packages/ui/src/contexts/platform-adapter.context.tsx index f112a1cfe..f09fdc179 100644 --- a/frontend/src/contexts/platform-adapter.context.tsx +++ b/packages/ui/src/contexts/platform-adapter.context.tsx @@ -4,7 +4,7 @@ import React, { ReactNode, useContext, } from "react"; -import { MonitoringServiceInt } from "../services/monitoring.service"; +import { MonitoringServiceInt } from "../../../../frontend/src/services/monitoring.service"; export type PlatformAdapterState = { onPickProjectPath?: () => Promise; diff --git a/frontend/src/contexts/projects.context.tsx b/packages/ui/src/contexts/projects.context.tsx similarity index 77% rename from frontend/src/contexts/projects.context.tsx rename to packages/ui/src/contexts/projects.context.tsx index 427e9e0c5..674d6aab6 100644 --- a/frontend/src/contexts/projects.context.tsx +++ b/packages/ui/src/contexts/projects.context.tsx @@ -1,24 +1,24 @@ import React, { createContext, ReactElement, useContext } from "react"; import toast from "react-hot-toast"; -import { Project } from "@flowser/shared"; import { useConfirmDialog } from "./confirm-dialog.context"; -import { ServiceRegistry } from "../services/service-registry"; -import { useGetCurrentProject } from "../hooks/use-api"; -import { useQueryClient } from "react-query"; +import { ServiceRegistry } from "../../../../frontend/src/services/service-registry"; +import { useFlowserHooksApi } from "./flowser-api.context"; import { useAnalytics } from "../hooks/use-analytics"; -import { AnalyticEvent } from "../services/analytics.service"; +import { AnalyticEvent } from "../../../../frontend/src/services/analytics.service"; import { useNavigate } from "react-router-dom"; import { Helmet } from "react-helmet"; -import { useErrorHandler } from "hooks/use-error-handler"; +import { useErrorHandler } from "../hooks/use-error-handler"; +import { useCurrentProjectId } from "../hooks/use-current-project-id"; +import { FlowserProject } from "@onflowser/api"; export type ProjectsManager = { - currentProject: Project | undefined; + currentProject: FlowserProject | undefined; switchProject: () => Promise; startProject: ( - project: Project, + project: FlowserProject, options?: StartProjectOptions ) => Promise; - removeProject: (project: Project) => void; + removeProject: (project: FlowserProject) => void; }; type StartProjectOptions = { replaceCurrentPage: boolean }; @@ -35,14 +35,15 @@ export function ProjectsManagerProvider({ const { projectsService } = ServiceRegistry.getInstance(); const { track } = useAnalytics(); - const queryClient = useQueryClient(); const navigate = useNavigate(); const { handleError } = useErrorHandler(ProjectsManagerProvider.name); const { showDialog, hideDialog } = useConfirmDialog(); - const { data: currentProject, refetch: refetchCurrentProject } = - useGetCurrentProject(); + const api = useFlowserHooksApi(); + const currentProjectId = useCurrentProjectId(); + const { data: currentProject, mutate: refetchCurrentProject } = + api.useGetFlowserProject(currentProjectId); - const confirmProjectRemove = async (project: Project) => { + const confirmProjectRemove = async (project: FlowserProject) => { track(AnalyticEvent.PROJECT_REMOVED, { projectName: project.name }); try { @@ -62,7 +63,7 @@ export function ProjectsManagerProvider({ } }; - function removeProject(project: Project) { + function removeProject(project: FlowserProject) { showDialog({ title: "Delete project", body: Are you sure you want to delete this project?, @@ -81,9 +82,7 @@ export function ProjectsManagerProvider({ // nothing critical happened, ignore the error console.warn("Couldn't stop the emulator: ", e); } - // Clear the entire cache, - // so that previous data isn't there when using another project - queryClient.clear(); + // TODO(restructure): Do we need to clear the local cache? navigate("/projects", { replace: true, }); @@ -95,7 +94,10 @@ export function ProjectsManagerProvider({ }); } - async function startProject(project: Project, options?: StartProjectOptions) { + async function startProject( + project: FlowserProject, + options?: StartProjectOptions + ) { try { await toast.promise(projectsService.useProject(project.id), { loading: "Starting project...", diff --git a/frontend/src/contexts/snapshots.context.tsx b/packages/ui/src/contexts/snapshots.context.tsx similarity index 81% rename from frontend/src/contexts/snapshots.context.tsx rename to packages/ui/src/contexts/snapshots.context.tsx index 28ab0e53c..3e9946a36 100644 --- a/frontend/src/contexts/snapshots.context.tsx +++ b/packages/ui/src/contexts/snapshots.context.tsx @@ -7,19 +7,18 @@ import React, { useMemo, } from "react"; import toast from "react-hot-toast"; -import { Block, EmulatorSnapshot } from "@flowser/shared"; import { useConfirmDialog } from "./confirm-dialog.context"; -import { ServiceRegistry } from "../services/service-registry"; +import { ServiceRegistry } from "../../../../frontend/src/services/service-registry"; import { - useGetPollingBlocks, - useGetPollingEmulatorSnapshots, -} from "../hooks/use-api"; + useFlowserHooksApi, +} from "./flowser-api.context"; import { useErrorHandler } from "../hooks/use-error-handler"; import { useAnalytics } from "../hooks/use-analytics"; -import { AnalyticEvent } from "../services/analytics.service"; -import { FlowUtils } from "../../../packages/ui/src/utils/flow-utils"; -import { SnapshotDialog } from "../../../packages/ui/src/common/overlays/dialogs/snapshot/SnapshotDialog"; +import { AnalyticEvent } from "../../../../frontend/src/services/analytics.service"; +import { FlowUtils } from "../utils/flow-utils"; +import { SnapshotDialog } from "../common/overlays/dialogs/snapshot/SnapshotDialog"; import { useProjectManager } from "./projects.context"; +import { FlowBlock, FlowStateSnapshot } from '@onflowser/api'; export type SnapshotsManager = { createSnapshot: () => void; @@ -41,14 +40,13 @@ export function SnapshotsManagerProvider({ const { handleError } = useErrorHandler(SnapshotsManagerProvider.name); const { showDialog } = useConfirmDialog(); const { currentProject } = useProjectManager(); - const { data: blocks, refresh } = useGetPollingBlocks(); - const { data: emulatorSnapshots } = useGetPollingEmulatorSnapshots(); + const api = useFlowserHooksApi(); + const { data: blocks, mutate } = api.useGetBlocks(); + const { data: stateSnapshots } = api.useGetStateSnapshots(); const snapshotLookupByBlockId = useMemo( () => - new Map( - emulatorSnapshots.map((snapshot) => [snapshot.blockId, snapshot]) - ), - [emulatorSnapshots] + new Map(stateSnapshots?.map((snapshot) => [snapshot.blockId, snapshot])), + [stateSnapshots] ); const [showSnapshotModal, setShowSnapshotModal] = useState(false); @@ -68,7 +66,7 @@ export function SnapshotsManagerProvider({ } } - function checkoutSnapshot(snapshot: EmulatorSnapshot) { + function checkoutSnapshot(snapshot: FlowStateSnapshot) { const isSnapshotEnabled = currentProject?.emulator?.snapshot; if (!isSnapshotEnabled) { toast.error( @@ -77,6 +75,10 @@ export function SnapshotsManagerProvider({ return; } + if (blocks === undefined) { + throw new Error("No blocks found"); + } + const latestBlock = blocks[0]; if (snapshot.blockId === latestBlock.id) { @@ -96,7 +98,7 @@ export function SnapshotsManagerProvider({ blockId: snapshot.blockId, projectId: currentProject.id, }); - refresh(); + mutate(); toast.success( `Moved to block: ${FlowUtils.getShortedBlockId(snapshot.blockId)}` ); @@ -119,10 +121,14 @@ export function SnapshotsManagerProvider({ }); } - function rollbackToBlock(targetBlock: Block) { + function rollbackToBlock(targetBlock: FlowBlock) { const onConfirm = async () => { track(AnalyticEvent.CHECKOUT_SNAPSHOT); + if (blocks === undefined) { + throw new Error("No blocks found"); + } + const latestBlock = blocks[0]; if (targetBlock.id === latestBlock.id) { @@ -137,7 +143,7 @@ export function SnapshotsManagerProvider({ await snapshotService.rollback({ blockHeight: targetBlock.height, }); - refresh(); + mutate(); toast.success( `Moved to block: ${FlowUtils.getShortedBlockId(targetBlock.id)}` ); @@ -170,6 +176,10 @@ export function SnapshotsManagerProvider({ return checkoutSnapshot(snapshot); } + if (blocks === undefined) { + throw new Error("No blocks found"); + } + const targetBlock = blocks.find((block) => block.id === targetBlockId); if (!targetBlock) { diff --git a/frontend/src/contexts/timeout-polling.context.tsx b/packages/ui/src/contexts/timeout-polling.context.tsx similarity index 100% rename from frontend/src/contexts/timeout-polling.context.tsx rename to packages/ui/src/contexts/timeout-polling.context.tsx diff --git a/packages/ui/src/contracts/ContractDetails/ContractDetails.tsx b/packages/ui/src/contracts/ContractDetails/ContractDetails.tsx index 78e31809e..47bdffb36 100644 --- a/packages/ui/src/contracts/ContractDetails/ContractDetails.tsx +++ b/packages/ui/src/contracts/ContractDetails/ContractDetails.tsx @@ -1,6 +1,6 @@ import React, { FunctionComponent } from "react"; import FullScreenLoading from "../../common/loaders/FullScreenLoading/FullScreenLoading"; -import { useGetContract } from "../../../../../frontend/src/hooks/use-api"; +import { useFlowserHooksApi } from "../../contexts/flowser-api.context"; import classes from "./ContractDetails.module.scss"; import { DetailsCard, @@ -20,8 +20,8 @@ export const ContractDetails: FunctionComponent = ( props ) => { const { contractId } = props; - const { isLoading, data } = useGetContract(contractId); - const { contract } = data ?? {}; + const api = useFlowserHooksApi(); + const { isLoading, data: contract } = api.useGetContract(contractId); if (isLoading || !contract) { return ; @@ -35,8 +35,8 @@ export const ContractDetails: FunctionComponent = ( { label: "Account", value: ( - - {contract.accountAddress} + + {contract.address} ), }, @@ -52,11 +52,11 @@ export const ContractDetails: FunctionComponent = ( rows.push( { label: "Updated date", - value: , + value: , }, { label: "Created date", - value: , + value: , } ); diff --git a/packages/ui/src/contracts/ContractsTable/ContractsTable.tsx b/packages/ui/src/contracts/ContractsTable/ContractsTable.tsx index c04b18f5a..a9324fb76 100644 --- a/packages/ui/src/contracts/ContractsTable/ContractsTable.tsx +++ b/packages/ui/src/contracts/ContractsTable/ContractsTable.tsx @@ -1,6 +1,4 @@ import { createColumnHelper } from "@tanstack/table-core"; -import { DecoratedPollingEntity } from "../../../../../frontend/src/contexts/timeout-polling.context"; -import { AccountContract } from "@flowser/shared"; import Label from "../../common/misc/Label/Label"; import Value from "../../common/misc/Value/Value"; import { AccountLink } from "../../accounts/AccountLink/AccountLink"; @@ -11,9 +9,9 @@ import { Tooltip } from "../../common/overlays/Tooltip/Tooltip"; import { BaseBadge } from "../../common/misc/BaseBadge/BaseBadge"; import classes from "./ContractsTable.module.scss"; import { TimeAgo } from "../../common/time/TimeAgo/TimeAgo"; +import { FlowContract } from "@onflowser/api"; -const columnHelper = - createColumnHelper>(); +const columnHelper = createColumnHelper(); const columns = [ columnHelper.accessor("name", { @@ -26,7 +24,7 @@ const columns = [ ), }), - columnHelper.accessor("accountAddress", { + columnHelper.accessor("address", { header: () => , cell: (info) => ( @@ -57,7 +55,7 @@ const columns = [ }), ]; -function ContractTags(props: { contract: AccountContract }) { +function ContractTags(props: { contract: FlowContract }) { const { contract } = props; if (contract.localConfig) { @@ -75,7 +73,7 @@ function ContractTags(props: { contract: AccountContract }) { } type ContractsTableProps = { - contracts: DecoratedPollingEntity[]; + contracts: FlowContract[]; }; export function ContractsTable(props: ContractsTableProps): ReactElement { @@ -85,10 +83,5 @@ export function ContractsTable(props: ContractsTableProps): ReactElement { [props.contracts] ); - return ( - > - columns={columns} - data={sortedContracts} - /> - ); + return columns={columns} data={sortedContracts} />; } diff --git a/packages/ui/src/events/EventDetails/EventDetails.tsx b/packages/ui/src/events/EventDetails/EventDetails.tsx index 5f628c0ff..3a909543e 100644 --- a/packages/ui/src/events/EventDetails/EventDetails.tsx +++ b/packages/ui/src/events/EventDetails/EventDetails.tsx @@ -1,6 +1,8 @@ import React, { FunctionComponent } from "react"; import FullScreenLoading from "../../common/loaders/FullScreenLoading/FullScreenLoading"; -import { useGetEvents } from "../../../../../frontend/src/hooks/use-api"; +import { + useFlowserHooksApi, +} from "../../contexts/flowser-api.context"; import classes from "./EventDetails.module.scss"; import { DetailsCard, @@ -22,8 +24,8 @@ type EventDetailsProps = { export const EventDetails: FunctionComponent = (props) => { const { eventId } = props; - const { data } = useGetEvents(); - const event = data.find((event) => event.id === eventId); + const api = useFlowserHooksApi(); + const { data: event } = api.useGetEvent(eventId); if (!event) { return ; diff --git a/packages/ui/src/events/EventsTable/EventsTable.tsx b/packages/ui/src/events/EventsTable/EventsTable.tsx index 15e18dd07..d9a14422d 100644 --- a/packages/ui/src/events/EventsTable/EventsTable.tsx +++ b/packages/ui/src/events/EventsTable/EventsTable.tsx @@ -11,8 +11,9 @@ import { ProjectLink } from "../../common/links/ProjectLink"; import { EventOriginLink } from "../EventOriginLink/EventOriginLink"; import { EventUtils } from "../utils"; import { TimeAgo } from "../../common/time/TimeAgo/TimeAgo"; +import { FlowEvent } from '@onflowser/api'; -const columnHelper = createColumnHelper>(); +const columnHelper = createColumnHelper(); const columns = [ columnHelper.accessor("id", { @@ -70,12 +71,12 @@ const columns = [ ]; type EventsTableProps = { - events: DecoratedPollingEntity[]; + events: FlowEvent[]; }; export function EventsTable(props: EventsTableProps): ReactElement { return ( - > + data={props.events} columns={columns} /> diff --git a/packages/ui/src/hooks/use-analytics.ts b/packages/ui/src/hooks/use-analytics.ts new file mode 100644 index 000000000..855b9c0d3 --- /dev/null +++ b/packages/ui/src/hooks/use-analytics.ts @@ -0,0 +1,45 @@ +import { useEffect } from "react"; +import { ServiceRegistry } from "../../../../frontend/src/services/service-registry"; +import { useLocalStorage } from "@uidotdev/usehooks"; +import { AnalyticEvent } from "../../../../frontend/src/services/analytics.service"; +import { Dict } from "mixpanel-browser"; +import { useFlowserHooksApi } from "../contexts/flowser-api.context"; +import { useCurrentProjectId } from "./use-current-project-id"; + +type Analytics = { + setIsConsented: (isConsented: boolean) => void; + isConsented: boolean | undefined; + track: (event: AnalyticEvent, properties?: Dict) => void; +}; + +export function useAnalytics(): Analytics { + const { analyticsService } = ServiceRegistry.getInstance(); + const [isConsented, setIsConsented] = useLocalStorage( + "consent-analytics", + undefined + ); + const api = useFlowserHooksApi(); + const currentProjectId = useCurrentProjectId(); + const { data: currentProject } = api.useGetFlowserProject(currentProjectId); + + useEffect(() => { + if (isConsented) { + analyticsService.enable(); + } else { + analyticsService.disable(); + } + }, [isConsented]); + + function track(event: AnalyticEvent, properties?: Dict) { + return analyticsService.track(event, { + ...properties, + projectName: currentProject.name, + }); + } + + return { + isConsented, + setIsConsented, + track, + }; +} diff --git a/frontend/src/hooks/use-current-project-id.ts b/packages/ui/src/hooks/use-current-project-id.ts similarity index 100% rename from frontend/src/hooks/use-current-project-id.ts rename to packages/ui/src/hooks/use-current-project-id.ts diff --git a/frontend/src/hooks/use-error-handler.ts b/packages/ui/src/hooks/use-error-handler.ts similarity index 82% rename from frontend/src/hooks/use-error-handler.ts rename to packages/ui/src/hooks/use-error-handler.ts index b79083ec1..4211acfef 100644 --- a/frontend/src/hooks/use-error-handler.ts +++ b/packages/ui/src/hooks/use-error-handler.ts @@ -11,14 +11,10 @@ export function useErrorHandler(componentName: string): ErrorHandlerState { function handleError(error: unknown) { console.error(`[${componentName}] handling error:`, error); - if (!CommonUtils.isFlowserError(error)) { - toast.error("Unknown error"); - return; - } - if (error.description !== "") { - toast.error(`${error.message}: ${error.description}`); - } else { + if (CommonUtils.isStandardError(error)) { toast.error(error.message); + } else { + toast.error("Unknown error"); } if (monitoringService) { diff --git a/frontend/src/hooks/use-filter-data.ts b/packages/ui/src/hooks/use-filter-data.ts similarity index 100% rename from frontend/src/hooks/use-filter-data.ts rename to packages/ui/src/hooks/use-filter-data.ts diff --git a/frontend/src/hooks/use-mouse-move.ts b/packages/ui/src/hooks/use-mouse-move.ts similarity index 100% rename from frontend/src/hooks/use-mouse-move.ts rename to packages/ui/src/hooks/use-mouse-move.ts diff --git a/frontend/src/hooks/use-url-query.ts b/packages/ui/src/hooks/use-url-query.ts similarity index 100% rename from frontend/src/hooks/use-url-query.ts rename to packages/ui/src/hooks/use-url-query.ts diff --git a/packages/ui/src/interactions/components/InteractionHistory/InteractionHistory.tsx b/packages/ui/src/interactions/components/InteractionHistory/InteractionHistory.tsx index 2a16e9ba3..bbec682ef 100644 --- a/packages/ui/src/interactions/components/InteractionHistory/InteractionHistory.tsx +++ b/packages/ui/src/interactions/components/InteractionHistory/InteractionHistory.tsx @@ -1,9 +1,8 @@ import React, { ReactElement } from "react"; import classes from "./InteractionHistory.module.scss"; import { - useGetPollingBlocks, - useGetTransactionsByBlock, -} from "../../../../../../frontend/src/hooks/use-api"; + useFlowserHooksApi, +} from "../../../contexts/flowser-api.context"; import { Block, Transaction } from "@flowser/shared"; import { FlowserIcon } from "../../../common/icons/FlowserIcon"; import { SizedBox } from "../../../common/misc/SizedBox/SizedBox"; @@ -13,13 +12,14 @@ import { useTransactionName } from "../../hooks/use-transaction-name"; import { MenuItem } from "@szhsin/react-menu"; import { FlowserMenu } from "../../../common/overlays/Menu/Menu"; import { GrcpStatusIcon } from "../../../common/status/GrcpStatus"; -import { useSnapshotsManager } from "../../../../../../frontend/src/contexts/snapshots.context"; +import { useSnapshotsManager } from "../../../contexts/snapshots.context"; export function InteractionHistory(): ReactElement { - const { data: blocks } = useGetPollingBlocks(); + const api = useFlowserHooksApi(); + const { data: blocks } = api.useGetBlocks(); // There should always be at least one (initial) block. - if (blocks.length === 0) { + if (!blocks || blocks.length === 0) { return (

@@ -44,13 +44,17 @@ function BlockItem(props: BlockItemProps) { const { block } = props; const menuIconSize = 15; + const api = useFlowserHooksApi(); const { checkoutBlock } = useSnapshotsManager(); const { create, setFocused } = useInteractionRegistry(); - const { data } = useGetTransactionsByBlock(block.id, { - // Assume that every transaction is packaged into a separate block. - // So once a block exists, no transactions can be appended to it. - pollingInterval: 0, - }); + const { data } = api.useGetTransactionsByAccount(block.id, + // TODO(restructure): Add this option + // { + // // Assume that every transaction is packaged into a separate block. + // // So once a block exists, no transactions can be appended to it. + // pollingInterval: 0, + // } + ); const firstTransaction = data[0]; const transactionName = useTransactionName({ diff --git a/packages/ui/src/interactions/components/InteractionLabel/InteractionLabel.tsx b/packages/ui/src/interactions/components/InteractionLabel/InteractionLabel.tsx index a695c77b2..47ae13e46 100644 --- a/packages/ui/src/interactions/components/InteractionLabel/InteractionLabel.tsx +++ b/packages/ui/src/interactions/components/InteractionLabel/InteractionLabel.tsx @@ -1,11 +1,10 @@ import React, { ReactElement } from "react"; import { InteractionIcon } from "../InteractionIcon/InteractionIcon"; import { SizedBox } from "../../../common/misc/SizedBox/SizedBox"; -import { useGetParsedInteraction } from "../../../../../../frontend/src/hooks/use-api"; +import { useFlowserHooksApi } from "../../../contexts/flowser-api.context"; import { Spinner } from "../../../common/loaders/Spinner/Spinner"; import classes from "./InteractionLabel.module.scss"; -import { InteractionKind } from "@flowser/shared"; -import { InteractionDefinition } from "packages/ui/src/interactions/core/core-types"; +import { InteractionDefinition } from "../../core/core-types"; type InteractionLabelProps = { interaction: InteractionDefinition; @@ -13,18 +12,14 @@ type InteractionLabelProps = { export function InteractionLabel(props: InteractionLabelProps): ReactElement { const { interaction } = props; - - const { data } = useGetParsedInteraction(interaction); + const api = useFlowserHooksApi(); + const { data } = api.useGetParsedInteraction(interaction); return (
{data ? ( - + ) : ( )} diff --git a/packages/ui/src/interactions/components/InteractionOutcomeDisplay/InteractionOutcomeDisplay.tsx b/packages/ui/src/interactions/components/InteractionOutcomeDisplay/InteractionOutcomeDisplay.tsx index 174a4d5a4..3345b2393 100644 --- a/packages/ui/src/interactions/components/InteractionOutcomeDisplay/InteractionOutcomeDisplay.tsx +++ b/packages/ui/src/interactions/components/InteractionOutcomeDisplay/InteractionOutcomeDisplay.tsx @@ -2,7 +2,9 @@ import React, { ReactElement, useEffect, useState } from "react"; import { useInteractionOutcomeManager } from "../../contexts/outcome.context"; import { ScriptError } from "../../../common/status/ErrorMessage"; import { JsonView } from "../../../common/code/JsonView/JsonView"; -import { useGetTransaction } from "../../../../../../frontend/src/hooks/use-api"; +import { + useFlowserHooksApi, +} from '../../../contexts/flowser-api.context'; import classes from "./InteractionOutcomeDisplay.module.scss"; import { BaseTabItem } from "../../../common/tabs/BaseTabs/BaseTabs"; import { Callout } from "../../../common/misc/Callout/Callout"; @@ -96,9 +98,10 @@ function EmptyState() { function TransactionOutcomeDisplay(props: { outcome: TransactionOutcome }) { const { outcome } = props; - const { data } = useGetTransaction(outcome.transactionId); + const api = useFlowserHooksApi() + const { data: transaction } = api.useGetTransaction(outcome.transactionId!); - if (!data?.transaction) { + if (!transaction) { return ; } @@ -106,11 +109,11 @@ function TransactionOutcomeDisplay(props: { outcome: TransactionOutcome }) { ); } diff --git a/packages/ui/src/interactions/components/InteractionTemplates/InteractionTemplates.tsx b/packages/ui/src/interactions/components/InteractionTemplates/InteractionTemplates.tsx index a1acd6397..5083ba5c9 100644 --- a/packages/ui/src/interactions/components/InteractionTemplates/InteractionTemplates.tsx +++ b/packages/ui/src/interactions/components/InteractionTemplates/InteractionTemplates.tsx @@ -5,7 +5,7 @@ import { FlowserIcon } from "../../../common/icons/FlowserIcon"; import { PrimaryButton } from "../../../common/buttons/PrimaryButton/PrimaryButton"; import { Input } from "../../../common/inputs/Input/Input"; import { SearchInput } from "../../../common/inputs/SearchInput/SearchInput"; -import { useConfirmDialog } from "../../../../../../frontend/src/contexts/confirm-dialog.context"; +import { useConfirmDialog } from "../../../contexts/confirm-dialog.context"; import classNames from "classnames"; import { InteractionLabel } from "../InteractionLabel/InteractionLabel"; import { useTemplatesRegistry } from "../../contexts/templates.context"; diff --git a/packages/ui/src/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.tsx b/packages/ui/src/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.tsx index 7d903a7a0..73fdd6dd2 100644 --- a/packages/ui/src/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.tsx +++ b/packages/ui/src/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.tsx @@ -1,18 +1,20 @@ import React, { ReactElement, useEffect, useMemo, useState } from "react"; import classes from "./AddressBuilder.module.scss"; import { CadenceValueBuilder } from "../interface"; -import { useGetPollingAccounts } from "../../../../../../../frontend/src/hooks/use-api"; +import { useFlowserHooksApi } from "../../../../contexts/flowser-api.context"; import { AccountAvatar } from "../../../../accounts/AccountAvatar/AccountAvatar"; import { AccountName } from "../../../../accounts/AccountName/AccountName"; import { FlowserIcon } from "../../../../common/icons/FlowserIcon"; import classNames from "classnames"; import { ServiceRegistry } from "../../../../../../../frontend/src/services/service-registry"; -import { Account, FclValues } from "@flowser/shared"; import { Spinner } from "../../../../common/loaders/Spinner/Spinner"; +import { FclValues } from "@onflowser/core"; +import { FlowAccount } from "@onflowser/api"; export function AddressBuilder(props: CadenceValueBuilder): ReactElement { const { disabled, value, setValue, addressBuilderOptions } = props; - const { data, refresh } = useGetPollingAccounts(); + const { useGetAccounts } = useFlowserHooksApi(); + const { data, mutate } = useGetAccounts(); const managedAccounts = addressBuilderOptions?.showManagedAccountsOnly ? data.filter((account) => account.keys.some((key) => key.privateKey !== "") @@ -34,7 +36,7 @@ export function AddressBuilder(props: CadenceValueBuilder): ReactElement { async function createNewAccount() { const { walletService } = ServiceRegistry.getInstance(); await walletService.createAccount(); - await refresh(); + await mutate(); } return ( @@ -60,7 +62,7 @@ export function AddressBuilder(props: CadenceValueBuilder): ReactElement { type AccountButtonProps = { isSelected: boolean; onSelect: () => void; - account: Account; + account: FlowAccount; disabled?: boolean; }; diff --git a/packages/ui/src/interactions/contexts/definition.context.tsx b/packages/ui/src/interactions/contexts/definition.context.tsx index e97ce5d06..f4a26d9bf 100644 --- a/packages/ui/src/interactions/contexts/definition.context.tsx +++ b/packages/ui/src/interactions/contexts/definition.context.tsx @@ -5,14 +5,15 @@ import React, { useContext, } from "react"; import { useInteractionRegistry } from "./interaction-registry.context"; -import { useGetParsedInteraction } from "../../../../../frontend/src/hooks/use-api"; -import { FclValue, Interaction } from "@flowser/shared"; +import { useFlowserHooksApi } from "../../contexts/flowser-api.context"; import { InteractionDefinition } from "../core/core-types"; +import { ParsedInteraction } from "@onflowser/api"; +import { FclValue } from "@onflowser/core"; type InteractionDefinitionManager = InteractionParameterBuilder & { isParsing: boolean; parseError: string | undefined; - parsedInteraction: Interaction | undefined; + parsedInteraction: ParsedInteraction | undefined; definition: InteractionDefinition; partialUpdate: (definition: Partial) => void; }; @@ -32,7 +33,8 @@ export function InteractionDefinitionManagerProvider(props: { }): ReactElement { const { definition } = props; const { update } = useInteractionRegistry(); - const { data, isLoading } = useGetParsedInteraction(definition); + const api = useFlowserHooksApi(); + const { data, isLoading } = api.useGetParsedInteraction(definition); const fclValuesByIdentifier = definition.fclValuesByIdentifier; function partialUpdate(newDefinition: Partial) { diff --git a/packages/ui/src/interactions/contexts/outcome.context.tsx b/packages/ui/src/interactions/contexts/outcome.context.tsx index b49cdac8a..62dc9baaa 100644 --- a/packages/ui/src/interactions/contexts/outcome.context.tsx +++ b/packages/ui/src/interactions/contexts/outcome.context.tsx @@ -6,7 +6,7 @@ import React, { useContext, useMemo, } from "react"; -import { CommonUtils } from "../../../../../frontend/src/utils/common-utils"; +import { CommonUtils } from "../../utils/common-utils"; import * as fcl from "@onflow/fcl"; import { InteractionKind, diff --git a/packages/ui/src/interactions/contexts/templates.context.tsx b/packages/ui/src/interactions/contexts/templates.context.tsx index 299e4c5b5..48c74a7f8 100644 --- a/packages/ui/src/interactions/contexts/templates.context.tsx +++ b/packages/ui/src/interactions/contexts/templates.context.tsx @@ -1,8 +1,9 @@ import React, { createContext, ReactElement, useContext, useMemo } from "react"; -import { useGetPollingFlowInteractionTemplates } from "../../../../../frontend/src/hooks/use-api"; +import { useFlowserHooksApi } from "../../contexts/flowser-api.context"; import { InteractionDefinition } from "../core/core-types"; import { FclValue } from "@onflowser/core"; import { useLocalStorage } from "@uidotdev/usehooks"; +import * as crypto from "crypto"; type InteractionTemplatesRegistry = { templates: InteractionDefinitionTemplate[]; @@ -39,8 +40,8 @@ const Context = createContext(undefined as never); export function TemplatesRegistryProvider(props: { children: React.ReactNode; }): ReactElement { - const { data: projectTemplatesData } = - useGetPollingFlowInteractionTemplates(); + const api = useFlowserHooksApi(); + const { data: projectTemplatesData } = api.useGetInteractionTemplates(); const [customTemplates, setRawTemplates] = useLocalStorage< RawInteractionDefinitionTemplate[] >("interactions", []); @@ -61,7 +62,7 @@ export function TemplatesRegistryProvider(props: { filePath: undefined, }) ), - ...(projectTemplatesData?.templates?.map( + ...(projectTemplatesData?.map( (template): InteractionDefinitionTemplate => ({ id: crypto.randomUUID(), name: template.name, diff --git a/packages/ui/src/interactions/core/core-types.ts b/packages/ui/src/interactions/core/core-types.ts index 55761aad0..f0904cfee 100644 --- a/packages/ui/src/interactions/core/core-types.ts +++ b/packages/ui/src/interactions/core/core-types.ts @@ -1,4 +1,4 @@ -import { FclValue } from "@flowser/shared"; +import { FclValue } from '@onflowser/core'; export type InteractionDefinition = { id: string; diff --git a/packages/ui/src/logs/Logs.tsx b/packages/ui/src/logs/Logs.tsx index 8f9fb8abb..80981b863 100644 --- a/packages/ui/src/logs/Logs.tsx +++ b/packages/ui/src/logs/Logs.tsx @@ -7,21 +7,18 @@ import React, { useState, } from "react"; import classes from "./Logs.module.scss"; -import { ReactComponent as ExpandIcon } from "../common/icons/assets/expand.svg"; -import { ReactComponent as ShrinkIcon } from "../common/icons/assets/shrink.svg"; -import { ReactComponent as LogsIcon } from "../common/icons/assets/logs.svg"; import { CaretIcon } from "../common/icons/CaretIcon/CaretIcon"; -import { useFilterData } from "../../../../frontend/src/hooks/use-filter-data"; -import { useMouseMove } from "../../../../frontend/src/hooks/use-mouse-move"; -import { useGetPollingOutputs } from "../../../../frontend/src/hooks/use-api"; -import { ManagedProcessOutput, ProcessOutputSource } from "@flowser/shared"; +import { useFilterData } from "../hooks/use-filter-data"; +import { useMouseMove } from "../hooks/use-mouse-move"; +import { useFlowserHooksApi } from "../contexts/flowser-api.context"; import { toast } from "react-hot-toast"; import classNames from "classnames"; import { SimpleButton } from "../common/buttons/SimpleButton/SimpleButton"; -import { TextUtils } from "../utils/text-utils"; import { Callout } from "../common/misc/Callout/Callout"; -import { CommonUtils } from "../../../../frontend/src/utils/common-utils"; import { SearchInput } from "../common/inputs/SearchInput/SearchInput"; +import { ManagedProcessOutput, ProcessOutputSource } from "@onflowser/api"; +import AnsiHtmlConvert from "ansi-to-html"; +import { FlowserIcon } from '../common/icons/FlowserIcon'; type LogsProps = { className?: string; @@ -75,9 +72,9 @@ export function Logs(props: LogsProps): ReactElement { }, [logDrawerSize, shouldScrollToBottom]); useEffect(() => { - const hasErrorLogs = logs - .filter((log) => log.isNew) - .some((log) => log.source === ProcessOutputSource.OUTPUT_SOURCE_STDERR); + const hasErrorLogs = logs.some( + (log) => log.source === ProcessOutputSource.OUTPUT_SOURCE_STDERR + ); if (hasErrorLogs) { toast.error("Some process encountered errors", { duration: 4000, @@ -143,7 +140,7 @@ export function Logs(props: LogsProps): ReactElement { })} > - + LOGS @@ -174,13 +171,13 @@ export function Logs(props: LogsProps): ReactElement { /> )} {logDrawerSize === "small" && ( - changeLogDrawerSize("big")} /> )} {logDrawerSize === "big" && ( - changeLogDrawerSize("small")} /> @@ -253,14 +250,10 @@ function useRelevantLogs(options: { searchTerm: string | undefined; tailSize: number; }) { - const { data: allLogs } = useGetPollingOutputs(); - const emulatorOrWalletLogs = useMemo( - () => - allLogs.filter((log) => CommonUtils.isEmulatorProcessId(log.processId)), - [allLogs] - ); + const api = useFlowserHooksApi(); + const { data: emulatorLogs } = api.useGetOutputsByProcess(emulatorProcessId); const { filteredData: logs } = useFilterData( - emulatorOrWalletLogs, + emulatorLogs ?? [], options.searchTerm ); const tailLogs = useMemo( @@ -301,3 +294,5 @@ const VerticalDragLine = ({ /> ); }; + +const emulatorProcessId = "emulator"; diff --git a/packages/ui/src/projects/FormFields/FormFields.tsx b/packages/ui/src/projects/FormFields/FormFields.tsx index cc3bd0afa..f0fd97110 100644 --- a/packages/ui/src/projects/FormFields/FormFields.tsx +++ b/packages/ui/src/projects/FormFields/FormFields.tsx @@ -1,4 +1,4 @@ -import { CommonUtils } from "../../../../../frontend/src/utils/common-utils"; +import { CommonUtils } from "../../utils/common-utils"; import RadioButton from "../../common/buttons/RadioButton/RadioButton"; import React, { ReactElement } from "react"; import { Input, InputProps } from "../../common/inputs/Input/Input"; diff --git a/packages/ui/src/projects/ProjectListPage/ProjectListPage.tsx b/packages/ui/src/projects/ProjectListPage/ProjectListPage.tsx index ab78d6446..636c13465 100644 --- a/packages/ui/src/projects/ProjectListPage/ProjectListPage.tsx +++ b/packages/ui/src/projects/ProjectListPage/ProjectListPage.tsx @@ -1,17 +1,17 @@ import React, { FunctionComponent, ReactElement, useState } from "react"; import { Link, useNavigate, useLocation } from "react-router-dom"; import IconButton from "../../common/buttons/IconButton/IconButton"; -import longLogo from "../../../../../frontend/src/assets/images/long_logo.png"; +import longLogo from "../../assets/long_logo.png"; import trash from "../../common/icons/assets/trash.svg"; import classes from "./ProjectListPage.module.scss"; -import { useGetAllProjects } from "../../../../../frontend/src/hooks/use-api"; +import { useFlowserHooksApi } from "../../contexts/flowser-api.context"; import classNames from "classnames"; -import moment from "moment"; -import { useProjectManager } from "../../../../../frontend/src/contexts/projects.context"; +import { useProjectManager } from "../../contexts/projects.context"; import { SimpleButton } from "../../common/buttons/SimpleButton/SimpleButton"; import { ConsentDialog } from "../../common/overlays/dialogs/consent/ConsentDialog"; -import { useAnalytics } from "../../../../../frontend/src/hooks/use-analytics"; +import { useAnalytics } from "../../hooks/use-analytics"; import { FlowserIcon } from "../../common/icons/FlowserIcon"; +import { TextUtils } from "../../utils/text-utils"; type ProjectTab = { id: string; @@ -85,7 +85,8 @@ export const ProjectListPage: FunctionComponent = () => { }; function ProjectsListContent() { - const { data: projects } = useGetAllProjects(); + const api = useFlowserHooksApi(); + const { data: projects } = api.useGetFlowserProjects(); const { startProject, removeProject } = useProjectManager(); const showProjectList = projects && projects.length > 0; @@ -109,7 +110,7 @@ function ProjectsListContent() { {project.name} - last opened on {moment(project.updatedAt).format("DD-MM-YYYY")} + last opened on {TextUtils.longDate(project.updatedAt)} = ( const projectService = ServiceRegistry.getInstance().projectsService; const [isLoading, setIsLoading] = useState(true); + const api = useFlowserHooksApi(); const { track } = useAnalytics(); const { onPickProjectPath } = usePlatformAdapter(); const { startProject, removeProject } = useProjectManager(); - const { data: flowCliInfo } = useGetFlowCliInfo(); + const { data: flowCliInfo } = api.useGetFlowCliInfo(); const { handleError } = useErrorHandler(ProjectSettings.name); const isExistingProject = Boolean(projectId); diff --git a/packages/ui/src/transactions/TransactionDetails/TransactionDetails.tsx b/packages/ui/src/transactions/TransactionDetails/TransactionDetails.tsx index 0a0596898..3371f3e62 100644 --- a/packages/ui/src/transactions/TransactionDetails/TransactionDetails.tsx +++ b/packages/ui/src/transactions/TransactionDetails/TransactionDetails.tsx @@ -1,7 +1,7 @@ import React, { FunctionComponent } from "react"; import classes from "./TransactionDetails.module.scss"; import FullScreenLoading from "../../common/loaders/FullScreenLoading/FullScreenLoading"; -import { useGetTransaction } from "../../../../../frontend/src/hooks/use-api"; +import { useFlowserHooksApi } from "../../contexts/flowser-api.context"; import { TransactionOverview } from "../TransactionOverview/TransactionOverview"; import { SizedBox } from "../../common/misc/SizedBox/SizedBox"; import { TransactionDetailsTabs } from "../TransactionDetailsTabs/TransactionDetailsTabs"; @@ -10,13 +10,12 @@ type TransactionDetailsProps = { transactionId: string; }; -// TODO(restructure): Move this to app dir export const TransactionDetails: FunctionComponent = ( props ) => { const { transactionId } = props; - const { data, isLoading } = useGetTransaction(transactionId); - const { transaction } = data ?? {}; + const api = useFlowserHooksApi(); + const { data: transaction, isLoading } = api.useGetTransaction(transactionId); if (isLoading || !transaction) { return ; diff --git a/packages/ui/src/transactions/TransactionDetailsTabs/TransactionDetailsTabs.tsx b/packages/ui/src/transactions/TransactionDetailsTabs/TransactionDetailsTabs.tsx index c93b7f9b7..e9d5a7ef6 100644 --- a/packages/ui/src/transactions/TransactionDetailsTabs/TransactionDetailsTabs.tsx +++ b/packages/ui/src/transactions/TransactionDetailsTabs/TransactionDetailsTabs.tsx @@ -8,13 +8,13 @@ import { StyledTabs, StyledTabsProps, } from "../../common/tabs/StyledTabs/StyledTabs"; -import { useGetEventsByTransactionId } from "../../../../../frontend/src/hooks/use-api"; +import { useFlowserHooksApi } from "../../contexts/flowser-api.context"; import { TransactionOverview } from "../TransactionOverview/TransactionOverview"; -import { FlowEvent, FlowTransaction } from '@onflowser/api'; +import { FlowTransaction } from "@onflowser/api"; +import FullScreenLoading from "../../common/loaders/FullScreenLoading/FullScreenLoading"; type TransactionDetailsTabsProps = Omit & { transaction: FlowTransaction; - events: FlowEvent[]; includeOverviewTab: boolean; includeScriptTab: boolean; }; @@ -24,8 +24,8 @@ export function TransactionDetailsTabs( ): ReactElement { const { transaction, includeOverviewTab, includeScriptTab, ...tabProps } = props; - - const { data: events } = useGetEventsByTransactionId(transaction.id); + const api = useFlowserHooksApi(); + const { data: events } = api.useGetEventsByTransaction(transaction.id); const tabs: BaseTabItem[] = []; @@ -63,7 +63,11 @@ export function TransactionDetailsTabs( { id: "events", label: "Events", - content: , + content: events ? ( + + ) : ( + + ), }, { id: "envelope-signatures", diff --git a/packages/ui/src/utils/common-utils.ts b/packages/ui/src/utils/common-utils.ts new file mode 100644 index 000000000..c723ae4ae --- /dev/null +++ b/packages/ui/src/utils/common-utils.ts @@ -0,0 +1,25 @@ +export class CommonUtils { + static isStandardError(error: unknown): error is Error { + return typeof error === "object" && error !== null && "message" in error; + } + + static getNestedValue(object: unknown, path: string): unknown { + const keys = path.split("."); + let result: unknown = object; + for (const key of keys) { + if (!this.isRecord(result)) { + return undefined; + } + result = result[key]; + } + return result; + } + + static isRecord(value: unknown): value is Record { + return typeof value === "object" && value !== null; + } + + static isDefined(value: Value | null | undefined): value is Value { + return value !== null && value !== undefined; + } +} diff --git a/packages/ui/src/utils/flow-utils.ts b/packages/ui/src/utils/flow-utils.ts index 99f8aa42e..dda889667 100644 --- a/packages/ui/src/utils/flow-utils.ts +++ b/packages/ui/src/utils/flow-utils.ts @@ -1,11 +1,11 @@ -import { isDefined } from "./misc"; import { - AccountStorageDomain, + FlowStorageDomain, ExecutionStatusCode, GrcpStatusCode, HashAlgorithm, SignatureAlgorithm, } from "@onflowser/api"; +import { CommonUtils } from "./common-utils"; type FlowScriptError = { hostname: string; @@ -64,7 +64,7 @@ export class FlowUtils { .split(/\n[ +]/) .map((line) => line.trim().replace("\n", " ")) .map((line) => parseKeyValueEntry(line)) - .filter(isDefined); + .filter(CommonUtils.isDefined); // If no structured entries are found, fallback to raw error message. if (structuredEntries.length === 0) { @@ -85,13 +85,13 @@ export class FlowUtils { return `${blockId}`.replaceAll("0", "").length === 0; } - static getLowerCasedPathDomain(pathDomain: AccountStorageDomain): string { + static getLowerCasedPathDomain(pathDomain: FlowStorageDomain): string { switch (pathDomain) { - case AccountStorageDomain.STORAGE_DOMAIN_PUBLIC: + case FlowStorageDomain.STORAGE_DOMAIN_PUBLIC: return "public"; - case AccountStorageDomain.STORAGE_DOMAIN_PRIVATE: + case FlowStorageDomain.STORAGE_DOMAIN_PRIVATE: return "private"; - case AccountStorageDomain.STORAGE_DOMAIN_STORAGE: + case FlowStorageDomain.STORAGE_DOMAIN_STORAGE: return "storage"; default: return "unknown"; diff --git a/packages/ui/src/utils/misc.ts b/packages/ui/src/utils/misc.ts deleted file mode 100644 index 5a60c616f..000000000 --- a/packages/ui/src/utils/misc.ts +++ /dev/null @@ -1,17 +0,0 @@ -export function shortenText(text: string, maxLength: number): string { - if (maxLength >= text.length) { - return text; - } - const delimiter = "..."; - const charsToTake = maxLength / 2; - return `${text.slice(0, charsToTake)}${delimiter}${text.slice( - text.length - charsToTake, - text.length - )}`; -} - -export function isDefined( - value: Value | null | undefined -): value is Value { - return value !== null && value !== undefined; -} diff --git a/packages/ui/src/utils/text-utils.ts b/packages/ui/src/utils/text-utils.ts index 8997e5114..d95a5a044 100644 --- a/packages/ui/src/utils/text-utils.ts +++ b/packages/ui/src/utils/text-utils.ts @@ -1,6 +1,18 @@ import dateFormat from "dateformat"; export class TextUtils { + static shorten(text: string, maxLength: number): string { + if (maxLength >= text.length) { + return text; + } + const delimiter = "..."; + const charsToTake = maxLength / 2; + return `${text.slice(0, charsToTake)}${delimiter}${text.slice( + text.length - charsToTake, + text.length + )}`; + } + static readableNumber(value: number): string { const formatter = Intl.NumberFormat("en", { notation: "compact", diff --git a/packages/ui/tsconfig.json b/packages/ui/tsconfig.json index a991f4ef0..3d3bfd25c 100644 --- a/packages/ui/tsconfig.json +++ b/packages/ui/tsconfig.json @@ -3,6 +3,7 @@ "include": ["src"], "exclude": ["dist", "node_modules"], "compilerOptions": { - "outDir": "./dist" + "outDir": "./dist", + "jsx": "react" } } diff --git a/yarn.lock b/yarn.lock index f708a03d5..5097440f7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1759,7 +1759,7 @@ "abort-controller" "^3.0.0" "cross-fetch" "^3.1.6" -"@onflow/types@^1.0.3", "@onflow/types@^1.1.0": +"@onflow/types@^1.1.0": "integrity" "sha512-UUd2ZAFqdd8BHW//uTg+YRlh3EIH9Na+UYJ9qXpt6y87qjW0Lf4Zkhn6H5IqvhIJsjK17QYnXLFpoXItD/+ToQ==" "resolved" "https://registry.npmjs.org/@onflow/types/-/types-1.1.0.tgz" "version" "1.1.0" @@ -1862,12 +1862,14 @@ "copy-to-clipboard" "^3.3.3" "date-fns" "^2.30.0" "dateformat" "^5.0.3" + "mixpanel-browser" "^2.47.0" "react" "^18.0.0" "react-hot-toast" "^2.4.1" "react-icons" "^4.11.0" "react-json-view" "^1.21.3" "react-router-dom" "6.15.0" "react-timeago" "^7.2.0" + "swr" "^2.2.4" "@onflowser/wallet@file:/Users/bartkozorog/Projects/flowser/packages/wallet": "resolved" "file:packages/wallet" @@ -2121,7 +2123,7 @@ "lz-string" "^1.5.0" "pretty-format" "^27.0.2" -"@testing-library/jest-dom@^5.14.1", "@testing-library/jest-dom@^6.1.3": +"@testing-library/jest-dom@^6.1.3": "integrity" "sha512-YzpjRHoCBWPzpPNtg6gnhasqtE/5O4qz8WCwDEaxtfnPO6gkaLrnuXusrGSPyhIGPezr1HM7ZH0CFaUTY9PJEQ==" "resolved" "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.1.3.tgz" "version" "6.1.3" @@ -2369,7 +2371,7 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/jest@^26.0.24", "@types/jest@^27.0.2", "@types/jest@^29.5.5", "@types/jest@>= 28": +"@types/jest@^29.5.5", "@types/jest@>= 28": "integrity" "sha512-ebylz2hnsWR9mYvmBFbXJXr+33UPc4+ZdxyDXh5w0FlPBTfCVN3wPL+kuOiQt3xvrK419v7XWeAs+AeOksafXg==" "resolved" "https://registry.npmjs.org/@types/jest/-/jest-29.5.5.tgz" "version" "29.5.5" @@ -2413,7 +2415,7 @@ "resolved" "https://registry.npmjs.org/@types/ms/-/ms-0.7.32.tgz" "version" "0.7.32" -"@types/node@*", "@types/node@^12.20.27", "@types/node@^16.11.6", "@types/node@>= 14", "@types/node@18.18.4": +"@types/node@*", "@types/node@^16.11.6", "@types/node@>= 14": "integrity" "sha512-Y1zz/LIuJek01+hlPNzzXQhmq/Z2BCP96j18MSXC0S0jSu/IG4FFxmBs7W4/lI2vPJ7foVfEB0hUVtnOjnCiTg==" "resolved" "https://registry.npmjs.org/@types/node/-/node-16.18.55.tgz" "version" "16.18.55" @@ -2463,7 +2465,7 @@ dependencies: "@types/react" "^17" -"@types/react-dom@^17.0.9", "@types/react-dom@^18.0.0", "@types/react-dom@^18.2.7": +"@types/react-dom@^18.0.0", "@types/react-dom@^18.2.7": "integrity" "sha512-zq6Dy0EiCuF9pWFW6I6k6W2LdpUixLE4P6XjXU1QHLfak3GPACQfLwEuHzY5pOYa4hzj1d0GxX/P141aFjZsyg==" "resolved" "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.11.tgz" "version" "18.2.11" @@ -2477,7 +2479,7 @@ dependencies: "@types/react" "*" -"@types/react@*", "@types/react@^17.0.24", "@types/react@^18.2.21": +"@types/react@*", "@types/react@^18.2.21": "integrity" "sha512-24xqse6+VByVLIr+xWaQ9muX1B4bXJKXBbjszbld/UEDslGLY53+ZucF44HCmLbMPejTzGG9XgR+3m2/Wqu1kw==" "resolved" "https://registry.npmjs.org/@types/react/-/react-18.2.25.tgz" "version" "18.2.25" @@ -2612,7 +2614,7 @@ dependencies: "@types/node" "*" -"@typescript-eslint/eslint-plugin@^4.28.2", "@typescript-eslint/eslint-plugin@^4.31.2", "@typescript-eslint/eslint-plugin@^5.0.0 || ^6.0.0", "@typescript-eslint/eslint-plugin@^5.13.0 || ^6.0.0", "@typescript-eslint/eslint-plugin@^6.7.0", "@typescript-eslint/eslint-plugin@6.7.4": +"@typescript-eslint/eslint-plugin@^5.0.0 || ^6.0.0", "@typescript-eslint/eslint-plugin@^5.13.0 || ^6.0.0", "@typescript-eslint/eslint-plugin@^6.7.0": "integrity" "sha512-DAbgDXwtX+pDkAHwiGhqP3zWUGpW49B7eqmgpPtg+BKJXwdct79ut9+ifqOFPJGClGKSHXn2PTBatCnldJRUoA==" "resolved" "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.4.tgz" "version" "6.7.4" @@ -2629,7 +2631,7 @@ "semver" "^7.5.4" "ts-api-utils" "^1.0.1" -"@typescript-eslint/parser@^4.28.2", "@typescript-eslint/parser@^4.31.2", "@typescript-eslint/parser@^5.0.0 || ^6.0.0", "@typescript-eslint/parser@^6.0.0 || ^6.0.0-alpha", "@typescript-eslint/parser@^6.7.0": +"@typescript-eslint/parser@^5.0.0 || ^6.0.0", "@typescript-eslint/parser@^6.0.0 || ^6.0.0-alpha", "@typescript-eslint/parser@^6.7.0": "integrity" "sha512-I5zVZFY+cw4IMZUeNCU7Sh2PO5O57F7Lr0uyhgCJmhN/BuTlnc55KxPonR4+EM3GBdfiCyGZye6DgMjtubQkmA==" "resolved" "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.7.4.tgz" "version" "6.7.4" @@ -3948,12 +3950,12 @@ "resolved" "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz" "version" "1.2.3" -"class-transformer@*", "class-transformer@0.4.0": +"class-transformer@*": "integrity" "sha512-ETWD/H2TbWbKEi7m9N4Km5+cw1hNcqJSxlSYhsLsNjQzWWiZIYA1zafxpK9PwVfaZ6AqR5rrjPVUBGESm5tQUA==" "resolved" "https://registry.npmjs.org/class-transformer/-/class-transformer-0.4.0.tgz" "version" "0.4.0" -"class-validator@*", "class-validator@^0.13.1": +"class-validator@*": "integrity" "sha512-yBUcQy07FPlGzUjoLuUfIOXzgynnQPPruyK1Ge2B74k9ROwnle1E+NxLWnUv5OLU8hA/qL5leAE9XnXq3byaBw==" "resolved" "https://registry.npmjs.org/class-validator/-/class-validator-0.13.2.tgz" "version" "0.13.2" @@ -3961,7 +3963,7 @@ "libphonenumber-js" "^1.9.43" "validator" "^13.7.0" -"classnames@^2.3.1", "classnames@^2.3.2": +"classnames@^2.3.2": "integrity" "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" "resolved" "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz" "version" "2.3.2" @@ -4006,6 +4008,11 @@ "slice-ansi" "^5.0.0" "string-width" "^5.0.0" +"client-only@^0.0.1": + "integrity" "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" + "resolved" "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz" + "version" "0.0.1" + "cliui@^8.0.1": "integrity" "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==" "resolved" "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" @@ -4175,7 +4182,7 @@ "resolved" "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" "version" "0.0.1" -"concurrently@^7.3.0", "concurrently@^8.2.1": +"concurrently@^8.2.1": "integrity" "sha512-nVraf3aXOpIcNud5pB9M82p1tynmZkrSGQ1p6X/VY8cJ+2LMVqAgXsJxYYefACSHbTYlm92O1xuhdGTjwoEvbQ==" "resolved" "https://registry.npmjs.org/concurrently/-/concurrently-8.2.1.tgz" "version" "8.2.1" @@ -4240,7 +4247,7 @@ "resolved" "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz" "version" "0.5.0" -"copy-to-clipboard@^3.3.1", "copy-to-clipboard@^3.3.3": +"copy-to-clipboard@^3.3.3": "integrity" "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==" "resolved" "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz" "version" "3.3.3" @@ -4325,7 +4332,7 @@ "resolved" "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz" "version" "1.0.6" -"cross-env@^7.0.3", "cross-env@7.0.3": +"cross-env@^7.0.3": "integrity" "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==" "resolved" "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz" "version" "7.0.3" @@ -4530,7 +4537,7 @@ dependencies: "@babel/runtime" "^7.21.0" -"dateformat@^5.0.1", "dateformat@^5.0.3": +"dateformat@^5.0.3": "integrity" "sha512-Kvr6HmPXUMerlLcLF+Pwq3K7apHpYmGDVqrxcDasBg86UcKeTSNWbEzU8bwdXnxnR44FtMhJAxI4Bov6Y/KUfA==" "resolved" "https://registry.npmjs.org/dateformat/-/dateformat-5.0.3.tgz" "version" "5.0.3" @@ -4923,7 +4930,7 @@ dependencies: "jake" "^10.8.5" -"electron-builder@^23.3.3", "electron-builder@^24.6.4", "electron-builder@24.6.4": +"electron-builder@^24.6.4": "integrity" "sha512-uNWQoU7pE7qOaIQ6CJHpBi44RJFVG8OHRBIadUxrsDJVwLLo8Nma3K/EEtx5/UyWAQYdcK4nVPYKoRqBb20hbA==" "resolved" "https://registry.npmjs.org/electron-builder/-/electron-builder-24.6.4.tgz" "version" "24.6.4" @@ -5001,7 +5008,7 @@ "resolved" "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.544.tgz" "version" "1.4.544" -"electron-updater@^5.3.0", "electron-updater@^6.1.4", "electron-updater@6.1.4": +"electron-updater@^6.1.4": "integrity" "sha512-yYAJc6RQjjV4WtInZVn+ZcLyXRhbVXoomKEfUUwDqIk5s2wxzLhWaor7lrNgxODyODhipjg4SVPMhJHi5EnsCA==" "resolved" "https://registry.npmjs.org/electron-updater/-/electron-updater-6.1.4.tgz" "version" "6.1.4" @@ -5024,7 +5031,7 @@ "@types/node" "^18.11.18" "extract-zip" "^2.0.1" -"electron@20.1.0", "electron@26.3.0", "electron@file:/Users/bartkozorog/Projects/flowser/apps/electron": +"electron@file:/Users/bartkozorog/Projects/flowser/apps/electron": "resolved" "file:apps/electron" dependencies: "electron-debug" "^3.2.0" @@ -5535,7 +5542,7 @@ "resolved" "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz" "version" "4.6.0" -"eslint-plugin-react@^7.26.0", "eslint-plugin-react@^7.28.0", "eslint-plugin-react@^7.33.2": +"eslint-plugin-react@^7.28.0", "eslint-plugin-react@^7.33.2": "integrity" "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==" "resolved" "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz" "version" "7.33.2" @@ -5583,7 +5590,7 @@ "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" "version" "3.4.3" -"eslint@*", "eslint@^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8", "eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8", "eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", "eslint@^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0", "eslint@^6.0.0 || ^7.0.0 || ^8.0.0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^7.0.0 || ^8.0.0", "eslint@^7.32.0", "eslint@^7.32.0 || ^8.2.0", "eslint@^8.34.0", "eslint@^8.49.0", "eslint@>=7 || >=8", "eslint@>=7.0.0", "eslint@>=8.0.0", "eslint@8.51.0": +"eslint@*", "eslint@^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8", "eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8", "eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", "eslint@^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0", "eslint@^6.0.0 || ^7.0.0 || ^8.0.0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^7.0.0 || ^8.0.0", "eslint@^7.32.0 || ^8.2.0", "eslint@^8.34.0", "eslint@^8.49.0", "eslint@>=7 || >=8", "eslint@>=7.0.0", "eslint@>=8.0.0": "integrity" "sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==" "resolved" "https://registry.npmjs.org/eslint/-/eslint-8.51.0.tgz" "version" "8.51.0" @@ -6588,7 +6595,7 @@ dependencies: "ms" "^2.0.0" -"husky@^7.0.2", "husky@^8.0.1": +"husky@^8.0.1": "integrity" "sha512-xs7/chUH/CKdOCs7Zy0Aev9e/dKOMZf3K1Az1nar3tzlv0jfqnYtu235bstsWTmXOR0EfINrPa97yy4Lz6RiKw==" "resolved" "https://registry.npmjs.org/husky/-/husky-8.0.1.tgz" "version" "8.0.1" @@ -7648,7 +7655,7 @@ "merge-stream" "^2.0.0" "supports-color" "^8.0.0" -"jest@*", "jest@^27.0.6", "jest@^29.0.0", "jest@^29.7.0", "jest@>= 28", "jest@>=27.0.0": +"jest@*", "jest@^29.0.0", "jest@^29.7.0", "jest@>= 28", "jest@>=27.0.0": "integrity" "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==" "resolved" "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz" "version" "29.7.0" @@ -7902,7 +7909,7 @@ "resolved" "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" "version" "1.2.4" -"lint-staged@^11.1.2", "lint-staged@^12.4.2", "lint-staged@^13.0.3": +"lint-staged@^12.4.2": "integrity" "sha512-BKLUjWDsKquV/JuIcoQW4MSAI3ggwEImF1+sB4zaKvyVx1wBk3FsG7UK9bpnmBTN1pm7EH2BBcMwINJzCRv12g==" "resolved" "https://registry.npmjs.org/lint-staged/-/lint-staged-12.5.0.tgz" "version" "12.5.0" @@ -8382,6 +8389,11 @@ "minipass" "^3.0.0" "yallist" "^4.0.0" +"mixpanel-browser@^2.47.0": + "integrity" "sha512-Ldrva0fRBEIFWmEibBQO1PulfpJVF3pf28Guk09lDirDaSQqqU/xs9zQLwN2rL5VwVtsP1aD3JaCgaa98EjojQ==" + "resolved" "https://registry.npmjs.org/mixpanel-browser/-/mixpanel-browser-2.47.0.tgz" + "version" "2.47.0" + "mkdirp@^0.5.1": "integrity" "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==" "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" @@ -9195,7 +9207,7 @@ dependencies: "fast-diff" "^1.1.2" -"prettier@*", "prettier@^2.3.2", "prettier@^2.4.1", "prettier@^2.5.1": +"prettier@*", "prettier@^2.5.1": "integrity" "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==" "resolved" "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz" "version" "2.7.1" @@ -9278,7 +9290,7 @@ "kleur" "^3.0.3" "sisteransi" "^1.0.5" -"prop-types@^15.8.1": +"prop-types@^15.7.2", "prop-types@^15.8.1": "integrity" "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==" "resolved" "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" "version" "15.8.1" @@ -9377,7 +9389,7 @@ "lodash.flow" "^3.3.0" "pure-color" "^1.2.0" -"react-dom@^17.0.0 || ^16.3.0 || ^15.5.4", "react-dom@^17.0.2", "react-dom@>=16", "react-dom@>=16.8", "react-dom@>=16.8.0": +"react-dom@^17.0.0 || ^16.3.0 || ^15.5.4", "react-dom@>=16", "react-dom@>=16.8", "react-dom@>=16.8.0": "integrity" "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==" "resolved" "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz" "version" "17.0.2" @@ -9402,7 +9414,22 @@ "loose-envify" "^1.1.0" "scheduler" "^0.23.0" -"react-hot-toast@^2.1.1", "react-hot-toast@^2.4.1": +"react-fast-compare@^3.1.1": + "integrity" "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==" + "resolved" "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz" + "version" "3.2.2" + +"react-helmet@^6.1.0": + "integrity" "sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw==" + "resolved" "https://registry.npmjs.org/react-helmet/-/react-helmet-6.1.0.tgz" + "version" "6.1.0" + dependencies: + "object-assign" "^4.1.1" + "prop-types" "^15.7.2" + "react-fast-compare" "^3.1.1" + "react-side-effect" "^2.1.0" + +"react-hot-toast@^2.4.1": "integrity" "sha512-j8z+cQbWIM5LY37pR6uZR6D4LfseplqnuAO4co4u8917hBUvXlEqyP1ZzqVLcqoyUesZZv/ImreoCeHVDpE5pQ==" "resolved" "https://registry.npmjs.org/react-hot-toast/-/react-hot-toast-2.4.1.tgz" "version" "2.4.1" @@ -9487,6 +9514,11 @@ "object-assign" "^4.1.1" "react-is" "^16.12.0 || ^17.0.0 || ^18.0.0" +"react-side-effect@^2.1.0": + "integrity" "sha512-PVjOcvVOyIILrYoyGEpDN3vmYNLdy1CajSFNt4TDsVQC5KpTijDvWVoR+/7Rz2xT978D8/ZtFceXxzsPwZEDvw==" + "resolved" "https://registry.npmjs.org/react-side-effect/-/react-side-effect-2.1.2.tgz" + "version" "2.1.2" + "react-test-renderer@^18.2.0": "integrity" "sha512-JWD+aQ0lh2gvh4NM3bBM42Kx+XybOxCpgYK7F8ugAlpaTSnWsX+39Z4XkOykGZAHrjwwTZT3x3KxswVWxHPUqA==" "resolved" "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-18.2.0.tgz" @@ -9505,12 +9537,12 @@ "use-composed-ref" "^1.3.0" "use-latest" "^1.2.1" -"react-timeago@^6.2.1", "react-timeago@^7.2.0": +"react-timeago@^7.2.0": "integrity" "sha512-2KsBEEs+qRhKx/kekUVNSTIpop3Jwd7SRBm0R4Eiq3mPeswRGSsftY9FpKsE/lXLdURyQFiHeHFrIUxLYskG5g==" "resolved" "https://registry.npmjs.org/react-timeago/-/react-timeago-7.2.0.tgz" "version" "7.2.0" -"react@*", "react@^15.0.2 || ^16.0.0 || ^17.0.0", "react@^16.0.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^17.0.0 || ^16.3.0 || ^15.5.4", "react@^17.0.0 || ^18.0.0", "react@^17.0.2", "react@>=16", "react@>=16.8", "react@>=16.8.0", "react@>=17.0.0 || >=18.0.0", "react@17.0.2": +"react@*", "react@^15.0.2 || ^16.0.0 || ^17.0.0", "react@^16.0.0 || ^17.0.0 || ^18.0.0", "react@^16.11.0 || ^17.0.0 || ^18.0.0", "react@^16.3.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^17.0.0 || ^16.3.0 || ^15.5.4", "react@^17.0.0 || ^18.0.0", "react@>=16", "react@>=16.3.0", "react@>=16.8", "react@>=16.8.0", "react@>=17.0.0 || >=18.0.0", "react@17.0.2": "integrity" "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==" "resolved" "https://registry.npmjs.org/react/-/react-17.0.2.tgz" "version" "17.0.2" @@ -9599,7 +9631,7 @@ "indent-string" "^4.0.0" "strip-indent" "^3.0.0" -"reflect-metadata@^0.1.12", "reflect-metadata@^0.1.13": +"reflect-metadata@^0.1.12": "integrity" "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" "resolved" "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz" "version" "0.1.13" @@ -9873,7 +9905,7 @@ "resolved" "https://registry.npmjs.org/runtime-required/-/runtime-required-1.1.0.tgz" "version" "1.1.0" -"rxjs@^7.1.0", "rxjs@^7.2.0", "rxjs@^7.5.5": +"rxjs@^7.1.0", "rxjs@^7.5.5": "integrity" "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==" "resolved" "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz" "version" "7.5.6" @@ -9945,7 +9977,7 @@ dependencies: "neo-async" "^2.6.2" -"sass@*", "sass@^1.3.0", "sass@^1.42.1", "sass@^1.67.0", "sass@^1.69.0": +"sass@*", "sass@^1.3.0", "sass@^1.67.0", "sass@^1.69.0": "integrity" "sha512-l3bbFpfTOGgQZCLU/gvm1lbsQ5mC/WnLz3djL2v4WCJBDrWm58PO+jgngcGRNnKUh6wSsdm50YaovTqskZ0xDQ==" "resolved" "https://registry.npmjs.org/sass/-/sass-1.69.0.tgz" "version" "1.69.0" @@ -10646,6 +10678,14 @@ "csso" "^5.0.5" "picocolors" "^1.0.0" +"swr@^2.2.4": + "integrity" "sha512-njiZ/4RiIhoOlAaLYDqwz5qH/KZXVilRLvomrx83HjzCWTfa+InyfAjv05PSFxnmLzZkNO9ZfvgoqzAaEI4sGQ==" + "resolved" "https://registry.npmjs.org/swr/-/swr-2.2.4.tgz" + "version" "2.2.4" + dependencies: + "client-only" "^0.0.1" + "use-sync-external-store" "^1.2.0" + "symbol-tree@^3.2.4": "integrity" "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" "resolved" "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz" @@ -10829,7 +10869,7 @@ "resolved" "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz" "version" "1.0.3" -"ts-jest@^27.0.3", "ts-jest@^29.1.1": +"ts-jest@^29.1.1": "integrity" "sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==" "resolved" "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz" "version" "29.1.1" @@ -10843,7 +10883,7 @@ "semver" "^7.5.3" "yargs-parser" "^21.0.1" -"ts-loader@^9.2.3", "ts-loader@^9.4.4": +"ts-loader@^9.4.4": "integrity" "sha512-LLlB/pkB4q9mW2yLdFMnK3dEHbrBjeZTYguaaIfusyojBgAGf5kF+O6KcWqiGzWqHk0LBsoolrp4VftEURhybg==" "resolved" "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.0.tgz" "version" "9.5.0" @@ -10854,7 +10894,7 @@ "semver" "^7.3.4" "source-map" "^0.7.4" -"ts-node@^10.0.0", "ts-node@^10.9.1", "ts-node@>=9.0.0": +"ts-node@^10.9.1", "ts-node@>=9.0.0": "integrity" "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==" "resolved" "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz" "version" "10.9.1" @@ -10882,7 +10922,7 @@ "enhanced-resolve" "^5.7.0" "tsconfig-paths" "^4.1.2" -"tsconfig-paths@^3.10.1", "tsconfig-paths@^3.14.2": +"tsconfig-paths@^3.14.2": "integrity" "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==" "resolved" "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz" "version" "3.14.2" @@ -11024,7 +11064,7 @@ "for-each" "^0.3.3" "is-typed-array" "^1.1.9" -"typescript@*", "typescript@^4.0.2", "typescript@^4.3.5", "typescript@^4.4.3", "typescript@>=2.7", "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta", "typescript@>=4.2.0", "typescript@>=4.3 <6", "typescript@5.2.2": +"typescript@*", "typescript@^4.0.2", "typescript@^4.3.5", "typescript@>=2.7", "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta", "typescript@>=4.2.0", "typescript@>=4.3 <6": "integrity" "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==" "resolved" "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz" "version" "4.7.4" @@ -11186,6 +11226,11 @@ dependencies: "use-isomorphic-layout-effect" "^1.1.1" +"use-sync-external-store@^1.2.0": + "integrity" "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==" + "resolved" "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz" + "version" "1.2.0" + "utf8-byte-length@^1.0.1": "integrity" "sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==" "resolved" "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz" @@ -11253,7 +11298,7 @@ "@svgr/core" "^8.1.0" "@svgr/plugin-jsx" "^8.1.0" -"vite@^2.6.0 || 3 || 4", "vite@4.4.11": +"vite@^2.6.0 || 3 || 4": "integrity" "sha512-ksNZJlkcU9b0lBwAGZGGaZHCMqHsc8OpgtoYhsQ4/I2v5cnpmmmqe5pM4nv/4Hn6G/2GhTdj0DhZh2e+Er1q5A==" "resolved" "https://registry.npmjs.org/vite/-/vite-4.4.11.tgz" "version" "4.4.11" From 447f7500361b89c4cf2e01d47326affaf0eaf279 Mon Sep 17 00:00:00 2001 From: Bart Date: Tue, 10 Oct 2023 13:33:17 +0200 Subject: [PATCH 015/100] fix type issues --- packages/api/src/resources.ts | 34 +++++++- .../core/src/flow/flow-emulator.service.ts | 32 +------ packages/indexer/src/indexer.service.ts | 22 ++++- packages/ui/package.json | 3 +- yarn.lock | 84 ++++++++++--------- 5 files changed, 102 insertions(+), 73 deletions(-) diff --git a/packages/api/src/resources.ts b/packages/api/src/resources.ts index ac5c17a53..80d0c5e74 100644 --- a/packages/api/src/resources.ts +++ b/packages/api/src/resources.ts @@ -119,6 +119,7 @@ export interface FlowContractLocalConfig { absolutePath: string; } +// TODO(restructure): Refactor FlowAccountStorage export interface FlowAccountCapability { address: string; path: string; @@ -304,11 +305,40 @@ export enum ProcessOutputSource { export interface FlowserProject extends TimestampedResource { id: string; name: string; + emulator: FlowEmulatorConfig | undefined; +} + +export interface FlowEmulatorConfig { + workingDirectoryPath: string; + verboseLogging: boolean; + logFormat: string; + restServerPort: number; + grpcServerPort: number; + adminServerPort: number; + blockTime: number; + servicePrivateKey: string; + databasePath: string; + tokenSupply: number; + transactionExpiry: number; + storagePerFlow: number; + minAccountBalance: number; + transactionMaxGasLimit: number; + scriptGasLimit: number; + serviceSignatureAlgorithm: SignatureAlgorithm; + serviceHashAlgorithm: HashAlgorithm; + storageLimit: boolean; + transactionFees: boolean; + persist: boolean; + withContracts: boolean; + enableGrpcDebug: boolean; + enableRestDebug: boolean; + useSimpleAddresses: boolean; + snapshot: boolean; } export enum FlowserUsageRequirementType { UNSUPPORTED_CLI_VERSION, - MISSING_FLOW_CLI + MISSING_FLOW_CLI, } export interface FlowserUsageRequirement { @@ -317,7 +347,7 @@ export interface FlowserUsageRequirement { type: FlowserUsageRequirementType; } -export interface InteractionTemplate extends TimestampedResource { +export interface InteractionTemplate extends TimestampedResource { id: string; name: string; code: string; diff --git a/packages/core/src/flow/flow-emulator.service.ts b/packages/core/src/flow/flow-emulator.service.ts index f61893d3a..f9d9b408d 100644 --- a/packages/core/src/flow/flow-emulator.service.ts +++ b/packages/core/src/flow/flow-emulator.service.ts @@ -1,8 +1,8 @@ -import { ProcessManagerService } from "../processes/process-manager.service"; -import { ManagedProcess } from "../processes/managed-process"; +import { ProcessManagerService, ManagedProcess } from "../processes"; import { isDefined, waitForMs } from "../utils"; import { EventEmitter } from "node:events"; import { + FlowEmulatorConfig, HashAlgorithm, ProcessOutputSource, SignatureAlgorithm, @@ -24,34 +24,6 @@ export enum FlowEmulatorEvent { APIS_STARTED = "APIS_STARTED", } -export type FlowEmulatorConfig = { - workingDirectoryPath: string; - verboseLogging: boolean; - logFormat: string; - restServerPort: number; - grpcServerPort: number; - adminServerPort: number; - blockTime: number; - servicePrivateKey: string; - databasePath: string; - tokenSupply: number; - transactionExpiry: number; - storagePerFlow: number; - minAccountBalance: number; - transactionMaxGasLimit: number; - scriptGasLimit: number; - serviceSignatureAlgorithm: SignatureAlgorithm; - serviceHashAlgorithm: HashAlgorithm; - storageLimit: boolean; - transactionFees: boolean; - persist: boolean; - withContracts: boolean; - enableGrpcDebug: boolean; - enableRestDebug: boolean; - useSimpleAddresses: boolean; - snapshot: boolean; -}; - export class FlowEmulatorService extends EventEmitter { public static readonly processId = "emulator"; private process: ManagedProcess | undefined; diff --git a/packages/indexer/src/indexer.service.ts b/packages/indexer/src/indexer.service.ts index e5b83f9bf..3783bf642 100644 --- a/packages/indexer/src/indexer.service.ts +++ b/packages/indexer/src/indexer.service.ts @@ -2,7 +2,6 @@ import { Injectable, Logger } from "@nestjs/common"; import { FlowApiStatus, FlowGatewayService, - GetParsedInteractionResponse, FlowEmulatorService, WellKnownAddressesOptions, ManagedProcess, @@ -18,6 +17,7 @@ import { IResourceIndex, HashAlgorithm, SignatureAlgorithm, + ParsedInteractionOrError, } from "@onflowser/api"; // See https://developers.flow.com/cadence/language/core-events @@ -555,6 +555,7 @@ export class IndexerService { balance: account.balance, address, blockId: block.id, + tags: [], isDefaultAccount: allPossibleWellKnownAddresses.includes(address), code: account.code, keys: account.keys.map((flowKey) => @@ -564,6 +565,10 @@ export class IndexerService { block: block, }) ), + // TODO(restructure): Maybe the index should be the one dealing with these dates + createdAt: new Date(), + updatedAt: new Date(), + deletedAt: undefined, }; } @@ -613,6 +618,9 @@ export class IndexerService { blockId: event.blockId, eventIndex: event.eventIndex, data: event.data, + createdAt: new Date(), + updatedAt: new Date(), + deletedAt: undefined, }; } @@ -622,6 +630,7 @@ export class IndexerService { const { block } = options; return { id: block.id, + height: block.height, collectionGuarantees: block.collectionGuarantees, blockSeals: block.blockSeals, // TODO(milestone-x): "signatures" field is not present in block response @@ -630,6 +639,9 @@ export class IndexerService { timestamp: new Date(block.timestamp), blockHeight: block.height, parentId: block.parentId, + createdAt: new Date(), + updatedAt: new Date(), + deletedAt: undefined, }; } @@ -644,8 +656,13 @@ export class IndexerService { id: `${account.address}.${name}`, blockId: block.id, address: ensurePrefixedAddress(account.address), + // TODO(restructure): Populate local config if applicable + localConfig: undefined, name: name, code: code, + createdAt: new Date(), + updatedAt: new Date(), + deletedAt: undefined, }; } @@ -653,7 +670,7 @@ export class IndexerService { block: flowResource.FlowBlock; transaction: flowResource.FlowTransaction; transactionStatus: flowResource.FlowTransactionStatus; - parsedInteraction: GetParsedInteractionResponse; + parsedInteraction: ParsedInteractionOrError; }): flowserResource.FlowTransaction { const { block, transaction, transactionStatus, parsedInteraction } = options; @@ -724,6 +741,7 @@ export class IndexerService { }, createdAt: new Date(), updatedAt: new Date(), + deletedAt: undefined, }; } diff --git a/packages/ui/package.json b/packages/ui/package.json index 4d46804b2..8c332accb 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -15,7 +15,8 @@ "@types/react-dom": "^17.0.21", "sass": "^1.69.0", "typescript": "^4.9.5", - "vite-plugin-svgr": "^4.1.0" + "vite-plugin-svgr": "^4.1.0", + "@types/react-helmet": "^6.1.7" }, "dependencies": { "@codemirror/legacy-modes": "^6.1.0", diff --git a/yarn.lock b/yarn.lock index 5097440f7..33b4dc69d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1759,7 +1759,7 @@ "abort-controller" "^3.0.0" "cross-fetch" "^3.1.6" -"@onflow/types@^1.1.0": +"@onflow/types@^1.0.3", "@onflow/types@^1.1.0": "integrity" "sha512-UUd2ZAFqdd8BHW//uTg+YRlh3EIH9Na+UYJ9qXpt6y87qjW0Lf4Zkhn6H5IqvhIJsjK17QYnXLFpoXItD/+ToQ==" "resolved" "https://registry.npmjs.org/@onflow/types/-/types-1.1.0.tgz" "version" "1.1.0" @@ -1864,6 +1864,7 @@ "dateformat" "^5.0.3" "mixpanel-browser" "^2.47.0" "react" "^18.0.0" + "react-helmet" "^6.1.0" "react-hot-toast" "^2.4.1" "react-icons" "^4.11.0" "react-json-view" "^1.21.3" @@ -2123,7 +2124,7 @@ "lz-string" "^1.5.0" "pretty-format" "^27.0.2" -"@testing-library/jest-dom@^6.1.3": +"@testing-library/jest-dom@^5.14.1", "@testing-library/jest-dom@^6.1.3": "integrity" "sha512-YzpjRHoCBWPzpPNtg6gnhasqtE/5O4qz8WCwDEaxtfnPO6gkaLrnuXusrGSPyhIGPezr1HM7ZH0CFaUTY9PJEQ==" "resolved" "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.1.3.tgz" "version" "6.1.3" @@ -2371,7 +2372,7 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/jest@^29.5.5", "@types/jest@>= 28": +"@types/jest@^26.0.24", "@types/jest@^27.0.2", "@types/jest@^29.5.5", "@types/jest@>= 28": "integrity" "sha512-ebylz2hnsWR9mYvmBFbXJXr+33UPc4+ZdxyDXh5w0FlPBTfCVN3wPL+kuOiQt3xvrK419v7XWeAs+AeOksafXg==" "resolved" "https://registry.npmjs.org/@types/jest/-/jest-29.5.5.tgz" "version" "29.5.5" @@ -2415,7 +2416,7 @@ "resolved" "https://registry.npmjs.org/@types/ms/-/ms-0.7.32.tgz" "version" "0.7.32" -"@types/node@*", "@types/node@^16.11.6", "@types/node@>= 14": +"@types/node@*", "@types/node@^12.20.27", "@types/node@^16.11.6", "@types/node@>= 14", "@types/node@18.18.4": "integrity" "sha512-Y1zz/LIuJek01+hlPNzzXQhmq/Z2BCP96j18MSXC0S0jSu/IG4FFxmBs7W4/lI2vPJ7foVfEB0hUVtnOjnCiTg==" "resolved" "https://registry.npmjs.org/@types/node/-/node-16.18.55.tgz" "version" "16.18.55" @@ -2465,13 +2466,20 @@ dependencies: "@types/react" "^17" -"@types/react-dom@^18.0.0", "@types/react-dom@^18.2.7": +"@types/react-dom@^17.0.9", "@types/react-dom@^18.0.0", "@types/react-dom@^18.2.7": "integrity" "sha512-zq6Dy0EiCuF9pWFW6I6k6W2LdpUixLE4P6XjXU1QHLfak3GPACQfLwEuHzY5pOYa4hzj1d0GxX/P141aFjZsyg==" "resolved" "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.11.tgz" "version" "18.2.11" dependencies: "@types/react" "*" +"@types/react-helmet@^6.1.7": + "integrity" "sha512-mUFOrdR3AIvHE8BEaqzfPEnR62xq5PHQJehhgNtj78x0d5NOxUCQ0j+r9OZ4RvB+prNZx9wvQnVW8ApFBX+fig==" + "resolved" "https://registry.npmjs.org/@types/react-helmet/-/react-helmet-6.1.7.tgz" + "version" "6.1.7" + dependencies: + "@types/react" "*" + "@types/react-test-renderer@^18.0.1": "integrity" "sha512-4wcNLnY6nIT+L6g94CpzL4CXX2P18JvKPU9CDlaHr3DnbP3GiaQLhDotJqjWlVqOcE4UhLRjp0MtxqwuNKONnA==" "resolved" "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-18.0.3.tgz" @@ -2479,7 +2487,7 @@ dependencies: "@types/react" "*" -"@types/react@*", "@types/react@^18.2.21": +"@types/react@*", "@types/react@^17.0.24", "@types/react@^18.2.21": "integrity" "sha512-24xqse6+VByVLIr+xWaQ9muX1B4bXJKXBbjszbld/UEDslGLY53+ZucF44HCmLbMPejTzGG9XgR+3m2/Wqu1kw==" "resolved" "https://registry.npmjs.org/@types/react/-/react-18.2.25.tgz" "version" "18.2.25" @@ -2614,7 +2622,7 @@ dependencies: "@types/node" "*" -"@typescript-eslint/eslint-plugin@^5.0.0 || ^6.0.0", "@typescript-eslint/eslint-plugin@^5.13.0 || ^6.0.0", "@typescript-eslint/eslint-plugin@^6.7.0": +"@typescript-eslint/eslint-plugin@^4.28.2", "@typescript-eslint/eslint-plugin@^4.31.2", "@typescript-eslint/eslint-plugin@^5.0.0 || ^6.0.0", "@typescript-eslint/eslint-plugin@^5.13.0 || ^6.0.0", "@typescript-eslint/eslint-plugin@^6.7.0", "@typescript-eslint/eslint-plugin@6.7.4": "integrity" "sha512-DAbgDXwtX+pDkAHwiGhqP3zWUGpW49B7eqmgpPtg+BKJXwdct79ut9+ifqOFPJGClGKSHXn2PTBatCnldJRUoA==" "resolved" "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.4.tgz" "version" "6.7.4" @@ -2631,7 +2639,7 @@ "semver" "^7.5.4" "ts-api-utils" "^1.0.1" -"@typescript-eslint/parser@^5.0.0 || ^6.0.0", "@typescript-eslint/parser@^6.0.0 || ^6.0.0-alpha", "@typescript-eslint/parser@^6.7.0": +"@typescript-eslint/parser@^4.28.2", "@typescript-eslint/parser@^4.31.2", "@typescript-eslint/parser@^5.0.0 || ^6.0.0", "@typescript-eslint/parser@^6.0.0 || ^6.0.0-alpha", "@typescript-eslint/parser@^6.7.0": "integrity" "sha512-I5zVZFY+cw4IMZUeNCU7Sh2PO5O57F7Lr0uyhgCJmhN/BuTlnc55KxPonR4+EM3GBdfiCyGZye6DgMjtubQkmA==" "resolved" "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.7.4.tgz" "version" "6.7.4" @@ -3950,12 +3958,12 @@ "resolved" "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz" "version" "1.2.3" -"class-transformer@*": +"class-transformer@*", "class-transformer@0.4.0": "integrity" "sha512-ETWD/H2TbWbKEi7m9N4Km5+cw1hNcqJSxlSYhsLsNjQzWWiZIYA1zafxpK9PwVfaZ6AqR5rrjPVUBGESm5tQUA==" "resolved" "https://registry.npmjs.org/class-transformer/-/class-transformer-0.4.0.tgz" "version" "0.4.0" -"class-validator@*": +"class-validator@*", "class-validator@^0.13.1": "integrity" "sha512-yBUcQy07FPlGzUjoLuUfIOXzgynnQPPruyK1Ge2B74k9ROwnle1E+NxLWnUv5OLU8hA/qL5leAE9XnXq3byaBw==" "resolved" "https://registry.npmjs.org/class-validator/-/class-validator-0.13.2.tgz" "version" "0.13.2" @@ -3963,7 +3971,7 @@ "libphonenumber-js" "^1.9.43" "validator" "^13.7.0" -"classnames@^2.3.2": +"classnames@^2.3.1", "classnames@^2.3.2": "integrity" "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" "resolved" "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz" "version" "2.3.2" @@ -4182,7 +4190,7 @@ "resolved" "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" "version" "0.0.1" -"concurrently@^8.2.1": +"concurrently@^7.3.0", "concurrently@^8.2.1": "integrity" "sha512-nVraf3aXOpIcNud5pB9M82p1tynmZkrSGQ1p6X/VY8cJ+2LMVqAgXsJxYYefACSHbTYlm92O1xuhdGTjwoEvbQ==" "resolved" "https://registry.npmjs.org/concurrently/-/concurrently-8.2.1.tgz" "version" "8.2.1" @@ -4247,7 +4255,7 @@ "resolved" "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz" "version" "0.5.0" -"copy-to-clipboard@^3.3.3": +"copy-to-clipboard@^3.3.1", "copy-to-clipboard@^3.3.3": "integrity" "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==" "resolved" "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz" "version" "3.3.3" @@ -4332,7 +4340,7 @@ "resolved" "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz" "version" "1.0.6" -"cross-env@^7.0.3": +"cross-env@^7.0.3", "cross-env@7.0.3": "integrity" "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==" "resolved" "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz" "version" "7.0.3" @@ -4537,7 +4545,7 @@ dependencies: "@babel/runtime" "^7.21.0" -"dateformat@^5.0.3": +"dateformat@^5.0.1", "dateformat@^5.0.3": "integrity" "sha512-Kvr6HmPXUMerlLcLF+Pwq3K7apHpYmGDVqrxcDasBg86UcKeTSNWbEzU8bwdXnxnR44FtMhJAxI4Bov6Y/KUfA==" "resolved" "https://registry.npmjs.org/dateformat/-/dateformat-5.0.3.tgz" "version" "5.0.3" @@ -4930,7 +4938,7 @@ dependencies: "jake" "^10.8.5" -"electron-builder@^24.6.4": +"electron-builder@^23.3.3", "electron-builder@^24.6.4", "electron-builder@24.6.4": "integrity" "sha512-uNWQoU7pE7qOaIQ6CJHpBi44RJFVG8OHRBIadUxrsDJVwLLo8Nma3K/EEtx5/UyWAQYdcK4nVPYKoRqBb20hbA==" "resolved" "https://registry.npmjs.org/electron-builder/-/electron-builder-24.6.4.tgz" "version" "24.6.4" @@ -5008,7 +5016,7 @@ "resolved" "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.544.tgz" "version" "1.4.544" -"electron-updater@^6.1.4": +"electron-updater@^5.3.0", "electron-updater@^6.1.4", "electron-updater@6.1.4": "integrity" "sha512-yYAJc6RQjjV4WtInZVn+ZcLyXRhbVXoomKEfUUwDqIk5s2wxzLhWaor7lrNgxODyODhipjg4SVPMhJHi5EnsCA==" "resolved" "https://registry.npmjs.org/electron-updater/-/electron-updater-6.1.4.tgz" "version" "6.1.4" @@ -5031,7 +5039,7 @@ "@types/node" "^18.11.18" "extract-zip" "^2.0.1" -"electron@file:/Users/bartkozorog/Projects/flowser/apps/electron": +"electron@20.1.0", "electron@26.3.0", "electron@file:/Users/bartkozorog/Projects/flowser/apps/electron": "resolved" "file:apps/electron" dependencies: "electron-debug" "^3.2.0" @@ -5542,7 +5550,7 @@ "resolved" "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz" "version" "4.6.0" -"eslint-plugin-react@^7.28.0", "eslint-plugin-react@^7.33.2": +"eslint-plugin-react@^7.26.0", "eslint-plugin-react@^7.28.0", "eslint-plugin-react@^7.33.2": "integrity" "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==" "resolved" "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz" "version" "7.33.2" @@ -5590,7 +5598,7 @@ "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" "version" "3.4.3" -"eslint@*", "eslint@^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8", "eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8", "eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", "eslint@^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0", "eslint@^6.0.0 || ^7.0.0 || ^8.0.0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^7.0.0 || ^8.0.0", "eslint@^7.32.0 || ^8.2.0", "eslint@^8.34.0", "eslint@^8.49.0", "eslint@>=7 || >=8", "eslint@>=7.0.0", "eslint@>=8.0.0": +"eslint@*", "eslint@^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8", "eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8", "eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", "eslint@^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0", "eslint@^6.0.0 || ^7.0.0 || ^8.0.0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^7.0.0 || ^8.0.0", "eslint@^7.32.0", "eslint@^7.32.0 || ^8.2.0", "eslint@^8.34.0", "eslint@^8.49.0", "eslint@>=7 || >=8", "eslint@>=7.0.0", "eslint@>=8.0.0", "eslint@8.51.0": "integrity" "sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==" "resolved" "https://registry.npmjs.org/eslint/-/eslint-8.51.0.tgz" "version" "8.51.0" @@ -6595,7 +6603,7 @@ dependencies: "ms" "^2.0.0" -"husky@^8.0.1": +"husky@^7.0.2", "husky@^8.0.1": "integrity" "sha512-xs7/chUH/CKdOCs7Zy0Aev9e/dKOMZf3K1Az1nar3tzlv0jfqnYtu235bstsWTmXOR0EfINrPa97yy4Lz6RiKw==" "resolved" "https://registry.npmjs.org/husky/-/husky-8.0.1.tgz" "version" "8.0.1" @@ -7655,7 +7663,7 @@ "merge-stream" "^2.0.0" "supports-color" "^8.0.0" -"jest@*", "jest@^29.0.0", "jest@^29.7.0", "jest@>= 28", "jest@>=27.0.0": +"jest@*", "jest@^27.0.6", "jest@^29.0.0", "jest@^29.7.0", "jest@>= 28", "jest@>=27.0.0": "integrity" "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==" "resolved" "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz" "version" "29.7.0" @@ -7909,7 +7917,7 @@ "resolved" "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" "version" "1.2.4" -"lint-staged@^12.4.2": +"lint-staged@^11.1.2", "lint-staged@^12.4.2", "lint-staged@^13.0.3": "integrity" "sha512-BKLUjWDsKquV/JuIcoQW4MSAI3ggwEImF1+sB4zaKvyVx1wBk3FsG7UK9bpnmBTN1pm7EH2BBcMwINJzCRv12g==" "resolved" "https://registry.npmjs.org/lint-staged/-/lint-staged-12.5.0.tgz" "version" "12.5.0" @@ -8389,7 +8397,7 @@ "minipass" "^3.0.0" "yallist" "^4.0.0" -"mixpanel-browser@^2.47.0": +"mixpanel-browser@^2.45.0", "mixpanel-browser@^2.47.0": "integrity" "sha512-Ldrva0fRBEIFWmEibBQO1PulfpJVF3pf28Guk09lDirDaSQqqU/xs9zQLwN2rL5VwVtsP1aD3JaCgaa98EjojQ==" "resolved" "https://registry.npmjs.org/mixpanel-browser/-/mixpanel-browser-2.47.0.tgz" "version" "2.47.0" @@ -9207,7 +9215,7 @@ dependencies: "fast-diff" "^1.1.2" -"prettier@*", "prettier@^2.5.1": +"prettier@*", "prettier@^2.3.2", "prettier@^2.4.1", "prettier@^2.5.1": "integrity" "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==" "resolved" "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz" "version" "2.7.1" @@ -9389,7 +9397,7 @@ "lodash.flow" "^3.3.0" "pure-color" "^1.2.0" -"react-dom@^17.0.0 || ^16.3.0 || ^15.5.4", "react-dom@>=16", "react-dom@>=16.8", "react-dom@>=16.8.0": +"react-dom@^17.0.0 || ^16.3.0 || ^15.5.4", "react-dom@^17.0.2", "react-dom@>=16", "react-dom@>=16.8", "react-dom@>=16.8.0": "integrity" "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==" "resolved" "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz" "version" "17.0.2" @@ -9429,7 +9437,7 @@ "react-fast-compare" "^3.1.1" "react-side-effect" "^2.1.0" -"react-hot-toast@^2.4.1": +"react-hot-toast@^2.1.1", "react-hot-toast@^2.4.1": "integrity" "sha512-j8z+cQbWIM5LY37pR6uZR6D4LfseplqnuAO4co4u8917hBUvXlEqyP1ZzqVLcqoyUesZZv/ImreoCeHVDpE5pQ==" "resolved" "https://registry.npmjs.org/react-hot-toast/-/react-hot-toast-2.4.1.tgz" "version" "2.4.1" @@ -9537,12 +9545,12 @@ "use-composed-ref" "^1.3.0" "use-latest" "^1.2.1" -"react-timeago@^7.2.0": +"react-timeago@^6.2.1", "react-timeago@^7.2.0": "integrity" "sha512-2KsBEEs+qRhKx/kekUVNSTIpop3Jwd7SRBm0R4Eiq3mPeswRGSsftY9FpKsE/lXLdURyQFiHeHFrIUxLYskG5g==" "resolved" "https://registry.npmjs.org/react-timeago/-/react-timeago-7.2.0.tgz" "version" "7.2.0" -"react@*", "react@^15.0.2 || ^16.0.0 || ^17.0.0", "react@^16.0.0 || ^17.0.0 || ^18.0.0", "react@^16.11.0 || ^17.0.0 || ^18.0.0", "react@^16.3.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^17.0.0 || ^16.3.0 || ^15.5.4", "react@^17.0.0 || ^18.0.0", "react@>=16", "react@>=16.3.0", "react@>=16.8", "react@>=16.8.0", "react@>=17.0.0 || >=18.0.0", "react@17.0.2": +"react@*", "react@^15.0.2 || ^16.0.0 || ^17.0.0", "react@^16.0.0 || ^17.0.0 || ^18.0.0", "react@^16.11.0 || ^17.0.0 || ^18.0.0", "react@^16.3.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^17.0.0 || ^16.3.0 || ^15.5.4", "react@^17.0.0 || ^18.0.0", "react@^17.0.2", "react@>=16", "react@>=16.3.0", "react@>=16.8", "react@>=16.8.0", "react@>=17.0.0 || >=18.0.0", "react@17.0.2": "integrity" "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==" "resolved" "https://registry.npmjs.org/react/-/react-17.0.2.tgz" "version" "17.0.2" @@ -9631,7 +9639,7 @@ "indent-string" "^4.0.0" "strip-indent" "^3.0.0" -"reflect-metadata@^0.1.12": +"reflect-metadata@^0.1.12", "reflect-metadata@^0.1.13": "integrity" "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" "resolved" "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz" "version" "0.1.13" @@ -9905,7 +9913,7 @@ "resolved" "https://registry.npmjs.org/runtime-required/-/runtime-required-1.1.0.tgz" "version" "1.1.0" -"rxjs@^7.1.0", "rxjs@^7.5.5": +"rxjs@^7.1.0", "rxjs@^7.2.0", "rxjs@^7.5.5": "integrity" "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==" "resolved" "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz" "version" "7.5.6" @@ -9977,7 +9985,7 @@ dependencies: "neo-async" "^2.6.2" -"sass@*", "sass@^1.3.0", "sass@^1.67.0", "sass@^1.69.0": +"sass@*", "sass@^1.3.0", "sass@^1.42.1", "sass@^1.67.0", "sass@^1.69.0": "integrity" "sha512-l3bbFpfTOGgQZCLU/gvm1lbsQ5mC/WnLz3djL2v4WCJBDrWm58PO+jgngcGRNnKUh6wSsdm50YaovTqskZ0xDQ==" "resolved" "https://registry.npmjs.org/sass/-/sass-1.69.0.tgz" "version" "1.69.0" @@ -10869,7 +10877,7 @@ "resolved" "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz" "version" "1.0.3" -"ts-jest@^29.1.1": +"ts-jest@^27.0.3", "ts-jest@^29.1.1": "integrity" "sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==" "resolved" "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz" "version" "29.1.1" @@ -10883,7 +10891,7 @@ "semver" "^7.5.3" "yargs-parser" "^21.0.1" -"ts-loader@^9.4.4": +"ts-loader@^9.2.3", "ts-loader@^9.4.4": "integrity" "sha512-LLlB/pkB4q9mW2yLdFMnK3dEHbrBjeZTYguaaIfusyojBgAGf5kF+O6KcWqiGzWqHk0LBsoolrp4VftEURhybg==" "resolved" "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.0.tgz" "version" "9.5.0" @@ -10894,7 +10902,7 @@ "semver" "^7.3.4" "source-map" "^0.7.4" -"ts-node@^10.9.1", "ts-node@>=9.0.0": +"ts-node@^10.0.0", "ts-node@^10.9.1", "ts-node@>=9.0.0": "integrity" "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==" "resolved" "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz" "version" "10.9.1" @@ -10922,7 +10930,7 @@ "enhanced-resolve" "^5.7.0" "tsconfig-paths" "^4.1.2" -"tsconfig-paths@^3.14.2": +"tsconfig-paths@^3.10.1", "tsconfig-paths@^3.14.2": "integrity" "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==" "resolved" "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz" "version" "3.14.2" @@ -11064,7 +11072,7 @@ "for-each" "^0.3.3" "is-typed-array" "^1.1.9" -"typescript@*", "typescript@^4.0.2", "typescript@^4.3.5", "typescript@>=2.7", "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta", "typescript@>=4.2.0", "typescript@>=4.3 <6": +"typescript@*", "typescript@^4.0.2", "typescript@^4.3.5", "typescript@^4.4.3", "typescript@>=2.7", "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta", "typescript@>=4.2.0", "typescript@>=4.3 <6", "typescript@5.2.2": "integrity" "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==" "resolved" "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz" "version" "4.7.4" @@ -11298,7 +11306,7 @@ "@svgr/core" "^8.1.0" "@svgr/plugin-jsx" "^8.1.0" -"vite@^2.6.0 || 3 || 4": +"vite@^2.6.0 || 3 || 4", "vite@4.4.11": "integrity" "sha512-ksNZJlkcU9b0lBwAGZGGaZHCMqHsc8OpgtoYhsQ4/I2v5cnpmmmqe5pM4nv/4Hn6G/2GhTdj0DhZh2e+Er1q5A==" "resolved" "https://registry.npmjs.org/vite/-/vite-4.4.11.tgz" "version" "4.4.11" From bf51922086863bac6835178dc31177008e557fbd Mon Sep 17 00:00:00 2001 From: Bart Date: Tue, 10 Oct 2023 15:06:30 +0200 Subject: [PATCH 016/100] remove usages of legacy services, fix build issues by not using the transpiled build lib files --- frontend/src/App.tsx | 53 +++--- frontend/src/services/accounts.service.ts | 48 ----- frontend/src/services/blocks.service.ts | 30 ---- frontend/src/services/common.service.ts | 23 --- frontend/src/services/contracts.service.ts | 48 ----- frontend/src/services/events.service.ts | 39 ---- frontend/src/services/fingerprint.service.ts | 15 -- frontend/src/services/flow.service.ts | 25 --- frontend/src/services/go-bindings.service.ts | 35 ---- frontend/src/services/monitoring.service.ts | 7 - frontend/src/services/processes.service.ts | 58 ------ frontend/src/services/projects.service.ts | 120 ------------- frontend/src/services/service-registry.ts | 61 ------- frontend/src/services/snapshots.service.ts | 61 ------- frontend/src/services/storage.service.ts | 25 --- frontend/src/services/transactions.service.ts | 75 -------- .../transports/http-transport.service.ts | 68 ------- .../services/transports/transport.service.ts | 22 --- frontend/src/services/wallet.service.ts | 28 --- packages/api/package.json | 9 +- packages/api/src/resources.ts | 6 + packages/api/tsconfig.json | 7 +- packages/config/tsconfig.json | 6 +- packages/core/package.json | 4 +- .../src/flow/{fcl-values.ts => fcl-value.ts} | 4 +- .../core/src/flow/flow-gateway.service.ts | 8 +- packages/core/src/flow/index.ts | 2 +- packages/ui/package.json | 3 + .../AccountStorage/AccountStorage.tsx | 12 +- .../PublicPrivateStorageCard.tsx | 14 +- .../dialogs/snapshot/SnapshotDialog.tsx | 4 +- .../ui/src/common/status/ExecutionStatus.tsx | 2 +- .../ui/src/contexts}/analytics.service.ts | 2 +- .../ui/src/contexts/flowser-api.context.tsx | 6 +- packages/ui/src/contexts/projects.context.tsx | 32 +++- .../src/contexts/service-registry.context.tsx | 45 +++++ .../ui/src/contexts/snapshots.context.tsx | 12 +- .../src/contexts/timeout-polling.context.tsx | 166 ------------------ .../EventOriginLink/EventOriginLink.tsx | 4 +- .../ui/src/events/EventsTable/EventsTable.tsx | 2 - packages/ui/src/hooks/use-analytics.ts | 8 +- packages/ui/src/index.ts | 6 +- .../ExecutionSettings/ExecutionSettings.tsx | 36 ++-- .../InteractionHistory/InteractionHistory.tsx | 8 +- .../InteractionIcon/InteractionIcon.tsx | 2 +- .../InteractionOutcomeDisplay.tsx | 8 +- .../components/ParamBuilder/ParamBuilder.tsx | 6 +- .../AddressBuilder/AddressBuilder.tsx | 18 +- .../ArrayBuilder/ArrayBuilder.tsx | 6 +- .../ValueBuilder/BoolBuilder/BoolBuilder.tsx | 4 +- .../DictionaryBuilder/DictionaryBuilder.tsx | 6 +- .../FixedPointNumberBuilder.tsx | 4 +- .../IntegerNumberBuilder.tsx | 4 +- .../ValueBuilder/PathBuilder/PathBuilder.tsx | 4 +- .../components/ValueBuilder/interface.ts | 3 +- .../contexts/definition.context.tsx | 7 +- .../interactions/contexts/outcome.context.tsx | 22 ++- .../contexts/templates.context.tsx | 4 +- .../ui/src/projects/FormFields/FormFields.tsx | 6 +- .../ProjectSettings/ProjectSettings.tsx | 57 +++--- packages/ui/src/utils/multi-map.ts | 13 ++ packages/ui/tsconfig.json | 10 +- packages/wallet/src/wallet.service.ts | 6 +- shared/src/utils/index.ts | 2 +- yarn.lock | 111 +++++++++++- 65 files changed, 382 insertions(+), 1170 deletions(-) delete mode 100644 frontend/src/services/accounts.service.ts delete mode 100644 frontend/src/services/blocks.service.ts delete mode 100644 frontend/src/services/common.service.ts delete mode 100644 frontend/src/services/contracts.service.ts delete mode 100644 frontend/src/services/events.service.ts delete mode 100644 frontend/src/services/fingerprint.service.ts delete mode 100644 frontend/src/services/flow.service.ts delete mode 100644 frontend/src/services/go-bindings.service.ts delete mode 100644 frontend/src/services/monitoring.service.ts delete mode 100644 frontend/src/services/processes.service.ts delete mode 100644 frontend/src/services/projects.service.ts delete mode 100644 frontend/src/services/service-registry.ts delete mode 100644 frontend/src/services/snapshots.service.ts delete mode 100644 frontend/src/services/storage.service.ts delete mode 100644 frontend/src/services/transactions.service.ts delete mode 100644 frontend/src/services/transports/http-transport.service.ts delete mode 100644 frontend/src/services/transports/transport.service.ts delete mode 100644 frontend/src/services/wallet.service.ts rename packages/core/src/flow/{fcl-values.ts => fcl-value.ts} (98%) rename {frontend/src/services => packages/ui/src/contexts}/analytics.service.ts (94%) create mode 100644 packages/ui/src/contexts/service-registry.context.tsx delete mode 100644 packages/ui/src/contexts/timeout-polling.context.tsx create mode 100644 packages/ui/src/utils/multi-map.ts diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index c4368e75d..f46488431 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -16,7 +16,6 @@ import { ProjectsManagerProvider } from "../../packages/ui/src/contexts/projects import { ConfirmDialogProvider } from "../../packages/ui/src/contexts/confirm-dialog.context"; import { QueryClientProvider } from "react-query"; import { FlowserUsageRequirements } from "../../packages/ui/src/common/misc/FlowserUsageRequirements/FlowserUsageRequirements"; -import { TimeoutPollingProvider } from "../../packages/ui/src/contexts/timeout-polling.context"; import { PlatformAdapterProvider, PlatformAdapterState, @@ -24,7 +23,7 @@ import { import { ConsentDialog } from "../../packages/ui/src/common/overlays/dialogs/consent/ConsentDialog"; import { useAnalytics } from "../../packages/ui/src/hooks/use-analytics"; import { ServiceRegistry } from "./services/service-registry"; -import { AnalyticEvent } from "./services/analytics.service"; +import { AnalyticEvent } from "../../packages/ui/src/contexts/analytics.service"; import { InteractionsPage } from "../../packages/ui/src/interactions/InteractionsPage"; import { InteractionRegistryProvider } from "../../packages/ui/src/interactions/contexts/interaction-registry.context"; import { ProjectSettings } from "../../packages/ui/src/projects/ProjectSettings/ProjectSettings"; @@ -68,7 +67,6 @@ const BrowserRouterEvents = (props: { children: ReactNode }): ReactElement => { export type FlowserClientAppProps = { useHashRouter?: boolean; platformAdapter: PlatformAdapterState; - enableTimeoutPolling?: boolean; }; export const queryClient = new QueryClient(); @@ -76,36 +74,31 @@ export const queryClient = new QueryClient(); export const FlowserClientApp = ({ useHashRouter, platformAdapter, - enableTimeoutPolling = true, }: FlowserClientAppProps): ReactElement => { return ( - - - - - - - - - - + + + + + + + + ); }; diff --git a/frontend/src/services/accounts.service.ts b/frontend/src/services/accounts.service.ts deleted file mode 100644 index 4bbc152a5..000000000 --- a/frontend/src/services/accounts.service.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { - GetSingleAccountResponse, - GetPollingAccountsResponse, - GetPollingKeysResponse, - GetPollingAccountsRequest, - GetPollingKeysRequest, -} from "@flowser/shared"; -import { TransportService } from "./transports/transport.service"; - -export class AccountsService { - constructor(private readonly transport: TransportService) {} - - getAllWithPolling(data: { - timestamp: number; - }): Promise { - return this.transport.send({ - requestMethod: "POST", - resourceIdentifier: "/api/accounts/polling", - requestData: data, - requestProtobuf: GetPollingAccountsRequest, - responseProtobuf: GetPollingAccountsResponse, - }); - } - - getAllKeysByAccountWithPolling({ - accountAddress, - ...data - }: { - accountAddress: string; - timestamp: number; - }): Promise { - return this.transport.send({ - requestMethod: "POST", - resourceIdentifier: `/api/accounts/${accountAddress}/keys/polling`, - requestData: data, - requestProtobuf: GetPollingKeysRequest, - responseProtobuf: GetPollingKeysResponse, - }); - } - - getSingle(id: string): Promise { - return this.transport.send({ - requestMethod: "GET", - resourceIdentifier: `/api/accounts/${id}`, - responseProtobuf: GetSingleAccountResponse, - }); - } -} diff --git a/frontend/src/services/blocks.service.ts b/frontend/src/services/blocks.service.ts deleted file mode 100644 index 05bd26074..000000000 --- a/frontend/src/services/blocks.service.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { - GetSingleBlockResponse, - GetPollingBlocksResponse, - GetPollingBlocksRequest, -} from "@flowser/shared"; -import { TransportService } from "./transports/transport.service"; - -export class BlocksService { - constructor(private readonly transport: TransportService) {} - - getAllWithPolling(data: { - timestamp: number; - }): Promise { - return this.transport.send({ - requestMethod: "POST", - resourceIdentifier: "/api/blocks/polling", - requestData: data, - requestProtobuf: GetPollingBlocksRequest, - responseProtobuf: GetPollingBlocksResponse, - }); - } - - getSingle(id: string): Promise { - return this.transport.send({ - requestMethod: "GET", - resourceIdentifier: `/api/blocks/${id}`, - responseProtobuf: GetSingleBlockResponse, - }); - } -} diff --git a/frontend/src/services/common.service.ts b/frontend/src/services/common.service.ts deleted file mode 100644 index 833ab1e10..000000000 --- a/frontend/src/services/common.service.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { GetFlowserVersionResponse } from "@flowser/shared"; -import { GetFlowCliInfoResponse } from "@flowser/shared"; -import { TransportService } from "./transports/transport.service"; - -export class CommonService { - constructor(private readonly transport: TransportService) {} - - getFlowserVersion(): Promise { - return this.transport.send({ - requestMethod: "GET", - resourceIdentifier: "/api/version", - responseProtobuf: GetFlowserVersionResponse, - }); - } - - getFlowCliInfo(): Promise { - return this.transport.send({ - requestMethod: "GET", - resourceIdentifier: "/api/flow/version", - responseProtobuf: GetFlowCliInfoResponse, - }); - } -} diff --git a/frontend/src/services/contracts.service.ts b/frontend/src/services/contracts.service.ts deleted file mode 100644 index db04e89cf..000000000 --- a/frontend/src/services/contracts.service.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { - GetSingleContractResponse, - GetPollingContractsResponse, - GetPollingContractsByAccountResponse, - GetPollingContractsByAccountRequest, - GetPollingContractsRequest, -} from "@flowser/shared"; -import { TransportService } from "./transports/transport.service"; - -export class ContractsService { - constructor(private readonly transport: TransportService) {} - - getAllWithPolling(data: { - timestamp: number; - }): Promise { - return this.transport.send({ - requestMethod: "POST", - resourceIdentifier: `/api/contracts/polling`, - requestData: data, - requestProtobuf: GetPollingContractsRequest, - responseProtobuf: GetPollingContractsResponse, - }); - } - - getAllByAccountWithPolling({ - accountAddress, - ...data - }: { - accountAddress: string; - timestamp: number; - }): Promise { - return this.transport.send({ - requestMethod: "POST", - resourceIdentifier: `/api/accounts/${accountAddress}/contracts/polling`, - requestData: data, - requestProtobuf: GetPollingContractsByAccountRequest, - responseProtobuf: GetPollingContractsByAccountResponse, - }); - } - - getSingle(id: string): Promise { - return this.transport.send({ - requestMethod: "GET", - resourceIdentifier: `/api/contracts/${id}`, - responseProtobuf: GetSingleContractResponse, - }); - } -} diff --git a/frontend/src/services/events.service.ts b/frontend/src/services/events.service.ts deleted file mode 100644 index 75f900a89..000000000 --- a/frontend/src/services/events.service.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { - GetPollingEventsByTransactionRequest, - GetPollingEventsByTransactionResponse, - GetPollingEventsRequest, - GetPollingEventsResponse, -} from "@flowser/shared"; -import { TransportService } from "./transports/transport.service"; - -export class EventsService { - constructor(private readonly transport: TransportService) {} - - getAllWithPolling(data: { - timestamp: number; - }): Promise { - return this.transport.send({ - requestMethod: "POST", - resourceIdentifier: `/api/events/polling`, - requestData: data, - requestProtobuf: GetPollingEventsRequest, - responseProtobuf: GetPollingEventsResponse, - }); - } - - getAllWithPollingByTransaction({ - transactionId, - ...data - }: { - timestamp: number; - transactionId: string; - }): Promise { - return this.transport.send({ - requestMethod: "POST", - resourceIdentifier: `/api/transactions/${transactionId}/events/polling`, - requestData: data, - requestProtobuf: GetPollingEventsByTransactionRequest, - responseProtobuf: GetPollingEventsByTransactionResponse, - }); - } -} diff --git a/frontend/src/services/fingerprint.service.ts b/frontend/src/services/fingerprint.service.ts deleted file mode 100644 index 1a0233a88..000000000 --- a/frontend/src/services/fingerprint.service.ts +++ /dev/null @@ -1,15 +0,0 @@ -import FingerprintJS from "@fingerprintjs/fingerprintjs"; - -export class FingerprintService { - // Alternative fingerprinting idea: - // At the very beginning generate an uuid and store it permanently. - // Every subsequent time the app is opened, reuse the persisted uuid. - async getUserFingerprintId(): Promise { - const fingerprint = await FingerprintJS.load(); - const { visitorId, confidence } = await fingerprint.get({ debug: false }); - console.log( - `Identifying user ${visitorId} with confidence ${confidence.score}` - ); - return visitorId; - } -} diff --git a/frontend/src/services/flow.service.ts b/frontend/src/services/flow.service.ts deleted file mode 100644 index b8b79f696..000000000 --- a/frontend/src/services/flow.service.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { - GetFlowInteractionTemplatesResponse, - GetFlowConfigResponse, -} from "@flowser/shared"; -import { TransportService } from "./transports/transport.service"; - -export class FlowService { - constructor(private readonly transport: TransportService) {} - - getInteractionTemplates(): Promise { - return this.transport.send({ - requestMethod: "GET", - resourceIdentifier: `/api/flow/templates`, - responseProtobuf: GetFlowInteractionTemplatesResponse, - }); - } - - getConfig(): Promise { - return this.transport.send({ - requestMethod: "GET", - resourceIdentifier: `/api/flow/config`, - responseProtobuf: GetFlowConfigResponse, - }); - } -} diff --git a/frontend/src/services/go-bindings.service.ts b/frontend/src/services/go-bindings.service.ts deleted file mode 100644 index f6c26acb8..000000000 --- a/frontend/src/services/go-bindings.service.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { TransportService } from "./transports/transport.service"; -import { - GetParsedInteractionRequest, - GetParsedInteractionResponse, - GetAddressIndexRequest, - GetAddressIndexResponse, -} from "@flowser/shared"; - -export class GoBindingsService { - constructor(private readonly transport: TransportService) {} - - getParsedInteraction( - request: GetParsedInteractionRequest - ): Promise { - return this.transport.send({ - requestMethod: "POST", - resourceIdentifier: "/api/go-bindings/get-parsed-interaction", - requestData: request, - requestProtobuf: GetParsedInteractionRequest, - responseProtobuf: GetParsedInteractionResponse, - }); - } - - getAddressIndex( - request: GetAddressIndexRequest - ): Promise { - return this.transport.send({ - requestMethod: "POST", - resourceIdentifier: "/api/go-bindings/get-address-index", - requestData: request, - requestProtobuf: GetAddressIndexRequest, - responseProtobuf: GetAddressIndexResponse, - }); - } -} diff --git a/frontend/src/services/monitoring.service.ts b/frontend/src/services/monitoring.service.ts deleted file mode 100644 index 43a89a3bf..000000000 --- a/frontend/src/services/monitoring.service.ts +++ /dev/null @@ -1,7 +0,0 @@ -export type CaptureErrorOptions = { - extra?: Record; -}; - -export interface MonitoringServiceInt { - captureError(error: unknown, options?: CaptureErrorOptions): void; -} diff --git a/frontend/src/services/processes.service.ts b/frontend/src/services/processes.service.ts deleted file mode 100644 index 9ef153b7a..000000000 --- a/frontend/src/services/processes.service.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { - GetPollingOutputsRequest, - GetPollingOutputsResponse, - GetPollingManagedProcessesRequest, - GetPollingManagedProcessesResponse, -} from "@flowser/shared"; -import { TransportService } from "./transports/transport.service"; - -export class ProcessesService { - constructor(private readonly transport: TransportService) {} - - restart({ processId }: { processId: string }): Promise { - return this.transport.send({ - requestMethod: "POST", - resourceIdentifier: `/api/processes/${processId}/restart`, - }); - } - - getAllOutputsByProcessWithPolling({ - processId, - ...data - }: { - timestamp: number; - processId: string; - }): Promise { - return this.transport.send({ - requestMethod: "POST", - resourceIdentifier: `/api/processes/${processId}/logs/polling`, - requestData: data, - requestProtobuf: GetPollingOutputsRequest, - responseProtobuf: GetPollingOutputsResponse, - }); - } - - getAllOutputsWithPolling(data: { - timestamp: number; - }): Promise { - return this.transport.send({ - requestMethod: "POST", - resourceIdentifier: `/api/processes/logs/polling`, - requestData: data, - requestProtobuf: GetPollingOutputsRequest, - responseProtobuf: GetPollingOutputsResponse, - }); - } - - getAllProcessesWithPolling(data: { - timestamp: number; - }): Promise { - return this.transport.send({ - requestMethod: "POST", - resourceIdentifier: `/api/processes/polling`, - requestData: data, - requestProtobuf: GetPollingManagedProcessesRequest, - responseProtobuf: GetPollingManagedProcessesResponse, - }); - } -} diff --git a/frontend/src/services/projects.service.ts b/frontend/src/services/projects.service.ts deleted file mode 100644 index 95c3cdb30..000000000 --- a/frontend/src/services/projects.service.ts +++ /dev/null @@ -1,120 +0,0 @@ -import { - CreateProjectResponse, - GetPollingProjectsRequest, - GetProjectRequirementsResponse, - GetProjectStatusResponse, - Project, - UpdateProjectResponse, - UseProjectResponse, -} from "@flowser/shared"; -import { - GetSingleProjectResponse, - GetPollingProjectsResponse, - GetAllProjectsResponse, -} from "@flowser/shared"; -import { TransportService } from "./transports/transport.service"; - -export class ProjectsService { - constructor(private readonly transport: TransportService) {} - - getAllWithPolling(data: { - timestamp: number; - }): Promise { - return this.transport.send({ - requestMethod: "POST", - resourceIdentifier: `/api/projects/polling`, - requestData: data, - requestProtobuf: GetPollingProjectsRequest, - responseProtobuf: GetPollingProjectsResponse, - }); - } - - getRequirements(): Promise { - return this.transport.send({ - requestMethod: "GET", - resourceIdentifier: `/api/projects/requirements`, - responseProtobuf: GetProjectRequirementsResponse, - }); - } - - getStatus(): Promise { - return this.transport.send({ - requestMethod: "GET", - resourceIdentifier: `/api/projects/status`, - responseProtobuf: GetProjectStatusResponse, - }); - } - - getSingle(id: string): Promise { - return this.transport.send({ - requestMethod: "GET", - resourceIdentifier: `/api/projects/${id}`, - responseProtobuf: GetSingleProjectResponse, - }); - } - - getAll(): Promise { - return this.transport.send({ - requestMethod: "GET", - resourceIdentifier: "/api/projects", - responseProtobuf: GetAllProjectsResponse, - }); - } - - useProject(id: string): Promise { - return this.transport.send({ - requestMethod: "POST", - resourceIdentifier: `/api/projects/use/${id}`, - }); - } - - createProject(data: Exclude): Promise { - return this.transport.send({ - requestMethod: "POST", - resourceIdentifier: "/api/projects", - requestData: data, - requestProtobuf: Project, - responseProtobuf: CreateProjectResponse, - }); - } - - updateProject(data: Project): Promise { - return this.transport.send({ - requestMethod: "PATCH", - resourceIdentifier: `/api/projects/${data.id}`, - requestData: data, - requestProtobuf: Project, - responseProtobuf: GetSingleProjectResponse, - }); - } - - unUseCurrentProject(): Promise { - return this.transport.send({ - requestMethod: "DELETE", - resourceIdentifier: "/api/projects/use", - }); - } - - removeProject(id: string): Promise { - return this.transport.send({ - requestMethod: "DELETE", - resourceIdentifier: `/api/projects/${id}`, - }); - } - - getCurrentProject(): Promise { - return this.transport.send({ - requestMethod: "GET", - resourceIdentifier: `/api/projects/current`, - responseProtobuf: GetSingleProjectResponse, - }); - } - - getDefaultProjectInfo(): Promise { - return this.transport.send({ - requestMethod: "GET", - resourceIdentifier: `/api/projects/default`, - responseProtobuf: GetSingleProjectResponse, - }); - } -} diff --git a/frontend/src/services/service-registry.ts b/frontend/src/services/service-registry.ts deleted file mode 100644 index 8f34e81fd..000000000 --- a/frontend/src/services/service-registry.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { TransportService } from "./transports/transport.service"; -import { HttpTransportService } from "./transports/http-transport.service"; -import { ProjectsService } from "./projects.service"; -import { CommonService } from "./common.service"; -import { AccountsService } from "./accounts.service"; -import { BlocksService } from "./blocks.service"; -import { ContractsService } from "./contracts.service"; -import { EventsService } from "./events.service"; -import { ProcessesService } from "./processes.service"; -import { StorageService } from "./storage.service"; -import { TransactionsService } from "./transactions.service"; -import { SnapshotService } from "./snapshots.service"; -import { AnalyticsService } from "./analytics.service"; -import { WalletService } from "./wallet.service"; -import { GoBindingsService } from "./go-bindings.service"; -import { FlowService } from "./flow.service"; - -export class ServiceRegistry { - private static instance: ServiceRegistry | undefined; - public projectsService: ProjectsService; - public commonService: CommonService; - public accountsService: AccountsService; - public blocksService: BlocksService; - public contractsService: ContractsService; - public eventsService: EventsService; - public processesService: ProcessesService; - public storageService: StorageService; - public transactionsService: TransactionsService; - public snapshotService: SnapshotService; - public analyticsService: AnalyticsService; - public walletService: WalletService; - public goBindingsService: GoBindingsService; - public flowService: FlowService; - - constructor(transport: TransportService) { - this.projectsService = new ProjectsService(transport); - this.commonService = new CommonService(transport); - this.accountsService = new AccountsService(transport); - this.blocksService = new BlocksService(transport); - this.contractsService = new ContractsService(transport); - this.eventsService = new EventsService(transport); - this.processesService = new ProcessesService(transport); - this.transactionsService = new TransactionsService(transport); - this.storageService = new StorageService(transport); - this.snapshotService = new SnapshotService(transport); - this.walletService = new WalletService(transport); - this.goBindingsService = new GoBindingsService(transport); - this.flowService = new FlowService(transport); - this.analyticsService = new AnalyticsService(); - } - - static getInstance(transport?: TransportService): ServiceRegistry { - const defaultTransportService = new HttpTransportService(); - if (!ServiceRegistry.instance) { - ServiceRegistry.instance = new ServiceRegistry( - transport ?? defaultTransportService - ); - } - return ServiceRegistry.instance; - } -} diff --git a/frontend/src/services/snapshots.service.ts b/frontend/src/services/snapshots.service.ts deleted file mode 100644 index 1260805c0..000000000 --- a/frontend/src/services/snapshots.service.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { - GetPollingEmulatorSnapshotsResponse, - CreateEmulatorSnapshotRequest, - RevertToEmulatorSnapshotRequest, - RevertToEmulatorSnapshotResponse, - CreateEmulatorSnapshotResponse, - GetPollingEmulatorSnapshotsRequest, - RollbackToHeightRequest, - RollbackToHeightResponse, -} from "@flowser/shared"; -import { TransportService } from "./transports/transport.service"; - -export class SnapshotService { - constructor(private readonly transport: TransportService) {} - - create( - data: CreateEmulatorSnapshotRequest - ): Promise { - return this.transport.send({ - requestMethod: "POST", - resourceIdentifier: "/api/flow/snapshots", - requestData: data, - requestProtobuf: CreateEmulatorSnapshotRequest, - responseProtobuf: CreateEmulatorSnapshotResponse, - }); - } - - checkoutBlock( - data: RevertToEmulatorSnapshotRequest - ): Promise { - return this.transport.send({ - requestMethod: "PUT", - resourceIdentifier: "/api/flow/snapshots", - requestData: data, - requestProtobuf: RevertToEmulatorSnapshotRequest, - responseProtobuf: RevertToEmulatorSnapshotResponse, - }); - } - - rollback(data: RollbackToHeightRequest): Promise { - return this.transport.send({ - requestMethod: "POST", - resourceIdentifier: "/api/flow/rollback", - requestData: data, - requestProtobuf: RollbackToHeightRequest, - responseProtobuf: RollbackToHeightResponse, - }); - } - - getAllWithPolling( - data: GetPollingEmulatorSnapshotsRequest - ): Promise { - return this.transport.send({ - requestMethod: "POST", - resourceIdentifier: "/api/flow/snapshots/polling", - requestData: data, - requestProtobuf: GetPollingEmulatorSnapshotsRequest, - responseProtobuf: GetPollingEmulatorSnapshotsResponse, - }); - } -} diff --git a/frontend/src/services/storage.service.ts b/frontend/src/services/storage.service.ts deleted file mode 100644 index 95708b237..000000000 --- a/frontend/src/services/storage.service.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { - GetPollingStorageRequest, - GetPollingStorageResponse, -} from "@flowser/shared"; -import { TransportService } from "./transports/transport.service"; - -export class StorageService { - constructor(private readonly transport: TransportService) {} - - getAllByAccountWithPolling({ - accountAddress, - ...data - }: { - accountAddress: string; - timestamp: number; - }): Promise { - return this.transport.send({ - requestMethod: "POST", - resourceIdentifier: `/api/accounts/${accountAddress}/storage/polling`, - requestData: data, - requestProtobuf: GetPollingStorageRequest, - responseProtobuf: GetPollingStorageResponse, - }); - } -} diff --git a/frontend/src/services/transactions.service.ts b/frontend/src/services/transactions.service.ts deleted file mode 100644 index 6c0c0ea7c..000000000 --- a/frontend/src/services/transactions.service.ts +++ /dev/null @@ -1,75 +0,0 @@ -import { - GetSingleTransactionResponse, - GetPollingTransactionsResponse, - GetPollingTransactionsRequest, - GetPollingTransactionsByBlockRequest, - GetPollingTransactionsByBlockResponse, - GetPollingTransactionsByAccountRequest, - GetPollingTransactionsByAccountResponse, - GetAllTransactionsResponse, -} from "@flowser/shared"; -import { TransportService } from "./transports/transport.service"; - -export class TransactionsService { - constructor(private readonly transport: TransportService) {} - - getAll(): Promise { - return this.transport.send({ - requestMethod: "GET", - resourceIdentifier: "/api/transactions", - responseProtobuf: GetAllTransactionsResponse, - }); - } - - getAllWithPolling(data: { - timestamp: number; - }): Promise { - return this.transport.send({ - requestMethod: "POST", - resourceIdentifier: "/api/transactions/polling", - requestData: data, - requestProtobuf: GetPollingTransactionsRequest, - responseProtobuf: GetPollingTransactionsResponse, - }); - } - - getAllByBlockWithPolling({ - blockId, - ...data - }: { - timestamp: number; - blockId: string; - }): Promise { - return this.transport.send({ - requestMethod: "POST", - resourceIdentifier: `/api/blocks/${blockId}/transactions/polling`, - requestData: data, - requestProtobuf: GetPollingTransactionsByBlockRequest, - responseProtobuf: GetPollingTransactionsByBlockResponse, - }); - } - - getAllByAccountWithPolling({ - accountAddress, - ...data - }: { - timestamp: number; - accountAddress: string; - }): Promise { - return this.transport.send({ - requestMethod: "POST", - resourceIdentifier: `/api/accounts/${accountAddress}/transactions/polling`, - requestData: data, - requestProtobuf: GetPollingTransactionsByAccountRequest, - responseProtobuf: GetPollingTransactionsByAccountResponse, - }); - } - - getSingle(id: string): Promise { - return this.transport.send({ - requestMethod: "GET", - resourceIdentifier: `/api/transactions/${id}`, - responseProtobuf: GetSingleTransactionResponse, - }); - } -} diff --git a/frontend/src/services/transports/http-transport.service.ts b/frontend/src/services/transports/http-transport.service.ts deleted file mode 100644 index df4062e9d..000000000 --- a/frontend/src/services/transports/http-transport.service.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { SendRequestOptions, TransportService } from "./transport.service"; -import axios, { AxiosInstance, AxiosResponse } from "axios"; -import { FlowserError } from "@flowser/shared"; - -export class HttpTransportService implements TransportService { - private axios: AxiosInstance; - - constructor() { - this.axios = axios.create({ - baseURL: process.env.REACT_APP_API_HOST || "http://localhost:6061", - }); - this.axios.interceptors.response.use( - function (response) { - // status codes within the 2xx range trigger this function - return response; - }, - function (error): FlowserError { - // status codes outside the 2xx range trigger this function - console.error("HTTP transport error"); - console.error(error); - throw ( - error.response.data.error ?? - FlowserError.fromPartial({ - message: error.response.data.message ?? "Unknown error", - }) - ); - } - ); - } - - async send( - options: SendRequestOptions - ): Promise { - const response = await this.sendRequest(options); - return options.responseProtobuf?.fromJSON(response.data); - } - - private sendRequest( - options: SendRequestOptions - ): Promise> { - const { requestMethod, requestProtobuf, requestData, resourceIdentifier } = - options; - - switch (requestMethod) { - case "GET": - return this.axios.get(resourceIdentifier); - case "DELETE": - return this.axios.delete(resourceIdentifier); - case "POST": - return this.axios.post( - resourceIdentifier, - requestProtobuf?.toJSON(requestData) ?? {} - ); - case "PUT": - return this.axios.put( - resourceIdentifier, - requestProtobuf?.toJSON(requestData) ?? {} - ); - case "PATCH": - return this.axios.patch( - resourceIdentifier, - requestProtobuf?.toJSON(requestData) ?? {} - ); - default: - throw new Error(`Unsupported request method: ${requestMethod}`); - } - } -} diff --git a/frontend/src/services/transports/transport.service.ts b/frontend/src/services/transports/transport.service.ts deleted file mode 100644 index 2c0c2832c..000000000 --- a/frontend/src/services/transports/transport.service.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { ProtobufLikeObject } from "@flowser/shared"; - -export type TransportRequestMethod = - | "GET" - | "POST" - | "PUT" - | "PATCH" - | "DELETE"; - -export type SendRequestOptions = { - requestMethod: TransportRequestMethod; - resourceIdentifier: string; - requestData?: RequestData; - requestProtobuf?: ProtobufLikeObject; - responseProtobuf?: ProtobufLikeObject; -}; - -export interface TransportService { - send( - options: SendRequestOptions - ): Promise; -} diff --git a/frontend/src/services/wallet.service.ts b/frontend/src/services/wallet.service.ts deleted file mode 100644 index 47de906cd..000000000 --- a/frontend/src/services/wallet.service.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { - SendTransactionRequest, - SendTransactionResponse, -} from "@flowser/shared"; -import { TransportService } from "./transports/transport.service"; - -export class WalletService { - constructor(private readonly transport: TransportService) {} - - sendTransaction( - request: SendTransactionRequest - ): Promise { - return this.transport.send({ - requestMethod: "POST", - resourceIdentifier: "/api/wallets/accounts/transaction", - requestData: request, - requestProtobuf: SendTransactionRequest, - responseProtobuf: SendTransactionResponse, - }); - } - - createAccount(): Promise { - return this.transport.send({ - requestMethod: "POST", - resourceIdentifier: "/api/wallets/accounts", - }); - } -} diff --git a/packages/api/package.json b/packages/api/package.json index da51794fc..d7d39711e 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -1,12 +1,9 @@ { "name": "@onflowser/api", "version": "1.0.0", - "files": ["dist"], - "main": "./dist/index.js", - "types": "./dist/index.d.ts", - "scripts": { - "build": "tsc" - }, + "files": ["src"], + "main": "./src/index.ts", + "types": "./src/index.ts", "keywords": [], "author": "", "license": "ISC", diff --git a/packages/api/src/resources.ts b/packages/api/src/resources.ts index 80d0c5e74..19c387a1b 100644 --- a/packages/api/src/resources.ts +++ b/packages/api/src/resources.ts @@ -11,6 +11,7 @@ export enum CadenceTypeKind { } export enum InteractionKind { + INTERACTION_UNKNOWN = 1, INTERACTION_SCRIPT = 1, INTERACTION_TRANSACTION = 2, } @@ -306,6 +307,11 @@ export interface FlowserProject extends TimestampedResource { id: string; name: string; emulator: FlowEmulatorConfig | undefined; + gateway: FlowGatewayConfig | undefined; +} + +export interface FlowGatewayConfig { + } export interface FlowEmulatorConfig { diff --git a/packages/api/tsconfig.json b/packages/api/tsconfig.json index a991f4ef0..562f18b2a 100644 --- a/packages/api/tsconfig.json +++ b/packages/api/tsconfig.json @@ -1,8 +1,3 @@ { - "extends": "@onflowser/config/tsconfig.json", - "include": ["src"], - "exclude": ["dist", "node_modules"], - "compilerOptions": { - "outDir": "./dist" - } + "extends": "@onflowser/config/tsconfig.json" } diff --git a/packages/config/tsconfig.json b/packages/config/tsconfig.json index d330a2a03..f6d7f85e3 100644 --- a/packages/config/tsconfig.json +++ b/packages/config/tsconfig.json @@ -19,6 +19,10 @@ "noImplicitAny": true, "strictBindCallApply": true, "forceConsistentCasingInFileNames": true, - "noFallthroughCasesInSwitch": true + "noFallthroughCasesInSwitch": true, + "esModuleInterop": true, + "allowJs": true, + "resolveJsonModule": true, + "isolatedModules": true } } diff --git a/packages/core/package.json b/packages/core/package.json index 7a95cbc29..572487c9e 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -2,8 +2,8 @@ "name": "@onflowser/core", "version": "1.0.0", "description": "", - "main": "./dist/index.js", - "types": "./dist/index.d.ts", + "main": "./src/index.ts", + "types": "./src/index.ts", "scripts": { "build": "tsc" }, diff --git a/packages/core/src/flow/fcl-values.ts b/packages/core/src/flow/fcl-value.ts similarity index 98% rename from packages/core/src/flow/fcl-values.ts rename to packages/core/src/flow/fcl-value.ts index c62b23b2a..af9b3e925 100644 --- a/packages/core/src/flow/fcl-values.ts +++ b/packages/core/src/flow/fcl-value.ts @@ -37,7 +37,7 @@ export type FclArgumentWithMetadata = { type: CadenceType; }; -export class FclValues { +export class FclValueUtils { private static readonly decimalNumberPattern = /[0-9]+\.[0-9]+/; // Builds a list of fcl encoded parameters. @@ -142,7 +142,7 @@ export class FclValues { static isFclOptionalValue(arg: unknown): arg is FclOptionalValue { return arg === undefined || this.isFclRequiredValue(arg); } - static isFclValue(arg: unknown): arg is FclValue { + static isFclValue(arg: unknown): arg is FclValueUtils { return this.isFclOptionalValue(arg) || this.isFclRequiredValue(arg); } } diff --git a/packages/core/src/flow/flow-gateway.service.ts b/packages/core/src/flow/flow-gateway.service.ts index 3ae463131..0a16734f3 100644 --- a/packages/core/src/flow/flow-gateway.service.ts +++ b/packages/core/src/flow/flow-gateway.service.ts @@ -2,8 +2,8 @@ import { FclArgBuilder, FclArgumentWithMetadata, FclTypeLookup, - FclValues, -} from "./fcl-values"; + FclValueUtils, +} from "./fcl-value"; import * as fcl from "@onflow/fcl"; import axios from "axios"; @@ -161,7 +161,7 @@ export class FlowGatewayService { return await fcl.query({ cadence: options.cadence, args: (arg: FclArgBuilder, t: FclTypeLookup) => { - const argumentFunction = FclValues.getArgumentFunction( + const argumentFunction = FclValueUtils.getArgumentFunction( options.arguments ); return argumentFunction(arg, t); @@ -180,7 +180,7 @@ export class FlowGatewayService { const transactionId = await fcl.mutate({ cadence: options.cadence, args: (arg: FclArgBuilder, t: FclTypeLookup) => { - const argumentFunction = FclValues.getArgumentFunction( + const argumentFunction = FclValueUtils.getArgumentFunction( options.arguments ); return argumentFunction(arg, t); diff --git a/packages/core/src/flow/index.ts b/packages/core/src/flow/index.ts index acc46a5dd..3bab0618e 100644 --- a/packages/core/src/flow/index.ts +++ b/packages/core/src/flow/index.ts @@ -1,4 +1,4 @@ -export * from "./fcl-values"; +export * from "./fcl-value"; export * from "./flow-cli.service"; export * from "./flow-config.service"; export * from "./flow-gateway.service"; diff --git a/packages/ui/package.json b/packages/ui/package.json index 8c332accb..2a9ae1220 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -19,6 +19,9 @@ "@types/react-helmet": "^6.1.7" }, "dependencies": { + "yup": "^0.32.11", + "@szhsin/react-menu": "4.0.3", + "formik": "^2.2.9", "@codemirror/legacy-modes": "^6.1.0", "@onflowser/api": "*", "@tanstack/react-table": "^8.5.11", diff --git a/packages/ui/src/accounts/AccountStorage/AccountStorage.tsx b/packages/ui/src/accounts/AccountStorage/AccountStorage.tsx index 8e3fb379a..3f164c797 100644 --- a/packages/ui/src/accounts/AccountStorage/AccountStorage.tsx +++ b/packages/ui/src/accounts/AccountStorage/AccountStorage.tsx @@ -1,23 +1,20 @@ import { useAnalytics } from "../../hooks/use-analytics"; import { useUrlQuery } from "../../hooks/use-url-query"; import React, { ReactElement, useEffect, useState } from "react"; -import { AnalyticEvent } from "../../../../../frontend/src/services/analytics.service"; +import { AnalyticEvent } from "../../contexts/analytics.service"; import { PublicPrivateStorageCard } from "../PublicPrivateStorageCard/PublicPrivateStorageCard"; import { InternalStorageCard } from "../InternalStorageCard/InternalStorageCard"; import classNames from "classnames"; import classes from "./AccountStorage.module.scss"; import { scrollableElementId } from "../../common/layouts/ProjectLayout/ProjectLayout"; -import { - FlowStorageDomain, - FlowAccountStorage -} from '@onflowser/api'; +import { FlowStorageDomain, FlowAccountStorage } from "@onflowser/api"; type AccountStorageProps = { - storageItems: FlowAccountStorage[]; + storageItems: FlowAccountStorage[]; }; export function AccountStorage(props: AccountStorageProps): ReactElement { - const {storageItems} = props; + const { storageItems } = props; const { track } = useAnalytics(); const urlQueryParams = useUrlQuery(); const focusedStorageId = urlQueryParams.get("focusedStorageId"); @@ -83,7 +80,6 @@ export function AccountStorage(props: AccountStorageProps): ReactElement { {privateAndPublicStorageItems.map((item) => ( diff --git a/packages/ui/src/accounts/PublicPrivateStorageCard/PublicPrivateStorageCard.tsx b/packages/ui/src/accounts/PublicPrivateStorageCard/PublicPrivateStorageCard.tsx index d36f015b5..5cc4f3bde 100644 --- a/packages/ui/src/accounts/PublicPrivateStorageCard/PublicPrivateStorageCard.tsx +++ b/packages/ui/src/accounts/PublicPrivateStorageCard/PublicPrivateStorageCard.tsx @@ -1,17 +1,15 @@ import React, { ReactElement } from "react"; import classes from "./PublicPrivateStorageCard.module.scss"; import { StorageDomainBadge } from "../StorageDomainBadge/StorageDomainBadge"; -import { AccountStorageItem } from "@flowser/shared/dist/src/generated/entities/accounts"; -import { DecoratedPollingEntity } from "frontend/src/contexts/timeout-polling.context"; import gradient from "./gradient.png"; import classNames from "classnames"; import { ProjectLink } from "../../common/links/ProjectLink"; import { FlowserIcon } from "../../common/icons/FlowserIcon"; +import { FlowAccountStorage } from "@onflowser/api"; type StorageCardProps = { currentAccountAddress: string; - enableIntroAnimation?: boolean; - storageItem: DecoratedPollingEntity; + storageItem: FlowAccountStorage; }; export const focusedStorageIdParamKey = "focusedStorageId"; @@ -19,7 +17,6 @@ export const focusedStorageIdParamKey = "focusedStorageId"; export function PublicPrivateStorageCard({ storageItem, currentAccountAddress, - enableIntroAnimation = true, }: StorageCardProps): ReactElement { const targetStorageCardUrl = getTargetStorageCardUrl({ currentAccountAddress, @@ -31,14 +28,13 @@ export function PublicPrivateStorageCard({ return (
- +
{pathIdentifier}
@@ -52,7 +48,7 @@ export function PublicPrivateStorageCard({ function getTargetStorageCardUrl(options: { currentAccountAddress: string; - storageItem: AccountStorageItem; + storageItem: FlowAccountStorage; }) { const { currentAccountAddress, storageItem } = options; diff --git a/packages/ui/src/common/overlays/dialogs/snapshot/SnapshotDialog.tsx b/packages/ui/src/common/overlays/dialogs/snapshot/SnapshotDialog.tsx index 27573402e..77c15f2be 100644 --- a/packages/ui/src/common/overlays/dialogs/snapshot/SnapshotDialog.tsx +++ b/packages/ui/src/common/overlays/dialogs/snapshot/SnapshotDialog.tsx @@ -2,11 +2,11 @@ import React, { FC, useState } from "react"; import Button from "../../../buttons/Button/Button"; import classes from "./SnapshotDialog.module.scss"; import toast from "react-hot-toast"; -import { ServiceRegistry } from "../../../../../../../frontend/src/services/service-registry"; import { Input } from "../../../inputs/Input/Input"; import { ActionDialog } from "../action/ActionDialog"; import { useErrorHandler } from "../../../../hooks/use-error-handler"; import { useCurrentProjectId } from "../../../../hooks/use-current-project-id"; +import { useServiceRegistry } from "../../../../contexts/service-registry.context"; export type SnapshotDialogProps = { show?: boolean; @@ -16,7 +16,7 @@ export type SnapshotDialogProps = { export const SnapshotDialog: FC = ({ show, setShow }) => { const projectId = useCurrentProjectId(); const { handleError } = useErrorHandler(SnapshotDialog.name); - const { snapshotService } = ServiceRegistry.getInstance(); + const { snapshotService } = useServiceRegistry(); const [loading, setLoading] = useState(false); const [description, setDescription] = useState(""); diff --git a/packages/ui/src/common/status/ExecutionStatus.tsx b/packages/ui/src/common/status/ExecutionStatus.tsx index 5a6fc40af..9d4c83924 100644 --- a/packages/ui/src/common/status/ExecutionStatus.tsx +++ b/packages/ui/src/common/status/ExecutionStatus.tsx @@ -1,5 +1,4 @@ import React, { ReactElement } from "react"; -import { ExecutionStatusCode, TransactionStatus } from "@flowser/shared"; import { FlowUtils } from "../../utils/flow-utils"; import classes from "./Status.module.scss"; import { ReactComponent as ExpiredIcon } from "../icons/assets/circle-cross.svg"; @@ -8,6 +7,7 @@ import { ReactComponent as UnknownIcon } from "../icons/assets/circle-question-m import { ReactComponent as PendingIcon } from "../icons/assets/pending-tx-icon.svg"; import { ReactComponent as FinalizedIcon } from "../icons/assets/finalised-tx-icon.svg"; import { ReactComponent as ExecutedIcon } from "../icons/assets/executed-tx-icon.svg"; +import { ExecutionStatusCode, TransactionStatus } from '@onflowser/api'; export type ExecutionStatusProps = { status: TransactionStatus | undefined; diff --git a/frontend/src/services/analytics.service.ts b/packages/ui/src/contexts/analytics.service.ts similarity index 94% rename from frontend/src/services/analytics.service.ts rename to packages/ui/src/contexts/analytics.service.ts index 1261f99c2..68165834e 100644 --- a/frontend/src/services/analytics.service.ts +++ b/packages/ui/src/contexts/analytics.service.ts @@ -1,5 +1,5 @@ import mixpanel, { Dict } from "mixpanel-browser"; -import { FingerprintService } from "./fingerprint.service"; +import { FingerprintService } from "../../../../frontend/src/services/fingerprint.service"; export enum AnalyticEvent { PAGE_VIEW = "page_view", diff --git a/packages/ui/src/contexts/flowser-api.context.tsx b/packages/ui/src/contexts/flowser-api.context.tsx index a3b1c1466..1df05a28c 100644 --- a/packages/ui/src/contexts/flowser-api.context.tsx +++ b/packages/ui/src/contexts/flowser-api.context.tsx @@ -14,8 +14,8 @@ import { FlowStateSnapshot, FlowTransaction, InteractionTemplate, - ManagedProcessOutput, -} from "@onflowser/api"; + ManagedProcessOutput, ParsedInteractionOrError +} from '@onflowser/api'; type FlowserHooksApi = { useGetAccounts(): SWRResponse; @@ -47,7 +47,7 @@ type FlowserHooksApi = { // by undefined parsed interaction every time the source code changes. useGetParsedInteraction( request: InteractionDefinition - ): SWRResponse; + ): SWRResponse; useGetFlowCliInfo(): SWRResponse; useGetAddressIndex(options: { address: string; diff --git a/packages/ui/src/contexts/projects.context.tsx b/packages/ui/src/contexts/projects.context.tsx index 674d6aab6..22be41a51 100644 --- a/packages/ui/src/contexts/projects.context.tsx +++ b/packages/ui/src/contexts/projects.context.tsx @@ -1,15 +1,15 @@ import React, { createContext, ReactElement, useContext } from "react"; import toast from "react-hot-toast"; import { useConfirmDialog } from "./confirm-dialog.context"; -import { ServiceRegistry } from "../../../../frontend/src/services/service-registry"; import { useFlowserHooksApi } from "./flowser-api.context"; import { useAnalytics } from "../hooks/use-analytics"; -import { AnalyticEvent } from "../../../../frontend/src/services/analytics.service"; +import { AnalyticEvent } from "./analytics.service"; import { useNavigate } from "react-router-dom"; import { Helmet } from "react-helmet"; import { useErrorHandler } from "../hooks/use-error-handler"; import { useCurrentProjectId } from "../hooks/use-current-project-id"; import { FlowserProject } from "@onflowser/api"; +import { useServiceRegistry } from "./service-registry.context"; export type ProjectsManager = { currentProject: FlowserProject | undefined; @@ -19,6 +19,8 @@ export type ProjectsManager = { options?: StartProjectOptions ) => Promise; removeProject: (project: FlowserProject) => void; + updateProject: (project: FlowserProject) => Promise; + createProject: (project: FlowserProject) => Promise; }; type StartProjectOptions = { replaceCurrentPage: boolean }; @@ -32,7 +34,7 @@ export function ProjectsManagerProvider({ }: { children: ReactElement; }): ReactElement { - const { projectsService } = ServiceRegistry.getInstance(); + const { projectsService } = useServiceRegistry(); const { track } = useAnalytics(); const navigate = useNavigate(); @@ -47,7 +49,7 @@ export function ProjectsManagerProvider({ track(AnalyticEvent.PROJECT_REMOVED, { projectName: project.name }); try { - await toast.promise(projectsService.removeProject(project.id), { + await toast.promise(projectsService.remove(project.id), { loading: "Deleting project", error: `Failed to delete project "${project.name}"`, success: `Project "${project.name}" deleted!`, @@ -117,10 +119,26 @@ export function ProjectsManagerProvider({ } } + async function createProject( + project: FlowserProject + ): Promise { + // TODO(restructure): Implement + return project; + } + + async function updateProject( + project: FlowserProject + ): Promise { + // TODO(restructure): Implement + return project; + } + return ( - {currentProject?.project - ? `Flowser - ${currentProject?.project?.name}` - : "Flowser"} + {currentProject ? `Flowser - ${currentProject?.name}` : "Flowser"} {children} diff --git a/packages/ui/src/contexts/service-registry.context.tsx b/packages/ui/src/contexts/service-registry.context.tsx new file mode 100644 index 000000000..504e1edf2 --- /dev/null +++ b/packages/ui/src/contexts/service-registry.context.tsx @@ -0,0 +1,45 @@ +import { createContext, useContext } from "react"; +import { AnalyticsService } from "./analytics.service"; +import { FlowserProject } from "@onflowser/api"; + +interface FlowserWalletService { + // TODO(restructure): Provide request/response type + sendTransaction(request: any): Promise; + createAccount(): Promise; +} + +interface SnapshotService { + // TODO(restructure): Provide request/response type + create(request: any): Promise; + checkoutBlock(request: any): Promise; +} + +interface FlowserProjectService { + remove(projectId: string): Promise; + // TODO(restructure): Can we remove these methods + unUseCurrentProject(): Promise; + useProject(projectId: string): Promise; + getSingle(projectId: string): Promise; + getDefaultProjectInfo(): Promise; +} + +type ServiceRegistry = { + walletService: FlowserWalletService; + snapshotService: SnapshotService; + projectsService: FlowserProjectService; + analyticsService: AnalyticsService; +}; + +const ServiceRegistryContext = createContext( + undefined as never +); + +export function useServiceRegistry() { + const context = useContext(ServiceRegistryContext); + + if (context === undefined) { + throw new Error("ServiceRegistryContext not found"); + } + + return context; +} diff --git a/packages/ui/src/contexts/snapshots.context.tsx b/packages/ui/src/contexts/snapshots.context.tsx index 3e9946a36..2d7318fd7 100644 --- a/packages/ui/src/contexts/snapshots.context.tsx +++ b/packages/ui/src/contexts/snapshots.context.tsx @@ -8,17 +8,15 @@ import React, { } from "react"; import toast from "react-hot-toast"; import { useConfirmDialog } from "./confirm-dialog.context"; -import { ServiceRegistry } from "../../../../frontend/src/services/service-registry"; -import { - useFlowserHooksApi, -} from "./flowser-api.context"; +import { useFlowserHooksApi } from "./flowser-api.context"; import { useErrorHandler } from "../hooks/use-error-handler"; import { useAnalytics } from "../hooks/use-analytics"; -import { AnalyticEvent } from "../../../../frontend/src/services/analytics.service"; +import { AnalyticEvent } from "./analytics.service"; import { FlowUtils } from "../utils/flow-utils"; import { SnapshotDialog } from "../common/overlays/dialogs/snapshot/SnapshotDialog"; import { useProjectManager } from "./projects.context"; -import { FlowBlock, FlowStateSnapshot } from '@onflowser/api'; +import { FlowBlock, FlowStateSnapshot } from "@onflowser/api"; +import { useServiceRegistry } from "./service-registry.context"; export type SnapshotsManager = { createSnapshot: () => void; @@ -34,7 +32,7 @@ export function SnapshotsManagerProvider({ }: { children: ReactElement; }): ReactElement { - const { snapshotService } = ServiceRegistry.getInstance(); + const { snapshotService } = useServiceRegistry(); const { track } = useAnalytics(); const { handleError } = useErrorHandler(SnapshotsManagerProvider.name); diff --git a/packages/ui/src/contexts/timeout-polling.context.tsx b/packages/ui/src/contexts/timeout-polling.context.tsx deleted file mode 100644 index 626177785..000000000 --- a/packages/ui/src/contexts/timeout-polling.context.tsx +++ /dev/null @@ -1,166 +0,0 @@ -import React, { - createContext, - ReactElement, - useContext, - useEffect, - useMemo, - useRef, -} from "react"; -import { PollingEntity, PollingResponse } from "@flowser/shared"; -import { useQuery } from "react-query"; - -export interface TimeoutPollingHook { - stopPolling: () => void; - startPolling: () => void; - refresh: () => void; - isFetching: boolean; - firstFetch: boolean; - error: Error | null; - data: DecoratedPollingEntity[]; -} - -export type DecoratedPollingEntity = T & { - isNew: boolean; - isUpdated: boolean; -}; - -type UseTimeoutPollingProps< - Entity extends PollingEntity, - Response extends PollingResponse -> = { - resourceKey: string; - fetcher: (params: { timestamp: number }) => Promise; - interval?: number; - newestFirst?: boolean; - enabled?: boolean; -}; - -export type TimeoutPolingState = { - enabled: boolean; - lastTimeoutPollingLookup: Map; - setTimeoutPolling: (resourceKey: string, timestamp: number) => void; -}; - -const TimeoutPollingContext = createContext({} as TimeoutPolingState); - -export function useTimeoutPollingState(): TimeoutPolingState { - return useContext(TimeoutPollingContext); -} - -export function useProjectTimeoutPolling< - Entity extends PollingEntity, - Response extends PollingResponse ->(props: UseTimeoutPollingProps): TimeoutPollingHook { - // TODO(react-query): Temporary disable initial load checks as they are causing issues - // See: https://www.notion.so/flowser/react-query-weird-behavior-d40ea15498b740b6899be3e42cb32945?pvs=4 - // const { isInitialLoad, error: initialLoadError } = useGatewayStatus(); - - const timeoutPollingState = useTimeoutPolling({ - ...props, - // enabled: !isInitialLoad, - }); - - return { - ...timeoutPollingState, - // error: initialLoadError || timeoutPollingState.error, - // firstFetch: timeoutPollingState.firstFetch, - }; -} - -export function useTimeoutPolling< - Entity extends PollingEntity, - Response extends PollingResponse ->(props: UseTimeoutPollingProps): TimeoutPollingHook { - const { enabled = true } = props; - const { - lastTimeoutPollingLookup, - setTimeoutPolling, - enabled: isGloballyEnabled, - } = useTimeoutPollingState(); - const lastPollingTime = lastTimeoutPollingLookup.get(props.resourceKey) ?? 0; - const { - data: response, - isFetching, - error, - } = useQuery, Error>( - props.resourceKey, - () => props.fetcher({ timestamp: 0 }), - { - refetchInterval: props.interval ?? 2000, - enabled: isGloballyEnabled && enabled, - } - ); - - const data = useMemo( - () => remapWithMetadata(response?.data, lastPollingTime), - [response, lastPollingTime] - ); - - useEffect(() => { - if (data) { - setTimeoutPolling(props.resourceKey, findMaxTimestamp(response?.data)); - } - }, [data, response?.data]); - - return { - data, - firstFetch: !response && isFetching, - startPolling: () => null, - stopPolling: () => null, - refresh: () => null, - isFetching, - error, - }; -} - -export function TimeoutPollingProvider({ - children, - enabled = true, -}: { - enabled?: boolean; - children: ReactElement; -}): ReactElement { - const lastPollingTimeLookupRef = useRef(new Map()); - - function setTimeoutPolling(resourceKey: string, timestamp: number) { - lastPollingTimeLookupRef.current.set(resourceKey, timestamp); - } - - return ( - - {children} - - ); -} - -const toTimestamp = (date: string) => new Date(date).getTime(); - -function remapWithMetadata( - data: T[] | undefined, - lastPollingTime: number -): DecoratedPollingEntity[] { - return ( - data?.map((item) => ({ - isNew: toTimestamp(item.createdAt) > lastPollingTime, - isUpdated: toTimestamp(item.updatedAt) > lastPollingTime, - ...item, - })) ?? [] - ); -} - -function findMaxTimestamp(data: T[] | undefined) { - const createdTimestamps = - data?.map((item) => toTimestamp(item.createdAt)) ?? []; - const updatedTimestamps = - data?.map((item) => toTimestamp(item.updatedAt)) ?? []; - const allTimestamps = [...createdTimestamps, ...updatedTimestamps]; - const maxTimestamp = Math.max(...allTimestamps); - const minTimestamp = 0; - return Math.max(maxTimestamp, minTimestamp); -} diff --git a/packages/ui/src/events/EventOriginLink/EventOriginLink.tsx b/packages/ui/src/events/EventOriginLink/EventOriginLink.tsx index 661a84ad7..16c04440d 100644 --- a/packages/ui/src/events/EventOriginLink/EventOriginLink.tsx +++ b/packages/ui/src/events/EventOriginLink/EventOriginLink.tsx @@ -1,10 +1,10 @@ -import { Event } from "@flowser/shared"; import { ProjectLink } from "../../common/links/ProjectLink"; import { ExternalLink } from "../../common/links/ExternalLink/ExternalLink"; import React, { ReactElement } from "react"; import { EventUtils } from "../utils"; +import { FlowEvent } from '@onflowser/api'; -export function EventOriginLink(props: { event: Event }): ReactElement { +export function EventOriginLink(props: { event: FlowEvent }): ReactElement { const { type } = props.event; const { contractName, contractAddress } = EventUtils.parseFullEventType(type); diff --git a/packages/ui/src/events/EventsTable/EventsTable.tsx b/packages/ui/src/events/EventsTable/EventsTable.tsx index d9a14422d..6619e7ec3 100644 --- a/packages/ui/src/events/EventsTable/EventsTable.tsx +++ b/packages/ui/src/events/EventsTable/EventsTable.tsx @@ -4,9 +4,7 @@ import Label from "../../common/misc/Label/Label"; import Value from "../../common/misc/Value/Value"; import { MiddleEllipsis } from "../../common/ellipsis/MiddleEllipsis"; import { createColumnHelper } from "@tanstack/table-core"; -import { Event } from "@flowser/shared"; import { BaseTable } from "../../common/misc/BaseTable/BaseTable"; -import { DecoratedPollingEntity } from "frontend/src/contexts/timeout-polling.context"; import { ProjectLink } from "../../common/links/ProjectLink"; import { EventOriginLink } from "../EventOriginLink/EventOriginLink"; import { EventUtils } from "../utils"; diff --git a/packages/ui/src/hooks/use-analytics.ts b/packages/ui/src/hooks/use-analytics.ts index 855b9c0d3..bdef23dca 100644 --- a/packages/ui/src/hooks/use-analytics.ts +++ b/packages/ui/src/hooks/use-analytics.ts @@ -1,10 +1,10 @@ import { useEffect } from "react"; -import { ServiceRegistry } from "../../../../frontend/src/services/service-registry"; import { useLocalStorage } from "@uidotdev/usehooks"; -import { AnalyticEvent } from "../../../../frontend/src/services/analytics.service"; +import { AnalyticEvent } from "../contexts/analytics.service"; import { Dict } from "mixpanel-browser"; import { useFlowserHooksApi } from "../contexts/flowser-api.context"; import { useCurrentProjectId } from "./use-current-project-id"; +import { useServiceRegistry } from "../contexts/service-registry.context"; type Analytics = { setIsConsented: (isConsented: boolean) => void; @@ -13,7 +13,7 @@ type Analytics = { }; export function useAnalytics(): Analytics { - const { analyticsService } = ServiceRegistry.getInstance(); + const { analyticsService } = useServiceRegistry(); const [isConsented, setIsConsented] = useLocalStorage( "consent-analytics", undefined @@ -33,7 +33,7 @@ export function useAnalytics(): Analytics { function track(event: AnalyticEvent, properties?: Dict) { return analyticsService.track(event, { ...properties, - projectName: currentProject.name, + projectName: currentProject?.name, }); } diff --git a/packages/ui/src/index.ts b/packages/ui/src/index.ts index c3e9227a9..e38c24015 100644 --- a/packages/ui/src/index.ts +++ b/packages/ui/src/index.ts @@ -1,6 +1,6 @@ -// export * from "./transactions/TransactionOverview/TransactionOverview"; -// export * from "./transactions/TransactionsTable/TransactionsTable"; +export * from "./transactions/TransactionOverview/TransactionOverview"; +export * from "./transactions/TransactionsTable/TransactionsTable"; +export * from "./transactions/TransactionDetailsTabs/TransactionDetailsTabs"; // export * from "./transactions/TransactionSource/TransactionSource"; -// export * from "./transactions/TransactionDetailsTabs/TransactionDetailsTabs"; export * from "./accounts/AccountName/AccountName"; diff --git a/packages/ui/src/interactions/components/ExecutionSettings/ExecutionSettings.tsx b/packages/ui/src/interactions/components/ExecutionSettings/ExecutionSettings.tsx index b39e6fd97..638f0b6a8 100644 --- a/packages/ui/src/interactions/components/ExecutionSettings/ExecutionSettings.tsx +++ b/packages/ui/src/interactions/components/ExecutionSettings/ExecutionSettings.tsx @@ -1,20 +1,15 @@ import React, { ReactElement, useEffect } from "react"; import { SizedBox } from "../../../common/misc/SizedBox/SizedBox"; import { ParamBuilder, ParamListBuilder } from "../ParamBuilder/ParamBuilder"; -import { - CadenceTypeKind, - FclValue, - FclValues, - InteractionKind, - Parameter, -} from "@flowser/shared"; import classes from "./ExecutionSettings.module.scss"; import { LoaderButton } from "../../../common/buttons/LoaderButton/LoaderButton"; import { useInteractionOutcomeManager } from "../../contexts/outcome.context"; import { useInteractionDefinitionManager } from "../../contexts/definition.context"; import { Callout } from "../../../common/misc/Callout/Callout"; import { ExternalLink } from "../../../common/links/ExternalLink/ExternalLink"; -import { TransactionOptions } from "packages/ui/src/interactions/core/core-types"; +import { CadenceType, CadenceTypeKind, InteractionKind } from "@onflowser/api"; +import { TransactionOptions } from "../../core/core-types"; +import { FclValue, FclValueUtils } from "@onflowser/core"; export function ExecutionSettings(): ReactElement { return ( @@ -198,6 +193,14 @@ const initialTransactionOptions: TransactionOptions = { payerAddress: "", }; +const defaultCadenceType: CadenceType = { + rawType: "", + optional: false, + array: undefined, + dictionary: undefined, + kind: CadenceTypeKind.CADENCE_TYPE_UNKNOWN, +}; + function SigningSettings() { const { definition, partialUpdate } = useInteractionDefinitionManager(); @@ -215,12 +218,13 @@ function SigningSettings() {

Signing

setTransactionOptions({ @@ -233,12 +237,13 @@ function SigningSettings() { /> setTransactionOptions({ payerAddress: payerAddress as string }) @@ -281,7 +286,7 @@ function AuthorizerSettings() { }, [expectedAuthorizerCount, authorizerAddresses]); function setProposerByIndex(address: FclValue, index: number) { - if (!FclValues.isFclAddressValue(address)) { + if (!FclValueUtils.isFclAddressValue(address)) { throw new Error("Expected address value"); } const newAuthorizers = [...authorizerAddresses]; @@ -298,14 +303,15 @@ function AuthorizerSettings() { 1 ? index + 1 : "" }`, type: { + ...defaultCadenceType, kind: CadenceTypeKind.CADENCE_TYPE_ADDRESS, }, - })} + }} value={proposer} setValue={(payerAddress) => setProposerByIndex(payerAddress, index)} addressBuilderOptions={{ diff --git a/packages/ui/src/interactions/components/InteractionHistory/InteractionHistory.tsx b/packages/ui/src/interactions/components/InteractionHistory/InteractionHistory.tsx index bbec682ef..0f9127d55 100644 --- a/packages/ui/src/interactions/components/InteractionHistory/InteractionHistory.tsx +++ b/packages/ui/src/interactions/components/InteractionHistory/InteractionHistory.tsx @@ -3,7 +3,6 @@ import classes from "./InteractionHistory.module.scss"; import { useFlowserHooksApi, } from "../../../contexts/flowser-api.context"; -import { Block, Transaction } from "@flowser/shared"; import { FlowserIcon } from "../../../common/icons/FlowserIcon"; import { SizedBox } from "../../../common/misc/SizedBox/SizedBox"; import { Spinner } from "../../../common/loaders/Spinner/Spinner"; @@ -13,6 +12,7 @@ import { MenuItem } from "@szhsin/react-menu"; import { FlowserMenu } from "../../../common/overlays/Menu/Menu"; import { GrcpStatusIcon } from "../../../common/status/GrcpStatus"; import { useSnapshotsManager } from "../../../contexts/snapshots.context"; +import { FlowBlock, FlowTransaction } from '@onflowser/api'; export function InteractionHistory(): ReactElement { const api = useFlowserHooksApi(); @@ -37,7 +37,7 @@ export function InteractionHistory(): ReactElement { } type BlockItemProps = { - block: Block; + block: FlowBlock; }; function BlockItem(props: BlockItemProps) { @@ -117,8 +117,8 @@ function BlockItem(props: BlockItemProps) { } type BlockItemContentProps = { - block: Block; - transaction: Transaction | undefined; + block: FlowBlock; + transaction: FlowTransaction | undefined; }; function BlockItemContent(props: BlockItemContentProps) { diff --git a/packages/ui/src/interactions/components/InteractionIcon/InteractionIcon.tsx b/packages/ui/src/interactions/components/InteractionIcon/InteractionIcon.tsx index 8632f1d14..12de1d495 100644 --- a/packages/ui/src/interactions/components/InteractionIcon/InteractionIcon.tsx +++ b/packages/ui/src/interactions/components/InteractionIcon/InteractionIcon.tsx @@ -1,7 +1,7 @@ import React, { ReactElement } from "react"; -import { InteractionKind } from "@flowser/shared"; import { FlowserIcon } from "../../../common/icons/FlowserIcon"; import classes from "./InteractionIcon.module.scss"; +import { InteractionKind } from '@onflowser/api'; type InteractionIconProps = { interactionKind: InteractionKind; diff --git a/packages/ui/src/interactions/components/InteractionOutcomeDisplay/InteractionOutcomeDisplay.tsx b/packages/ui/src/interactions/components/InteractionOutcomeDisplay/InteractionOutcomeDisplay.tsx index 3345b2393..6b714307e 100644 --- a/packages/ui/src/interactions/components/InteractionOutcomeDisplay/InteractionOutcomeDisplay.tsx +++ b/packages/ui/src/interactions/components/InteractionOutcomeDisplay/InteractionOutcomeDisplay.tsx @@ -2,20 +2,18 @@ import React, { ReactElement, useEffect, useState } from "react"; import { useInteractionOutcomeManager } from "../../contexts/outcome.context"; import { ScriptError } from "../../../common/status/ErrorMessage"; import { JsonView } from "../../../common/code/JsonView/JsonView"; -import { - useFlowserHooksApi, -} from '../../../contexts/flowser-api.context'; +import { useFlowserHooksApi } from "../../../contexts/flowser-api.context"; import classes from "./InteractionOutcomeDisplay.module.scss"; import { BaseTabItem } from "../../../common/tabs/BaseTabs/BaseTabs"; import { Callout } from "../../../common/misc/Callout/Callout"; import { useInteractionDefinitionManager } from "../../contexts/definition.context"; -import { InteractionKind } from "@flowser/shared"; import { ExternalLink } from "../../../common/links/ExternalLink/ExternalLink"; import { LineSeparator } from "../../../common/misc/LineSeparator/LineSeparator"; import { SpinnerWithLabel } from "../../../common/loaders/Spinner/SpinnerWithLabel"; import { StyledTabs } from "../../../common/tabs/StyledTabs/StyledTabs"; import { TransactionDetailsTabs } from "../../../transactions/TransactionDetailsTabs/TransactionDetailsTabs"; import { ScriptOutcome, TransactionOutcome } from "../../core/core-types"; +import { InteractionKind } from "@onflowser/api"; export function InteractionOutcomeDisplay(): ReactElement { const { outcome } = useInteractionOutcomeManager(); @@ -98,7 +96,7 @@ function EmptyState() { function TransactionOutcomeDisplay(props: { outcome: TransactionOutcome }) { const { outcome } = props; - const api = useFlowserHooksApi() + const api = useFlowserHooksApi(); const { data: transaction } = api.useGetTransaction(outcome.transactionId!); if (!transaction) { diff --git a/packages/ui/src/interactions/components/ParamBuilder/ParamBuilder.tsx b/packages/ui/src/interactions/components/ParamBuilder/ParamBuilder.tsx index a3ca633a0..dc592e988 100644 --- a/packages/ui/src/interactions/components/ParamBuilder/ParamBuilder.tsx +++ b/packages/ui/src/interactions/components/ParamBuilder/ParamBuilder.tsx @@ -1,13 +1,13 @@ import React from "react"; -import { Parameter } from "@flowser/shared"; import { ReactElement } from "react"; import { ValueBuilder } from "../ValueBuilder/ValueBuilder"; import { InteractionParameterBuilder } from "../../contexts/definition.context"; import classes from "./ParamBuilder.module.scss"; import { CadenceValueBuilder } from "../ValueBuilder/interface"; +import { CadenceParameter } from "@onflowser/api"; export type ParameterListBuilderProps = InteractionParameterBuilder & { - parameters: Parameter[]; + parameters: CadenceParameter[]; }; export function ParamListBuilder( @@ -29,7 +29,7 @@ export function ParamListBuilder( } export type ParameterBuilderProps = Omit & { - parameter: Parameter; + parameter: CadenceParameter; }; export function ParamBuilder(props: ParameterBuilderProps): ReactElement { diff --git a/packages/ui/src/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.tsx b/packages/ui/src/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.tsx index 73fdd6dd2..52c1d3924 100644 --- a/packages/ui/src/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.tsx +++ b/packages/ui/src/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.tsx @@ -1,4 +1,4 @@ -import React, { ReactElement, useEffect, useMemo, useState } from "react"; +import React, { ReactElement, useEffect, useState } from "react"; import classes from "./AddressBuilder.module.scss"; import { CadenceValueBuilder } from "../interface"; import { useFlowserHooksApi } from "../../../../contexts/flowser-api.context"; @@ -6,17 +6,18 @@ import { AccountAvatar } from "../../../../accounts/AccountAvatar/AccountAvatar" import { AccountName } from "../../../../accounts/AccountName/AccountName"; import { FlowserIcon } from "../../../../common/icons/FlowserIcon"; import classNames from "classnames"; -import { ServiceRegistry } from "../../../../../../../frontend/src/services/service-registry"; import { Spinner } from "../../../../common/loaders/Spinner/Spinner"; -import { FclValues } from "@onflowser/core"; +import { FclValueUtils } from "@onflowser/core"; import { FlowAccount } from "@onflowser/api"; +import { useServiceRegistry } from "../../../../contexts/service-registry.context"; export function AddressBuilder(props: CadenceValueBuilder): ReactElement { const { disabled, value, setValue, addressBuilderOptions } = props; const { useGetAccounts } = useFlowserHooksApi(); const { data, mutate } = useGetAccounts(); + const { walletService } = useServiceRegistry(); const managedAccounts = addressBuilderOptions?.showManagedAccountsOnly - ? data.filter((account) => + ? data?.filter((account) => account.keys.some((key) => key.privateKey !== "") ) : data; @@ -26,15 +27,14 @@ export function AddressBuilder(props: CadenceValueBuilder): ReactElement { useEffect(() => { const serviceAddress = "0xf8d6e0586b0a20c7"; const defaultAccount = - managedAccounts.find((account) => account.address === serviceAddress) ?? - managedAccounts[0]; - if (!FclValues.isFclAddressValue(value) && defaultAccount) { + managedAccounts?.find((account) => account.address === serviceAddress) ?? + managedAccounts?.[0]; + if (!FclValueUtils.isFclAddressValue(value) && defaultAccount) { setValue(defaultAccount.address); } }); async function createNewAccount() { - const { walletService } = ServiceRegistry.getInstance(); await walletService.createAccount(); await mutate(); } @@ -42,7 +42,7 @@ export function AddressBuilder(props: CadenceValueBuilder): ReactElement { return (
- {managedAccounts.map((account) => ( + {managedAccounts?.map((account) => ( ) => void; }; -export type FclValueLookupByIdentifier = Map; - export type InteractionParameterBuilder = { fclValuesByIdentifier: FclValueLookupByIdentifier; setFclValue: (identifier: string, value: FclValue) => void; diff --git a/packages/ui/src/interactions/contexts/outcome.context.tsx b/packages/ui/src/interactions/contexts/outcome.context.tsx index 62dc9baaa..4b2fb39ae 100644 --- a/packages/ui/src/interactions/contexts/outcome.context.tsx +++ b/packages/ui/src/interactions/contexts/outcome.context.tsx @@ -1,4 +1,3 @@ -import { ServiceRegistry } from "../../../../../frontend/src/services/service-registry"; import React, { createContext, ReactElement, @@ -8,18 +7,17 @@ import React, { } from "react"; import { CommonUtils } from "../../utils/common-utils"; import * as fcl from "@onflow/fcl"; -import { - InteractionKind, - FclValues, - FclArgBuilder, - FclTypeLookup, - FclArgumentWithMetadata, - TransactionArgument, -} from "@flowser/shared"; import { useInteractionDefinitionManager } from "./definition.context"; import toast from "react-hot-toast"; import { useQuery } from "react-query"; import { InteractionDefinition, InteractionOutcome } from "../core/core-types"; +import { FlowTransactionArgument, InteractionKind } from '@onflowser/api'; +import { + FclArgBuilder, + FclArgumentWithMetadata, + FclTypeLookup, FclValueUtils +} from '@onflowser/core'; +import { useServiceRegistry } from '../../contexts/service-registry.context'; type InteractionOutcomeManager = { outcome: InteractionOutcome | undefined; @@ -33,7 +31,7 @@ export function InteractionOutcomeManagerProvider(props: { }): ReactElement { const { definition, fclValuesByIdentifier, parsedInteraction } = useInteractionDefinitionManager(); - const { walletService } = ServiceRegistry.getInstance(); + const { walletService } = useServiceRegistry(); const { data, refetch } = useQuery( `/interactions/execute/${JSON.stringify(definition)}`, async () => { @@ -111,7 +109,7 @@ export function InteractionOutcomeManagerProvider(props: { proposerAddress: transactionOptions.proposerAddress, payerAddress: transactionOptions.payerAddress, arguments: parsedInteraction.parameters.map( - (parameter): TransactionArgument => { + (parameter): FlowTransactionArgument => { if (!parameter.type) { throw new Error("Expecting parameter type"); } @@ -162,7 +160,7 @@ export function InteractionOutcomeManagerProvider(props: { }; } ); - const argumentFunction = FclValues.getArgumentFunction(fclArguments); + const argumentFunction = FclValueUtils.getArgumentFunction(fclArguments); return argumentFunction(arg, t); }, }); diff --git a/packages/ui/src/interactions/contexts/templates.context.tsx b/packages/ui/src/interactions/contexts/templates.context.tsx index 48c74a7f8..744f34e49 100644 --- a/packages/ui/src/interactions/contexts/templates.context.tsx +++ b/packages/ui/src/interactions/contexts/templates.context.tsx @@ -1,7 +1,7 @@ import React, { createContext, ReactElement, useContext, useMemo } from "react"; import { useFlowserHooksApi } from "../../contexts/flowser-api.context"; import { InteractionDefinition } from "../core/core-types"; -import { FclValue } from "@onflowser/core"; +import { FclValueUtils } from "@onflowser/core"; import { useLocalStorage } from "@uidotdev/usehooks"; import * as crypto from "crypto"; @@ -23,7 +23,7 @@ export type InteractionDefinitionTemplate = InteractionDefinition & { type RawInteractionDefinitionTemplate = { name: string; code: string; - fclValuesByIdentifier: Record; + fclValuesByIdentifier: Record; transactionOptions: TransactionOptions | undefined; createdDate: string; updatedDate: string; diff --git a/packages/ui/src/projects/FormFields/FormFields.tsx b/packages/ui/src/projects/FormFields/FormFields.tsx index f0fd97110..e37af087a 100644 --- a/packages/ui/src/projects/FormFields/FormFields.tsx +++ b/packages/ui/src/projects/FormFields/FormFields.tsx @@ -2,11 +2,11 @@ import { CommonUtils } from "../../utils/common-utils"; import RadioButton from "../../common/buttons/RadioButton/RadioButton"; import React, { ReactElement } from "react"; import { Input, InputProps } from "../../common/inputs/Input/Input"; -import { Project } from "@flowser/shared"; import classNames from "classnames"; import classes from "./FormFields.module.scss"; import ToggleButton from "../../common/buttons/ToggleButton/ToggleButton"; import { FormikErrors } from "formik"; +import { FlowserProject } from '@onflowser/api'; export type FieldProps = InputProps & { label?: string; @@ -15,8 +15,8 @@ export type FieldProps = InputProps & { className?: string; formik: { handleChange: (e: React.ChangeEvent) => void; - values: Project; - errors: FormikErrors; + values: FlowserProject; + errors: FormikErrors; setFieldValue: ( field: string, value: unknown, diff --git a/packages/ui/src/projects/ProjectSettings/ProjectSettings.tsx b/packages/ui/src/projects/ProjectSettings/ProjectSettings.tsx index 8bccfd4e0..1a314b69c 100644 --- a/packages/ui/src/projects/ProjectSettings/ProjectSettings.tsx +++ b/packages/ui/src/projects/ProjectSettings/ProjectSettings.tsx @@ -7,15 +7,8 @@ import FullScreenLoading from "../../common/loaders/FullScreenLoading/FullScreen import { toast } from "react-hot-toast"; import classNames from "classnames"; import { useFlowserHooksApi } from "../../contexts/flowser-api.context"; -import { - Emulator, - Gateway, - Project, - UpdateProjectResponse, -} from "@flowser/shared"; import { FlowUtils } from "../../utils/flow-utils"; import * as yup from "yup"; -import { ServiceRegistry } from "../../../../../frontend/src/services/service-registry"; import { useErrorHandler } from "../../hooks/use-error-handler"; import { useProjectManager } from "../../contexts/projects.context"; import { SettingsSection } from "../SettingsSection/SettingsSection"; @@ -27,9 +20,15 @@ import { ToggleField, } from "../FormFields/FormFields"; import { usePlatformAdapter } from "../../contexts/platform-adapter.context"; -import { AnalyticEvent } from "../../../../../frontend/src/services/analytics.service"; +import { AnalyticEvent } from "../../contexts/analytics.service"; import { useAnalytics } from "../../hooks/use-analytics"; -import { HashAlgorithm, SignatureAlgorithm } from "@onflowser/api"; +import { + FlowEmulatorConfig, + FlowserProject, + HashAlgorithm, + SignatureAlgorithm, +} from "@onflowser/api"; +import { useServiceRegistry } from "../../contexts/service-registry.context"; const projectSchema = yup.object().shape({ name: yup.string().required("Required"), @@ -44,25 +43,23 @@ export const ProjectSettings: FunctionComponent = ( props ) => { const { projectId } = props; - const projectService = ServiceRegistry.getInstance().projectsService; + const { projectsService } = useServiceRegistry(); const [isLoading, setIsLoading] = useState(true); const api = useFlowserHooksApi(); const { track } = useAnalytics(); const { onPickProjectPath } = usePlatformAdapter(); - const { startProject, removeProject } = useProjectManager(); + const { startProject, removeProject, createProject, updateProject } = + useProjectManager(); const { data: flowCliInfo } = api.useGetFlowCliInfo(); const { handleError } = useErrorHandler(ProjectSettings.name); const isExistingProject = Boolean(projectId); - const formik = useFormik({ + const formik = useFormik({ validationSchema: projectSchema, validateOnChange: false, - initialValues: Project.fromPartial({ - filesystemPath: "", - emulator: Emulator.fromPartial({}), - gateway: Gateway.fromPartial({}), - }), + // Initial value is set in a hook bellow. + initialValues: {} as FlowserProject, onSubmit: async () => { toast.promise(saveAndStartProject(), { loading: "Running project", @@ -77,22 +74,18 @@ export const ProjectSettings: FunctionComponent = ( track(AnalyticEvent.PROJECT_CREATED); } - let response: UpdateProjectResponse; + let updatedProject: FlowserProject; try { - response = isExistingProject - ? await projectService.updateProject(formik.values) - : await projectService.createProject(formik.values); + updatedProject = isExistingProject + ? await updateProject(formik.values) + : await createProject(formik.values); } catch (e) { handleError(e); window.scrollTo(0, 0); throw e; } - const { project } = response; - if (!project) { - throw new Error("Expected project in response"); - } - await startProject(project, { + await startProject(updatedProject, { replaceCurrentPage: true, }); } @@ -119,8 +112,7 @@ export const ProjectSettings: FunctionComponent = ( async function loadExistingProject(id: string) { try { - const existingProjectData = await projectService.getSingle(id); - const existingProject = existingProjectData.project; + const existingProject = await projectsService.getSingle(id); if (existingProject) { formik.setValues(existingProject, false); } @@ -134,8 +126,7 @@ export const ProjectSettings: FunctionComponent = ( async function loadDefaultProject() { try { - const defaultProjectData = await projectService.getDefaultProjectInfo(); - const defaultProject = defaultProjectData.project; + const defaultProject = await projectsService.getDefaultProjectInfo(); if (defaultProject) { formik.setValues(defaultProject, false); } @@ -400,20 +391,20 @@ function getSignatureAlgorithmRadioOptions( function EmulatorTextField({ path, ...restProps -}: FieldProps & { path: keyof Emulator }) { +}: FieldProps & { path: keyof FlowEmulatorConfig }) { return ; } function EmulatorRadioField({ path, ...restProps -}: RadioFieldProps & { path: keyof Emulator }) { +}: RadioFieldProps & { path: keyof FlowEmulatorConfig }) { return ; } function EmulatorToggleField({ path, ...restProps -}: FieldProps & { path: keyof Emulator }) { +}: FieldProps & { path: keyof FlowEmulatorConfig }) { return ; } diff --git a/packages/ui/src/utils/multi-map.ts b/packages/ui/src/utils/multi-map.ts new file mode 100644 index 000000000..4d117e69d --- /dev/null +++ b/packages/ui/src/utils/multi-map.ts @@ -0,0 +1,13 @@ +// https://en.wikipedia.org/wiki/Multimap +export class MultiMap extends Map { + constructor(entries?: readonly (readonly [K, V])[] | null) { + super(); + + for (const entry of entries ?? []) { + const [key, value] = entry; + const existingEntries = this.get(key) ?? []; + existingEntries.push(value); + this.set(key, existingEntries); + } + } +} diff --git a/packages/ui/tsconfig.json b/packages/ui/tsconfig.json index 3d3bfd25c..45b87de3c 100644 --- a/packages/ui/tsconfig.json +++ b/packages/ui/tsconfig.json @@ -4,6 +4,14 @@ "exclude": ["dist", "node_modules"], "compilerOptions": { "outDir": "./dist", - "jsx": "react" + "module": "esnext", + "target": "es5", + "lib": [ + "es6", + "dom", + "ES2021" + ], + "jsx": "react-jsx", + "baseUrl": "src", } } diff --git a/packages/wallet/src/wallet.service.ts b/packages/wallet/src/wallet.service.ts index c372d3832..f7ce4c9a3 100644 --- a/packages/wallet/src/wallet.service.ts +++ b/packages/wallet/src/wallet.service.ts @@ -23,8 +23,8 @@ import { FlowConfigService } from "@onflowser/core/src/flow/flow-config.service" import { FlowTransactionArgument } from "@flowser/packages/api"; import { FclArgumentWithMetadata, - FclValues, -} from "@onflowser/core/src/flow/fcl-values"; + FclValueUtils, +} from "packages/core/src/flow/fcl-value-utils"; const fcl = require("@onflow/fcl"); export interface SendTransactionRequest { @@ -101,7 +101,7 @@ export class WalletService { const value = parsedValue === "" && type.optional ? undefined : parsedValue; - if (!FclValues.isFclValue(value)) { + if (!FclValueUtils.isFclValue(value)) { throw new Error("Value not a fcl value"); } diff --git a/shared/src/utils/index.ts b/shared/src/utils/index.ts index 8ccdfb847..a5a9a0a90 100644 --- a/shared/src/utils/index.ts +++ b/shared/src/utils/index.ts @@ -1 +1 @@ -export * from "../../../packages/core/src/flow/fcl-values"; +export * from "../../../packages/core/src/flow/fcl-value"; diff --git a/yarn.lock b/yarn.lock index 33b4dc69d..efb6e824f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -997,7 +997,7 @@ "resolved" "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz" "version" "0.8.0" -"@babel/runtime@^7.12.5", "@babel/runtime@^7.18.6", "@babel/runtime@^7.20.13", "@babel/runtime@^7.20.7", "@babel/runtime@^7.21.0", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.18.6", "@babel/runtime@^7.20.13", "@babel/runtime@^7.20.7", "@babel/runtime@^7.21.0", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": "integrity" "sha512-hC2v6p8ZSI/W0HUzh3V8C5g+NwSKzKPtJwSpTjwl0o297GP9+ZLQSkdvHz46CM3LqyoXxq+5G9komY+eSqSO0g==" "resolved" "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.1.tgz" "version" "7.23.1" @@ -1852,6 +1852,7 @@ dependencies: "@codemirror/legacy-modes" "^6.1.0" "@onflowser/api" "*" + "@szhsin/react-menu" "4.0.3" "@tanstack/react-table" "^8.5.11" "@uidotdev/usehooks" "^2.3.1" "@uiw/codemirror-extensions-basic-setup" "^4.12.4" @@ -1862,6 +1863,7 @@ "copy-to-clipboard" "^3.3.3" "date-fns" "^2.30.0" "dateformat" "^5.0.3" + "formik" "^2.2.9" "mixpanel-browser" "^2.47.0" "react" "^18.0.0" "react-helmet" "^6.1.0" @@ -1871,6 +1873,7 @@ "react-router-dom" "6.15.0" "react-timeago" "^7.2.0" "swr" "^2.2.4" + "yup" "^0.32.11" "@onflowser/wallet@file:/Users/bartkozorog/Projects/flowser/packages/wallet": "resolved" "file:packages/wallet" @@ -2080,6 +2083,14 @@ "@svgr/plugin-jsx" "8.1.0" "@svgr/plugin-svgo" "8.1.0" +"@szhsin/react-menu@4.0.3": + "integrity" "sha512-TPsOKLEkesE79802evnLt2Mbv/+zwRJdX8776/vxK5ST9SK8SO0A8kRrus6JuxijLxZxFpmY/3VMdoyeCWQHKA==" + "resolved" "https://registry.npmjs.org/@szhsin/react-menu/-/react-menu-4.0.3.tgz" + "version" "4.0.3" + dependencies: + "prop-types" "^15.7.2" + "react-transition-state" "^2.1.0" + "@szmarczak/http-timer@^4.0.5": "integrity" "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==" "resolved" "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz" @@ -2331,6 +2342,14 @@ dependencies: "@types/node" "*" +"@types/hoist-non-react-statics@^3.3.1": + "integrity" "sha512-YIQtIg4PKr7ZyqNPZObpxfHsHEmuB8dXCxd6qVcGuQVDK2bpsF7bYNnBJ4Nn7giuACZg+WewExgrtAJ3XnA4Xw==" + "resolved" "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz" + "version" "3.3.2" + dependencies: + "@types/react" "*" + "hoist-non-react-statics" "^3.3.0" + "@types/html-minifier-terser@^6.0.0": "integrity" "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==" "resolved" "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz" @@ -2406,6 +2425,11 @@ dependencies: "@types/node" "*" +"@types/lodash@^4.14.175": + "integrity" "sha512-Vrjz5N5Ia4SEzWWgIVwnHNEnb1UE1XMkvY5DGXrAeOGE9imk0hgTHh5GyDjLDJi9OTCn9oo9dXH1uToK1VRfrg==" + "resolved" "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.199.tgz" + "version" "4.14.199" + "@types/mime@*", "@types/mime@^1": "integrity" "sha512-Ys+/St+2VF4+xuY6+kDIXGxbNRO0mesVg0bbxEfB97Od1Vjpjx9KD1qxs64Gcb3CWPirk9Xe+PT4YiiHQ9T+eg==" "resolved" "https://registry.npmjs.org/@types/mime/-/mime-1.3.3.tgz" @@ -4617,6 +4641,11 @@ "resolved" "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" "version" "0.1.4" +"deepmerge@^2.1.1": + "integrity" "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==" + "resolved" "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz" + "version" "2.2.1" + "deepmerge@^4.2.2", "deepmerge@^4.3.1": "integrity" "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==" "resolved" "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz" @@ -6034,6 +6063,20 @@ "combined-stream" "^1.0.8" "mime-types" "^2.1.12" +"formik@^2.2.9": + "integrity" "sha512-Gxlht0TD3vVdzMDHwkiNZqJ7Mvg77xQNfmBRrNtvzcHZs72TJppSTDKHpImCMJZwcWPBJ8jSQQ95GJzXFf1nAQ==" + "resolved" "https://registry.npmjs.org/formik/-/formik-2.4.5.tgz" + "version" "2.4.5" + dependencies: + "@types/hoist-non-react-statics" "^3.3.1" + "deepmerge" "^2.1.1" + "hoist-non-react-statics" "^3.3.0" + "lodash" "^4.17.21" + "lodash-es" "^4.17.21" + "react-fast-compare" "^2.0.1" + "tiny-warning" "^1.0.2" + "tslib" "^2.0.0" + "forwarded@0.2.0": "integrity" "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" "resolved" "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" @@ -6437,6 +6480,13 @@ "minimalistic-assert" "^1.0.0" "minimalistic-crypto-utils" "^1.0.1" +"hoist-non-react-statics@^3.3.0": + "integrity" "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==" + "resolved" "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz" + "version" "3.3.2" + dependencies: + "react-is" "^16.7.0" + "hosted-git-info@^4.1.0": "integrity" "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==" "resolved" "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz" @@ -7988,6 +8038,11 @@ dependencies: "p-locate" "^5.0.0" +"lodash-es@^4.17.21": + "integrity" "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + "resolved" "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz" + "version" "4.17.21" + "lodash.curry@^4.0.1": "integrity" "sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA==" "resolved" "https://registry.npmjs.org/lodash.curry/-/lodash.curry-4.1.1.tgz" @@ -8442,6 +8497,11 @@ "dns-packet" "^5.2.2" "thunky" "^1.0.2" +"nanoclone@^0.2.1": + "integrity" "sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA==" + "resolved" "https://registry.npmjs.org/nanoclone/-/nanoclone-0.2.1.tgz" + "version" "0.2.1" + "nanoid@^3.3.6": "integrity" "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==" "resolved" "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz" @@ -9307,6 +9367,11 @@ "object-assign" "^4.1.1" "react-is" "^16.13.1" +"property-expr@^2.0.4": + "integrity" "sha512-IJUkICM5dP5znhCckHSv30Q4b5/JA5enCtkRHYaOVOAocnH/1BQEYTC5NMfT3AVl/iXKdr3aqQbQn9DxyWknwA==" + "resolved" "https://registry.npmjs.org/property-expr/-/property-expr-2.0.5.tgz" + "version" "2.0.5" + "proxy-addr@~2.0.7": "integrity" "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==" "resolved" "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz" @@ -9397,7 +9462,7 @@ "lodash.flow" "^3.3.0" "pure-color" "^1.2.0" -"react-dom@^17.0.0 || ^16.3.0 || ^15.5.4", "react-dom@^17.0.2", "react-dom@>=16", "react-dom@>=16.8", "react-dom@>=16.8.0": +"react-dom@^17.0.0 || ^16.3.0 || ^15.5.4", "react-dom@^17.0.2", "react-dom@>=16", "react-dom@>=16.14.0", "react-dom@>=16.8", "react-dom@>=16.8.0": "integrity" "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==" "resolved" "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz" "version" "17.0.2" @@ -9422,6 +9487,11 @@ "loose-envify" "^1.1.0" "scheduler" "^0.23.0" +"react-fast-compare@^2.0.1": + "integrity" "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==" + "resolved" "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz" + "version" "2.0.4" + "react-fast-compare@^3.1.1": "integrity" "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==" "resolved" "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz" @@ -9459,6 +9529,11 @@ "resolved" "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" "version" "16.13.1" +"react-is@^16.7.0": + "integrity" "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + "resolved" "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" + "version" "16.13.1" + "react-is@^17.0.1": "integrity" "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" "resolved" "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" @@ -9550,7 +9625,12 @@ "resolved" "https://registry.npmjs.org/react-timeago/-/react-timeago-7.2.0.tgz" "version" "7.2.0" -"react@*", "react@^15.0.2 || ^16.0.0 || ^17.0.0", "react@^16.0.0 || ^17.0.0 || ^18.0.0", "react@^16.11.0 || ^17.0.0 || ^18.0.0", "react@^16.3.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^17.0.0 || ^16.3.0 || ^15.5.4", "react@^17.0.0 || ^18.0.0", "react@^17.0.2", "react@>=16", "react@>=16.3.0", "react@>=16.8", "react@>=16.8.0", "react@>=17.0.0 || >=18.0.0", "react@17.0.2": +"react-transition-state@^2.1.0": + "integrity" "sha512-kQx5g1FVu9knoz1T1WkapjUgFz08qQ/g1OmuWGi3/AoEFfS0kStxrPlZx81urjCXdz2d+1DqLpU6TyLW/Ro04Q==" + "resolved" "https://registry.npmjs.org/react-transition-state/-/react-transition-state-2.1.1.tgz" + "version" "2.1.1" + +"react@*", "react@^15.0.2 || ^16.0.0 || ^17.0.0", "react@^16.0.0 || ^17.0.0 || ^18.0.0", "react@^16.11.0 || ^17.0.0 || ^18.0.0", "react@^16.3.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^17.0.0 || ^16.3.0 || ^15.5.4", "react@^17.0.0 || ^18.0.0", "react@^17.0.2", "react@>=16", "react@>=16.14.0", "react@>=16.3.0", "react@>=16.8", "react@>=16.8.0", "react@>=17.0.0 || >=18.0.0", "react@17.0.2": "integrity" "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==" "resolved" "https://registry.npmjs.org/react/-/react-17.0.2.tgz" "version" "17.0.2" @@ -10787,6 +10867,11 @@ "resolved" "https://registry.npmjs.org/tiny-typed-emitter/-/tiny-typed-emitter-2.1.0.tgz" "version" "2.1.0" +"tiny-warning@^1.0.2": + "integrity" "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" + "resolved" "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz" + "version" "1.0.3" + "titleize@^3.0.0": "integrity" "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==" "resolved" "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz" @@ -10833,6 +10918,11 @@ "resolved" "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" "version" "1.0.1" +"toposort@^2.0.2": + "integrity" "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==" + "resolved" "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz" + "version" "2.0.2" + "totalist@^3.0.0": "integrity" "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==" "resolved" "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz" @@ -10954,7 +11044,7 @@ "resolved" "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" "version" "1.14.1" -"tslib@^2.0.3", "tslib@^2.1.0", "tslib@2.4.0": +"tslib@^2.0.0", "tslib@^2.0.3", "tslib@^2.1.0", "tslib@2.4.0": "integrity" "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz" "version" "2.4.0" @@ -11760,3 +11850,16 @@ "integrity" "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" "resolved" "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" "version" "0.1.0" + +"yup@^0.32.11": + "integrity" "sha512-Z2Fe1bn+eLstG8DRR6FTavGD+MeAwyfmouhHsIUgaADz8jvFKbO/fXc2trJKZg+5EBjh4gGm3iU/t3onKlXHIg==" + "resolved" "https://registry.npmjs.org/yup/-/yup-0.32.11.tgz" + "version" "0.32.11" + dependencies: + "@babel/runtime" "^7.15.4" + "@types/lodash" "^4.14.175" + "lodash" "^4.17.21" + "lodash-es" "^4.17.21" + "nanoclone" "^0.2.1" + "property-expr" "^2.0.4" + "toposort" "^2.0.2" From c310c4ff872740104244383bfb5bf3017740fc3c Mon Sep 17 00:00:00 2001 From: Bart Date: Tue, 10 Oct 2023 16:07:32 +0200 Subject: [PATCH 017/100] restructured services, fix more type issues --- apps/demo-app/package.json | 2 +- apps/demo-app/src/main.ts | 27 ++- packages/core/src/{flow => }/fcl-value.ts | 2 +- .../src/{flow => }/flow-gateway.service.ts | 0 .../src/flow-indexer.service.ts} | 179 ++++++------------ .../core/src/flow-interactions.service.ts | 5 + .../src/{flow => }/flow-snapshots.service.ts | 0 .../src/{flow => }/flow-storage.service.ts | 2 +- .../{indexer => core}/src/in-memory-index.ts | 0 packages/core/src/index.ts | 9 +- packages/core/src/processes/index.ts | 2 - packages/indexer/package.json | 21 -- packages/indexer/src/index.ts | 2 - packages/indexer/tsconfig.json | 8 - packages/{wallet => nodejs}/package.json | 3 +- .../src/async-interval-scheduler.ts | 8 +- .../flow => nodejs/src}/flow-cli.service.ts | 4 +- .../src}/flow-config.service.ts | 2 +- .../src}/flow-emulator.service.ts | 49 +---- .../src}/flow-interactions.service.ts | 11 +- .../src}/go-bindings.service.ts | 0 .../{core/src/flow => nodejs/src}/index.ts | 13 +- .../src/processes/managed-process.ts | 0 .../src/processes/process-manager.service.ts | 0 .../{wallet => nodejs}/src/wallet.service.ts | 179 ++++++++++-------- shared/src/utils/index.ts | 2 +- yarn.lock | 15 +- 27 files changed, 212 insertions(+), 333 deletions(-) rename packages/core/src/{flow => }/fcl-value.ts (98%) rename packages/core/src/{flow => }/flow-gateway.service.ts (100%) rename packages/{indexer/src/indexer.service.ts => core/src/flow-indexer.service.ts} (79%) create mode 100644 packages/core/src/flow-interactions.service.ts rename packages/core/src/{flow => }/flow-snapshots.service.ts (100%) rename packages/core/src/{flow => }/flow-storage.service.ts (99%) rename packages/{indexer => core}/src/in-memory-index.ts (100%) delete mode 100644 packages/core/src/processes/index.ts delete mode 100644 packages/indexer/package.json delete mode 100644 packages/indexer/src/index.ts delete mode 100644 packages/indexer/tsconfig.json rename packages/{wallet => nodejs}/package.json (86%) rename packages/{indexer => nodejs}/src/async-interval-scheduler.ts (89%) rename packages/{core/src/flow => nodejs/src}/flow-cli.service.ts (97%) rename packages/{core/src/flow => nodejs/src}/flow-config.service.ts (99%) rename packages/{core/src/flow => nodejs/src}/flow-emulator.service.ts (74%) rename packages/{core/src/flow => nodejs/src}/flow-interactions.service.ts (86%) rename packages/{core/src/flow => nodejs/src}/go-bindings.service.ts (100%) rename packages/{core/src/flow => nodejs/src}/index.ts (56%) rename packages/{core => nodejs}/src/processes/managed-process.ts (100%) rename packages/{core => nodejs}/src/processes/process-manager.service.ts (100%) rename packages/{wallet => nodejs}/src/wallet.service.ts (69%) diff --git a/apps/demo-app/package.json b/apps/demo-app/package.json index 19acb4362..56092be2d 100644 --- a/apps/demo-app/package.json +++ b/apps/demo-app/package.json @@ -11,7 +11,7 @@ "license": "ISC", "dependencies": { "@onflowser/config": "*", - "@onflowser/indexer": "*", + "@onflowser/nodejs": "*", "@onflowser/core": "*", "@onflowser/api": "*" }, diff --git a/apps/demo-app/src/main.ts b/apps/demo-app/src/main.ts index 7ec49d20c..f2602c619 100644 --- a/apps/demo-app/src/main.ts +++ b/apps/demo-app/src/main.ts @@ -1,13 +1,16 @@ -import { IndexerService, InMemoryIndex } from "@onflowser/indexer"; import { + FlowIndexerService, + InMemoryIndex, FlowGatewayService, FlowAccountStorageService, - FlowEmulatorService, - ProcessManagerService, - GoBindingsService, waitForMs, } from "@onflowser/core"; import * as flowserResource from "@onflowser/api"; +import { + AsyncIntervalScheduler, + FlowInteractionsService, + GoBindingsService, +} from "@onflowser/nodejs"; const flowGatewayService = new FlowGatewayService(); @@ -81,9 +84,8 @@ flowGatewayService.configure({ const flowAccountStorageService = new FlowAccountStorageService( flowGatewayService ); -const processManagerService = new ProcessManagerService(); -const flowEmulatorService = new FlowEmulatorService(processManagerService); const goBindingsService = new GoBindingsService(); +const flowInteractionsService = new FlowInteractionsService(goBindingsService); const indexes = { transaction: new InMemoryIndex(), @@ -94,7 +96,7 @@ const indexes = { accountStorage: new InMemoryIndex(), }; -const indexer = new IndexerService( +const indexer = new FlowIndexerService( indexes.transaction, indexes.account, indexes.block, @@ -103,11 +105,16 @@ const indexer = new IndexerService( indexes.accountStorage, flowAccountStorageService, flowGatewayService, - flowEmulatorService, - goBindingsService + flowInteractionsService ); -indexer.start(); +const scheduler = new AsyncIntervalScheduler({ + name: "Blockchain processing", + pollingIntervalInMs: 500, + functionToExecute: () => indexer.processBlockchainData(), +}); + +scheduler.start(); (async function () { while (true) { diff --git a/packages/core/src/flow/fcl-value.ts b/packages/core/src/fcl-value.ts similarity index 98% rename from packages/core/src/flow/fcl-value.ts rename to packages/core/src/fcl-value.ts index af9b3e925..906b1f82f 100644 --- a/packages/core/src/flow/fcl-value.ts +++ b/packages/core/src/fcl-value.ts @@ -142,7 +142,7 @@ export class FclValueUtils { static isFclOptionalValue(arg: unknown): arg is FclOptionalValue { return arg === undefined || this.isFclRequiredValue(arg); } - static isFclValue(arg: unknown): arg is FclValueUtils { + static isFclValue(arg: unknown): arg is FclValue { return this.isFclOptionalValue(arg) || this.isFclRequiredValue(arg); } } diff --git a/packages/core/src/flow/flow-gateway.service.ts b/packages/core/src/flow-gateway.service.ts similarity index 100% rename from packages/core/src/flow/flow-gateway.service.ts rename to packages/core/src/flow-gateway.service.ts diff --git a/packages/indexer/src/indexer.service.ts b/packages/core/src/flow-indexer.service.ts similarity index 79% rename from packages/indexer/src/indexer.service.ts rename to packages/core/src/flow-indexer.service.ts index 3783bf642..3c2e478fe 100644 --- a/packages/indexer/src/indexer.service.ts +++ b/packages/core/src/flow-indexer.service.ts @@ -1,24 +1,16 @@ import { Injectable, Logger } from "@nestjs/common"; -import { - FlowApiStatus, - FlowGatewayService, - FlowEmulatorService, - WellKnownAddressesOptions, - ManagedProcess, - ensureNonPrefixedAddress, - ensurePrefixedAddress, - FlowAccountStorageService, - GoBindingsService, -} from "@onflowser/core"; -import * as flowResource from "@onflowser/core"; +import * as flowResource from "./flow-gateway.service"; import * as flowserResource from "@onflowser/api"; -import { AsyncIntervalScheduler } from "./async-interval-scheduler"; import { IResourceIndex, HashAlgorithm, SignatureAlgorithm, ParsedInteractionOrError, } from "@onflowser/api"; +import { IFlowInteractions } from "./flow-interactions.service"; +import { FlowAccountStorageService } from "./flow-storage.service"; +import { FlowApiStatus, FlowGatewayService } from "./flow-gateway.service"; +import { ensurePrefixedAddress } from "./utils"; // See https://developers.flow.com/cadence/language/core-events enum FlowCoreEventType { @@ -52,11 +44,8 @@ export type ExtendedFlowEvent = flowResource.FlowEvent & { }; @Injectable() -export class IndexerService { - private emulatorProcess: ManagedProcess | undefined; - private readonly logger = new Logger(IndexerService.name); - private readonly pollingDelay = 500; - private processingScheduler: AsyncIntervalScheduler; +export class FlowIndexerService { + private readonly logger = new Logger(FlowIndexerService.name); constructor( private transactionIndex: IResourceIndex, @@ -67,23 +56,8 @@ export class IndexerService { private accountStorageIndex: IResourceIndex, private flowStorageService: FlowAccountStorageService, private flowGatewayService: FlowGatewayService, - private flowEmulatorService: FlowEmulatorService, - private goBindings: GoBindingsService - ) { - this.processingScheduler = new AsyncIntervalScheduler({ - name: "Blockchain processing", - pollingIntervalInMs: this.pollingDelay, - functionToExecute: this.processBlockchainData.bind(this), - }); - } - - start(): void { - this.processingScheduler.start(); - } - - stop(): void { - this.processingScheduler.stop(); - } + private flowInteractionsService: IFlowInteractions + ) {} async processBlockchainData(): Promise { const gatewayStatus = await this.flowGatewayService.getApiStatus(); @@ -94,7 +68,7 @@ export class IndexerService { const [unprocessedBlockInfo] = await Promise.all([ this.getUnprocessedBlocksInfo(), - this.processWellKnownAccountsForNonManagedEmulator(), + this.processWellKnownAccounts(), ]); const { nextBlockHeightToProcess, latestUnprocessedBlockHeight } = @@ -335,18 +309,10 @@ export class IndexerService { `handling event: ${event.type} ${JSON.stringify(event.data)}` ); - const monotonicAddresses = this.flowEmulatorService.getWellKnownAddresses({ - overrideUseMonotonicAddresses: true, - }); - const nonMonotonicAddresses = - this.flowEmulatorService.getWellKnownAddresses({ - overrideUseMonotonicAddresses: false, - }); - - const buildFlowTokensWithdrawnEvent = (address: string) => - `A.${ensureNonPrefixedAddress(address)}.FlowToken.TokensWithdrawn`; - const buildFlowTokensDepositedEvent = (address: string) => - `A.${ensureNonPrefixedAddress(address)}.FlowToken.TokensDeposited`; + const isTokenWithdrawnEvent = (eventId: string) => + /A\..*\.FlowToken\.TokensWithdrawn/.test(eventId); + const isTokenDepositedEvent = (eventId: string) => + /A\..*\.FlowToken\.TokensDeposited/.test(eventId); const address = ensurePrefixedAddress(event.data.address); switch (event.type) { @@ -363,25 +329,17 @@ export class IndexerService { case FlowCoreEventType.ACCOUNT_CONTRACT_REMOVED: // TODO: Stop re-fetching all contracts and instead use event.data.contract to get the removed/updated/added contract return this.reIndexAccount({ address, block: block }); - // For now keep listening for monotonic and non-monotonic addresses, - // although I think only non-monotonic ones are used for contract deployment. - // See: https://github.com/onflow/flow-emulator/issues/421#issuecomment-1596844610 - case buildFlowTokensWithdrawnEvent(monotonicAddresses.flowTokenAddress): - case buildFlowTokensWithdrawnEvent( - nonMonotonicAddresses.flowTokenAddress - ): + } + + switch (true) { + case isTokenWithdrawnEvent(event.type): // New emulator accounts are initialized // with a default Flow balance coming from null address. return event.data.from ? this.reIndexAccount(event.data.from) : undefined; - case buildFlowTokensDepositedEvent(monotonicAddresses.flowTokenAddress): - case buildFlowTokensDepositedEvent( - nonMonotonicAddresses.flowTokenAddress - ): + case isTokenDepositedEvent(event.type): return this.reIndexAccount(event.data.to); - default: - return null; // not a standard event, ignore it } } @@ -390,9 +348,9 @@ export class IndexerService { transaction: flowResource.FlowTransaction; transactionStatus: flowResource.FlowTransactionStatus; }) { - const parsedInteraction = await this.goBindings.getParsedInteraction({ - sourceCode: options.transaction.script, - }); + const parsedInteraction = await this.flowInteractionsService.parse( + options.transaction.script + ); if (parsedInteraction.error) { this.logger.error( `Unexpected interaction parsing error: ${parsedInteraction.error}` @@ -453,52 +411,8 @@ export class IndexerService { ); } - private async isServiceAccountProcessed(options?: WellKnownAddressesOptions) { - const { serviceAccountAddress } = - this.flowEmulatorService.getWellKnownAddresses(options); - try { - const serviceAccount = await this.accountIndex.findOneById( - serviceAccountAddress - ); - - // Service account is already created by the wallet service, - // but that service doesn't set the public key. - // So if public key isn't present, - // we know that we haven't processed this account yet. - return Boolean(serviceAccount?.keys?.[0]?.publicKey); - } catch (e) { - // Service account not found - return false; - } - } - - private async processWellKnownAccountsForNonManagedEmulator() { - // When using non-managed emulator, - // we don't know if the blockchain uses monotonic or non-monotonic addresses, - // so we need to try processing well-known accounts with both options. - const isManagedEmulator = this.emulatorProcess?.isRunning(); - if (isManagedEmulator) { - return; - } - - // Ignore errors that any of the functions throw - await Promise.allSettled([ - this.processWellKnownAccounts({ - overrideUseMonotonicAddresses: true, - }), - this.processWellKnownAccounts({ - overrideUseMonotonicAddresses: false, - }), - ]); - } - - private async processWellKnownAccounts(options?: WellKnownAddressesOptions) { - const isAlreadyProcessed = await this.isServiceAccountProcessed(options); - - if (isAlreadyProcessed) { - // Assume all other accounts are also processed (we batch process them together). - return; - } + private async processWellKnownAccounts() { + // TODO(restructure): Early exit if accounts already processed? // Afaik these well-known default accounts are // bootstrapped in a "meta-transaction", @@ -515,7 +429,7 @@ export class IndexerService { }; await Promise.all( - this.getAllWellKnownAddresses(options).map((address) => + this.getAllWellKnownAddresses().map((address) => this.reIndexAccount({ address, block: nonExistingBlock, @@ -524,16 +438,32 @@ export class IndexerService { ); } - private getAllWellKnownAddresses(options?: WellKnownAddressesOptions) { - // TODO(snapshots-revamp): Try processing monotonic and normal addresses - // as we don't know which setting is used if non-managed emulator is used. - const wellKnownAddresses = - this.flowEmulatorService.getWellKnownAddresses(options); + /** + * Well known addresses have predefined roles + * and are used to deploy common/core flow contracts. + * + * For more info, see source code: + * - https://github.com/onflow/flow-emulator/blob/ebb90a8e721344861bb7e44b58b934b9065235f9/server/server.go#L163-L169 + * - https://github.com/onflow/flow-emulator/blob/ebb90a8e721344861bb7e44b58b934b9065235f9/emulator/contracts.go#L17-L60 + */ + private getAllWellKnownAddresses() { + // When "simple-addresses" flag is provided, + // a monotonic address generation mechanism is used: + // https://github.com/onflow/flow-emulator/blob/ebb90a8e721344861bb7e44b58b934b9065235f9/emulator/blockchain.go#L336-L342 + return [ - wellKnownAddresses.serviceAccountAddress, - wellKnownAddresses.fungibleTokenAddress, - wellKnownAddresses.flowFeesAddress, - wellKnownAddresses.flowTokenAddress, + // Service account address + "0x0000000000000001", + "0xf8d6e0586b0a20c7", + // Fungible token address + "0x0000000000000002", + "0xee82856bf20e2aa6", + // Flow token address + "0x0000000000000003", + "0x0ae53cb6e3f42a79", + // Flow fees address + "0x0000000000000004", + "0xe5a8b7f23e8b548f", ]; } @@ -543,11 +473,6 @@ export class IndexerService { }): flowserResource.FlowAccount { const { account, block } = options; - const allPossibleWellKnownAddresses = [ - this.getAllWellKnownAddresses({ overrideUseMonotonicAddresses: true }), - this.getAllWellKnownAddresses({ overrideUseMonotonicAddresses: false }), - ].flat(); - const address = ensurePrefixedAddress(account.address); return { @@ -555,8 +480,10 @@ export class IndexerService { balance: account.balance, address, blockId: block.id, + // TODO(restructure): Add logic for generating tags + // https://github.com/onflowser/flowser/pull/197/files#diff-de96e521dbe8391acff7b4c46768d9f51d90d5e30378600a41a57d14bb173f75L97-L116 tags: [], - isDefaultAccount: allPossibleWellKnownAddresses.includes(address), + isDefaultAccount: this.getAllWellKnownAddresses().includes(address), code: account.code, keys: account.keys.map((flowKey) => this.createKeyEntity({ diff --git a/packages/core/src/flow-interactions.service.ts b/packages/core/src/flow-interactions.service.ts new file mode 100644 index 000000000..440182344 --- /dev/null +++ b/packages/core/src/flow-interactions.service.ts @@ -0,0 +1,5 @@ +import { ParsedInteractionOrError } from "@onflowser/api"; + +export interface IFlowInteractions { + parse(sourceCode: string): Promise; +} diff --git a/packages/core/src/flow/flow-snapshots.service.ts b/packages/core/src/flow-snapshots.service.ts similarity index 100% rename from packages/core/src/flow/flow-snapshots.service.ts rename to packages/core/src/flow-snapshots.service.ts diff --git a/packages/core/src/flow/flow-storage.service.ts b/packages/core/src/flow-storage.service.ts similarity index 99% rename from packages/core/src/flow/flow-storage.service.ts rename to packages/core/src/flow-storage.service.ts index 67bc61d6f..3a2a44ecb 100644 --- a/packages/core/src/flow/flow-storage.service.ts +++ b/packages/core/src/flow-storage.service.ts @@ -1,5 +1,5 @@ import { FlowGatewayService } from "./flow-gateway.service"; -import { ensurePrefixedAddress } from "../utils"; +import { ensurePrefixedAddress } from "./utils"; import { FlowStorageDomain, CadenceTypeKind, diff --git a/packages/indexer/src/in-memory-index.ts b/packages/core/src/in-memory-index.ts similarity index 100% rename from packages/indexer/src/in-memory-index.ts rename to packages/core/src/in-memory-index.ts diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 728f861d2..7a94572e0 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -1,3 +1,8 @@ -export * from "./flow"; -export * from "./processes"; +export * from "./fcl-value"; export * from "./utils"; +export * from "./in-memory-index"; + +export * from "./flow-gateway.service"; +export * from "./flow-snapshots.service"; +export * from "./flow-storage.service"; +export * from "./flow-indexer.service"; diff --git a/packages/core/src/processes/index.ts b/packages/core/src/processes/index.ts deleted file mode 100644 index e19a81313..000000000 --- a/packages/core/src/processes/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./managed-process"; -export * from "./process-manager.service"; diff --git a/packages/indexer/package.json b/packages/indexer/package.json deleted file mode 100644 index 62eebf2b0..000000000 --- a/packages/indexer/package.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "@onflowser/indexer", - "version": "1.0.0", - "description": "", - "main": "./dist/index.js", - "types": "./dist/index.d.ts", - "scripts": { - "build": "tsc" - }, - "keywords": [], - "author": "", - "license": "ISC", - "dependencies": { - "@onflowser/config": "*", - "@onflowser/core": "*" - }, - "devDependencies": { - "@types/node": "^16.11.6", - "typescript": "^4.3.5" - } -} diff --git a/packages/indexer/src/index.ts b/packages/indexer/src/index.ts deleted file mode 100644 index 3bc71192f..000000000 --- a/packages/indexer/src/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./indexer.service"; -export * from "./in-memory-index"; diff --git a/packages/indexer/tsconfig.json b/packages/indexer/tsconfig.json deleted file mode 100644 index a991f4ef0..000000000 --- a/packages/indexer/tsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "@onflowser/config/tsconfig.json", - "include": ["src"], - "exclude": ["dist", "node_modules"], - "compilerOptions": { - "outDir": "./dist" - } -} diff --git a/packages/wallet/package.json b/packages/nodejs/package.json similarity index 86% rename from packages/wallet/package.json rename to packages/nodejs/package.json index 12ade71c4..08d639c29 100644 --- a/packages/wallet/package.json +++ b/packages/nodejs/package.json @@ -1,7 +1,8 @@ { - "name": "@onflowser/wallet", + "name": "@onflowser/nodejs", "version": "1.0.0", "description": "", + "main": "./src/index.ts", "types": "./src/index.ts", "scripts": {}, "keywords": [], diff --git a/packages/indexer/src/async-interval-scheduler.ts b/packages/nodejs/src/async-interval-scheduler.ts similarity index 89% rename from packages/indexer/src/async-interval-scheduler.ts rename to packages/nodejs/src/async-interval-scheduler.ts index e776d6a00..1620a84c2 100644 --- a/packages/indexer/src/async-interval-scheduler.ts +++ b/packages/nodejs/src/async-interval-scheduler.ts @@ -1,7 +1,3 @@ -import { Logger } from "@nestjs/common"; - -const logger = new Logger("Utils"); - export type ExecutableCallback = () => Promise; export type AsyncIntervalOptions = { @@ -44,7 +40,7 @@ export class AsyncIntervalScheduler { try { await functionToExecute(); } catch (e) { - logger.error(`${name} failed`, e); + console.error(`${name} failed`, e); } const endTime = new Date(); const runTimeInMs = endTime.getTime() - startTime.getTime(); @@ -60,7 +56,7 @@ export class AsyncIntervalScheduler { } else { // Runtime exceeded polling time. // Processing could be taking longer than expected. - logger.debug(`${name} took ${runTimeInMs}ms`); + console.debug(`${name} took ${runTimeInMs}ms`); } } } diff --git a/packages/core/src/flow/flow-cli.service.ts b/packages/nodejs/src/flow-cli.service.ts similarity index 97% rename from packages/core/src/flow/flow-cli.service.ts rename to packages/nodejs/src/flow-cli.service.ts index b0229eeb0..7ffb7267f 100644 --- a/packages/core/src/flow/flow-cli.service.ts +++ b/packages/nodejs/src/flow-cli.service.ts @@ -1,8 +1,8 @@ import { ManagedProcess, ProcessOutputSource, -} from "../processes/managed-process"; -import { ProcessManagerService } from "../processes/process-manager.service"; +} from "@onflowser/core/dist/processes/managed-process"; +import { ProcessManagerService } from "@onflowser/core/dist/processes/process-manager.service"; import { randomUUID } from "crypto"; import { HashAlgorithm, SignatureAlgorithm } from "@onflowser/api"; diff --git a/packages/core/src/flow/flow-config.service.ts b/packages/nodejs/src/flow-config.service.ts similarity index 99% rename from packages/core/src/flow/flow-config.service.ts rename to packages/nodejs/src/flow-config.service.ts index bef3ae121..3505ff86c 100644 --- a/packages/core/src/flow/flow-config.service.ts +++ b/packages/nodejs/src/flow-config.service.ts @@ -2,7 +2,7 @@ import { readFile, writeFile, watch } from "fs/promises"; import * as path from "path"; import { AbortController } from "node-abort-controller"; import * as fs from "fs"; -import { isObject } from "../utils"; +import { isObject } from "@onflowser/core/dist/utils"; type FlowAddress = string; diff --git a/packages/core/src/flow/flow-emulator.service.ts b/packages/nodejs/src/flow-emulator.service.ts similarity index 74% rename from packages/core/src/flow/flow-emulator.service.ts rename to packages/nodejs/src/flow-emulator.service.ts index f9d9b408d..01c451443 100644 --- a/packages/core/src/flow/flow-emulator.service.ts +++ b/packages/nodejs/src/flow-emulator.service.ts @@ -1,5 +1,5 @@ -import { ProcessManagerService, ManagedProcess } from "../processes"; -import { isDefined, waitForMs } from "../utils"; +import { ManagedProcess } from "./processes/managed-process"; +import { isDefined, waitForMs } from "@onflowser/core/dist/utils"; import { EventEmitter } from "node:events"; import { FlowEmulatorConfig, @@ -7,18 +7,7 @@ import { ProcessOutputSource, SignatureAlgorithm, } from "@onflowser/api"; - -type FlowWellKnownAddresses = { - serviceAccountAddress: string; - flowTokenAddress: string; - fungibleTokenAddress: string; - flowFeesAddress: string; -}; - -export type WellKnownAddressesOptions = { - // If not specifies, uses the setting from current emulator settings. - overrideUseMonotonicAddresses?: boolean; -}; +import { ProcessManagerService } from "./processes/process-manager.service"; export enum FlowEmulatorEvent { APIS_STARTED = "APIS_STARTED", @@ -39,38 +28,6 @@ export class FlowEmulatorService extends EventEmitter { this.processManagerService.get(FlowEmulatorService.processId)?.clearLogs(); } - /** - * Well known addresses have predefined roles - * and are used to deploy common/core flow contracts. - * - * For more info, see source code: - * - https://github.com/onflow/flow-emulator/blob/ebb90a8e721344861bb7e44b58b934b9065235f9/server/server.go#L163-L169 - * - https://github.com/onflow/flow-emulator/blob/ebb90a8e721344861bb7e44b58b934b9065235f9/emulator/contracts.go#L17-L60 - */ - public getWellKnownAddresses( - options?: WellKnownAddressesOptions - ): FlowWellKnownAddresses { - // When "simple-addresses" flag is provided, - // a monotonic address generation mechanism is used: - // https://github.com/onflow/flow-emulator/blob/ebb90a8e721344861bb7e44b58b934b9065235f9/emulator/blockchain.go#L336-L342 - const useMonotonicAddresses = - options?.overrideUseMonotonicAddresses ?? this.config.useSimpleAddresses; - return { - serviceAccountAddress: useMonotonicAddresses - ? "0x0000000000000001" - : "0xf8d6e0586b0a20c7", - fungibleTokenAddress: useMonotonicAddresses - ? "0x0000000000000002" - : "0xee82856bf20e2aa6", - flowTokenAddress: useMonotonicAddresses - ? "0x0000000000000003" - : "0x0ae53cb6e3f42a79", - flowFeesAddress: useMonotonicAddresses - ? "0x0000000000000004" - : "0xe5a8b7f23e8b548f", - }; - } - async start(config: FlowEmulatorConfig) { this.process = new ManagedProcess({ id: FlowEmulatorService.processId, diff --git a/packages/core/src/flow/flow-interactions.service.ts b/packages/nodejs/src/flow-interactions.service.ts similarity index 86% rename from packages/core/src/flow/flow-interactions.service.ts rename to packages/nodejs/src/flow-interactions.service.ts index 0cae76f5e..ea356d6e7 100644 --- a/packages/core/src/flow/flow-interactions.service.ts +++ b/packages/nodejs/src/flow-interactions.service.ts @@ -1,8 +1,9 @@ import * as fs from "fs/promises"; import * as path from "path"; import { GoBindingsService } from "./go-bindings.service"; -import { isDefined } from "../utils"; -import { InteractionKind } from "@onflowser/api"; +import { isDefined } from "@onflowser/core/dist/utils"; +import { InteractionKind, ParsedInteractionOrError } from "@onflowser/api"; +import { IFlowInteractions } from "@onflowser/core/dist/flow-interactions.service"; export interface InteractionTemplate { id: string; @@ -21,9 +22,13 @@ type GetInteractionTemplatesOptions = { projectRootPath: string; }; -export class FlowInteractionsService { +export class FlowInteractionsService implements IFlowInteractions { constructor(private readonly goBindings: GoBindingsService) {} + parse(sourceCode: string): Promise { + return this.goBindings.getParsedInteraction({ sourceCode }); + } + public async getInteractionTemplates( options: GetInteractionTemplatesOptions ): Promise { diff --git a/packages/core/src/flow/go-bindings.service.ts b/packages/nodejs/src/go-bindings.service.ts similarity index 100% rename from packages/core/src/flow/go-bindings.service.ts rename to packages/nodejs/src/go-bindings.service.ts diff --git a/packages/core/src/flow/index.ts b/packages/nodejs/src/index.ts similarity index 56% rename from packages/core/src/flow/index.ts rename to packages/nodejs/src/index.ts index 3bab0618e..c44e3bfe9 100644 --- a/packages/core/src/flow/index.ts +++ b/packages/nodejs/src/index.ts @@ -1,9 +1,6 @@ -export * from "./fcl-value"; -export * from "./flow-cli.service"; -export * from "./flow-config.service"; -export * from "./flow-gateway.service"; -export * from "./flow-emulator.service"; -export * from "./flow-snapshots.service"; -export * from "./flow-interactions.service"; -export * from "./flow-storage.service"; +export * from "./async-interval-scheduler"; export * from "./go-bindings.service"; +export * from "./flow-interactions.service"; +export * from "./flow-emulator.service"; +export * from "./flow-config.service"; +export * from "./flow-cli.service"; diff --git a/packages/core/src/processes/managed-process.ts b/packages/nodejs/src/processes/managed-process.ts similarity index 100% rename from packages/core/src/processes/managed-process.ts rename to packages/nodejs/src/processes/managed-process.ts diff --git a/packages/core/src/processes/process-manager.service.ts b/packages/nodejs/src/processes/process-manager.service.ts similarity index 100% rename from packages/core/src/processes/process-manager.service.ts rename to packages/nodejs/src/processes/process-manager.service.ts diff --git a/packages/wallet/src/wallet.service.ts b/packages/nodejs/src/wallet.service.ts similarity index 69% rename from packages/wallet/src/wallet.service.ts rename to packages/nodejs/src/wallet.service.ts index f7ce4c9a3..aef7600aa 100644 --- a/packages/wallet/src/wallet.service.ts +++ b/packages/nodejs/src/wallet.service.ts @@ -1,30 +1,29 @@ import { Injectable, - PreconditionFailedException, - NotFoundException, Logger, + PreconditionFailedException, } from "@nestjs/common"; import { ec as EC } from "elliptic"; import { SHA3 } from "sha3"; -import { - FlowCliService, - KeyWithWeight, -} from "@onflowser/core/src/flow/flow-cli.service"; -import { AccountsService } from "../../../backend/src/accounts/services/accounts.service"; -import { AccountEntity } from "../../../backend/src/accounts/entities/account.entity"; +import { FlowCliService, KeyWithWeight } from "./flow-cli.service"; import { ensurePrefixedAddress } from "../../core/src/utils"; -import { AccountKeyEntity } from "../../../backend/src/accounts/entities/key.entity"; -import { KeysService } from "../../../backend/src/accounts/services/keys.service"; import { + FclArgumentWithMetadata, + FclValueUtils, FlowAuthorizationFunction, FlowGatewayService, -} from "@onflowser/core/src/flow/flow-gateway.service"; -import { FlowConfigService } from "@onflowser/core/src/flow/flow-config.service"; -import { FlowTransactionArgument } from "@flowser/packages/api"; +} from "@onflowser/core"; +import * as flowserResource from "@onflowser/api"; import { - FclArgumentWithMetadata, - FclValueUtils, -} from "packages/core/src/flow/fcl-value-utils"; + FlowAccountKey, + FlowAccount, + FlowTransactionArgument, + HashAlgorithm, + IResourceIndex, + SignatureAlgorithm, +} from "@onflowser/api"; +import { FlowConfigService } from "./flow-config.service"; + const fcl = require("@onflow/fcl"); export interface SendTransactionRequest { @@ -57,8 +56,7 @@ export class WalletService { private readonly cliService: FlowCliService, private readonly flowGateway: FlowGatewayService, private readonly flowConfig: FlowConfigService, - private readonly accountsService: AccountsService, - private readonly keysService: KeysService + private accountIndex: IResourceIndex ) {} public async sendTransaction( @@ -128,16 +126,7 @@ export class WalletService { private async withAuthorization( address: string ): Promise { - let storedAccount; - - try { - storedAccount = await this.accountsService.findOneWithRelationsByAddress( - address - ); - } catch (e) { - console.error(e); - throw new NotFoundException(`Account not found '${address}'`); - } + const storedAccount = await this.accountIndex.findOneById(address); if (!storedAccount.keys) { throw new Error("Keys not loaded for account"); @@ -188,18 +177,26 @@ export class WalletService { accountsConfig.map(async (accountConfig) => { const accountAddress = ensurePrefixedAddress(accountConfig.address); - const keyEntity = AccountKeyEntity.createDefault(); - keyEntity.index = 0; - keyEntity.accountAddress = accountAddress; - // Public key is not stored in flow.json, - // so just use empty value for now. - // This should be updated by the aggregator service once it's picked up. - keyEntity.publicKey = ""; - keyEntity.privateKey = accountConfig.privateKey ?? ""; + const key: FlowAccountKey = { + ...this.createDefaultKey(accountAddress), + privateKey: accountConfig.privateKey, + }; - const accountEntity = AccountEntity.createDefault(); - accountEntity.address = accountAddress; - accountEntity.keys = [keyEntity]; + const account: FlowAccount = { + balance: 0, + blockId: "", + code: "", + createdAt: undefined, + deletedAt: undefined, + isDefaultAccount: false, + tags: [], + updatedAt: undefined, + id: accountAddress, + address: accountAddress, + // TODO(restructure): Add logic for generating tags + // https://github.com/onflowser/flowser/pull/197/files#diff-de96e521dbe8391acff7b4c46768d9f51d90d5e30378600a41a57d14bb173f75L97-L116 + keys: [key], + }; try { const isOnNetwork = await this.isAccountCreatedOnNetwork( @@ -216,11 +213,7 @@ export class WalletService { return; } - await this.accountsService.upsert(accountEntity); - await this.keysService.updateAccountKeys( - accountEntity.address, - accountEntity.keys - ); + await this.accountIndex.add(account); } catch (e) { // Ignore this.logger.debug("Managed account import failed", e); @@ -229,9 +222,7 @@ export class WalletService { ); } - public async createAccount( - options: CreateAccountRequest - ): Promise { + public async createAccount(options: CreateAccountRequest): Promise { // For now, we only support a single key per account, // but we could as well add support for attaching // multiple keys with (possibly) different weights. @@ -249,44 +240,35 @@ export class WalletService { }) ), }); - const accountEntity = AccountEntity.createDefault(); - accountEntity.address = ensurePrefixedAddress(generatedAccount.address); - accountEntity.keys = generatedKeyPairs.map((generatedKey) => { - const key = AccountKeyEntity.createDefault(); - key.accountAddress = accountEntity.address; - key.index = generatedAccount.keys.findIndex( - (key) => key === generatedKey.public - ); - key.publicKey = generatedKey.public; - key.privateKey = generatedKey.private; - return key; - }); - - await this.accountsService.upsert(accountEntity); - await this.keysService.updateAccountKeys( - accountEntity.address, - accountEntity.keys - ); + const accountAddress = ensurePrefixedAddress(generatedAccount.address); - // Assume only a single key per account for now - const singlePrivateKey = accountEntity.keys[0].privateKey; - if (!singlePrivateKey) { - throw new Error("Private key not found"); - } + await this.accountIndex.update({ + id: accountAddress, + keys: generatedKeyPairs.map((generatedKey) => { + return { + ...this.createDefaultKey(accountAddress), + index: generatedAccount.keys.findIndex( + (key) => key === generatedKey.public + ), + publicKey: generatedKey.public, + privateKey: generatedKey.private, + }; + }), + }); + // TODO(restructure): Update flow.json and regenerate accounts on next run? + // I don't think, so we can instead persist these accounts with snapshots. // For now, we just write new accounts to flow.json, // but they don't get recreated on the next emulator run. // See: https://github.com/onflow/flow-emulator/issues/405 - await this.flowConfig.updateAccounts([ - { - // TODO(custom-wallet): Come up with a human-readable name generation - name: accountEntity.address, - address: accountEntity.address, - privateKey: singlePrivateKey, - }, - ]); - - return accountEntity; + // await this.flowConfig.updateAccounts([ + // { + // // TODO(custom-wallet): Come up with a human-readable name generation + // name: accountEntity.address, + // address: accountEntity.address, + // privateKey: singlePrivateKey, + // }, + // ]); } // Returns whether the account exists on the current blockchain. @@ -322,4 +304,41 @@ export class WalletService { sha.update(Buffer.from(msg, "hex")); return sha.digest(); } + + private createDefaultKey(accountAddress: string): FlowAccountKey { + const keyIndex = 0; + return { + // TODO(restructure): Define util functions for generating IDs / initializing resources? + id: `${accountAddress}.${keyIndex}`, + index: 0, + accountAddress, + blockId: "NULL", + // Public key is not stored in flow.json, + // so just use empty value for now. + // This should be updated by the aggregator service once it's picked up. + publicKey: "", + privateKey: "", + signAlgo: SignatureAlgorithm.ECDSA_P256, + hashAlgo: HashAlgorithm.SHA2_256, + weight: 1000, + sequenceNumber: 0, + revoked: false, + }; + } + + private createDefaultAccount(): FlowAccount { + return { + address: "", + balance: 0, + blockId: "", + code: "", + createdAt: undefined, + deletedAt: undefined, + id: "", + isDefaultAccount: false, + keys: [], + tags: [], + updatedAt: undefined, + }; + } } diff --git a/shared/src/utils/index.ts b/shared/src/utils/index.ts index a5a9a0a90..2e3a5a5b6 100644 --- a/shared/src/utils/index.ts +++ b/shared/src/utils/index.ts @@ -1 +1 @@ -export * from "../../../packages/core/src/flow/fcl-value"; +export * from "../../../packages/core/src/fcl-value"; diff --git a/yarn.lock b/yarn.lock index efb6e824f..0c8d53ec7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1839,12 +1839,13 @@ "@onflowser/core" "*" "@onflowser/indexer" "*" -"@onflowser/indexer@*", "@onflowser/indexer@file:/Users/bartkozorog/Projects/flowser/packages/indexer": - "resolved" "file:packages/indexer" +"@onflowser/nodejs@*", "@onflowser/nodejs@file:/Users/bartkozorog/Projects/flowser/packages/nodejs": + "resolved" "file:packages/nodejs" "version" "1.0.0" dependencies: + "@onflow/fcl" "^1.6.0" "@onflowser/config" "*" - "@onflowser/core" "*" + "elliptic" "^6.5.4" "@onflowser/ui@*", "@onflowser/ui@file:/Users/bartkozorog/Projects/flowser/packages/ui": "resolved" "file:packages/ui" @@ -1875,14 +1876,6 @@ "swr" "^2.2.4" "yup" "^0.32.11" -"@onflowser/wallet@file:/Users/bartkozorog/Projects/flowser/packages/wallet": - "resolved" "file:packages/wallet" - "version" "1.0.0" - dependencies: - "@onflow/fcl" "^1.6.0" - "@onflowser/config" "*" - "elliptic" "^6.5.4" - "@pkgjs/parseargs@^0.11.0": "integrity" "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==" "resolved" "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz" From 00cb3190f41b498ff093573499f32bec746d0308 Mon Sep 17 00:00:00 2001 From: Bart Date: Sun, 15 Oct 2023 20:02:36 +0200 Subject: [PATCH 018/100] more migration to new electron app --- frontend/src/App.scss | 40 -- frontend/src/App.tsx | 375 ------------------ frontend/src/targets/electron/backend.ts | 2 +- .../components/loaders/ExitLoader.tsx | 15 - .../components/loaders/Loader.module.scss | 40 -- .../components/loaders/UpdateLoader.tsx | 23 -- frontend/src/targets/electron/index.tsx | 11 +- frontend/src/targets/electron/main.ts | 6 +- frontend/src/targets/electron/menu.ts | 98 ----- .../electron/services/app-update.service.ts | 80 ---- .../electron/services/logger.service.ts | 31 -- .../electron/services/sentry-main.service.ts | 26 -- .../services/sentry-renderer.service.ts | 34 -- .../electron/services/service-registry.ts | 17 - frontend/src/targets/web/index.tsx | 4 +- packages/core/package.json | 1 - packages/core/src/flow-indexer.service.ts | 16 +- packages/core/src/index.ts | 2 + packages/core/src/logger.ts | 7 + packages/nodejs/src/flow-cli.service.ts | 4 +- packages/nodejs/src/flow-config.service.ts | 7 +- packages/nodejs/src/flow-emulator.service.ts | 2 +- .../nodejs/src/flow-interactions.service.ts | 4 +- packages/nodejs/src/wallet.service.ts | 22 +- packages/ui/package.json | 12 +- .../AccountStorage/AccountStorage.tsx | 3 +- .../layouts/ProjectLayout/ProjectLayout.tsx | 12 +- .../misc/SideNavigation/SideNavigation.tsx | 4 +- packages/ui/src/contexts/analytics.service.ts | 64 --- .../src/contexts/platform-adapter.context.tsx | 16 +- packages/ui/src/contexts/projects.context.tsx | 3 +- .../src/contexts/service-registry.context.tsx | 27 +- .../ui/src/contexts/snapshots.context.tsx | 3 +- packages/ui/src/hooks/use-analytics.ts | 35 +- packages/ui/src/hooks/use-error-handler.ts | 4 +- .../interactions/contexts/outcome.context.tsx | 23 +- .../contexts/templates.context.tsx | 16 +- .../ProjectSettings/ProjectSettings.tsx | 9 +- .../SettingsSection/SettingsSection.tsx | 3 +- yarn.lock | 245 +++++++----- 40 files changed, 292 insertions(+), 1054 deletions(-) delete mode 100644 frontend/src/App.scss delete mode 100644 frontend/src/App.tsx delete mode 100644 frontend/src/targets/electron/components/loaders/ExitLoader.tsx delete mode 100644 frontend/src/targets/electron/components/loaders/Loader.module.scss delete mode 100644 frontend/src/targets/electron/components/loaders/UpdateLoader.tsx delete mode 100644 frontend/src/targets/electron/menu.ts delete mode 100644 frontend/src/targets/electron/services/app-update.service.ts delete mode 100644 frontend/src/targets/electron/services/logger.service.ts delete mode 100644 frontend/src/targets/electron/services/sentry-main.service.ts delete mode 100644 frontend/src/targets/electron/services/sentry-renderer.service.ts delete mode 100644 frontend/src/targets/electron/services/service-registry.ts create mode 100644 packages/core/src/logger.ts delete mode 100644 packages/ui/src/contexts/analytics.service.ts diff --git a/frontend/src/App.scss b/frontend/src/App.scss deleted file mode 100644 index c9f008c85..000000000 --- a/frontend/src/App.scss +++ /dev/null @@ -1,40 +0,0 @@ -@import "../../packages/ui/src/styles/colors"; -@import "../../packages/ui/src/styles/typography"; - -* { - margin: 0; - padding: 0; - box-sizing: content-box; - outline: none; - - &:focus-visible { - outline: 2px solid $blue; - } -} - -html, -body { - background: $gray-110; - font-family: $font-family-inter; - font-size: $font-size-normal; - font-style: normal; - font-weight: normal; - letter-spacing: $character-spacing-small; - line-height: $line-spacing-m; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - - min-height: 100%; - height: 100%; - - scroll-behavior: smooth; - - &::-webkit-scrollbar { - display: none; - } -} - -a { - text-decoration: none; - color: $blue; -} diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx deleted file mode 100644 index f46488431..000000000 --- a/frontend/src/App.tsx +++ /dev/null @@ -1,375 +0,0 @@ -import React, { ReactElement, ReactNode, useEffect } from "react"; -import { - createBrowserRouter, - createHashRouter, - Navigate, - Outlet, - RouteObject, - RouterProvider, - useLocation, - useParams, -} from "react-router-dom"; -import { Toaster } from "react-hot-toast"; -import { ProjectLayout } from "../../packages/ui/src/common/layouts/ProjectLayout/ProjectLayout"; -import "./App.scss"; -import { ProjectsManagerProvider } from "../../packages/ui/src/contexts/projects.context"; -import { ConfirmDialogProvider } from "../../packages/ui/src/contexts/confirm-dialog.context"; -import { QueryClientProvider } from "react-query"; -import { FlowserUsageRequirements } from "../../packages/ui/src/common/misc/FlowserUsageRequirements/FlowserUsageRequirements"; -import { - PlatformAdapterProvider, - PlatformAdapterState, -} from "../../packages/ui/src/contexts/platform-adapter.context"; -import { ConsentDialog } from "../../packages/ui/src/common/overlays/dialogs/consent/ConsentDialog"; -import { useAnalytics } from "../../packages/ui/src/hooks/use-analytics"; -import { ServiceRegistry } from "./services/service-registry"; -import { AnalyticEvent } from "../../packages/ui/src/contexts/analytics.service"; -import { InteractionsPage } from "../../packages/ui/src/interactions/InteractionsPage"; -import { InteractionRegistryProvider } from "../../packages/ui/src/interactions/contexts/interaction-registry.context"; -import { ProjectSettings } from "../../packages/ui/src/projects/ProjectSettings/ProjectSettings"; -import { useFlowserHooksApi } from "../../packages/ui/src/contexts/flowser-api.context"; -import { TransactionsTable } from "../../packages/ui/src/transactions/TransactionsTable/TransactionsTable"; -import { TransactionDetails } from "../../packages/ui/src/transactions/TransactionDetails/TransactionDetails"; -import { BlockDetails } from "../../packages/ui/src/blocks/BlockDetails/BlockDetails"; -import { BlocksTable } from "../../packages/ui/src/blocks/BlocksTable/BlocksTable"; -import { AccountDetails } from "../../packages/ui/src/accounts/AccountDetails/AccountDetails"; -import { AccountsTable } from "../../packages/ui/src/accounts/AccountsTable/AccountsTable"; -import { ProjectListPage } from "../../packages/ui/src/projects/ProjectListPage/ProjectListPage"; -import { ContractsTable } from "../../packages/ui/src/contracts/ContractsTable/ContractsTable"; -import { ContractDetails } from "../../packages/ui/src/contracts/ContractDetails/ContractDetails"; -import { EventsTable } from "../../packages/ui/src/events/EventsTable/EventsTable"; -import { createCrumbHandle } from "../../packages/ui/src/common/misc/Breadcrumbs/Breadcrumbs"; -import { TemplatesRegistryProvider } from "../../packages/ui/src/interactions/contexts/templates.context"; -import { BasicLayout } from "../../packages/ui/src/common/layouts/BasicLayout/BasicLayout"; -import { EventDetails } from "../../packages/ui/src/events/EventDetails/EventDetails"; -import { FlowConfigProvider } from "../../packages/ui/src/contexts/flow.context"; -import { SnapshotsManagerProvider } from "../../packages/ui/src/contexts/snapshots.context"; -import FullScreenLoading from "../../packages/ui/src/common/loaders/FullScreenLoading/FullScreenLoading"; - -const BrowserRouterEvents = (props: { children: ReactNode }): ReactElement => { - const location = useLocation(); - const { analyticsService } = ServiceRegistry.getInstance(); - - useEffect(() => { - analyticsService.track(AnalyticEvent.PAGE_VIEW, { - location, - }); - }, [location]); - - useEffect(() => { - // scroll to the top on every route change - window.scrollTo(0, 0); - }, [location]); - - return <>{props.children}; -}; - -export type FlowserClientAppProps = { - useHashRouter?: boolean; - platformAdapter: PlatformAdapterState; -}; - -export const queryClient = new QueryClient(); - -export const FlowserClientApp = ({ - useHashRouter, - platformAdapter, -}: FlowserClientAppProps): ReactElement => { - return ( - - - - - - - - - - - ); -}; - -const routes: RouteObject[] = [ - { - index: true, - element: , - }, - { - path: "projects", - element: ( - - - - - - - - - - ), - handle: createCrumbHandle({ - crumbName: "Projects", - }), - children: [ - { - index: true, - element: , - }, - { - path: "create", - element: ( - - - - ), - handle: createCrumbHandle({ - crumbName: "Create", - }), - }, - { - path: ":projectId", - element: ( - - - - - - - - ), - children: [ - { - index: true, - element: , - }, - { - path: "settings", - element: , - }, - { - path: "accounts", - handle: createCrumbHandle({ - crumbName: "Accounts", - }), - children: [ - { - index: true, - element: , - }, - { - path: ":accountId", - element: , - handle: createCrumbHandle({ - crumbName: "Details", - }), - }, - ], - }, - { - path: "blocks", - handle: createCrumbHandle({ - crumbName: "Blocks", - }), - children: [ - { - index: true, - element: , - }, - { - path: ":blockId", - element: , - handle: createCrumbHandle({ - crumbName: "Details", - }), - }, - ], - }, - { - path: "transactions", - handle: createCrumbHandle({ - crumbName: "Transactions", - }), - children: [ - { - index: true, - element: , - }, - { - path: ":transactionId", - element: , - handle: createCrumbHandle({ - crumbName: "Details", - }), - }, - ], - }, - { - path: "contracts", - handle: createCrumbHandle({ - crumbName: "Contracts", - }), - children: [ - { - index: true, - element: , - }, - { - path: ":contractId", - element: , - handle: createCrumbHandle({ - crumbName: "Details", - }), - }, - ], - }, - { - path: "events", - handle: createCrumbHandle({ - crumbName: "Events", - }), - children: [ - { - index: true, - element: , - }, - { - path: ":eventId", - element: , - handle: createCrumbHandle({ - crumbName: "Details", - }), - }, - ], - }, - { - path: "interactions", - children: [ - { - index: true, - element: , - }, - ], - }, - ], - }, - ], - }, -]; - -const browserRouter = createBrowserRouter(routes); -const hashRouter = createHashRouter(routes); - -function ConsentAnalytics() { - const { isConsented, setIsConsented } = useAnalytics(); - if (isConsented !== undefined) { - return null; - } - return ( - - ); -} - -function ProjectSettingsPage() { - const { projectId } = useParams(); - - return ; -} - -function TransactionsTablePage() { - const api = useFlowserHooksApi(); - const { data } = api.useGetTransactions(); - - if (!data) { - return ; - } - - return ; -} - -function TransactionDetailsPage() { - const { transactionId } = useParams(); - - return ; -} - -function BlocksTablePage() { - const api = useFlowserHooksApi(); - const { data } = api.useGetBlocks(); - - if (!data) { - return ; - } - - return ; -} - -function BlockDetailsPage() { - const { blockId } = useParams(); - - return ; -} - -function AccountsTablePage() { - const api = useFlowserHooksApi(); - const { data } = api.useGetAccounts(); - - if (!data) { - return ; - } - - return ; -} - -function AccountDetailsPage() { - const { accountId } = useParams(); - - return ; -} - -function ContractsTablePage() { - const api = useFlowserHooksApi(); - const { data } = api.useGetContracts(); - - if (!data) { - return ; - } - - return ; -} - -function ContractDetailsPage() { - const { contractId } = useParams(); - - return ; -} - -function EventsTablePage() { - const api = useFlowserHooksApi(); - const { data } = api.useGetEvents(); - - if (!data) { - return ; - } - - return ; -} - -function EventDetailsPage() { - const { eventId } = useParams(); - - return ; -} diff --git a/frontend/src/targets/electron/backend.ts b/frontend/src/targets/electron/backend.ts index 00565e1e5..4b4277a04 100644 --- a/frontend/src/targets/electron/backend.ts +++ b/frontend/src/targets/electron/backend.ts @@ -6,7 +6,7 @@ import { ProjectEntity, } from "@flowser/backend"; import { INestApplication } from "@nestjs/common"; -import { Logger } from "./services/logger.service"; +import { Logger } from "../../../../apps/electron/src/services/logger.service"; import crypto from "crypto"; export class FlowserBackend { diff --git a/frontend/src/targets/electron/components/loaders/ExitLoader.tsx b/frontend/src/targets/electron/components/loaders/ExitLoader.tsx deleted file mode 100644 index 24ee446dc..000000000 --- a/frontend/src/targets/electron/components/loaders/ExitLoader.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import { Spinner } from "../../../../../../packages/ui/src/common/loaders/Spinner/Spinner"; -import React, { ReactElement } from "react"; -import classes from "./Loader.module.scss"; - -export function ExitLoader(): ReactElement { - return ( - <> -
-
- - Flowser is exiting -
- - ); -} diff --git a/frontend/src/targets/electron/components/loaders/Loader.module.scss b/frontend/src/targets/electron/components/loaders/Loader.module.scss deleted file mode 100644 index f95671c6a..000000000 --- a/frontend/src/targets/electron/components/loaders/Loader.module.scss +++ /dev/null @@ -1,40 +0,0 @@ -@import "../../../../../../packages/ui/src/styles/colors"; -@import "../../../../../../packages/ui/src/styles/spacings"; -@import '../../../../../../packages/ui/src/styles/animations'; -@import "../../../../../../packages/ui/src/styles/typography"; - -.background { - @include fadeInAnimation(0.4s); - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - background: $gray-110; - opacity: 0.5; -} - -.root { - @include fadeInAnimation(0.4s); - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - backdrop-filter: blur(2px); - z-index: 100; - - .loader { - @include pulse(1s) - } - - .title { - color: $color-light-gray; - font-size: $font-size-large; - margin-top: $spacing-base; - } -} diff --git a/frontend/src/targets/electron/components/loaders/UpdateLoader.tsx b/frontend/src/targets/electron/components/loaders/UpdateLoader.tsx deleted file mode 100644 index 44fa11238..000000000 --- a/frontend/src/targets/electron/components/loaders/UpdateLoader.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import { Spinner } from "../../../../../../packages/ui/src/common/loaders/Spinner/Spinner"; -import React, { ReactElement } from "react"; -import classes from "./Loader.module.scss"; - -export type UpdateLoaderProps = { - loadingPercentage: number; -}; - -export function UpdateLoader({ - loadingPercentage, -}: UpdateLoaderProps): ReactElement { - return ( - <> -
-
- - - Installing update ({Math.round(loadingPercentage)}%) - -
- - ); -} diff --git a/frontend/src/targets/electron/index.tsx b/frontend/src/targets/electron/index.tsx index e28215a2e..41bc4a60f 100644 --- a/frontend/src/targets/electron/index.tsx +++ b/frontend/src/targets/electron/index.tsx @@ -1,13 +1,13 @@ import React, { useState } from "react"; import ReactDOM from "react-dom"; -import "App.scss"; -import { FlowserClientApp } from "App"; +import "apps/electron/src/renderer/App.scss"; +import { FlowserClientApp } from "apps/electron/src/renderer/router"; import reportWebVitals from "reportWebVitals"; // Note that imports paths must be relative to project root // because this file is copied to src/index.tsx before build -import { ExitLoader } from "targets/electron/components/loaders/ExitLoader"; -import { UpdateLoader } from "targets/electron/components/loaders/UpdateLoader"; -import { SentryRendererService } from "targets/electron/services/sentry-renderer.service"; +import { ExitLoader } from "../../../../apps/electron/src/renderer/components/loaders/ExitLoader"; +import { UpdateLoader } from "../../../../apps/electron/src/renderer/components/loaders/UpdateLoader"; +import { SentryRendererService } from "../../../../apps/electron/src/services/sentry-renderer.service"; declare global { interface Window { @@ -56,7 +56,6 @@ function Root() { { - setupMenu(win); + // setupMenu(win); createWindow(); appUpdateService.checkForUpdatesAndNotify({ silent: true, diff --git a/frontend/src/targets/electron/menu.ts b/frontend/src/targets/electron/menu.ts deleted file mode 100644 index c24f35383..000000000 --- a/frontend/src/targets/electron/menu.ts +++ /dev/null @@ -1,98 +0,0 @@ -import { app, BrowserWindow, Menu, shell } from "electron"; -import MenuItemConstructorOptions = Electron.MenuItemConstructorOptions; -import { ServiceRegistry } from "./services/service-registry"; - -const { appUpdateService } = ServiceRegistry.getInstance(); - -const name = app.getName(); - -export function setupMenu(targetWindow: BrowserWindow): void { - const template: MenuItemConstructorOptions[] = [ - { - label: name, - submenu: [ - { - label: "About " + name, - role: "about", - }, - { - label: "Check for updates", - async click(menuItem) { - menuItem.enabled = false; - try { - await appUpdateService.checkForUpdatesAndNotify({ - silent: false, - targetWindow, - }); - } finally { - menuItem.enabled = true; - } - }, - }, - { - label: "Quit", - accelerator: "Command+Q", - click() { - app.quit(); - }, - }, - ], - }, - { - label: "Edit", - submenu: [ - { - label: "Cut", - accelerator: "Command+X", - role: "cut", - }, - { - label: "Copy", - accelerator: "Command+C", - role: "copy", - }, - { - label: "Paste", - accelerator: "Command+V", - role: "paste", - }, - { - label: "Select All", - accelerator: "Command+A", - role: "selectAll", - }, - ], - }, - { - label: "View", - submenu: [ - { role: "reload" }, - { role: "forceReload" }, - { role: "toggleDevTools" }, - { type: "separator" }, - { role: "resetZoom" }, - { role: "zoomIn" }, - { role: "zoomOut" }, - { type: "separator" }, - { role: "togglefullscreen" }, - ], - }, - { - label: "Window", - submenu: [{ role: "minimize" }, { role: "zoom" }], - }, - { - role: "help", - submenu: [ - { - label: "Learn More", - click: async () => { - await shell.openExternal("https://github.com/onflowser/flowser"); - }, - }, - ], - }, - ]; - const menu = Menu.buildFromTemplate(template); - Menu.setApplicationMenu(menu); -} diff --git a/frontend/src/targets/electron/services/app-update.service.ts b/frontend/src/targets/electron/services/app-update.service.ts deleted file mode 100644 index d04e14bf7..000000000 --- a/frontend/src/targets/electron/services/app-update.service.ts +++ /dev/null @@ -1,80 +0,0 @@ -import { autoUpdater } from "electron-updater"; -import { BrowserWindow, dialog } from "electron"; - -export type RegisterListenersOptions = { - silent?: boolean; - targetWindow: BrowserWindow; -}; - -export class AppUpdateService { - async checkForUpdatesAndNotify( - options: RegisterListenersOptions - ): Promise { - this.registerListeners(options); - await autoUpdater.checkForUpdatesAndNotify(); - } - - private registerListeners(options?: RegisterListenersOptions) { - const { webContents } = options?.targetWindow ?? {}; - autoUpdater.autoDownload = false; - - autoUpdater.on("checking-for-update", () => { - console.log("Checking for update..."); - }); - - autoUpdater.on("download-progress", (progress) => { - console.log(`Download speed ${progress.bytesPerSecond}`); - console.log( - `Downloaded ${progress.percent}% (${progress.transferred}/${progress.total})` - ); - webContents?.send("update-download-progress", progress.percent); - }); - - autoUpdater.once("update-available", () => { - dialog - .showMessageBox({ - type: "info", - title: "Found Updates", - message: "Found updates, do you want update now?", - buttons: ["Yes", "No"], - }) - .then((buttonIndex) => { - if (buttonIndex.response === 0) { - webContents?.send("update-download-start"); - autoUpdater.downloadUpdate(); - } - }); - }); - - autoUpdater.once("update-not-available", () => { - if (!options?.silent) { - dialog.showMessageBox({ - title: "No Updates", - message: "Current version is up-to-date.", - }); - } - }); - - autoUpdater.once("update-downloaded", () => { - webContents?.send("update-download-end"); - dialog - .showMessageBox({ - title: "Install Updates", - message: "Updates downloaded, application will be quit for update...", - }) - .then(() => { - setImmediate(() => autoUpdater.quitAndInstall()); - }); - }); - - autoUpdater.on("error", (error) => { - console.log("Error in auto-updater:", error); - if (!options?.silent) { - dialog.showErrorBox( - "Update error", - error == null ? "unknown" : (error.stack || error).toString() - ); - } - }); - } -} diff --git a/frontend/src/targets/electron/services/logger.service.ts b/frontend/src/targets/electron/services/logger.service.ts deleted file mode 100644 index ab45694ca..000000000 --- a/frontend/src/targets/electron/services/logger.service.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { LoggerService } from "@nestjs/common"; -import logger from "electron-log"; - -// Log file location: -// - Linux: ~/.config/{app name}/logs/{process type}.log -// - macOS: ~/Library/Logs/{app name}/{process type}.log -// - Windows: %USERPROFILE%\AppData\Roaming\{app name}\logs\{process type}.log - -// See https://github.com/megahertz/electron-log - -export class Logger implements LoggerService { - log(message: unknown, ...optionalParams: unknown[]): void { - logger.log(message, ...optionalParams); - } - - error(message: unknown, ...optionalParams: unknown[]): void { - logger.error(message, ...optionalParams); - } - - warn(message: unknown, ...optionalParams: unknown[]): void { - logger.warn(message, ...optionalParams); - } - - debug?(message: unknown, ...optionalParams: unknown[]): void { - logger.debug(message, ...optionalParams); - } - - verbose?(message: unknown, ...optionalParams: unknown[]): void { - logger.verbose(message, ...optionalParams); - } -} diff --git a/frontend/src/targets/electron/services/sentry-main.service.ts b/frontend/src/targets/electron/services/sentry-main.service.ts deleted file mode 100644 index 700fbbc99..000000000 --- a/frontend/src/targets/electron/services/sentry-main.service.ts +++ /dev/null @@ -1,26 +0,0 @@ -import * as Sentry from "@sentry/electron"; -import { FingerprintService } from "../../../services/fingerprint.service"; - -const enableAnalytics = process.env.NODE_ENV === "production"; - -export class SentryMainService { - private fingerprintService: FingerprintService; - constructor() { - this.fingerprintService = new FingerprintService(); - } - async init(): Promise { - if (!enableAnalytics) { - return; - } - Sentry.init({ - dsn: "https://38a653b591734e0bbe2695a321f554d9@o1430444.ingest.sentry.io/6781494", - }); - try { - Sentry.setUser({ - id: await this.fingerprintService.getUserFingerprintId(), - }); - } catch (e) { - console.log("Failed to identify user:", e); - } - } -} diff --git a/frontend/src/targets/electron/services/sentry-renderer.service.ts b/frontend/src/targets/electron/services/sentry-renderer.service.ts deleted file mode 100644 index 9dd000505..000000000 --- a/frontend/src/targets/electron/services/sentry-renderer.service.ts +++ /dev/null @@ -1,34 +0,0 @@ -import * as Sentry from "@sentry/electron/renderer"; -import { FingerprintService } from "../../../services/fingerprint.service"; -import { - CaptureErrorOptions, - MonitoringServiceInt, -} from "../../../services/monitoring.service"; - -const enableAnalytics = process.env.NODE_ENV === "production"; - -export class SentryRendererService implements MonitoringServiceInt { - private fingerprintService: FingerprintService; - constructor() { - this.fingerprintService = new FingerprintService(); - } - async init(): Promise { - if (!enableAnalytics) { - return; - } - Sentry.init({ - dsn: "https://38a653b591734e0bbe2695a321f554d9@o1430444.ingest.sentry.io/6781494", - }); - try { - Sentry.setUser({ - id: await this.fingerprintService.getUserFingerprintId(), - }); - } catch (e) { - console.log("Failed to identify user:", e); - } - } - - captureError(error: unknown, options?: CaptureErrorOptions): void { - Sentry.captureException(error, options); - } -} diff --git a/frontend/src/targets/electron/services/service-registry.ts b/frontend/src/targets/electron/services/service-registry.ts deleted file mode 100644 index d430621a2..000000000 --- a/frontend/src/targets/electron/services/service-registry.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { AppUpdateService } from "./app-update.service"; - -export class ServiceRegistry { - private static instance: ServiceRegistry; - public appUpdateService: AppUpdateService; - - constructor() { - this.appUpdateService = new AppUpdateService(); - } - - static getInstance(): ServiceRegistry { - if (!ServiceRegistry.instance) { - ServiceRegistry.instance = new ServiceRegistry(); - } - return ServiceRegistry.instance; - } -} diff --git a/frontend/src/targets/web/index.tsx b/frontend/src/targets/web/index.tsx index 8ed161fec..94e8b83ea 100644 --- a/frontend/src/targets/web/index.tsx +++ b/frontend/src/targets/web/index.tsx @@ -1,7 +1,7 @@ import React from "react"; import ReactDOM from "react-dom"; -import "App.scss"; -import { FlowserClientApp } from "App"; +import "apps/electron/src/renderer/App.scss"; +import { FlowserClientApp } from "apps/electron/src/renderer/router"; import reportWebVitals from "reportWebVitals"; async function renderApp() { diff --git a/packages/core/package.json b/packages/core/package.json index 572487c9e..5e72b3896 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -13,7 +13,6 @@ "dependencies": { "@onflowser/config": "*", "@onflowser/api": "*", - "@nestjs/common": "^8.0.0", "@onflow/fcl": "^1.6.0", "axios": "^0.21.4", "node-abort-controller": "^3.0.1" diff --git a/packages/core/src/flow-indexer.service.ts b/packages/core/src/flow-indexer.service.ts index 3c2e478fe..322421b51 100644 --- a/packages/core/src/flow-indexer.service.ts +++ b/packages/core/src/flow-indexer.service.ts @@ -1,4 +1,3 @@ -import { Injectable, Logger } from "@nestjs/common"; import * as flowResource from "./flow-gateway.service"; import * as flowserResource from "@onflowser/api"; import { @@ -11,6 +10,7 @@ import { IFlowInteractions } from "./flow-interactions.service"; import { FlowAccountStorageService } from "./flow-storage.service"; import { FlowApiStatus, FlowGatewayService } from "./flow-gateway.service"; import { ensurePrefixedAddress } from "./utils"; +import { IFlowserLogger } from './logger'; // See https://developers.flow.com/cadence/language/core-events enum FlowCoreEventType { @@ -43,11 +43,9 @@ export type ExtendedFlowEvent = flowResource.FlowEvent & { transactionId: string; }; -@Injectable() export class FlowIndexerService { - private readonly logger = new Logger(FlowIndexerService.name); - constructor( + private readonly logger: IFlowserLogger, private transactionIndex: IResourceIndex, private accountIndex: IResourceIndex, private blockIndex: IResourceIndex, @@ -56,7 +54,7 @@ export class FlowIndexerService { private accountStorageIndex: IResourceIndex, private flowStorageService: FlowAccountStorageService, private flowGatewayService: FlowGatewayService, - private flowInteractionsService: IFlowInteractions + private flowInteractionsService: IFlowInteractions, ) {} async processBlockchainData(): Promise { @@ -168,8 +166,8 @@ export class FlowIndexerService { await this.flowGatewayService .getTxStatusSubscription(transactionId) .onceSealed(); - } catch (e) { - this.logger.debug(`Failed to wait on sealed transaction:`, e); + } catch (e: unknown) { + this.logger.error("Failed to wait on sealed transaction", e); } finally { // Once transaction is sealed, status won't change anymore. unsubscribe(); @@ -179,8 +177,8 @@ export class FlowIndexerService { private async storeBlockData(data: BlockData) { const blockPromise = this.blockIndex .add(this.createBlockEntity({ block: data.block })) - .catch((e: any) => - this.logger.error(`block save error: ${e.message}`, e.stack) + .catch((e: unknown) => + this.logger.error("block save error", e) ); const transactionPromises = Promise.all( data.transactions.map((transaction) => diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 7a94572e0..cd2b03094 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -1,8 +1,10 @@ export * from "./fcl-value"; export * from "./utils"; export * from "./in-memory-index"; +export * from "./logger" export * from "./flow-gateway.service"; export * from "./flow-snapshots.service"; export * from "./flow-storage.service"; export * from "./flow-indexer.service"; +export * from "./flow-interactions.service"; diff --git a/packages/core/src/logger.ts b/packages/core/src/logger.ts new file mode 100644 index 000000000..1e6df72e0 --- /dev/null +++ b/packages/core/src/logger.ts @@ -0,0 +1,7 @@ +export interface IFlowserLogger { + error(message: any, error?: unknown): void; + log(message: any): void; + warn(message: any): void; + debug(message: any): void; + verbose(message: any): void; +} diff --git a/packages/nodejs/src/flow-cli.service.ts b/packages/nodejs/src/flow-cli.service.ts index 7ffb7267f..cbff99133 100644 --- a/packages/nodejs/src/flow-cli.service.ts +++ b/packages/nodejs/src/flow-cli.service.ts @@ -1,8 +1,8 @@ import { ManagedProcess, ProcessOutputSource, -} from "@onflowser/core/dist/processes/managed-process"; -import { ProcessManagerService } from "@onflowser/core/dist/processes/process-manager.service"; +} from "./processes/managed-process"; +import { ProcessManagerService } from "./processes/process-manager.service"; import { randomUUID } from "crypto"; import { HashAlgorithm, SignatureAlgorithm } from "@onflowser/api"; diff --git a/packages/nodejs/src/flow-config.service.ts b/packages/nodejs/src/flow-config.service.ts index 3505ff86c..fe8e529ea 100644 --- a/packages/nodejs/src/flow-config.service.ts +++ b/packages/nodejs/src/flow-config.service.ts @@ -2,7 +2,7 @@ import { readFile, writeFile, watch } from "fs/promises"; import * as path from "path"; import { AbortController } from "node-abort-controller"; import * as fs from "fs"; -import { isObject } from "@onflowser/core/dist/utils"; +import { IFlowserLogger, isObject } from '@onflowser/core'; type FlowAddress = string; @@ -89,6 +89,9 @@ export class FlowConfigService { private configFileName = "flow.json"; private workingDirectoryPath: string | undefined; + constructor (private readonly logger: IFlowserLogger) { + } + public async configure(config: FlowConfigServiceConfig) { this.workingDirectoryPath = config.workingDirectoryPath; await this.reload(); @@ -220,7 +223,7 @@ export class FlowConfigService { const data = await this.readProjectFile(this.configFileName); this.config = JSON.parse(data); } catch (e) { - console.error("Config read error", e); + this.logger.error("Config read error", e); } } diff --git a/packages/nodejs/src/flow-emulator.service.ts b/packages/nodejs/src/flow-emulator.service.ts index 01c451443..5e2474e24 100644 --- a/packages/nodejs/src/flow-emulator.service.ts +++ b/packages/nodejs/src/flow-emulator.service.ts @@ -1,5 +1,5 @@ import { ManagedProcess } from "./processes/managed-process"; -import { isDefined, waitForMs } from "@onflowser/core/dist/utils"; +import { isDefined, waitForMs } from "@onflowser/core"; import { EventEmitter } from "node:events"; import { FlowEmulatorConfig, diff --git a/packages/nodejs/src/flow-interactions.service.ts b/packages/nodejs/src/flow-interactions.service.ts index ea356d6e7..dda286f21 100644 --- a/packages/nodejs/src/flow-interactions.service.ts +++ b/packages/nodejs/src/flow-interactions.service.ts @@ -1,9 +1,9 @@ import * as fs from "fs/promises"; import * as path from "path"; import { GoBindingsService } from "./go-bindings.service"; -import { isDefined } from "@onflowser/core/dist/utils"; +import { isDefined } from "@onflowser/core"; import { InteractionKind, ParsedInteractionOrError } from "@onflowser/api"; -import { IFlowInteractions } from "@onflowser/core/dist/flow-interactions.service"; +import { IFlowInteractions } from "@onflowser/core"; export interface InteractionTemplate { id: string; diff --git a/packages/nodejs/src/wallet.service.ts b/packages/nodejs/src/wallet.service.ts index aef7600aa..ecef5ed2e 100644 --- a/packages/nodejs/src/wallet.service.ts +++ b/packages/nodejs/src/wallet.service.ts @@ -1,12 +1,7 @@ -import { - Injectable, - Logger, - PreconditionFailedException, -} from "@nestjs/common"; import { ec as EC } from "elliptic"; import { SHA3 } from "sha3"; import { FlowCliService, KeyWithWeight } from "./flow-cli.service"; -import { ensurePrefixedAddress } from "../../core/src/utils"; +import { ensurePrefixedAddress, IFlowserLogger } from "@onflowser/core"; import { FclArgumentWithMetadata, FclValueUtils, @@ -48,11 +43,10 @@ const ec: EC = new EC("p256"); // https://developers.flow.com/tooling/flow-cli/accounts/create-accounts#key-weight const defaultKeyWeight = 1000; -@Injectable() export class WalletService { - private readonly logger = new Logger(WalletService.name); constructor( + private readonly logger: IFlowserLogger, private readonly cliService: FlowCliService, private readonly flowGateway: FlowGatewayService, private readonly flowConfig: FlowConfigService, @@ -79,7 +73,7 @@ export class WalletService { function getAuthFunction(address: string) { const authFunction = authorizationFunctionsByAddress.get(address); if (authFunction === undefined) { - throw new PreconditionFailedException( + throw new Error( `Authorization function not found for: ${address}` ); } @@ -138,9 +132,8 @@ export class WalletService { const isManagedAccount = credentialsWithPrivateKeys.length > 0; if (!isManagedAccount) { - throw new PreconditionFailedException( - `Authorizer account ${address} isn't managed by Flowser.`, - "Flowser doesn't store private keys of the provided account." + throw new Error( + `Authorizer account ${address} isn't managed by Flowser.` ); } @@ -214,9 +207,8 @@ export class WalletService { } await this.accountIndex.add(account); - } catch (e) { - // Ignore - this.logger.debug("Managed account import failed", e); + } catch (e: unknown) { + this.logger.error("Managed account import failed", e); } }) ); diff --git a/packages/ui/package.json b/packages/ui/package.json index 2a9ae1220..13e0263a3 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -5,19 +5,21 @@ "files": [ "./dist/*" ], - "types": "./dist/flowser", + "types": "./src/index.ts", "scripts": { "build": "vite build" }, "devDependencies": { "@onflowser/config": "*", - "@types/react": "^17.0.67", - "@types/react-dom": "^17.0.21", + "@types/react": "^18.2.0", "sass": "^1.69.0", "typescript": "^4.9.5", "vite-plugin-svgr": "^4.1.0", "@types/react-helmet": "^6.1.7" }, + "peerDependencies": { + "react": "^18.2.0" + }, "dependencies": { "yup": "^0.32.11", "@szhsin/react-menu": "4.0.3", @@ -35,13 +37,13 @@ "date-fns": "^2.30.0", "dateformat": "^5.0.3", "mixpanel-browser": "^2.47.0", - "react": "^18.0.0", "react-helmet": "^6.1.0", "react-hot-toast": "^2.4.1", "react-icons": "^4.11.0", "react-json-view": "^1.21.3", "react-router-dom": "6.15.0", "react-timeago": "^7.2.0", - "swr": "^2.2.4" + "swr": "^2.2.4", + "reactjs-popup": "2.0.5" } } diff --git a/packages/ui/src/accounts/AccountStorage/AccountStorage.tsx b/packages/ui/src/accounts/AccountStorage/AccountStorage.tsx index 3f164c797..469f7a150 100644 --- a/packages/ui/src/accounts/AccountStorage/AccountStorage.tsx +++ b/packages/ui/src/accounts/AccountStorage/AccountStorage.tsx @@ -1,7 +1,6 @@ -import { useAnalytics } from "../../hooks/use-analytics"; +import { AnalyticEvent, useAnalytics } from "../../hooks/use-analytics"; import { useUrlQuery } from "../../hooks/use-url-query"; import React, { ReactElement, useEffect, useState } from "react"; -import { AnalyticEvent } from "../../contexts/analytics.service"; import { PublicPrivateStorageCard } from "../PublicPrivateStorageCard/PublicPrivateStorageCard"; import { InternalStorageCard } from "../InternalStorageCard/InternalStorageCard"; import classNames from "classnames"; diff --git a/packages/ui/src/common/layouts/ProjectLayout/ProjectLayout.tsx b/packages/ui/src/common/layouts/ProjectLayout/ProjectLayout.tsx index fa49fbf78..0004d9ccb 100644 --- a/packages/ui/src/common/layouts/ProjectLayout/ProjectLayout.tsx +++ b/packages/ui/src/common/layouts/ProjectLayout/ProjectLayout.tsx @@ -1,4 +1,4 @@ -import React, { FunctionComponent } from "react"; +import React, { ReactNode } from "react"; import classes from "./ProjectLayout.module.scss"; import { Logs } from "../../../logs/Logs"; import { useLocation } from "react-router-dom"; @@ -6,10 +6,14 @@ import classNames from "classnames"; import { Breadcrumbs } from "../../misc/Breadcrumbs/Breadcrumbs"; import { SideNavigation } from "../../misc/SideNavigation/SideNavigation"; +type ProjectLayoutProps = { + children: ReactNode; +}; + export const scrollableElementId = "flowser-scroll"; // TODO(restructure): Move this to app folder -export const ProjectLayout: FunctionComponent = ({ children }) => { +export function ProjectLayout(props: ProjectLayoutProps) { const location = useLocation(); const showMargin = !location.pathname.endsWith("interactions"); @@ -24,10 +28,10 @@ export const ProjectLayout: FunctionComponent = ({ children }) => { [classes.bodyWithBorderSpacing]: showMargin, })} > - {children} + {props.children}
); -}; +} diff --git a/packages/ui/src/common/misc/SideNavigation/SideNavigation.tsx b/packages/ui/src/common/misc/SideNavigation/SideNavigation.tsx index 2c3136b5b..0145f109f 100644 --- a/packages/ui/src/common/misc/SideNavigation/SideNavigation.tsx +++ b/packages/ui/src/common/misc/SideNavigation/SideNavigation.tsx @@ -1,12 +1,12 @@ import React, { ReactElement } from "react"; import classes from "./SideNavigation.module.scss"; import { useMatches } from "react-router-dom"; -import { FlowserIcon } from "packages/ui/src/components/icons/FlowserIcon"; import { SizedBox } from "../SizedBox/SizedBox"; import classNames from "classnames"; import { useProjectManager } from "../../../contexts/projects.context"; import { buildProjectUrl, ProjectLink } from "../../links/ProjectLink"; -import { useCurrentProjectId } from "frontend/src/hooks/use-current-project-id"; +import { FlowserIcon } from "../../icons/FlowserIcon"; +import { useCurrentProjectId } from "../../../hooks/use-current-project-id"; type SideNavigationProps = { className?: string; diff --git a/packages/ui/src/contexts/analytics.service.ts b/packages/ui/src/contexts/analytics.service.ts deleted file mode 100644 index 68165834e..000000000 --- a/packages/ui/src/contexts/analytics.service.ts +++ /dev/null @@ -1,64 +0,0 @@ -import mixpanel, { Dict } from "mixpanel-browser"; -import { FingerprintService } from "../../../../frontend/src/services/fingerprint.service"; - -export enum AnalyticEvent { - PAGE_VIEW = "page_view", - - PROJECT_REMOVED = "project_removed", - PROJECT_CREATED = "project_created", - PROJECT_STARTED = "project_started", - - CLICK_MINIMIZE_STORAGE_CARD = "click_minimize_storage_card", - CLICK_EXPAND_STORAGE_CARD = "click_expand_storage_card", - CLICK_PROJECT_SETTINGS = "click_project_settings", - CLICK_CREATE_SNAPSHOT = "click_create_snapshot", - CLICK_CHECKOUT_SNAPSHOT = "click_checkout_snapshot", - - CREATE_SNAPSHOT = "create_snapshot", - CHECKOUT_SNAPSHOT = "checkout_snapshot", - - RESTART_PROCESS = "restart_process", -} - -const enableAnalytics = process.env.NODE_ENV === "production"; - -export class AnalyticsService { - private fingerprintService: FingerprintService; - - constructor() { - this.fingerprintService = new FingerprintService(); - this.init(); - } - async init(): Promise { - mixpanel.init("1b358339dc3d7476217983016b83fcab", { - debug: !enableAnalytics, - }); - - try { - mixpanel.identify(await this.fingerprintService.getUserFingerprintId()); - } catch (e) { - console.error("Failed to identify user", e); - } - } - - disable(): void { - mixpanel.opt_out_tracking(); - } - - enable(): void { - mixpanel.opt_in_tracking(); - } - - track(event: AnalyticEvent, properties: Dict = {}): void { - if (!enableAnalytics) { - console.log("Analytics disabled. Skipping event ", event); - return; - } - - try { - mixpanel.track(event, properties); - } catch (e) { - console.error("Mixpanel error:", e); - } - } -} diff --git a/packages/ui/src/contexts/platform-adapter.context.tsx b/packages/ui/src/contexts/platform-adapter.context.tsx index f09fdc179..586225131 100644 --- a/packages/ui/src/contexts/platform-adapter.context.tsx +++ b/packages/ui/src/contexts/platform-adapter.context.tsx @@ -4,25 +4,23 @@ import React, { ReactNode, useContext, } from "react"; -import { MonitoringServiceInt } from "../../../../frontend/src/services/monitoring.service"; -export type PlatformAdapterState = { - onPickProjectPath?: () => Promise; - monitoringService?: MonitoringServiceInt; +export type FilePicker = { + pickDirectory?: () => Promise; }; -const PlatformAdapterContext = createContext( +const PlatformAdapterContext = createContext( undefined as never ); -export type PlatformAdapterProviderProps = PlatformAdapterState & { +export type FilePickerProviderProps = FilePicker & { children: ReactNode; }; -export function PlatformAdapterProvider({ +export function FilePickerProvider({ children, ...values -}: PlatformAdapterProviderProps): ReactElement { +}: FilePickerProviderProps): ReactElement { return ( {children} @@ -30,7 +28,7 @@ export function PlatformAdapterProvider({ ); } -export function usePlatformAdapter(): PlatformAdapterState { +export function useFilePicker(): FilePicker { const context = useContext(PlatformAdapterContext); if (!context) { throw new Error("Platform adapter context not found"); diff --git a/packages/ui/src/contexts/projects.context.tsx b/packages/ui/src/contexts/projects.context.tsx index 22be41a51..894cd6749 100644 --- a/packages/ui/src/contexts/projects.context.tsx +++ b/packages/ui/src/contexts/projects.context.tsx @@ -2,8 +2,7 @@ import React, { createContext, ReactElement, useContext } from "react"; import toast from "react-hot-toast"; import { useConfirmDialog } from "./confirm-dialog.context"; import { useFlowserHooksApi } from "./flowser-api.context"; -import { useAnalytics } from "../hooks/use-analytics"; -import { AnalyticEvent } from "./analytics.service"; +import { AnalyticEvent, useAnalytics } from "../hooks/use-analytics"; import { useNavigate } from "react-router-dom"; import { Helmet } from "react-helmet"; import { useErrorHandler } from "../hooks/use-error-handler"; diff --git a/packages/ui/src/contexts/service-registry.context.tsx b/packages/ui/src/contexts/service-registry.context.tsx index 504e1edf2..8084a4d3f 100644 --- a/packages/ui/src/contexts/service-registry.context.tsx +++ b/packages/ui/src/contexts/service-registry.context.tsx @@ -1,20 +1,20 @@ import { createContext, useContext } from "react"; -import { AnalyticsService } from "./analytics.service"; import { FlowserProject } from "@onflowser/api"; -interface FlowserWalletService { +interface IWalletService { // TODO(restructure): Provide request/response type sendTransaction(request: any): Promise; createAccount(): Promise; } -interface SnapshotService { +interface ISnapshotService { // TODO(restructure): Provide request/response type create(request: any): Promise; checkoutBlock(request: any): Promise; + rollback(request: any): Promise; } -interface FlowserProjectService { +interface IProjectService { remove(projectId: string): Promise; // TODO(restructure): Can we remove these methods unUseCurrentProject(): Promise; @@ -23,11 +23,22 @@ interface FlowserProjectService { getDefaultProjectInfo(): Promise; } +interface IAnalyticsService { + disable(): void; + enable(): void; + track(event: string, properties?: Record): void; +} + +interface IMonitoringService { + captureError(error: unknown, options?: Record): void; +} + type ServiceRegistry = { - walletService: FlowserWalletService; - snapshotService: SnapshotService; - projectsService: FlowserProjectService; - analyticsService: AnalyticsService; + walletService: IWalletService; + snapshotService: ISnapshotService; + projectsService: IProjectService; + analyticsService: IAnalyticsService; + monitoringService: IMonitoringService; }; const ServiceRegistryContext = createContext( diff --git a/packages/ui/src/contexts/snapshots.context.tsx b/packages/ui/src/contexts/snapshots.context.tsx index 2d7318fd7..aa84d4955 100644 --- a/packages/ui/src/contexts/snapshots.context.tsx +++ b/packages/ui/src/contexts/snapshots.context.tsx @@ -10,8 +10,7 @@ import toast from "react-hot-toast"; import { useConfirmDialog } from "./confirm-dialog.context"; import { useFlowserHooksApi } from "./flowser-api.context"; import { useErrorHandler } from "../hooks/use-error-handler"; -import { useAnalytics } from "../hooks/use-analytics"; -import { AnalyticEvent } from "./analytics.service"; +import { AnalyticEvent, useAnalytics } from "../hooks/use-analytics"; import { FlowUtils } from "../utils/flow-utils"; import { SnapshotDialog } from "../common/overlays/dialogs/snapshot/SnapshotDialog"; import { useProjectManager } from "./projects.context"; diff --git a/packages/ui/src/hooks/use-analytics.ts b/packages/ui/src/hooks/use-analytics.ts index bdef23dca..f62bc83f3 100644 --- a/packages/ui/src/hooks/use-analytics.ts +++ b/packages/ui/src/hooks/use-analytics.ts @@ -1,15 +1,32 @@ -import { useEffect } from "react"; -import { useLocalStorage } from "@uidotdev/usehooks"; -import { AnalyticEvent } from "../contexts/analytics.service"; -import { Dict } from "mixpanel-browser"; -import { useFlowserHooksApi } from "../contexts/flowser-api.context"; -import { useCurrentProjectId } from "./use-current-project-id"; -import { useServiceRegistry } from "../contexts/service-registry.context"; +import { useEffect } from 'react'; +import { useLocalStorage } from '@uidotdev/usehooks'; +import { useFlowserHooksApi } from '../contexts/flowser-api.context'; +import { useCurrentProjectId } from './use-current-project-id'; +import { useServiceRegistry } from '../contexts/service-registry.context'; + +export enum AnalyticEvent { + PAGE_VIEW = 'page_view', + + PROJECT_REMOVED = 'project_removed', + PROJECT_CREATED = 'project_created', + PROJECT_STARTED = 'project_started', + + CLICK_MINIMIZE_STORAGE_CARD = 'click_minimize_storage_card', + CLICK_EXPAND_STORAGE_CARD = 'click_expand_storage_card', + CLICK_PROJECT_SETTINGS = 'click_project_settings', + CLICK_CREATE_SNAPSHOT = 'click_create_snapshot', + CLICK_CHECKOUT_SNAPSHOT = 'click_checkout_snapshot', + + CREATE_SNAPSHOT = 'create_snapshot', + CHECKOUT_SNAPSHOT = 'checkout_snapshot', + + RESTART_PROCESS = 'restart_process', +} type Analytics = { setIsConsented: (isConsented: boolean) => void; isConsented: boolean | undefined; - track: (event: AnalyticEvent, properties?: Dict) => void; + track: (event: AnalyticEvent, properties?: Record) => void; }; export function useAnalytics(): Analytics { @@ -30,7 +47,7 @@ export function useAnalytics(): Analytics { } }, [isConsented]); - function track(event: AnalyticEvent, properties?: Dict) { + function track(event: AnalyticEvent, properties?: Record) { return analyticsService.track(event, { ...properties, projectName: currentProject?.name, diff --git a/packages/ui/src/hooks/use-error-handler.ts b/packages/ui/src/hooks/use-error-handler.ts index 4211acfef..8ea05c2c1 100644 --- a/packages/ui/src/hooks/use-error-handler.ts +++ b/packages/ui/src/hooks/use-error-handler.ts @@ -1,13 +1,13 @@ import { CommonUtils } from "../utils/common-utils"; import toast from "react-hot-toast"; -import { usePlatformAdapter } from "../contexts/platform-adapter.context"; +import { useServiceRegistry } from '../contexts/service-registry.context'; export type ErrorHandlerState = { handleError: (error: unknown) => void; }; export function useErrorHandler(componentName: string): ErrorHandlerState { - const { monitoringService } = usePlatformAdapter(); + const { monitoringService } = useServiceRegistry(); function handleError(error: unknown) { console.error(`[${componentName}] handling error:`, error); diff --git a/packages/ui/src/interactions/contexts/outcome.context.tsx b/packages/ui/src/interactions/contexts/outcome.context.tsx index 4b2fb39ae..565aaf0e2 100644 --- a/packages/ui/src/interactions/contexts/outcome.context.tsx +++ b/packages/ui/src/interactions/contexts/outcome.context.tsx @@ -9,15 +9,16 @@ import { CommonUtils } from "../../utils/common-utils"; import * as fcl from "@onflow/fcl"; import { useInteractionDefinitionManager } from "./definition.context"; import toast from "react-hot-toast"; -import { useQuery } from "react-query"; import { InteractionDefinition, InteractionOutcome } from "../core/core-types"; -import { FlowTransactionArgument, InteractionKind } from '@onflowser/api'; +import { FlowTransactionArgument, InteractionKind } from "@onflowser/api"; import { FclArgBuilder, FclArgumentWithMetadata, - FclTypeLookup, FclValueUtils -} from '@onflowser/core'; -import { useServiceRegistry } from '../../contexts/service-registry.context'; + FclTypeLookup, + FclValueUtils, +} from "@onflowser/core"; +import { useServiceRegistry } from "../../contexts/service-registry.context"; +import useSWR from "swr"; type InteractionOutcomeManager = { outcome: InteractionOutcome | undefined; @@ -32,7 +33,7 @@ export function InteractionOutcomeManagerProvider(props: { const { definition, fclValuesByIdentifier, parsedInteraction } = useInteractionDefinitionManager(); const { walletService } = useServiceRegistry(); - const { data, refetch } = useQuery( + const { data, mutate } = useSWR( `/interactions/execute/${JSON.stringify(definition)}`, async () => { if (!definition) { @@ -52,11 +53,6 @@ export function InteractionOutcomeManagerProvider(props: { `Can't execute interaction: ${parsedInteraction.kind}` ); } - }, - { - // Prevent automatic fetching when cache key changes. - // https://tanstack.com/query/v4/docs/react/guides/disabling-queries - enabled: false, } ); @@ -66,7 +62,7 @@ export function InteractionOutcomeManagerProvider(props: { ); async function execute() { - await refetch(); + await mutate(); } async function executeTransaction( @@ -160,7 +156,8 @@ export function InteractionOutcomeManagerProvider(props: { }; } ); - const argumentFunction = FclValueUtils.getArgumentFunction(fclArguments); + const argumentFunction = + FclValueUtils.getArgumentFunction(fclArguments); return argumentFunction(arg, t); }, }); diff --git a/packages/ui/src/interactions/contexts/templates.context.tsx b/packages/ui/src/interactions/contexts/templates.context.tsx index 744f34e49..303c48b29 100644 --- a/packages/ui/src/interactions/contexts/templates.context.tsx +++ b/packages/ui/src/interactions/contexts/templates.context.tsx @@ -1,9 +1,8 @@ import React, { createContext, ReactElement, useContext, useMemo } from "react"; import { useFlowserHooksApi } from "../../contexts/flowser-api.context"; import { InteractionDefinition } from "../core/core-types"; -import { FclValueUtils } from "@onflowser/core"; +import { FclValue } from "@onflowser/core"; import { useLocalStorage } from "@uidotdev/usehooks"; -import * as crypto from "crypto"; type InteractionTemplatesRegistry = { templates: InteractionDefinitionTemplate[]; @@ -23,7 +22,7 @@ export type InteractionDefinitionTemplate = InteractionDefinition & { type RawInteractionDefinitionTemplate = { name: string; code: string; - fclValuesByIdentifier: Record; + fclValuesByIdentifier: Record; transactionOptions: TransactionOptions | undefined; createdDate: string; updatedDate: string; @@ -45,11 +44,14 @@ export function TemplatesRegistryProvider(props: { const [customTemplates, setRawTemplates] = useLocalStorage< RawInteractionDefinitionTemplate[] >("interactions", []); + + const randomId = () => String(Math.random() * 1000000); + const templates = useMemo( () => [ ...customTemplates.map( (template): InteractionDefinitionTemplate => ({ - id: crypto.randomUUID(), + id: randomId(), name: template.name, code: template.code, transactionOptions: undefined, @@ -64,14 +66,14 @@ export function TemplatesRegistryProvider(props: { ), ...(projectTemplatesData?.map( (template): InteractionDefinitionTemplate => ({ - id: crypto.randomUUID(), + id: randomId(), name: template.name, code: template.code, transactionOptions: undefined, initialOutcome: undefined, fclValuesByIdentifier: new Map(), - createdDate: new Date(template.createdDate), - updatedDate: new Date(template.updatedDate), + createdDate: new Date(template.createdAt), + updatedDate: new Date(template.updatedAt), filePath: template.source?.filePath, }) ) ?? []), diff --git a/packages/ui/src/projects/ProjectSettings/ProjectSettings.tsx b/packages/ui/src/projects/ProjectSettings/ProjectSettings.tsx index 1a314b69c..c93191aa0 100644 --- a/packages/ui/src/projects/ProjectSettings/ProjectSettings.tsx +++ b/packages/ui/src/projects/ProjectSettings/ProjectSettings.tsx @@ -19,9 +19,8 @@ import { FieldProps, ToggleField, } from "../FormFields/FormFields"; -import { usePlatformAdapter } from "../../contexts/platform-adapter.context"; -import { AnalyticEvent } from "../../contexts/analytics.service"; -import { useAnalytics } from "../../hooks/use-analytics"; +import { useFilePicker } from "../../contexts/platform-adapter.context"; +import { AnalyticEvent, useAnalytics } from "../../hooks/use-analytics"; import { FlowEmulatorConfig, FlowserProject, @@ -48,7 +47,7 @@ export const ProjectSettings: FunctionComponent = ( const api = useFlowserHooksApi(); const { track } = useAnalytics(); - const { onPickProjectPath } = usePlatformAdapter(); + const { pickDirectory } = useFilePicker(); const { startProject, removeProject, createProject, updateProject } = useProjectManager(); const { data: flowCliInfo } = api.useGetFlowCliInfo(); @@ -162,7 +161,7 @@ export const ProjectSettings: FunctionComponent = ( description="Specify the path to your project (where flow.json is located)" path="filesystemPath" onClick={async () => { - const path = await onPickProjectPath?.(); + const path = await pickDirectory?.(); if (path) { formik.setFieldValue("filesystemPath", path); } diff --git a/packages/ui/src/projects/SettingsSection/SettingsSection.tsx b/packages/ui/src/projects/SettingsSection/SettingsSection.tsx index 828813f8a..05198404e 100644 --- a/packages/ui/src/projects/SettingsSection/SettingsSection.tsx +++ b/packages/ui/src/projects/SettingsSection/SettingsSection.tsx @@ -1,4 +1,4 @@ -import React, { FC, useState } from "react"; +import React, { FC, ReactNode, useState } from "react"; import classes from "./SettingsSection.module.scss"; import classNames from "classnames"; import { FlowserIcon } from "../../common/icons/FlowserIcon"; @@ -9,6 +9,7 @@ export type ConfigurationSectionProps = { className?: string; isEnabled?: boolean; collapseChildren?: boolean; + children: ReactNode; }; export const SettingsSection: FC = ({ diff --git a/yarn.lock b/yarn.lock index 0c8d53ec7..da303e530 100644 --- a/yarn.lock +++ b/yarn.lock @@ -113,10 +113,10 @@ "regexpu-core" "^5.3.1" "semver" "^6.3.1" -"@babel/helper-define-polyfill-provider@^0.4.2": - "integrity" "sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==" - "resolved" "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz" - "version" "0.4.2" +"@babel/helper-define-polyfill-provider@^0.4.3": + "integrity" "sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==" + "resolved" "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz" + "version" "0.4.3" dependencies: "@babel/helper-compilation-targets" "^7.22.6" "@babel/helper-plugin-utils" "^7.22.5" @@ -1267,6 +1267,13 @@ "resolved" "https://registry.npmjs.org/@eslint/js/-/js-8.51.0.tgz" "version" "8.51.0" +"@fingerprintjs/fingerprintjs@^3.3.6", "@fingerprintjs/fingerprintjs@^4.1.0": + "integrity" "sha512-a7RMbIgLEnchrL8TUbYNrsZuRAjN1iha32QXmwYheeLrFSpJW5IgDvuoBnT6R+5LJlZOKOpEU3nXIu3OeQsAlw==" + "resolved" "https://registry.npmjs.org/@fingerprintjs/fingerprintjs/-/fingerprintjs-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "tslib" "^2.4.1" + "@humanwhocodes/config-array@^0.11.11": "integrity" "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==" "resolved" "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz" @@ -1649,16 +1656,6 @@ "resolved" "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-5.3.21.tgz" "version" "5.3.21" -"@nestjs/common@^8.0.0": - "integrity" "sha512-m/YsbcBal+gA5CFrDpqXqsSfylo+DIQrkFY3qhVIltsYRfu8ct8J9pqsTO6OPf3mvqdOpFGrV5sBjoyAzOBvsw==" - "resolved" "https://registry.npmjs.org/@nestjs/common/-/common-8.4.7.tgz" - "version" "8.4.7" - dependencies: - "axios" "0.27.2" - "iterare" "1.2.1" - "tslib" "2.4.0" - "uuid" "8.3.2" - "@nodelib/fs.scandir@2.1.5": "integrity" "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==" "resolved" "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" @@ -1823,7 +1820,6 @@ "resolved" "file:packages/core" "version" "1.0.0" dependencies: - "@nestjs/common" "^8.0.0" "@onflow/fcl" "^1.6.0" "@onflowser/api" "*" "@onflowser/config" "*" @@ -1837,7 +1833,7 @@ "@onflowser/api" "*" "@onflowser/config" "*" "@onflowser/core" "*" - "@onflowser/indexer" "*" + "@onflowser/nodejs" "*" "@onflowser/nodejs@*", "@onflowser/nodejs@file:/Users/bartkozorog/Projects/flowser/packages/nodejs": "resolved" "file:packages/nodejs" @@ -1866,13 +1862,13 @@ "dateformat" "^5.0.3" "formik" "^2.2.9" "mixpanel-browser" "^2.47.0" - "react" "^18.0.0" "react-helmet" "^6.1.0" "react-hot-toast" "^2.4.1" "react-icons" "^4.11.0" "react-json-view" "^1.21.3" "react-router-dom" "6.15.0" "react-timeago" "^7.2.0" + "reactjs-popup" "2.0.5" "swr" "^2.2.4" "yup" "^0.32.11" @@ -1932,6 +1928,87 @@ "estree-walker" "^2.0.2" "picomatch" "^2.3.1" +"@sentry-internal/tracing@7.73.0": + "integrity" "sha512-ig3WL/Nqp8nRQ52P205NaypGKNfIl/G+cIqge9xPW6zfRb5kJdM1YParw9GSJ1SPjEZBkBORGAML0on5H2FILw==" + "resolved" "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.73.0.tgz" + "version" "7.73.0" + dependencies: + "@sentry/core" "7.73.0" + "@sentry/types" "7.73.0" + "@sentry/utils" "7.73.0" + "tslib" "^2.4.1 || ^1.9.3" + +"@sentry/browser@7.73.0": + "integrity" "sha512-e301hUixcJ5+HNKCJwajFF5smF4opXEFSclyWsJuFNufv5J/1C1SDhbwG2JjBt5zzdSoKWJKT1ewR6vpICyoDw==" + "resolved" "https://registry.npmjs.org/@sentry/browser/-/browser-7.73.0.tgz" + "version" "7.73.0" + dependencies: + "@sentry-internal/tracing" "7.73.0" + "@sentry/core" "7.73.0" + "@sentry/replay" "7.73.0" + "@sentry/types" "7.73.0" + "@sentry/utils" "7.73.0" + "tslib" "^2.4.1 || ^1.9.3" + +"@sentry/core@7.73.0": + "integrity" "sha512-9FEz4Gq848LOgVN2OxJGYuQqxv7cIVw69VlAzWHEm3njt8mjvlTq+7UiFsGRo84+59V2FQuHxzA7vVjl90WfSg==" + "resolved" "https://registry.npmjs.org/@sentry/core/-/core-7.73.0.tgz" + "version" "7.73.0" + dependencies: + "@sentry/types" "7.73.0" + "@sentry/utils" "7.73.0" + "tslib" "^2.4.1 || ^1.9.3" + +"@sentry/electron@^4.0.2", "@sentry/electron@^4.13.0": + "integrity" "sha512-rVBMGX8WHc/DOeqlWZnl/EFxBFJgI1Y6nJi7u1HWRcAadTFKB1fmbVLbhVreIsQVP0Mc2HjP3Vyy6UXZ9+Mq5A==" + "resolved" "https://registry.npmjs.org/@sentry/electron/-/electron-4.13.0.tgz" + "version" "4.13.0" + dependencies: + "@sentry/browser" "7.73.0" + "@sentry/core" "7.73.0" + "@sentry/node" "7.73.0" + "@sentry/types" "7.73.0" + "@sentry/utils" "7.73.0" + "deepmerge" "4.3.0" + "lru_map" "^0.3.3" + "tslib" "^2.5.0" + +"@sentry/node@7.73.0": + "integrity" "sha512-i50bRfmgkRRx0XXUbg9jGD/RuznDJxJXc4rBILhoJuhl+BjRIaoXA3ayplfJn8JLZxsNh75uJaCq4IUK70SORw==" + "resolved" "https://registry.npmjs.org/@sentry/node/-/node-7.73.0.tgz" + "version" "7.73.0" + dependencies: + "@sentry-internal/tracing" "7.73.0" + "@sentry/core" "7.73.0" + "@sentry/types" "7.73.0" + "@sentry/utils" "7.73.0" + "cookie" "^0.5.0" + "https-proxy-agent" "^5.0.0" + "lru_map" "^0.3.3" + "tslib" "^2.4.1 || ^1.9.3" + +"@sentry/replay@7.73.0": + "integrity" "sha512-a8IC9SowBisLYD2IdLkXzx7gN4iVwHDJhQvLp2B8ARs1PyPjJ7gCxSMHeGrYp94V0gOXtorNYkrxvuX8ayPROA==" + "resolved" "https://registry.npmjs.org/@sentry/replay/-/replay-7.73.0.tgz" + "version" "7.73.0" + dependencies: + "@sentry/core" "7.73.0" + "@sentry/types" "7.73.0" + "@sentry/utils" "7.73.0" + +"@sentry/types@7.73.0": + "integrity" "sha512-/v8++bly8jW7r4cP2wswYiiVpn7eLLcqwnfPUMeCQze4zj3F3nTRIKc9BGHzU0V+fhHa3RwRC2ksqTGq1oJMDg==" + "resolved" "https://registry.npmjs.org/@sentry/types/-/types-7.73.0.tgz" + "version" "7.73.0" + +"@sentry/utils@7.73.0": + "integrity" "sha512-h3ZK/qpf4k76FhJV9uiSbvMz3V/0Ovy94C+5/9UgPMVCJXFmVsdw8n/dwANJ7LupVPfYP23xFGgebDMFlK1/2w==" + "resolved" "https://registry.npmjs.org/@sentry/utils/-/utils-7.73.0.tgz" + "version" "7.73.0" + dependencies: + "@sentry/types" "7.73.0" + "tslib" "^2.4.1 || ^1.9.3" + "@sinclair/typebox@^0.27.8": "integrity" "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==" "resolved" "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz" @@ -2428,6 +2505,11 @@ "resolved" "https://registry.npmjs.org/@types/mime/-/mime-1.3.3.tgz" "version" "1.3.3" +"@types/mixpanel-browser@^2.38.0", "@types/mixpanel-browser@^2.47.3": + "integrity" "sha512-lum9ZdfLihJ89XoCrBjB8le/Vg6ohYSR2/3AdfLWGZdhUBEgftncDO9+0uW08FSN6SLqy2s9zCf55YV5sNLNYA==" + "resolved" "https://registry.npmjs.org/@types/mixpanel-browser/-/mixpanel-browser-2.47.3.tgz" + "version" "2.47.3" + "@types/ms@*": "integrity" "sha512-xPSg0jm4mqgEkNhowKgZFBNtwoEwF6gJ4Dhww+GFpm3IgtNseHQZ5IqdNwnquZEoANxyDAKDRAdVo4Z72VvD/g==" "resolved" "https://registry.npmjs.org/@types/ms/-/ms-0.7.32.tgz" @@ -2476,13 +2558,6 @@ "resolved" "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.5.tgz" "version" "1.2.5" -"@types/react-dom@^17.0.21": - "integrity" "sha512-3rQEFUNUUz2MYiRwJJj6UekcW7rFLOtmK7ajQP7qJpjNdggInl3I/xM4I3Hq1yYPdCGVMgax1gZsB7BBTtayXg==" - "resolved" "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.21.tgz" - "version" "17.0.21" - dependencies: - "@types/react" "^17" - "@types/react-dom@^17.0.9", "@types/react-dom@^18.0.0", "@types/react-dom@^18.2.7": "integrity" "sha512-zq6Dy0EiCuF9pWFW6I6k6W2LdpUixLE4P6XjXU1QHLfak3GPACQfLwEuHzY5pOYa4hzj1d0GxX/P141aFjZsyg==" "resolved" "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.11.tgz" @@ -2504,7 +2579,7 @@ dependencies: "@types/react" "*" -"@types/react@*", "@types/react@^17.0.24", "@types/react@^18.2.21": +"@types/react@*", "@types/react@^17.0.24", "@types/react@^18.2.0", "@types/react@^18.2.21": "integrity" "sha512-24xqse6+VByVLIr+xWaQ9muX1B4bXJKXBbjszbld/UEDslGLY53+ZucF44HCmLbMPejTzGG9XgR+3m2/Wqu1kw==" "resolved" "https://registry.npmjs.org/@types/react/-/react-18.2.25.tgz" "version" "18.2.25" @@ -2513,15 +2588,6 @@ "@types/scheduler" "*" "csstype" "^3.0.2" -"@types/react@^17", "@types/react@^17.0.67": - "integrity" "sha512-zE76EIJ0Y58Oy9yDX/9csb/NuKjt0Eq2YgWb/8Wxo91YmuLzzbyiRoaqJE9h8iDlsT7n35GdpoLomHlaB1kFbg==" - "resolved" "https://registry.npmjs.org/@types/react/-/react-17.0.67.tgz" - "version" "17.0.67" - dependencies: - "@types/prop-types" "*" - "@types/scheduler" "*" - "csstype" "^3.0.2" - "@types/responselike@^1.0.0": "integrity" "sha512-TiGnitEDxj2X0j+98Eqk5lv/Cij8oHd32bU4D/Yw6AOq7vvTk0gSD2GPj0G/HkvhMoVsdlhYF4yqqlyPBTM6Sg==" "resolved" "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.1.tgz" @@ -3467,14 +3533,6 @@ dependencies: "follow-redirects" "^1.14.0" -"axios@0.27.2": - "integrity" "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==" - "resolved" "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz" - "version" "0.27.2" - dependencies: - "follow-redirects" "^1.14.9" - "form-data" "^4.0.0" - "axobject-query@^3.1.1": "integrity" "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==" "resolved" "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz" @@ -3526,28 +3584,28 @@ "resolve" "^1.19.0" "babel-plugin-polyfill-corejs2@^0.4.5": - "integrity" "sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==" - "resolved" "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz" - "version" "0.4.5" + "integrity" "sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==" + "resolved" "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz" + "version" "0.4.6" dependencies: "@babel/compat-data" "^7.22.6" - "@babel/helper-define-polyfill-provider" "^0.4.2" + "@babel/helper-define-polyfill-provider" "^0.4.3" "semver" "^6.3.1" "babel-plugin-polyfill-corejs3@^0.8.3": - "integrity" "sha512-9l//BZZsPR+5XjyJMPtZSK4jv0BsTO1zDac2GC6ygx9WLGlcsnRd1Co0B2zT5fF5Ic6BZy+9m3HNZ3QcOeDKfg==" - "resolved" "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.4.tgz" - "version" "0.8.4" + "integrity" "sha512-Q6CdATeAvbScWPNLB8lzSO7fgUVBkQt6zLgNlfyeCr/EQaEQR+bWiBYYPYAFyE528BMjRhL+1QBMOI4jc/c5TA==" + "resolved" "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.5.tgz" + "version" "0.8.5" dependencies: - "@babel/helper-define-polyfill-provider" "^0.4.2" + "@babel/helper-define-polyfill-provider" "^0.4.3" "core-js-compat" "^3.32.2" "babel-plugin-polyfill-regenerator@^0.5.2": - "integrity" "sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==" - "resolved" "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz" - "version" "0.5.2" + "integrity" "sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==" + "resolved" "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz" + "version" "0.5.3" dependencies: - "@babel/helper-define-polyfill-provider" "^0.4.2" + "@babel/helper-define-polyfill-provider" "^0.4.3" "babel-preset-current-node-syntax@^1.0.0": "integrity" "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==" @@ -3975,19 +4033,6 @@ "resolved" "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz" "version" "1.2.3" -"class-transformer@*", "class-transformer@0.4.0": - "integrity" "sha512-ETWD/H2TbWbKEi7m9N4Km5+cw1hNcqJSxlSYhsLsNjQzWWiZIYA1zafxpK9PwVfaZ6AqR5rrjPVUBGESm5tQUA==" - "resolved" "https://registry.npmjs.org/class-transformer/-/class-transformer-0.4.0.tgz" - "version" "0.4.0" - -"class-validator@*", "class-validator@^0.13.1": - "integrity" "sha512-yBUcQy07FPlGzUjoLuUfIOXzgynnQPPruyK1Ge2B74k9ROwnle1E+NxLWnUv5OLU8hA/qL5leAE9XnXq3byaBw==" - "resolved" "https://registry.npmjs.org/class-validator/-/class-validator-0.13.2.tgz" - "version" "0.13.2" - dependencies: - "libphonenumber-js" "^1.9.43" - "validator" "^13.7.0" - "classnames@^2.3.1", "classnames@^2.3.2": "integrity" "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" "resolved" "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz" @@ -4267,7 +4312,7 @@ "resolved" "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" "version" "1.0.6" -"cookie@0.5.0": +"cookie@^0.5.0", "cookie@0.5.0": "integrity" "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" "resolved" "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz" "version" "0.5.0" @@ -4644,6 +4689,11 @@ "resolved" "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz" "version" "4.3.1" +"deepmerge@4.3.0": + "integrity" "sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==" + "resolved" "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.0.tgz" + "version" "4.3.0" + "default-browser-id@^3.0.0": "integrity" "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==" "resolved" "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz" @@ -5064,12 +5114,17 @@ "electron@20.1.0", "electron@26.3.0", "electron@file:/Users/bartkozorog/Projects/flowser/apps/electron": "resolved" "file:apps/electron" dependencies: + "@fingerprintjs/fingerprintjs" "^4.1.0" + "@sentry/electron" "^4.13.0" "electron-debug" "^3.2.0" "electron-log" "^4.4.8" "electron-updater" "^6.1.4" + "mixpanel-browser" "^2.47.0" "react" "^18.2.0" "react-dom" "^18.2.0" + "react-hot-toast" "^2.1.1" "react-router-dom" "^6.16.0" + "swr" "^2.2.4" "electronmon@^2.0.2": "integrity" "sha512-Yw1CXEp5HJT9P6Sns3UP3Krwm5eb2JKqTRAVczKdsUa+U/dMTgONwKIHkPbKSSmtyTV+5JwobxkhFPiRgegObA==" @@ -6027,7 +6082,7 @@ "fbemitter" "^3.0.0" "fbjs" "^3.0.1" -"follow-redirects@^1.0.0", "follow-redirects@^1.14.0", "follow-redirects@^1.14.9": +"follow-redirects@^1.0.0", "follow-redirects@^1.14.0": "integrity" "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==" "resolved" "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz" "version" "1.15.3" @@ -7157,11 +7212,6 @@ "html-escaper" "^2.0.0" "istanbul-lib-report" "^3.0.0" -"iterare@1.2.1": - "integrity" "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==" - "resolved" "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz" - "version" "1.2.1" - "iterator.prototype@^1.1.2": "integrity" "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==" "resolved" "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz" @@ -7933,11 +7983,6 @@ "prelude-ls" "^1.2.1" "type-check" "~0.4.0" -"libphonenumber-js@^1.9.43": - "integrity" "sha512-eeHcvGafEYCaKB4fo2uBINfG7j7PcGwBHUaTVfbwl/6KcjCgIKNlIOsSXVRp9BH10NQwmvvk+nQ1e/Yp4BGB7w==" - "resolved" "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.10.45.tgz" - "version" "1.10.45" - "lie@~3.3.0": "integrity" "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==" "resolved" "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz" @@ -8148,6 +8193,11 @@ "resolved" "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz" "version" "2.0.0" +"lru_map@^0.3.3": + "integrity" "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==" + "resolved" "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz" + "version" "0.3.3" + "lru-cache@^5.1.1": "integrity" "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==" "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" @@ -9638,6 +9688,11 @@ dependencies: "loose-envify" "^1.1.0" +"reactjs-popup@2.0.5": + "integrity" "sha512-b5hv9a6aGsHEHXFAgPO5s1Jw1eSkopueyUVxQewGdLgqk2eW0IVXZrPRpHR629YcgIpC2oxtX8OOZ8a7bQJbxA==" + "resolved" "https://registry.npmjs.org/reactjs-popup/-/reactjs-popup-2.0.5.tgz" + "version" "2.0.5" + "read-config-file@6.3.2": "integrity" "sha512-M80lpCjnE6Wt6zb98DoW8WHR09nzMSpu8XHtPkiTHrJ5Az9CybfeQhTJ8D7saeBHpGhLPIVyA8lcL6ZmdKwY6Q==" "resolved" "https://registry.npmjs.org/read-config-file/-/read-config-file-6.3.2.tgz" @@ -9712,11 +9767,6 @@ "indent-string" "^4.0.0" "strip-indent" "^3.0.0" -"reflect-metadata@^0.1.12", "reflect-metadata@^0.1.13": - "integrity" "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" - "resolved" "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz" - "version" "0.1.13" - "reflect.getprototypeof@^1.0.4": "integrity" "sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==" "resolved" "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz" @@ -9855,9 +9905,9 @@ "version" "2.0.2" "resolve@^1.14.2": - "integrity" "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==" - "resolved" "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz" - "version" "1.22.6" + "integrity" "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==" + "resolved" "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz" + "version" "1.22.8" dependencies: "is-core-module" "^2.13.0" "path-parse" "^1.0.7" @@ -9986,7 +10036,7 @@ "resolved" "https://registry.npmjs.org/runtime-required/-/runtime-required-1.1.0.tgz" "version" "1.1.0" -"rxjs@^7.1.0", "rxjs@^7.2.0", "rxjs@^7.5.5": +"rxjs@^7.2.0", "rxjs@^7.5.5": "integrity" "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==" "resolved" "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz" "version" "7.5.6" @@ -11037,11 +11087,21 @@ "resolved" "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" "version" "1.14.1" -"tslib@^2.0.0", "tslib@^2.0.3", "tslib@^2.1.0", "tslib@2.4.0": +"tslib@^2.0.0", "tslib@^2.0.3", "tslib@^2.1.0": "integrity" "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz" "version" "2.4.0" +"tslib@^2.4.1 || ^1.9.3": + "integrity" "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" + "version" "2.6.2" + +"tslib@^2.4.1": + "integrity" "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" + "version" "2.6.2" + "tslib@^2.5.0": "integrity" "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" @@ -11342,7 +11402,7 @@ "resolved" "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" "version" "1.0.1" -"uuid@^8.3.2", "uuid@8.3.2": +"uuid@^8.3.2": "integrity" "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" "resolved" "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" "version" "8.3.2" @@ -11361,11 +11421,6 @@ "@types/istanbul-lib-coverage" "^2.0.1" "convert-source-map" "^2.0.0" -"validator@^13.7.0": - "integrity" "sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==" - "resolved" "https://registry.npmjs.org/validator/-/validator-13.11.0.tgz" - "version" "13.11.0" - "vary@~1.1.2": "integrity" "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" "resolved" "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" From a9a4489bc64020210e73e0a9e099039d54d49631 Mon Sep 17 00:00:00 2001 From: Bart Date: Mon, 16 Oct 2023 12:04:38 +0200 Subject: [PATCH 019/100] remove obsolete package folders, fix mismatched react versions --- .nvmrc | 2 +- frontend/.env | 1 - frontend/.eslintrc.js | 27 - frontend/.gitignore | 28 - frontend/.prettierignore | 12 - frontend/.prettierrc.js | 1 - frontend/README.md | 70 - frontend/package.json | 118 - frontend/public/Inter.woff2 | Bin 21624 -> 0 bytes frontend/public/android-chrome-192x192.png | Bin 21015 -> 0 bytes frontend/public/android-chrome-512x512.png | Bin 93821 -> 0 bytes frontend/public/apple-touch-icon.png | Bin 18842 -> 0 bytes frontend/public/favicon-16x16.png | Bin 623 -> 0 bytes frontend/public/favicon-32x32.png | Bin 1474 -> 0 bytes frontend/public/favicon.ico | Bin 15406 -> 0 bytes frontend/public/index.html | 86 - frontend/public/logo.svg | 24 - frontend/public/manifest.json | 39 - frontend/public/robots.txt | 3 - frontend/public/site.webmanifest | 1 - frontend/src/react-app-env.d.ts | 22 - frontend/src/reportWebVitals.ts | 15 - frontend/src/setupTests.ts | 5 - frontend/src/targets/electron/backend.ts | 80 - frontend/src/targets/electron/index.tsx | 78 - frontend/src/targets/electron/main.ts | 235 - frontend/src/targets/electron/preload.ts | 14 - frontend/src/targets/web/index.tsx | 21 - frontend/tsconfig.electron.json | 12 - frontend/tsconfig.json | 32 - frontend/yarn.lock | 14311 -------------- lerna.json | 10 - package.json | 8 +- packages/ui/package.json | 7 +- packages/ui/vite.config.js | 5 +- shared/.gitignore | 2 - shared/README.md | 5 - shared/build.sh | 12 - shared/package.json | 32 - shared/proto/api/accounts.proto | 39 - shared/proto/api/blocks.proto | 21 - shared/proto/api/contracts.proto | 30 - shared/proto/api/core.proto | 19 - shared/proto/api/events.proto | 26 - shared/proto/api/flow.proto | 16 - shared/proto/api/go-bindings.proto | 23 - shared/proto/api/processes.proto | 31 - shared/proto/api/projects.proto | 52 - shared/proto/api/snapshots.proto | 40 - shared/proto/api/transactions.proto | 39 - shared/proto/api/wallet.proto | 23 - shared/proto/entities/accounts.proto | 74 - shared/proto/entities/blocks.proto | 25 - shared/proto/entities/common.proto | 26 - shared/proto/entities/events.proto | 20 - shared/proto/entities/interactions.proto | 70 - shared/proto/entities/processes.proto | 38 - shared/proto/entities/projects.proto | 66 - shared/proto/entities/snapshots.proto | 12 - shared/proto/entities/transactions.proto | 76 - shared/src/index.ts | 2 - shared/src/types/common.ts | 5 - shared/src/types/flow.ts | 9 - shared/src/types/index.ts | 33 - shared/src/types/polling.ts | 11 - shared/src/utils/index.ts | 1 - shared/tsconfig.json | 13 - shared/yarn.lock | 1852 -- turbo.json | 2 +- yarn.lock | 19281 +++++++++---------- 70 files changed, 9369 insertions(+), 27924 deletions(-) delete mode 100644 frontend/.env delete mode 100644 frontend/.eslintrc.js delete mode 100644 frontend/.gitignore delete mode 100644 frontend/.prettierignore delete mode 100644 frontend/.prettierrc.js delete mode 100644 frontend/README.md delete mode 100644 frontend/package.json delete mode 100644 frontend/public/Inter.woff2 delete mode 100644 frontend/public/android-chrome-192x192.png delete mode 100644 frontend/public/android-chrome-512x512.png delete mode 100644 frontend/public/apple-touch-icon.png delete mode 100644 frontend/public/favicon-16x16.png delete mode 100644 frontend/public/favicon-32x32.png delete mode 100644 frontend/public/favicon.ico delete mode 100644 frontend/public/index.html delete mode 100644 frontend/public/logo.svg delete mode 100644 frontend/public/manifest.json delete mode 100644 frontend/public/robots.txt delete mode 100644 frontend/public/site.webmanifest delete mode 100644 frontend/src/react-app-env.d.ts delete mode 100644 frontend/src/reportWebVitals.ts delete mode 100644 frontend/src/setupTests.ts delete mode 100644 frontend/src/targets/electron/backend.ts delete mode 100644 frontend/src/targets/electron/index.tsx delete mode 100644 frontend/src/targets/electron/main.ts delete mode 100644 frontend/src/targets/electron/preload.ts delete mode 100644 frontend/src/targets/web/index.tsx delete mode 100644 frontend/tsconfig.electron.json delete mode 100644 frontend/tsconfig.json delete mode 100644 frontend/yarn.lock delete mode 100644 lerna.json delete mode 100644 shared/.gitignore delete mode 100644 shared/README.md delete mode 100644 shared/build.sh delete mode 100644 shared/package.json delete mode 100644 shared/proto/api/accounts.proto delete mode 100644 shared/proto/api/blocks.proto delete mode 100644 shared/proto/api/contracts.proto delete mode 100644 shared/proto/api/core.proto delete mode 100644 shared/proto/api/events.proto delete mode 100644 shared/proto/api/flow.proto delete mode 100644 shared/proto/api/go-bindings.proto delete mode 100644 shared/proto/api/processes.proto delete mode 100644 shared/proto/api/projects.proto delete mode 100644 shared/proto/api/snapshots.proto delete mode 100644 shared/proto/api/transactions.proto delete mode 100644 shared/proto/api/wallet.proto delete mode 100644 shared/proto/entities/accounts.proto delete mode 100644 shared/proto/entities/blocks.proto delete mode 100644 shared/proto/entities/common.proto delete mode 100644 shared/proto/entities/events.proto delete mode 100644 shared/proto/entities/interactions.proto delete mode 100644 shared/proto/entities/processes.proto delete mode 100644 shared/proto/entities/projects.proto delete mode 100644 shared/proto/entities/snapshots.proto delete mode 100644 shared/proto/entities/transactions.proto delete mode 100644 shared/src/index.ts delete mode 100644 shared/src/types/common.ts delete mode 100644 shared/src/types/flow.ts delete mode 100644 shared/src/types/index.ts delete mode 100644 shared/src/types/polling.ts delete mode 100644 shared/src/utils/index.ts delete mode 100644 shared/tsconfig.json delete mode 100644 shared/yarn.lock diff --git a/.nvmrc b/.nvmrc index 99cdd8009..3c032078a 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -16.15.0 +18 diff --git a/frontend/.env b/frontend/.env deleted file mode 100644 index 71a78b13a..000000000 --- a/frontend/.env +++ /dev/null @@ -1 +0,0 @@ -SASS_PATH=node_modules:src diff --git a/frontend/.eslintrc.js b/frontend/.eslintrc.js deleted file mode 100644 index c272f056e..000000000 --- a/frontend/.eslintrc.js +++ /dev/null @@ -1,27 +0,0 @@ -module.exports = { - parser: "@typescript-eslint/parser", // Specifies the ESLint parser - parserOptions: { - ecmaVersion: 2020, // Allows for the parsing of modern ECMAScript features - sourceType: "module", // Allows for the use of imports - ecmaFeatures: { - jsx: true, // Allows for the parsing of JSX - }, - }, - settings: { - react: { - version: "detect", // Tells eslint-plugin-react to automatically detect the version of React to use - }, - }, - extends: [ - "plugin:react/recommended", // Uses the recommended rules from @eslint-plugin-react - "plugin:@typescript-eslint/recommended", // Uses the recommended rules from @typescript-eslint/eslint-plugin - "plugin:prettier/recommended", // Enables eslint-plugin-prettier and eslint-config-prettier. This will display prettier errors as ESLint errors. Make sure this is always the last configuration in the extends array. - ], - rules: { - "@typescript-eslint/ban-ts-ignore": "off", - "@typescript-eslint/ban-ts-comment": "off", - "react/prop-types": "off", - // Place to specify ESLint rules. Can be used to overwrite rules specified from the extended configs - // e.g. "@typescript-eslint/explicit-function-return-type": "off", - }, -}; diff --git a/frontend/.gitignore b/frontend/.gitignore deleted file mode 100644 index bac099d4f..000000000 --- a/frontend/.gitignore +++ /dev/null @@ -1,28 +0,0 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. - -# dependencies -/node_modules -/.pnp -.pnp.js - -# testing -/coverage - -# production -/build -/dist -/release - -# misc -.DS_Store -.env.local -.env.development.local -.env.test.local -.env.production.local - -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -# Do not track entry point, because it's generated dynamically -src/index.tsx diff --git a/frontend/.prettierignore b/frontend/.prettierignore deleted file mode 100644 index 6f03e2af3..000000000 --- a/frontend/.prettierignore +++ /dev/null @@ -1,12 +0,0 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. - -# dependencies -/node_modules -/.pnp -.pnp.js - -# testing -/coverage - -# production -/build diff --git a/frontend/.prettierrc.js b/frontend/.prettierrc.js deleted file mode 100644 index f053ebf79..000000000 --- a/frontend/.prettierrc.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = {}; diff --git a/frontend/README.md b/frontend/README.md deleted file mode 100644 index e362f3ecc..000000000 --- a/frontend/README.md +++ /dev/null @@ -1,70 +0,0 @@ -# @flowser/frontend - -## Architecture - -This app can be built as a website or a desktop app. The entry points for different targets are located in `src/targets` dir. - -## UI Design - -You can view our UI design definitions on [Adobe XD](https://xd.adobe.com/view/00f8a11a-5a64-4fca-97ee-f3a6c3547a4b-55ab/) or [Google Drive](https://drive.google.com/drive/folders/1ixHczX7g64C2B06wfYhHvPfm4RLdVxdL). - -## Setup - -### Running on Macbook M1 - -If you're using MacOS with M1 chip (arm64 architecture), -then `node-sqlite3` bindings won't be installed correctly. - -During initial installation, `node-pre-gyp` will install `napi-v6-darwin-unknown-x64` (incorrect) bindings, but when running the app it will require (correct) `napi-v6-darwin-unknown-arm64` bindings - which won't be installed on your system, so you will get `module not found` error. - -
- -Full "module not found" error log - - -
-[1] App threw an error during load
-[1] Error: Cannot find module '/Users/bartkozorog/Projects/flowser/node_modules/sqlite3/lib/binding/napi-v6-darwin-unknown-arm64/node_sqlite3.node'
-[1] Require stack:
-[1] - /Users/bartkozorog/Projects/flowser/node_modules/sqlite3/lib/sqlite3-binding.js
-[1] - /Users/bartkozorog/Projects/flowser/node_modules/sqlite3/lib/sqlite3.js
-[1] - /Users/bartkozorog/Projects/flowser/web/public/main.js
-[1] - /Users/bartkozorog/Projects/flowser/node_modules/electron/dist/Electron.app/Contents/Resources/default_app.asar/main.js
-[1] -
-[1]     at Module._resolveFilename (node:internal/modules/cjs/loader:940:15)
-[1]     at n._resolveFilename (node:electron/js2c/browser_init:245:1105)
-[1]     at Module._load (node:internal/modules/cjs/loader:785:27)
-[1]     at c._load (node:electron/js2c/asar_bundle:5:13343)
-[1]     at Module.require (node:internal/modules/cjs/loader:1012:19)
-[1]     at require (node:internal/modules/cjs/helpers:102:18)
-[1]     at Object. (/Users/bartkozorog/Projects/flowser/node_modules/sqlite3/lib/sqlite3-binding.js:4:17)
-[1]     at Module._compile (node:internal/modules/cjs/loader:1120:14)
-[1]     at Module._extensions..js (node:internal/modules/cjs/loader:1175:10)
-[1]     at Module.load (node:internal/modules/cjs/loader:988:32)
-
-
- - -This issue is also described in [this StackOverflow post](https://stackoverflow.com/questions/72553650/how-to-get-node-sqlite3-working-on-mac-m1#answer-72571188). The solution for now is to manually build the correct `sqlite3` bindings on M1, with `yarn run install:m1` command. - -## Running - -To start the electron app in development, use `yarn run start:desktop` command. - -For production, you'll need to package the app with `yarn run build:desktop` command. Note that this was only tested on MacOS (M1). - -> If you want to run the production app and see the STDOUT log output, you need to run the executable directly. -> E.g. `./app/release/build/mac-arm64/Flowser.app/Contents/MacOS/Flowser` - -### Automatic tasks - -Some automatic tasks are running in the background: - -1. ESlint (Run automatically on every commit via Git hooks & Husky) -2. Prettier (Run automatically on every commit via Git hooks & Husky) - -Git hooks and Husky setup inspired by the following articles: - -- [Git hooks (Mono repo)](https://scottsauber.com/2021/06/01/using-husky-git-hooks-and-lint-staged-with-nested-folders/) -- [Git hooks React setup](https://nickymeuleman.netlify.app/blog/git-hooks) -- [EsLint & Prettier React](https://robertcooper.me/post/using-eslint-and-prettier-in-a-typescript-project) diff --git a/frontend/package.json b/frontend/package.json deleted file mode 100644 index 9170c7a04..000000000 --- a/frontend/package.json +++ /dev/null @@ -1,118 +0,0 @@ -{ - "name": "@flowser/frontend", - "author": { - "name": "Flowser", - "url": "https://flowser.dev" - }, - "description": "Easily start you local Flow blockchain & inspect the state.", - "version": "0.0.1", - "private": true, - "homepage": "./", - "dependencies": { - "@codemirror/legacy-modes": "^6.1.0", - "@fingerprintjs/fingerprintjs": "^3.3.6", - "@flowser/backend": "0.0.1", - "@flowser/shared": "0.0.1", - "@onflow/fcl": "^1.6.0", - "@onflow/types": "^1.0.3", - "@szhsin/react-menu": "4.0.3", - "@tanstack/react-table": "^8.5.11", - "@testing-library/jest-dom": "^5.14.1", - "@testing-library/react": "^11.2.7", - "@testing-library/user-event": "^12.8.3", - "@types/dateformat": "^3.0.1", - "@types/jest": "^26.0.24", - "@types/joi": "^17.2.3", - "@types/node": "^12.20.27", - "@types/react": "^17.0.24", - "@types/react-dom": "^17.0.9", - "@types/react-timeago": "^4.1.3", - "@uiw/codemirror-extensions-basic-setup": "^4.12.4", - "@uiw/codemirror-theme-github": "^4.12.4", - "@uiw/react-codemirror": "^4.12.4", - "ansi-to-html": "^0.7.2", - "axios": "^0.21.4", - "classnames": "^2.3.1", - "concurrently": "^7.3.0", - "copy-to-clipboard": "^3.3.1", - "cross-env": "^7.0.3", - "dateformat": "^5.0.1", - "fix-path": "3.0.0", - "formik": "^2.2.9", - "husky": "^7.0.2", - "joi": "^17.4.2", - "mixpanel-browser": "^2.45.0", - "prismjs": "^1.25.0", - "react": "^17.0.2", - "react-dom": "^17.0.2", - "react-helmet": "^6.1.0", - "react-hot-toast": "^2.1.1", - "react-icons": "^4.11.0", - "react-json-view": "^1.21.3", - "react-modern-drawer": "^1.1.2", - "react-pro-sidebar": "^0.7.1", - "react-query": "^3.24.4", - "react-router-dom": "6.15.0", - "react-scripts": "5.0.0", - "react-timeago": "^6.2.1", - "reactjs-popup": "2.0.5", - "typescript": "^4.4.3", - "usehooks-ts": "^2.9.1", - "wait-on": "^6.0.1", - "web-vitals": "^1.1.2", - "yup": "^0.32.11" - }, - "scripts": { - "cleanup": "rm -rf node_modules", - "start": "yarn run prebuild:web && yarn run start:react", - "start:react": "PORT=6060 DISABLE_ESLINT_PLUGIN=true react-scripts start", - "build:react": "DISABLE_ESLINT_PLUGIN=true react-scripts build", - "test": "react-scripts test", - "eject": "react-scripts eject", - "lint": "eslint '*/**/*.{js,ts,tsx}' --quiet --fix", - "format": "prettier --write \"src/**/*.{ts,tsx}\"", - "prepare": "cd ../ && husky install ./frontend/.husky", - "prebuild:web": "cp src/targets/web/index.tsx src/index.tsx" - }, - "eslintConfig": { - "extends": [ - "react-app", - "react-app/jest" - ] - }, - "browserslist": { - "production": [ - ">0.2%", - "not dead", - "not op_mini all" - ], - "development": [ - "last 1 chrome version", - "last 1 firefox version", - "last 1 safari version" - ] - }, - "devDependencies": { - "@types/mixpanel-browser": "^2.38.0", - "@types/react-helmet": "^6.1.7", - "@typescript-eslint/eslint-plugin": "^4.31.2", - "@typescript-eslint/parser": "^4.31.2", - "eslint-config-prettier": "^8.3.0", - "eslint-plugin-prettier": "^4.0.0", - "eslint-plugin-react": "^7.26.0", - "lint-staged": "^11.1.2", - "prettier": "^2.4.1", - "sass": "^1.42.1" - }, - "husky": { - "hooks": { - "pre-commit": "lint-staged" - } - }, - "lint-staged": { - "*.{ts,js,tsx}": [ - "eslint --quiet --fix", - "prettier --write" - ] - } -} diff --git a/frontend/public/Inter.woff2 b/frontend/public/Inter.woff2 deleted file mode 100644 index fd6553cec0783d322bd57601bf7482e7447a7c38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21624 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μt=o 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

-LQ*d)2;< zD9l4=J`@GcMS!i6e=g+n;=QOBFtY(gf8Lyj^B$zZC40hq6+LwD;V)G3s?_yh<^E$W zPhP&P-+udVWg!5|_u09Qz(N4d^~x;gg%Oa?KmR=a@WXZ5J?Yc+_GKzpYZ><`K}~R= zvCrIff|>wJ-kDJ5VnOQ^$^w>7D>&7S%K#P2E(dJuAONlVpoUaXqaQ(Z zBxFtS7yvl{Nr2f9vl|k5rhs8ig(eV((;52J+jOKsYArH}fBLb1S@CdyDcOwH1 z*AI&C+FU_^HozJ$0I)|Y9$*hWz8mhi%N|U27!f;+bt00VmmS=lEKDtTt0CIQb{O&a zYaQ@ivk#3v8x?5#O&C@FA^(Gp-(2EXoCHW{`PFI>C<27yxd4CSQKgpT`=J()0S$RF zCCK;&U8SLN9WJOJ_Cu}RMXf00ySw_hUcM~#Pk-9g#j1uJI-TAIf->eRymK+h$xYEs+Rv@Q;p!YPXY zz{m4Elfa4CryHjA$O?cQfCQXm8yv_T-i^6|d&Ah8AZDfv0N54SxB_6f8pBJ==z!gDKe zi`ofk`!MJ+Y$w5U9Nd}Rjc)?=$&qhlH|L2c-vQmV{R*?55d=Vqil|kUIF6|JvKW^t zRAH$en|Ja&7J1It_<=$ z825a0eQosh7fSTyM242n^D+WwHv$U*IJ---oY12YXlZP;CVs(mLv(Z-{FEmN;qdHE z>iCS&rnuITYkk71BkPmGS_`Xg*lJPK9q?iZ5PfOFc zxp+3UXmArndLHp(PTmiU`T15+A9M6xGvNOtQvmYdp8M{b?|%A7+XKMEg7*~ABOUJ+ zyWzs8g&6bm0P~iL7ew<;7Tl2!DSZcj2YGC3%gIfB2C69PONW@R$6UQ0jJpFQdNS+r zvkn0BA@ulZKj>DHF@94vk$V$7{)FYuQu@hK>gF5$y)x>fH~E3ruT zmanw49f5@aob9DqPVCK&z?b5_1mArppY1;7$SgeP@&2WBl~-K!LRJSaFpOVz86m@k zuvr#2S3=JgL>9ojsL%@!?SvT2+k+60a!+1_2qFM`Vz)B}Y49nC)562!^neK(95s`o zR)iQp|Da|drU;@V;+!>TMTS$6VgUd2dqMzyUSu~#^U(>f5dtr|i>v{N0doISah_M@ z$J{&!03!D`FCX*sZ4Mr!U}W}4-XnI8;++U!?mg1=4)85?4{P3LuY2md?@_%NqI#axX->$zi@-)2z_EM?;W0ca#(Api>jcpD$M diff --git a/frontend/public/apple-touch-icon.png b/frontend/public/apple-touch-icon.png deleted file mode 100644 index a6ff624f4e0cd9c5128268ec21850e2b878b4c8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18842 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 diff --git a/frontend/public/favicon-16x16.png b/frontend/public/favicon-16x16.png deleted file mode 100644 index 804ac87bb7b23cd8f2cb6cdedcf5a852dd0b93f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 623 zcmV-#0+9WQP)Px%DM>^@R5(wSlgm$2K@`TnGo}x*TO;g1L8U|^F*U>$t&fnp(3M8hDAYu^RN}@2)Q#G711S(O_?v8_)U-$rr-G(9q6Vv06Qf{`h!zOyDwac4;$uSi(>Nr?4a6VMu0`k<><$c1E zqt%z_KjTL@qF{P*0?AYg$`w5xij^&m6(*vGEIG*d zcbHhvvnJ-dHDRjS)rzwrH~@wZT#hrL076y>yjcAD{!4Y7{{rx+^Q=}rKy&~A002ov JPDHLkV1kPx)d`Uz>R9Hv7mw!yubr{Fr&*#2(SJqPCkpm!N4ko& zX=a#W2x4J6#2+~)A|UA0(zaGuoArlV>cTSTT&?ieDg*A|4&!$SDcs%n`?SyTBQUt{ z!Cc>eKcDA$Uf<92n-Id6k&&UeJ0G-Z{=4bSlnz2Fm=i$sNI;zVHi+s0)Dq#mqR{!M zFs-GgrpB+Qo`PMFhMldLMNBK1crh4}01P@xRe)Lq;cJ!Y(A-%Owbj+t>Uc8a0wks` zjAYfHqcN`na~Oc2uwxsbPC=rI6hlefm2XAe7y_}B~cG=uLLGiK=dZ$jsUIzdWS{q?gyjD#2kFe5o*wjZcwM$&|o zhkBV%2Vkl5M$IonBEtaE=bGR5<>0f2s&c~jh{X2>vw6uMKc8-s!T|so?Tu}sNYk|Z z``~juC>BJ!=A>8(Wp)Gr;*y_#f}oxSbGV+gCBlNI=cOYy#sP&0eSN(+b@~)kRfW-L z3W$4sKD4&Af_YTDjZjUUB(R|2`nR<-kn7?ASX-@U+!|@c`n83KiE=;@1fu{9q#}RY zyI8j>8@B0o$b@%!+$bzAKwn?~_$mb*bWG=WC@J;D7{BlCWdQbI07Qhvi(bLYFD-{+ zAeaT92*%&NT_`BZLvcY7tQI>|CNy|l$lscSJ9qkmsHA3-iRMy5a>fdc@v&ZoQxpXS zn~IU(NP!{%(!BWmi=$|CH{#cuzoTkTIjj+OXkawBUD&vFgAM>xA;hZ`pPX66vf2gt z!o#Lv$3$3{SHYg~eM?QuHBg5q8M9lP<{Fq7OizOBDZj zW-EiI2Lp(XwqbqFc7#ujgh>&Q!ETf-N$rQb$%$>dicq>^FKiY&pfT#*F02m)fT%^j zKp!)kg8>*71#ymeta&pRR%>(spufKdhYy#*?eW0lX~vP#3fLp;AdS$_?A%_0*ti6k%!FPU{hM>q-25jb;IXnwL|JTrCS$;b?7|RSKokIIVP@IqgMJcV z*N%ONi%)>rEYQ>2h5WpK0Y0jzg56>RX@IlQg}2`i2_WDC-5?x#fjztT!I781>XDVfVPjgRXUBI$yC`z1gUNMm%jcObtYZy2DWybQKTJ0609 zM(KhAU4Vf?G&5~MwAag*0geh51QMX6tOSnOL#%H+?r3eY*z+g8?hw$buz2LY4t^ zw728fCnweq5L6jxMiXtvdf5`%Idzc0bAfg&1(q#aX87rPdy&Sx>Hio=h-l}N zDV8n61Brwf7|FaRnej|$e=(_BOe8M+XCxa^6`zus24*>w-rtFM&;Su`LKv1dTswDV z$mSShdFDLL!1sGBmtDF}sK%_i-_BedcPt+QjZeu;1*4Rir8_3E5sh+>G=2fXklk?Y z+*Q5BWLR?MoD7S4mvU6bYGBfi$hsN-GBPZzJ$?W*?M*A#iSjE61fUSBJ zQ%(s3%PD=OLL8c#5_V-$%jrl`S*)77gw^ZEvw}ID8EGKI1DHB^uUn3SM5xt>&YKi` c7wUTc59c^x*15hq8vp#ip;{& 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 - - - - - - - - - - - - - - - - - - - - - - - Flowser - Flow GUI Browser - - - - - - - - - - - - - - - - - - - - -

- - - diff --git a/frontend/public/logo.svg b/frontend/public/logo.svg deleted file mode 100644 index fd7358677..000000000 --- a/frontend/public/logo.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/frontend/public/manifest.json b/frontend/public/manifest.json deleted file mode 100644 index 8c2c21b07..000000000 --- a/frontend/public/manifest.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "name": "Transitive Bullshit", - "short_name": "Transitive BS", - "icons": [ - { - "src": "/favicon-16x16.png", - "type": "image/png", - "sizes": "16x16" - }, - { - "src": "/favicon-32x32.png", - "type": "image/png", - "sizes": "32x32" - }, - { - "src": "/favicon-96x96.png", - "type": "image/png", - "sizes": "96x96" - }, - { - "src": "/apple-touch-icon.png", - "type": "image/png", - "sizes": "180x180" - }, - { - "src": "/android-chrome-192x192.png", - "sizes": "192x192", - "type": "image/png" - }, - { - "src": "/android-chrome-512x512.png", - "sizes": "512x512", - "type": "image/png" - } - ], - "theme_color": "#F898B9", - "background_color": "#ffffff", - "display": "standalone" -} diff --git a/frontend/public/robots.txt b/frontend/public/robots.txt deleted file mode 100644 index e9e57dc4d..000000000 --- a/frontend/public/robots.txt +++ /dev/null @@ -1,3 +0,0 @@ -# https://www.robotstxt.org/robotstxt.html -User-agent: * -Disallow: diff --git a/frontend/public/site.webmanifest b/frontend/public/site.webmanifest deleted file mode 100644 index 45dc8a206..000000000 --- a/frontend/public/site.webmanifest +++ /dev/null @@ -1 +0,0 @@ -{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"} \ No newline at end of file diff --git a/frontend/src/react-app-env.d.ts b/frontend/src/react-app-env.d.ts deleted file mode 100644 index afc41092c..000000000 --- a/frontend/src/react-app-env.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -// TODO(milestone-x): Fix TS1084: Invalid 'reference' directive syntax. -// - -// For now let's just manually declare required modules. -declare module "*.svg" { - import * as React from "react"; - - export const ReactComponent: React.FunctionComponent< - React.SVGProps & { title?: string } - >; - - const src: string; - export default src; -} - -declare module "*.module.scss" { - const classes: { readonly [key: string]: string }; - export default classes; -} - -declare module "*.jpg"; -declare module "*.png"; diff --git a/frontend/src/reportWebVitals.ts b/frontend/src/reportWebVitals.ts deleted file mode 100644 index 5fa3583b7..000000000 --- a/frontend/src/reportWebVitals.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { ReportHandler } from "web-vitals"; - -const reportWebVitals = (onPerfEntry?: ReportHandler) => { - if (onPerfEntry && onPerfEntry instanceof Function) { - import("web-vitals").then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => { - getCLS(onPerfEntry); - getFID(onPerfEntry); - getFCP(onPerfEntry); - getLCP(onPerfEntry); - getTTFB(onPerfEntry); - }); - } -}; - -export default reportWebVitals; diff --git a/frontend/src/setupTests.ts b/frontend/src/setupTests.ts deleted file mode 100644 index 1dd407a63..000000000 --- a/frontend/src/setupTests.ts +++ /dev/null @@ -1,5 +0,0 @@ -// jest-dom adds custom jest matchers for asserting on DOM nodes. -// allows you to do things like: -// expect(element).toHaveTextContent(/react/i) -// learn more: https://github.com/testing-library/jest-dom -import "@testing-library/jest-dom"; diff --git a/frontend/src/targets/electron/backend.ts b/frontend/src/targets/electron/backend.ts deleted file mode 100644 index 4b4277a04..000000000 --- a/frontend/src/targets/electron/backend.ts +++ /dev/null @@ -1,80 +0,0 @@ -import path from "path"; -import { - createApp, - ProcessManagerService, - ProjectsService, - ProjectEntity, -} from "@flowser/backend"; -import { INestApplication } from "@nestjs/common"; -import { Logger } from "../../../../apps/electron/src/services/logger.service"; -import crypto from "crypto"; - -export class FlowserBackend { - private static instance: FlowserBackend; - public app: INestApplication | undefined; - - public static getInstance(): FlowserBackend { - if (!this.instance) { - this.instance = new FlowserBackend(); - } - return this.instance; - } - - public async start(options: { userDataPath: string }): Promise { - const databaseFilePath = path.join(options.userDataPath, "flowser.sqlite"); - if (this.app) { - await this.app.close(); - } - this.app = await createApp({ - config: { - database: { - type: "sqlite", - name: databaseFilePath, - }, - common: { - httpServerPort: 6061, - }, - }, - nest: { - logger: new Logger(), - }, - }); - } - - public isCleanupComplete(): boolean { - const processManagerService = this.app?.get(ProcessManagerService); - return processManagerService?.isStoppedAll() ?? true; - } - - public async cleanupAndStop(): Promise { - const processManagerService = this.app?.get(ProcessManagerService); - // Make sure to stop all child processes, so that they don't become orphans - await processManagerService?.stopAll(); - // Bellow promise is taking a really long time to resolve - // so just don't await it for the time being - // TODO: Investigate why is the Nest shutdown taking a long time - this.app?.close(); - } - - public async startTemporaryProject(options: { - filesystemPath: string; - }): Promise { - const projectService = this.app?.get(ProjectsService); - if (!projectService) { - throw new Error("App not initialized"); - } - - const defaultProjectProto = projectService.getDefaultProject(); - - const temporaryProject = ProjectEntity.create({ - id: crypto.randomBytes(20).toString("base64url"), - name: "Flow CLI project", - filesystemPath: options.filesystemPath, - gateway: defaultProjectProto.gateway, - emulator: defaultProjectProto.emulator, - startBlockHeight: 0, - }); - - return projectService.useProject(temporaryProject); - } -} diff --git a/frontend/src/targets/electron/index.tsx b/frontend/src/targets/electron/index.tsx deleted file mode 100644 index 41bc4a60f..000000000 --- a/frontend/src/targets/electron/index.tsx +++ /dev/null @@ -1,78 +0,0 @@ -import React, { useState } from "react"; -import ReactDOM from "react-dom"; -import "apps/electron/src/renderer/App.scss"; -import { FlowserClientApp } from "apps/electron/src/renderer/router"; -import reportWebVitals from "reportWebVitals"; -// Note that imports paths must be relative to project root -// because this file is copied to src/index.tsx before build -import { ExitLoader } from "../../../../apps/electron/src/renderer/components/loaders/ExitLoader"; -import { UpdateLoader } from "../../../../apps/electron/src/renderer/components/loaders/UpdateLoader"; -import { SentryRendererService } from "../../../../apps/electron/src/services/sentry-renderer.service"; - -declare global { - interface Window { - platformAdapter: { - showDirectoryPicker: () => Promise; - handleExit: (callback: () => void) => void; - handleUpdateDownloadStart: (callback: () => void) => void; - handleUpdateDownloadEnd: (callback: () => void) => void; - handleUpdateDownloadProgress: ( - callback: (percentage: number) => void - ) => void; - }; - } -} - -const sentryService = new SentryRendererService(); -sentryService.init(); - -function Root() { - const [isExiting, setIsExiting] = useState(false); - const [appUpdateDownloadPercentage, setAppUpdateDownloadPercentage] = - useState(0); - const isUpdating = ![0, 100].includes(appUpdateDownloadPercentage); - - window.platformAdapter.handleExit(() => { - setIsExiting(true); - }); - - window.platformAdapter.handleUpdateDownloadProgress((percentage) => { - setAppUpdateDownloadPercentage(percentage); - }); - - window.platformAdapter.handleUpdateDownloadStart(() => { - setAppUpdateDownloadPercentage(0); - }); - window.platformAdapter.handleUpdateDownloadEnd(() => { - setAppUpdateDownloadPercentage(100); - }); - - return ( - <> - {isExiting && } - {isUpdating && ( - - )} - - - ); -} - -ReactDOM.render( - - - , - document.getElementById("root") -); - -// If you want to start measuring performance in your app, pass a function -// to log results (for example: reportWebVitals(console.log)) -// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals -reportWebVitals(); diff --git a/frontend/src/targets/electron/main.ts b/frontend/src/targets/electron/main.ts deleted file mode 100644 index 3705567a3..000000000 --- a/frontend/src/targets/electron/main.ts +++ /dev/null @@ -1,235 +0,0 @@ -import * as path from "path"; -import { app, BrowserWindow, shell, dialog, ipcMain } from "electron"; -import fixPath from "fix-path"; -import { SentryMainService } from "../../../../apps/electron/src/services/sentry-main.service"; -import { FlowserBackend } from "./backend"; -import { ProjectEntity } from "@flowser/backend"; - -fixPath(); - -const minWidth = 1100; -const minHeight = 800; - -let win: BrowserWindow; - -const { appUpdateService } = ServiceRegistry.getInstance(); -const sentryService = new SentryMainService(); -sentryService.init(); - -ipcMain.handle("showDirectoryPicker", showDirectoryPicker); - -async function createWindow() { - win = new BrowserWindow({ - width: minWidth, - height: minHeight, - minWidth, - minHeight, - autoHideMenuBar: true, - webPreferences: { - preload: path.join(__dirname, "preload.js"), - }, - }); - - // Open urls in the user's browser - win.webContents.setWindowOpenHandler((data) => { - shell.openExternal(data.url); - return { action: "deny" }; - }); - - win.webContents.on("did-fail-load", () => { - win.loadURL(getClientAppUrl()); - }); - - win.loadURL(getClientAppUrl()); - - await startBackend(); - - const temporaryProject = await maybeStartTemporaryProject(); - - if (temporaryProject !== undefined) { - // Our react-router instance is configured to use hash-based navigation: - // https://reactrouter.com/en/main/routers/create-hash-router. - win.loadURL(`${getClientAppUrl()}#/projects/${temporaryProject.id}`); - } -} - -app.on("ready", () => { - // setupMenu(win); - createWindow(); - appUpdateService.checkForUpdatesAndNotify({ - silent: true, - targetWindow: win, - }); -}); - -// Quit when all windows are closed. -app.on("window-all-closed", function () { - // On OS X it is core for applications and their menu bar - // to stay active until the user quits explicitly with Cmd + Q - if (process.platform !== "darwin") { - app.quit(); - } -}); - -app.on("activate", function () { - // On OS X it's common to re-create a window in the app when the - // dock icon is clicked and there are no other windows open. - if (BrowserWindow.getAllWindows().length === 0) createWindow(); -}); - -app.on("before-quit", async function (e) { - const backend = FlowserBackend.getInstance(); - if (!backend.app) { - console.error("backend.app is not defined"); - return; - } - if (backend.isCleanupComplete()) { - return; - } - console.log("Doing cleanup before exit"); - // Prevent app termination before cleanup is done - e.preventDefault(); - try { - // On macOS the user could first close the app by clicking on "X" - // (which would destroy the window) and later quit the app from app bar. - // If we trigger any method on destroyed window, electron throws an error. - if (!win.isDestroyed()) { - // Notify renderer process - win.webContents.send("exit"); - } - - await backend.cleanupAndStop(); - } catch (e) { - dialog.showMessageBox({ - message: `Couldn't shutdown successfully: ${String(e)}`, - type: "error", - }); - } finally { - console.log("Cleanup complete"); - app.quit(); - } -}); - -async function startBackend() { - const backend = FlowserBackend.getInstance(); - - try { - const userDataPath = app.getPath("userData"); - await backend.start({ - userDataPath, - }); - } catch (error) { - await handleBackendError({ - error, - window: win, - onRestart: startBackend, - onQuit: app.quit, - }); - } -} - -async function maybeStartTemporaryProject(): Promise< - ProjectEntity | undefined -> { - const backend = FlowserBackend.getInstance(); - - try { - const { hasSwitch, getSwitchValue } = app.commandLine; - - const temporaryProjectPathFlag = "project-path"; - - const shouldStartTemporaryProject = hasSwitch(temporaryProjectPathFlag); - - if (shouldStartTemporaryProject) { - return backend.startTemporaryProject({ - filesystemPath: getSwitchValue(temporaryProjectPathFlag), - }); - } - } catch (e: unknown) { - const result = await dialog.showMessageBox(win, { - message: `Failed to start project`, - detail: isErrorWithMessage(e) ? e.message : undefined, - type: "error", - buttons: ["Quit"], - }); - const quitClicked = result.response == 0; - if (quitClicked) { - app.exit(1); - } - } - - return undefined; -} - -async function showDirectoryPicker() { - const result = await dialog.showOpenDialog({ - properties: ["openDirectory", "createDirectory"], - }); - if (result.canceled) { - return undefined; - } - return result.filePaths[0]; -} - -async function handleBackendError({ - error, - window, - onRestart, - onQuit, -}: { - error: unknown; - window: BrowserWindow; - onRestart: () => void; - onQuit: () => void; -}) { - console.error("Error when starting backend:", error); - if (isErrorWithCode(error)) { - const isAddressInUse = error.code === "EADDRINUSE"; - if (isAddressInUse) { - const result = await dialog.showMessageBox(window, { - message: `Failed to start Flowser server on port 6061. Please make sure no other processes are running on that port and click restart.`, - buttons: ["Restart", "Quit"], - type: "error", - }); - const restartClicked = 0; - const quitClicked = 1; - switch (result.response) { - case restartClicked: - return onRestart(); - case quitClicked: - return onQuit(); - } - } else { - dialog.showMessageBox(window, { - message: `Error occurred when starting Flowser app: ${String(error)}`, - type: "error", - }); - } - } else { - dialog.showMessageBox(window, { - message: `Unknown error occurred. Try to restart Flowser app.`, - type: "error", - }); - } -} - -function getClientAppUrl() { - const isDev = !app.isPackaged; - // This path is currently set to "react", because that's the folder used in the app package - // Refer to the app/README for more info on the current build process. - return isDev - ? "http://localhost:6060" - : `file://${path.join(__dirname, "../../../react/index.html")}`; -} - -type ErrorWithCode = { code: string }; - -function isErrorWithCode(error: unknown): error is ErrorWithCode { - return typeof error === "object" && error !== null && "code" in error; -} - -type ErrorWithMessage = { message: string }; - -function isErrorWithMessage(error: unknown): error is ErrorWithMessage { - return typeof error === "object" && error !== null && "message" in error; -} diff --git a/frontend/src/targets/electron/preload.ts b/frontend/src/targets/electron/preload.ts deleted file mode 100644 index d8399da83..000000000 --- a/frontend/src/targets/electron/preload.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { contextBridge, ipcRenderer } from "electron"; - -contextBridge.exposeInMainWorld("platformAdapter", { - showDirectoryPicker: () => ipcRenderer.invoke("showDirectoryPicker"), - handleExit: (callback: () => void) => ipcRenderer.on("exit", callback), - handleUpdateDownloadStart: (callback: () => void) => - ipcRenderer.on("update-download-start", callback), - handleUpdateDownloadEnd: (callback: () => void) => - ipcRenderer.on("update-download-end", callback), - handleUpdateDownloadProgress: (callback: (percentage: number) => void) => - ipcRenderer.on("update-download-progress", (event, value) => - callback(value as unknown as number) - ), -}); diff --git a/frontend/src/targets/web/index.tsx b/frontend/src/targets/web/index.tsx deleted file mode 100644 index 94e8b83ea..000000000 --- a/frontend/src/targets/web/index.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import React from "react"; -import ReactDOM from "react-dom"; -import "apps/electron/src/renderer/App.scss"; -import { FlowserClientApp } from "apps/electron/src/renderer/router"; -import reportWebVitals from "reportWebVitals"; - -async function renderApp() { - ReactDOM.render( - - - , - document.getElementById("root") - ); -} - -// If you want to start measuring performance in your app, pass a function -// to log results (for example: reportWebVitals(console.log)) -// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals -reportWebVitals(); - -renderApp(); diff --git a/frontend/tsconfig.electron.json b/frontend/tsconfig.electron.json deleted file mode 100644 index 574f289eb..000000000 --- a/frontend/tsconfig.electron.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "compilerOptions": { - "moduleResolution": "node", - "skipLibCheck": true, - "esModuleInterop": true, - "outDir": "./dist" - }, - "include": [ - "src/targets/electron/main.ts", - "src/targets/electron/preload.ts" - ] -} diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json deleted file mode 100644 index 065dfae3d..000000000 --- a/frontend/tsconfig.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "compilerOptions": { - "declaration": true, - "module": "esnext", - "target": "es5", - "downlevelIteration": true, - "lib": [ - "es6", - "dom", - "ES2021" - ], - "baseUrl": "src", - "sourceMap": true, - "jsx": "react-jsx", - "moduleResolution": "node", - "allowSyntheticDefaultImports": true, - "esModuleInterop": true, - "allowJs": true, - "skipLibCheck": true, - "strictNullChecks": true, - "noImplicitAny": true, - "strict": true, - "forceConsistentCasingInFileNames": true, - "noFallthroughCasesInSwitch": true, - "resolveJsonModule": true, - "isolatedModules": true, - "noEmit": true - }, - "include": [ - "src/**/*" - ] -} diff --git a/frontend/yarn.lock b/frontend/yarn.lock deleted file mode 100644 index 28415afca..000000000 --- a/frontend/yarn.lock +++ /dev/null @@ -1,14311 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"7zip-bin@~5.1.1": - version "5.1.1" - resolved "https://registry.yarnpkg.com/7zip-bin/-/7zip-bin-5.1.1.tgz#9274ec7460652f9c632c59addf24efb1684ef876" - integrity sha512-sAP4LldeWNz0lNzmTird3uWfFDWWTeg6V/MsmyyLR9X1idwKBWIgt/ZvinqQldJm3LecKEs1emkbquO6PCiLVQ== - -"@babel/code-frame@7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" - integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== - dependencies: - "@babel/highlight" "^7.10.4" - -"@babel/code-frame@7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" - integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== - dependencies: - "@babel/highlight" "^7.10.4" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.14.5", "@babel/code-frame@^7.15.8", "@babel/code-frame@^7.5.5": - version "7.15.8" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.15.8.tgz#45990c47adadb00c03677baa89221f7cc23d2503" - integrity sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg== - dependencies: - "@babel/highlight" "^7.14.5" - -"@babel/compat-data@^7.12.1", "@babel/compat-data@^7.13.11", "@babel/compat-data@^7.15.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.15.0.tgz#2dbaf8b85334796cafbb0f5793a90a2fc010b176" - integrity sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA== - -"@babel/core@7.12.3": - version "7.12.3" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.3.tgz#1b436884e1e3bff6fb1328dc02b208759de92ad8" - integrity sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.12.1" - "@babel/helper-module-transforms" "^7.12.1" - "@babel/helpers" "^7.12.1" - "@babel/parser" "^7.12.3" - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.12.1" - "@babel/types" "^7.12.1" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.1" - json5 "^2.1.2" - lodash "^4.17.19" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" - -"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.7.5", "@babel/core@^7.8.4": - version "7.15.8" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.15.8.tgz#195b9f2bffe995d2c6c159e72fe525b4114e8c10" - integrity sha512-3UG9dsxvYBMYwRv+gS41WKHno4K60/9GPy1CJaH6xy3Elq8CTtvtjT5R5jmNhXfCYLX2mTw+7/aq5ak/gOE0og== - dependencies: - "@babel/code-frame" "^7.15.8" - "@babel/generator" "^7.15.8" - "@babel/helper-compilation-targets" "^7.15.4" - "@babel/helper-module-transforms" "^7.15.8" - "@babel/helpers" "^7.15.4" - "@babel/parser" "^7.15.8" - "@babel/template" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.6" - 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" - -"@babel/generator@^7.12.1", "@babel/generator@^7.15.4", "@babel/generator@^7.15.8": - version "7.15.8" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.15.8.tgz#fa56be6b596952ceb231048cf84ee499a19c0cd1" - integrity sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g== - dependencies: - "@babel/types" "^7.15.6" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/helper-annotate-as-pure@^7.14.5", "@babel/helper-annotate-as-pure@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.15.4.tgz#3d0e43b00c5e49fdb6c57e421601a7a658d5f835" - integrity sha512-QwrtdNvUNsPCj2lfNQacsGSQvGX8ee1ttrBrcozUP2Sv/jylewBP/8QFe6ZkBsC8T/GYWonNAWJV4aRR9AL2DA== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.14.5": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.15.4.tgz#21ad815f609b84ee0e3058676c33cf6d1670525f" - integrity sha512-P8o7JP2Mzi0SdC6eWr1zF+AEYvrsZa7GSY1lTayjF5XJhVH0kjLYUZPvTMflP7tBgZoe9gIhTa60QwFpqh/E0Q== - dependencies: - "@babel/helper-explode-assignable-expression" "^7.15.4" - "@babel/types" "^7.15.4" - -"@babel/helper-compilation-targets@^7.12.1", "@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz#cf6d94f30fbefc139123e27dd6b02f65aeedb7b9" - integrity sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ== - dependencies: - "@babel/compat-data" "^7.15.0" - "@babel/helper-validator-option" "^7.14.5" - browserslist "^4.16.6" - semver "^6.3.0" - -"@babel/helper-create-class-features-plugin@^7.12.1", "@babel/helper-create-class-features-plugin@^7.14.5", "@babel/helper-create-class-features-plugin@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.15.4.tgz#7f977c17bd12a5fba363cb19bea090394bf37d2e" - integrity sha512-7ZmzFi+DwJx6A7mHRwbuucEYpyBwmh2Ca0RvI6z2+WLZYCqV0JOaLb+u0zbtmDicebgKBZgqbYfLaKNqSgv5Pw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.15.4" - "@babel/helper-function-name" "^7.15.4" - "@babel/helper-member-expression-to-functions" "^7.15.4" - "@babel/helper-optimise-call-expression" "^7.15.4" - "@babel/helper-replace-supers" "^7.15.4" - "@babel/helper-split-export-declaration" "^7.15.4" - -"@babel/helper-create-regexp-features-plugin@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.5.tgz#c7d5ac5e9cf621c26057722fb7a8a4c5889358c4" - integrity sha512-TLawwqpOErY2HhWbGJ2nZT5wSkR192QpN+nBg1THfBfftrlvOh+WbhrxXCH4q4xJ9Gl16BGPR/48JA+Ryiho/A== - dependencies: - "@babel/helper-annotate-as-pure" "^7.14.5" - regexpu-core "^4.7.1" - -"@babel/helper-define-polyfill-provider@^0.2.2": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz#0525edec5094653a282688d34d846e4c75e9c0b6" - integrity sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew== - dependencies: - "@babel/helper-compilation-targets" "^7.13.0" - "@babel/helper-module-imports" "^7.12.13" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/traverse" "^7.13.0" - debug "^4.1.1" - lodash.debounce "^4.0.8" - resolve "^1.14.2" - semver "^6.1.2" - -"@babel/helper-explode-assignable-expression@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.15.4.tgz#f9aec9d219f271eaf92b9f561598ca6b2682600c" - integrity sha512-J14f/vq8+hdC2KoWLIQSsGrC9EFBKE4NFts8pfMpymfApds+fPqR30AOUWc4tyr56h9l/GA1Sxv2q3dLZWbQ/g== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-function-name@^7.14.5", "@babel/helper-function-name@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz#845744dafc4381a4a5fb6afa6c3d36f98a787ebc" - integrity sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw== - dependencies: - "@babel/helper-get-function-arity" "^7.15.4" - "@babel/template" "^7.15.4" - "@babel/types" "^7.15.4" - -"@babel/helper-get-function-arity@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz#098818934a137fce78b536a3e015864be1e2879b" - integrity sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-hoist-variables@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz#09993a3259c0e918f99d104261dfdfc033f178df" - integrity sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-member-expression-to-functions@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz#bfd34dc9bba9824a4658b0317ec2fd571a51e6ef" - integrity sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.12.1", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.14.5", "@babel/helper-module-imports@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz#e18007d230632dea19b47853b984476e7b4e103f" - integrity sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.14.5", "@babel/helper-module-transforms@^7.15.4", "@babel/helper-module-transforms@^7.15.8": - version "7.15.8" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.15.8.tgz#d8c0e75a87a52e374a8f25f855174786a09498b2" - integrity sha512-DfAfA6PfpG8t4S6npwzLvTUpp0sS7JrcuaMiy1Y5645laRJIp/LiLGIBbQKaXSInK8tiGNI7FL7L8UvB8gdUZg== - dependencies: - "@babel/helper-module-imports" "^7.15.4" - "@babel/helper-replace-supers" "^7.15.4" - "@babel/helper-simple-access" "^7.15.4" - "@babel/helper-split-export-declaration" "^7.15.4" - "@babel/helper-validator-identifier" "^7.15.7" - "@babel/template" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.6" - -"@babel/helper-optimise-call-expression@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz#f310a5121a3b9cc52d9ab19122bd729822dee171" - integrity sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9" - integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ== - -"@babel/helper-remap-async-to-generator@^7.14.5", "@babel/helper-remap-async-to-generator@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.15.4.tgz#2637c0731e4c90fbf58ac58b50b2b5a192fc970f" - integrity sha512-v53MxgvMK/HCwckJ1bZrq6dNKlmwlyRNYM6ypaRTdXWGOE2c1/SCa6dL/HimhPulGhZKw9W0QhREM583F/t0vQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.15.4" - "@babel/helper-wrap-function" "^7.15.4" - "@babel/types" "^7.15.4" - -"@babel/helper-replace-supers@^7.14.5", "@babel/helper-replace-supers@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz#52a8ab26ba918c7f6dee28628b07071ac7b7347a" - integrity sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.15.4" - "@babel/helper-optimise-call-expression" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.4" - -"@babel/helper-simple-access@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz#ac368905abf1de8e9781434b635d8f8674bcc13b" - integrity sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-skip-transparent-expression-wrappers@^7.12.1", "@babel/helper-skip-transparent-expression-wrappers@^7.14.5", "@babel/helper-skip-transparent-expression-wrappers@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.15.4.tgz#707dbdba1f4ad0fa34f9114fc8197aec7d5da2eb" - integrity sha512-BMRLsdh+D1/aap19TycS4eD1qELGrCBJwzaY9IE8LrpJtJb+H7rQkPIdsfgnMtLBA6DJls7X9z93Z4U8h7xw0A== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-split-export-declaration@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz#aecab92dcdbef6a10aa3b62ab204b085f776e257" - integrity sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-validator-identifier@^7.14.5", "@babel/helper-validator-identifier@^7.14.9", "@babel/helper-validator-identifier@^7.15.7": - version "7.15.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389" - integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w== - -"@babel/helper-validator-option@^7.12.1", "@babel/helper-validator-option@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3" - integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow== - -"@babel/helper-wrap-function@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.15.4.tgz#6f754b2446cfaf3d612523e6ab8d79c27c3a3de7" - integrity sha512-Y2o+H/hRV5W8QhIfTpRIBwl57y8PrZt6JM3V8FOo5qarjshHItyH5lXlpMfBfmBefOqSCpKZs/6Dxqp0E/U+uw== - dependencies: - "@babel/helper-function-name" "^7.15.4" - "@babel/template" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.4" - -"@babel/helpers@^7.12.1", "@babel/helpers@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.15.4.tgz#5f40f02050a3027121a3cf48d497c05c555eaf43" - integrity sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ== - dependencies: - "@babel/template" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.4" - -"@babel/highlight@^7.10.4", "@babel/highlight@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" - integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg== - dependencies: - "@babel/helper-validator-identifier" "^7.14.5" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/parser@^7.1.0", "@babel/parser@^7.12.3", "@babel/parser@^7.15.4", "@babel/parser@^7.15.8", "@babel/parser@^7.7.0": - version "7.15.8" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.15.8.tgz#7bacdcbe71bdc3ff936d510c15dcea7cf0b99016" - integrity sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA== - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.15.4.tgz#dbdeabb1e80f622d9f0b583efb2999605e0a567e" - integrity sha512-eBnpsl9tlhPhpI10kU06JHnrYXwg3+V6CaP2idsCXNef0aeslpqyITXQ74Vfk5uHgY7IG7XP0yIH8b42KSzHog== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.15.4" - "@babel/plugin-proposal-optional-chaining" "^7.14.5" - -"@babel/plugin-proposal-async-generator-functions@^7.12.1", "@babel/plugin-proposal-async-generator-functions@^7.15.8": - version "7.15.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.15.8.tgz#a3100f785fab4357987c4223ab1b02b599048403" - integrity sha512-2Z5F2R2ibINTc63mY7FLqGfEbmofrHU9FitJW1Q7aPaKFhiPvSq6QEt/BoWN5oME3GVyjcRuNNSRbb9LC0CSWA== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-remap-async-to-generator" "^7.15.4" - "@babel/plugin-syntax-async-generators" "^7.8.4" - -"@babel/plugin-proposal-class-properties@7.12.1", "@babel/plugin-proposal-class-properties@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz#a082ff541f2a29a4821065b8add9346c0c16e5de" - integrity sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-proposal-class-properties@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz#40d1ee140c5b1e31a350f4f5eed945096559b42e" - integrity sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-proposal-class-static-block@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.15.4.tgz#3e7ca6128453c089e8b477a99f970c63fc1cb8d7" - integrity sha512-M682XWrrLNk3chXCjoPUQWOyYsB93B9z3mRyjtqqYJWDf2mfCdIYgDrA11cgNVhAQieaq6F2fn2f3wI0U4aTjA== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - -"@babel/plugin-proposal-decorators@7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.12.1.tgz#59271439fed4145456c41067450543aee332d15f" - integrity sha512-knNIuusychgYN8fGJHONL0RbFxLGawhXOJNLBk75TniTsZZeA+wdkDuv6wp4lGwzQEKjZi6/WYtnb3udNPmQmQ== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-decorators" "^7.12.1" - -"@babel/plugin-proposal-dynamic-import@^7.12.1", "@babel/plugin-proposal-dynamic-import@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.5.tgz#0c6617df461c0c1f8fff3b47cd59772360101d2c" - integrity sha512-ExjiNYc3HDN5PXJx+bwC50GIx/KKanX2HiggnIUAYedbARdImiCU4RhhHfdf0Kd7JNXGpsBBBCOm+bBVy3Gb0g== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - -"@babel/plugin-proposal-export-namespace-from@^7.12.1", "@babel/plugin-proposal-export-namespace-from@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.5.tgz#dbad244310ce6ccd083072167d8cea83a52faf76" - integrity sha512-g5POA32bXPMmSBu5Dx/iZGLGnKmKPc5AiY7qfZgurzrCYgIztDlHFbznSNCoQuv57YQLnQfaDi7dxCtLDIdXdA== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - -"@babel/plugin-proposal-json-strings@^7.12.1", "@babel/plugin-proposal-json-strings@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.5.tgz#38de60db362e83a3d8c944ac858ddf9f0c2239eb" - integrity sha512-NSq2fczJYKVRIsUJyNxrVUMhB27zb7N7pOFGQOhBKJrChbGcgEAqyZrmZswkPk18VMurEeJAaICbfm57vUeTbQ== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-json-strings" "^7.8.3" - -"@babel/plugin-proposal-logical-assignment-operators@^7.12.1", "@babel/plugin-proposal-logical-assignment-operators@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.5.tgz#6e6229c2a99b02ab2915f82571e0cc646a40c738" - integrity sha512-YGn2AvZAo9TwyhlLvCCWxD90Xq8xJ4aSgaX3G5D/8DW94L8aaT+dS5cSP+Z06+rCJERGSr9GxMBZ601xoc2taw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - -"@babel/plugin-proposal-nullish-coalescing-operator@7.12.1", "@babel/plugin-proposal-nullish-coalescing-operator@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz#3ed4fff31c015e7f3f1467f190dbe545cd7b046c" - integrity sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" - -"@babel/plugin-proposal-nullish-coalescing-operator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz#ee38589ce00e2cc59b299ec3ea406fcd3a0fdaf6" - integrity sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - -"@babel/plugin-proposal-numeric-separator@7.12.1", "@babel/plugin-proposal-numeric-separator@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.1.tgz#0e2c6774c4ce48be412119b4d693ac777f7685a6" - integrity sha512-MR7Ok+Af3OhNTCxYVjJZHS0t97ydnJZt/DbR4WISO39iDnhiD8XHrY12xuSJ90FFEGjir0Fzyyn7g/zY6hxbxA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - -"@babel/plugin-proposal-numeric-separator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.5.tgz#83631bf33d9a51df184c2102a069ac0c58c05f18" - integrity sha512-yiclALKe0vyZRZE0pS6RXgjUOt87GWv6FYa5zqj15PvhOGFO69R5DusPlgK/1K5dVnCtegTiWu9UaBSrLLJJBg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - -"@babel/plugin-proposal-object-rest-spread@^7.12.1", "@babel/plugin-proposal-object-rest-spread@^7.15.6": - version "7.15.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.15.6.tgz#ef68050c8703d07b25af402cb96cf7f34a68ed11" - integrity sha512-qtOHo7A1Vt+O23qEAX+GdBpqaIuD3i9VRrWgCJeq7WO6H2d14EK3q11urj5Te2MAeK97nMiIdRpwd/ST4JFbNg== - dependencies: - "@babel/compat-data" "^7.15.0" - "@babel/helper-compilation-targets" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.15.4" - -"@babel/plugin-proposal-optional-catch-binding@^7.12.1", "@babel/plugin-proposal-optional-catch-binding@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.5.tgz#939dd6eddeff3a67fdf7b3f044b5347262598c3c" - integrity sha512-3Oyiixm0ur7bzO5ybNcZFlmVsygSIQgdOa7cTfOYCMY+wEPAYhZAJxi3mixKFCTCKUhQXuCTtQ1MzrpL3WT8ZQ== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - -"@babel/plugin-proposal-optional-chaining@7.12.1", "@babel/plugin-proposal-optional-chaining@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.1.tgz#cce122203fc8a32794296fc377c6dedaf4363797" - integrity sha512-c2uRpY6WzaVDzynVY9liyykS+kVU+WRZPMPYpkelXH8KBt1oXoI89kPbZKKG/jDT5UK92FTW2fZkZaJhdiBabw== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" - "@babel/plugin-syntax-optional-chaining" "^7.8.0" - -"@babel/plugin-proposal-optional-chaining@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz#fa83651e60a360e3f13797eef00b8d519695b603" - integrity sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.14.5" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -"@babel/plugin-proposal-private-methods@^7.12.1", "@babel/plugin-proposal-private-methods@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.14.5.tgz#37446495996b2945f30f5be5b60d5e2aa4f5792d" - integrity sha512-838DkdUA1u+QTCplatfq4B7+1lnDa/+QMI89x5WZHBcnNv+47N8QEj2k9I2MUU9xIv8XJ4XvPCviM/Dj7Uwt9g== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-proposal-private-property-in-object@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.15.4.tgz#55c5e3b4d0261fd44fe637e3f624cfb0f484e3e5" - integrity sha512-X0UTixkLf0PCCffxgu5/1RQyGGbgZuKoI+vXP4iSbJSYwPb7hu06omsFGBvQ9lJEvwgrxHdS8B5nbfcd8GyUNA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.15.4" - "@babel/helper-create-class-features-plugin" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - -"@babel/plugin-proposal-unicode-property-regex@^7.12.1", "@babel/plugin-proposal-unicode-property-regex@^7.14.5", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.14.5.tgz#0f95ee0e757a5d647f378daa0eca7e93faa8bbe8" - integrity sha512-6axIeOU5LnY471KenAB9vI8I5j7NQ2d652hIYwVyRfgaZT5UpiqFKCuVXCDMSrU+3VFafnu2c5m3lrWIlr6A5Q== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-async-generators@^7.8.0", "@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-bigint@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" - integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.12.1", "@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" - integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-class-static-block@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" - integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-decorators@^7.12.1": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.14.5.tgz#eafb9c0cbe09c8afeb964ba3a7bbd63945a72f20" - integrity sha512-c4sZMRWL4GSvP1EXy0woIP7m4jkVcEuG8R1TOZxPBPtp4FSM/kiPZub9UIs/Jrb5ZAOzvTUSGYrWsrSu1JvoPw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-dynamic-import@^7.8.0", "@babel/plugin-syntax-dynamic-import@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" - integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-export-namespace-from@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" - integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-flow@^7.12.1": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.14.5.tgz#2ff654999497d7d7d142493260005263731da180" - integrity sha512-9WK5ZwKCdWHxVuU13XNT6X73FGmutAXeor5lGFq6qhOFtMFUF4jkbijuyUdZZlpYq6E2hZeZf/u3959X9wsv0Q== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-import-meta@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" - integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-json-strings@^7.8.0", "@babel/plugin-syntax-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-jsx@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz#000e2e25d8673cce49300517a3eda44c263e4201" - integrity sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" - integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" - integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.0", "@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.0", "@babel/plugin-syntax-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-private-property-in-object@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" - integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-top-level-await@^7.12.1", "@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" - integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-typescript@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz#b82c6ce471b165b5ce420cf92914d6fb46225716" - integrity sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-arrow-functions@^7.12.1", "@babel/plugin-transform-arrow-functions@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.14.5.tgz#f7187d9588a768dd080bf4c9ffe117ea62f7862a" - integrity sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-async-to-generator@^7.12.1", "@babel/plugin-transform-async-to-generator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz#72c789084d8f2094acb945633943ef8443d39e67" - integrity sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA== - dependencies: - "@babel/helper-module-imports" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-remap-async-to-generator" "^7.14.5" - -"@babel/plugin-transform-block-scoped-functions@^7.12.1", "@babel/plugin-transform-block-scoped-functions@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz#e48641d999d4bc157a67ef336aeb54bc44fd3ad4" - integrity sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-block-scoping@^7.12.1", "@babel/plugin-transform-block-scoping@^7.15.3": - version "7.15.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.15.3.tgz#94c81a6e2fc230bcce6ef537ac96a1e4d2b3afaf" - integrity sha512-nBAzfZwZb4DkaGtOes1Up1nOAp9TDRRFw4XBzBBSG9QK7KVFmYzgj9o9sbPv7TX5ofL4Auq4wZnxCoPnI/lz2Q== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-classes@^7.12.1", "@babel/plugin-transform-classes@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.15.4.tgz#50aee17aaf7f332ae44e3bce4c2e10534d5d3bf1" - integrity sha512-Yjvhex8GzBmmPQUvpXRPWQ9WnxXgAFuZSrqOK/eJlOGIXwvv8H3UEdUigl1gb/bnjTrln+e8bkZUYCBt/xYlBg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.15.4" - "@babel/helper-function-name" "^7.15.4" - "@babel/helper-optimise-call-expression" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-replace-supers" "^7.15.4" - "@babel/helper-split-export-declaration" "^7.15.4" - globals "^11.1.0" - -"@babel/plugin-transform-computed-properties@^7.12.1", "@babel/plugin-transform-computed-properties@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz#1b9d78987420d11223d41195461cc43b974b204f" - integrity sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-destructuring@^7.12.1", "@babel/plugin-transform-destructuring@^7.14.7": - version "7.14.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.7.tgz#0ad58ed37e23e22084d109f185260835e5557576" - integrity sha512-0mDE99nK+kVh3xlc5vKwB6wnP9ecuSj+zQCa/n0voENtP/zymdT4HH6QEb65wjjcbqr1Jb/7z9Qp7TF5FtwYGw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-dotall-regex@^7.12.1", "@babel/plugin-transform-dotall-regex@^7.14.5", "@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.14.5.tgz#2f6bf76e46bdf8043b4e7e16cf24532629ba0c7a" - integrity sha512-loGlnBdj02MDsFaHhAIJzh7euK89lBrGIdM9EAtHFo6xKygCUGuuWe07o1oZVk287amtW1n0808sQM99aZt3gw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-duplicate-keys@^7.12.1", "@babel/plugin-transform-duplicate-keys@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.14.5.tgz#365a4844881bdf1501e3a9f0270e7f0f91177954" - integrity sha512-iJjbI53huKbPDAsJ8EmVmvCKeeq21bAze4fu9GBQtSLqfvzj2oRuHVx4ZkDwEhg1htQ+5OBZh/Ab0XDf5iBZ7A== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-exponentiation-operator@^7.12.1", "@babel/plugin-transform-exponentiation-operator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.14.5.tgz#5154b8dd6a3dfe6d90923d61724bd3deeb90b493" - integrity sha512-jFazJhMBc9D27o9jDnIE5ZErI0R0m7PbKXVq77FFvqFbzvTMuv8jaAwLZ5PviOLSFttqKIW0/wxNSDbjLk0tYA== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-flow-strip-types@7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.12.1.tgz#8430decfa7eb2aea5414ed4a3fa6e1652b7d77c4" - integrity sha512-8hAtkmsQb36yMmEtk2JZ9JnVyDSnDOdlB+0nEGzIDLuK4yR3JcEjfuFPYkdEPSh8Id+rAMeBEn+X0iVEyho6Hg== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-flow" "^7.12.1" - -"@babel/plugin-transform-for-of@^7.12.1", "@babel/plugin-transform-for-of@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.15.4.tgz#25c62cce2718cfb29715f416e75d5263fb36a8c2" - integrity sha512-DRTY9fA751AFBDh2oxydvVm4SYevs5ILTWLs6xKXps4Re/KG5nfUkr+TdHCrRWB8C69TlzVgA9b3RmGWmgN9LA== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-function-name@^7.12.1", "@babel/plugin-transform-function-name@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz#e81c65ecb900746d7f31802f6bed1f52d915d6f2" - integrity sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ== - dependencies: - "@babel/helper-function-name" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-literals@^7.12.1", "@babel/plugin-transform-literals@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz#41d06c7ff5d4d09e3cf4587bd3ecf3930c730f78" - integrity sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-member-expression-literals@^7.12.1", "@babel/plugin-transform-member-expression-literals@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz#b39cd5212a2bf235a617d320ec2b48bcc091b8a7" - integrity sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-modules-amd@^7.12.1", "@babel/plugin-transform-modules-amd@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.5.tgz#4fd9ce7e3411cb8b83848480b7041d83004858f7" - integrity sha512-3lpOU8Vxmp3roC4vzFpSdEpGUWSMsHFreTWOMMLzel2gNGfHE5UWIh/LN6ghHs2xurUp4jRFYMUIZhuFbody1g== - dependencies: - "@babel/helper-module-transforms" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-commonjs@^7.12.1", "@babel/plugin-transform-modules-commonjs@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.15.4.tgz#8201101240eabb5a76c08ef61b2954f767b6b4c1" - integrity sha512-qg4DPhwG8hKp4BbVDvX1s8cohM8a6Bvptu4l6Iingq5rW+yRUAhe/YRup/YcW2zCOlrysEWVhftIcKzrEZv3sA== - dependencies: - "@babel/helper-module-transforms" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-simple-access" "^7.15.4" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-systemjs@^7.12.1", "@babel/plugin-transform-modules-systemjs@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.15.4.tgz#b42890c7349a78c827719f1d2d0cd38c7d268132" - integrity sha512-fJUnlQrl/mezMneR72CKCgtOoahqGJNVKpompKwzv3BrEXdlPspTcyxrZ1XmDTIr9PpULrgEQo3qNKp6dW7ssw== - dependencies: - "@babel/helper-hoist-variables" "^7.15.4" - "@babel/helper-module-transforms" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-validator-identifier" "^7.14.9" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-umd@^7.12.1", "@babel/plugin-transform-modules-umd@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.5.tgz#fb662dfee697cce274a7cda525190a79096aa6e0" - integrity sha512-RfPGoagSngC06LsGUYyM9QWSXZ8MysEjDJTAea1lqRjNECE3y0qIJF/qbvJxc4oA4s99HumIMdXOrd+TdKaAAA== - dependencies: - "@babel/helper-module-transforms" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.12.1", "@babel/plugin-transform-named-capturing-groups-regex@^7.14.9": - version "7.14.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.14.9.tgz#c68f5c5d12d2ebaba3762e57c2c4f6347a46e7b2" - integrity sha512-l666wCVYO75mlAtGFfyFwnWmIXQm3kSH0C3IRnJqWcZbWkoihyAdDhFm2ZWaxWTqvBvhVFfJjMRQ0ez4oN1yYA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.14.5" - -"@babel/plugin-transform-new-target@^7.12.1", "@babel/plugin-transform-new-target@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.14.5.tgz#31bdae8b925dc84076ebfcd2a9940143aed7dbf8" - integrity sha512-Nx054zovz6IIRWEB49RDRuXGI4Gy0GMgqG0cII9L3MxqgXz/+rgII+RU58qpo4g7tNEx1jG7rRVH4ihZoP4esQ== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-object-super@^7.12.1", "@babel/plugin-transform-object-super@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz#d0b5faeac9e98597a161a9cf78c527ed934cdc45" - integrity sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-replace-supers" "^7.14.5" - -"@babel/plugin-transform-parameters@^7.12.1", "@babel/plugin-transform-parameters@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.15.4.tgz#5f2285cc3160bf48c8502432716b48504d29ed62" - integrity sha512-9WB/GUTO6lvJU3XQsSr6J/WKvBC2hcs4Pew8YxZagi6GkTdniyqp8On5kqdK8MN0LMeu0mGbhPN+O049NV/9FQ== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-property-literals@^7.12.1", "@babel/plugin-transform-property-literals@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz#0ddbaa1f83db3606f1cdf4846fa1dfb473458b34" - integrity sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-react-constant-elements@^7.12.1": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.14.5.tgz#41790d856f7c5cec82d2bcf5d0e5064d682522ed" - integrity sha512-NBqLEx1GxllIOXJInJAQbrnwwYJsV3WaMHIcOwD8rhYS0AabTWn7kHdHgPgu5RmHLU0q4DMxhAMu8ue/KampgQ== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-react-display-name@7.12.1", "@babel/plugin-transform-react-display-name@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.1.tgz#1cbcd0c3b1d6648c55374a22fc9b6b7e5341c00d" - integrity sha512-cAzB+UzBIrekfYxyLlFqf/OagTvHLcVBb5vpouzkYkBclRPraiygVnafvAoipErZLI8ANv8Ecn6E/m5qPXD26w== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-react-display-name@^7.14.5": - version "7.15.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.15.1.tgz#6aaac6099f1fcf6589d35ae6be1b6e10c8c602b9" - integrity sha512-yQZ/i/pUCJAHI/LbtZr413S3VT26qNrEm0M5RRxQJA947/YNYwbZbBaXGDrq6CG5QsZycI1VIP6d7pQaBfP+8Q== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-react-jsx-development@^7.12.1", "@babel/plugin-transform-react-jsx-development@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.14.5.tgz#1a6c73e2f7ed2c42eebc3d2ad60b0c7494fcb9af" - integrity sha512-rdwG/9jC6QybWxVe2UVOa7q6cnTpw8JRRHOxntG/h6g/guAOe6AhtQHJuJh5FwmnXIT1bdm5vC2/5huV8ZOorQ== - dependencies: - "@babel/plugin-transform-react-jsx" "^7.14.5" - -"@babel/plugin-transform-react-jsx-self@^7.12.1": - version "7.14.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.14.9.tgz#33041e665453391eb6ee54a2ecf3ba1d46bd30f4" - integrity sha512-Fqqu0f8zv9W+RyOnx29BX/RlEsBRANbOf5xs5oxb2aHP4FKbLXxIaVPUiCti56LAR1IixMH4EyaixhUsKqoBHw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-react-jsx-source@^7.12.1": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.14.5.tgz#79f728e60e6dbd31a2b860b0bf6c9765918acf1d" - integrity sha512-1TpSDnD9XR/rQ2tzunBVPThF5poaYT9GqP+of8fAtguYuI/dm2RkrMBDemsxtY0XBzvW7nXjYM0hRyKX9QYj7Q== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-react-jsx@^7.12.1", "@babel/plugin-transform-react-jsx@^7.14.5": - version "7.14.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.14.9.tgz#3314b2163033abac5200a869c4de242cd50a914c" - integrity sha512-30PeETvS+AeD1f58i1OVyoDlVYQhap/K20ZrMjLmmzmC2AYR/G43D4sdJAaDAqCD3MYpSWbmrz3kES158QSLjw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.14.5" - "@babel/helper-module-imports" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-jsx" "^7.14.5" - "@babel/types" "^7.14.9" - -"@babel/plugin-transform-react-pure-annotations@^7.12.1", "@babel/plugin-transform-react-pure-annotations@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.14.5.tgz#18de612b84021e3a9802cbc212c9d9f46d0d11fc" - integrity sha512-3X4HpBJimNxW4rhUy/SONPyNQHp5YRr0HhJdT2OH1BRp0of7u3Dkirc7x9FRJMKMqTBI079VZ1hzv7Ouuz///g== - dependencies: - "@babel/helper-annotate-as-pure" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-regenerator@^7.12.1", "@babel/plugin-transform-regenerator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.14.5.tgz#9676fd5707ed28f522727c5b3c0aa8544440b04f" - integrity sha512-NVIY1W3ITDP5xQl50NgTKlZ0GrotKtLna08/uGY6ErQt6VEQZXla86x/CTddm5gZdcr+5GSsvMeTmWA5Ii6pkg== - dependencies: - regenerator-transform "^0.14.2" - -"@babel/plugin-transform-reserved-words@^7.12.1", "@babel/plugin-transform-reserved-words@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.14.5.tgz#c44589b661cfdbef8d4300dcc7469dffa92f8304" - integrity sha512-cv4F2rv1nD4qdexOGsRQXJrOcyb5CrgjUH9PKrrtyhSDBNWGxd0UIitjyJiWagS+EbUGjG++22mGH1Pub8D6Vg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-runtime@7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.1.tgz#04b792057eb460389ff6a4198e377614ea1e7ba5" - integrity sha512-Ac/H6G9FEIkS2tXsZjL4RAdS3L3WHxci0usAnz7laPWUmFiGtj7tIASChqKZMHTSQTQY6xDbOq+V1/vIq3QrWg== - dependencies: - "@babel/helper-module-imports" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" - resolve "^1.8.1" - semver "^5.5.1" - -"@babel/plugin-transform-shorthand-properties@^7.12.1", "@babel/plugin-transform-shorthand-properties@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz#97f13855f1409338d8cadcbaca670ad79e091a58" - integrity sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-spread@^7.12.1", "@babel/plugin-transform-spread@^7.15.8": - version "7.15.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.15.8.tgz#79d5aa27f68d700449b2da07691dfa32d2f6d468" - integrity sha512-/daZ8s2tNaRekl9YJa9X4bzjpeRZLt122cpgFnQPLGUe61PH8zMEBmYqKkW5xF5JUEh5buEGXJoQpqBmIbpmEQ== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.15.4" - -"@babel/plugin-transform-sticky-regex@^7.12.1", "@babel/plugin-transform-sticky-regex@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.14.5.tgz#5b617542675e8b7761294381f3c28c633f40aeb9" - integrity sha512-Z7F7GyvEMzIIbwnziAZmnSNpdijdr4dWt+FJNBnBLz5mwDFkqIXU9wmBcWWad3QeJF5hMTkRe4dAq2sUZiG+8A== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-template-literals@^7.12.1", "@babel/plugin-transform-template-literals@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz#a5f2bc233937d8453885dc736bdd8d9ffabf3d93" - integrity sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-typeof-symbol@^7.12.1", "@babel/plugin-transform-typeof-symbol@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.14.5.tgz#39af2739e989a2bd291bf6b53f16981423d457d4" - integrity sha512-lXzLD30ffCWseTbMQzrvDWqljvZlHkXU+CnseMhkMNqU1sASnCsz3tSzAaH3vCUXb9PHeUb90ZT1BdFTm1xxJw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-typescript@^7.12.1": - version "7.15.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.15.8.tgz#ff0e6a47de9b2d58652123ab5a879b2ff20665d8" - integrity sha512-ZXIkJpbaf6/EsmjeTbiJN/yMxWPFWvlr7sEG1P95Xb4S4IBcrf2n7s/fItIhsAmOf8oSh3VJPDppO6ExfAfKRQ== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-typescript" "^7.14.5" - -"@babel/plugin-transform-unicode-escapes@^7.12.1", "@babel/plugin-transform-unicode-escapes@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.14.5.tgz#9d4bd2a681e3c5d7acf4f57fa9e51175d91d0c6b" - integrity sha512-crTo4jATEOjxj7bt9lbYXcBAM3LZaUrbP2uUdxb6WIorLmjNKSpHfIybgY4B8SRpbf8tEVIWH3Vtm7ayCrKocA== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-unicode-regex@^7.12.1", "@babel/plugin-transform-unicode-regex@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.14.5.tgz#4cd09b6c8425dd81255c7ceb3fb1836e7414382e" - integrity sha512-UygduJpC5kHeCiRw/xDVzC+wj8VaYSoKl5JNVmbP7MadpNinAm3SvZCxZ42H37KZBKztz46YC73i9yV34d0Tzw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/preset-env@7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.12.1.tgz#9c7e5ca82a19efc865384bb4989148d2ee5d7ac2" - integrity sha512-H8kxXmtPaAGT7TyBvSSkoSTUK6RHh61So05SyEbpmr0MCZrsNYn7mGMzzeYoOUCdHzww61k8XBft2TaES+xPLg== - dependencies: - "@babel/compat-data" "^7.12.1" - "@babel/helper-compilation-targets" "^7.12.1" - "@babel/helper-module-imports" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-validator-option" "^7.12.1" - "@babel/plugin-proposal-async-generator-functions" "^7.12.1" - "@babel/plugin-proposal-class-properties" "^7.12.1" - "@babel/plugin-proposal-dynamic-import" "^7.12.1" - "@babel/plugin-proposal-export-namespace-from" "^7.12.1" - "@babel/plugin-proposal-json-strings" "^7.12.1" - "@babel/plugin-proposal-logical-assignment-operators" "^7.12.1" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.1" - "@babel/plugin-proposal-numeric-separator" "^7.12.1" - "@babel/plugin-proposal-object-rest-spread" "^7.12.1" - "@babel/plugin-proposal-optional-catch-binding" "^7.12.1" - "@babel/plugin-proposal-optional-chaining" "^7.12.1" - "@babel/plugin-proposal-private-methods" "^7.12.1" - "@babel/plugin-proposal-unicode-property-regex" "^7.12.1" - "@babel/plugin-syntax-async-generators" "^7.8.0" - "@babel/plugin-syntax-class-properties" "^7.12.1" - "@babel/plugin-syntax-dynamic-import" "^7.8.0" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.0" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" - "@babel/plugin-syntax-optional-chaining" "^7.8.0" - "@babel/plugin-syntax-top-level-await" "^7.12.1" - "@babel/plugin-transform-arrow-functions" "^7.12.1" - "@babel/plugin-transform-async-to-generator" "^7.12.1" - "@babel/plugin-transform-block-scoped-functions" "^7.12.1" - "@babel/plugin-transform-block-scoping" "^7.12.1" - "@babel/plugin-transform-classes" "^7.12.1" - "@babel/plugin-transform-computed-properties" "^7.12.1" - "@babel/plugin-transform-destructuring" "^7.12.1" - "@babel/plugin-transform-dotall-regex" "^7.12.1" - "@babel/plugin-transform-duplicate-keys" "^7.12.1" - "@babel/plugin-transform-exponentiation-operator" "^7.12.1" - "@babel/plugin-transform-for-of" "^7.12.1" - "@babel/plugin-transform-function-name" "^7.12.1" - "@babel/plugin-transform-literals" "^7.12.1" - "@babel/plugin-transform-member-expression-literals" "^7.12.1" - "@babel/plugin-transform-modules-amd" "^7.12.1" - "@babel/plugin-transform-modules-commonjs" "^7.12.1" - "@babel/plugin-transform-modules-systemjs" "^7.12.1" - "@babel/plugin-transform-modules-umd" "^7.12.1" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.1" - "@babel/plugin-transform-new-target" "^7.12.1" - "@babel/plugin-transform-object-super" "^7.12.1" - "@babel/plugin-transform-parameters" "^7.12.1" - "@babel/plugin-transform-property-literals" "^7.12.1" - "@babel/plugin-transform-regenerator" "^7.12.1" - "@babel/plugin-transform-reserved-words" "^7.12.1" - "@babel/plugin-transform-shorthand-properties" "^7.12.1" - "@babel/plugin-transform-spread" "^7.12.1" - "@babel/plugin-transform-sticky-regex" "^7.12.1" - "@babel/plugin-transform-template-literals" "^7.12.1" - "@babel/plugin-transform-typeof-symbol" "^7.12.1" - "@babel/plugin-transform-unicode-escapes" "^7.12.1" - "@babel/plugin-transform-unicode-regex" "^7.12.1" - "@babel/preset-modules" "^0.1.3" - "@babel/types" "^7.12.1" - core-js-compat "^3.6.2" - semver "^5.5.0" - -"@babel/preset-env@^7.12.1", "@babel/preset-env@^7.8.4": - version "7.15.8" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.15.8.tgz#f527ce5bcb121cd199f6b502bf23e420b3ff8dba" - integrity sha512-rCC0wH8husJgY4FPbHsiYyiLxSY8oMDJH7Rl6RQMknbN9oDDHhM9RDFvnGM2MgkbUJzSQB4gtuwygY5mCqGSsA== - dependencies: - "@babel/compat-data" "^7.15.0" - "@babel/helper-compilation-targets" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-validator-option" "^7.14.5" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.15.4" - "@babel/plugin-proposal-async-generator-functions" "^7.15.8" - "@babel/plugin-proposal-class-properties" "^7.14.5" - "@babel/plugin-proposal-class-static-block" "^7.15.4" - "@babel/plugin-proposal-dynamic-import" "^7.14.5" - "@babel/plugin-proposal-export-namespace-from" "^7.14.5" - "@babel/plugin-proposal-json-strings" "^7.14.5" - "@babel/plugin-proposal-logical-assignment-operators" "^7.14.5" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.14.5" - "@babel/plugin-proposal-numeric-separator" "^7.14.5" - "@babel/plugin-proposal-object-rest-spread" "^7.15.6" - "@babel/plugin-proposal-optional-catch-binding" "^7.14.5" - "@babel/plugin-proposal-optional-chaining" "^7.14.5" - "@babel/plugin-proposal-private-methods" "^7.14.5" - "@babel/plugin-proposal-private-property-in-object" "^7.15.4" - "@babel/plugin-proposal-unicode-property-regex" "^7.14.5" - "@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.14.5" - "@babel/plugin-transform-async-to-generator" "^7.14.5" - "@babel/plugin-transform-block-scoped-functions" "^7.14.5" - "@babel/plugin-transform-block-scoping" "^7.15.3" - "@babel/plugin-transform-classes" "^7.15.4" - "@babel/plugin-transform-computed-properties" "^7.14.5" - "@babel/plugin-transform-destructuring" "^7.14.7" - "@babel/plugin-transform-dotall-regex" "^7.14.5" - "@babel/plugin-transform-duplicate-keys" "^7.14.5" - "@babel/plugin-transform-exponentiation-operator" "^7.14.5" - "@babel/plugin-transform-for-of" "^7.15.4" - "@babel/plugin-transform-function-name" "^7.14.5" - "@babel/plugin-transform-literals" "^7.14.5" - "@babel/plugin-transform-member-expression-literals" "^7.14.5" - "@babel/plugin-transform-modules-amd" "^7.14.5" - "@babel/plugin-transform-modules-commonjs" "^7.15.4" - "@babel/plugin-transform-modules-systemjs" "^7.15.4" - "@babel/plugin-transform-modules-umd" "^7.14.5" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.14.9" - "@babel/plugin-transform-new-target" "^7.14.5" - "@babel/plugin-transform-object-super" "^7.14.5" - "@babel/plugin-transform-parameters" "^7.15.4" - "@babel/plugin-transform-property-literals" "^7.14.5" - "@babel/plugin-transform-regenerator" "^7.14.5" - "@babel/plugin-transform-reserved-words" "^7.14.5" - "@babel/plugin-transform-shorthand-properties" "^7.14.5" - "@babel/plugin-transform-spread" "^7.15.8" - "@babel/plugin-transform-sticky-regex" "^7.14.5" - "@babel/plugin-transform-template-literals" "^7.14.5" - "@babel/plugin-transform-typeof-symbol" "^7.14.5" - "@babel/plugin-transform-unicode-escapes" "^7.14.5" - "@babel/plugin-transform-unicode-regex" "^7.14.5" - "@babel/preset-modules" "^0.1.4" - "@babel/types" "^7.15.6" - babel-plugin-polyfill-corejs2 "^0.2.2" - babel-plugin-polyfill-corejs3 "^0.2.5" - babel-plugin-polyfill-regenerator "^0.2.2" - core-js-compat "^3.16.0" - semver "^6.3.0" - -"@babel/preset-modules@^0.1.3", "@babel/preset-modules@^0.1.4": - version "0.1.4" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e" - integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg== - 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" - -"@babel/preset-react@7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.12.1.tgz#7f022b13f55b6dd82f00f16d1c599ae62985358c" - integrity sha512-euCExymHCi0qB9u5fKw7rvlw7AZSjw/NaB9h7EkdTt5+yHRrXdiRTh7fkG3uBPpJg82CqLfp1LHLqWGSCrab+g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-react-display-name" "^7.12.1" - "@babel/plugin-transform-react-jsx" "^7.12.1" - "@babel/plugin-transform-react-jsx-development" "^7.12.1" - "@babel/plugin-transform-react-jsx-self" "^7.12.1" - "@babel/plugin-transform-react-jsx-source" "^7.12.1" - "@babel/plugin-transform-react-pure-annotations" "^7.12.1" - -"@babel/preset-react@^7.12.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.14.5.tgz#0fbb769513f899c2c56f3a882fa79673c2d4ab3c" - integrity sha512-XFxBkjyObLvBaAvkx1Ie95Iaq4S/GUEIrejyrntQ/VCMKUYvKLoyKxOBzJ2kjA3b6rC9/KL6KXfDC2GqvLiNqQ== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-validator-option" "^7.14.5" - "@babel/plugin-transform-react-display-name" "^7.14.5" - "@babel/plugin-transform-react-jsx" "^7.14.5" - "@babel/plugin-transform-react-jsx-development" "^7.14.5" - "@babel/plugin-transform-react-pure-annotations" "^7.14.5" - -"@babel/preset-typescript@7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.12.1.tgz#86480b483bb97f75036e8864fe404cc782cc311b" - integrity sha512-hNK/DhmoJPsksdHuI/RVrcEws7GN5eamhi28JkO52MqIxU8Z0QpmiSOQxZHWOHV7I3P4UjHV97ay4TcamMA6Kw== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-typescript" "^7.12.1" - -"@babel/runtime-corejs3@^7.10.2": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.15.4.tgz#403139af262b9a6e8f9ba04a6fdcebf8de692bf1" - integrity sha512-lWcAqKeB624/twtTc3w6w/2o9RqJPaNBhPGK6DKLSiwuVWC7WFkypWyNg+CpZoyJH0jVzv1uMtXZ/5/lQOLtCg== - dependencies: - core-js-pure "^3.16.0" - regenerator-runtime "^0.13.4" - -"@babel/runtime@7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.1.tgz#b4116a6b6711d010b2dad3b7b6e43bf1b9954740" - integrity sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.15.4.tgz#fd17d16bfdf878e6dd02d19753a39fa8a8d9c84a" - integrity sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/runtime@^7.15.4", "@babel/runtime@^7.18.6": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.9.tgz#b4fcfce55db3d2e5e080d2490f608a3b9f407f4a" - integrity sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/template@^7.10.4", "@babel/template@^7.15.4", "@babel/template@^7.3.3": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.15.4.tgz#51898d35dcf3faa670c4ee6afcfd517ee139f194" - integrity sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg== - dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/parser" "^7.15.4" - "@babel/types" "^7.15.4" - -"@babel/traverse@^7.1.0", "@babel/traverse@^7.12.1", "@babel/traverse@^7.13.0", "@babel/traverse@^7.15.4", "@babel/traverse@^7.7.0": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.15.4.tgz#ff8510367a144bfbff552d9e18e28f3e2889c22d" - integrity sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA== - dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/generator" "^7.15.4" - "@babel/helper-function-name" "^7.15.4" - "@babel/helper-hoist-variables" "^7.15.4" - "@babel/helper-split-export-declaration" "^7.15.4" - "@babel/parser" "^7.15.4" - "@babel/types" "^7.15.4" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/types@^7.0.0", "@babel/types@^7.12.1", "@babel/types@^7.12.6", "@babel/types@^7.14.9", "@babel/types@^7.15.4", "@babel/types@^7.15.6", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": - version "7.15.6" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.15.6.tgz#99abdc48218b2881c058dd0a7ab05b99c9be758f" - integrity sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig== - dependencies: - "@babel/helper-validator-identifier" "^7.14.9" - to-fast-properties "^2.0.0" - -"@bcoe/v8-coverage@^0.2.3": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" - integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== - -"@cnakazawa/watch@^1.0.3": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" - integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ== - dependencies: - exec-sh "^0.3.2" - minimist "^1.2.0" - -"@codemirror/autocomplete@^6.0.0": - version "6.3.0" - resolved "https://registry.yarnpkg.com/@codemirror/autocomplete/-/autocomplete-6.3.0.tgz#217e16bb6ce63374ec7b9d2a01d007ba53ff0aff" - integrity sha512-4jEvh3AjJZTDKazd10J6ZsCIqaYxDMCeua5ouQxY8hlFIml+nr7le0SgBhT3SIytFBmdzPK3AUhXGuW3T79nVg== - dependencies: - "@codemirror/language" "^6.0.0" - "@codemirror/state" "^6.0.0" - "@codemirror/view" "^6.0.0" - "@lezer/common" "^1.0.0" - -"@codemirror/commands@^6.0.0", "@codemirror/commands@^6.1.0": - version "6.1.2" - resolved "https://registry.yarnpkg.com/@codemirror/commands/-/commands-6.1.2.tgz#84fb7d170047c3aeb7b0047ace59510bb19208de" - integrity sha512-sO3jdX1s0pam6lIdeSJLMN3DQ6mPEbM4yLvyKkdqtmd/UDwhXA5+AwFJ89rRXm6vTeOXBsE5cAmlos/t7MJdgg== - dependencies: - "@codemirror/language" "^6.0.0" - "@codemirror/state" "^6.0.0" - "@codemirror/view" "^6.0.0" - "@lezer/common" "^1.0.0" - -"@codemirror/language@^6.0.0": - version "6.2.1" - resolved "https://registry.yarnpkg.com/@codemirror/language/-/language-6.2.1.tgz#cb10cd785a76e50ecd2fe2dc59ff66af8a41b87a" - integrity sha512-MC3svxuvIj0MRpFlGHxLS6vPyIdbTr2KKPEW46kCoCXw2ktb4NTkpkPBI/lSP/FoNXLCBJ0mrnUi1OoZxtpW1Q== - dependencies: - "@codemirror/state" "^6.0.0" - "@codemirror/view" "^6.0.0" - "@lezer/common" "^1.0.0" - "@lezer/highlight" "^1.0.0" - "@lezer/lr" "^1.0.0" - style-mod "^4.0.0" - -"@codemirror/legacy-modes@^6.1.0": - version "6.1.0" - resolved "https://registry.yarnpkg.com/@codemirror/legacy-modes/-/legacy-modes-6.1.0.tgz#f1c6d504069509c8d3d9220453132e559477400c" - integrity sha512-V/PgGpndkZeTn3Hdlg/gd8MLFdyvTCIX+iwJzjUw5iNziWiNsAY8X0jvf7m3gSfxnKkNzmid6l0g4rYSpiDaCw== - dependencies: - "@codemirror/language" "^6.0.0" - -"@codemirror/lint@^6.0.0": - version "6.0.0" - resolved "https://registry.yarnpkg.com/@codemirror/lint/-/lint-6.0.0.tgz#a249b021ac9933b94fe312d994d220f0ef11a157" - integrity sha512-nUUXcJW1Xp54kNs+a1ToPLK8MadO0rMTnJB8Zk4Z8gBdrN0kqV7uvUraU/T2yqg+grDNR38Vmy/MrhQN/RgwiA== - dependencies: - "@codemirror/state" "^6.0.0" - "@codemirror/view" "^6.0.0" - crelt "^1.0.5" - -"@codemirror/search@^6.0.0": - version "6.2.2" - resolved "https://registry.yarnpkg.com/@codemirror/search/-/search-6.2.2.tgz#278ac204bd19a038271595ce060ad32c13eb70a6" - integrity sha512-2pWY599zXk+lSoJ2iv9EuTO4gB7lhgBPLPwFb/zTbimFH4NmZSaKzJSV51okjABZ7/Rj0DYy5klWbIgaJh2LoQ== - dependencies: - "@codemirror/state" "^6.0.0" - "@codemirror/view" "^6.0.0" - crelt "^1.0.5" - -"@codemirror/state@^6.0.0", "@codemirror/state@^6.1.1": - version "6.1.2" - resolved "https://registry.yarnpkg.com/@codemirror/state/-/state-6.1.2.tgz#182d46eabcc17c95508984d6add5a5a641dcd517" - integrity sha512-Mxff85Hp5va+zuj+H748KbubXjrinX/k28lj43H14T2D0+4kuvEFIEIO7hCEcvBT8ubZyIelt9yGOjj2MWOEQA== - -"@codemirror/theme-one-dark@^6.0.0": - version "6.1.0" - resolved "https://registry.yarnpkg.com/@codemirror/theme-one-dark/-/theme-one-dark-6.1.0.tgz#6f8b3c7fc22e9fec59edd573f4ba9546db42e007" - integrity sha512-AiTHtFRu8+vWT9wWUWDM+cog6ZwgivJogB1Tm/g40NIpLwph7AnmxrSzWfvJN5fBVufsuwBxecQCNmdcR5D7Aw== - dependencies: - "@codemirror/language" "^6.0.0" - "@codemirror/state" "^6.0.0" - "@codemirror/view" "^6.0.0" - "@lezer/highlight" "^1.0.0" - -"@codemirror/view@^6.0.0": - version "6.3.1" - resolved "https://registry.yarnpkg.com/@codemirror/view/-/view-6.3.1.tgz#c2f1d8ad569351eb9f8d57956536fc63cd61aaa9" - integrity sha512-NKPBphoV9W2Q6tKXk+ge4q5EhMOOC0rpwdGS80/slNSfsVqkN4gwXIEqSprXJFlf9aUKZU7WhPvqRBMNH+hJkQ== - dependencies: - "@codemirror/state" "^6.0.0" - style-mod "^4.0.0" - w3c-keyname "^2.2.4" - -"@csstools/convert-colors@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" - integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== - -"@csstools/normalize.css@^10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-10.1.0.tgz#f0950bba18819512d42f7197e56c518aa491cf18" - integrity sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg== - -"@develar/schema-utils@~2.6.5": - version "2.6.5" - resolved "https://registry.yarnpkg.com/@develar/schema-utils/-/schema-utils-2.6.5.tgz#3ece22c5838402419a6e0425f85742b961d9b6c6" - integrity sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig== - dependencies: - ajv "^6.12.0" - ajv-keywords "^3.4.1" - -"@electron/get@^1.14.1": - version "1.14.1" - resolved "https://registry.yarnpkg.com/@electron/get/-/get-1.14.1.tgz#16ba75f02dffb74c23965e72d617adc721d27f40" - integrity sha512-BrZYyL/6m0ZXz/lDxy/nlVhQz+WF+iPS6qXolEU8atw7h6v1aYkjwJZ63m+bJMBTxDE66X+r2tPS4a/8C82sZw== - dependencies: - debug "^4.1.1" - env-paths "^2.2.0" - fs-extra "^8.1.0" - got "^9.6.0" - progress "^2.0.3" - semver "^6.2.0" - sumchecker "^3.0.1" - optionalDependencies: - global-agent "^3.0.0" - global-tunnel-ng "^2.7.1" - -"@electron/universal@1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@electron/universal/-/universal-1.2.1.tgz#3c2c4ff37063a4e9ab1e6ff57db0bc619bc82339" - integrity sha512-7323HyMh7KBAl/nPDppdLsC87G6RwRU02dy5FPeGB1eS7rUePh55+WNWiDPLhFQqqVPHzh77M69uhmoT8XnwMQ== - dependencies: - "@malept/cross-spawn-promise" "^1.1.0" - asar "^3.1.0" - debug "^4.3.1" - dir-compare "^2.4.0" - fs-extra "^9.0.1" - minimatch "^3.0.4" - plist "^3.0.4" - -"@eslint/eslintrc@^0.4.3": - version "0.4.3" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" - integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== - dependencies: - ajv "^6.12.4" - debug "^4.1.1" - espree "^7.3.0" - globals "^13.9.0" - ignore "^4.0.6" - import-fresh "^3.2.1" - js-yaml "^3.13.1" - minimatch "^3.0.4" - strip-json-comments "^3.1.1" - -"@fingerprintjs/fingerprintjs@^3.3.6": - version "3.3.6" - resolved "https://registry.yarnpkg.com/@fingerprintjs/fingerprintjs/-/fingerprintjs-3.3.6.tgz#4c3f1726dc0cb10b915cfce78d9471b38cd809bd" - integrity sha512-Inh0OoFVzO2PLvrUF8RZhY9NVDdg9DJHQ5YlvXhrGtQxSPzy2smS3TWzLAi+zlHSJNHSvi+1zYayLen2lGxjdA== - dependencies: - tslib "^2.0.1" - -"@gar/promisify@^1.0.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.2.tgz#30aa825f11d438671d585bd44e7fd564535fc210" - integrity sha512-82cpyJyKRoQoRi+14ibCeGPu0CwypgtBAdBhq1WfvagpCZNKqwXbKwXllYSMG91DhmG4jt9gN8eP6lGOtozuaw== - -"@hapi/address@2.x.x": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5" - integrity sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ== - -"@hapi/bourne@1.x.x": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-1.3.2.tgz#0a7095adea067243ce3283e1b56b8a8f453b242a" - integrity sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA== - -"@hapi/hoek@8.x.x", "@hapi/hoek@^8.3.0": - version "8.5.1" - resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.5.1.tgz#fde96064ca446dec8c55a8c2f130957b070c6e06" - integrity sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow== - -"@hapi/hoek@^9.0.0": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.2.1.tgz#9551142a1980503752536b5050fd99f4a7f13b17" - integrity sha512-gfta+H8aziZsm8pZa0vj04KO6biEiisppNgA1kbJvFrrWu9Vm7eaUEy76DIxsuTaWvti5fkJVhllWc6ZTE+Mdw== - -"@hapi/joi@^15.1.0": - version "15.1.1" - resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-15.1.1.tgz#c675b8a71296f02833f8d6d243b34c57b8ce19d7" - integrity sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ== - dependencies: - "@hapi/address" "2.x.x" - "@hapi/bourne" "1.x.x" - "@hapi/hoek" "8.x.x" - "@hapi/topo" "3.x.x" - -"@hapi/topo@3.x.x": - version "3.1.6" - resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-3.1.6.tgz#68d935fa3eae7fdd5ab0d7f953f3205d8b2bfc29" - integrity sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ== - dependencies: - "@hapi/hoek" "^8.3.0" - -"@hapi/topo@^5.0.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012" - integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== - dependencies: - "@hapi/hoek" "^9.0.0" - -"@humanwhocodes/config-array@^0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" - integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== - dependencies: - "@humanwhocodes/object-schema" "^1.2.0" - debug "^4.1.1" - minimatch "^3.0.4" - -"@humanwhocodes/object-schema@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz#87de7af9c231826fdd68ac7258f77c429e0e5fcf" - integrity sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w== - -"@istanbuljs/load-nyc-config@^1.0.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" - integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== - 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" - -"@istanbuljs/schema@^0.1.2": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" - integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== - -"@jest/console@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-26.6.2.tgz#4e04bc464014358b03ab4937805ee36a0aeb98f2" - integrity sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g== - dependencies: - "@jest/types" "^26.6.2" - "@types/node" "*" - chalk "^4.0.0" - jest-message-util "^26.6.2" - jest-util "^26.6.2" - slash "^3.0.0" - -"@jest/core@^26.6.0", "@jest/core@^26.6.3": - version "26.6.3" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-26.6.3.tgz#7639fcb3833d748a4656ada54bde193051e45fad" - integrity sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw== - dependencies: - "@jest/console" "^26.6.2" - "@jest/reporters" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/transform" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - exit "^0.1.2" - graceful-fs "^4.2.4" - jest-changed-files "^26.6.2" - jest-config "^26.6.3" - jest-haste-map "^26.6.2" - jest-message-util "^26.6.2" - jest-regex-util "^26.0.0" - jest-resolve "^26.6.2" - jest-resolve-dependencies "^26.6.3" - jest-runner "^26.6.3" - jest-runtime "^26.6.3" - jest-snapshot "^26.6.2" - jest-util "^26.6.2" - jest-validate "^26.6.2" - jest-watcher "^26.6.2" - micromatch "^4.0.2" - p-each-series "^2.1.0" - rimraf "^3.0.0" - slash "^3.0.0" - strip-ansi "^6.0.0" - -"@jest/environment@^26.6.0", "@jest/environment@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.6.2.tgz#ba364cc72e221e79cc8f0a99555bf5d7577cf92c" - integrity sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA== - dependencies: - "@jest/fake-timers" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - jest-mock "^26.6.2" - -"@jest/fake-timers@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-26.6.2.tgz#459c329bcf70cee4af4d7e3f3e67848123535aad" - integrity sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA== - dependencies: - "@jest/types" "^26.6.2" - "@sinonjs/fake-timers" "^6.0.1" - "@types/node" "*" - jest-message-util "^26.6.2" - jest-mock "^26.6.2" - jest-util "^26.6.2" - -"@jest/globals@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-26.6.2.tgz#5b613b78a1aa2655ae908eba638cc96a20df720a" - integrity sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA== - dependencies: - "@jest/environment" "^26.6.2" - "@jest/types" "^26.6.2" - expect "^26.6.2" - -"@jest/reporters@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-26.6.2.tgz#1f518b99637a5f18307bd3ecf9275f6882a667f6" - integrity sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw== - dependencies: - "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/transform" "^26.6.2" - "@jest/types" "^26.6.2" - chalk "^4.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.2" - graceful-fs "^4.2.4" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^4.0.3" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.0.2" - jest-haste-map "^26.6.2" - jest-resolve "^26.6.2" - jest-util "^26.6.2" - jest-worker "^26.6.2" - slash "^3.0.0" - source-map "^0.6.0" - string-length "^4.0.1" - terminal-link "^2.0.0" - v8-to-istanbul "^7.0.0" - optionalDependencies: - node-notifier "^8.0.0" - -"@jest/source-map@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-26.6.2.tgz#29af5e1e2e324cafccc936f218309f54ab69d535" - integrity sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA== - dependencies: - callsites "^3.0.0" - graceful-fs "^4.2.4" - source-map "^0.6.0" - -"@jest/test-result@^26.6.0", "@jest/test-result@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-26.6.2.tgz#55da58b62df134576cc95476efa5f7949e3f5f18" - integrity sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ== - dependencies: - "@jest/console" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" - -"@jest/test-sequencer@^26.6.3": - version "26.6.3" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz#98e8a45100863886d074205e8ffdc5a7eb582b17" - integrity sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw== - dependencies: - "@jest/test-result" "^26.6.2" - graceful-fs "^4.2.4" - jest-haste-map "^26.6.2" - jest-runner "^26.6.3" - jest-runtime "^26.6.3" - -"@jest/transform@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.6.2.tgz#5ac57c5fa1ad17b2aae83e73e45813894dcf2e4b" - integrity sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA== - dependencies: - "@babel/core" "^7.1.0" - "@jest/types" "^26.6.2" - babel-plugin-istanbul "^6.0.0" - chalk "^4.0.0" - convert-source-map "^1.4.0" - fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.2.4" - jest-haste-map "^26.6.2" - jest-regex-util "^26.0.0" - jest-util "^26.6.2" - micromatch "^4.0.2" - pirates "^4.0.1" - slash "^3.0.0" - source-map "^0.6.1" - write-file-atomic "^3.0.0" - -"@jest/types@^26.6.0", "@jest/types@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" - integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^15.0.0" - chalk "^4.0.0" - -"@lezer/common@^1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@lezer/common/-/common-1.0.1.tgz#d014fda6d582c24336fadf2715e76f02f73c8908" - integrity sha512-8TR5++Q/F//tpDsLd5zkrvEX5xxeemafEaek7mUp7Y+bI8cKQXdSqhzTOBaOogETcMOVr0pT3BBPXp13477ciw== - -"@lezer/highlight@^1.0.0": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@lezer/highlight/-/highlight-1.1.1.tgz#1f4f12f21320d7de102b46a5416eff49fdf3c695" - integrity sha512-duv9D23O9ghEDnnUDmxu+L8pJy4nYo4AbCOHIudUhscrLSazqeJeK1V50EU6ZufWF1zv0KJwu/frFRyZWXxHBQ== - dependencies: - "@lezer/common" "^1.0.0" - -"@lezer/lr@^1.0.0": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@lezer/lr/-/lr-1.2.3.tgz#f44ca844f15f6762fde4eab877d110567e34ffa1" - integrity sha512-qpB7rBzH8f6Mzjv2AVZRahcm+2Cf7nbIH++uXbvVOL1yIRvVWQ3HAM/saeBLCyz/togB7LGo76qdJYL1uKQlqA== - dependencies: - "@lezer/common" "^1.0.0" - -"@malept/cross-spawn-promise@^1.1.0": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz#504af200af6b98e198bce768bc1730c6936ae01d" - integrity sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ== - dependencies: - cross-spawn "^7.0.1" - -"@malept/flatpak-bundler@^0.4.0": - version "0.4.0" - resolved "https://registry.yarnpkg.com/@malept/flatpak-bundler/-/flatpak-bundler-0.4.0.tgz#e8a32c30a95d20c2b1bb635cc580981a06389858" - integrity sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q== - dependencies: - debug "^4.1.1" - fs-extra "^9.0.0" - lodash "^4.17.15" - tmp-promise "^3.0.2" - -"@mapbox/node-pre-gyp@^1.0.0": - version "1.0.9" - resolved "https://registry.yarnpkg.com/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.9.tgz#09a8781a3a036151cdebbe8719d6f8b25d4058bc" - integrity sha512-aDF3S3rK9Q2gey/WAttUlISduDItz5BU3306M9Eyv6/oS40aMprnopshtlKTykxRNIBEZuRMaZAnbrQ4QtKGyw== - dependencies: - detect-libc "^2.0.0" - https-proxy-agent "^5.0.0" - make-dir "^3.1.0" - node-fetch "^2.6.7" - nopt "^5.0.0" - npmlog "^5.0.1" - rimraf "^3.0.2" - semver "^7.3.5" - tar "^6.1.11" - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@npmcli/fs@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-1.0.0.tgz#589612cfad3a6ea0feafcb901d29c63fd52db09f" - integrity sha512-8ltnOpRR/oJbOp8vaGUnipOi3bqkcW+sLHFlyXIr08OGHmVJLB1Hn7QtGXbYcpVtH1gAYZTlmDXtE4YV0+AMMQ== - dependencies: - "@gar/promisify" "^1.0.1" - semver "^7.3.5" - -"@npmcli/move-file@^1.0.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674" - integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg== - dependencies: - mkdirp "^1.0.4" - rimraf "^3.0.2" - -"@onflow/config@^1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@onflow/config/-/config-1.0.3.tgz#6e27588568628ee508535b06cd3a2d788e5dcdeb" - integrity sha512-ryO0ZXXayz8IKdEdI51PAJgs5WYo7J0Kb+ccNaTS7nRuRq752/r6O8EfqEz3/R2+KsV7XdP3FVhR2tPUhxWhag== - dependencies: - "@babel/runtime" "^7.18.6" - "@onflow/util-actor" "^1.1.1" - -"@onflow/fcl@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@onflow/fcl/-/fcl-1.2.0.tgz#cce0ec8ab3efe4ca4c86d5e968b52690b1a40fc7" - integrity sha512-vgPsDuYhRmCVEQWRcfyY3KPxHAk+EGF4MLv08VUpN4vudDUY1J3AXM/NBk/ebeBis7CfgqC5gAarLsHX1omvIg== - dependencies: - "@babel/runtime" "^7.18.6" - "@onflow/config" "^1.0.3" - "@onflow/interaction" "0.0.11" - "@onflow/rlp" "^1.0.2" - "@onflow/sdk" "^1.1.1" - "@onflow/types" "^1.0.3" - "@onflow/util-actor" "^1.1.1" - "@onflow/util-address" "^1.0.2" - "@onflow/util-invariant" "^1.0.2" - "@onflow/util-logger" "^1.1.1" - "@onflow/util-template" "^1.0.3" - "@onflow/util-uid" "^1.0.2" - -"@onflow/interaction@0.0.11": - version "0.0.11" - resolved "https://registry.yarnpkg.com/@onflow/interaction/-/interaction-0.0.11.tgz#4db8f4304039e33d6fc3b14c38b392d724113374" - integrity sha512-Xuq1Mmx6Wyba/F/L+QLQs0yJeQDsIDwy5SKk5vrCuVgIj0yD8k506g5L8ODrbM1LWll8i0tQsoOi0F85vNl5sA== - -"@onflow/rlp@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@onflow/rlp/-/rlp-1.0.2.tgz#df4a5111fc2991a547fbc15bf5b27f27bb552d50" - integrity sha512-YjIMTQZ7ewYcXsKo6S0dKjUr9uoCFy8NlpH2NX9Xy+L76MQUfJNFJksepDG0HDo8/+9UDdh/cGIbuxW7rUp3QQ== - dependencies: - "@babel/runtime" "^7.18.6" - buffer "^6.0.3" - -"@onflow/sdk@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@onflow/sdk/-/sdk-1.1.1.tgz#ac7e18e723499b6c98b4c00f0b62bf6c69bb9d61" - integrity sha512-i+ZYja6jBq6HU8Hnpq/AoeMDQOazrxhgds0yU9KqxOKAA9tZ4DUv4J47eHSQbUEv09BbUeZAcIc/ZdqVqrMjJQ== - dependencies: - "@babel/runtime" "^7.18.6" - "@onflow/config" "^1.0.3" - "@onflow/rlp" "^1.0.2" - "@onflow/transport-http" "^1.4.0" - "@onflow/util-actor" "^1.1.1" - "@onflow/util-address" "^1.0.2" - "@onflow/util-invariant" "^1.0.2" - "@onflow/util-logger" "^1.1.1" - "@onflow/util-template" "^1.0.3" - deepmerge "^4.2.2" - sha3 "^2.1.4" - -"@onflow/transport-http@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@onflow/transport-http/-/transport-http-1.4.0.tgz#7b1ab53db480b6e5d692aeedbeb5319c71238de7" - integrity sha512-8rVpGoGovZVxxenYOtyUXUrpPYDJ9N5O9sRJay+gC3mcAyRyc9EHLlbh0QJsoC9Y71sMm5t5jqjR2kBfNal7Hw== - dependencies: - "@babel/runtime" "^7.18.6" - "@onflow/util-address" "^1.0.2" - "@onflow/util-invariant" "^1.0.2" - "@onflow/util-logger" "^1.1.1" - "@onflow/util-template" "^1.0.3" - node-fetch "^2.6.7" - -"@onflow/types@^1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@onflow/types/-/types-1.0.3.tgz#5e0bce7940b96228299f9999a2a4383fcd5db528" - integrity sha512-7za7NgzRvapB50icVmrL21rVHgPaMS/0K9IKXj0FVZRMo3CSI6MV2qLoGftRVX8oDfiH0Lj/1NWD/iSUW6Ed5w== - dependencies: - "@babel/runtime" "^7.18.6" - -"@onflow/util-actor@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@onflow/util-actor/-/util-actor-1.1.1.tgz#2e62edef2ea4a1dcf9ec457f44c80af495b98b1c" - integrity sha512-y74KwQ2T8BUXiP0f+OCifAD1CrBepzCWL1C0lKdSDly7so8RVttc98Hp3oUkDJxoA0KKyAyEjshxw7DSLxYXFw== - dependencies: - "@babel/runtime" "^7.18.6" - queue-microtask "1.1.2" - -"@onflow/util-address@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@onflow/util-address/-/util-address-1.0.2.tgz#ef9bdbd295b258b0034bb5b25e5a99d6d1c9d34e" - integrity sha512-2kjRZK+DxyEoujm4+1gO0lqGFLdaTJC1DuvBF7XqgocmFdayad/OdPFVgaEi06xymmi2kfdn/JFdvBwdZHkJGQ== - dependencies: - "@babel/runtime" "^7.18.6" - -"@onflow/util-invariant@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@onflow/util-invariant/-/util-invariant-1.0.2.tgz#9327a5574d28e782bf9c30b8e4abdf482df6bc5c" - integrity sha512-Z5YPAJYUxEoSJ9hGB3jyr0C8gG1VbwX88naF0onBjiMZ89QYbbRG8nup7WWHN2fo/tWo4ElauOpCwU70see0lg== - dependencies: - "@babel/runtime" "^7.18.6" - -"@onflow/util-logger@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@onflow/util-logger/-/util-logger-1.1.1.tgz#d0ccee4121378c098585be12a005b75bc6546462" - integrity sha512-bVGzjxcLKl4cpb/kFiHtIrdkKDCpZkj1DFMXjhQzpW0MqTmmp1rKf/Fq9B0Y1dbZKh6IxJeGCd5dhNPLmSfb9g== - dependencies: - "@babel/runtime" "^7.18.6" - "@onflow/config" "^1.0.3" - -"@onflow/util-template@^1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@onflow/util-template/-/util-template-1.0.3.tgz#d1be934dbd037b7217848cc3fe6b797b5603cae5" - integrity sha512-ZBckseo1IwjKO4/F7PvEH4sKRFVAmVAYq0f10Zg79xQ29YF7oU58uXCH4MAjJ8eaZsS5/jeiEif0291bVHH5Rg== - dependencies: - "@babel/runtime" "^7.18.6" - -"@onflow/util-uid@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@onflow/util-uid/-/util-uid-1.0.2.tgz#0f157730e195ac32441bbef6d23b2dc9b394d46f" - integrity sha512-1BSM0l53QOFmEZ876AX+KdnJmXPRhGlS7vO5WiJULE8GUPyoW6WY2eyk0ZpHjxI0BnKpHOruyZeMilw1jZQSdA== - dependencies: - "@babel/runtime" "^7.18.6" - -"@pmmmwh/react-refresh-webpack-plugin@0.4.3": - version "0.4.3" - resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.4.3.tgz#1eec460596d200c0236bf195b078a5d1df89b766" - integrity sha512-br5Qwvh8D2OQqSXpd1g/xqXKnK0r+Jz6qVKBbWmpUcrbGOxUrf39V5oZ1876084CGn18uMdR5uvPqBv9UqtBjQ== - dependencies: - ansi-html "^0.0.7" - error-stack-parser "^2.0.6" - html-entities "^1.2.1" - native-url "^0.2.6" - schema-utils "^2.6.5" - source-map "^0.7.3" - -"@popperjs/core@^2.4.0": - version "2.11.6" - resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.6.tgz#cee20bd55e68a1720bdab363ecf0c821ded4cd45" - integrity sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw== - -"@rollup/plugin-node-resolve@^7.1.1": - version "7.1.3" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz#80de384edfbd7bfc9101164910f86078151a3eca" - integrity sha512-RxtSL3XmdTAE2byxekYLnx+98kEUOrPHF/KRVjLH+DEIHy6kjIw7YINQzn+NXiH/NTrQLAwYs0GWB+csWygA9Q== - dependencies: - "@rollup/pluginutils" "^3.0.8" - "@types/resolve" "0.0.8" - builtin-modules "^3.1.0" - is-module "^1.0.0" - resolve "^1.14.2" - -"@rollup/plugin-replace@^2.3.1": - version "2.4.2" - resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz#a2d539314fbc77c244858faa523012825068510a" - integrity sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg== - dependencies: - "@rollup/pluginutils" "^3.1.0" - magic-string "^0.25.7" - -"@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" - integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== - dependencies: - "@types/estree" "0.0.39" - estree-walker "^1.0.1" - picomatch "^2.2.2" - -"@sentry/browser@7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.12.1.tgz#2be6fa5c2529a2a75abac4d00aca786362302a1a" - integrity sha512-pgyL65CrGFLe8sKcEG8KXAuVTE8zkAsyTlv/AuME06cSdxzO/memPK/r3BI6EM7WupIdga+V5tQUldeT1kgHNA== - dependencies: - "@sentry/core" "7.12.1" - "@sentry/types" "7.12.1" - "@sentry/utils" "7.12.1" - tslib "^1.9.3" - -"@sentry/core@7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.12.1.tgz#a22f1c530ed528a699ed204c36eb5fc8d308103d" - integrity sha512-DFHbzHFjukhlkRZ5xzfebx0IBzblW43kmfnalBBq7xEMscUvnhsYnlvL9Y20tuPZ/PrTcq4JAHbFluAvw6M0QQ== - dependencies: - "@sentry/hub" "7.12.1" - "@sentry/types" "7.12.1" - "@sentry/utils" "7.12.1" - tslib "^1.9.3" - -"@sentry/electron@^4.0.2": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@sentry/electron/-/electron-4.0.2.tgz#eb86bec1017030f593499cb14211a3baef2bae93" - integrity sha512-1xeOSyPzf+hZs8E8g4fIHpnaf944f9L0t7TANr22zQ2rJ87kAhPlnq11EzEJxanfAKMNiAajtu30cmx3J7YFJQ== - dependencies: - "@sentry/browser" "7.12.1" - "@sentry/core" "7.12.1" - "@sentry/hub" "7.12.1" - "@sentry/node" "7.12.1" - "@sentry/types" "7.12.1" - "@sentry/utils" "7.12.1" - deepmerge "^4.2.2" - tslib "^2.3.1" - -"@sentry/hub@7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-7.12.1.tgz#dffad40cd2b8f44df2d5f20a89df87879cbbf1c3" - integrity sha512-KLVnVqXf+CRmXNy9/T8K2/js7QvOQ94xtgP5KnWJbu2rl+JhxnIGiBRF51lPXFIatt7zWwB9qNdMS8lVsvLMGQ== - dependencies: - "@sentry/types" "7.12.1" - "@sentry/utils" "7.12.1" - tslib "^1.9.3" - -"@sentry/node@7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@sentry/node/-/node-7.12.1.tgz#ced12d0db3ca5715d699858acb1e2f2ea1d7c59b" - integrity sha512-ZVT2+lLd3gbhOuCOczlFLHH2KnD4EXrq6jRp5Sb2vsSZGVHnVsbD5j7i54zbSBqcydlFqzVMqWSysGTKoYiimw== - dependencies: - "@sentry/core" "7.12.1" - "@sentry/hub" "7.12.1" - "@sentry/types" "7.12.1" - "@sentry/utils" "7.12.1" - cookie "^0.4.1" - https-proxy-agent "^5.0.0" - lru_map "^0.3.3" - tslib "^1.9.3" - -"@sentry/types@7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.12.1.tgz#eff76d938f9effc62a2ec76cd5c3f04de37f5c15" - integrity sha512-VGZs39SZgMcCGv7H0VyFy1LEFGsnFZH590JUopmz6nG63EpeYQ2xzhIoPNAiLKbyUvBEwukn+faCg3u3MGqhgQ== - -"@sentry/utils@7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.12.1.tgz#fcf80fdc332d0bd288e21b13efc7a2f0d604f75a" - integrity sha512-Dh8B13pC0u8uLM/zf+oZngyg808c6BDEO94F7H+h3IciCVVd92A0cOQwLGAEdf8srnJgpZJNAlSC8lFDhbFHzQ== - dependencies: - "@sentry/types" "7.12.1" - tslib "^1.9.3" - -"@sideway/address@^4.1.0": - version "4.1.2" - resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.2.tgz#811b84333a335739d3969cfc434736268170cad1" - integrity sha512-idTz8ibqWFrPU8kMirL0CoPH/A29XOzzAzpyN3zQ4kAWnzmNfFmRaoMNN6VI8ske5M73HZyhIaW4OuSFIdM4oA== - dependencies: - "@hapi/hoek" "^9.0.0" - -"@sideway/address@^4.1.3": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.4.tgz#03dccebc6ea47fdc226f7d3d1ad512955d4783f0" - integrity sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw== - dependencies: - "@hapi/hoek" "^9.0.0" - -"@sideway/formula@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.0.tgz#fe158aee32e6bd5de85044be615bc08478a0a13c" - integrity sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg== - -"@sideway/pinpoint@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" - integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== - -"@sindresorhus/is@^0.14.0": - version "0.14.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" - integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== - -"@sinonjs/commons@^1.7.0": - version "1.8.3" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" - integrity sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ== - dependencies: - type-detect "4.0.8" - -"@sinonjs/fake-timers@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz#293674fccb3262ac782c7aadfdeca86b10c75c40" - integrity sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA== - dependencies: - "@sinonjs/commons" "^1.7.0" - -"@surma/rollup-plugin-off-main-thread@^1.1.1": - version "1.4.2" - resolved "https://registry.yarnpkg.com/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-1.4.2.tgz#e6786b6af5799f82f7ab3a82e53f6182d2b91a58" - integrity sha512-yBMPqmd1yEJo/280PAMkychuaALyQ9Lkb5q1ck3mjJrFuEobIfhnQ4J3mbvBoISmR3SWMWV+cGB/I0lCQee79A== - dependencies: - ejs "^2.6.1" - magic-string "^0.25.0" - -"@svgr/babel-plugin-add-jsx-attribute@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz#81ef61947bb268eb9d50523446f9c638fb355906" - integrity sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg== - -"@svgr/babel-plugin-remove-jsx-attribute@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz#6b2c770c95c874654fd5e1d5ef475b78a0a962ef" - integrity sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg== - -"@svgr/babel-plugin-remove-jsx-empty-expression@^5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz#25621a8915ed7ad70da6cea3d0a6dbc2ea933efd" - integrity sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA== - -"@svgr/babel-plugin-replace-jsx-attribute-value@^5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz#0b221fc57f9fcd10e91fe219e2cd0dd03145a897" - integrity sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ== - -"@svgr/babel-plugin-svg-dynamic-title@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz#139b546dd0c3186b6e5db4fefc26cb0baea729d7" - integrity sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg== - -"@svgr/babel-plugin-svg-em-dimensions@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz#6543f69526632a133ce5cabab965deeaea2234a0" - integrity sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw== - -"@svgr/babel-plugin-transform-react-native-svg@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz#00bf9a7a73f1cad3948cdab1f8dfb774750f8c80" - integrity sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q== - -"@svgr/babel-plugin-transform-svg-component@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz#583a5e2a193e214da2f3afeb0b9e8d3250126b4a" - integrity sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ== - -"@svgr/babel-preset@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-5.5.0.tgz#8af54f3e0a8add7b1e2b0fcd5a882c55393df327" - integrity sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig== - dependencies: - "@svgr/babel-plugin-add-jsx-attribute" "^5.4.0" - "@svgr/babel-plugin-remove-jsx-attribute" "^5.4.0" - "@svgr/babel-plugin-remove-jsx-empty-expression" "^5.0.1" - "@svgr/babel-plugin-replace-jsx-attribute-value" "^5.0.1" - "@svgr/babel-plugin-svg-dynamic-title" "^5.4.0" - "@svgr/babel-plugin-svg-em-dimensions" "^5.4.0" - "@svgr/babel-plugin-transform-react-native-svg" "^5.4.0" - "@svgr/babel-plugin-transform-svg-component" "^5.5.0" - -"@svgr/core@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/core/-/core-5.5.0.tgz#82e826b8715d71083120fe8f2492ec7d7874a579" - integrity sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ== - dependencies: - "@svgr/plugin-jsx" "^5.5.0" - camelcase "^6.2.0" - cosmiconfig "^7.0.0" - -"@svgr/hast-util-to-babel-ast@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz#5ee52a9c2533f73e63f8f22b779f93cd432a5461" - integrity sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ== - dependencies: - "@babel/types" "^7.12.6" - -"@svgr/plugin-jsx@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz#1aa8cd798a1db7173ac043466d7b52236b369000" - integrity sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA== - dependencies: - "@babel/core" "^7.12.3" - "@svgr/babel-preset" "^5.5.0" - "@svgr/hast-util-to-babel-ast" "^5.5.0" - svg-parser "^2.0.2" - -"@svgr/plugin-svgo@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz#02da55d85320549324e201c7b2e53bf431fcc246" - integrity sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ== - dependencies: - cosmiconfig "^7.0.0" - deepmerge "^4.2.2" - svgo "^1.2.2" - -"@svgr/webpack@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-5.5.0.tgz#aae858ee579f5fa8ce6c3166ef56c6a1b381b640" - integrity sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g== - dependencies: - "@babel/core" "^7.12.3" - "@babel/plugin-transform-react-constant-elements" "^7.12.1" - "@babel/preset-env" "^7.12.1" - "@babel/preset-react" "^7.12.5" - "@svgr/core" "^5.5.0" - "@svgr/plugin-jsx" "^5.5.0" - "@svgr/plugin-svgo" "^5.5.0" - loader-utils "^2.0.0" - -"@szmarczak/http-timer@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" - integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== - dependencies: - defer-to-connect "^1.0.1" - -"@tanstack/react-table@^8.5.11": - version "8.5.11" - resolved "https://registry.yarnpkg.com/@tanstack/react-table/-/react-table-8.5.11.tgz#544f551f15412087edfc2df01bed9697aab4651f" - integrity sha512-bIegBJ3VPUX3Z7rMnFEnTRCRgPccTsciilQA1ib/pA6M7Qq1boTNPjNjSbEHmBKytaxPrPfcUfzkZLogYtvu3g== - dependencies: - "@tanstack/table-core" "8.5.11" - -"@tanstack/table-core@8.5.11": - version "8.5.11" - resolved "https://registry.yarnpkg.com/@tanstack/table-core/-/table-core-8.5.11.tgz#a23178a097df4b0b64bdfa6f79e6d8933e97c7f7" - integrity sha512-ZN61ockLaIAiiPbZfMKT2S03nbWx28OHg/nAiDnNfmN4QmAMcdwVajPn2QQwnNVGAr4jS4nbhbYzCcjq8livXQ== - -"@testing-library/dom@^7.28.1": - version "7.31.2" - resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-7.31.2.tgz#df361db38f5212b88555068ab8119f5d841a8c4a" - integrity sha512-3UqjCpey6HiTZT92vODYLPxTBWlM8ZOOjr3LX5F37/VRipW2M1kX6I/Cm4VXzteZqfGfagg8yXywpcOgQBlNsQ== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/runtime" "^7.12.5" - "@types/aria-query" "^4.2.0" - aria-query "^4.2.2" - chalk "^4.1.0" - dom-accessibility-api "^0.5.6" - lz-string "^1.4.4" - pretty-format "^26.6.2" - -"@testing-library/jest-dom@^5.14.1": - version "5.14.1" - resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.14.1.tgz#8501e16f1e55a55d675fe73eecee32cdaddb9766" - integrity sha512-dfB7HVIgTNCxH22M1+KU6viG5of2ldoA5ly8Ar8xkezKHKXjRvznCdbMbqjYGgO2xjRbwnR+rR8MLUIqF3kKbQ== - dependencies: - "@babel/runtime" "^7.9.2" - "@types/testing-library__jest-dom" "^5.9.1" - aria-query "^4.2.2" - chalk "^3.0.0" - css "^3.0.0" - css.escape "^1.5.1" - dom-accessibility-api "^0.5.6" - lodash "^4.17.15" - redent "^3.0.0" - -"@testing-library/react@^11.2.7": - version "11.2.7" - resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-11.2.7.tgz#b29e2e95c6765c815786c0bc1d5aed9cb2bf7818" - integrity sha512-tzRNp7pzd5QmbtXNG/mhdcl7Awfu/Iz1RaVHY75zTdOkmHCuzMhRL83gWHSgOAcjS3CCbyfwUHMZgRJb4kAfpA== - dependencies: - "@babel/runtime" "^7.12.5" - "@testing-library/dom" "^7.28.1" - -"@testing-library/user-event@^12.8.3": - version "12.8.3" - resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-12.8.3.tgz#1aa3ed4b9f79340a1e1836bc7f57c501e838704a" - integrity sha512-IR0iWbFkgd56Bu5ZI/ej8yQwrkCv8Qydx6RzwbKz9faXazR/+5tvYKsZQgyXJiwgpcva127YO6JcWy7YlCfofQ== - dependencies: - "@babel/runtime" "^7.12.5" - -"@tootallnate/once@1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" - integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== - -"@tootallnate/once@2": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" - integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== - -"@types/aria-query@^4.2.0": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-4.2.2.tgz#ed4e0ad92306a704f9fb132a0cfcf77486dbe2bc" - integrity sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig== - -"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7": - version "7.1.16" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.16.tgz#bc12c74b7d65e82d29876b5d0baf5c625ac58702" - integrity sha512-EAEHtisTMM+KaKwfWdC3oyllIqswlznXCIVCt7/oRNrh+DhgT4UEBNC/jlADNjvw7UnfbcdkGQcPVZ1xYiLcrQ== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__generator@*": - version "7.6.3" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.3.tgz#f456b4b2ce79137f768aa130d2423d2f0ccfaba5" - integrity sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA== - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - version "7.4.1" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" - integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.14.2.tgz#ffcd470bbb3f8bf30481678fb5502278ca833a43" - integrity sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA== - dependencies: - "@babel/types" "^7.3.0" - -"@types/dateformat@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/dateformat/-/dateformat-3.0.1.tgz#98d747a2e5e9a56070c6bf14e27bff56204e34cc" - integrity sha512-KlPPdikagvL6ELjWsljbyDIPzNCeliYkqRpI+zea99vBBbCIA5JNshZAwQKTON139c87y9qvTFVgkFd14rtS4g== - -"@types/debug@^4.1.6": - version "4.1.7" - resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.7.tgz#7cc0ea761509124709b8b2d1090d8f6c17aadb82" - integrity sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg== - dependencies: - "@types/ms" "*" - -"@types/eslint@^7.2.6": - version "7.28.1" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.28.1.tgz#50b07747f1f84c2ba8cd394cf0fe0ba07afce320" - integrity sha512-XhZKznR3i/W5dXqUhgU9fFdJekufbeBd5DALmkuXoeFcjbQcPk+2cL+WLHf6Q81HWAnM2vrslIHpGVyCAviRwg== - dependencies: - "@types/estree" "*" - "@types/json-schema" "*" - -"@types/estree@*": - version "0.0.50" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.50.tgz#1e0caa9364d3fccd2931c3ed96fdbeaa5d4cca83" - integrity sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw== - -"@types/estree@0.0.39": - version "0.0.39" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" - integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== - -"@types/fs-extra@^9.0.11": - version "9.0.13" - resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-9.0.13.tgz#7594fbae04fe7f1918ce8b3d213f74ff44ac1f45" - integrity sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA== - dependencies: - "@types/node" "*" - -"@types/glob@^7.1.1": - version "7.1.4" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.4.tgz#ea59e21d2ee5c517914cb4bc8e4153b99e566672" - integrity sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA== - dependencies: - "@types/minimatch" "*" - "@types/node" "*" - -"@types/graceful-fs@^4.1.2": - version "4.1.5" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" - integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== - dependencies: - "@types/node" "*" - -"@types/history@*": - version "4.7.9" - resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.9.tgz#1cfb6d60ef3822c589f18e70f8b12f9a28ce8724" - integrity sha512-MUc6zSmU3tEVnkQ78q0peeEjKWPUADMlC/t++2bI8WnAG2tvYRPIgHG8lWkXwqc8MsUF6Z2MOf+Mh5sazOmhiQ== - -"@types/html-minifier-terser@^5.0.0": - version "5.1.2" - resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-5.1.2.tgz#693b316ad323ea97eed6b38ed1a3cc02b1672b57" - integrity sha512-h4lTMgMJctJybDp8CQrxTUiiYmedihHWkjnF/8Pxseu2S6Nlfcy8kwboQ8yejh456rP2yWoEVm1sS/FVsfM48w== - -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" - integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw== - -"@types/istanbul-lib-report@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" - integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== - dependencies: - "@types/istanbul-lib-coverage" "*" - -"@types/istanbul-reports@^3.0.0": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" - integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== - dependencies: - "@types/istanbul-lib-report" "*" - -"@types/jest@*", "@types/jest@^26.0.24": - version "26.0.24" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.24.tgz#943d11976b16739185913a1936e0de0c4a7d595a" - integrity sha512-E/X5Vib8BWqZNRlDxj9vYXhsDwPYbPINqKF9BsnSoon4RQ0D9moEuLD8txgyypFLH7J4+Lho9Nr/c8H0Fi+17w== - dependencies: - jest-diff "^26.0.0" - pretty-format "^26.0.0" - -"@types/joi@^17.2.3": - version "17.2.3" - resolved "https://registry.yarnpkg.com/@types/joi/-/joi-17.2.3.tgz#b7768ed9d84f1ebd393328b9f97c1cf3d2b94798" - integrity sha512-dGjs/lhrWOa+eO0HwgxCSnDm5eMGCsXuvLglMghJq32F6q5LyyNuXb41DHzrg501CKNOSSAHmfB7FDGeUnDmzw== - dependencies: - joi "*" - -"@types/json-schema@*", "@types/json-schema@^7.0.3", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.7", "@types/json-schema@^7.0.8": - version "7.0.9" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" - integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== - -"@types/json5@^0.0.29": - version "0.0.29" - resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" - integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== - -"@types/lodash@^4.14.175": - version "4.14.184" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.184.tgz#23f96cd2a21a28e106dc24d825d4aa966de7a9fe" - integrity sha512-RoZphVtHbxPZizt4IcILciSWiC6dcn+eZ8oX9IWEYfDMcocdd42f7NPI6fQj+6zI8y4E0L7gu2pcZKLGTRaV9Q== - -"@types/minimatch@*": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" - integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== - -"@types/mixpanel-browser@^2.38.0": - version "2.38.0" - resolved "https://registry.yarnpkg.com/@types/mixpanel-browser/-/mixpanel-browser-2.38.0.tgz#b3e28e1ba06c10a9f88510b88f1ac9d1b2adfc42" - integrity sha512-TR8rvsILnqXA7oiiGOxuMGXwvDeCoQDonXJB5UR+TYvEAFpiK8ReFj5LhZT+Xhm3NpI9aPoju30jB2ssorSUww== - -"@types/ms@*": - version "0.7.31" - resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.31.tgz#31b7ca6407128a3d2bbc27fe2d21b345397f6197" - integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA== - -"@types/node@*", "@types/node@^12.20.27": - version "12.20.28" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.28.tgz#4b20048c6052b5f51a8d5e0d2acbf63d5a17e1e2" - integrity sha512-cBw8gzxUPYX+/5lugXIPksioBSbE42k0fZ39p+4yRzfYjN6++eq9kAPdlY9qm+MXyfbk9EmvCYAYRn380sF46w== - -"@types/node@^16.11.26": - version "16.11.56" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.56.tgz#dcbb617669481e158e0f1c6204d1c768cd675901" - integrity sha512-aFcUkv7EddxxOa/9f74DINReQ/celqH8DiB3fRYgVDM2Xm5QJL8sl80QKuAnGvwAsMn+H3IFA6WCrQh1CY7m1A== - -"@types/normalize-package-data@^2.4.0": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" - integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== - -"@types/parse-json@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" - integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== - -"@types/plist@^3.0.1": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/plist/-/plist-3.0.2.tgz#61b3727bba0f5c462fe333542534a0c3e19ccb01" - integrity sha512-ULqvZNGMv0zRFvqn8/4LSPtnmN4MfhlPNtJCTpKuIIxGVGZ2rYWzFXrvEBoh9CVyqSE7D6YFRJ1hydLHI6kbWw== - dependencies: - "@types/node" "*" - xmlbuilder ">=11.0.1" - -"@types/prettier@^2.0.0": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.4.1.tgz#e1303048d5389563e130f5bdd89d37a99acb75eb" - integrity sha512-Fo79ojj3vdEZOHg3wR9ksAMRz4P3S5fDB5e/YWZiFnyFQI1WY2Vftu9XoXVVtJfxB7Bpce/QTqWSSntkz2Znrw== - -"@types/prop-types@*": - version "15.7.4" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11" - integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ== - -"@types/q@^1.5.1": - version "1.5.5" - resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.5.tgz#75a2a8e7d8ab4b230414505d92335d1dcb53a6df" - integrity sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ== - -"@types/react-dom@^17.0.9": - version "17.0.9" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.9.tgz#441a981da9d7be117042e1a6fd3dac4b30f55add" - integrity sha512-wIvGxLfgpVDSAMH5utdL9Ngm5Owu0VsGmldro3ORLXV8CShrL8awVj06NuEXFQ5xyaYfdca7Sgbk/50Ri1GdPg== - dependencies: - "@types/react" "*" - -"@types/react-router-dom@^5.3.0": - version "5.3.1" - resolved "https://registry.yarnpkg.com/@types/react-router-dom/-/react-router-dom-5.3.1.tgz#76700ccce6529413ec723024b71f01fc77a4a980" - integrity sha512-UvyRy73318QI83haXlaMwmklHHzV9hjl3u71MmM6wYNu0hOVk9NLTa0vGukf8zXUqnwz4O06ig876YSPpeK28A== - dependencies: - "@types/history" "*" - "@types/react" "*" - "@types/react-router" "*" - -"@types/react-router@*": - version "5.1.17" - resolved "https://registry.yarnpkg.com/@types/react-router/-/react-router-5.1.17.tgz#087091006213b11042f39570e5cd414863693968" - integrity sha512-RNSXOyb3VyRs/EOGmjBhhGKTbnN6fHWvy5FNLzWfOWOGjgVUKqJZXfpKzLmgoU8h6Hj8mpALj/mbXQASOb92wQ== - dependencies: - "@types/history" "*" - "@types/react" "*" - -"@types/react-timeago@^4.1.3": - version "4.1.3" - resolved "https://registry.yarnpkg.com/@types/react-timeago/-/react-timeago-4.1.3.tgz#957baaa9f8ea98457ee63b6a57b57a616066ba35" - integrity sha512-XaaMBzuXLw7lxPPDs/fenlohcf3NDqM5qP4oOL/Meu+Hb1QChW4Igw/SruS1llEqch18RQB3wDTIwvqq4nivvw== - dependencies: - "@types/react" "*" - -"@types/react@*", "@types/react@^17.0.24": - version "17.0.27" - resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.27.tgz#6498ed9b3ad117e818deb5525fa1946c09f2e0e6" - integrity sha512-zgiJwtsggVGtr53MndV7jfiUESTqrbxOcBvwfe6KS/9bzaVPCTDieTWnFNecVNx6EAaapg5xsLLWFfHHR437AA== - dependencies: - "@types/prop-types" "*" - "@types/scheduler" "*" - csstype "^3.0.2" - -"@types/resolve@0.0.8": - version "0.0.8" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" - integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== - dependencies: - "@types/node" "*" - -"@types/scheduler@*": - version "0.16.2" - resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" - integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== - -"@types/semver@^7.3.6": - version "7.3.12" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.12.tgz#920447fdd78d76b19de0438b7f60df3c4a80bf1c" - integrity sha512-WwA1MW0++RfXmCr12xeYOOC5baSC9mSb0ZqCquFzKhcoF4TvHu5MKOuXsncgZcpVFhB1pXd5hZmM0ryAoCp12A== - -"@types/source-list-map@*": - version "0.1.2" - resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" - integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== - -"@types/stack-utils@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" - integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== - -"@types/tapable@^1", "@types/tapable@^1.0.5": - version "1.0.8" - resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.8.tgz#b94a4391c85666c7b73299fd3ad79d4faa435310" - integrity sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ== - -"@types/testing-library__jest-dom@^5.9.1": - version "5.14.1" - resolved "https://registry.yarnpkg.com/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.1.tgz#014162a5cee6571819d48e999980694e2f657c3c" - integrity sha512-Gk9vaXfbzc5zCXI9eYE9BI5BNHEp4D3FWjgqBE/ePGYElLAP+KvxBcsdkwfIVvezs605oiyd/VrpiHe3Oeg+Aw== - dependencies: - "@types/jest" "*" - -"@types/uglify-js@*": - version "3.13.1" - resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.13.1.tgz#5e889e9e81e94245c75b6450600e1c5ea2878aea" - integrity sha512-O3MmRAk6ZuAKa9CHgg0Pr0+lUOqoMLpc9AS4R8ano2auvsg7IE8syF3Xh/NPr26TWklxYcqoEEFdzLLs1fV9PQ== - dependencies: - source-map "^0.6.1" - -"@types/verror@^1.10.3": - version "1.10.6" - resolved "https://registry.yarnpkg.com/@types/verror/-/verror-1.10.6.tgz#3e600c62d210c5826460858f84bcbb65805460bb" - integrity sha512-NNm+gdePAX1VGvPcGZCDKQZKYSiAWigKhKaz5KF94hG6f2s8de9Ow5+7AbXoeKxL8gavZfk4UquSAygOF2duEQ== - -"@types/webpack-sources@*": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-3.2.0.tgz#16d759ba096c289034b26553d2df1bf45248d38b" - integrity sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg== - dependencies: - "@types/node" "*" - "@types/source-list-map" "*" - source-map "^0.7.3" - -"@types/webpack@^4.41.8": - version "4.41.31" - resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.31.tgz#c35f252a3559ddf9c85c0d8b0b42019025e581aa" - integrity sha512-/i0J7sepXFIp1ZT7FjUGi1eXMCg8HCCzLJEQkKsOtbJFontsJLolBcDC+3qxn5pPwiCt1G0ZdRmYRzNBtvpuGQ== - dependencies: - "@types/node" "*" - "@types/tapable" "^1" - "@types/uglify-js" "*" - "@types/webpack-sources" "*" - anymatch "^3.0.0" - source-map "^0.6.0" - -"@types/yargs-parser@*": - version "20.2.1" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.1.tgz#3b9ce2489919d9e4fea439b76916abc34b2df129" - integrity sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw== - -"@types/yargs@^15.0.0": - version "15.0.14" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.14.tgz#26d821ddb89e70492160b66d10a0eb6df8f6fb06" - integrity sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ== - dependencies: - "@types/yargs-parser" "*" - -"@types/yargs@^17.0.1": - version "17.0.12" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.12.tgz#0745ff3e4872b4ace98616d4b7e37ccbd75f9526" - integrity sha512-Nz4MPhecOFArtm81gFQvQqdV7XYCrWKx5uUt6GNHredFHn1i2mtWqXTON7EPXMtNi1qjtjEM/VCHDhcHsAMLXQ== - dependencies: - "@types/yargs-parser" "*" - -"@types/yauzl@^2.9.1": - version "2.10.0" - resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.0.tgz#b3248295276cf8c6f153ebe6a9aba0c988cb2599" - integrity sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw== - dependencies: - "@types/node" "*" - -"@typescript-eslint/eslint-plugin@^4.31.2", "@typescript-eslint/eslint-plugin@^4.5.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz#c24dc7c8069c7706bc40d99f6fa87edcb2005276" - integrity sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg== - dependencies: - "@typescript-eslint/experimental-utils" "4.33.0" - "@typescript-eslint/scope-manager" "4.33.0" - debug "^4.3.1" - functional-red-black-tree "^1.0.1" - ignore "^5.1.8" - regexpp "^3.1.0" - semver "^7.3.5" - tsutils "^3.21.0" - -"@typescript-eslint/experimental-utils@4.33.0", "@typescript-eslint/experimental-utils@^4.0.1": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz#6f2a786a4209fa2222989e9380b5331b2810f7fd" - integrity sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q== - dependencies: - "@types/json-schema" "^7.0.7" - "@typescript-eslint/scope-manager" "4.33.0" - "@typescript-eslint/types" "4.33.0" - "@typescript-eslint/typescript-estree" "4.33.0" - eslint-scope "^5.1.1" - eslint-utils "^3.0.0" - -"@typescript-eslint/experimental-utils@^3.10.1": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-3.10.1.tgz#e179ffc81a80ebcae2ea04e0332f8b251345a686" - integrity sha512-DewqIgscDzmAfd5nOGe4zm6Bl7PKtMG2Ad0KG8CUZAHlXfAKTF9Ol5PXhiMh39yRL2ChRH1cuuUGOcVyyrhQIw== - dependencies: - "@types/json-schema" "^7.0.3" - "@typescript-eslint/types" "3.10.1" - "@typescript-eslint/typescript-estree" "3.10.1" - eslint-scope "^5.0.0" - eslint-utils "^2.0.0" - -"@typescript-eslint/parser@^4.31.2", "@typescript-eslint/parser@^4.5.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.33.0.tgz#dfe797570d9694e560528d18eecad86c8c744899" - integrity sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA== - dependencies: - "@typescript-eslint/scope-manager" "4.33.0" - "@typescript-eslint/types" "4.33.0" - "@typescript-eslint/typescript-estree" "4.33.0" - debug "^4.3.1" - -"@typescript-eslint/scope-manager@4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz#d38e49280d983e8772e29121cf8c6e9221f280a3" - integrity sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ== - dependencies: - "@typescript-eslint/types" "4.33.0" - "@typescript-eslint/visitor-keys" "4.33.0" - -"@typescript-eslint/types@3.10.1": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-3.10.1.tgz#1d7463fa7c32d8a23ab508a803ca2fe26e758727" - integrity sha512-+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ== - -"@typescript-eslint/types@4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.33.0.tgz#a1e59036a3b53ae8430ceebf2a919dc7f9af6d72" - integrity sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ== - -"@typescript-eslint/typescript-estree@3.10.1": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-3.10.1.tgz#fd0061cc38add4fad45136d654408569f365b853" - integrity sha512-QbcXOuq6WYvnB3XPsZpIwztBoquEYLXh2MtwVU+kO8jgYCiv4G5xrSP/1wg4tkvrEE+esZVquIPX/dxPlePk1w== - dependencies: - "@typescript-eslint/types" "3.10.1" - "@typescript-eslint/visitor-keys" "3.10.1" - debug "^4.1.1" - glob "^7.1.6" - is-glob "^4.0.1" - lodash "^4.17.15" - semver "^7.3.2" - tsutils "^3.17.1" - -"@typescript-eslint/typescript-estree@4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz#0dfb51c2908f68c5c08d82aefeaf166a17c24609" - integrity sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA== - dependencies: - "@typescript-eslint/types" "4.33.0" - "@typescript-eslint/visitor-keys" "4.33.0" - debug "^4.3.1" - globby "^11.0.3" - is-glob "^4.0.1" - semver "^7.3.5" - tsutils "^3.21.0" - -"@typescript-eslint/visitor-keys@3.10.1": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-3.10.1.tgz#cd4274773e3eb63b2e870ac602274487ecd1e931" - integrity sha512-9JgC82AaQeglebjZMgYR5wgmfUdUc+EitGUUMW8u2nDckaeimzW+VsoLV6FoimPv2id3VQzfjwBxEMVz08ameQ== - dependencies: - eslint-visitor-keys "^1.1.0" - -"@typescript-eslint/visitor-keys@4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz#2a22f77a41604289b7a186586e9ec48ca92ef1dd" - integrity sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg== - dependencies: - "@typescript-eslint/types" "4.33.0" - eslint-visitor-keys "^2.0.0" - -"@uiw/codemirror-extensions-basic-setup@4.12.4", "@uiw/codemirror-extensions-basic-setup@^4.12.4": - version "4.12.4" - resolved "https://registry.yarnpkg.com/@uiw/codemirror-extensions-basic-setup/-/codemirror-extensions-basic-setup-4.12.4.tgz#aec0ad943b0a3ec7e3959a62fea68d619255878e" - integrity sha512-owSCcRBtS2wYjxgBFkuIjfjWJHsR8AxgsQtqPpHB/6U0zCLuzKS/OM5ZRS2T3rdOizg0hCPztVvmshWeKjF+qw== - dependencies: - "@codemirror/autocomplete" "^6.0.0" - "@codemirror/commands" "^6.0.0" - "@codemirror/language" "^6.0.0" - "@codemirror/lint" "^6.0.0" - "@codemirror/search" "^6.0.0" - "@codemirror/state" "^6.0.0" - "@codemirror/view" "^6.0.0" - -"@uiw/codemirror-theme-github@^4.12.4": - version "4.12.4" - resolved "https://registry.yarnpkg.com/@uiw/codemirror-theme-github/-/codemirror-theme-github-4.12.4.tgz#db6eaecdf23bf6230ff64c44befddf0d6fdd22fc" - integrity sha512-ni5/u6aqv+4Nq5i7BaQiDFmZGu/+BhoptjxvNBlqJjVuYeUfv27zFTdcaFf2GKVL7mPMX4Q4MltVGKDYoWe14Q== - dependencies: - "@uiw/codemirror-themes" "4.12.4" - -"@uiw/codemirror-themes@4.12.4": - version "4.12.4" - resolved "https://registry.yarnpkg.com/@uiw/codemirror-themes/-/codemirror-themes-4.12.4.tgz#d8d06a26045104bb6a666f2eb5646d6830f1663e" - integrity sha512-ekySMFlXaJ4u0TCz/caHG8HqJPT0+viUA2ZQ4yZ+F1z2Lk9HgMS/1YfRj8vHuEUPNXc9Fsy5qxwTp7I1hEanEg== - dependencies: - "@codemirror/language" "^6.0.0" - "@codemirror/state" "^6.0.0" - "@codemirror/view" "^6.0.0" - -"@uiw/react-codemirror@^4.12.4": - version "4.12.4" - resolved "https://registry.yarnpkg.com/@uiw/react-codemirror/-/react-codemirror-4.12.4.tgz#26c36e7957bc51894bc6526b3922645215ad46d5" - integrity sha512-92TAvN2z5snPjPtJDLmbqrqsXXYFYlBnWraXZuDc1XGaw80tB26ZkdEW79CD2QM4Y9LhFIt+sauwlmiAVDs/5A== - dependencies: - "@babel/runtime" "^7.18.6" - "@codemirror/commands" "^6.1.0" - "@codemirror/state" "^6.1.1" - "@codemirror/theme-one-dark" "^6.0.0" - "@uiw/codemirror-extensions-basic-setup" "4.12.4" - codemirror "^6.0.0" - -"@webassemblyjs/ast@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" - integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== - dependencies: - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" - -"@webassemblyjs/floating-point-hex-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" - integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== - -"@webassemblyjs/helper-api-error@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" - integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== - -"@webassemblyjs/helper-buffer@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" - integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== - -"@webassemblyjs/helper-code-frame@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" - integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== - dependencies: - "@webassemblyjs/wast-printer" "1.9.0" - -"@webassemblyjs/helper-fsm@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" - integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== - -"@webassemblyjs/helper-module-context@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" - integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== - dependencies: - "@webassemblyjs/ast" "1.9.0" - -"@webassemblyjs/helper-wasm-bytecode@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" - integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== - -"@webassemblyjs/helper-wasm-section@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" - integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - -"@webassemblyjs/ieee754@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" - integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" - integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" - integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== - -"@webassemblyjs/wasm-edit@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" - integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/helper-wasm-section" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-opt" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - "@webassemblyjs/wast-printer" "1.9.0" - -"@webassemblyjs/wasm-gen@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" - integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" - -"@webassemblyjs/wasm-opt@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" - integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - -"@webassemblyjs/wasm-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" - integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" - -"@webassemblyjs/wast-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" - integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/floating-point-hex-parser" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-code-frame" "1.9.0" - "@webassemblyjs/helper-fsm" "1.9.0" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/wast-printer@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" - integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" - "@xtuc/long" "4.2.2" - -"@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== - -"@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== - -abab@^2.0.3, abab@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" - integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== - -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - -accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" - integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== - dependencies: - mime-types "~2.1.24" - negotiator "0.6.2" - -acorn-globals@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" - integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== - dependencies: - acorn "^7.1.1" - acorn-walk "^7.1.1" - -acorn-jsx@^5.3.1: - version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn-walk@^7.1.1: - version "7.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" - integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== - -acorn@^6.4.1: - version "6.4.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" - integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== - -acorn@^7.1.0, acorn@^7.1.1, acorn@^7.4.0: - version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== - -acorn@^8.2.4: - version "8.5.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.5.0.tgz#4512ccb99b3698c752591e9bb4472e38ad43cee2" - integrity sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q== - -address@1.1.2, address@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" - integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== - -adjust-sourcemap-loader@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-3.0.0.tgz#5ae12fb5b7b1c585e80bbb5a63ec163a1a45e61e" - integrity sha512-YBrGyT2/uVQ/c6Rr+t6ZJXniY03YtHGMJQYal368burRGYKqhx9qGTWqcBU5s1CwYY9E/ri63RYyG1IacMZtqw== - dependencies: - loader-utils "^2.0.0" - regex-parser "^2.2.11" - -agent-base@6, agent-base@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== - dependencies: - debug "4" - -agentkeepalive@^4.1.3: - version "4.2.1" - resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.2.1.tgz#a7975cbb9f83b367f06c90cc51ff28fe7d499717" - integrity sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA== - dependencies: - debug "^4.1.0" - depd "^1.1.2" - humanize-ms "^1.2.1" - -aggregate-error@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" - integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== - dependencies: - clean-stack "^2.0.0" - indent-string "^4.0.0" - -ajv-errors@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" - integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== - -ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" - integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== - -ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.0, ajv@^6.12.4, ajv@^6.12.5: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - 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" - -ajv@^8.0.1: - version "8.6.3" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.6.3.tgz#11a66527761dc3e9a3845ea775d2d3c0414e8764" - integrity sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - -alphanum-sort@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" - integrity sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ== - -ansi-align@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" - integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== - dependencies: - string-width "^4.1.0" - -ansi-colors@^3.0.0: - version "3.2.4" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" - integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== - -ansi-colors@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" - integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== - -ansi-escapes@^4.2.1, ansi-escapes@^4.3.0, ansi-escapes@^4.3.1: - version "4.3.2" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== - dependencies: - type-fest "^0.21.3" - -ansi-html@0.0.7, ansi-html@^0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" - integrity sha512-JoAxEa1DfP9m2xfB/y2r/aKcwXNlltr4+0QSBC4TrLfcxyvepX2Pv0t/xpgGV5bGsDzCYV8SzjWgyCW0T9yYbA== - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== - -ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" - integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== - -ansi-regex@^5.0.0, ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-styles@^3.2.0, ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -ansi-to-html@^0.7.2: - version "0.7.2" - resolved "https://registry.yarnpkg.com/ansi-to-html/-/ansi-to-html-0.7.2.tgz#a92c149e4184b571eb29a0135ca001a8e2d710cb" - integrity sha512-v6MqmEpNlxF+POuyhKkidusCHWWkaLcGRURzivcU3I9tv7k4JVhFcnukrM5Rlk2rUywdZuzYAZ+kbZqWCnfN3g== - dependencies: - entities "^2.2.0" - -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== - dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" - -anymatch@^3.0.0, anymatch@^3.0.3, anymatch@~3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -app-builder-bin@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/app-builder-bin/-/app-builder-bin-4.0.0.tgz#1df8e654bd1395e4a319d82545c98667d7eed2f0" - integrity sha512-xwdG0FJPQMe0M0UA4Tz0zEB8rBJTRA5a476ZawAqiBkMv16GRK5xpXThOjMaEOFnZ6zabejjG4J3da0SXG63KA== - -app-builder-lib@23.3.3: - version "23.3.3" - resolved "https://registry.yarnpkg.com/app-builder-lib/-/app-builder-lib-23.3.3.tgz#78b9dbb0bd8a69842461edd77a3226d0547c5939" - integrity sha512-m0+M53+HYMzqKxwNQZT143K7WwXEGUy9LY31l8dJphXx2P/FQod615mVbxHyqbDCG4J5bHdWm21qZ0e2DVY6CQ== - dependencies: - "7zip-bin" "~5.1.1" - "@develar/schema-utils" "~2.6.5" - "@electron/universal" "1.2.1" - "@malept/flatpak-bundler" "^0.4.0" - async-exit-hook "^2.0.1" - bluebird-lst "^1.0.9" - builder-util "23.3.3" - builder-util-runtime "9.0.3" - chromium-pickle-js "^0.2.0" - debug "^4.3.4" - ejs "^3.1.7" - electron-osx-sign "^0.6.0" - electron-publish "23.3.3" - form-data "^4.0.0" - fs-extra "^10.1.0" - hosted-git-info "^4.1.0" - is-ci "^3.0.0" - isbinaryfile "^4.0.10" - js-yaml "^4.1.0" - lazy-val "^1.0.5" - minimatch "^3.1.2" - read-config-file "6.2.0" - sanitize-filename "^1.6.3" - semver "^7.3.7" - tar "^6.1.11" - temp-file "^3.4.0" - -"aproba@^1.0.3 || ^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" - integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== - -aproba@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - -are-we-there-yet@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz#372e0e7bd279d8e94c653aaa1f67200884bf3e1c" - integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw== - dependencies: - delegates "^1.0.0" - readable-stream "^3.6.0" - -are-we-there-yet@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz#679df222b278c64f2cdba1175cdc00b0d96164bd" - integrity sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg== - dependencies: - delegates "^1.0.0" - readable-stream "^3.6.0" - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -aria-query@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b" - integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA== - dependencies: - "@babel/runtime" "^7.10.2" - "@babel/runtime-corejs3" "^7.10.2" - -arity-n@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/arity-n/-/arity-n-1.0.4.tgz#d9e76b11733e08569c0847ae7b39b2860b30b745" - integrity sha512-fExL2kFDC1Q2DUOx3whE/9KoN66IzkY4b4zUHUBFM1ojEYjZZYDcUW3bek/ufGionX9giIKDC5redH2IlGqcQQ== - -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA== - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== - -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== - -array-flatten@^2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" - integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== - -array-includes@^3.1.1, array-includes@^3.1.3: - version "3.1.4" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.4.tgz#f5b493162c760f3539631f005ba2bb46acb45ba9" - integrity sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - get-intrinsic "^1.1.1" - is-string "^1.0.7" - -array-union@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - integrity sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng== - dependencies: - array-uniq "^1.0.1" - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - integrity sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q== - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== - -array.prototype.flat@^1.2.4: - version "1.2.5" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz#07e0975d84bbc7c48cd1879d609e682598d33e13" - integrity sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.0" - -array.prototype.flatmap@^1.2.4: - version "1.2.5" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz#908dc82d8a406930fdf38598d51e7411d18d4446" - integrity sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - es-abstract "^1.19.0" - -arrify@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" - integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== - -asap@~2.0.3, asap@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" - integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== - -asar@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/asar/-/asar-3.2.0.tgz#e6edb5edd6f627ebef04db62f771c61bea9c1221" - integrity sha512-COdw2ZQvKdFGFxXwX3oYh2/sOsJWJegrdJCGxnN4MZ7IULgRBp9P6665aqj9z1v9VwP4oP1hRBojRDQ//IGgAg== - dependencies: - chromium-pickle-js "^0.2.0" - commander "^5.0.0" - glob "^7.1.6" - minimatch "^3.0.4" - optionalDependencies: - "@types/glob" "^7.1.1" - -asn1.js@^5.2.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" - integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - safer-buffer "^2.1.0" - -assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== - -assert@^1.1.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" - integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== - dependencies: - object-assign "^4.1.1" - util "0.10.3" - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== - -ast-types-flow@^0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" - integrity sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag== - -astral-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" - integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== - -async-each@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" - integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== - -async-exit-hook@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/async-exit-hook/-/async-exit-hook-2.0.1.tgz#8bd8b024b0ec9b1c01cccb9af9db29bd717dfaf3" - integrity sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw== - -async-limiter@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" - integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== - -async@^2.6.2: - version "2.6.3" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" - integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== - dependencies: - lodash "^4.17.14" - -async@^3.2.3: - version "3.2.4" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" - integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== - -at-least-node@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" - integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== - -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - -autoprefixer@^9.6.1: - version "9.8.8" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.8.tgz#fd4bd4595385fa6f06599de749a4d5f7a474957a" - integrity sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA== - dependencies: - browserslist "^4.12.0" - caniuse-lite "^1.0.30001109" - normalize-range "^0.1.2" - num2fraction "^1.2.2" - picocolors "^0.2.1" - postcss "^7.0.32" - postcss-value-parser "^4.1.0" - -axe-core@^4.0.2: - version "4.3.3" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.3.3.tgz#b55cd8e8ddf659fe89b064680e1c6a4dceab0325" - integrity sha512-/lqqLAmuIPi79WYfRpy2i8z+x+vxU3zX2uAm0gs1q52qTuKwolOj1P8XbufpXcsydrpKx2yGn2wzAnxCMV86QA== - -axios@^0.21.4: - version "0.21.4" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" - integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== - dependencies: - follow-redirects "^1.14.0" - -axios@^0.25.0: - version "0.25.0" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.25.0.tgz#349cfbb31331a9b4453190791760a8d35b093e0a" - integrity sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g== - dependencies: - follow-redirects "^1.14.7" - -axobject-query@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" - integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== - -babel-eslint@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" - integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.7.0" - "@babel/traverse" "^7.7.0" - "@babel/types" "^7.7.0" - eslint-visitor-keys "^1.0.0" - resolve "^1.12.0" - -babel-extract-comments@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz#0a2aedf81417ed391b85e18b4614e693a0351a21" - integrity sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ== - dependencies: - babylon "^6.18.0" - -babel-jest@^26.6.0, babel-jest@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.6.3.tgz#d87d25cb0037577a0c89f82e5755c5d293c01056" - integrity sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA== - dependencies: - "@jest/transform" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/babel__core" "^7.1.7" - babel-plugin-istanbul "^6.0.0" - babel-preset-jest "^26.6.2" - chalk "^4.0.0" - graceful-fs "^4.2.4" - slash "^3.0.0" - -babel-loader@8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.1.0.tgz#c611d5112bd5209abe8b9fa84c3e4da25275f1c3" - integrity sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw== - dependencies: - find-cache-dir "^2.1.0" - loader-utils "^1.4.0" - mkdirp "^0.5.3" - pify "^4.0.1" - schema-utils "^2.6.5" - -babel-plugin-dynamic-import-node@^2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" - integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== - dependencies: - object.assign "^4.1.0" - -babel-plugin-istanbul@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" - integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^4.0.0" - test-exclude "^6.0.0" - -babel-plugin-jest-hoist@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz#8185bd030348d254c6d7dd974355e6a28b21e62d" - integrity sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw== - dependencies: - "@babel/template" "^7.3.3" - "@babel/types" "^7.3.3" - "@types/babel__core" "^7.0.0" - "@types/babel__traverse" "^7.0.6" - -babel-plugin-macros@2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" - integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== - dependencies: - "@babel/runtime" "^7.7.2" - cosmiconfig "^6.0.0" - resolve "^1.12.0" - -babel-plugin-named-asset-import@^0.3.7: - version "0.3.7" - resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.7.tgz#156cd55d3f1228a5765774340937afc8398067dd" - integrity sha512-squySRkf+6JGnvjoUtDEjSREJEBirnXi9NqP6rjSYsylxQxqBTz+pkmf395i9E2zsvmYUaI40BHo6SqZUdydlw== - -babel-plugin-polyfill-corejs2@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz#e9124785e6fd94f94b618a7954e5693053bf5327" - integrity sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ== - dependencies: - "@babel/compat-data" "^7.13.11" - "@babel/helper-define-polyfill-provider" "^0.2.2" - semver "^6.1.1" - -babel-plugin-polyfill-corejs3@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.5.tgz#2779846a16a1652244ae268b1e906ada107faf92" - integrity sha512-ninF5MQNwAX9Z7c9ED+H2pGt1mXdP4TqzlHKyPIYmJIYz0N+++uwdM7RnJukklhzJ54Q84vA4ZJkgs7lu5vqcw== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.2.2" - core-js-compat "^3.16.2" - -babel-plugin-polyfill-regenerator@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz#b310c8d642acada348c1fa3b3e6ce0e851bee077" - integrity sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.2.2" - -babel-plugin-syntax-object-rest-spread@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" - integrity sha512-C4Aq+GaAj83pRQ0EFgTvw5YO6T3Qz2KGrNRwIj9mSoNHVvdZY4KO2uA6HNtNXCw993iSZnckY1aLW8nOi8i4+w== - -babel-plugin-transform-object-rest-spread@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" - integrity sha512-ocgA9VJvyxwt+qJB0ncxV8kb/CjfTcECUY4tQ5VT7nP6Aohzobm8CDFaQ5FHdvZQzLmf0sgDxB8iRXZXxwZcyA== - dependencies: - babel-plugin-syntax-object-rest-spread "^6.8.0" - babel-runtime "^6.26.0" - -babel-plugin-transform-react-remove-prop-types@0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz#f2edaf9b4c6a5fbe5c1d678bfb531078c1555f3a" - integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA== - -babel-preset-current-node-syntax@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" - integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== - dependencies: - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-bigint" "^7.8.3" - "@babel/plugin-syntax-class-properties" "^7.8.3" - "@babel/plugin-syntax-import-meta" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-top-level-await" "^7.8.3" - -babel-preset-jest@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz#747872b1171df032252426586881d62d31798fee" - integrity sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ== - dependencies: - babel-plugin-jest-hoist "^26.6.2" - babel-preset-current-node-syntax "^1.0.0" - -babel-preset-react-app@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-10.0.0.tgz#689b60edc705f8a70ce87f47ab0e560a317d7045" - integrity sha512-itL2z8v16khpuKutx5IH8UdCdSTuzrOhRFTEdIhveZ2i1iBKDrVE0ATa4sFVy+02GLucZNVBWtoarXBy0Msdpg== - dependencies: - "@babel/core" "7.12.3" - "@babel/plugin-proposal-class-properties" "7.12.1" - "@babel/plugin-proposal-decorators" "7.12.1" - "@babel/plugin-proposal-nullish-coalescing-operator" "7.12.1" - "@babel/plugin-proposal-numeric-separator" "7.12.1" - "@babel/plugin-proposal-optional-chaining" "7.12.1" - "@babel/plugin-transform-flow-strip-types" "7.12.1" - "@babel/plugin-transform-react-display-name" "7.12.1" - "@babel/plugin-transform-runtime" "7.12.1" - "@babel/preset-env" "7.12.1" - "@babel/preset-react" "7.12.1" - "@babel/preset-typescript" "7.12.1" - "@babel/runtime" "7.12.1" - babel-plugin-macros "2.8.0" - babel-plugin-transform-react-remove-prop-types "0.4.24" - -babel-runtime@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" - integrity sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g== - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" - -babylon@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" - integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -base16@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/base16/-/base16-1.0.0.tgz#e297f60d7ec1014a7a971a39ebc8a98c0b681e70" - integrity sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ== - -base64-js@^1.0.2, base64-js@^1.3.1, base64-js@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - -batch@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" - integrity sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw== - -bfj@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/bfj/-/bfj-7.0.2.tgz#1988ce76f3add9ac2913fd8ba47aad9e651bfbb2" - integrity sha512-+e/UqUzwmzJamNF50tBV6tZPTORow7gQ96iFow+8b562OdMpEK0BcJEq2OSPEDmAbSMBQ7PKZ87ubFkgxpYWgw== - dependencies: - bluebird "^3.5.5" - check-types "^11.1.1" - hoopy "^0.1.4" - tryer "^1.0.1" - -big-integer@^1.6.16: - version "1.6.49" - resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.49.tgz#f6817d3ea5d4f3fb19e24df9f4b1b4471a8328ce" - integrity sha512-KJ7VhqH+f/BOt9a3yMwJNmcZjG53ijWMTjSAGMveQWyLwqIiwkjNP5PFgDob3Snnx86SjDj6I89fIbv0dkQeNw== - -big.js@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" - integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== - -binary-extensions@^1.0.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" - integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - -bluebird-lst@^1.0.9: - version "1.0.9" - resolved "https://registry.yarnpkg.com/bluebird-lst/-/bluebird-lst-1.0.9.tgz#a64a0e4365658b9ab5fe875eb9dfb694189bb41c" - integrity sha512-7B1Rtx82hjnSD4PGLAjVWeYH3tHAcVUmChh85a3lltKQm6FresXh9ErQo6oAv6CqxttczC3/kEg8SY5NluPuUw== - dependencies: - bluebird "^3.5.5" - -bluebird@^3.5.0, bluebird@^3.5.5: - version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: - version "4.12.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" - integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== - -bn.js@^5.0.0, bn.js@^5.1.1: - version "5.2.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" - integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== - -body-parser@1.19.0: - version "1.19.0" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" - integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== - dependencies: - bytes "3.1.0" - content-type "~1.0.4" - debug "2.6.9" - depd "~1.1.2" - http-errors "1.7.2" - iconv-lite "0.4.24" - on-finished "~2.3.0" - qs "6.7.0" - raw-body "2.4.0" - type-is "~1.6.17" - -bonjour@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" - integrity sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg== - 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" - -boolbase@^1.0.0, boolbase@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== - -boolean@^3.0.1: - version "3.2.0" - resolved "https://registry.yarnpkg.com/boolean/-/boolean-3.2.0.tgz#9e5294af4e98314494cbb17979fa54ca159f116b" - integrity sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw== - -boxen@^5.0.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50" - integrity sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ== - dependencies: - ansi-align "^3.0.0" - camelcase "^6.2.0" - chalk "^4.1.0" - cli-boxes "^2.2.1" - string-width "^4.2.2" - type-fest "^0.20.2" - widest-line "^3.1.0" - wrap-ansi "^7.0.0" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== - dependencies: - balanced-match "^1.0.0" - -braces@^2.3.1, braces@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - -braces@^3.0.1, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -broadcast-channel@^3.4.1: - version "3.7.0" - resolved "https://registry.yarnpkg.com/broadcast-channel/-/broadcast-channel-3.7.0.tgz#2dfa5c7b4289547ac3f6705f9c00af8723889937" - integrity sha512-cIAKJXAxGJceNZGTZSBzMxzyOn72cVgPnKx4dc6LRjQgbaJUQqhy5rzL3zbMxkMWsGKkv2hSFkPRMEXfoMZ2Mg== - dependencies: - "@babel/runtime" "^7.7.2" - detect-node "^2.1.0" - js-sha3 "0.8.0" - microseconds "0.2.0" - nano-time "1.0.0" - oblivious-set "1.0.0" - rimraf "3.0.2" - unload "2.2.0" - -brorand@^1.0.1, brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== - -browser-process-hrtime@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" - integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== - -browserify-aes@^1.0.0, browserify-aes@^1.0.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" - integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== - dependencies: - bn.js "^5.0.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" - integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== - dependencies: - bn.js "^5.1.1" - browserify-rsa "^4.0.1" - create-hash "^1.2.0" - create-hmac "^1.1.7" - elliptic "^6.5.3" - inherits "^2.0.4" - parse-asn1 "^5.1.5" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -browserify-zlib@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" - integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== - dependencies: - pako "~1.0.5" - -browserslist@4.14.2: - version "4.14.2" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.2.tgz#1b3cec458a1ba87588cc5e9be62f19b6d48813ce" - integrity sha512-HI4lPveGKUR0x2StIz+2FXfDk9SfVMrxn6PLh1JeGUwcuoDkdKZebWiyLRJ68iIPDpMI4JLVDf7S7XzslgWOhw== - dependencies: - caniuse-lite "^1.0.30001125" - electron-to-chromium "^1.3.564" - escalade "^3.0.2" - node-releases "^1.1.61" - -browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.16.6, browserslist@^4.17.3, browserslist@^4.6.2, browserslist@^4.6.4: - version "4.17.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.17.3.tgz#2844cd6eebe14d12384b0122d217550160d2d624" - integrity sha512-59IqHJV5VGdcJZ+GZ2hU5n4Kv3YiASzW6Xk5g9tf5a/MAzGeFwgGWU39fVzNIOVcgB3+Gp+kiQu0HEfTVU/3VQ== - dependencies: - caniuse-lite "^1.0.30001264" - electron-to-chromium "^1.3.857" - escalade "^3.1.1" - node-releases "^1.1.77" - picocolors "^0.2.1" - -bser@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" - integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== - dependencies: - node-int64 "^0.4.0" - -buffer-alloc-unsafe@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" - integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== - -buffer-alloc@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" - integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== - dependencies: - buffer-alloc-unsafe "^1.1.0" - buffer-fill "^1.0.0" - -buffer-crc32@~0.2.3: - version "0.2.13" - resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" - integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== - -buffer-equal@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.0.tgz#59616b498304d556abd466966b22eeda3eca5fbe" - integrity sha512-tcBWO2Dl4e7Asr9hTGcpVrCe+F7DubpmqWCTbj4FHLmjqO2hIaC383acQubWtRJhdceqs5uBHs6Es+Sk//RKiQ== - -buffer-fill@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" - integrity sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ== - -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - -buffer-indexof@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" - integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== - -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== - -buffer@6.0.3, buffer@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" - integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.2.1" - -buffer@^4.3.0: - version "4.9.2" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" - integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - -buffer@^5.1.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - -builder-util-runtime@9.0.3: - version "9.0.3" - resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-9.0.3.tgz#6c62c493ba2b73c2af92432db4013b5a327f02b2" - integrity sha512-SfG2wnyjpUbbdtpnqDpWwklujofC6GarGpvdWrEkg9p5AD/xJmTF2buTNaqs3qtsNBEVQDDjZz9xc2GGpVyMfA== - dependencies: - debug "^4.3.4" - sax "^1.2.4" - -builder-util-runtime@9.1.1: - version "9.1.1" - resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-9.1.1.tgz#2da7b34e78a64ad14ccd070d6eed4662d893bd60" - integrity sha512-azRhYLEoDvRDR8Dhis4JatELC/jUvYjm4cVSj7n9dauGTOM2eeNn9KS0z6YA6oDsjI1xphjNbY6PZZeHPzzqaw== - dependencies: - debug "^4.3.4" - sax "^1.2.4" - -builder-util@23.3.3: - version "23.3.3" - resolved "https://registry.yarnpkg.com/builder-util/-/builder-util-23.3.3.tgz#449ee57ec1ffc7e59f7a3a8a1a33d25cf5e39e43" - integrity sha512-MJZlUiq2PY5hjYv9+XNaoYdsITqvLgRDoHSFg/4nzpInbNxNjLQOolL04Zsyp+hgfcbFvMC4h0KkR1CMPHLWbA== - dependencies: - "7zip-bin" "~5.1.1" - "@types/debug" "^4.1.6" - "@types/fs-extra" "^9.0.11" - app-builder-bin "4.0.0" - bluebird-lst "^1.0.9" - builder-util-runtime "9.0.3" - chalk "^4.1.1" - cross-spawn "^7.0.3" - debug "^4.3.4" - fs-extra "^10.0.0" - http-proxy-agent "^5.0.0" - https-proxy-agent "^5.0.0" - is-ci "^3.0.0" - js-yaml "^4.1.0" - source-map-support "^0.5.19" - stat-mode "^1.0.0" - temp-file "^3.4.0" - -builtin-modules@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" - integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== - -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - integrity sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ== - -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== - -bytes@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" - integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== - -cacache@^12.0.2: - version "12.0.4" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" - integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== - dependencies: - bluebird "^3.5.5" - chownr "^1.1.1" - figgy-pudding "^3.5.1" - glob "^7.1.4" - graceful-fs "^4.1.15" - infer-owner "^1.0.3" - lru-cache "^5.1.1" - mississippi "^3.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.3" - ssri "^6.0.1" - unique-filename "^1.1.1" - y18n "^4.0.0" - -cacache@^15.0.5, cacache@^15.2.0: - version "15.3.0" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb" - integrity sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ== - 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" - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - -cacheable-request@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" - integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== - dependencies: - clone-response "^1.0.2" - get-stream "^5.1.0" - http-cache-semantics "^4.0.0" - keyv "^3.0.0" - lowercase-keys "^2.0.0" - normalize-url "^4.1.0" - responselike "^1.0.2" - -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" - -caller-callsite@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" - integrity sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ== - dependencies: - callsites "^2.0.0" - -caller-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" - integrity sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A== - dependencies: - caller-callsite "^2.0.0" - -callsites@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" - integrity sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ== - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camel-case@^4.1.1: - version "4.1.2" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" - integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== - dependencies: - pascal-case "^3.1.2" - tslib "^2.0.3" - -camelcase@5.3.1, camelcase@^5.0.0, camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -camelcase@^6.0.0, camelcase@^6.1.0, camelcase@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" - integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== - -caniuse-api@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" - integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== - dependencies: - browserslist "^4.0.0" - caniuse-lite "^1.0.0" - lodash.memoize "^4.1.2" - lodash.uniq "^4.5.0" - -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001125, caniuse-lite@^1.0.30001264: - version "1.0.30001265" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001265.tgz#0613c9e6c922e422792e6fcefdf9a3afeee4f8c3" - integrity sha512-YzBnspggWV5hep1m9Z6sZVLOt7vrju8xWooFAgN6BA5qvy98qPAPb7vNUzypFaoh2pb3vlfzbDO8tB57UPGbtw== - -capture-exit@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" - integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== - dependencies: - rsvp "^4.8.4" - -case-sensitive-paths-webpack-plugin@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz#23ac613cc9a856e4f88ff8bb73bbb5e989825cf7" - integrity sha512-/4YgnZS8y1UXXmC02xD5rRrBEu6T5ub+mQHLNRj0fzTRbgdBYhsNo2V5EqwgqrExjxsjtF/OpAKAMkKsxbD5XQ== - -chalk@2.4.2, chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -char-regex@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" - integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== - -check-types@^11.1.1: - version "11.1.2" - resolved "https://registry.yarnpkg.com/check-types/-/check-types-11.1.2.tgz#86a7c12bf5539f6324eb0e70ca8896c0e38f3e2f" - integrity sha512-tzWzvgePgLORb9/3a0YenggReLKAIb2owL03H2Xdoe5pKcUyWRSEQ8xfCar8t2SIAuEDwtmx2da1YB52YuHQMQ== - -"chokidar@>=3.0.0 <4.0.0", chokidar@^3.4.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" - 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" - optionalDependencies: - fsevents "~2.3.2" - -chokidar@^2.1.8: - version "2.1.8" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" - integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== - dependencies: - anymatch "^2.0.0" - async-each "^1.0.1" - braces "^2.3.2" - glob-parent "^3.1.0" - inherits "^2.0.3" - is-binary-path "^1.0.0" - is-glob "^4.0.0" - normalize-path "^3.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.2.1" - upath "^1.1.1" - optionalDependencies: - fsevents "^1.2.7" - -chownr@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - -chownr@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" - integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== - -chrome-trace-event@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" - integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== - -chromium-pickle-js@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz#04a106672c18b085ab774d983dfa3ea138f22205" - integrity sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw== - -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== - -ci-info@^3.2.0: - version "3.3.2" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.2.tgz#6d2967ffa407466481c6c90b6e16b3098f080128" - integrity sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg== - -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -cjs-module-lexer@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz#4186fcca0eae175970aee870b9fe2d6cf8d5655f" - integrity sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw== - -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - -classnames@^2.2.6, classnames@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.1.tgz#dfcfa3891e306ec1dad105d0e88f4417b8535e8e" - integrity sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA== - -clean-css@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" - integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== - dependencies: - source-map "~0.6.0" - -clean-stack@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" - integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== - -cli-boxes@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" - integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== - -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - -cli-truncate@2.1.0, cli-truncate@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" - integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== - dependencies: - slice-ansi "^3.0.0" - string-width "^4.2.0" - -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" - integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== - dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" - -cliui@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" - integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^6.2.0" - -cliui@^7.0.2: - version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" - integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^7.0.0" - -clone-response@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3" - integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA== - dependencies: - mimic-response "^1.0.0" - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== - -coa@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" - integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== - dependencies: - "@types/q" "^1.5.1" - chalk "^2.4.1" - q "^1.1.2" - -codemirror@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-6.0.1.tgz#62b91142d45904547ee3e0e0e4c1a79158035a29" - integrity sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg== - dependencies: - "@codemirror/autocomplete" "^6.0.0" - "@codemirror/commands" "^6.0.0" - "@codemirror/language" "^6.0.0" - "@codemirror/lint" "^6.0.0" - "@codemirror/search" "^6.0.0" - "@codemirror/state" "^6.0.0" - "@codemirror/view" "^6.0.0" - -collect-v8-coverage@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" - integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw== - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - -color-convert@^1.9.0, color-convert@^1.9.3: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - -color-name@^1.0.0, color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -color-string@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.6.0.tgz#c3915f61fe267672cb7e1e064c9d692219f6c312" - integrity sha512-c/hGS+kRWJutUBEngKKmk4iH3sD59MBkoxVapS/0wgpCz2u7XsNloxknyvBhzwEs1IbV36D9PwqLPJ2DTu3vMA== - dependencies: - color-name "^1.0.0" - simple-swizzle "^0.2.2" - -color-support@^1.1.2, color-support@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" - integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== - -color@^3.0.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164" - integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA== - dependencies: - color-convert "^1.9.3" - color-string "^1.6.0" - -colorette@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40" - integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== - -colors@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" - integrity sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw== - -combined-stream@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -commander@2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" - integrity sha512-bmkUukX8wAOjHdN26xj5c4ctEV22TQ7dQYhSmuckKhToXrkUn0iIaolHdIxYYqD55nhpSPA9zPQ1yP57GdXP2A== - dependencies: - graceful-readlink ">= 1.0.0" - -commander@^2.20.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -commander@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" - integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== - -commander@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" - integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== - -commander@^8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-8.2.0.tgz#37fe2bde301d87d47a53adeff8b5915db1381ca8" - integrity sha512-LLKxDvHeL91/8MIyTAD5BFMNtoIwztGPMiM/7Bl8rIPmHCZXRxmSWr91h57dpOpnQ6jIUqEWdXE/uBYMfiVZDA== - -common-tags@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" - integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw== - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== - -compare-version@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/compare-version/-/compare-version-0.1.2.tgz#0162ec2d9351f5ddd59a9202cba935366a725080" - integrity sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A== - -component-emitter@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== - -compose-function@3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/compose-function/-/compose-function-3.0.3.tgz#9ed675f13cc54501d30950a486ff6a7ba3ab185f" - integrity sha512-xzhzTJ5eC+gmIzvZq+C3kCJHsp9os6tJkrigDRZclyGtOKINbZtE8n1Tzmeh32jW+BUDPbvZpibwvJHBLGMVwg== - dependencies: - arity-n "^1.0.4" - -compressible@~2.0.16: - version "2.0.18" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" - integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== - dependencies: - mime-db ">= 1.43.0 < 2" - -compression@^1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" - integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== - 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" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -concat-stream@^1.5.0: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -concurrently@^7.3.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-7.3.0.tgz#eb45cdbc8df43da195f619aba218a980cae49184" - integrity sha512-IiDwm+8DOcFEInca494A8V402tNTQlJaYq78RF2rijOrKEk/AOHTxhN4U1cp7GYKYX5Q6Ymh1dLTBlzIMN0ikA== - dependencies: - chalk "^4.1.0" - date-fns "^2.16.1" - lodash "^4.17.21" - rxjs "^7.0.0" - shell-quote "^1.7.3" - spawn-command "^0.0.2-1" - supports-color "^8.1.0" - tree-kill "^1.2.2" - yargs "^17.3.1" - -config-chain@^1.1.11: - version "1.1.13" - resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" - integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== - dependencies: - ini "^1.3.4" - proto-list "~1.2.1" - -configstore@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" - integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA== - dependencies: - dot-prop "^5.2.0" - graceful-fs "^4.1.2" - make-dir "^3.0.0" - unique-string "^2.0.0" - write-file-atomic "^3.0.0" - xdg-basedir "^4.0.0" - -confusing-browser-globals@^1.0.10: - version "1.0.10" - resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz#30d1e7f3d1b882b25ec4933d1d1adac353d20a59" - integrity sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA== - -connect-history-api-fallback@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" - integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== - -console-browserify@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" - integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== - -console-control-strings@^1.0.0, console-control-strings@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== - -constants-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" - integrity sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ== - -content-disposition@0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" - integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== - dependencies: - safe-buffer "5.1.2" - -content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== - -convert-source-map@1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" - integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== - dependencies: - safe-buffer "~5.1.1" - -convert-source-map@^0.3.3: - version "0.3.5" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz#f1d802950af7dd2631a1febe0596550c86ab3190" - integrity sha512-+4nRk0k3oEpwUB7/CalD7xE2z4VmtEnnq0GO2IPTkrooTrAhEsWvuLF5iWP1dXrwluki/azwXV1ve7gtYuPldg== - -convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" - integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== - dependencies: - safe-buffer "~5.1.1" - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== - -cookie@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" - integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== - -cookie@^0.4.1: - version "0.4.2" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" - integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== - -copy-concurrently@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" - integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== - dependencies: - aproba "^1.1.1" - fs-write-stream-atomic "^1.0.8" - iferr "^0.1.5" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.0" - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== - -copy-to-clipboard@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz#115aa1a9998ffab6196f93076ad6da3b913662ae" - integrity sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw== - dependencies: - toggle-selection "^1.0.6" - -core-js-compat@^3.16.0, core-js-compat@^3.16.2, core-js-compat@^3.6.2: - version "3.18.2" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.18.2.tgz#e40c266fbd613948dd8d2d2156345da8ac03c142" - integrity sha512-25VJYCJtGjZwLguj7d66oiHfmnVw3TMOZ0zV8DyMJp/aeQ3OjR519iOOeck08HMyVVRAqXxafc2Hl+5QstJrsQ== - dependencies: - browserslist "^4.17.3" - semver "7.0.0" - -core-js-pure@^3.16.0: - version "3.18.2" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.18.2.tgz#d8cc11d4885ea919f3de776d45e720e4c769d406" - integrity sha512-4hMMLUlZhKJKOWbbGD1/VDUxGPEhEoN/T01k7bx271WiBKCvCfkgPzy0IeRS4PB50p6/N1q/SZL4B/TRsTE5bA== - -core-js@^2.4.0: - version "2.6.12" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" - integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== - -core-js@^3.6.5: - version "3.18.2" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.18.2.tgz#63a551e8a29f305cd4123754846e65896619ba5b" - integrity sha512-zNhPOUoSgoizoSQFdX1MeZO16ORRb9FFQLts8gSYbZU5FcgXhp24iMWMxnOQo5uIaIG7/6FA/IqJPwev1o9ZXQ== - -core-util-is@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== - -core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== - -cosmiconfig@^5.0.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" - integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== - dependencies: - import-fresh "^2.0.0" - is-directory "^0.3.1" - js-yaml "^3.13.1" - parse-json "^4.0.0" - -cosmiconfig@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" - integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== - dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.1.0" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.7.2" - -cosmiconfig@^7.0.0, cosmiconfig@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" - integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== - 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" - -crc@^3.8.0: - version "3.8.0" - resolved "https://registry.yarnpkg.com/crc/-/crc-3.8.0.tgz#ad60269c2c856f8c299e2c4cc0de4556914056c6" - integrity sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ== - dependencies: - buffer "^5.1.0" - -create-ecdh@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" - integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== - dependencies: - bn.js "^4.1.0" - elliptic "^6.5.3" - -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -crelt@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/crelt/-/crelt-1.0.5.tgz#57c0d52af8c859e354bace1883eb2e1eb182bb94" - integrity sha512-+BO9wPPi+DWTDcNYhr/W90myha8ptzftZT+LwcmUbbok0rcP/fequmFYCw8NMoH7pkAZQzU78b3kYrlua5a9eA== - -cross-env@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf" - integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw== - dependencies: - cross-spawn "^7.0.1" - -cross-fetch@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" - integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== - dependencies: - node-fetch "2.6.7" - -cross-spawn@7.0.3, cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -cross-spawn@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41" - integrity sha512-yAXz/pA1tD8Gtg2S98Ekf/sewp3Lcp3YoFKJ4Hkp5h5yLWnKVTDU0kwjKJ8NDCYcfTLfyGkzTikst+jWypT1iA== - dependencies: - lru-cache "^4.0.1" - which "^1.2.9" - -cross-spawn@^6.0.0: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - -crypto-browserify@^3.11.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" - -crypto-random-string@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" - integrity sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg== - -crypto-random-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" - integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== - -css-blank-pseudo@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz#dfdefd3254bf8a82027993674ccf35483bfcb3c5" - integrity sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w== - dependencies: - postcss "^7.0.5" - -css-color-names@0.0.4, css-color-names@^0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" - integrity sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q== - -css-declaration-sorter@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" - integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== - dependencies: - postcss "^7.0.1" - timsort "^0.3.0" - -css-has-pseudo@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz#3c642ab34ca242c59c41a125df9105841f6966ee" - integrity sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ== - dependencies: - postcss "^7.0.6" - postcss-selector-parser "^5.0.0-rc.4" - -css-loader@4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-4.3.0.tgz#c888af64b2a5b2e85462c72c0f4a85c7e2e0821e" - integrity sha512-rdezjCjScIrsL8BSYszgT4s476IcNKt6yX69t0pHjJVnPUTDpn4WfIpDQTN3wCJvUvfsz/mFjuGOekf3PY3NUg== - dependencies: - camelcase "^6.0.0" - cssesc "^3.0.0" - icss-utils "^4.1.1" - loader-utils "^2.0.0" - postcss "^7.0.32" - postcss-modules-extract-imports "^2.0.0" - postcss-modules-local-by-default "^3.0.3" - postcss-modules-scope "^2.2.0" - postcss-modules-values "^3.0.0" - postcss-value-parser "^4.1.0" - schema-utils "^2.7.1" - semver "^7.3.2" - -css-prefers-color-scheme@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz#6f830a2714199d4f0d0d0bb8a27916ed65cff1f4" - integrity sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg== - dependencies: - postcss "^7.0.5" - -css-select-base-adapter@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" - integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== - -css-select@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" - integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== - dependencies: - boolbase "^1.0.0" - css-what "^3.2.1" - domutils "^1.7.0" - nth-check "^1.0.2" - -css-select@^4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.1.3.tgz#a70440f70317f2669118ad74ff105e65849c7067" - integrity sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA== - dependencies: - boolbase "^1.0.0" - css-what "^5.0.0" - domhandler "^4.2.0" - domutils "^2.6.0" - nth-check "^2.0.0" - -css-tree@1.0.0-alpha.37: - version "1.0.0-alpha.37" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" - integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== - dependencies: - mdn-data "2.0.4" - source-map "^0.6.1" - -css-tree@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" - integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== - dependencies: - mdn-data "2.0.14" - source-map "^0.6.1" - -css-what@^3.2.1: - version "3.4.2" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" - integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== - -css-what@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.0.1.tgz#3efa820131f4669a8ac2408f9c32e7c7de9f4cad" - integrity sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg== - -css.escape@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" - integrity sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg== - -css@^2.0.0: - version "2.2.4" - resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" - integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== - dependencies: - inherits "^2.0.3" - source-map "^0.6.1" - source-map-resolve "^0.5.2" - urix "^0.1.0" - -css@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/css/-/css-3.0.0.tgz#4447a4d58fdd03367c516ca9f64ae365cee4aa5d" - integrity sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ== - dependencies: - inherits "^2.0.4" - source-map "^0.6.1" - source-map-resolve "^0.6.0" - -cssdb@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-4.4.0.tgz#3bf2f2a68c10f5c6a08abd92378331ee803cddb0" - integrity sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ== - -cssesc@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703" - integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== - -cssesc@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" - integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== - -cssnano-preset-default@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz#920622b1fc1e95a34e8838203f1397a504f2d3ff" - integrity sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ== - dependencies: - css-declaration-sorter "^4.0.1" - cssnano-util-raw-cache "^4.0.1" - postcss "^7.0.0" - postcss-calc "^7.0.1" - postcss-colormin "^4.0.3" - postcss-convert-values "^4.0.1" - postcss-discard-comments "^4.0.2" - postcss-discard-duplicates "^4.0.2" - postcss-discard-empty "^4.0.1" - postcss-discard-overridden "^4.0.1" - postcss-merge-longhand "^4.0.11" - postcss-merge-rules "^4.0.3" - postcss-minify-font-values "^4.0.2" - postcss-minify-gradients "^4.0.2" - postcss-minify-params "^4.0.2" - postcss-minify-selectors "^4.0.2" - postcss-normalize-charset "^4.0.1" - postcss-normalize-display-values "^4.0.2" - postcss-normalize-positions "^4.0.2" - postcss-normalize-repeat-style "^4.0.2" - postcss-normalize-string "^4.0.2" - postcss-normalize-timing-functions "^4.0.2" - postcss-normalize-unicode "^4.0.1" - postcss-normalize-url "^4.0.1" - postcss-normalize-whitespace "^4.0.2" - postcss-ordered-values "^4.1.2" - postcss-reduce-initial "^4.0.3" - postcss-reduce-transforms "^4.0.2" - postcss-svgo "^4.0.3" - postcss-unique-selectors "^4.0.1" - -cssnano-util-get-arguments@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" - integrity sha512-6RIcwmV3/cBMG8Aj5gucQRsJb4vv4I4rn6YjPbVWd5+Pn/fuG+YseGvXGk00XLkoZkaj31QOD7vMUpNPC4FIuw== - -cssnano-util-get-match@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" - integrity sha512-JPMZ1TSMRUPVIqEalIBNoBtAYbi8okvcFns4O0YIhcdGebeYZK7dMyHJiQ6GqNBA9kE0Hym4Aqym5rPdsV/4Cw== - -cssnano-util-raw-cache@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" - integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== - dependencies: - postcss "^7.0.0" - -cssnano-util-same-parent@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" - integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== - -cssnano@^4.1.10: - version "4.1.11" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.11.tgz#c7b5f5b81da269cb1fd982cb960c1200910c9a99" - integrity sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g== - dependencies: - cosmiconfig "^5.0.0" - cssnano-preset-default "^4.0.8" - is-resolvable "^1.0.0" - postcss "^7.0.0" - -csso@^4.0.2: - version "4.2.0" - resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" - integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== - dependencies: - css-tree "^1.1.2" - -cssom@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" - integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== - -cssom@~0.3.6: - version "0.3.8" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" - integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== - -cssstyle@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" - integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== - dependencies: - cssom "~0.3.6" - -csstype@^3.0.2: - version "3.0.9" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.9.tgz#6410af31b26bd0520933d02cbc64fce9ce3fbf0b" - integrity sha512-rpw6JPxK6Rfg1zLOYCSwle2GFOOsnjmDYDaBwEcwoOg4qlsIVCN789VkBZDJAGi4T07gI4YSutR43t9Zz4Lzuw== - -cyclist@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" - integrity sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A== - -d@1, d@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" - integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== - dependencies: - es5-ext "^0.10.50" - type "^1.0.1" - -damerau-levenshtein@^1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.7.tgz#64368003512a1a6992593741a09a9d31a836f55d" - integrity sha512-VvdQIPGdWP0SqFXghj79Wf/5LArmreyMsGLa6FG6iC4t3j7j5s71TrwWmT/4akbDQIqjfACkLZmjXhA7g2oUZw== - -data-urls@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" - integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== - dependencies: - abab "^2.0.3" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.0.0" - -date-fns@^2.16.1: - version "2.29.2" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.29.2.tgz#0d4b3d0f3dff0f920820a070920f0d9662c51931" - integrity sha512-0VNbwmWJDS/G3ySwFSJA3ayhbURMTJLtwM2DTxf9CWondCnh6DTNlO9JgRSq6ibf4eD0lfMJNBxUdEAHHix+bA== - -dateformat@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-5.0.1.tgz#60a27a2deb339f888ba4532f533e25ac73ca3d19" - integrity sha512-DrcKxOW2am3mtqoJwBTK3OlWcF0QSk1p8diEWwpu3Mf//VdURD7XVaeOV738JvcaBiFfm9o2fisoMhiJH0aYxg== - -debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.8, debug@^2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2: - version "4.3.2" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" - integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== - dependencies: - ms "2.1.2" - -debug@^3.1.1, debug@^3.2.6, debug@^3.2.7: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -debug@^4.3.3, debug@^4.3.4: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== - -decimal.js@^10.2.1: - version "10.3.1" - resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783" - integrity sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ== - -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og== - -decompress-response@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" - integrity sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA== - dependencies: - mimic-response "^1.0.0" - -dedent@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" - integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== - -deep-equal@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" - integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== - 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" - -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - -deep-is@^0.1.3, deep-is@~0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - -deepmerge@^2.1.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-2.2.1.tgz#5d3ff22a01c00f645405a2fbc17d0778a1801170" - integrity sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA== - -deepmerge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" - integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== - -default-gateway@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" - integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== - dependencies: - execa "^1.0.0" - ip-regex "^2.1.0" - -default-shell@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/default-shell/-/default-shell-1.0.1.tgz#752304bddc6174f49eb29cb988feea0b8813c8bc" - integrity sha512-/Os8tTMPSriNHCsVj3VLjMZblIl1sIg8EXz3qg7C5K+y9calfTA/qzlfPvCQ+LEgLWmtZ9wCnzE1w+S6TPPFyQ== - -defer-to-connect@^1.0.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" - integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== - -define-properties@^1.1.2, define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== - dependencies: - object-keys "^1.0.12" - -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA== - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA== - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -del@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" - integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== - dependencies: - "@types/glob" "^7.1.1" - globby "^6.1.0" - is-path-cwd "^2.0.0" - is-path-in-cwd "^2.0.0" - p-map "^2.0.0" - pify "^4.0.1" - rimraf "^2.6.3" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== - -depd@^1.1.2, depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== - -des.js@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" - integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - integrity sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg== - -detect-libc@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.1.tgz#e1897aa88fa6ad197862937fbc0441ef352ee0cd" - integrity sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w== - -detect-newline@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" - integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== - -detect-node@^2.0.4, detect-node@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" - integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== - -detect-port-alt@1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275" - integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q== - dependencies: - address "^1.0.1" - debug "^2.6.0" - -diff-sequences@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" - integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== - -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - -dir-compare@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/dir-compare/-/dir-compare-2.4.0.tgz#785c41dc5f645b34343a4eafc50b79bac7f11631" - integrity sha512-l9hmu8x/rjVC9Z2zmGzkhOEowZvW7pmYws5CWHutg8u1JgvsKWMx7Q/UODeu4djLZ4FgW5besw5yvMQnBHzuCA== - dependencies: - buffer-equal "1.0.0" - colors "1.0.3" - commander "2.9.0" - minimatch "3.0.4" - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -dmg-builder@23.3.3: - version "23.3.3" - resolved "https://registry.yarnpkg.com/dmg-builder/-/dmg-builder-23.3.3.tgz#b37547f8403c3e9f7c60265a93d902f5b0c395ea" - integrity sha512-ECwAjt+ZWyOvddrkDx1xRD6IVUCZb5SV6vSMHZd+Va3G2sUXHrnglR1cGDKRF4oYRQm8SYVrpLZKbi8npyDcAQ== - dependencies: - app-builder-lib "23.3.3" - builder-util "23.3.3" - builder-util-runtime "9.0.3" - fs-extra "^10.0.0" - iconv-lite "^0.6.2" - js-yaml "^4.1.0" - optionalDependencies: - dmg-license "^1.0.11" - -dmg-license@^1.0.11: - version "1.0.11" - resolved "https://registry.yarnpkg.com/dmg-license/-/dmg-license-1.0.11.tgz#7b3bc3745d1b52be7506b4ee80cb61df6e4cd79a" - integrity sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q== - dependencies: - "@types/plist" "^3.0.1" - "@types/verror" "^1.10.3" - ajv "^6.10.0" - crc "^3.8.0" - iconv-corefoundation "^1.1.7" - plist "^3.0.4" - smart-buffer "^4.0.2" - verror "^1.10.0" - -dns-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" - integrity sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg== - -dns-packet@^1.3.1: - version "1.3.4" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.4.tgz#e3455065824a2507ba886c55a89963bb107dec6f" - integrity sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA== - dependencies: - ip "^1.1.0" - safe-buffer "^5.0.1" - -dns-txt@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" - integrity sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ== - dependencies: - buffer-indexof "^1.0.0" - -doctrine@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" - integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== - dependencies: - esutils "^2.0.2" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -dom-accessibility-api@^0.5.6: - version "0.5.8" - resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.8.tgz#414813012e065b5dfa8998b990460c0af12a5421" - integrity sha512-rAfghuBPeJldxqsmZQtBbna4TqMgFe4xhYs24vPULNslbmXUdcga+CXiKWzZxyWw0FCkGKPgmizIysIvsAEN8w== - -dom-converter@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" - integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== - dependencies: - utila "~0.4" - -dom-serializer@0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" - integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== - dependencies: - domelementtype "^2.0.1" - entities "^2.0.0" - -dom-serializer@^1.0.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91" - integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.2.0" - entities "^2.0.0" - -domain-browser@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" - integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== - -domelementtype@1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" - integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== - -domelementtype@^2.0.1, domelementtype@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" - integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== - -domexception@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" - integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== - dependencies: - webidl-conversions "^5.0.0" - -domhandler@^4.0.0, domhandler@^4.2.0: - version "4.2.2" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.2.2.tgz#e825d721d19a86b8c201a35264e226c678ee755f" - integrity sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w== - dependencies: - domelementtype "^2.2.0" - -domutils@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" - integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== - dependencies: - dom-serializer "0" - domelementtype "1" - -domutils@^2.5.2, domutils@^2.6.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" - integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== - dependencies: - dom-serializer "^1.0.1" - domelementtype "^2.2.0" - domhandler "^4.2.0" - -dot-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" - integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -dot-prop@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" - integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== - dependencies: - is-obj "^2.0.0" - -dotenv-expand@5.1.0, dotenv-expand@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" - integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== - -dotenv@8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" - integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== - -dotenv@^9.0.2: - version "9.0.2" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-9.0.2.tgz#dacc20160935a37dea6364aa1bef819fb9b6ab05" - integrity sha512-I9OvvrHp4pIARv4+x9iuewrWycX6CcZtoAu1XrzPxc5UygMJXJZYmBsynku8IkrJwgypE5DGNjDPmPRhDCptUg== - -duplexer3@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.5.tgz#0b5e4d7bad5de8901ea4440624c8e1d20099217e" - integrity sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA== - -duplexer@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" - integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== - -duplexify@^3.4.2, duplexify@^3.6.0: - version "3.7.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" - integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== - dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== - -ejs@^2.6.1: - version "2.7.4" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba" - integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== - -ejs@^3.1.7: - version "3.1.8" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.8.tgz#758d32910c78047585c7ef1f92f9ee041c1c190b" - integrity sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ== - dependencies: - jake "^10.8.5" - -electron-builder@^23.3.3: - version "23.3.3" - resolved "https://registry.yarnpkg.com/electron-builder/-/electron-builder-23.3.3.tgz#88d4e584a99b9e36ca4e8432b1163a1ef877355f" - integrity sha512-mFYYdhoFPKevP6y5uaaF3dusmB2OtQ/HnwwpyOePeU7QDS0SEIAUokQsHUanAiJAZcBqtY7iyLBgX18QybdFFw== - dependencies: - "@types/yargs" "^17.0.1" - app-builder-lib "23.3.3" - builder-util "23.3.3" - builder-util-runtime "9.0.3" - chalk "^4.1.1" - dmg-builder "23.3.3" - fs-extra "^10.0.0" - is-ci "^3.0.0" - lazy-val "^1.0.5" - read-config-file "6.2.0" - update-notifier "^5.1.0" - yargs "^17.0.1" - -electron-is-dev@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/electron-is-dev/-/electron-is-dev-2.0.0.tgz#833487a069b8dad21425c67a19847d9064ab19bd" - integrity sha512-3X99K852Yoqu9AcW50qz3ibYBWY79/pBhlMCab8ToEWS48R0T9tyxRiQhwylE7zQdXrMnx2JKqUJyMPmt5FBqA== - -electron-osx-sign@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/electron-osx-sign/-/electron-osx-sign-0.6.0.tgz#9b69c191d471d9458ef5b1e4fdd52baa059f1bb8" - integrity sha512-+hiIEb2Xxk6eDKJ2FFlpofCnemCbjbT5jz+BKGpVBrRNT3kWTGs4DfNX6IzGwgi33hUcXF+kFs9JW+r6Wc1LRg== - dependencies: - bluebird "^3.5.0" - compare-version "^0.1.2" - debug "^2.6.8" - isbinaryfile "^3.0.2" - minimist "^1.2.0" - plist "^3.0.1" - -electron-publish@23.3.3: - version "23.3.3" - resolved "https://registry.yarnpkg.com/electron-publish/-/electron-publish-23.3.3.tgz#c4125fbb00620acb854f6e994fd3ab3115662ddd" - integrity sha512-1dX17eE5xVXedTxjC+gjsP74oC0+sIHgqysp0ryTlF9+yfQUyXjBk6kcK+zhtBA2SsHMSglDtM+JPxDD/WpPTQ== - dependencies: - "@types/fs-extra" "^9.0.11" - builder-util "23.3.3" - builder-util-runtime "9.0.3" - chalk "^4.1.1" - fs-extra "^10.0.0" - lazy-val "^1.0.5" - mime "^2.5.2" - -electron-to-chromium@^1.3.564, electron-to-chromium@^1.3.857: - version "1.3.864" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.864.tgz#6a993bcc196a2b8b3df84d28d5d4dd912393885f" - integrity sha512-v4rbad8GO6/yVI92WOeU9Wgxc4NA0n4f6P1FvZTY+jyY7JHEhw3bduYu60v3Q1h81Cg6eo4ApZrFPuycwd5hGw== - -electron-updater@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/electron-updater/-/electron-updater-5.3.0.tgz#3ba0d20407911a2edc5a68bee45c5aa2023e9ff8" - integrity sha512-iKEr7yQBcvnQUPnSDYGSWC9t0eF2YbZWeYYYZzYxdl+HiRejXFENjYMnYjoOm2zxyD6Cr2JTHZhp9pqxiXuCOw== - dependencies: - "@types/semver" "^7.3.6" - builder-util-runtime "9.1.1" - fs-extra "^10.0.0" - js-yaml "^4.1.0" - lazy-val "^1.0.5" - lodash.escaperegexp "^4.1.2" - lodash.isequal "^4.5.0" - semver "^7.3.5" - typed-emitter "^2.1.0" - -electron@20.1.0: - version "20.1.0" - resolved "https://registry.yarnpkg.com/electron/-/electron-20.1.0.tgz#2de079adc551dadc21f11d12a37c70873b9ffb40" - integrity sha512-gzl6fdZe5g0qmzCC6Ejxa1Oa8eqUSxs4+QLtrM7SyEVp+mEPJAOoDe0xD8ayRQqeXTBxLK1LFrKtc4c98iufsg== - dependencies: - "@electron/get" "^1.14.1" - "@types/node" "^16.11.26" - extract-zip "^2.0.1" - -elliptic@^6.5.3: - version "6.5.4" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" - integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" - -emittery@^0.7.1: - version "0.7.2" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.7.2.tgz#25595908e13af0f5674ab419396e2fb394cdfa82" - integrity sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ== - -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emoji-regex@^9.0.0: - version "9.2.2" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" - integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== - -emojis-list@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" - integrity sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng== - -emojis-list@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" - integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== - -encodeurl@^1.0.2, encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== - -encoding@^0.1.12: - version "0.1.13" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" - integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== - dependencies: - iconv-lite "^0.6.2" - -end-of-stream@^1.0.0, end-of-stream@^1.1.0: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -enhanced-resolve@^4.3.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec" - integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.5.0" - tapable "^1.0.0" - -enquirer@^2.3.5, enquirer@^2.3.6: - version "2.3.6" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" - integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== - dependencies: - ansi-colors "^4.1.1" - -entities@^2.0.0, entities@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" - integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== - -env-paths@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" - integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== - -err-code@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" - integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== - -errno@^0.1.3, errno@~0.1.7: - version "0.1.8" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" - integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== - dependencies: - prr "~1.0.1" - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -error-stack-parser@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.6.tgz#5a99a707bd7a4c58a797902d48d82803ede6aad8" - integrity sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ== - dependencies: - stackframe "^1.1.1" - -es-abstract@^1.19.0, es-abstract@^1.19.1: - version "1.19.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3" - integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w== - dependencies: - call-bind "^1.0.2" - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - get-intrinsic "^1.1.1" - get-symbol-description "^1.0.0" - has "^1.0.3" - has-symbols "^1.0.2" - internal-slot "^1.0.3" - is-callable "^1.2.4" - is-negative-zero "^2.0.1" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.1" - is-string "^1.0.7" - is-weakref "^1.0.1" - object-inspect "^1.11.0" - object-keys "^1.1.1" - object.assign "^4.1.2" - string.prototype.trimend "^1.0.4" - string.prototype.trimstart "^1.0.4" - unbox-primitive "^1.0.1" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -es5-ext@^0.10.35, es5-ext@^0.10.50: - version "0.10.53" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" - integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== - dependencies: - es6-iterator "~2.0.3" - es6-symbol "~3.1.3" - next-tick "~1.0.0" - -es6-error@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" - integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== - -es6-iterator@2.0.3, es6-iterator@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" - integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== - dependencies: - d "1" - es5-ext "^0.10.35" - es6-symbol "^3.1.1" - -es6-symbol@^3.1.1, es6-symbol@~3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" - integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== - dependencies: - d "^1.0.1" - ext "^1.1.2" - -escalade@^3.0.2, escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escape-goat@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" - integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== - -escape-string-regexp@2.0.0, escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -escodegen@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" - integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== - dependencies: - esprima "^4.0.1" - estraverse "^5.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - -eslint-config-prettier@^8.3.0: - version "8.3.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz#f7471b20b6fe8a9a9254cc684454202886a2dd7a" - integrity sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew== - -eslint-config-react-app@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-6.0.0.tgz#ccff9fc8e36b322902844cbd79197982be355a0e" - integrity sha512-bpoAAC+YRfzq0dsTk+6v9aHm/uqnDwayNAXleMypGl6CpxI9oXXscVHo4fk3eJPIn+rsbtNetB4r/ZIidFIE8A== - dependencies: - confusing-browser-globals "^1.0.10" - -eslint-import-resolver-node@^0.3.6: - version "0.3.6" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd" - integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw== - dependencies: - debug "^3.2.7" - resolve "^1.20.0" - -eslint-module-utils@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.2.tgz#94e5540dd15fe1522e8ffa3ec8db3b7fa7e7a534" - integrity sha512-QG8pcgThYOuqxupd06oYTZoNOGaUdTY1PqK+oS6ElF6vs4pBdk/aYxFVQQXzcrAqp9m7cl7lb2ubazX+g16k2Q== - dependencies: - debug "^3.2.7" - pkg-dir "^2.0.0" - -eslint-plugin-flowtype@^5.2.0: - version "5.10.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-5.10.0.tgz#7764cc63940f215bf3f0bd2d9a1293b2b9b2b4bb" - integrity sha512-vcz32f+7TP+kvTUyMXZmCnNujBQZDNmcqPImw8b9PZ+16w1Qdm6ryRuYZYVaG9xRqqmAPr2Cs9FAX5gN+x/bjw== - dependencies: - lodash "^4.17.15" - string-natural-compare "^3.0.1" - -eslint-plugin-import@^2.22.1: - version "2.24.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.24.2.tgz#2c8cd2e341f3885918ee27d18479910ade7bb4da" - integrity sha512-hNVtyhiEtZmpsabL4neEj+6M5DCLgpYyG9nzJY8lZQeQXEn5UPW1DpUdsMHMXsq98dbNm7nt1w9ZMSVpfJdi8Q== - dependencies: - array-includes "^3.1.3" - array.prototype.flat "^1.2.4" - debug "^2.6.9" - doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.6" - eslint-module-utils "^2.6.2" - find-up "^2.0.0" - has "^1.0.3" - is-core-module "^2.6.0" - minimatch "^3.0.4" - object.values "^1.1.4" - pkg-up "^2.0.0" - read-pkg-up "^3.0.0" - resolve "^1.20.0" - tsconfig-paths "^3.11.0" - -eslint-plugin-jest@^24.1.0: - version "24.5.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-24.5.2.tgz#f71f98f27fd18b50f55246ca090f36d1730e36a6" - integrity sha512-lrI3sGAyZi513RRmP08sIW241Ti/zMnn/6wbE4ZBhb3M2pJ9ztaZMnSKSKKBUfotVdwqU8W1KtD8ao2/FR8DIg== - dependencies: - "@typescript-eslint/experimental-utils" "^4.0.1" - -eslint-plugin-jsx-a11y@^6.3.1: - version "6.4.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.4.1.tgz#a2d84caa49756942f42f1ffab9002436391718fd" - integrity sha512-0rGPJBbwHoGNPU73/QCLP/vveMlM1b1Z9PponxO87jfr6tuH5ligXbDT6nHSSzBC8ovX2Z+BQu7Bk5D/Xgq9zg== - dependencies: - "@babel/runtime" "^7.11.2" - aria-query "^4.2.2" - array-includes "^3.1.1" - ast-types-flow "^0.0.7" - axe-core "^4.0.2" - axobject-query "^2.2.0" - damerau-levenshtein "^1.0.6" - emoji-regex "^9.0.0" - has "^1.0.3" - jsx-ast-utils "^3.1.0" - language-tags "^1.0.5" - -eslint-plugin-prettier@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.0.0.tgz#8b99d1e4b8b24a762472b4567992023619cb98e0" - integrity sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ== - dependencies: - prettier-linter-helpers "^1.0.0" - -eslint-plugin-react-hooks@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.2.0.tgz#8c229c268d468956334c943bb45fc860280f5556" - integrity sha512-623WEiZJqxR7VdxFCKLI6d6LLpwJkGPYKODnkH3D7WpOG5KM8yWueBd8TLsNAetEJNF5iJmolaAKO3F8yzyVBQ== - -eslint-plugin-react@^7.21.5, eslint-plugin-react@^7.26.0: - version "7.26.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.26.1.tgz#41bcfe3e39e6a5ac040971c1af94437c80daa40e" - integrity sha512-Lug0+NOFXeOE+ORZ5pbsh6mSKjBKXDXItUD2sQoT+5Yl0eoT82DqnXeTMfUare4QVCn9QwXbfzO/dBLjLXwVjQ== - dependencies: - array-includes "^3.1.3" - array.prototype.flatmap "^1.2.4" - doctrine "^2.1.0" - estraverse "^5.2.0" - jsx-ast-utils "^2.4.1 || ^3.0.0" - minimatch "^3.0.4" - object.entries "^1.1.4" - object.fromentries "^2.0.4" - object.hasown "^1.0.0" - object.values "^1.1.4" - prop-types "^15.7.2" - resolve "^2.0.0-next.3" - semver "^6.3.0" - string.prototype.matchall "^4.0.5" - -eslint-plugin-testing-library@^3.9.2: - version "3.10.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-testing-library/-/eslint-plugin-testing-library-3.10.2.tgz#609ec2b0369da7cf2e6d9edff5da153cc31d87bd" - integrity sha512-WAmOCt7EbF1XM8XfbCKAEzAPnShkNSwcIsAD2jHdsMUT9mZJPjLCG7pMzbcC8kK366NOuGip8HKLDC+Xk4yIdA== - dependencies: - "@typescript-eslint/experimental-utils" "^3.10.1" - -eslint-scope@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" - integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - -eslint-scope@^5.0.0, eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-utils@^2.0.0, eslint-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" - integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" - integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== - dependencies: - eslint-visitor-keys "^2.0.0" - -eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" - integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== - -eslint-visitor-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" - integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== - -eslint-webpack-plugin@^2.5.2: - version "2.5.4" - resolved "https://registry.yarnpkg.com/eslint-webpack-plugin/-/eslint-webpack-plugin-2.5.4.tgz#473b84932f1a8e2c2b8e66a402d0497bf440b986" - integrity sha512-7rYh0m76KyKSDE+B+2PUQrlNS4HJ51t3WKpkJg6vo2jFMbEPTG99cBV0Dm7LXSHucN4WGCG65wQcRiTFrj7iWw== - dependencies: - "@types/eslint" "^7.2.6" - arrify "^2.0.1" - jest-worker "^26.6.2" - micromatch "^4.0.2" - normalize-path "^3.0.0" - schema-utils "^3.0.0" - -eslint@^7.11.0: - version "7.32.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" - integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== - dependencies: - "@babel/code-frame" "7.12.11" - "@eslint/eslintrc" "^0.4.3" - "@humanwhocodes/config-array" "^0.5.0" - ajv "^6.10.0" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.0.1" - doctrine "^3.0.0" - enquirer "^2.3.5" - escape-string-regexp "^4.0.0" - eslint-scope "^5.1.1" - eslint-utils "^2.1.0" - eslint-visitor-keys "^2.0.0" - espree "^7.3.1" - esquery "^1.4.0" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^5.1.2" - globals "^13.6.0" - ignore "^4.0.6" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - js-yaml "^3.13.1" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.0.4" - natural-compare "^1.4.0" - optionator "^0.9.1" - progress "^2.0.0" - regexpp "^3.1.0" - semver "^7.2.1" - strip-ansi "^6.0.0" - strip-json-comments "^3.1.0" - table "^6.0.9" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" - -espree@^7.3.0, espree@^7.3.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" - integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== - dependencies: - acorn "^7.4.0" - acorn-jsx "^5.3.1" - eslint-visitor-keys "^1.3.0" - -esprima@^4.0.0, esprima@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esquery@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" - integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.1.0, esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0, estraverse@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" - integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== - -estree-walker@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" - integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== - -estree-walker@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" - integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== - -eventemitter3@^4.0.0: - version "4.0.7" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" - integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== - -events@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" - integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== - -eventsource@^1.0.7: - version "1.1.0" - resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.1.0.tgz#00e8ca7c92109e94b0ddf32dac677d841028cfaf" - integrity sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg== - dependencies: - original "^1.0.0" - -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - -exec-sh@^0.3.2: - version "0.3.6" - resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.6.tgz#ff264f9e325519a60cb5e273692943483cca63bc" - integrity sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w== - -execa@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.5.1.tgz#de3fb85cb8d6e91c85bcbceb164581785cb57b36" - integrity sha512-R66dW/hW3I8yV77Wg4xn6zMguRPUgt59VLm5e85NrOF05ZdPn7YOfPBSw0E9epJDvuzwVWEG+HmEaQ4muYuWKQ== - dependencies: - cross-spawn "^4.0.0" - get-stream "^2.2.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -execa@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" - integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== - dependencies: - cross-spawn "^6.0.0" - get-stream "^4.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -execa@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" - integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== - dependencies: - cross-spawn "^7.0.0" - get-stream "^5.0.0" - human-signals "^1.1.1" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.0" - onetime "^5.1.0" - signal-exit "^3.0.2" - strip-final-newline "^2.0.0" - -execa@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" - integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== - 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" - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== - -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA== - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -expect@^26.6.0, expect@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/expect/-/expect-26.6.2.tgz#c6b996bf26bf3fe18b67b2d0f51fc981ba934417" - integrity sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA== - dependencies: - "@jest/types" "^26.6.2" - ansi-styles "^4.0.0" - jest-get-type "^26.3.0" - jest-matcher-utils "^26.6.2" - jest-message-util "^26.6.2" - jest-regex-util "^26.0.0" - -express@^4.17.1: - version "4.17.1" - resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" - integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== - dependencies: - accepts "~1.3.7" - array-flatten "1.1.1" - body-parser "1.19.0" - content-disposition "0.5.3" - content-type "~1.0.4" - cookie "0.4.0" - cookie-signature "1.0.6" - debug "2.6.9" - depd "~1.1.2" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "~1.1.2" - fresh "0.5.2" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "~2.3.0" - parseurl "~1.3.3" - path-to-regexp "0.1.7" - proxy-addr "~2.0.5" - qs "6.7.0" - range-parser "~1.2.1" - safe-buffer "5.1.2" - send "0.17.1" - serve-static "1.14.1" - setprototypeof "1.1.1" - statuses "~1.5.0" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" - -ext@^1.1.2: - version "1.6.0" - resolved "https://registry.yarnpkg.com/ext/-/ext-1.6.0.tgz#3871d50641e874cc172e2b53f919842d19db4c52" - integrity sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg== - dependencies: - type "^2.5.0" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q== - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -extract-zip@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" - integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg== - dependencies: - debug "^4.1.1" - get-stream "^5.1.0" - yauzl "^2.10.0" - optionalDependencies: - "@types/yauzl" "^2.9.1" - -extsprintf@^1.2.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" - integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-diff@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" - integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== - -fast-glob@^3.1.1: - version "3.2.7" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" - integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q== - 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" - -fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== - -fastq@^1.6.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" - integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== - dependencies: - reusify "^1.0.4" - -faye-websocket@^0.11.3: - version "0.11.4" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" - integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== - dependencies: - websocket-driver ">=0.5.1" - -fb-watchman@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" - integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== - dependencies: - bser "2.1.1" - -fbemitter@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/fbemitter/-/fbemitter-3.0.0.tgz#00b2a1af5411254aab416cd75f9e6289bee4bff3" - integrity sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw== - dependencies: - fbjs "^3.0.0" - -fbjs-css-vars@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz#216551136ae02fe255932c3ec8775f18e2c078b8" - integrity sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ== - -fbjs@^3.0.0, fbjs@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-3.0.4.tgz#e1871c6bd3083bac71ff2da868ad5067d37716c6" - integrity sha512-ucV0tDODnGV3JCnnkmoszb5lf4bNpzjv80K41wd4k798Etq+UYD0y0TIfalLjZoKgjive6/adkRnszwapiDgBQ== - dependencies: - cross-fetch "^3.1.5" - fbjs-css-vars "^1.0.0" - loose-envify "^1.0.0" - object-assign "^4.1.0" - promise "^7.1.1" - setimmediate "^1.0.5" - ua-parser-js "^0.7.30" - -fd-slicer@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" - integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g== - dependencies: - pend "~1.2.0" - -figgy-pudding@^3.5.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" - integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== - -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -file-loader@6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.1.1.tgz#a6f29dfb3f5933a1c350b2dbaa20ac5be0539baa" - integrity sha512-Klt8C4BjWSXYQAfhpYYkG4qHNTna4toMHEbWrI5IuVoxbU6uiDKeKAP99R8mmbJi3lvewn/jQBOgU4+NS3tDQw== - dependencies: - loader-utils "^2.0.0" - schema-utils "^3.0.0" - -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - -filelist@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" - integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== - dependencies: - minimatch "^5.0.1" - -filesize@6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.1.0.tgz#e81bdaa780e2451d714d71c0d7a4f3238d37ad00" - integrity sha512-LpCHtPQ3sFx67z+uh2HnSyWSLLu5Jxo21795uRDuar/EOuYWXib5EmPaGIBuSnRqH2IODiKA2k5re/K9OnN/Yg== - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ== - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -finalhandler@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" - integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.3" - statuses "~1.5.0" - unpipe "~1.0.0" - -find-cache-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" - integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== - dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" - -find-cache-dir@^3.3.1: - version "3.3.2" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" - integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== - dependencies: - commondir "^1.0.1" - make-dir "^3.0.2" - pkg-dir "^4.1.0" - -find-up@4.1.0, find-up@^4.0.0, find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -find-up@^2.0.0, find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - integrity sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ== - dependencies: - locate-path "^2.0.0" - -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - -fix-path@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/fix-path/-/fix-path-3.0.0.tgz#c6b82fd5f5928e520b392a63565ebfef0ddf037e" - integrity sha512-opGAl4+ip5jUikHR2C8Jo7czZ80pz8EK/0gMlAZu7xgDmBqIynlX8SMYg9KowYjAU6HT0nxsSJEWru0u+n+N2Q== - dependencies: - shell-path "^2.1.0" - -flat-cache@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== - dependencies: - flatted "^3.1.0" - rimraf "^3.0.2" - -flatted@^3.1.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.2.tgz#64bfed5cb68fe3ca78b3eb214ad97b63bedce561" - integrity sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA== - -flatten@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b" - integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== - -flush-write-stream@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" - integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== - dependencies: - inherits "^2.0.3" - readable-stream "^2.3.6" - -flux@^4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/flux/-/flux-4.0.3.tgz#573b504a24982c4768fdfb59d8d2ea5637d72ee7" - integrity sha512-yKAbrp7JhZhj6uiT1FTuVMlIAT1J4jqEyBpFApi1kxpGZCvacMVc/t1pMQyotqHhAgvoE3bNvAykhCo2CLjnYw== - dependencies: - fbemitter "^3.0.0" - fbjs "^3.0.1" - -follow-redirects@^1.0.0, follow-redirects@^1.14.0: - version "1.14.4" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.4.tgz#838fdf48a8bbdd79e52ee51fb1c94e3ed98b9379" - integrity sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g== - -follow-redirects@^1.14.7: - version "1.15.1" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.1.tgz#0ca6a452306c9b276e4d3127483e29575e207ad5" - integrity sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA== - -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ== - -fork-ts-checker-webpack-plugin@4.1.6: - version "4.1.6" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz#5055c703febcf37fa06405d400c122b905167fc5" - integrity sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw== - dependencies: - "@babel/code-frame" "^7.5.5" - chalk "^2.4.1" - micromatch "^3.1.10" - minimatch "^3.0.4" - semver "^5.6.0" - tapable "^1.0.0" - worker-rpc "^0.1.0" - -form-data@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" - integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - -form-data@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" - integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - -formik@^2.2.9: - version "2.2.9" - resolved "https://registry.yarnpkg.com/formik/-/formik-2.2.9.tgz#8594ba9c5e2e5cf1f42c5704128e119fc46232d0" - integrity sha512-LQLcISMmf1r5at4/gyJigGn0gOwFbeEAlji+N9InZF6LIMXnFNkO42sCI8Jt84YZggpD4cPWObAZaxpEFtSzNA== - dependencies: - deepmerge "^2.1.1" - hoist-non-react-statics "^3.3.0" - lodash "^4.17.21" - lodash-es "^4.17.21" - react-fast-compare "^2.0.1" - tiny-warning "^1.0.2" - tslib "^1.10.0" - -forwarded@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" - integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA== - dependencies: - map-cache "^0.2.2" - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== - -from2@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" - integrity sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g== - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.0" - -fs-extra@^10.0.0, fs-extra@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" - integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-extra@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" - integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" - integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@^9.0.0, fs-extra@^9.0.1: - version "9.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" - integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== - dependencies: - at-least-node "^1.0.0" - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-minipass@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" - integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== - dependencies: - minipass "^3.0.0" - -fs-write-stream-atomic@^1.0.8: - version "1.0.10" - resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" - integrity sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA== - dependencies: - graceful-fs "^4.1.2" - iferr "^0.1.5" - imurmurhash "^0.1.4" - readable-stream "1 || 2" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - -fsevents@^1.2.7: - version "1.2.13" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" - integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== - dependencies: - bindings "^1.5.0" - nan "^2.12.1" - -fsevents@^2.1.2, fsevents@^2.1.3, fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== - -gauge@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-3.0.2.tgz#03bf4441c044383908bcfa0656ad91803259b395" - integrity sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q== - dependencies: - aproba "^1.0.3 || ^2.0.0" - color-support "^1.1.2" - console-control-strings "^1.0.0" - has-unicode "^2.0.1" - object-assign "^4.1.1" - signal-exit "^3.0.0" - string-width "^4.2.3" - strip-ansi "^6.0.1" - wide-align "^1.1.2" - -gauge@^4.0.3: - version "4.0.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" - integrity sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg== - 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" - -gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - -get-caller-file@^2.0.1, get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" - integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - -get-own-enumerable-property-symbols@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" - integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== - -get-package-type@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" - integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== - -get-stream@^2.2.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de" - integrity sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA== - dependencies: - object-assign "^4.0.1" - pinkie-promise "^2.0.0" - -get-stream@^4.0.0, get-stream@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - -get-stream@^5.0.0, get-stream@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" - integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== - dependencies: - pump "^3.0.0" - -get-stream@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - -get-symbol-description@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" - integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.1" - -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA== - -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - integrity sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA== - dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - -glob-parent@^5.1.2, glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: - version "7.2.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" - 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" - -global-agent@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/global-agent/-/global-agent-3.0.0.tgz#ae7cd31bd3583b93c5a16437a1afe27cc33a1ab6" - integrity sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q== - dependencies: - boolean "^3.0.1" - es6-error "^4.1.1" - matcher "^3.0.0" - roarr "^2.15.3" - semver "^7.3.2" - serialize-error "^7.0.1" - -global-dirs@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.0.tgz#70a76fe84ea315ab37b1f5576cbde7d48ef72686" - integrity sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA== - dependencies: - ini "2.0.0" - -global-modules@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" - integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== - dependencies: - global-prefix "^3.0.0" - -global-prefix@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" - integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== - dependencies: - ini "^1.3.5" - kind-of "^6.0.2" - which "^1.3.1" - -global-tunnel-ng@^2.7.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz#d03b5102dfde3a69914f5ee7d86761ca35d57d8f" - integrity sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg== - dependencies: - encodeurl "^1.0.2" - lodash "^4.17.10" - npm-conf "^1.1.3" - tunnel "^0.0.6" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^13.6.0, globals@^13.9.0: - version "13.11.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.11.0.tgz#40ef678da117fe7bd2e28f1fab24951bd0255be7" - integrity sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g== - dependencies: - type-fest "^0.20.2" - -globalthis@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" - integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== - dependencies: - define-properties "^1.1.3" - -globby@11.0.1: - version "11.0.1" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.1.tgz#9a2bf107a068f3ffeabc49ad702c79ede8cfd357" - integrity sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.1.1" - ignore "^5.1.4" - merge2 "^1.3.0" - slash "^3.0.0" - -globby@^11.0.3: - version "11.0.4" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5" - integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.1.1" - ignore "^5.1.4" - merge2 "^1.3.0" - slash "^3.0.0" - -globby@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" - integrity sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw== - dependencies: - array-union "^1.0.1" - glob "^7.0.3" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -goober@^2.0.35: - version "2.0.41" - resolved "https://registry.yarnpkg.com/goober/-/goober-2.0.41.tgz#0a3d786ff9917bcf2a096eef703bf717838cbec9" - integrity sha512-kwjegMT5018zWydhOQlQneCgCtrKJaPsru7TaBWmTYV0nsMeUrM6L6O8JmNYb9UbPMgWcmtf+9p4Y3oJabIH1A== - -got@^9.6.0: - version "9.6.0" - resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" - integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== - dependencies: - "@sindresorhus/is" "^0.14.0" - "@szmarczak/http-timer" "^1.1.2" - cacheable-request "^6.0.0" - decompress-response "^3.3.0" - duplexer3 "^0.1.4" - get-stream "^4.1.0" - lowercase-keys "^1.0.1" - mimic-response "^1.0.1" - p-cancelable "^1.0.0" - to-readable-stream "^1.0.0" - url-parse-lax "^3.0.0" - -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4: - version "4.2.8" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" - integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== - -graceful-fs@^4.2.6: - version "4.2.10" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" - integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== - -"graceful-readlink@>= 1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" - integrity sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w== - -growly@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" - integrity sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw== - -gzip-size@5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274" - integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA== - dependencies: - duplexer "^0.1.1" - pify "^4.0.1" - -handle-thing@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" - integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== - -harmony-reflect@^1.4.6: - version "1.6.2" - resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.2.tgz#31ecbd32e648a34d030d86adb67d4d47547fe710" - integrity sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g== - -has-bigints@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" - integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-symbols@^1.0.1, has-symbols@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" - integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== - -has-tostringtag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" - integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== - dependencies: - has-symbols "^1.0.2" - -has-unicode@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q== - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw== - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ== - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ== - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -has-yarn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" - integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== - -has@^1.0.0, has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -hash-base@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" - integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== - dependencies: - inherits "^2.0.4" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -he@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== - -hex-color-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" - integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== - -history@^4.9.0: - version "4.10.1" - resolved "https://registry.yarnpkg.com/history/-/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3" - integrity sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew== - dependencies: - "@babel/runtime" "^7.1.2" - loose-envify "^1.2.0" - resolve-pathname "^3.0.0" - tiny-invariant "^1.0.2" - tiny-warning "^1.0.0" - value-equal "^1.0.1" - -hmac-drbg@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.0: - version "3.3.2" - resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" - integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== - dependencies: - react-is "^16.7.0" - -hoopy@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d" - integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ== - -hosted-git-info@^2.1.4: - version "2.8.9" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" - integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== - -hosted-git-info@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" - integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== - dependencies: - lru-cache "^6.0.0" - -hpack.js@^2.1.6: - version "2.1.6" - resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" - integrity sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ== - dependencies: - inherits "^2.0.1" - obuf "^1.0.0" - readable-stream "^2.0.1" - wbuf "^1.1.0" - -hsl-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" - integrity sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A== - -hsla-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" - integrity sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA== - -html-encoding-sniffer@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" - integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== - dependencies: - whatwg-encoding "^1.0.5" - -html-entities@^1.2.1, html-entities@^1.3.1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.4.0.tgz#cfbd1b01d2afaf9adca1b10ae7dffab98c71d2dc" - integrity sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA== - -html-escaper@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== - -html-minifier-terser@^5.0.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#922e96f1f3bb60832c2634b79884096389b1f054" - integrity sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg== - dependencies: - camel-case "^4.1.1" - clean-css "^4.2.3" - commander "^4.1.1" - he "^1.2.0" - param-case "^3.0.3" - relateurl "^0.2.7" - terser "^4.6.3" - -html-webpack-plugin@4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.5.0.tgz#625097650886b97ea5dae331c320e3238f6c121c" - integrity sha512-MouoXEYSjTzCrjIxWwg8gxL5fE2X2WZJLmBYXlaJhQUH5K/b5OrqmV7T4dB7iu0xkmJ6JlUuV6fFVtnqbPopZw== - dependencies: - "@types/html-minifier-terser" "^5.0.0" - "@types/tapable" "^1.0.5" - "@types/webpack" "^4.41.8" - html-minifier-terser "^5.0.1" - loader-utils "^1.2.3" - lodash "^4.17.15" - pretty-error "^2.1.1" - tapable "^1.1.3" - util.promisify "1.0.0" - -htmlparser2@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" - integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.0.0" - domutils "^2.5.2" - entities "^2.0.0" - -http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" - integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== - -http-deceiver@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" - integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== - -http-errors@1.7.2, http-errors@~1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" - integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" - integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - -http-parser-js@>=0.5.1: - version "0.5.3" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.3.tgz#01d2709c79d41698bb01d4decc5e9da4e4a033d9" - integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg== - -http-proxy-agent@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" - integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== - dependencies: - "@tootallnate/once" "1" - agent-base "6" - debug "4" - -http-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" - integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== - dependencies: - "@tootallnate/once" "2" - agent-base "6" - debug "4" - -http-proxy-middleware@0.19.1: - version "0.19.1" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" - integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== - dependencies: - http-proxy "^1.17.0" - is-glob "^4.0.0" - lodash "^4.17.11" - micromatch "^3.1.10" - -http-proxy@^1.17.0: - version "1.18.1" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" - integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== - dependencies: - eventemitter3 "^4.0.0" - follow-redirects "^1.0.0" - requires-port "^1.0.0" - -https-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" - integrity sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg== - -https-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" - integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== - dependencies: - agent-base "6" - debug "4" - -human-signals@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" - integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== - -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - -humanize-ms@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" - integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== - dependencies: - ms "^2.0.0" - -husky@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/husky/-/husky-7.0.2.tgz#21900da0f30199acca43a46c043c4ad84ae88dff" - integrity sha512-8yKEWNX4z2YsofXAMT7KvA1g8p+GxtB1ffV8XtpAEGuXNAbCV5wdNKH+qTpw8SM9fh4aMPDR+yQuKfgnreyZlg== - -iconv-corefoundation@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/iconv-corefoundation/-/iconv-corefoundation-1.1.7.tgz#31065e6ab2c9272154c8b0821151e2c88f1b002a" - integrity sha512-T10qvkw0zz4wnm560lOEg0PovVqUXuOFhhHAkixw8/sycy7TJt7v/RrkEKEQnAw2viPSJu6iAkErxnzR0g8PpQ== - dependencies: - cli-truncate "^2.1.0" - node-addon-api "^1.6.3" - -iconv-lite@0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -iconv-lite@^0.6.2: - version "0.6.3" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" - integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== - dependencies: - safer-buffer ">= 2.1.2 < 3.0.0" - -icss-utils@^4.0.0, icss-utils@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" - integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== - dependencies: - postcss "^7.0.14" - -identity-obj-proxy@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14" - integrity sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA== - dependencies: - harmony-reflect "^1.4.6" - -ieee754@^1.1.13, ieee754@^1.1.4, ieee754@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -iferr@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" - integrity sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA== - -ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== - -ignore@^5.1.4, ignore@^5.1.8: - version "5.1.8" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" - integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== - -immer@8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/immer/-/immer-8.0.1.tgz#9c73db683e2b3975c424fb0572af5889877ae656" - integrity sha512-aqXhGP7//Gui2+UrEtvxZxSquQVXTpZ7KDxfCcKAF3Vysvw0CViVaW9RZ1j1xlIYqaaaipBoqdqeibkc18PNvA== - -import-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" - integrity sha512-Ew5AZzJQFqrOV5BTW3EIoHAnoie1LojZLXKcCQ/yTRyVZosBhK1x1ViYjHGf5pAFOq8ZyChZp6m/fSN7pJyZtg== - dependencies: - import-from "^2.1.0" - -import-fresh@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" - integrity sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg== - dependencies: - caller-path "^2.0.0" - resolve-from "^3.0.0" - -import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-from@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" - integrity sha512-0vdnLL2wSGnhlRmzHJAg5JHjt1l2vYhzJ7tNLGbeVg0fse56tpGaH0uzH+r9Slej+BSXXEHvBKDEnVSLLE9/+w== - dependencies: - resolve-from "^3.0.0" - -import-lazy@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" - integrity sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A== - -import-local@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" - integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== - dependencies: - pkg-dir "^3.0.0" - resolve-cwd "^2.0.0" - -import-local@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.3.tgz#4d51c2c495ca9393da259ec66b62e022920211e0" - integrity sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA== - dependencies: - pkg-dir "^4.2.0" - resolve-cwd "^3.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== - -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - -indexes-of@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" - integrity sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA== - -infer-owner@^1.0.3, infer-owner@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" - integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -inherits@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - integrity sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA== - -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== - -ini@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" - integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== - -ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: - version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - -internal-ip@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" - integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== - dependencies: - default-gateway "^4.2.0" - ipaddr.js "^1.9.0" - -internal-slot@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" - integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== - dependencies: - get-intrinsic "^1.1.0" - has "^1.0.3" - side-channel "^1.0.4" - -ip-regex@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" - integrity sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw== - -ip@^1.1.0, ip@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" - integrity sha512-rBtCAQAJm8A110nbwn6YdveUnuZH3WrC36IwkRXxDnq53JvXA2NVQvB7IHyKomxK1MJ4VDNw3UtFDdXQ+AvLYA== - -ip@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.0.tgz#4cf4ab182fee2314c75ede1276f8c80b479936da" - integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ== - -ipaddr.js@1.9.1, ipaddr.js@^1.9.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - -is-absolute-url@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" - integrity sha512-vOx7VprsKyllwjSkLV79NIhpyLfr3jAp7VaTCMXOJHu4m0Ew1CZ2fcjASwmV1jI3BWuWHB013M48eyeldk9gYg== - -is-absolute-url@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" - integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A== - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" - -is-arguments@^1.0.4: - version "1.1.1" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" - integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== - -is-arrayish@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" - integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== - -is-bigint@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" - integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== - dependencies: - has-bigints "^1.0.1" - -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - integrity sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q== - dependencies: - binary-extensions "^1.0.0" - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-boolean-object@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" - integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - -is-callable@^1.1.4, is-callable@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" - integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== - -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== - dependencies: - ci-info "^2.0.0" - -is-ci@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.1.tgz#db6ecbed1bd659c43dac0f45661e7674103d1867" - integrity sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ== - dependencies: - ci-info "^3.2.0" - -is-color-stop@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" - integrity sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA== - dependencies: - css-color-names "^0.0.4" - hex-color-regex "^1.1.0" - hsl-regex "^1.0.0" - hsla-regex "^1.0.0" - rgb-regex "^1.0.1" - rgba-regex "^1.0.0" - -is-core-module@^2.0.0, is-core-module@^2.2.0, is-core-module@^2.6.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.7.0.tgz#3c0ef7d31b4acfc574f80c58409d568a836848e3" - integrity sha512-ByY+tjCciCr+9nLryBYcSD50EOGWt95c7tIsKTG1J2ixKKXPvF7Ej3AVd+UfDydAJom3biBGDBALaO79ktwgEQ== - dependencies: - has "^1.0.3" - -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg== - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - -is-date-object@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" - integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== - dependencies: - has-tostringtag "^1.0.0" - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-directory@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" - integrity sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw== - -is-docker@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" - integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - -is-extglob@^2.1.0, is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-generator-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" - integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== - -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - integrity sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw== - dependencies: - is-extglob "^2.1.0" - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-installed-globally@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" - integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== - dependencies: - global-dirs "^3.0.0" - is-path-inside "^3.0.2" - -is-lambda@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" - integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== - -is-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" - integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g== - -is-negative-zero@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" - integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== - -is-npm@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-5.0.0.tgz#43e8d65cc56e1b67f8d47262cf667099193f45a8" - integrity sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA== - -is-number-object@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0" - integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g== - dependencies: - has-tostringtag "^1.0.0" - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg== - dependencies: - kind-of "^3.0.2" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-obj@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" - integrity sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg== - -is-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" - integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== - -is-path-cwd@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" - integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== - -is-path-in-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" - integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== - dependencies: - is-path-inside "^2.1.0" - -is-path-inside@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" - integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== - dependencies: - path-is-inside "^1.0.2" - -is-path-inside@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - -is-plain-obj@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== - -is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-potential-custom-element-name@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" - integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== - -is-regex@^1.0.4, is-regex@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" - integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" - integrity sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA== - -is-resolvable@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" - integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== - -is-root@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" - integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== - -is-shared-array-buffer@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6" - integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA== - -is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -is-string@^1.0.5, is-string@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" - integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== - dependencies: - has-tostringtag "^1.0.0" - -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" - integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== - dependencies: - has-symbols "^1.0.2" - -is-typedarray@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== - -is-weakref@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.1.tgz#842dba4ec17fa9ac9850df2d6efbc1737274f2a2" - integrity sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ== - dependencies: - call-bind "^1.0.0" - -is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw== - -is-wsl@^2.1.1, is-wsl@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== - dependencies: - is-docker "^2.0.0" - -is-yarn-global@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" - integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== - -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== - -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== - -isbinaryfile@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.3.tgz#5d6def3edebf6e8ca8cae9c30183a804b5f8be80" - integrity sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw== - dependencies: - buffer-alloc "^1.2.0" - -isbinaryfile@^4.0.10: - version "4.0.10" - resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.10.tgz#0c5b5e30c2557a2f06febd37b7322946aaee42b3" - integrity sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA== - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== - -istanbul-lib-coverage@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" - integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== - -istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" - integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== - dependencies: - "@babel/core" "^7.7.5" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.0.0" - semver "^6.3.0" - -istanbul-lib-report@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" - integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== - dependencies: - istanbul-lib-coverage "^3.0.0" - make-dir "^3.0.0" - supports-color "^7.1.0" - -istanbul-lib-source-maps@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9" - integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg== - dependencies: - debug "^4.1.1" - istanbul-lib-coverage "^3.0.0" - source-map "^0.6.1" - -istanbul-reports@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.3.tgz#974d682037f6d12b15dc55f9a2a5f8f1ea923831" - integrity sha512-0i77ZFLsb9U3DHi22WzmIngVzfoyxxbQcZRqlF3KoKmCJGq9nhFHoGi8FqBztN2rE8w6hURnZghetn0xpkVb6A== - dependencies: - html-escaper "^2.0.0" - istanbul-lib-report "^3.0.0" - -jake@^10.8.5: - version "10.8.5" - resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46" - integrity sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw== - dependencies: - async "^3.2.3" - chalk "^4.0.2" - filelist "^1.0.1" - minimatch "^3.0.4" - -jest-changed-files@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-26.6.2.tgz#f6198479e1cc66f22f9ae1e22acaa0b429c042d0" - integrity sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ== - dependencies: - "@jest/types" "^26.6.2" - execa "^4.0.0" - throat "^5.0.0" - -jest-circus@26.6.0: - version "26.6.0" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-26.6.0.tgz#7d9647b2e7f921181869faae1f90a2629fd70705" - integrity sha512-L2/Y9szN6FJPWFK8kzWXwfp+FOR7xq0cUL4lIsdbIdwz3Vh6P1nrpcqOleSzr28zOtSHQNV9Z7Tl+KkuK7t5Ng== - dependencies: - "@babel/traverse" "^7.1.0" - "@jest/environment" "^26.6.0" - "@jest/test-result" "^26.6.0" - "@jest/types" "^26.6.0" - "@types/babel__traverse" "^7.0.4" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - dedent "^0.7.0" - expect "^26.6.0" - is-generator-fn "^2.0.0" - jest-each "^26.6.0" - jest-matcher-utils "^26.6.0" - jest-message-util "^26.6.0" - jest-runner "^26.6.0" - jest-runtime "^26.6.0" - jest-snapshot "^26.6.0" - jest-util "^26.6.0" - pretty-format "^26.6.0" - stack-utils "^2.0.2" - throat "^5.0.0" - -jest-cli@^26.6.0: - version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-26.6.3.tgz#43117cfef24bc4cd691a174a8796a532e135e92a" - integrity sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg== - dependencies: - "@jest/core" "^26.6.3" - "@jest/test-result" "^26.6.2" - "@jest/types" "^26.6.2" - chalk "^4.0.0" - exit "^0.1.2" - graceful-fs "^4.2.4" - import-local "^3.0.2" - is-ci "^2.0.0" - jest-config "^26.6.3" - jest-util "^26.6.2" - jest-validate "^26.6.2" - prompts "^2.0.1" - yargs "^15.4.1" - -jest-config@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-26.6.3.tgz#64f41444eef9eb03dc51d5c53b75c8c71f645349" - integrity sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg== - dependencies: - "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^26.6.3" - "@jest/types" "^26.6.2" - babel-jest "^26.6.3" - chalk "^4.0.0" - deepmerge "^4.2.2" - glob "^7.1.1" - graceful-fs "^4.2.4" - jest-environment-jsdom "^26.6.2" - jest-environment-node "^26.6.2" - jest-get-type "^26.3.0" - jest-jasmine2 "^26.6.3" - jest-regex-util "^26.0.0" - jest-resolve "^26.6.2" - jest-util "^26.6.2" - jest-validate "^26.6.2" - micromatch "^4.0.2" - pretty-format "^26.6.2" - -jest-diff@^26.0.0, jest-diff@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394" - integrity sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA== - dependencies: - chalk "^4.0.0" - diff-sequences "^26.6.2" - jest-get-type "^26.3.0" - pretty-format "^26.6.2" - -jest-docblock@^26.0.0: - version "26.0.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-26.0.0.tgz#3e2fa20899fc928cb13bd0ff68bd3711a36889b5" - integrity sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w== - dependencies: - detect-newline "^3.0.0" - -jest-each@^26.6.0, jest-each@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-26.6.2.tgz#02526438a77a67401c8a6382dfe5999952c167cb" - integrity sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A== - dependencies: - "@jest/types" "^26.6.2" - chalk "^4.0.0" - jest-get-type "^26.3.0" - jest-util "^26.6.2" - pretty-format "^26.6.2" - -jest-environment-jsdom@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz#78d09fe9cf019a357009b9b7e1f101d23bd1da3e" - integrity sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q== - dependencies: - "@jest/environment" "^26.6.2" - "@jest/fake-timers" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - jest-mock "^26.6.2" - jest-util "^26.6.2" - jsdom "^16.4.0" - -jest-environment-node@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-26.6.2.tgz#824e4c7fb4944646356f11ac75b229b0035f2b0c" - integrity sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag== - dependencies: - "@jest/environment" "^26.6.2" - "@jest/fake-timers" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - jest-mock "^26.6.2" - jest-util "^26.6.2" - -jest-get-type@^26.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" - integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== - -jest-haste-map@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.6.2.tgz#dd7e60fe7dc0e9f911a23d79c5ff7fb5c2cafeaa" - integrity sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w== - dependencies: - "@jest/types" "^26.6.2" - "@types/graceful-fs" "^4.1.2" - "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.4" - jest-regex-util "^26.0.0" - jest-serializer "^26.6.2" - jest-util "^26.6.2" - jest-worker "^26.6.2" - micromatch "^4.0.2" - sane "^4.0.3" - walker "^1.0.7" - optionalDependencies: - fsevents "^2.1.2" - -jest-jasmine2@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz#adc3cf915deacb5212c93b9f3547cd12958f2edd" - integrity sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg== - dependencies: - "@babel/traverse" "^7.1.0" - "@jest/environment" "^26.6.2" - "@jest/source-map" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - expect "^26.6.2" - is-generator-fn "^2.0.0" - jest-each "^26.6.2" - jest-matcher-utils "^26.6.2" - jest-message-util "^26.6.2" - jest-runtime "^26.6.3" - jest-snapshot "^26.6.2" - jest-util "^26.6.2" - pretty-format "^26.6.2" - throat "^5.0.0" - -jest-leak-detector@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz#7717cf118b92238f2eba65054c8a0c9c653a91af" - integrity sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg== - dependencies: - jest-get-type "^26.3.0" - pretty-format "^26.6.2" - -jest-matcher-utils@^26.6.0, jest-matcher-utils@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz#8e6fd6e863c8b2d31ac6472eeb237bc595e53e7a" - integrity sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw== - dependencies: - chalk "^4.0.0" - jest-diff "^26.6.2" - jest-get-type "^26.3.0" - pretty-format "^26.6.2" - -jest-message-util@^26.6.0, jest-message-util@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.6.2.tgz#58173744ad6fc0506b5d21150b9be56ef001ca07" - integrity sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA== - dependencies: - "@babel/code-frame" "^7.0.0" - "@jest/types" "^26.6.2" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.4" - micromatch "^4.0.2" - pretty-format "^26.6.2" - slash "^3.0.0" - stack-utils "^2.0.2" - -jest-mock@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-26.6.2.tgz#d6cb712b041ed47fe0d9b6fc3474bc6543feb302" - integrity sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew== - dependencies: - "@jest/types" "^26.6.2" - "@types/node" "*" - -jest-pnp-resolver@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" - integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== - -jest-regex-util@^26.0.0: - version "26.0.0" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28" - integrity sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A== - -jest-resolve-dependencies@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz#6680859ee5d22ee5dcd961fe4871f59f4c784fb6" - integrity sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg== - dependencies: - "@jest/types" "^26.6.2" - jest-regex-util "^26.0.0" - jest-snapshot "^26.6.2" - -jest-resolve@26.6.0: - version "26.6.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.6.0.tgz#070fe7159af87b03e50f52ea5e17ee95bbee40e1" - integrity sha512-tRAz2bwraHufNp+CCmAD8ciyCpXCs1NQxB5EJAmtCFy6BN81loFEGWKzYu26Y62lAJJe4X4jg36Kf+NsQyiStQ== - dependencies: - "@jest/types" "^26.6.0" - chalk "^4.0.0" - graceful-fs "^4.2.4" - jest-pnp-resolver "^1.2.2" - jest-util "^26.6.0" - read-pkg-up "^7.0.1" - resolve "^1.17.0" - slash "^3.0.0" - -jest-resolve@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.6.2.tgz#a3ab1517217f469b504f1b56603c5bb541fbb507" - integrity sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ== - dependencies: - "@jest/types" "^26.6.2" - chalk "^4.0.0" - graceful-fs "^4.2.4" - jest-pnp-resolver "^1.2.2" - jest-util "^26.6.2" - read-pkg-up "^7.0.1" - resolve "^1.18.1" - slash "^3.0.0" - -jest-runner@^26.6.0, jest-runner@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-26.6.3.tgz#2d1fed3d46e10f233fd1dbd3bfaa3fe8924be159" - integrity sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ== - dependencies: - "@jest/console" "^26.6.2" - "@jest/environment" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - chalk "^4.0.0" - emittery "^0.7.1" - exit "^0.1.2" - graceful-fs "^4.2.4" - jest-config "^26.6.3" - jest-docblock "^26.0.0" - jest-haste-map "^26.6.2" - jest-leak-detector "^26.6.2" - jest-message-util "^26.6.2" - jest-resolve "^26.6.2" - jest-runtime "^26.6.3" - jest-util "^26.6.2" - jest-worker "^26.6.2" - source-map-support "^0.5.6" - throat "^5.0.0" - -jest-runtime@^26.6.0, jest-runtime@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-26.6.3.tgz#4f64efbcfac398331b74b4b3c82d27d401b8fa2b" - integrity sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw== - dependencies: - "@jest/console" "^26.6.2" - "@jest/environment" "^26.6.2" - "@jest/fake-timers" "^26.6.2" - "@jest/globals" "^26.6.2" - "@jest/source-map" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/transform" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/yargs" "^15.0.0" - chalk "^4.0.0" - cjs-module-lexer "^0.6.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.3" - graceful-fs "^4.2.4" - jest-config "^26.6.3" - jest-haste-map "^26.6.2" - jest-message-util "^26.6.2" - jest-mock "^26.6.2" - jest-regex-util "^26.0.0" - jest-resolve "^26.6.2" - jest-snapshot "^26.6.2" - jest-util "^26.6.2" - jest-validate "^26.6.2" - slash "^3.0.0" - strip-bom "^4.0.0" - yargs "^15.4.1" - -jest-serializer@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.6.2.tgz#d139aafd46957d3a448f3a6cdabe2919ba0742d1" - integrity sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g== - dependencies: - "@types/node" "*" - graceful-fs "^4.2.4" - -jest-snapshot@^26.6.0, jest-snapshot@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-26.6.2.tgz#f3b0af1acb223316850bd14e1beea9837fb39c84" - integrity sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og== - dependencies: - "@babel/types" "^7.0.0" - "@jest/types" "^26.6.2" - "@types/babel__traverse" "^7.0.4" - "@types/prettier" "^2.0.0" - chalk "^4.0.0" - expect "^26.6.2" - graceful-fs "^4.2.4" - jest-diff "^26.6.2" - jest-get-type "^26.3.0" - jest-haste-map "^26.6.2" - jest-matcher-utils "^26.6.2" - jest-message-util "^26.6.2" - jest-resolve "^26.6.2" - natural-compare "^1.4.0" - pretty-format "^26.6.2" - semver "^7.3.2" - -jest-util@^26.6.0, jest-util@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.6.2.tgz#907535dbe4d5a6cb4c47ac9b926f6af29576cbc1" - integrity sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q== - dependencies: - "@jest/types" "^26.6.2" - "@types/node" "*" - chalk "^4.0.0" - graceful-fs "^4.2.4" - is-ci "^2.0.0" - micromatch "^4.0.2" - -jest-validate@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.6.2.tgz#23d380971587150467342911c3d7b4ac57ab20ec" - integrity sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ== - dependencies: - "@jest/types" "^26.6.2" - camelcase "^6.0.0" - chalk "^4.0.0" - jest-get-type "^26.3.0" - leven "^3.1.0" - pretty-format "^26.6.2" - -jest-watch-typeahead@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-0.6.1.tgz#45221b86bb6710b7e97baaa1640ae24a07785e63" - integrity sha512-ITVnHhj3Jd/QkqQcTqZfRgjfyRhDFM/auzgVo2RKvSwi18YMvh0WvXDJFoFED6c7jd/5jxtu4kSOb9PTu2cPVg== - dependencies: - ansi-escapes "^4.3.1" - chalk "^4.0.0" - jest-regex-util "^26.0.0" - jest-watcher "^26.3.0" - slash "^3.0.0" - string-length "^4.0.1" - strip-ansi "^6.0.0" - -jest-watcher@^26.3.0, jest-watcher@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-26.6.2.tgz#a5b683b8f9d68dbcb1d7dae32172d2cca0592975" - integrity sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ== - dependencies: - "@jest/test-result" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - jest-util "^26.6.2" - string-length "^4.0.1" - -jest-worker@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" - integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== - dependencies: - merge-stream "^2.0.0" - supports-color "^6.1.0" - -jest-worker@^26.5.0, jest-worker@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" - integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^7.0.0" - -jest@26.6.0: - version "26.6.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-26.6.0.tgz#546b25a1d8c888569dbbe93cae131748086a4a25" - integrity sha512-jxTmrvuecVISvKFFhOkjsWRZV7sFqdSUAd1ajOKY+/QE/aLBVstsJ/dX8GczLzwiT6ZEwwmZqtCUHLHHQVzcfA== - dependencies: - "@jest/core" "^26.6.0" - import-local "^3.0.2" - jest-cli "^26.6.0" - -joi@*, joi@^17.4.2: - version "17.4.2" - resolved "https://registry.yarnpkg.com/joi/-/joi-17.4.2.tgz#02f4eb5cf88e515e614830239379dcbbe28ce7f7" - integrity sha512-Lm56PP+n0+Z2A2rfRvsfWVDXGEWjXxatPopkQ8qQ5mxCEhwHG+Ettgg5o98FFaxilOxozoa14cFhrE/hOzh/Nw== - dependencies: - "@hapi/hoek" "^9.0.0" - "@hapi/topo" "^5.0.0" - "@sideway/address" "^4.1.0" - "@sideway/formula" "^3.0.0" - "@sideway/pinpoint" "^2.0.0" - -joi@^17.6.0: - version "17.6.0" - resolved "https://registry.yarnpkg.com/joi/-/joi-17.6.0.tgz#0bb54f2f006c09a96e75ce687957bd04290054b2" - integrity sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw== - dependencies: - "@hapi/hoek" "^9.0.0" - "@hapi/topo" "^5.0.0" - "@sideway/address" "^4.1.3" - "@sideway/formula" "^3.0.0" - "@sideway/pinpoint" "^2.0.0" - -js-sha3@0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" - integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== - -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -jsdom@^16.4.0: - version "16.7.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" - integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== - dependencies: - abab "^2.0.5" - acorn "^8.2.4" - acorn-globals "^6.0.0" - cssom "^0.4.4" - cssstyle "^2.3.0" - data-urls "^2.0.0" - decimal.js "^10.2.1" - domexception "^2.0.1" - escodegen "^2.0.0" - form-data "^3.0.0" - html-encoding-sniffer "^2.0.1" - http-proxy-agent "^4.0.1" - https-proxy-agent "^5.0.0" - is-potential-custom-element-name "^1.0.1" - nwsapi "^2.2.0" - parse5 "6.0.1" - saxes "^5.0.1" - symbol-tree "^3.2.4" - tough-cookie "^4.0.0" - w3c-hr-time "^1.0.2" - w3c-xmlserializer "^2.0.0" - webidl-conversions "^6.1.0" - whatwg-encoding "^1.0.5" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.5.0" - ws "^7.4.6" - xml-name-validator "^3.0.0" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== - -json-buffer@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" - integrity sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ== - -json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-schema-traverse@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" - integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== - -json-stringify-safe@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== - -json3@^3.3.3: - version "3.3.3" - resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" - integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== - -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== - dependencies: - minimist "^1.2.0" - -json5@^2.1.2: - version "2.2.0" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" - integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== - dependencies: - minimist "^1.2.5" - -json5@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" - integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== - -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== - optionalDependencies: - graceful-fs "^4.1.6" - -jsonfile@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== - dependencies: - universalify "^2.0.0" - optionalDependencies: - graceful-fs "^4.1.6" - -"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.1.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz#720b97bfe7d901b927d87c3773637ae8ea48781b" - integrity sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA== - dependencies: - array-includes "^3.1.3" - object.assign "^4.1.2" - -keyv@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" - integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== - dependencies: - json-buffer "3.0.0" - -killable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" - integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== - -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw== - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -kleur@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" - integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== - -klona@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.4.tgz#7bb1e3affb0cb8624547ef7e8f6708ea2e39dfc0" - integrity sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA== - -language-subtag-registry@~0.3.2: - version "0.3.21" - resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz#04ac218bea46f04cb039084602c6da9e788dd45a" - integrity sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg== - -language-tags@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a" - integrity sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ== - dependencies: - language-subtag-registry "~0.3.2" - -last-call-webpack-plugin@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555" - integrity sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w== - dependencies: - lodash "^4.17.5" - webpack-sources "^1.1.0" - -latest-version@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" - integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== - dependencies: - package-json "^6.3.0" - -lazy-val@^1.0.4, lazy-val@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/lazy-val/-/lazy-val-1.0.5.tgz#6cf3b9f5bc31cee7ee3e369c0832b7583dcd923d" - integrity sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q== - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -lines-and-columns@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" - integrity sha512-8ZmlJFVK9iCmtLz19HpSsR8HaAMWBT284VMNednLwlIMDP2hJDCIhUp0IZ2xUcZ+Ob6BM0VvCSJwzASDM45NLQ== - -lint-staged@^11.1.2: - version "11.2.1" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-11.2.1.tgz#e49104cb4eb01ef36742531385be2efe2b85ed94" - integrity sha512-p56vAvBwABYSThvncT1Vuq0u6A8ZS56oC+eURfoavqyhBPJv+RGAmIU2kEYQOO19LPQVHQJ56eoBq/ARPlBoVQ== - dependencies: - cli-truncate "2.1.0" - colorette "^1.4.0" - commander "^8.2.0" - cosmiconfig "^7.0.1" - debug "^4.3.2" - enquirer "^2.3.6" - execa "^5.1.1" - listr2 "^3.12.2" - micromatch "^4.0.4" - normalize-path "^3.0.0" - please-upgrade-node "^3.2.0" - string-argv "0.3.1" - stringify-object "3.3.0" - supports-color "8.1.1" - -listr2@^3.12.2: - version "3.12.2" - resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.12.2.tgz#2d55cc627111603ad4768a9e87c9c7bb9b49997e" - integrity sha512-64xC2CJ/As/xgVI3wbhlPWVPx0wfTqbUAkpb7bjDi0thSWMqrf07UFhrfsGoo8YSXmF049Rp9C0cjLC8rZxK9A== - dependencies: - cli-truncate "^2.1.0" - colorette "^1.4.0" - log-update "^4.0.0" - p-map "^4.0.0" - rxjs "^6.6.7" - through "^2.3.8" - wrap-ansi "^7.0.0" - -load-json-file@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" - integrity sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw== - dependencies: - graceful-fs "^4.1.2" - parse-json "^4.0.0" - pify "^3.0.0" - strip-bom "^3.0.0" - -loader-runner@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" - integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== - -loader-utils@1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" - integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== - dependencies: - big.js "^5.2.2" - emojis-list "^2.0.0" - json5 "^1.0.1" - -loader-utils@2.0.0, loader-utils@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" - integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^2.1.2" - -loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" - integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^1.0.1" - -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - integrity sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA== - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -lodash-es@^4.17.21: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" - integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== - -lodash._reinterpolate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" - integrity sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA== - -lodash.clonedeep@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" - integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ== - -lodash.curry@^4.0.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.curry/-/lodash.curry-4.1.1.tgz#248e36072ede906501d75966200a86dab8b23170" - integrity sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA== - -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== - -lodash.escaperegexp@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz#64762c48618082518ac3df4ccf5d5886dae20347" - integrity sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw== - -lodash.flow@^3.3.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/lodash.flow/-/lodash.flow-3.5.0.tgz#87bf40292b8cf83e4e8ce1a3ae4209e20071675a" - integrity sha512-ff3BX/tSioo+XojX4MOsOMhJw0nZoUEF011LX8g8d3gvjVbxd89cCio4BCXronjxcTUIJUoqKEUA+n4CqvvRPw== - -lodash.isequal@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" - integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== - -lodash.memoize@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lodash.template@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" - integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== - dependencies: - lodash._reinterpolate "^3.0.0" - lodash.templatesettings "^4.0.0" - -lodash.templatesettings@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" - integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== - dependencies: - lodash._reinterpolate "^3.0.0" - -lodash.truncate@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" - integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== - -lodash.uniq@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" - integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== - -"lodash@>=3.5 <5", lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.5, lodash@^4.7.0: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -log-update@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" - integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== - dependencies: - ansi-escapes "^4.3.0" - cli-cursor "^3.1.0" - slice-ansi "^4.0.0" - wrap-ansi "^6.2.0" - -loglevel@^1.6.8: - version "1.7.1" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197" - integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw== - -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -lower-case@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" - integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== - dependencies: - tslib "^2.0.3" - -lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" - integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== - -lowercase-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" - integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== - -lru-cache@^4.0.1: - version "4.1.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" - integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -lru_map@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd" - integrity sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ== - -lz-string@^1.4.4: - version "1.4.4" - resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26" - integrity sha512-0ckx7ZHRPqb0oUm8zNr+90mtf9DQB60H1wMCjBtfi62Kl3a7JbHob6gA2bC+xRvZoOL+1hzUK8jeuEIQE8svEQ== - -magic-string@^0.25.0, magic-string@^0.25.7: - version "0.25.7" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" - integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== - dependencies: - sourcemap-codec "^1.4.4" - -make-dir@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" - -make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.0.0" - -make-fetch-happen@^9.1.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz#53085a09e7971433e6765f7971bf63f4e05cb968" - integrity sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg== - 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" - -makeerror@1.0.x: - version "1.0.11" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" - integrity sha512-M/XvMZ6oK4edXjvg/ZYyzByg8kjpVrF/m0x3wbhOlzJfsQgFkqP1rJnLnJExOcslmLSSeLiN6NmF+cBoKJHGTg== - dependencies: - tmpl "1.0.x" - -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg== - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w== - dependencies: - object-visit "^1.0.0" - -match-sorter@^6.0.2: - version "6.3.1" - resolved "https://registry.yarnpkg.com/match-sorter/-/match-sorter-6.3.1.tgz#98cc37fda756093424ddf3cbc62bfe9c75b92bda" - integrity sha512-mxybbo3pPNuA+ZuCUhm5bwNkXrJTbsk5VWbR5wiwz/GC6LIiegBGn2w3O08UG/jdbYLinw51fSQ5xNU1U3MgBw== - dependencies: - "@babel/runtime" "^7.12.5" - remove-accents "0.4.2" - -matcher@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/matcher/-/matcher-3.0.0.tgz#bd9060f4c5b70aa8041ccc6f80368760994f30ca" - integrity sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng== - dependencies: - escape-string-regexp "^4.0.0" - -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -mdn-data@2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" - integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== - -mdn-data@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" - integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== - -memory-fs@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" - integrity sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ== - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -memory-fs@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" - integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.3.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== - -microevent.ts@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0" - integrity sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g== - -micromatch@^3.1.10, micromatch@^3.1.4: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - -micromatch@^4.0.2, micromatch@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" - integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== - dependencies: - braces "^3.0.1" - picomatch "^2.2.3" - -microseconds@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/microseconds/-/microseconds-0.2.0.tgz#233b25f50c62a65d861f978a4a4f8ec18797dc39" - integrity sha512-n7DHHMjR1avBbSpsTBj6fmMGh2AGrifVV4e+WYc3Q9lO+xnSZ3NyhcBND3vzzatt05LFhoKFRxrIyklmLlUtyA== - -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - -mime-db@1.50.0, "mime-db@>= 1.43.0 < 2": - version "1.50.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.50.0.tgz#abd4ac94e98d3c0e185016c67ab45d5fde40c11f" - integrity sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A== - -mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.17, mime-types@~2.1.24: - version "2.1.33" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.33.tgz#1fa12a904472fafd068e48d9e8401f74d3f70edb" - integrity sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g== - dependencies: - mime-db "1.50.0" - -mime@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mime@^2.4.4: - version "2.5.2" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.5.2.tgz#6e3dc6cc2b9510643830e5f19d5cb753da5eeabe" - integrity sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg== - -mime@^2.5.2: - version "2.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" - integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -mimic-response@^1.0.0, mimic-response@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" - integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== - -min-indent@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" - integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== - -mini-create-react-context@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz#072171561bfdc922da08a60c2197a497cc2d1d5e" - integrity sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ== - dependencies: - "@babel/runtime" "^7.12.1" - tiny-warning "^1.0.3" - -mini-css-extract-plugin@0.11.3: - version "0.11.3" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.11.3.tgz#15b0910a7f32e62ffde4a7430cfefbd700724ea6" - integrity sha512-n9BA8LonkOkW1/zn+IbLPQmovsL0wMb9yx75fMJQZf2X1Zoec9yTZtyMePcyu19wPkmFbzZZA6fLTotpFhQsOA== - dependencies: - loader-utils "^1.1.0" - normalize-url "1.9.1" - schema-utils "^1.0.0" - webpack-sources "^1.1.0" - -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== - -minimatch@3.0.4, minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.0.tgz#1717b464f4971b144f6aabe8f2d0b8e4511e09c7" - integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg== - dependencies: - brace-expansion "^2.0.1" - -minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== - -minipass-collect@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" - integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== - dependencies: - minipass "^3.0.0" - -minipass-fetch@^1.3.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-1.4.1.tgz#d75e0091daac1b0ffd7e9d41629faff7d0c1f1b6" - integrity sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw== - dependencies: - minipass "^3.1.0" - minipass-sized "^1.0.3" - minizlib "^2.0.0" - optionalDependencies: - encoding "^0.1.12" - -minipass-flush@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" - integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== - dependencies: - minipass "^3.0.0" - -minipass-pipeline@^1.2.2, minipass-pipeline@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" - integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== - dependencies: - minipass "^3.0.0" - -minipass-sized@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" - integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== - dependencies: - minipass "^3.0.0" - -minipass@^3.0.0, minipass@^3.1.1: - version "3.1.5" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.5.tgz#71f6251b0a33a49c01b3cf97ff77eda030dff732" - integrity sha512-+8NzxD82XQoNKNrl1d/FSi+X8wAEWR+sbYAfIvub4Nz0d22plFG72CEVVaufV8PNf4qSslFTD8VMOxNVhHCjTw== - dependencies: - yallist "^4.0.0" - -minipass@^3.1.0, minipass@^3.1.3: - version "3.3.4" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.4.tgz#ca99f95dd77c43c7a76bf51e6d200025eee0ffae" - integrity sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw== - dependencies: - yallist "^4.0.0" - -minizlib@^2.0.0, minizlib@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" - integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== - dependencies: - minipass "^3.0.0" - yallist "^4.0.0" - -mississippi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" - integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== - dependencies: - concat-stream "^1.5.0" - duplexify "^3.4.2" - end-of-stream "^1.1.0" - flush-write-stream "^1.0.0" - from2 "^2.1.0" - parallel-transform "^1.1.0" - pump "^3.0.0" - pumpify "^1.3.3" - stream-each "^1.1.0" - through2 "^2.0.0" - -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - -mixpanel-browser@^2.45.0: - version "2.45.0" - resolved "https://registry.yarnpkg.com/mixpanel-browser/-/mixpanel-browser-2.45.0.tgz#a2973be5b66e6d2799ef95a1e55b8ad8eede57e8" - integrity sha512-PQ1DaTk68yyYtLA0iejmzPA9iNDhT4uIZpqZjRTw7HWpYfl123fydHb2laKanaKjm8YDmrGGz3+xZ4Q6joogyg== - -mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.1: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== - dependencies: - minimist "^1.2.5" - -mkdirp@^1.0.3, mkdirp@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -move-concurrently@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" - integrity sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ== - dependencies: - aproba "^1.1.1" - copy-concurrently "^1.0.0" - fs-write-stream-atomic "^1.0.8" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.3" - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== - -ms@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== - -ms@2.1.2, ms@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@^2.0.0: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -multicast-dns-service-types@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" - integrity sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ== - -multicast-dns@^6.0.1: - version "6.2.3" - resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" - integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== - dependencies: - dns-packet "^1.3.1" - thunky "^1.0.2" - -nan@^2.12.1: - version "2.15.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee" - integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ== - -nano-time@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/nano-time/-/nano-time-1.0.0.tgz#b0554f69ad89e22d0907f7a12b0993a5d96137ef" - integrity sha512-flnngywOoQ0lLQOTRNexn2gGSNuM9bKj9RZAWSzhQ+UJYaAFG9bac4DW9VHjUAzrOaIcajHybCTHe/bkvozQqA== - dependencies: - big-integer "^1.6.16" - -nanoclone@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/nanoclone/-/nanoclone-0.2.1.tgz#dd4090f8f1a110d26bb32c49ed2f5b9235209ed4" - integrity sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA== - -nanoid@^3.1.28: - version "3.1.29" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.29.tgz#214fb2d7a33e1a5bef4757b779dfaeb6a4e5aeb4" - integrity sha512-dW2pUSGZ8ZnCFIlBIA31SV8huOGCHb6OwzVCc7A69rb/a+SgPBwfmLvK5TKQ3INPbRkcI8a/Owo0XbiTNH19wg== - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -native-url@^0.2.6: - version "0.2.6" - resolved "https://registry.yarnpkg.com/native-url/-/native-url-0.2.6.tgz#ca1258f5ace169c716ff44eccbddb674e10399ae" - integrity sha512-k4bDC87WtgrdD362gZz6zoiXQrl40kYlBmpfmSjwRO1VU0V5ccwJTlxuE72F6m3V0vc1xOf6n3UCP9QyerRqmA== - dependencies: - querystring "^0.2.0" - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== - -negotiator@0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" - integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== - -negotiator@^0.6.2: - version "0.6.3" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" - integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== - -neo-async@^2.5.0, neo-async@^2.6.1, neo-async@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - -next-tick@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" - integrity sha512-mc/caHeUcdjnC/boPWJefDr4KUIWQNv+tlnFnJd38QMou86QtxQzBJfxgGRzvx8jazYRqrVlaHarfO72uNxPOg== - -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - -no-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" - integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== - dependencies: - lower-case "^2.0.2" - tslib "^2.0.3" - -node-addon-api@^1.6.3: - version "1.7.2" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-1.7.2.tgz#3df30b95720b53c24e59948b49532b662444f54d" - integrity sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg== - -node-addon-api@^4.2.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-4.3.0.tgz#52a1a0b475193e0928e98e0426a0d1254782b77f" - integrity sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ== - -node-fetch@2.6.7, node-fetch@^2.6.7: - version "2.6.7" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" - integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== - dependencies: - whatwg-url "^5.0.0" - -node-forge@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" - integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== - -node-gyp@8.x: - version "8.4.1" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-8.4.1.tgz#3d49308fc31f768180957d6b5746845fbd429937" - integrity sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w== - 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" - -node-int64@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== - -node-libs-browser@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" - integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== - dependencies: - assert "^1.1.1" - browserify-zlib "^0.2.0" - buffer "^4.3.0" - console-browserify "^1.1.0" - constants-browserify "^1.0.0" - crypto-browserify "^3.11.0" - domain-browser "^1.1.1" - events "^3.0.0" - https-browserify "^1.0.0" - os-browserify "^0.3.0" - path-browserify "0.0.1" - process "^0.11.10" - punycode "^1.2.4" - querystring-es3 "^0.2.0" - readable-stream "^2.3.3" - stream-browserify "^2.0.1" - stream-http "^2.7.2" - string_decoder "^1.0.0" - timers-browserify "^2.0.4" - tty-browserify "0.0.0" - url "^0.11.0" - util "^0.11.0" - vm-browserify "^1.0.1" - -node-modules-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" - integrity sha512-JMaRS9L4wSRIR+6PTVEikTrq/lMGEZR43a48ETeilY0Q0iMwVnccMFrUM1k+tNzmYuIU0Vh710bCUqHX+/+ctQ== - -node-notifier@^8.0.0: - version "8.0.2" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-8.0.2.tgz#f3167a38ef0d2c8a866a83e318c1ba0efeb702c5" - integrity sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg== - dependencies: - growly "^1.3.0" - is-wsl "^2.2.0" - semver "^7.3.2" - shellwords "^0.1.1" - uuid "^8.3.0" - which "^2.0.2" - -node-releases@^1.1.61, node-releases@^1.1.77: - version "1.1.77" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.77.tgz#50b0cfede855dd374e7585bf228ff34e57c1c32e" - integrity sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ== - -nopt@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" - integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== - dependencies: - abbrev "1" - -normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w== - dependencies: - remove-trailing-separator "^1.0.1" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -normalize-range@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" - integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== - -normalize-url@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" - integrity sha512-A48My/mtCklowHBlI8Fq2jFWK4tX4lJ5E6ytFsSOq1fzpvT0SQSgKhSg7lN5c2uYFOrUAOQp6zhhJnpp1eMloQ== - dependencies: - object-assign "^4.0.1" - prepend-http "^1.0.0" - query-string "^4.1.0" - sort-keys "^1.0.0" - -normalize-url@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" - integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== - -normalize-url@^4.1.0: - version "4.5.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" - integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== - -npm-conf@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/npm-conf/-/npm-conf-1.1.3.tgz#256cc47bd0e218c259c4e9550bf413bc2192aff9" - integrity sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw== - dependencies: - config-chain "^1.1.11" - pify "^3.0.0" - -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw== - dependencies: - path-key "^2.0.0" - -npm-run-path@^4.0.0, npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -npmlog@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-5.0.1.tgz#f06678e80e29419ad67ab964e0fa69959c1eb8b0" - integrity sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw== - dependencies: - are-we-there-yet "^2.0.0" - console-control-strings "^1.1.0" - gauge "^3.0.0" - set-blocking "^2.0.0" - -npmlog@^6.0.0: - version "6.0.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830" - integrity sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg== - dependencies: - are-we-there-yet "^3.0.0" - console-control-strings "^1.1.0" - gauge "^4.0.3" - set-blocking "^2.0.0" - -nth-check@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" - integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== - dependencies: - boolbase "~1.0.0" - -nth-check@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2" - integrity sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w== - dependencies: - boolbase "^1.0.0" - -num2fraction@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" - integrity sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg== - -nwsapi@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" - integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== - -object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ== - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-inspect@^1.11.0, object-inspect@^1.9.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1" - integrity sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg== - -object-is@^1.0.1: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" - integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -object-keys@^1.0.12, object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA== - dependencies: - isobject "^3.0.0" - -object.assign@^4.1.0, object.assign@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" - integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - has-symbols "^1.0.1" - object-keys "^1.1.1" - -object.entries@^1.1.0, object.entries@^1.1.4: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.5.tgz#e1acdd17c4de2cd96d5a08487cfb9db84d881861" - integrity sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -object.fromentries@^2.0.4: - version "2.0.5" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.5.tgz#7b37b205109c21e741e605727fe8b0ad5fa08251" - integrity sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -object.getownpropertydescriptors@^2.0.3: - version "2.1.3" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz#b223cf38e17fefb97a63c10c91df72ccb386df9e" - integrity sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -object.hasown@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.0.tgz#7232ed266f34d197d15cac5880232f7a4790afe5" - integrity sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.19.1" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ== - dependencies: - isobject "^3.0.1" - -object.values@^1.1.0, object.values@^1.1.4: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" - integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -oblivious-set@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/oblivious-set/-/oblivious-set-1.0.0.tgz#c8316f2c2fb6ff7b11b6158db3234c49f733c566" - integrity sha512-z+pI07qxo4c2CulUHCDf9lcqDlMSo72N/4rLUpRXf6fu+q8vjt8y0xS+Tlf8NTJDdTXHbdeO1n3MlbctwEoXZw== - -obuf@^1.0.0, obuf@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" - integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== - -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww== - dependencies: - ee-first "1.1.1" - -on-headers@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" - integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== - -once@^1.3.0, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -onetime@^5.1.0, onetime@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -open@^7.0.2: - version "7.4.2" - resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" - integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== - dependencies: - is-docker "^2.0.0" - is-wsl "^2.1.1" - -opn@^5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" - integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== - dependencies: - is-wsl "^1.1.0" - -optimize-css-assets-webpack-plugin@5.0.4: - version "5.0.4" - resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.4.tgz#85883c6528aaa02e30bbad9908c92926bb52dc90" - integrity sha512-wqd6FdI2a5/FdoiCNNkEvLeA//lHHfG24Ln2Xm2qqdIk4aOlsR18jwpyOihqQ8849W3qu2DX8fOYxpvTMj+93A== - dependencies: - cssnano "^4.1.10" - last-call-webpack-plugin "^3.0.0" - -optionator@^0.8.1: - version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== - dependencies: - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - word-wrap "^1.2.3" - -original@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" - integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== - dependencies: - url-parse "^1.4.3" - -os-browserify@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" - integrity sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A== - -p-cancelable@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" - integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== - -p-each-series@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.2.0.tgz#105ab0357ce72b202a8a8b94933672657b5e2a9a" - integrity sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA== - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== - -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" - integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== - dependencies: - p-try "^1.0.0" - -p-limit@^2.0.0, p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-limit@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg== - dependencies: - p-limit "^1.1.0" - -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-map@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" - integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== - -p-map@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" - integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== - dependencies: - aggregate-error "^3.0.0" - -p-retry@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" - integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== - dependencies: - retry "^0.12.0" - -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -package-json@^6.3.0: - version "6.5.0" - resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0" - integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== - dependencies: - got "^9.6.0" - registry-auth-token "^4.0.0" - registry-url "^5.0.0" - semver "^6.2.0" - -pako@~1.0.5: - version "1.0.11" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" - integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== - -parallel-transform@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" - integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== - dependencies: - cyclist "^1.0.1" - inherits "^2.0.3" - readable-stream "^2.1.5" - -param-case@^3.0.3: - version "3.0.4" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" - integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== - dependencies: - dot-case "^3.0.4" - tslib "^2.0.3" - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-asn1@^5.0.0, parse-asn1@^5.1.5: - version "5.1.6" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" - integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== - dependencies: - asn1.js "^5.2.0" - browserify-aes "^1.0.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - safe-buffer "^5.1.1" - -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - -parse-json@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - 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" - -parse5@6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" - integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== - -parseurl@~1.3.2, parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -pascal-case@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" - integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw== - -path-browserify@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" - integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== - -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - integrity sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q== - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - -path-is-inside@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - integrity sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w== - -path-key@^2.0.0, path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== - -path-to-regexp@^1.7.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" - integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== - dependencies: - isarray "0.0.1" - -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" - integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== - dependencies: - pify "^3.0.0" - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -pbkdf2@^3.0.3: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" - integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -pend@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" - integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== - -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== - -picocolors@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f" - integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA== - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" - integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== - -pify@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== - -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - integrity sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw== - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== - -pirates@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" - integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== - dependencies: - node-modules-regexp "^1.0.0" - -pkg-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" - integrity sha512-ojakdnUgL5pzJYWw2AIDEupaQCX5OPbM688ZevubICjdIX01PRSYKqm33fJoCOJBRseYCTUlQRnBNX+Pchaejw== - dependencies: - find-up "^2.1.0" - -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" - integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== - dependencies: - find-up "^3.0.0" - -pkg-dir@^4.1.0, pkg-dir@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -pkg-up@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" - integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== - dependencies: - find-up "^3.0.0" - -pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" - integrity sha512-fjAPuiws93rm7mPUu21RdBnkeZNrbfCFCwfAhPWY+rR3zG0ubpe5cEReHOw5fIbfmsxEV/g2kSxGTATY3Bpnwg== - dependencies: - find-up "^2.1.0" - -please-upgrade-node@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" - integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== - dependencies: - semver-compare "^1.0.0" - -plist@^3.0.1, plist@^3.0.4: - version "3.0.6" - resolved "https://registry.yarnpkg.com/plist/-/plist-3.0.6.tgz#7cfb68a856a7834bca6dbfe3218eb9c7740145d3" - integrity sha512-WiIVYyrp8TD4w8yCvyeIr+lkmrGRd5u0VbRnU+tP/aRLxP/YadJUYOMZJ/6hIa3oUyVCsycXvtNRgd5XBJIbiA== - dependencies: - base64-js "^1.5.1" - xmlbuilder "^15.1.1" - -pnp-webpack-plugin@1.6.4: - version "1.6.4" - resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149" - integrity sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg== - dependencies: - ts-pnp "^1.1.6" - -portfinder@^1.0.26: - version "1.0.28" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" - integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA== - dependencies: - async "^2.6.2" - debug "^3.1.1" - mkdirp "^0.5.5" - -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== - -postcss-attribute-case-insensitive@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz#d93e46b504589e94ac7277b0463226c68041a880" - integrity sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA== - dependencies: - postcss "^7.0.2" - postcss-selector-parser "^6.0.2" - -postcss-browser-comments@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-browser-comments/-/postcss-browser-comments-3.0.0.tgz#1248d2d935fb72053c8e1f61a84a57292d9f65e9" - integrity sha512-qfVjLfq7HFd2e0HW4s1dvU8X080OZdG46fFbIBFjW7US7YPDcWfRvdElvwMJr2LI6hMmD+7LnH2HcmXTs+uOig== - dependencies: - postcss "^7" - -postcss-calc@^7.0.1: - version "7.0.5" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.5.tgz#f8a6e99f12e619c2ebc23cf6c486fdc15860933e" - integrity sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg== - dependencies: - postcss "^7.0.27" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.0.2" - -postcss-color-functional-notation@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz#5efd37a88fbabeb00a2966d1e53d98ced93f74e0" - integrity sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g== - dependencies: - postcss "^7.0.2" - postcss-values-parser "^2.0.0" - -postcss-color-gray@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz#532a31eb909f8da898ceffe296fdc1f864be8547" - integrity sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw== - dependencies: - "@csstools/convert-colors" "^1.4.0" - postcss "^7.0.5" - postcss-values-parser "^2.0.0" - -postcss-color-hex-alpha@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz#a8d9ca4c39d497c9661e374b9c51899ef0f87388" - integrity sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw== - dependencies: - postcss "^7.0.14" - postcss-values-parser "^2.0.1" - -postcss-color-mod-function@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz#816ba145ac11cc3cb6baa905a75a49f903e4d31d" - integrity sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ== - dependencies: - "@csstools/convert-colors" "^1.4.0" - postcss "^7.0.2" - postcss-values-parser "^2.0.0" - -postcss-color-rebeccapurple@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz#c7a89be872bb74e45b1e3022bfe5748823e6de77" - integrity sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g== - dependencies: - postcss "^7.0.2" - postcss-values-parser "^2.0.0" - -postcss-colormin@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" - integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== - dependencies: - browserslist "^4.0.0" - color "^3.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-convert-values@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" - integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-custom-media@^7.0.8: - version "7.0.8" - resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz#fffd13ffeffad73621be5f387076a28b00294e0c" - integrity sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg== - dependencies: - postcss "^7.0.14" - -postcss-custom-properties@^8.0.11: - version "8.0.11" - resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz#2d61772d6e92f22f5e0d52602df8fae46fa30d97" - integrity sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA== - dependencies: - postcss "^7.0.17" - postcss-values-parser "^2.0.1" - -postcss-custom-selectors@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz#64858c6eb2ecff2fb41d0b28c9dd7b3db4de7fba" - integrity sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w== - dependencies: - postcss "^7.0.2" - postcss-selector-parser "^5.0.0-rc.3" - -postcss-dir-pseudo-class@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz#6e3a4177d0edb3abcc85fdb6fbb1c26dabaeaba2" - integrity sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw== - dependencies: - postcss "^7.0.2" - postcss-selector-parser "^5.0.0-rc.3" - -postcss-discard-comments@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" - integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== - dependencies: - postcss "^7.0.0" - -postcss-discard-duplicates@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" - integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== - dependencies: - postcss "^7.0.0" - -postcss-discard-empty@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" - integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== - dependencies: - postcss "^7.0.0" - -postcss-discard-overridden@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" - integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== - dependencies: - postcss "^7.0.0" - -postcss-double-position-gradients@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz#fc927d52fddc896cb3a2812ebc5df147e110522e" - integrity sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA== - dependencies: - postcss "^7.0.5" - postcss-values-parser "^2.0.0" - -postcss-env-function@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-2.0.2.tgz#0f3e3d3c57f094a92c2baf4b6241f0b0da5365d7" - integrity sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw== - dependencies: - postcss "^7.0.2" - postcss-values-parser "^2.0.0" - -postcss-flexbugs-fixes@4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.1.tgz#9218a65249f30897deab1033aced8578562a6690" - integrity sha512-9SiofaZ9CWpQWxOwRh1b/r85KD5y7GgvsNt1056k6OYLvWUun0czCvogfJgylC22uJTwW1KzY3Gz65NZRlvoiQ== - dependencies: - postcss "^7.0.26" - -postcss-focus-visible@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz#477d107113ade6024b14128317ade2bd1e17046e" - integrity sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g== - dependencies: - postcss "^7.0.2" - -postcss-focus-within@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz#763b8788596cee9b874c999201cdde80659ef680" - integrity sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w== - dependencies: - postcss "^7.0.2" - -postcss-font-variant@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-4.0.1.tgz#42d4c0ab30894f60f98b17561eb5c0321f502641" - integrity sha512-I3ADQSTNtLTTd8uxZhtSOrTCQ9G4qUVKPjHiDk0bV75QSxXjVWiJVJ2VLdspGUi9fbW9BcjKJoRvxAH1pckqmA== - dependencies: - postcss "^7.0.2" - -postcss-gap-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz#431c192ab3ed96a3c3d09f2ff615960f902c1715" - integrity sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg== - dependencies: - postcss "^7.0.2" - -postcss-image-set-function@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz#28920a2f29945bed4c3198d7df6496d410d3f288" - integrity sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw== - dependencies: - postcss "^7.0.2" - postcss-values-parser "^2.0.0" - -postcss-initial@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-3.0.4.tgz#9d32069a10531fe2ecafa0b6ac750ee0bc7efc53" - integrity sha512-3RLn6DIpMsK1l5UUy9jxQvoDeUN4gP939tDcKUHD/kM8SGSKbFAnvkpFpj3Bhtz3HGk1jWY5ZNWX6mPta5M9fg== - dependencies: - postcss "^7.0.2" - -postcss-lab-function@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz#bb51a6856cd12289ab4ae20db1e3821ef13d7d2e" - integrity sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg== - dependencies: - "@csstools/convert-colors" "^1.4.0" - postcss "^7.0.2" - postcss-values-parser "^2.0.0" - -postcss-load-config@^2.0.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.2.tgz#c5ea504f2c4aef33c7359a34de3573772ad7502a" - integrity sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw== - dependencies: - cosmiconfig "^5.0.0" - import-cwd "^2.0.0" - -postcss-loader@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" - integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== - dependencies: - loader-utils "^1.1.0" - postcss "^7.0.0" - postcss-load-config "^2.0.0" - schema-utils "^1.0.0" - -postcss-logical@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-3.0.0.tgz#2495d0f8b82e9f262725f75f9401b34e7b45d5b5" - integrity sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA== - dependencies: - postcss "^7.0.2" - -postcss-media-minmax@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz#b75bb6cbc217c8ac49433e12f22048814a4f5ed5" - integrity sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw== - dependencies: - postcss "^7.0.2" - -postcss-merge-longhand@^4.0.11: - version "4.0.11" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" - integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== - dependencies: - css-color-names "0.0.4" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - stylehacks "^4.0.0" - -postcss-merge-rules@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" - integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== - dependencies: - browserslist "^4.0.0" - caniuse-api "^3.0.0" - cssnano-util-same-parent "^4.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - vendors "^1.0.0" - -postcss-minify-font-values@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" - integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-minify-gradients@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" - integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== - dependencies: - cssnano-util-get-arguments "^4.0.0" - is-color-stop "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-minify-params@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" - integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== - dependencies: - alphanum-sort "^1.0.0" - browserslist "^4.0.0" - cssnano-util-get-arguments "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - uniqs "^2.0.0" - -postcss-minify-selectors@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" - integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== - dependencies: - alphanum-sort "^1.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - -postcss-modules-extract-imports@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" - integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== - dependencies: - postcss "^7.0.5" - -postcss-modules-local-by-default@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz#bb14e0cc78279d504dbdcbfd7e0ca28993ffbbb0" - integrity sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw== - dependencies: - icss-utils "^4.1.1" - postcss "^7.0.32" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.1.0" - -postcss-modules-scope@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" - integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== - dependencies: - postcss "^7.0.6" - postcss-selector-parser "^6.0.0" - -postcss-modules-values@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10" - integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== - dependencies: - icss-utils "^4.0.0" - postcss "^7.0.6" - -postcss-nesting@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-7.0.1.tgz#b50ad7b7f0173e5b5e3880c3501344703e04c052" - integrity sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg== - dependencies: - postcss "^7.0.2" - -postcss-normalize-charset@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" - integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== - dependencies: - postcss "^7.0.0" - -postcss-normalize-display-values@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" - integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== - dependencies: - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-positions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" - integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== - dependencies: - cssnano-util-get-arguments "^4.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-repeat-style@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" - integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== - dependencies: - cssnano-util-get-arguments "^4.0.0" - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-string@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" - integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== - dependencies: - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-timing-functions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" - integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== - dependencies: - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-unicode@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" - integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== - dependencies: - browserslist "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-url@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" - integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== - dependencies: - is-absolute-url "^2.0.0" - normalize-url "^3.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-whitespace@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" - integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize@8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize/-/postcss-normalize-8.0.1.tgz#90e80a7763d7fdf2da6f2f0f82be832ce4f66776" - integrity sha512-rt9JMS/m9FHIRroDDBGSMsyW1c0fkvOJPy62ggxSHUldJO7B195TqFMqIf+lY5ezpDcYOV4j86aUp3/XbxzCCQ== - dependencies: - "@csstools/normalize.css" "^10.1.0" - browserslist "^4.6.2" - postcss "^7.0.17" - postcss-browser-comments "^3.0.0" - sanitize.css "^10.0.0" - -postcss-ordered-values@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" - integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== - dependencies: - cssnano-util-get-arguments "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-overflow-shorthand@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz#31ecf350e9c6f6ddc250a78f0c3e111f32dd4c30" - integrity sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g== - dependencies: - postcss "^7.0.2" - -postcss-page-break@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-2.0.0.tgz#add52d0e0a528cabe6afee8b46e2abb277df46bf" - integrity sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ== - dependencies: - postcss "^7.0.2" - -postcss-place@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-4.0.1.tgz#e9f39d33d2dc584e46ee1db45adb77ca9d1dcc62" - integrity sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg== - dependencies: - postcss "^7.0.2" - postcss-values-parser "^2.0.0" - -postcss-preset-env@6.7.0: - version "6.7.0" - resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz#c34ddacf8f902383b35ad1e030f178f4cdf118a5" - integrity sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg== - dependencies: - autoprefixer "^9.6.1" - browserslist "^4.6.4" - caniuse-lite "^1.0.30000981" - css-blank-pseudo "^0.1.4" - css-has-pseudo "^0.10.0" - css-prefers-color-scheme "^3.1.1" - cssdb "^4.4.0" - postcss "^7.0.17" - postcss-attribute-case-insensitive "^4.0.1" - postcss-color-functional-notation "^2.0.1" - postcss-color-gray "^5.0.0" - postcss-color-hex-alpha "^5.0.3" - postcss-color-mod-function "^3.0.3" - postcss-color-rebeccapurple "^4.0.1" - postcss-custom-media "^7.0.8" - postcss-custom-properties "^8.0.11" - postcss-custom-selectors "^5.1.2" - postcss-dir-pseudo-class "^5.0.0" - postcss-double-position-gradients "^1.0.0" - postcss-env-function "^2.0.2" - postcss-focus-visible "^4.0.0" - postcss-focus-within "^3.0.0" - postcss-font-variant "^4.0.0" - postcss-gap-properties "^2.0.0" - postcss-image-set-function "^3.0.1" - postcss-initial "^3.0.0" - postcss-lab-function "^2.0.1" - postcss-logical "^3.0.0" - postcss-media-minmax "^4.0.0" - postcss-nesting "^7.0.0" - postcss-overflow-shorthand "^2.0.0" - postcss-page-break "^2.0.0" - postcss-place "^4.0.1" - postcss-pseudo-class-any-link "^6.0.0" - postcss-replace-overflow-wrap "^3.0.0" - postcss-selector-matches "^4.0.0" - postcss-selector-not "^4.0.0" - -postcss-pseudo-class-any-link@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz#2ed3eed393b3702879dec4a87032b210daeb04d1" - integrity sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew== - dependencies: - postcss "^7.0.2" - postcss-selector-parser "^5.0.0-rc.3" - -postcss-reduce-initial@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" - integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== - dependencies: - browserslist "^4.0.0" - caniuse-api "^3.0.0" - has "^1.0.0" - postcss "^7.0.0" - -postcss-reduce-transforms@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" - integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== - dependencies: - cssnano-util-get-match "^4.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-replace-overflow-wrap@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz#61b360ffdaedca84c7c918d2b0f0d0ea559ab01c" - integrity sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw== - dependencies: - postcss "^7.0.2" - -postcss-safe-parser@5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-5.0.2.tgz#459dd27df6bc2ba64608824ba39e45dacf5e852d" - integrity sha512-jDUfCPJbKOABhwpUKcqCVbbXiloe/QXMcbJ6Iipf3sDIihEzTqRCeMBfRaOHxhBuTYqtASrI1KJWxzztZU4qUQ== - dependencies: - postcss "^8.1.0" - -postcss-selector-matches@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz#71c8248f917ba2cc93037c9637ee09c64436fcff" - integrity sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww== - dependencies: - balanced-match "^1.0.0" - postcss "^7.0.2" - -postcss-selector-not@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-4.0.1.tgz#263016eef1cf219e0ade9a913780fc1f48204cbf" - integrity sha512-YolvBgInEK5/79C+bdFMyzqTg6pkYqDbzZIST/PDMqa/o3qtXenD05apBG2jLgT0/BQ77d4U2UK12jWpilqMAQ== - dependencies: - balanced-match "^1.0.0" - postcss "^7.0.2" - -postcss-selector-parser@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" - integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== - dependencies: - dot-prop "^5.2.0" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: - version "5.0.0" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" - integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== - dependencies: - cssesc "^2.0.0" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: - version "6.0.6" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz#2c5bba8174ac2f6981ab631a42ab0ee54af332ea" - integrity sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg== - dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" - -postcss-svgo@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.3.tgz#343a2cdbac9505d416243d496f724f38894c941e" - integrity sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - svgo "^1.0.0" - -postcss-unique-selectors@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" - integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== - dependencies: - alphanum-sort "^1.0.0" - postcss "^7.0.0" - uniqs "^2.0.0" - -postcss-value-parser@^3.0.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" - integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== - -postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" - integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== - -postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz#da8b472d901da1e205b47bdc98637b9e9e550e5f" - integrity sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg== - dependencies: - flatten "^1.0.2" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss@7.0.36: - version "7.0.36" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.36.tgz#056f8cffa939662a8f5905950c07d5285644dfcb" - integrity sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw== - dependencies: - chalk "^2.4.2" - source-map "^0.6.1" - supports-color "^6.1.0" - -postcss@^7, postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.26, postcss@^7.0.27, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6: - version "7.0.39" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309" - integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA== - dependencies: - picocolors "^0.2.1" - source-map "^0.6.1" - -postcss@^8.1.0: - version "8.3.9" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.9.tgz#98754caa06c4ee9eb59cc48bd073bb6bd3437c31" - integrity sha512-f/ZFyAKh9Dnqytx5X62jgjhhzttjZS7hMsohcI7HEI5tjELX/HxCy3EFhsRxyzGvrzFF+82XPvCS8T9TFleVJw== - dependencies: - nanoid "^3.1.28" - picocolors "^0.2.1" - source-map-js "^0.6.2" - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== - -prepend-http@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" - integrity sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg== - -prepend-http@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" - integrity sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA== - -prettier-linter-helpers@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" - integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== - dependencies: - fast-diff "^1.1.2" - -prettier@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.4.1.tgz#671e11c89c14a4cfc876ce564106c4a6726c9f5c" - integrity sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA== - -pretty-bytes@^5.3.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" - integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== - -pretty-error@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.2.tgz#be89f82d81b1c86ec8fdfbc385045882727f93b6" - integrity sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw== - dependencies: - lodash "^4.17.20" - renderkid "^2.0.4" - -pretty-format@^26.0.0, pretty-format@^26.6.0, pretty-format@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" - integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== - dependencies: - "@jest/types" "^26.6.2" - ansi-regex "^5.0.0" - ansi-styles "^4.0.0" - react-is "^17.0.1" - -prismjs@^1.25.0: - version "1.25.0" - resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.25.0.tgz#6f822df1bdad965734b310b315a23315cf999756" - integrity sha512-WCjJHl1KEWbnkQom1+SzftbtXMKQoezOCYs5rECqMN+jP+apI7ftoflyqigqzopSO3hMhTEb0mFClA8lkolgEg== - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== - -progress@^2.0.0, progress@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - -promise-inflight@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== - -promise-retry@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" - integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== - dependencies: - err-code "^2.0.2" - retry "^0.12.0" - -promise@^7.1.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" - integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== - dependencies: - asap "~2.0.3" - -promise@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/promise/-/promise-8.1.0.tgz#697c25c3dfe7435dd79fcd58c38a135888eaf05e" - integrity sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q== - dependencies: - asap "~2.0.6" - -prompts@2.4.0, prompts@^2.0.1: - version "2.4.0" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.0.tgz#4aa5de0723a231d1ee9121c40fdf663df73f61d7" - integrity sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ== - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.5" - -prop-types@^15.6.2, prop-types@^15.7.2: - version "15.7.2" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" - integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== - dependencies: - loose-envify "^1.4.0" - object-assign "^4.1.1" - react-is "^16.8.1" - -property-expr@^2.0.4: - version "2.0.5" - resolved "https://registry.yarnpkg.com/property-expr/-/property-expr-2.0.5.tgz#278bdb15308ae16af3e3b9640024524f4dc02cb4" - integrity sha512-IJUkICM5dP5znhCckHSv30Q4b5/JA5enCtkRHYaOVOAocnH/1BQEYTC5NMfT3AVl/iXKdr3aqQbQn9DxyWknwA== - -proto-list@~1.2.1: - version "1.2.4" - resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" - integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== - -proxy-addr@~2.0.5: - version "2.0.7" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" - integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== - dependencies: - forwarded "0.2.0" - ipaddr.js "1.9.1" - -prr@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== - -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ== - -psl@^1.1.33: - version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== - -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - -pump@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" - integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pumpify@^1.3.3: - version "1.5.1" - resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" - integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== - dependencies: - duplexify "^3.6.0" - inherits "^2.0.3" - pump "^2.0.0" - -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw== - -punycode@^1.2.4: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== - -punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -pupa@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62" - integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A== - dependencies: - escape-goat "^2.0.0" - -pure-color@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/pure-color/-/pure-color-1.3.0.tgz#1fe064fb0ac851f0de61320a8bf796836422f33e" - integrity sha512-QFADYnsVoBMw1srW7OVKEYjG+MbIa49s54w1MA1EDY6r2r/sTcKKYqRX1f4GYvnXP7eN/Pe9HFcX+hwzmrXRHA== - -q@^1.1.2: - version "1.5.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== - -qs@6.7.0: - version "6.7.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" - integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== - -query-string@^4.1.0: - version "4.3.4" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" - integrity sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q== - dependencies: - object-assign "^4.1.0" - strict-uri-encode "^1.0.0" - -querystring-es3@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" - integrity sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA== - -querystring@0.2.0, querystring@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g== - -querystringify@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" - integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== - -queue-microtask@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.1.2.tgz#139bf8186db0c545017ec66c2664ac646d5c571e" - integrity sha512-F9wwNePtXrzZenAB3ax0Y8TSKGvuB7Qw16J30hspEUTbfUM+H827XyN3rlpwhVmtm5wuZtbKIHjOnwDn7MUxWQ== - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -raf@^3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" - integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== - dependencies: - performance-now "^2.1.0" - -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - -range-parser@^1.2.1, range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" - integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== - dependencies: - bytes "3.1.0" - http-errors "1.7.2" - iconv-lite "0.4.24" - unpipe "1.0.0" - -rc@1.2.8, rc@^1.2.8: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - -react-app-polyfill@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-2.0.0.tgz#a0bea50f078b8a082970a9d853dc34b6dcc6a3cf" - integrity sha512-0sF4ny9v/B7s6aoehwze9vJNWcmCemAUYBVasscVr92+UYiEqDXOxfKjXN685mDaMRNF3WdhHQs76oTODMocFA== - dependencies: - core-js "^3.6.5" - object-assign "^4.1.1" - promise "^8.1.0" - raf "^3.4.1" - regenerator-runtime "^0.13.7" - whatwg-fetch "^3.4.1" - -react-base16-styling@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/react-base16-styling/-/react-base16-styling-0.6.0.tgz#ef2156d66cf4139695c8a167886cb69ea660792c" - integrity sha512-yvh/7CArceR/jNATXOKDlvTnPKPmGZz7zsenQ3jUwLzHkNUR0CvY3yGYJbWJ/nnxsL8Sgmt5cO3/SILVuPO6TQ== - dependencies: - base16 "^1.0.0" - lodash.curry "^4.0.1" - lodash.flow "^3.3.0" - pure-color "^1.2.0" - -react-dev-utils@^11.0.3: - version "11.0.4" - resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-11.0.4.tgz#a7ccb60257a1ca2e0efe7a83e38e6700d17aa37a" - integrity sha512-dx0LvIGHcOPtKbeiSUM4jqpBl3TcY7CDjZdfOIcKeznE7BWr9dg0iPG90G5yfVQ+p/rGNMXdbfStvzQZEVEi4A== - dependencies: - "@babel/code-frame" "7.10.4" - address "1.1.2" - browserslist "4.14.2" - chalk "2.4.2" - cross-spawn "7.0.3" - detect-port-alt "1.1.6" - escape-string-regexp "2.0.0" - filesize "6.1.0" - find-up "4.1.0" - fork-ts-checker-webpack-plugin "4.1.6" - global-modules "2.0.0" - globby "11.0.1" - gzip-size "5.1.1" - immer "8.0.1" - is-root "2.1.0" - loader-utils "2.0.0" - open "^7.0.2" - pkg-up "3.1.0" - prompts "2.4.0" - react-error-overlay "^6.0.9" - recursive-readdir "2.2.2" - shell-quote "1.7.2" - strip-ansi "6.0.0" - text-table "0.2.0" - -react-dom@^17.0.2: - version "17.0.2" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23" - integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - scheduler "^0.20.2" - -react-error-overlay@^6.0.9: - version "6.0.9" - resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.9.tgz#3c743010c9359608c375ecd6bc76f35d93995b0a" - integrity sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew== - -react-fast-compare@^2.0.1: - version "2.0.4" - resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-2.0.4.tgz#e84b4d455b0fec113e0402c329352715196f81f9" - integrity sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw== - -react-hot-toast@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/react-hot-toast/-/react-hot-toast-2.1.1.tgz#56409ab406b534e9e58274cf98d80355ba0fdda0" - integrity sha512-Odrp4wue0fHh0pOfZt5H+9nWCMtqs3wdlFSzZPp7qsxfzmbE26QmGWIh6hG43CukiPeOjA8WQhBJU8JwtWvWbQ== - dependencies: - goober "^2.0.35" - -react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== - -react-is@^17.0.1: - version "17.0.2" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" - integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== - -react-json-view@^1.21.3: - version "1.21.3" - resolved "https://registry.yarnpkg.com/react-json-view/-/react-json-view-1.21.3.tgz#f184209ee8f1bf374fb0c41b0813cff54549c475" - integrity sha512-13p8IREj9/x/Ye4WI/JpjhoIwuzEgUAtgJZNBJckfzJt1qyh24BdTm6UQNGnyTq9dapQdrqvquZTo3dz1X6Cjw== - dependencies: - flux "^4.0.1" - react-base16-styling "^0.6.0" - react-lifecycles-compat "^3.0.4" - react-textarea-autosize "^8.3.2" - -react-lifecycles-compat@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" - integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== - -react-loader-spinner@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/react-loader-spinner/-/react-loader-spinner-4.0.0.tgz#43d9e71b0574219f64216933c28ef5faa12262f6" - integrity sha512-RU2vpEej6G4ECei0h3q6bgLU10of9Lw5O+4AwF/mtkrX5oY20Sh/AxoPJ7etbrs/7Q3u4jN5qwCwGLRKCHpk6g== - dependencies: - prop-types "^15.7.2" - -react-modern-drawer@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/react-modern-drawer/-/react-modern-drawer-1.1.2.tgz#33a8a167a86e899c5c5258cb4b2fa091d3851445" - integrity sha512-v7I6gGHZnJo7mVLFV74NyazEgl7IXJSmnmFE98olhH7sP9O0ul/1l/d7YQOARWyyLPd96P0odriX+nRusDJr6g== - -react-pro-sidebar@^0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/react-pro-sidebar/-/react-pro-sidebar-0.7.1.tgz#0b5edca0809ff6a23bda188c5db370f880690ee7" - integrity sha512-Iy1X8ce4t5Vqz4CsyzjwokGUE3/IObgmYzS0ins7/2eWKle0SMUPaWdgMKFIVjtVrMr5vmjPbRicq8FxnVaf8A== - dependencies: - "@popperjs/core" "^2.4.0" - classnames "^2.2.6" - react-slidedown "^2.4.5" - resize-observer-polyfill "^1.5.1" - -react-query@^3.24.4: - version "3.26.0" - resolved "https://registry.yarnpkg.com/react-query/-/react-query-3.26.0.tgz#7083a8622afdf946ee6d8f3a6d94591b980c1aa0" - integrity sha512-wFPnL9Y+9xf6gJHAQ8ue+vBurciJ4cfQL4dhsI0x3YyRaEXlyklUQpJzbR63CfFULVekP3iWoyFxhaNVS9RFDw== - dependencies: - "@babel/runtime" "^7.5.5" - broadcast-channel "^3.4.1" - match-sorter "^6.0.2" - -react-refresh@^0.8.3: - version "0.8.3" - resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.8.3.tgz#721d4657672d400c5e3c75d063c4a85fb2d5d68f" - integrity sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg== - -react-router-dom@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.3.0.tgz#da1bfb535a0e89a712a93b97dd76f47ad1f32363" - integrity sha512-ObVBLjUZsphUUMVycibxgMdh5jJ1e3o+KpAZBVeHcNQZ4W+uUGGWsokurzlF4YOldQYRQL4y6yFRWM4m3svmuQ== - dependencies: - "@babel/runtime" "^7.12.13" - history "^4.9.0" - loose-envify "^1.3.1" - prop-types "^15.6.2" - react-router "5.2.1" - tiny-invariant "^1.0.2" - tiny-warning "^1.0.0" - -react-router@5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.2.1.tgz#4d2e4e9d5ae9425091845b8dbc6d9d276239774d" - integrity sha512-lIboRiOtDLFdg1VTemMwud9vRVuOCZmUIT/7lUoZiSpPODiiH1UQlfXy+vPLC/7IWdFYnhRwAyNqA/+I7wnvKQ== - dependencies: - "@babel/runtime" "^7.12.13" - history "^4.9.0" - hoist-non-react-statics "^3.1.0" - loose-envify "^1.3.1" - mini-create-react-context "^0.4.0" - path-to-regexp "^1.7.0" - prop-types "^15.6.2" - react-is "^16.6.0" - tiny-invariant "^1.0.2" - tiny-warning "^1.0.0" - -react-scripts@4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-4.0.3.tgz#b1cafed7c3fa603e7628ba0f187787964cb5d345" - integrity sha512-S5eO4vjUzUisvkIPB7jVsKtuH2HhWcASREYWHAQ1FP5HyCv3xgn+wpILAEWkmy+A+tTNbSZClhxjT3qz6g4L1A== - dependencies: - "@babel/core" "7.12.3" - "@pmmmwh/react-refresh-webpack-plugin" "0.4.3" - "@svgr/webpack" "5.5.0" - "@typescript-eslint/eslint-plugin" "^4.5.0" - "@typescript-eslint/parser" "^4.5.0" - babel-eslint "^10.1.0" - babel-jest "^26.6.0" - babel-loader "8.1.0" - babel-plugin-named-asset-import "^0.3.7" - babel-preset-react-app "^10.0.0" - bfj "^7.0.2" - camelcase "^6.1.0" - case-sensitive-paths-webpack-plugin "2.3.0" - css-loader "4.3.0" - dotenv "8.2.0" - dotenv-expand "5.1.0" - eslint "^7.11.0" - eslint-config-react-app "^6.0.0" - eslint-plugin-flowtype "^5.2.0" - eslint-plugin-import "^2.22.1" - eslint-plugin-jest "^24.1.0" - eslint-plugin-jsx-a11y "^6.3.1" - eslint-plugin-react "^7.21.5" - eslint-plugin-react-hooks "^4.2.0" - eslint-plugin-testing-library "^3.9.2" - eslint-webpack-plugin "^2.5.2" - file-loader "6.1.1" - fs-extra "^9.0.1" - html-webpack-plugin "4.5.0" - identity-obj-proxy "3.0.0" - jest "26.6.0" - jest-circus "26.6.0" - jest-resolve "26.6.0" - jest-watch-typeahead "0.6.1" - mini-css-extract-plugin "0.11.3" - optimize-css-assets-webpack-plugin "5.0.4" - pnp-webpack-plugin "1.6.4" - postcss-flexbugs-fixes "4.2.1" - postcss-loader "3.0.0" - postcss-normalize "8.0.1" - postcss-preset-env "6.7.0" - postcss-safe-parser "5.0.2" - prompts "2.4.0" - react-app-polyfill "^2.0.0" - react-dev-utils "^11.0.3" - react-refresh "^0.8.3" - resolve "1.18.1" - resolve-url-loader "^3.1.2" - sass-loader "^10.0.5" - semver "7.3.2" - style-loader "1.3.0" - terser-webpack-plugin "4.2.3" - ts-pnp "1.2.0" - url-loader "4.1.1" - webpack "4.44.2" - webpack-dev-server "3.11.1" - webpack-manifest-plugin "2.2.0" - workbox-webpack-plugin "5.1.4" - optionalDependencies: - fsevents "^2.1.3" - -react-slidedown@^2.4.5: - version "2.4.7" - resolved "https://registry.yarnpkg.com/react-slidedown/-/react-slidedown-2.4.7.tgz#c09e72bba8aac25018fd644ece041da771854589" - integrity sha512-HGDfrqo70r1WVE0DwrySPdCT27/2wcZaJYh5kOnmuPSCtjDDJrNkDdn4Ep/cma2VVfwupeAGhbc2pbrGThU6VQ== - dependencies: - tslib "^2.0.0" - -react-textarea-autosize@^8.3.2: - version "8.3.4" - resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-8.3.4.tgz#270a343de7ad350534141b02c9cb78903e553524" - integrity sha512-CdtmP8Dc19xL8/R6sWvtknD/eCXkQr30dtvC4VmGInhRsfF8X/ihXCq6+9l9qbxmKRiq407/7z5fxE7cVWQNgQ== - dependencies: - "@babel/runtime" "^7.10.2" - use-composed-ref "^1.3.0" - use-latest "^1.2.1" - -react-timeago@^6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/react-timeago/-/react-timeago-6.2.1.tgz#f19716811156617ceb9c9f9a44315d85197c7fba" - integrity sha512-b9EObWO8wy4qwfOzj+g/RQZRrPvtMv1Pz12FCdAWKWCXbDGt0rZLyiyTGEr0Lh1O8w5xa48CtRpl3LI+CtGCyw== - -react@^17.0.2: - version "17.0.2" - resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" - integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - -read-config-file@6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/read-config-file/-/read-config-file-6.2.0.tgz#71536072330bcd62ba814f91458b12add9fc7ade" - integrity sha512-gx7Pgr5I56JtYz+WuqEbQHj/xWo+5Vwua2jhb1VwM4Wid5PqYmZ4i00ZB0YEGIfkVBsCv9UrjgyqCiQfS/Oosg== - dependencies: - dotenv "^9.0.2" - dotenv-expand "^5.1.0" - js-yaml "^4.1.0" - json5 "^2.2.0" - lazy-val "^1.0.4" - -read-pkg-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" - integrity sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw== - dependencies: - find-up "^2.0.0" - read-pkg "^3.0.0" - -read-pkg-up@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" - integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== - dependencies: - find-up "^4.1.0" - read-pkg "^5.2.0" - type-fest "^0.8.1" - -read-pkg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" - integrity sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA== - dependencies: - load-json-file "^4.0.0" - normalize-package-data "^2.3.2" - path-type "^3.0.0" - -read-pkg@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" - integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== - dependencies: - "@types/normalize-package-data" "^2.4.0" - normalize-package-data "^2.5.0" - parse-json "^5.0.0" - type-fest "^0.6.0" - -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - 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" - -readable-stream@^3.0.6, readable-stream@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readdirp@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" - integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== - dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -recursive-readdir@2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f" - integrity sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg== - dependencies: - minimatch "3.0.4" - -redent@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" - integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== - dependencies: - indent-string "^4.0.0" - strip-indent "^3.0.0" - -regenerate-unicode-properties@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz#54d09c7115e1f53dc2314a974b32c1c344efe326" - integrity sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA== - dependencies: - regenerate "^1.4.2" - -regenerate@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" - integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== - -regenerator-runtime@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" - integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== - -regenerator-runtime@^0.13.4, regenerator-runtime@^0.13.7: - version "0.13.9" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" - integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== - -regenerator-transform@^0.14.2: - version "0.14.5" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" - integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== - dependencies: - "@babel/runtime" "^7.8.4" - -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - -regex-parser@^2.2.11: - version "2.2.11" - resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.11.tgz#3b37ec9049e19479806e878cabe7c1ca83ccfe58" - integrity sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q== - -regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" - integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -regexpp@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" - integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== - -regexpu-core@^4.7.1: - version "4.8.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.8.0.tgz#e5605ba361b67b1718478501327502f4479a98f0" - integrity sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg== - dependencies: - regenerate "^1.4.2" - regenerate-unicode-properties "^9.0.0" - regjsgen "^0.5.2" - regjsparser "^0.7.0" - unicode-match-property-ecmascript "^2.0.0" - unicode-match-property-value-ecmascript "^2.0.0" - -registry-auth-token@^4.0.0: - version "4.2.2" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.2.tgz#f02d49c3668884612ca031419491a13539e21fac" - integrity sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg== - dependencies: - rc "1.2.8" - -registry-url@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" - integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== - dependencies: - rc "^1.2.8" - -regjsgen@^0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" - integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== - -regjsparser@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.7.0.tgz#a6b667b54c885e18b52554cb4960ef71187e9968" - integrity sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ== - dependencies: - jsesc "~0.5.0" - -relateurl@^0.2.7: - version "0.2.7" - resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" - integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog== - -remove-accents@0.4.2: - version "0.4.2" - resolved "https://registry.yarnpkg.com/remove-accents/-/remove-accents-0.4.2.tgz#0a43d3aaae1e80db919e07ae254b285d9e1c7bb5" - integrity sha512-7pXIJqJOq5tFgG1A2Zxti3Ht8jJF337m4sowbuHsW30ZnkQFnDzy9qBNhgzX8ZLW4+UBcXiiR7SwR6pokHsxiA== - -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw== - -renderkid@^2.0.4: - version "2.0.7" - resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.7.tgz#464f276a6bdcee606f4a15993f9b29fc74ca8609" - integrity sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ== - dependencies: - css-select "^4.1.3" - dom-converter "^0.2.0" - htmlparser2 "^6.1.0" - lodash "^4.17.21" - strip-ansi "^3.0.1" - -repeat-element@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" - integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== - -require-from-string@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" - integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== - -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== - -resize-observer-polyfill@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" - integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== - -resolve-cwd@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" - integrity sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg== - dependencies: - resolve-from "^3.0.0" - -resolve-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" - integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== - dependencies: - resolve-from "^5.0.0" - -resolve-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - integrity sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw== - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - -resolve-pathname@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd" - integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== - -resolve-url-loader@^3.1.2: - version "3.1.4" - resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-3.1.4.tgz#3c16caebe0b9faea9c7cc252fa49d2353c412320" - integrity sha512-D3sQ04o0eeQEySLrcz4DsX3saHfsr8/N6tfhblxgZKXxMT2Louargg12oGNfoTRLV09GXhVUe5/qgA5vdgNigg== - dependencies: - adjust-sourcemap-loader "3.0.0" - camelcase "5.3.1" - compose-function "3.0.3" - convert-source-map "1.7.0" - es6-iterator "2.0.3" - loader-utils "1.2.3" - postcss "7.0.36" - rework "1.0.1" - rework-visit "1.0.0" - source-map "0.6.1" - -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== - -resolve@1.18.1, resolve@^1.3.2: - version "1.18.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.18.1.tgz#018fcb2c5b207d2a6424aee361c5a266da8f4130" - integrity sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA== - dependencies: - is-core-module "^2.0.0" - path-parse "^1.0.6" - -resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.20.0, resolve@^1.8.1: - version "1.20.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" - integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== - dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" - -resolve@^2.0.0-next.3: - version "2.0.0-next.3" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.3.tgz#d41016293d4a8586a39ca5d9b5f15cbea1f55e46" - integrity sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q== - dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" - -responselike@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" - integrity sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ== - dependencies: - lowercase-keys "^1.0.0" - -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - -retry@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" - integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rework-visit@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/rework-visit/-/rework-visit-1.0.0.tgz#9945b2803f219e2f7aca00adb8bc9f640f842c9a" - integrity sha512-W6V2fix7nCLUYX1v6eGPrBOZlc03/faqzP4sUxMAJMBMOPYhfV/RyLegTufn5gJKaOITyi+gvf0LXDZ9NzkHnQ== - -rework@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/rework/-/rework-1.0.1.tgz#30806a841342b54510aa4110850cd48534144aa7" - integrity sha512-eEjL8FdkdsxApd0yWVZgBGzfCQiT8yqSc2H1p4jpZpQdtz7ohETiDMoje5PlM8I9WgkqkreVxFUKYOiJdVWDXw== - dependencies: - convert-source-map "^0.3.3" - css "^2.0.0" - -rgb-regex@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" - integrity sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w== - -rgba-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" - integrity sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg== - -rimraf@3.0.2, rimraf@^3.0.0, rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -rimraf@^2.5.4, rimraf@^2.6.3: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - -roarr@^2.15.3: - version "2.15.4" - resolved "https://registry.yarnpkg.com/roarr/-/roarr-2.15.4.tgz#f5fe795b7b838ccfe35dc608e0282b9eba2e7afd" - integrity sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A== - dependencies: - boolean "^3.0.1" - detect-node "^2.0.4" - globalthis "^1.0.1" - json-stringify-safe "^5.0.1" - semver-compare "^1.0.0" - sprintf-js "^1.1.2" - -rollup-plugin-babel@^4.3.3: - version "4.4.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz#d15bd259466a9d1accbdb2fe2fff17c52d030acb" - integrity sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - rollup-pluginutils "^2.8.1" - -rollup-plugin-terser@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-5.3.1.tgz#8c650062c22a8426c64268548957463bf981b413" - integrity sha512-1pkwkervMJQGFYvM9nscrUoncPwiKR/K+bHdjv6PFgRo3cgPHoRT83y2Aa3GvINj4539S15t/tpFPb775TDs6w== - dependencies: - "@babel/code-frame" "^7.5.5" - jest-worker "^24.9.0" - rollup-pluginutils "^2.8.2" - serialize-javascript "^4.0.0" - terser "^4.6.2" - -rollup-pluginutils@^2.8.1, rollup-pluginutils@^2.8.2: - version "2.8.2" - resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" - integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== - dependencies: - estree-walker "^0.6.1" - -rollup@^1.31.1: - version "1.32.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.32.1.tgz#4480e52d9d9e2ae4b46ba0d9ddeaf3163940f9c4" - integrity sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A== - dependencies: - "@types/estree" "*" - "@types/node" "*" - acorn "^7.1.0" - -rsvp@^4.8.4: - version "4.8.5" - resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" - integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -run-queue@^1.0.0, run-queue@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" - integrity sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg== - dependencies: - aproba "^1.1.1" - -rxjs@^6.6.7: - version "6.6.7" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" - integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== - dependencies: - tslib "^1.9.0" - -rxjs@^7.0.0, rxjs@^7.5.4: - version "7.5.6" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.6.tgz#0446577557862afd6903517ce7cae79ecb9662bc" - integrity sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw== - dependencies: - tslib "^2.1.0" - -rxjs@^7.5.2: - version "7.5.7" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.7.tgz#2ec0d57fdc89ece220d2e702730ae8f1e49def39" - integrity sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA== - dependencies: - tslib "^2.1.0" - -safe-buffer@5.1.2, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-buffer@^5.2.0, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg== - dependencies: - ret "~0.1.10" - -"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sane@^4.0.3: - version "4.1.0" - resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" - integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== - dependencies: - "@cnakazawa/watch" "^1.0.3" - anymatch "^2.0.0" - capture-exit "^2.0.0" - exec-sh "^0.3.2" - execa "^1.0.0" - fb-watchman "^2.0.0" - micromatch "^3.1.4" - minimist "^1.1.1" - walker "~1.0.5" - -sanitize-filename@^1.6.3: - version "1.6.3" - resolved "https://registry.yarnpkg.com/sanitize-filename/-/sanitize-filename-1.6.3.tgz#755ebd752045931977e30b2025d340d7c9090378" - integrity sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg== - dependencies: - truncate-utf8-bytes "^1.0.0" - -sanitize.css@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/sanitize.css/-/sanitize.css-10.0.0.tgz#b5cb2547e96d8629a60947544665243b1dc3657a" - integrity sha512-vTxrZz4dX5W86M6oVWVdOVe72ZiPs41Oi7Z6Km4W5Turyz28mrXSJhhEBZoRtzJWIv3833WKVwLSDWWkEfupMg== - -sass-loader@^10.0.5: - version "10.2.0" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-10.2.0.tgz#3d64c1590f911013b3fa48a0b22a83d5e1494716" - integrity sha512-kUceLzC1gIHz0zNJPpqRsJyisWatGYNFRmv2CKZK2/ngMJgLqxTbXwe/hJ85luyvZkgqU3VlJ33UVF2T/0g6mw== - dependencies: - klona "^2.0.4" - loader-utils "^2.0.0" - neo-async "^2.6.2" - schema-utils "^3.0.0" - semver "^7.3.2" - -sass@^1.42.1: - version "1.42.1" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.42.1.tgz#5ab17bebc1cb1881ad2e0c9a932c66ad64e441e2" - integrity sha512-/zvGoN8B7dspKc5mC6HlaygyCBRvnyzzgD5khiaCfglWztY99cYoiTUksVx11NlnemrcfH5CEaCpsUKoW0cQqg== - dependencies: - chokidar ">=3.0.0 <4.0.0" - -sax@^1.2.4, sax@~1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - -saxes@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" - integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== - dependencies: - xmlchars "^2.2.0" - -scheduler@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" - integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - -schema-utils@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" - integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== - dependencies: - ajv "^6.1.0" - ajv-errors "^1.0.0" - ajv-keywords "^3.1.0" - -schema-utils@^2.6.5, schema-utils@^2.7.0, schema-utils@^2.7.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" - integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== - dependencies: - "@types/json-schema" "^7.0.5" - ajv "^6.12.4" - ajv-keywords "^3.5.2" - -schema-utils@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" - integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== - dependencies: - "@types/json-schema" "^7.0.8" - ajv "^6.12.5" - ajv-keywords "^3.5.2" - -select-hose@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" - integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== - -selfsigned@^1.10.8: - version "1.10.11" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.11.tgz#24929cd906fe0f44b6d01fb23999a739537acbe9" - integrity sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA== - dependencies: - node-forge "^0.10.0" - -semver-compare@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" - integrity sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow== - -semver-diff@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b" - integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg== - dependencies: - semver "^6.3.0" - -"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" - integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== - -semver@7.3.2: - version "7.3.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" - integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== - -semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@^7.2.1, semver@^7.3.2, semver@^7.3.5: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== - dependencies: - lru-cache "^6.0.0" - -semver@^7.3.4, semver@^7.3.7: - version "7.3.7" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" - integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== - dependencies: - lru-cache "^6.0.0" - -send@0.17.1: - version "0.17.1" - resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" - integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== - dependencies: - debug "2.6.9" - depd "~1.1.2" - destroy "~1.0.4" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "~1.7.2" - mime "1.6.0" - ms "2.1.1" - on-finished "~2.3.0" - range-parser "~1.2.1" - statuses "~1.5.0" - -serialize-error@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-7.0.1.tgz#f1360b0447f61ffb483ec4157c737fab7d778e18" - integrity sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw== - dependencies: - type-fest "^0.13.1" - -serialize-javascript@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" - integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== - dependencies: - randombytes "^2.1.0" - -serialize-javascript@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" - integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== - dependencies: - randombytes "^2.1.0" - -serve-index@^1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" - integrity sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw== - 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" - -serve-static@1.14.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" - integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.17.1" - -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== - -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -setimmediate@^1.0.4, setimmediate@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== - -setprototypeof@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" - integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== - -setprototypeof@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" - integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== - -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -sha3@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/sha3/-/sha3-2.1.4.tgz#000fac0fe7c2feac1f48a25e7a31b52a6492cc8f" - integrity sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg== - dependencies: - buffer "6.0.3" - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== - dependencies: - shebang-regex "^1.0.0" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -shell-env@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/shell-env/-/shell-env-0.3.0.tgz#2250339022989165bda4eb7bf383afeaaa92dc34" - integrity sha512-VrC6OSm5riGAFWvlYExA80Rrlfi4STsztNXjyet9Jf20hbiVeeKvJIesb92gJk7zlmpQjB0wOZpy8ClzVdPVWQ== - dependencies: - default-shell "^1.0.0" - execa "^0.5.0" - strip-ansi "^3.0.0" - -shell-path@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/shell-path/-/shell-path-2.1.0.tgz#ea7d06ae1070874a1bac5c65bb9bdd62e4f67a38" - integrity sha512-w+mbrnpA+r5jSFS4MgFfxZJ1Wx8qMKkR4gvQ+wgaZEoZCMMYZ6Yl/dcNjW/zLMfmx5a9IVIFwGAtUJcnDMmFrg== - dependencies: - shell-env "^0.3.0" - -shell-quote@1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" - integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== - -shell-quote@^1.7.3: - version "1.7.3" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.3.tgz#aa40edac170445b9a431e17bb62c0b881b9c4123" - integrity sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw== - -shellwords@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" - integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== - -side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== - dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" - -signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: - version "3.0.5" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.5.tgz#9e3e8cc0c75a99472b44321033a7702e7738252f" - integrity sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ== - -signal-exit@^3.0.7: - version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - -simple-swizzle@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" - integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== - dependencies: - is-arrayish "^0.3.1" - -sisteransi@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" - integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -slice-ansi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" - integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - -slice-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" - integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - -smart-buffer@^4.0.2, smart-buffer@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" - integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== - -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -sockjs-client@^1.5.0: - version "1.5.2" - resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.5.2.tgz#4bc48c2da9ce4769f19dc723396b50f5c12330a3" - integrity sha512-ZzRxPBISQE7RpzlH4tKJMQbHM9pabHluk0WBaxAQ+wm/UieeBVBou0p4wVnSQGN9QmpAZygQ0cDIypWuqOFmFQ== - dependencies: - debug "^3.2.6" - eventsource "^1.0.7" - faye-websocket "^0.11.3" - inherits "^2.0.4" - json3 "^3.3.3" - url-parse "^1.5.3" - -sockjs@^0.3.21: - version "0.3.21" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.21.tgz#b34ffb98e796930b60a0cfa11904d6a339a7d417" - integrity sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw== - dependencies: - faye-websocket "^0.11.3" - uuid "^3.4.0" - websocket-driver "^0.7.4" - -socks-proxy-agent@^6.0.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz#2687a31f9d7185e38d530bef1944fe1f1496d6ce" - integrity sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ== - dependencies: - agent-base "^6.0.2" - debug "^4.3.3" - socks "^2.6.2" - -socks@^2.6.2: - version "2.7.0" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.7.0.tgz#f9225acdb841e874dca25f870e9130990f3913d0" - integrity sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA== - dependencies: - ip "^2.0.0" - smart-buffer "^4.2.0" - -sort-keys@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" - integrity sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg== - dependencies: - is-plain-obj "^1.0.0" - -source-list-map@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" - integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== - -source-map-js@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-0.6.2.tgz#0bb5de631b41cfbda6cfba8bd05a80efdfd2385e" - integrity sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug== - -source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-resolve@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.6.0.tgz#3d9df87e236b53f16d01e58150fc7711138e5ed2" - integrity sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - -source-map-support@^0.5.19: - version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-support@^0.5.6, source-map-support@~0.5.12, source-map-support@~0.5.20: - version "0.5.20" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.20.tgz#12166089f8f5e5e8c56926b377633392dd2cb6c9" - integrity sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-url@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" - integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== - -source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@^0.5.0, source-map@^0.5.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== - -source-map@^0.7.3, source-map@~0.7.2: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - -sourcemap-codec@^1.4.4: - version "1.4.8" - resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" - integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== - -spawn-command@^0.0.2-1: - version "0.0.2-1" - resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2-1.tgz#62f5e9466981c1b796dc5929937e11c9c6921bd0" - integrity sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg== - -spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" - integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" - integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== - -spdx-expression-parse@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.10" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz#0d9becccde7003d6c658d487dd48a32f0bf3014b" - integrity sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA== - -spdy-transport@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" - integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== - 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" - -spdy@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" - integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== - 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" - -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - -sprintf-js@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673" - integrity sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug== - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== - -sqlite3@^5.0.11: - version "5.0.11" - resolved "https://registry.yarnpkg.com/sqlite3/-/sqlite3-5.0.11.tgz#102c835d70be66da9d95a383fd6ea084a082ef7f" - integrity sha512-4akFOr7u9lJEeAWLJxmwiV43DJcGV7w3ab7SjQFAFaTVyknY3rZjvXTKIVtWqUoY4xwhjwoHKYs2HDW2SoHVsA== - dependencies: - "@mapbox/node-pre-gyp" "^1.0.0" - node-addon-api "^4.2.0" - tar "^6.1.11" - optionalDependencies: - node-gyp "8.x" - -ssri@^6.0.1: - version "6.0.2" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5" - integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q== - dependencies: - figgy-pudding "^3.5.1" - -ssri@^8.0.0, ssri@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" - integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== - dependencies: - minipass "^3.1.1" - -stable@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" - integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== - -stack-utils@^2.0.2: - version "2.0.5" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.5.tgz#d25265fca995154659dbbfba3b49254778d2fdd5" - integrity sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA== - dependencies: - escape-string-regexp "^2.0.0" - -stackframe@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.2.0.tgz#52429492d63c62eb989804c11552e3d22e779303" - integrity sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA== - -stat-mode@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/stat-mode/-/stat-mode-1.0.0.tgz#68b55cb61ea639ff57136f36b216a291800d1465" - integrity sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg== - -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g== - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== - -stream-browserify@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" - integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== - dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" - -stream-each@^1.1.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" - integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== - dependencies: - end-of-stream "^1.1.0" - stream-shift "^1.0.0" - -stream-http@^2.7.2: - version "2.8.3" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" - integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^2.3.6" - to-arraybuffer "^1.0.0" - xtend "^4.0.0" - -stream-shift@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" - integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== - -strict-uri-encode@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" - integrity sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ== - -string-argv@0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" - integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== - -string-length@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" - integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== - dependencies: - char-regex "^1.0.2" - strip-ansi "^6.0.0" - -string-natural-compare@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4" - integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw== - -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - 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" - -string-width@^3.0.0, string-width@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" - -string.prototype.matchall@^4.0.5: - version "4.0.6" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz#5abb5dabc94c7b0ea2380f65ba610b3a544b15fa" - integrity sha512-6WgDX8HmQqvEd7J+G6VtAahhsQIssiZ8zl7zKh1VDMFyL3hRTJP4FTNA3RbIp2TOQ9AYNDcc7e3fH0Qbup+DBg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - get-intrinsic "^1.1.1" - has-symbols "^1.0.2" - internal-slot "^1.0.3" - regexp.prototype.flags "^1.3.1" - side-channel "^1.0.4" - -string.prototype.trimend@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" - integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -string.prototype.trimstart@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" - integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -string_decoder@^1.0.0, string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -stringify-object@3.3.0, stringify-object@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" - integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== - dependencies: - get-own-enumerable-property-symbols "^3.0.0" - is-obj "^1.0.1" - is-regexp "^1.0.0" - -strip-ansi@6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== - dependencies: - ansi-regex "^5.0.0" - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== - -strip-bom@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" - integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== - -strip-comments@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/strip-comments/-/strip-comments-1.0.2.tgz#82b9c45e7f05873bee53f37168af930aa368679d" - integrity sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw== - dependencies: - babel-extract-comments "^1.0.0" - babel-plugin-transform-object-rest-spread "^6.26.0" - -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q== - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -strip-indent@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" - integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== - dependencies: - min-indent "^1.0.0" - -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== - -style-loader@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.3.0.tgz#828b4a3b3b7e7aa5847ce7bae9e874512114249e" - integrity sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q== - dependencies: - loader-utils "^2.0.0" - schema-utils "^2.7.0" - -style-mod@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/style-mod/-/style-mod-4.0.0.tgz#97e7c2d68b592975f2ca7a63d0dd6fcacfe35a01" - integrity sha512-OPhtyEjyyN9x3nhPsu76f52yUGXiZcgvsrFVtvTkyGRQJ0XK+GPc6ov1z+lRpbeabka+MYEQxOYRnt5nF30aMw== - -stylehacks@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" - integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== - dependencies: - browserslist "^4.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - -sumchecker@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/sumchecker/-/sumchecker-3.0.1.tgz#6377e996795abb0b6d348e9b3e1dfb24345a8e42" - integrity sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg== - dependencies: - debug "^4.1.0" - -supports-color@8.1.1, supports-color@^8.1.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" - integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.0.0, supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-hyperlinks@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" - integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ== - dependencies: - has-flag "^4.0.0" - supports-color "^7.0.0" - -svg-parser@^2.0.2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" - integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== - -svgo@^1.0.0, svgo@^1.2.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" - integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== - dependencies: - chalk "^2.4.1" - coa "^2.0.2" - css-select "^2.0.0" - css-select-base-adapter "^0.1.1" - css-tree "1.0.0-alpha.37" - csso "^4.0.2" - js-yaml "^3.13.1" - mkdirp "~0.5.1" - object.values "^1.1.0" - sax "~1.2.4" - stable "^0.1.8" - unquote "~1.1.1" - util.promisify "~1.0.0" - -symbol-tree@^3.2.4: - version "3.2.4" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" - integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== - -table@^6.0.9: - version "6.7.2" - resolved "https://registry.yarnpkg.com/table/-/table-6.7.2.tgz#a8d39b9f5966693ca8b0feba270a78722cbaf3b0" - integrity sha512-UFZK67uvyNivLeQbVtkiUs8Uuuxv24aSL4/Vil2PJVtMgU8Lx0CYkP12uCGa3kjyQzOSgV1+z9Wkb82fCGsO0g== - dependencies: - ajv "^8.0.1" - lodash.clonedeep "^4.5.0" - lodash.truncate "^4.4.2" - slice-ansi "^4.0.0" - string-width "^4.2.3" - strip-ansi "^6.0.1" - -tapable@^1.0.0, tapable@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" - integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== - -tar@^6.0.2, tar@^6.1.11, tar@^6.1.2: - version "6.1.11" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" - integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== - dependencies: - chownr "^2.0.0" - fs-minipass "^2.0.0" - minipass "^3.0.0" - minizlib "^2.1.1" - mkdirp "^1.0.3" - yallist "^4.0.0" - -temp-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" - integrity sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ== - -temp-file@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/temp-file/-/temp-file-3.4.0.tgz#766ea28911c683996c248ef1a20eea04d51652c7" - integrity sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg== - dependencies: - async-exit-hook "^2.0.1" - fs-extra "^10.0.0" - -tempy@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/tempy/-/tempy-0.3.0.tgz#6f6c5b295695a16130996ad5ab01a8bd726e8bf8" - integrity sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ== - dependencies: - temp-dir "^1.0.0" - type-fest "^0.3.1" - unique-string "^1.0.0" - -terminal-link@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" - integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== - dependencies: - ansi-escapes "^4.2.1" - supports-hyperlinks "^2.0.0" - -terser-webpack-plugin@4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz#28daef4a83bd17c1db0297070adc07fc8cfc6a9a" - integrity sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ== - dependencies: - cacache "^15.0.5" - find-cache-dir "^3.3.1" - jest-worker "^26.5.0" - p-limit "^3.0.2" - schema-utils "^3.0.0" - serialize-javascript "^5.0.1" - source-map "^0.6.1" - terser "^5.3.4" - webpack-sources "^1.4.3" - -terser-webpack-plugin@^1.4.3: - version "1.4.5" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" - integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== - dependencies: - cacache "^12.0.2" - find-cache-dir "^2.1.0" - is-wsl "^1.1.0" - schema-utils "^1.0.0" - serialize-javascript "^4.0.0" - source-map "^0.6.1" - terser "^4.1.2" - webpack-sources "^1.4.0" - worker-farm "^1.7.0" - -terser@^4.1.2, terser@^4.6.2, terser@^4.6.3: - version "4.8.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" - integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== - dependencies: - commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" - -terser@^5.3.4: - version "5.9.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.9.0.tgz#47d6e629a522963240f2b55fcaa3c99083d2c351" - integrity sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ== - dependencies: - commander "^2.20.0" - source-map "~0.7.2" - source-map-support "~0.5.20" - -test-exclude@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" - integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== - dependencies: - "@istanbuljs/schema" "^0.1.2" - glob "^7.1.4" - minimatch "^3.0.4" - -text-table@0.2.0, text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== - -throat@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" - integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== - -through2@^2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - -through@^2.3.8: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== - -thunky@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" - integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== - -timers-browserify@^2.0.4: - version "2.0.12" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" - integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== - dependencies: - setimmediate "^1.0.4" - -timsort@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" - integrity sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A== - -tiny-invariant@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.1.0.tgz#634c5f8efdc27714b7f386c35e6760991d230875" - integrity sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw== - -tiny-warning@^1.0.0, tiny-warning@^1.0.2, tiny-warning@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" - integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== - -tmp-promise@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/tmp-promise/-/tmp-promise-3.0.3.tgz#60a1a1cc98c988674fcbfd23b6e3367bdeac4ce7" - integrity sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ== - dependencies: - tmp "^0.2.0" - -tmp@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" - integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== - dependencies: - rimraf "^3.0.0" - -tmpl@1.0.x: - version "1.0.5" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" - integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== - -to-arraybuffer@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" - integrity sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA== - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== - -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg== - dependencies: - kind-of "^3.0.2" - -to-readable-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" - integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg== - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -toggle-selection@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32" - integrity sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ== - -toidentifier@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" - integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== - -toposort@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/toposort/-/toposort-2.0.2.tgz#ae21768175d1559d48bef35420b2f4962f09c330" - integrity sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg== - -tough-cookie@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" - integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== - dependencies: - psl "^1.1.33" - punycode "^2.1.1" - universalify "^0.1.2" - -tr46@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" - integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== - dependencies: - punycode "^2.1.1" - -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== - -tree-kill@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" - integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== - -truncate-utf8-bytes@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz#405923909592d56f78a5818434b0b78489ca5f2b" - integrity sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ== - dependencies: - utf8-byte-length "^1.0.1" - -tryer@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" - integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== - -ts-pnp@1.2.0, ts-pnp@^1.1.6: - version "1.2.0" - resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" - integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== - -tsconfig-paths@^3.11.0: - version "3.11.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.11.0.tgz#954c1fe973da6339c78e06b03ce2e48810b65f36" - integrity sha512-7ecdYDnIdmv639mmDwslG6KQg1Z9STTz1j7Gcz0xa+nshh/gKDAHcPxRbWOsA3SPp0tXP2leTcY9Kw+NAkfZzA== - dependencies: - "@types/json5" "^0.0.29" - json5 "^1.0.1" - minimist "^1.2.0" - strip-bom "^3.0.0" - -tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tslib@^2.0.0, tslib@^2.0.1, tslib@^2.1.0, tslib@^2.3.1: - version "2.4.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" - integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== - -tslib@^2.0.3: - version "2.3.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" - integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== - -tsutils@^3.17.1, tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - -tty-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - integrity sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw== - -tunnel@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c" - integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg== - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== - dependencies: - prelude-ls "~1.1.2" - -type-detect@4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== - -type-fest@^0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934" - integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg== - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -type-fest@^0.21.3: - version "0.21.3" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" - integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== - -type-fest@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" - integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== - -type-fest@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" - integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== - -type-fest@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== - -type-is@~1.6.17, type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -type@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" - integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== - -type@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/type/-/type-2.5.0.tgz#0a2e78c2e77907b252abe5f298c1b01c63f0db3d" - integrity sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw== - -typed-emitter@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/typed-emitter/-/typed-emitter-2.1.0.tgz#ca78e3d8ef1476f228f548d62e04e3d4d3fd77fb" - integrity sha512-g/KzbYKbH5C2vPkaXGu8DJlHrGKHLsM25Zg9WuC9pMGfuvT+X25tZQWo5fK1BjBm8+UrVE9LDCvaY0CQk+fXDA== - optionalDependencies: - rxjs "^7.5.2" - -typedarray-to-buffer@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" - integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== - dependencies: - is-typedarray "^1.0.0" - -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== - -typescript@^4.4.3: - version "4.4.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.4.3.tgz#bdc5407caa2b109efd4f82fe130656f977a29324" - integrity sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA== - -ua-parser-js@^0.7.30: - version "0.7.31" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.31.tgz#649a656b191dffab4f21d5e053e27ca17cbff5c6" - integrity sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ== - -unbox-primitive@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" - integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== - dependencies: - function-bind "^1.1.1" - has-bigints "^1.0.1" - has-symbols "^1.0.2" - which-boxed-primitive "^1.0.2" - -unicode-canonical-property-names-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" - integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== - -unicode-match-property-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" - integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== - dependencies: - unicode-canonical-property-names-ecmascript "^2.0.0" - unicode-property-aliases-ecmascript "^2.0.0" - -unicode-match-property-value-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714" - integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw== - -unicode-property-aliases-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8" - integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ== - -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" - -uniq@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" - integrity sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA== - -uniqs@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" - integrity sha512-mZdDpf3vBV5Efh29kMw5tXoup/buMgxLzOt/XKFKcVmi+15ManNQWr6HfZ2aiZTYlYixbdNJ0KFmIZIv52tHSQ== - -unique-filename@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" - integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== - dependencies: - unique-slug "^2.0.0" - -unique-slug@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" - integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== - dependencies: - imurmurhash "^0.1.4" - -unique-string@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" - integrity sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg== - dependencies: - crypto-random-string "^1.0.0" - -unique-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" - integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== - dependencies: - crypto-random-string "^2.0.0" - -universalify@^0.1.0, universalify@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -universalify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" - integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== - -unload@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/unload/-/unload-2.2.0.tgz#ccc88fdcad345faa06a92039ec0f80b488880ef7" - integrity sha512-B60uB5TNBLtN6/LsgAf3udH9saB5p7gqJwcFfbOEZ8BcBHnGwCf6G/TGiEqkRAxX7zAFIUtzdrXQSdL3Q/wqNA== - dependencies: - "@babel/runtime" "^7.6.2" - detect-node "^2.0.4" - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== - -unquote@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" - integrity sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg== - -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ== - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -upath@^1.1.1, upath@^1.1.2, upath@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" - integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== - -update-notifier@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-5.1.0.tgz#4ab0d7c7f36a231dd7316cf7729313f0214d9ad9" - integrity sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw== - dependencies: - boxen "^5.0.0" - chalk "^4.1.0" - configstore "^5.0.1" - has-yarn "^2.1.0" - import-lazy "^2.1.0" - is-ci "^2.0.0" - is-installed-globally "^0.4.0" - is-npm "^5.0.0" - is-yarn-global "^0.3.0" - latest-version "^5.1.0" - pupa "^2.1.1" - semver "^7.3.4" - semver-diff "^3.1.1" - xdg-basedir "^4.0.0" - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== - -url-loader@4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-4.1.1.tgz#28505e905cae158cf07c92ca622d7f237e70a4e2" - integrity sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA== - dependencies: - loader-utils "^2.0.0" - mime-types "^2.1.27" - schema-utils "^3.0.0" - -url-parse-lax@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" - integrity sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ== - dependencies: - prepend-http "^2.0.0" - -url-parse@^1.4.3, url-parse@^1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.3.tgz#71c1303d38fb6639ade183c2992c8cc0686df862" - integrity sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ== - dependencies: - querystringify "^2.1.1" - requires-port "^1.0.0" - -url@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - integrity sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ== - dependencies: - punycode "1.3.2" - querystring "0.2.0" - -use-composed-ref@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/use-composed-ref/-/use-composed-ref-1.3.0.tgz#3d8104db34b7b264030a9d916c5e94fbe280dbda" - integrity sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ== - -use-isomorphic-layout-effect@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz#497cefb13d863d687b08477d9e5a164ad8c1a6fb" - integrity sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA== - -use-latest@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/use-latest/-/use-latest-1.2.1.tgz#d13dfb4b08c28e3e33991546a2cee53e14038cf2" - integrity sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw== - dependencies: - use-isomorphic-layout-effect "^1.1.1" - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - -utf8-byte-length@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz#f45f150c4c66eee968186505ab93fcbb8ad6bf61" - integrity sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA== - -util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== - -util.promisify@1.0.0, util.promisify@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" - integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== - dependencies: - define-properties "^1.1.2" - object.getownpropertydescriptors "^2.0.3" - -util@0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" - integrity sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ== - dependencies: - inherits "2.0.1" - -util@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" - integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== - dependencies: - inherits "2.0.3" - -utila@~0.4: - version "0.4.0" - resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" - integrity sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA== - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== - -uuid@^3.3.2, uuid@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - -uuid@^8.3.0: - version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - -v8-compile-cache@^2.0.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" - integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== - -v8-to-istanbul@^7.0.0: - version "7.1.2" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz#30898d1a7fa0c84d225a2c1434fb958f290883c1" - integrity sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^1.6.0" - source-map "^0.7.3" - -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -value-equal@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c" - integrity sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw== - -vary@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== - -vendors@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" - integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== - -verror@^1.10.0: - version "1.10.1" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.1.tgz#4bf09eeccf4563b109ed4b3d458380c972b0cdeb" - integrity sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg== - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - -vm-browserify@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" - integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== - -w3c-hr-time@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" - integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== - dependencies: - browser-process-hrtime "^1.0.0" - -w3c-keyname@^2.2.4: - version "2.2.6" - resolved "https://registry.yarnpkg.com/w3c-keyname/-/w3c-keyname-2.2.6.tgz#8412046116bc16c5d73d4e612053ea10a189c85f" - integrity sha512-f+fciywl1SJEniZHD6H+kUO8gOnwIr7f4ijKA6+ZvJFjeGi1r4PDLl53Ayud9O/rk64RqgoQine0feoeOU0kXg== - -w3c-xmlserializer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" - integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== - dependencies: - xml-name-validator "^3.0.0" - -wait-on@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/wait-on/-/wait-on-6.0.1.tgz#16bbc4d1e4ebdd41c5b4e63a2e16dbd1f4e5601e" - integrity sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw== - dependencies: - axios "^0.25.0" - joi "^17.6.0" - lodash "^4.17.21" - minimist "^1.2.5" - rxjs "^7.5.4" - -walker@^1.0.7, walker@~1.0.5: - version "1.0.7" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" - integrity sha512-cF4je9Fgt6sj1PKfuFt9jpQPeHosM+Ryma/hfY9U7uXGKM7pJCsF0v2r55o+Il54+i77SyYWetB4tD1dEygRkw== - dependencies: - makeerror "1.0.x" - -watchpack-chokidar2@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957" - integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww== - dependencies: - chokidar "^2.1.8" - -watchpack@^1.7.4: - version "1.7.5" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453" - integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== - dependencies: - graceful-fs "^4.1.2" - neo-async "^2.5.0" - optionalDependencies: - chokidar "^3.4.1" - watchpack-chokidar2 "^2.0.1" - -wbuf@^1.1.0, wbuf@^1.7.3: - version "1.7.3" - resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" - integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== - dependencies: - minimalistic-assert "^1.0.0" - -web-vitals@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/web-vitals/-/web-vitals-1.1.2.tgz#06535308168986096239aa84716e68b4c6ae6d1c" - integrity sha512-PFMKIY+bRSXlMxVAQ+m2aw9c/ioUYfDgrYot0YUa+/xa0sakubWhSDyxAKwzymvXVdF4CZI71g06W+mqhzu6ig== - -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== - -webidl-conversions@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" - integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== - -webidl-conversions@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" - integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== - -webpack-dev-middleware@^3.7.2: - version "3.7.3" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz#0639372b143262e2b84ab95d3b91a7597061c2c5" - integrity sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ== - dependencies: - memory-fs "^0.4.1" - mime "^2.4.4" - mkdirp "^0.5.1" - range-parser "^1.2.1" - webpack-log "^2.0.0" - -webpack-dev-server@3.11.1: - version "3.11.1" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.1.tgz#c74028bf5ba8885aaf230e48a20e8936ab8511f0" - integrity sha512-u4R3mRzZkbxQVa+MBWi2uVpB5W59H3ekZAJsQlKUTdl7Elcah2EhygTPLmeFXybQkf9i2+L0kn7ik9SnXa6ihQ== - dependencies: - ansi-html "0.0.7" - bonjour "^3.5.0" - chokidar "^2.1.8" - compression "^1.7.4" - connect-history-api-fallback "^1.6.0" - debug "^4.1.1" - del "^4.1.1" - express "^4.17.1" - html-entities "^1.3.1" - http-proxy-middleware "0.19.1" - import-local "^2.0.0" - internal-ip "^4.3.0" - ip "^1.1.5" - is-absolute-url "^3.0.3" - killable "^1.0.1" - loglevel "^1.6.8" - opn "^5.5.0" - p-retry "^3.0.1" - portfinder "^1.0.26" - schema-utils "^1.0.0" - selfsigned "^1.10.8" - semver "^6.3.0" - serve-index "^1.9.1" - sockjs "^0.3.21" - sockjs-client "^1.5.0" - spdy "^4.0.2" - strip-ansi "^3.0.1" - supports-color "^6.1.0" - url "^0.11.0" - webpack-dev-middleware "^3.7.2" - webpack-log "^2.0.0" - ws "^6.2.1" - yargs "^13.3.2" - -webpack-log@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" - integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== - dependencies: - ansi-colors "^3.0.0" - uuid "^3.3.2" - -webpack-manifest-plugin@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-2.2.0.tgz#19ca69b435b0baec7e29fbe90fb4015de2de4f16" - integrity sha512-9S6YyKKKh/Oz/eryM1RyLVDVmy3NSPV0JXMRhZ18fJsq+AwGxUY34X54VNwkzYcEmEkDwNxuEOboCZEebJXBAQ== - dependencies: - fs-extra "^7.0.0" - lodash ">=3.5 <5" - object.entries "^1.1.0" - tapable "^1.0.0" - -webpack-sources@^1.1.0, webpack-sources@^1.3.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" - integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== - dependencies: - source-list-map "^2.0.0" - source-map "~0.6.1" - -webpack@4.44.2: - version "4.44.2" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.44.2.tgz#6bfe2b0af055c8b2d1e90ed2cd9363f841266b72" - integrity sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/wasm-edit" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - acorn "^6.4.1" - ajv "^6.10.2" - ajv-keywords "^3.4.1" - chrome-trace-event "^1.0.2" - enhanced-resolve "^4.3.0" - eslint-scope "^4.0.3" - json-parse-better-errors "^1.0.2" - loader-runner "^2.4.0" - loader-utils "^1.2.3" - memory-fs "^0.4.1" - micromatch "^3.1.10" - mkdirp "^0.5.3" - neo-async "^2.6.1" - node-libs-browser "^2.2.1" - schema-utils "^1.0.0" - tapable "^1.1.3" - terser-webpack-plugin "^1.4.3" - watchpack "^1.7.4" - webpack-sources "^1.4.1" - -websocket-driver@>=0.5.1, websocket-driver@^0.7.4: - version "0.7.4" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" - integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== - dependencies: - http-parser-js ">=0.5.1" - safe-buffer ">=5.1.0" - websocket-extensions ">=0.1.1" - -websocket-extensions@>=0.1.1: - version "0.1.4" - resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" - integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== - -whatwg-encoding@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" - integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== - dependencies: - iconv-lite "0.4.24" - -whatwg-fetch@^3.4.1: - version "3.6.2" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" - integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== - -whatwg-mimetype@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" - integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== - -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - -whatwg-url@^8.0.0, whatwg-url@^8.5.0: - version "8.7.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" - integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== - dependencies: - lodash "^4.7.0" - tr46 "^2.1.0" - webidl-conversions "^6.1.0" - -which-boxed-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== - dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q== - -which@^1.2.9, which@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -which@^2.0.1, which@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -wide-align@^1.1.2, wide-align@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" - integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== - dependencies: - string-width "^1.0.2 || 2 || 3 || 4" - -widest-line@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" - integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== - dependencies: - string-width "^4.0.0" - -word-wrap@^1.2.3, word-wrap@~1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== - -workbox-background-sync@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-5.1.4.tgz#5ae0bbd455f4e9c319e8d827c055bb86c894fd12" - integrity sha512-AH6x5pYq4vwQvfRDWH+vfOePfPIYQ00nCEB7dJRU1e0n9+9HMRyvI63FlDvtFT2AvXVRsXvUt7DNMEToyJLpSA== - dependencies: - workbox-core "^5.1.4" - -workbox-broadcast-update@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-5.1.4.tgz#0eeb89170ddca7f6914fa3523fb14462891f2cfc" - integrity sha512-HTyTWkqXvHRuqY73XrwvXPud/FN6x3ROzkfFPsRjtw/kGZuZkPzfeH531qdUGfhtwjmtO/ZzXcWErqVzJNdXaA== - dependencies: - workbox-core "^5.1.4" - -workbox-build@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-5.1.4.tgz#23d17ed5c32060c363030c8823b39d0eabf4c8c7" - integrity sha512-xUcZn6SYU8usjOlfLb9Y2/f86Gdo+fy1fXgH8tJHjxgpo53VVsqRX0lUDw8/JuyzNmXuo8vXX14pXX2oIm9Bow== - dependencies: - "@babel/core" "^7.8.4" - "@babel/preset-env" "^7.8.4" - "@babel/runtime" "^7.8.4" - "@hapi/joi" "^15.1.0" - "@rollup/plugin-node-resolve" "^7.1.1" - "@rollup/plugin-replace" "^2.3.1" - "@surma/rollup-plugin-off-main-thread" "^1.1.1" - common-tags "^1.8.0" - fast-json-stable-stringify "^2.1.0" - fs-extra "^8.1.0" - glob "^7.1.6" - lodash.template "^4.5.0" - pretty-bytes "^5.3.0" - rollup "^1.31.1" - rollup-plugin-babel "^4.3.3" - rollup-plugin-terser "^5.3.1" - source-map "^0.7.3" - source-map-url "^0.4.0" - stringify-object "^3.3.0" - strip-comments "^1.0.2" - tempy "^0.3.0" - upath "^1.2.0" - workbox-background-sync "^5.1.4" - workbox-broadcast-update "^5.1.4" - workbox-cacheable-response "^5.1.4" - workbox-core "^5.1.4" - workbox-expiration "^5.1.4" - workbox-google-analytics "^5.1.4" - workbox-navigation-preload "^5.1.4" - workbox-precaching "^5.1.4" - workbox-range-requests "^5.1.4" - workbox-routing "^5.1.4" - workbox-strategies "^5.1.4" - workbox-streams "^5.1.4" - workbox-sw "^5.1.4" - workbox-window "^5.1.4" - -workbox-cacheable-response@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-5.1.4.tgz#9ff26e1366214bdd05cf5a43da9305b274078a54" - integrity sha512-0bfvMZs0Of1S5cdswfQK0BXt6ulU5kVD4lwer2CeI+03czHprXR3V4Y8lPTooamn7eHP8Iywi5QjyAMjw0qauA== - dependencies: - workbox-core "^5.1.4" - -workbox-core@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-5.1.4.tgz#8bbfb2362ecdff30e25d123c82c79ac65d9264f4" - integrity sha512-+4iRQan/1D8I81nR2L5vcbaaFskZC2CL17TLbvWVzQ4qiF/ytOGF6XeV54pVxAvKUtkLANhk8TyIUMtiMw2oDg== - -workbox-expiration@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-5.1.4.tgz#92b5df461e8126114943a3b15c55e4ecb920b163" - integrity sha512-oDO/5iC65h2Eq7jctAv858W2+CeRW5e0jZBMNRXpzp0ZPvuT6GblUiHnAsC5W5lANs1QS9atVOm4ifrBiYY7AQ== - dependencies: - workbox-core "^5.1.4" - -workbox-google-analytics@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-5.1.4.tgz#b3376806b1ac7d7df8418304d379707195fa8517" - integrity sha512-0IFhKoEVrreHpKgcOoddV+oIaVXBFKXUzJVBI+nb0bxmcwYuZMdteBTp8AEDJacENtc9xbR0wa9RDCnYsCDLjA== - dependencies: - workbox-background-sync "^5.1.4" - workbox-core "^5.1.4" - workbox-routing "^5.1.4" - workbox-strategies "^5.1.4" - -workbox-navigation-preload@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-5.1.4.tgz#30d1b720d26a05efc5fa11503e5cc1ed5a78902a" - integrity sha512-Wf03osvK0wTflAfKXba//QmWC5BIaIZARU03JIhAEO2wSB2BDROWI8Q/zmianf54kdV7e1eLaIEZhth4K4MyfQ== - dependencies: - workbox-core "^5.1.4" - -workbox-precaching@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-5.1.4.tgz#874f7ebdd750dd3e04249efae9a1b3f48285fe6b" - integrity sha512-gCIFrBXmVQLFwvAzuGLCmkUYGVhBb7D1k/IL7pUJUO5xacjLcFUaLnnsoVepBGAiKw34HU1y/YuqvTKim9qAZA== - dependencies: - workbox-core "^5.1.4" - -workbox-range-requests@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-5.1.4.tgz#7066a12c121df65bf76fdf2b0868016aa2bab859" - integrity sha512-1HSujLjgTeoxHrMR2muDW2dKdxqCGMc1KbeyGcmjZZAizJTFwu7CWLDmLv6O1ceWYrhfuLFJO+umYMddk2XMhw== - dependencies: - workbox-core "^5.1.4" - -workbox-routing@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-5.1.4.tgz#3e8cd86bd3b6573488d1a2ce7385e547b547e970" - integrity sha512-8ljknRfqE1vEQtnMtzfksL+UXO822jJlHTIR7+BtJuxQ17+WPZfsHqvk1ynR/v0EHik4x2+826Hkwpgh4GKDCw== - dependencies: - workbox-core "^5.1.4" - -workbox-strategies@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-5.1.4.tgz#96b1418ccdfde5354612914964074d466c52d08c" - integrity sha512-VVS57LpaJTdjW3RgZvPwX0NlhNmscR7OQ9bP+N/34cYMDzXLyA6kqWffP6QKXSkca1OFo/v6v7hW7zrrguo6EA== - dependencies: - workbox-core "^5.1.4" - workbox-routing "^5.1.4" - -workbox-streams@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-5.1.4.tgz#05754e5e3667bdc078df2c9315b3f41210d8cac0" - integrity sha512-xU8yuF1hI/XcVhJUAfbQLa1guQUhdLMPQJkdT0kn6HP5CwiPOGiXnSFq80rAG4b1kJUChQQIGPrq439FQUNVrw== - dependencies: - workbox-core "^5.1.4" - workbox-routing "^5.1.4" - -workbox-sw@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-5.1.4.tgz#2bb34c9f7381f90d84cef644816d45150011d3db" - integrity sha512-9xKnKw95aXwSNc8kk8gki4HU0g0W6KXu+xks7wFuC7h0sembFnTrKtckqZxbSod41TDaGh+gWUA5IRXrL0ECRA== - -workbox-webpack-plugin@5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-5.1.4.tgz#7bfe8c16e40fe9ed8937080ac7ae9c8bde01e79c" - integrity sha512-PZafF4HpugZndqISi3rZ4ZK4A4DxO8rAqt2FwRptgsDx7NF8TVKP86/huHquUsRjMGQllsNdn4FNl8CD/UvKmQ== - dependencies: - "@babel/runtime" "^7.5.5" - fast-json-stable-stringify "^2.0.0" - source-map-url "^0.4.0" - upath "^1.1.2" - webpack-sources "^1.3.0" - workbox-build "^5.1.4" - -workbox-window@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-5.1.4.tgz#2740f7dea7f93b99326179a62f1cc0ca2c93c863" - integrity sha512-vXQtgTeMCUq/4pBWMfQX8Ee7N2wVC4Q7XYFqLnfbXJ2hqew/cU1uMTD2KqGEgEpE4/30luxIxgE+LkIa8glBYw== - dependencies: - workbox-core "^5.1.4" - -worker-farm@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" - integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== - dependencies: - errno "~0.1.7" - -worker-rpc@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/worker-rpc/-/worker-rpc-0.1.1.tgz#cb565bd6d7071a8f16660686051e969ad32f54d5" - integrity sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg== - dependencies: - microevent.ts "~0.1.1" - -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" - integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== - dependencies: - ansi-styles "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" - -wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -write-file-atomic@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" - integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== - dependencies: - imurmurhash "^0.1.4" - is-typedarray "^1.0.0" - signal-exit "^3.0.2" - typedarray-to-buffer "^3.1.5" - -ws@^6.2.1: - version "6.2.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.2.tgz#dd5cdbd57a9979916097652d78f1cc5faea0c32e" - integrity sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw== - dependencies: - async-limiter "~1.0.0" - -ws@^7.4.6: - version "7.5.5" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.5.tgz#8b4bc4af518cfabd0473ae4f99144287b33eb881" - integrity sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w== - -xdg-basedir@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" - integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== - -xml-name-validator@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" - integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== - -xmlbuilder@>=11.0.1, xmlbuilder@^15.1.1: - version "15.1.1" - resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-15.1.1.tgz#9dcdce49eea66d8d10b42cae94a79c3c8d0c2ec5" - integrity sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg== - -xmlchars@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" - integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== - -xtend@^4.0.0, xtend@~4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -y18n@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" - integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== - -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - integrity sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A== - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yaml@^1.10.0, yaml@^1.7.2: - version "1.10.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" - integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== - -yargs-parser@^13.1.2: - version "13.1.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" - integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^18.1.2: - version "18.1.3" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" - integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^21.0.0: - version "21.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" - integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== - -yargs@^13.3.2: - version "13.3.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" - integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== - dependencies: - cliui "^5.0.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^13.1.2" - -yargs@^15.4.1: - version "15.4.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" - integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== - dependencies: - cliui "^6.0.0" - decamelize "^1.2.0" - find-up "^4.1.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^4.2.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^18.1.2" - -yargs@^17.0.1, yargs@^17.3.1: - version "17.5.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.5.1.tgz#e109900cab6fcb7fd44b1d8249166feb0b36e58e" - integrity sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA== - 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" - -yauzl@^2.10.0: - version "2.10.0" - resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" - integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== - dependencies: - buffer-crc32 "~0.2.3" - fd-slicer "~1.1.0" - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== - -yup@^0.32.11: - version "0.32.11" - resolved "https://registry.yarnpkg.com/yup/-/yup-0.32.11.tgz#d67fb83eefa4698607982e63f7ca4c5ed3cf18c5" - integrity sha512-Z2Fe1bn+eLstG8DRR6FTavGD+MeAwyfmouhHsIUgaADz8jvFKbO/fXc2trJKZg+5EBjh4gGm3iU/t3onKlXHIg== - dependencies: - "@babel/runtime" "^7.15.4" - "@types/lodash" "^4.14.175" - lodash "^4.17.21" - lodash-es "^4.17.21" - nanoclone "^0.2.1" - property-expr "^2.0.4" - toposort "^2.0.2" diff --git a/lerna.json b/lerna.json deleted file mode 100644 index 461e6f078..000000000 --- a/lerna.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "packages": [ - "./backend", - "./frontend", - "./shared" - ], - "npmClient": "yarn", - "useWorkspaces": true, - "version": "0.0.1" -} diff --git a/package.json b/package.json index 16501d2ee..7a695f5be 100644 --- a/package.json +++ b/package.json @@ -38,9 +38,13 @@ "npm": ">=7.0.0", "node": ">=14.0.0" }, - "packageManager": "npm@8.5.5", + "packageManager": "yarn@1.22.19", "workspaces": [ "packages/*", "apps/*" - ] + ], + "resolutions": { + "react": "^18.2.0", + "react-dom": "^18.2.0" + } } diff --git a/packages/ui/package.json b/packages/ui/package.json index 13e0263a3..6112aed44 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -1,10 +1,6 @@ { "name": "@onflowser/ui", "version": "0.0.0", - "main": "./dist/flowser.umd.js", - "files": [ - "./dist/*" - ], "types": "./src/index.ts", "scripts": { "build": "vite build" @@ -18,7 +14,8 @@ "@types/react-helmet": "^6.1.7" }, "peerDependencies": { - "react": "^18.2.0" + "react": "^18.2.0", + "react-dom": "^18.2.0" }, "dependencies": { "yup": "^0.32.11", diff --git a/packages/ui/vite.config.js b/packages/ui/vite.config.js index d70b3f051..3c68efc25 100644 --- a/packages/ui/vite.config.js +++ b/packages/ui/vite.config.js @@ -25,13 +25,10 @@ export default defineConfig({ }, rollupOptions: { // Ensure to add external dependencies to avoid bundling them in your library - external: ["react", "react-dom"], + external: ["react"], output: { - // Provide global variables to use in the UMD build - // for externalized deps globals: { react: "React", - "react-dom": "ReactDOM", }, }, }, diff --git a/shared/.gitignore b/shared/.gitignore deleted file mode 100644 index 370b7f272..000000000 --- a/shared/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -generated -dist diff --git a/shared/README.md b/shared/README.md deleted file mode 100644 index 6560601ab..000000000 --- a/shared/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# @flowser/types - -Types are defined with Protocol Buffers language. - -In order to build and use types you need to install Protocol Buffer compiler. See: https://grpc.io/docs/protoc-installation. diff --git a/shared/build.sh b/shared/build.sh deleted file mode 100644 index e5604daac..000000000 --- a/shared/build.sh +++ /dev/null @@ -1,12 +0,0 @@ -rm -rf ./dist -rm -rf ./src/generated - -mkdir -p ./src/generated - -protoc -I=./proto \ - --plugin=./node_modules/.bin/protoc-gen-ts_proto \ - --ts_proto_opt=esModuleInterop=true \ - --ts_proto_opt=outputServices=grpc-js \ - --ts_proto_out=./src/generated \ - ./proto/entities/* \ - ./proto/api/* diff --git a/shared/package.json b/shared/package.json deleted file mode 100644 index 3dcbc4394..000000000 --- a/shared/package.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "name": "@flowser/shared", - "version": "0.0.1", - "description": "", - "main": "dist/src/index.js", - "types": "dist/src/index.d.ts", - "scripts": { - "cleanup": "rm -rf node_modules", - "build": "sh build.sh && tsc -p tsconfig.json", - "start": "chokidar \"**/*.proto\" -c \"yarn run build\"", - "postinstall": "yarn run build" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/onflowser/flowser.git" - }, - "author": "", - "license": "ISC", - "bugs": { - "url": "https://github.com/onflowser/flowser/issues" - }, - "homepage": "https://github.com/onflowser/flowser#readme", - "dependencies": { - "chokidar-cli": "^3.0.0", - "protobufjs": "^7.0.0", - "ts-proto": "^1.121.1", - "ts-protoc-gen": "^0.15.0" - }, - "devDependencies": { - "parcel": "^2.7.0" - } -} diff --git a/shared/proto/api/accounts.proto b/shared/proto/api/accounts.proto deleted file mode 100644 index dbd329689..000000000 --- a/shared/proto/api/accounts.proto +++ /dev/null @@ -1,39 +0,0 @@ -syntax = "proto3"; - -import "entities/accounts.proto"; -import "api/core.proto"; - -message GetAllAccountsResponse { - repeated Account accounts = 1; -} - -message GetPollingAccountsRequest { - uint32 timestamp = 1; -} - -message GetPollingAccountsResponse { - repeated Account data = 1; - PollingMetaData meta = 2; -} - -message GetPollingKeysRequest { - uint32 timestamp = 1; -} - -message GetPollingKeysResponse { - repeated AccountKey data = 1; - PollingMetaData meta = 2; -} - -message GetPollingStorageRequest { - uint32 timestamp = 1; -} - -message GetPollingStorageResponse { - repeated AccountStorageItem data = 1; - PollingMetaData meta = 2; -} - -message GetSingleAccountResponse { - Account account = 1; -} diff --git a/shared/proto/api/blocks.proto b/shared/proto/api/blocks.proto deleted file mode 100644 index 6e1fd7df5..000000000 --- a/shared/proto/api/blocks.proto +++ /dev/null @@ -1,21 +0,0 @@ -syntax = "proto3"; - -import "entities/blocks.proto"; -import "api/core.proto"; - -message GetAllBlocksResponse { - repeated Block blocks = 1; -} - -message GetPollingBlocksRequest { - uint32 timestamp = 1; -} - -message GetPollingBlocksResponse { - repeated Block data = 1; - PollingMetaData meta = 2; -} - -message GetSingleBlockResponse { - Block block = 1; -} diff --git a/shared/proto/api/contracts.proto b/shared/proto/api/contracts.proto deleted file mode 100644 index 0df398351..000000000 --- a/shared/proto/api/contracts.proto +++ /dev/null @@ -1,30 +0,0 @@ -syntax = "proto3"; - -import "entities/accounts.proto"; -import "api/core.proto"; - -message GetAllContractsResponse { - repeated AccountContract contracts = 1; -} - -message GetPollingContractsRequest { - uint32 timestamp = 1; -} - -message GetPollingContractsByAccountRequest { - uint32 timestamp = 1; -} - -message GetPollingContractsByAccountResponse { - repeated AccountContract data = 1; - PollingMetaData meta = 2; -} - -message GetPollingContractsResponse { - repeated AccountContract data = 1; - PollingMetaData meta = 2; -} - -message GetSingleContractResponse { - AccountContract contract = 1; -} diff --git a/shared/proto/api/core.proto b/shared/proto/api/core.proto deleted file mode 100644 index 752eaeabc..000000000 --- a/shared/proto/api/core.proto +++ /dev/null @@ -1,19 +0,0 @@ -syntax = "proto3"; - -message FlowserError { - string name = 1; - string message = 2; - string description = 3; -} - -message ErrorResponse { - FlowserError error = 1; -} - -message PollingMetaData { - int32 latest_timestamp = 1; -} - -message GetFlowserVersionResponse { - string version = 1; -} diff --git a/shared/proto/api/events.proto b/shared/proto/api/events.proto deleted file mode 100644 index 7b8ea2d29..000000000 --- a/shared/proto/api/events.proto +++ /dev/null @@ -1,26 +0,0 @@ -syntax = "proto3"; - -import "entities/events.proto"; -import "api/core.proto"; - -message GetAllEventsResponse { - repeated Event events = 1; -} - -message GetPollingEventsRequest { - uint32 timestamp = 1; -} - -message GetPollingEventsResponse { - repeated Event data = 1; - PollingMetaData meta = 2; -} - -message GetPollingEventsByTransactionRequest { - uint32 timestamp = 1; -} - -message GetPollingEventsByTransactionResponse { - repeated Event data = 1; - PollingMetaData meta = 2; -} diff --git a/shared/proto/api/flow.proto b/shared/proto/api/flow.proto deleted file mode 100644 index 2df277030..000000000 --- a/shared/proto/api/flow.proto +++ /dev/null @@ -1,16 +0,0 @@ -syntax = "proto3"; - -import "entities/interactions.proto"; - -message GetFlowCliInfoResponse { - string version = 1; -} - -message GetFlowInteractionTemplatesResponse { - repeated InteractionTemplate templates = 1; -} - -message GetFlowConfigResponse { - // flow.json configuration serialized as a JSON string. - string flowJson = 1; -} diff --git a/shared/proto/api/go-bindings.proto b/shared/proto/api/go-bindings.proto deleted file mode 100644 index 7baef7666..000000000 --- a/shared/proto/api/go-bindings.proto +++ /dev/null @@ -1,23 +0,0 @@ -syntax = "proto3"; - -import "entities/interactions.proto"; -import "google/protobuf/struct.proto"; - -message GetParsedInteractionRequest { - string source_code = 1; -} - -message GetParsedInteractionResponse { - Interaction interaction = 1; - google.protobuf.Struct program = 2; - string error = 3; -} - -message GetAddressIndexRequest { - string chain_id = 1; - string hex_address = 2; -} - -message GetAddressIndexResponse { - uint32 index = 1; -} diff --git a/shared/proto/api/processes.proto b/shared/proto/api/processes.proto deleted file mode 100644 index 567a9bc8f..000000000 --- a/shared/proto/api/processes.proto +++ /dev/null @@ -1,31 +0,0 @@ -syntax = "proto3"; - -import "entities/processes.proto"; -import "api/core.proto"; - -message GetPollingManagedProcessesRequest { - uint32 timestamp = 1; - string process_id = 2; -} - -message GetAllManagedProcessesResponse { - repeated ManagedProcess processes = 1; -} - -message GetPollingManagedProcessesResponse { - repeated ManagedProcess data = 1; - PollingMetaData meta = 2; -} - -message GetAllOutputsResponse { - repeated ManagedProcessOutput outputs = 1; -} - -message GetPollingOutputsRequest { - uint32 timestamp = 1; -} - -message GetPollingOutputsResponse { - repeated ManagedProcessOutput data = 1; - PollingMetaData meta = 2; -} diff --git a/shared/proto/api/projects.proto b/shared/proto/api/projects.proto deleted file mode 100644 index 882226843..000000000 --- a/shared/proto/api/projects.proto +++ /dev/null @@ -1,52 +0,0 @@ -syntax = "proto3"; - -import "entities/projects.proto"; -import "entities/interactions.proto"; -import "entities/common.proto"; -import "api/core.proto"; - -message GetProjectRequirementsResponse { - repeated ProjectRequirement missing_requirements = 1; -} - -message GetProjectStatusResponse { - // Number of blocks that our backend needs to process. - uint32 total_blocks_to_process = 1; - ServiceStatus flow_api_status = 2; -} - -message GetAllProjectsResponse { - repeated Project projects = 1; -} - -message GetPollingProjectsRequest { - uint32 timestamp = 1; -} - -message GetPollingProjectsResponse { - repeated Project data = 1; - PollingMetaData meta = 2; -} - -message CreateProjectResponse { - FlowserError error = 1; - Project project = 2; -} - -message UpdateProjectResponse { - FlowserError error = 1; - Project project = 2; -} - -message UseProjectResponse { - FlowserError error = 1; - Project project = 2; -} - -message GetSingleProjectResponse { - Project project = 1; -} - -message GetProjectInteractionTemplates { - repeated InteractionTemplate templates = 1; -} diff --git a/shared/proto/api/snapshots.proto b/shared/proto/api/snapshots.proto deleted file mode 100644 index 2688f315e..000000000 --- a/shared/proto/api/snapshots.proto +++ /dev/null @@ -1,40 +0,0 @@ -syntax = "proto3"; - -import "entities/snapshots.proto"; -import "api/core.proto"; - -message GetPollingEmulatorSnapshotsRequest { - uint32 timestamp = 1; - string project_id = 2; -} - -message GetPollingEmulatorSnapshotsResponse { - repeated EmulatorSnapshot data = 1; - PollingMetaData meta = 2; -} - -message CreateEmulatorSnapshotRequest { - string description = 1; - string project_id = 2; -} - -message CreateEmulatorSnapshotResponse { - FlowserError error = 1; - EmulatorSnapshot snapshot = 2; -} - -message RevertToEmulatorSnapshotRequest { - string block_id = 1; - string project_id = 2; -} - -message RevertToEmulatorSnapshotResponse { - FlowserError error = 1; - EmulatorSnapshot snapshot = 2; -} - -message RollbackToHeightRequest { - uint32 block_height = 1; -} - -message RollbackToHeightResponse {} diff --git a/shared/proto/api/transactions.proto b/shared/proto/api/transactions.proto deleted file mode 100644 index 4a8d2b51d..000000000 --- a/shared/proto/api/transactions.proto +++ /dev/null @@ -1,39 +0,0 @@ -syntax = "proto3"; - -import "entities/transactions.proto"; -import "api/core.proto"; - -message GetAllTransactionsResponse { - repeated Transaction transactions = 1; -} - -message GetPollingTransactionsRequest { - uint32 timestamp = 1; -} - -message GetPollingTransactionsResponse { - repeated Transaction data = 1; - PollingMetaData meta = 2; -} - -message GetPollingTransactionsByBlockRequest { - uint32 timestamp = 1; -} - -message GetPollingTransactionsByBlockResponse { - repeated Transaction data = 1; - PollingMetaData meta = 2; -} - -message GetPollingTransactionsByAccountRequest { - uint32 timestamp = 1; -} - -message GetPollingTransactionsByAccountResponse { - repeated Transaction data = 1; - PollingMetaData meta = 2; -} - -message GetSingleTransactionResponse { - Transaction transaction = 1; -} diff --git a/shared/proto/api/wallet.proto b/shared/proto/api/wallet.proto deleted file mode 100644 index 18e711e4b..000000000 --- a/shared/proto/api/wallet.proto +++ /dev/null @@ -1,23 +0,0 @@ -syntax = "proto3"; - -import "entities/accounts.proto"; -import "entities/transactions.proto"; - -message CreateAccountRequest {} - -message CreateAccountResponse { - Account account = 1; -} - -message SendTransactionRequest { - string cadence = 1; - // Signer roles: https://developers.flow.com/concepts/start-here/transaction-signing#signer-roles - string proposer_address = 2; - string payer_address = 3; - repeated string authorizer_addresses = 4; - repeated TransactionArgument arguments = 5; -} - -message SendTransactionResponse { - string transaction_id = 1; -} diff --git a/shared/proto/entities/accounts.proto b/shared/proto/entities/accounts.proto deleted file mode 100644 index c7bbd9214..000000000 --- a/shared/proto/entities/accounts.proto +++ /dev/null @@ -1,74 +0,0 @@ -syntax = "proto3"; - -import "entities/transactions.proto"; -import "entities/common.proto"; -import "google/protobuf/struct.proto"; - -message Account { - string address = 1; - float balance = 2; - string code = 3; - repeated AccountKey keys = 4; - repeated AccountStorageItem storage = 5; - repeated Transaction transactions = 7; - repeated AccountTag tags = 10; - string created_at = 8; - string updated_at = 9; -} - -message AccountTag { - string name = 1; - string description = 2; -} - -message AccountKey { - int32 index = 1; - string account_address = 2; - string public_key = 3; - // Only present on accounts generated - // thought our custom wallet service. - string private_key = 11; - SignatureAlgorithm sign_algo = 4; - HashAlgorithm hash_algo = 5; - int32 weight = 6; - int32 sequence_number = 7; - bool revoked = 8; - string created_at = 9; - string updated_at = 10; -} - -// Every account storage path consists of a domain and identifier: // -// See official docs: https://developers.flow.com/cadence/language/accounts#paths -enum AccountStorageDomain { - STORAGE_DOMAIN_UNKNOWN = 0; - STORAGE_DOMAIN_PRIVATE = 1; - STORAGE_DOMAIN_PUBLIC = 2; - STORAGE_DOMAIN_STORAGE = 3; -} - -// Storage item maps a storage identifier to CadenceValue object (data field) -// https://github.com/onflow/flow-emulator/blob/master/accountStorage.go -message AccountStorageItem { - string id = 1; - string path = 2; - string target_path = 3; - AccountStorageDomain path_domain = 4; - google.protobuf.Struct data = 5; - string created_at = 6; - string updated_at = 7; -} - -message AccountContract { - string id = 1; - string account_address = 2; - string name = 3; - string code = 4; - string created_at = 8; - string updated_at = 9; - LocalContractConfig local_config = 10; -} - -message LocalContractConfig { - string relative_path = 2; - string absolute_path = 3; -} diff --git a/shared/proto/entities/blocks.proto b/shared/proto/entities/blocks.proto deleted file mode 100644 index b8afd1446..000000000 --- a/shared/proto/entities/blocks.proto +++ /dev/null @@ -1,25 +0,0 @@ -syntax = "proto3"; - -import "google/protobuf/struct.proto"; - -message Block { - string id = 1; - string parent_id = 2; - int32 height = 3; - string timestamp = 4; - repeated CollectionGuarantee collection_guarantees = 5; - - // TODO: We should define a custom message for block_seals - // But for now it's ok because we don't even use this field in our app - // See: https://github.com/onflow/fcl-js/blob/master/packages/protobuf/src/proto/flow/entities/block_seal.proto - repeated google.protobuf.Struct block_seals = 6; - repeated string signatures = 7; - - string created_at = 8; - string updated_at = 9; -} - -message CollectionGuarantee { - string collection_id = 1; - repeated string signatures = 2; -} diff --git a/shared/proto/entities/common.proto b/shared/proto/entities/common.proto deleted file mode 100644 index 1724b1ccd..000000000 --- a/shared/proto/entities/common.proto +++ /dev/null @@ -1,26 +0,0 @@ -syntax = "proto3"; - -// https://docs.onflow.org/cadence/language/crypto/#hashing -enum SignatureAlgorithm { - SIGNATURE_ALGORITHM_UNSPECIFIED = 0; - ECDSA_P256 = 1; - ECDSA_secp256k1 = 2; - BLS_BLS12_381 = 3; -} - -// https://docs.onflow.org/cadence/language/crypto/#hashing -enum HashAlgorithm { - HASH_ALGORITHM_UNSPECIFIED = 0; - SHA2_256 = 1; - SHA2_384 = 2; - SHA3_256 = 3; - SHA3_384 = 4; - KMAC128_BLS_BLS12_381 = 5; - KECCAK_256 = 6; -} - -enum ServiceStatus { - SERVICE_STATUS_UNKNOWN = 0; - SERVICE_STATUS_ONLINE = 1; - SERVICE_STATUS_OFFLINE = 2; -} diff --git a/shared/proto/entities/events.proto b/shared/proto/entities/events.proto deleted file mode 100644 index 2318badb2..000000000 --- a/shared/proto/entities/events.proto +++ /dev/null @@ -1,20 +0,0 @@ -syntax = "proto3"; - -import "google/protobuf/struct.proto"; - -// TODO: define flow core events enum -// https://github.com/onflow/cadence/blob/master/docs/language/core-events.md - -message Event { - string id = 1; - string transaction_id = 2; - string block_id = 3; - int32 event_index = 4; - string type = 5; - int32 transaction_index = 6; - // Data contains arbitrary key-value pairs emitted from transactions. - // Information about cadence types is not returned from fcl-js. - google.protobuf.Struct data = 7; - string created_at = 8; - string updated_at = 9; -} diff --git a/shared/proto/entities/interactions.proto b/shared/proto/entities/interactions.proto deleted file mode 100644 index fe5adcc38..000000000 --- a/shared/proto/entities/interactions.proto +++ /dev/null @@ -1,70 +0,0 @@ -syntax = "proto3"; - -message InteractionTemplate { - string id = 1; - string name = 2; - string code = 3; - Source source = 4; - string created_date = 5; - string updated_date = 6; - - message Source { - string file_path = 1; - } -} - -// This must match the structure of go structs in `internal/main.go`. - -enum InteractionKind { - INTERACTION_UNKNOWN = 0; - INTERACTION_SCRIPT = 1; - INTERACTION_TRANSACTION = 2; -} - -message Interaction { - InteractionKind kind = 1; - repeated Parameter parameters = 2; - Transaction transaction = 3; - - message Transaction { - // Number of authorizers, specified in prepare statement. - // https://developers.flow.com/concepts/start-here/transaction-signing - int32 authorizer_count = 1; - } -} - -message Parameter { - string identifier = 1; - CadenceType type = 2; -} - -enum CadenceTypeKind { - CADENCE_TYPE_UNKNOWN = 0; - CADENCE_TYPE_FIXED_POINT_NUMBER = 1; - CADENCE_TYPE_INTEGER_NUMBER = 2; - CADENCE_TYPE_TEXTUAL = 3; - CADENCE_TYPE_BOOLEAN = 4; - CADENCE_TYPE_ADDRESS = 5; - CADENCE_TYPE_ARRAY = 6; - CADENCE_TYPE_DICTIONARY = 7; - CADENCE_TYPE_PATH = 8; -} - -message CadenceType { - CadenceTypeKind kind = 1; - string raw_type = 2; - bool optional = 3; - - Array array = 4; - Dictionary dictionary = 5; - - message Array { - CadenceType element = 1; - int32 size = 2; - } - - message Dictionary { - CadenceType key = 1; - CadenceType value = 2; - } -} diff --git a/shared/proto/entities/processes.proto b/shared/proto/entities/processes.proto deleted file mode 100644 index a018e0a3f..000000000 --- a/shared/proto/entities/processes.proto +++ /dev/null @@ -1,38 +0,0 @@ -syntax = "proto3"; - -message ManagedProcess { - string id = 1; - string name = 7; - CommandOption command = 2; - ManagedProcessState state = 3; - repeated ManagedProcessOutput output = 4; - string created_at = 5; - string updated_at = 6; - - message CommandOption { - string name = 1; - repeated string args = 2; - } -} - -enum ManagedProcessState { - MANAGED_PROCESS_STATE_UNSPECIFIED = 0; - MANAGED_PROCESS_STATE_NOT_RUNNING = 1; - MANAGED_PROCESS_STATE_RUNNING = 2; - MANAGED_PROCESS_STATE_ERROR = 3; -} - -message ManagedProcessOutput { - string id = 1; - string process_id = 2; - string data = 3; - ProcessOutputSource source = 4; - string created_at = 5; - string updated_at = 6; -} - -enum ProcessOutputSource { - OUTPUT_SOURCE_UNSPECIFIED = 0; - OUTPUT_SOURCE_STDOUT = 1; - OUTPUT_SOURCE_STDERR = 2; -} diff --git a/shared/proto/entities/projects.proto b/shared/proto/entities/projects.proto deleted file mode 100644 index 474a577ad..000000000 --- a/shared/proto/entities/projects.proto +++ /dev/null @@ -1,66 +0,0 @@ -syntax = "proto3"; - -import "entities/common.proto"; - -enum ProjectRequirementType { - PROJECT_REQUIREMENT_UNSPECIFIED = 0; - PROJECT_REQUIREMENT_MISSING_FLOW_CLI = 1; - PROJECT_REQUIREMENT_UNSUPPORTED_FLOW_CLI_VERSION = 2; -} - -message ProjectRequirement { - ProjectRequirementType type = 1; - MissingVersion missing_version_requirement = 2; - message MissingVersion { - string found_version = 1; - string min_supported_version = 2; - } -} - -message Project { - string id = 1; - string name = 2; - string filesystem_path = 3; - // Blockchain data will be fetched from this block height - // Set this -1 to start fetching from the latest block - int32 start_block_height = 4; - - Gateway gateway = 5; - Emulator emulator = 6; - - string created_at = 8; - string updated_at = 9; -} - -message Gateway { - string rest_server_address = 1; - string grpc_server_address = 2; - ServiceStatus status = 3; -} - -message Emulator { - bool verbose_logging = 1; - string log_format = 22; - uint32 rest_server_port = 2; - uint32 grpc_server_port = 3; - uint32 admin_server_port = 21; - uint32 block_time = 4; - string service_private_key = 5; - string database_path = 7; - uint32 token_supply = 8; - uint32 transaction_expiry = 9; - uint32 storage_per_flow = 10; - uint32 min_account_balance = 11; - uint32 transaction_max_gas_limit = 12; - uint32 script_gas_limit = 13; - SignatureAlgorithm service_signature_algorithm = 14; - HashAlgorithm service_hash_algorithm = 15; - bool storage_limit = 16; - bool transaction_fees = 17; - bool persist = 19; - bool with_contracts = 23; - bool enable_grpc_debug = 25; - bool enable_rest_debug = 26; - bool use_simple_addresses = 27; - bool snapshot = 29; -} diff --git a/shared/proto/entities/snapshots.proto b/shared/proto/entities/snapshots.proto deleted file mode 100644 index 37cc492f4..000000000 --- a/shared/proto/entities/snapshots.proto +++ /dev/null @@ -1,12 +0,0 @@ -syntax = "proto3"; - -message EmulatorSnapshot { - string id = 1; - string description = 2; - string block_id = 3; - string project_id = 4; - string created_at = 5; - // Snapshots can't be updated, - // but we need to include that field for compatability with PollingEntity interface. - string updated_at = 6; -} diff --git a/shared/proto/entities/transactions.proto b/shared/proto/entities/transactions.proto deleted file mode 100644 index e11c920b9..000000000 --- a/shared/proto/entities/transactions.proto +++ /dev/null @@ -1,76 +0,0 @@ -syntax = "proto3"; - -import "entities/interactions.proto"; - -// https://docs.onflow.org/fcl/reference/api/#transaction-statuses -enum ExecutionStatusCode { - EXECUTION_STATUS_UNKNOWN = 0; - /** - * Transaction Pending - Awaiting Finalization - */ - EXECUTION_STATUS_PENDING = 1; - /** - * Transaction Finalized - Awaiting Execution - */ - EXECUTION_STATUS_FINALIZED = 2; - /** - * Transaction Executed - Awaiting Sealing - */ - EXECUTION_STATUS_EXECUTED = 3; - /** - * Transaction Sealed - Transaction Complete. At this point the transaction - * result has been committed to the blockchain. - */ - EXECUTION_STATUS_SEALED = 4; - /** - * Transaction Expired - */ - EXECUTION_STATUS_EXPIRED = 5; -} - -// https://github.com/onflow/flow-go/issues/4494#issuecomment-1601995168 -enum GrcpStatusCode { - GRCP_STATUS_OK = 0; - GRCP_STATUS_FAILED = 1; -} - -message Transaction { - string id = 1; - string script = 2; - string block_id = 14; - string reference_block_id = 3; - uint32 gas_limit = 4; - string payer = 5; - TransactionProposalKey proposal_key = 6; - TransactionStatus status = 7; - repeated TransactionArgument arguments = 8; - repeated string authorizers = 9; - repeated SignableObject envelope_signatures = 10; - repeated SignableObject payload_signatures = 11; - string created_at = 12; - string updated_at = 13; -} - -message TransactionArgument { - string identifier = 1; - CadenceType type = 2; - string value_as_json = 3; -} - -message TransactionProposalKey { - string address = 1; - int32 key_id = 2; - int32 sequence_number = 3; -} - -message SignableObject { - string address = 1; - int32 key_id = 2; - string signature = 3; -} - -message TransactionStatus { - ExecutionStatusCode execution_status = 1; - GrcpStatusCode grcp_status = 2; - string error_message = 3; -} diff --git a/shared/src/index.ts b/shared/src/index.ts deleted file mode 100644 index 9e034905e..000000000 --- a/shared/src/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./types"; -export * from "./utils"; diff --git a/shared/src/types/common.ts b/shared/src/types/common.ts deleted file mode 100644 index b7981a518..000000000 --- a/shared/src/types/common.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface ProtobufLikeObject { - toJSON: (value: any) => any; - fromJSON: (value: any) => any; - fromPartial: (value: any) => any; -} diff --git a/shared/src/types/flow.ts b/shared/src/types/flow.ts deleted file mode 100644 index 0ddbc147e..000000000 --- a/shared/src/types/flow.ts +++ /dev/null @@ -1,9 +0,0 @@ -// See https://developers.flow.com/cadence/language/core-events -export enum FlowCoreEventType { - ACCOUNT_CREATED = "flow.AccountCreated", - ACCOUNT_KEY_ADDED = "flow.AccountKeyAdded", - ACCOUNT_KEY_REMOVED = "flow.AccountKeyRemoved", - ACCOUNT_CONTRACT_ADDED = "flow.AccountContractAdded", - ACCOUNT_CONTRACT_UPDATED = "flow.AccountContractUpdated", - ACCOUNT_CONTRACT_REMOVED = "flow.AccountContractRemoved", -} diff --git a/shared/src/types/index.ts b/shared/src/types/index.ts deleted file mode 100644 index 19939fed0..000000000 --- a/shared/src/types/index.ts +++ /dev/null @@ -1,33 +0,0 @@ -// @ts-nocheck -// Some core types are exported multiple types from protoc generated files multiple times. -// This raises build-time errors - let's just suppress them for now. - -// Common -export * from "./polling"; -export * from "./flow"; -export * from "./common"; - -// API definitions (requests/responses) -export * from "../generated/api/events"; -export * from "../generated/api/accounts"; -export * from "../generated/api/blocks"; -export * from "../generated/api/core"; -export * from "../generated/api/contracts"; -export * from "../generated/api/processes"; -export * from "../generated/api/projects"; -export * from "../generated/api/transactions"; -export * from "../generated/api/flow"; -export * from "../generated/api/snapshots"; -export * from "../generated/api/wallet"; -export * from "../generated/api/go-bindings"; - -// Entities -export * from "../generated/entities/accounts"; -export * from "../generated/entities/blocks"; -export * from "../generated/entities/common"; -export * from "../generated/entities/events"; -export * from "../generated/entities/processes"; -export * from "../generated/entities/projects"; -export * from "../generated/entities/transactions"; -export * from "../generated/entities/snapshots"; -export * from "../generated/entities/interactions"; diff --git a/shared/src/types/polling.ts b/shared/src/types/polling.ts deleted file mode 100644 index 6edd905d8..000000000 --- a/shared/src/types/polling.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { PollingMetaData } from "../generated/api/core"; - -export interface PollingEntity { - createdAt: string; - updatedAt: string; -} - -export type PollingResponse = { - data: T; - meta: PollingMetaData | undefined; -}; diff --git a/shared/src/utils/index.ts b/shared/src/utils/index.ts deleted file mode 100644 index 2e3a5a5b6..000000000 --- a/shared/src/utils/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "../../../packages/core/src/fcl-value"; diff --git a/shared/tsconfig.json b/shared/tsconfig.json deleted file mode 100644 index 14fbec654..000000000 --- a/shared/tsconfig.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "compilerOptions": { - "strict": false, - "rootDir": ".", - "declaration": true, - "outDir": "dist", - "allowSyntheticDefaultImports": true, - "skipLibCheck": true - }, - "files": [ - "src/index.ts" - ] -} diff --git a/shared/yarn.lock b/shared/yarn.lock deleted file mode 100644 index 42ce0ce44..000000000 --- a/shared/yarn.lock +++ /dev/null @@ -1,1852 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@babel/code-frame@^7.0.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" - integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== - dependencies: - "@babel/highlight" "^7.18.6" - -"@babel/helper-validator-identifier@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz#9c97e30d31b2b8c72a1d08984f2ca9b574d7a076" - integrity sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g== - -"@babel/highlight@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" - integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== - dependencies: - "@babel/helper-validator-identifier" "^7.18.6" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@jridgewell/gen-mapping@^0.3.0": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" - 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" - -"@jridgewell/resolve-uri@^3.0.3": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" - integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== - -"@jridgewell/set-array@^1.0.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" - integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== - -"@jridgewell/source-map@^0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.2.tgz#f45351aaed4527a298512ec72f81040c998580fb" - integrity sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw== - dependencies: - "@jridgewell/gen-mapping" "^0.3.0" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.14" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" - integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== - -"@jridgewell/trace-mapping@^0.3.9": - version "0.3.15" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz#aba35c48a38d3fd84b37e66c9c0423f9744f9774" - integrity sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@lezer/common@^0.15.0", "@lezer/common@^0.15.7": - version "0.15.12" - resolved "https://registry.yarnpkg.com/@lezer/common/-/common-0.15.12.tgz#2f21aec551dd5fd7d24eb069f90f54d5bc6ee5e9" - integrity sha512-edfwCxNLnzq5pBA/yaIhwJ3U3Kz8VAUOTRg0hhxaizaI1N+qxV7EXDv/kLCkLeq2RzSFvxexlaj5Mzfn2kY0Ig== - -"@lezer/lr@^0.15.4": - version "0.15.8" - resolved "https://registry.yarnpkg.com/@lezer/lr/-/lr-0.15.8.tgz#1564a911e62b0a0f75ca63794a6aa8c5dc63db21" - integrity sha512-bM6oE6VQZ6hIFxDNKk8bKPa14hqFrV07J/vHGOeiAbJReIaQXmkVb6xQu4MR+JBTLa5arGRyAAjJe1qaQt3Uvg== - dependencies: - "@lezer/common" "^0.15.0" - -"@lmdb/lmdb-darwin-arm64@2.5.2": - version "2.5.2" - resolved "https://registry.yarnpkg.com/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-2.5.2.tgz#bc66fa43286b5c082e8fee0eacc17995806b6fbe" - integrity sha512-+F8ioQIUN68B4UFiIBYu0QQvgb9FmlKw2ctQMSBfW2QBrZIxz9vD9jCGqTCPqZBRbPHAS/vG1zSXnKqnS2ch/A== - -"@lmdb/lmdb-darwin-x64@2.5.2": - version "2.5.2" - resolved "https://registry.yarnpkg.com/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-2.5.2.tgz#89d8390041bce6bab24a82a20392be22faf54ffc" - integrity sha512-KvPH56KRLLx4KSfKBx0m1r7GGGUMXm0jrKmNE7plbHlesZMuPJICtn07HYgQhj1LNsK7Yqwuvnqh1QxhJnF1EA== - -"@lmdb/lmdb-linux-arm64@2.5.2": - version "2.5.2" - resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-2.5.2.tgz#14fe4c96c2bb1285f93797f45915fa35ee047268" - integrity sha512-aLl89VHL/wjhievEOlPocoefUyWdvzVrcQ/MHQYZm2JfV1jUsrbr/ZfkPPUFvZBf+VSE+Q0clWs9l29PCX1hTQ== - -"@lmdb/lmdb-linux-arm@2.5.2": - version "2.5.2" - resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-2.5.2.tgz#05bde4573ab10cf21827339fe687148f2590cfa1" - integrity sha512-5kQAP21hAkfW5Bl+e0P57dV4dGYnkNIpR7f/GAh6QHlgXx+vp/teVj4PGRZaKAvt0GX6++N6hF8NnGElLDuIDw== - -"@lmdb/lmdb-linux-x64@2.5.2": - version "2.5.2" - resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-2.5.2.tgz#d2f85afd857d2c33d2caa5b057944574edafcfee" - integrity sha512-xUdUfwDJLGjOUPH3BuPBt0NlIrR7f/QHKgu3GZIXswMMIihAekj2i97oI0iWG5Bok/b+OBjHPfa8IU9velnP/Q== - -"@lmdb/lmdb-win32-x64@2.5.2": - version "2.5.2" - resolved "https://registry.yarnpkg.com/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-2.5.2.tgz#28f643fbc0bec30b07fbe95b137879b6b4d1c9c5" - integrity sha512-zrBczSbXKxEyK2ijtbRdICDygRqWSRPpZMN5dD1T8VMEW5RIhIbwFWw2phDRXuBQdVDpSjalCIUMWMV2h3JaZA== - -"@mischnic/json-sourcemap@^0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@mischnic/json-sourcemap/-/json-sourcemap-0.1.0.tgz#38af657be4108140a548638267d02a2ea3336507" - integrity sha512-dQb3QnfNqmQNYA4nFSN/uLaByIic58gOXq4Y4XqLOWmOrw73KmJPt/HLyG0wvn1bnR6mBKs/Uwvkh+Hns1T0XA== - dependencies: - "@lezer/common" "^0.15.7" - "@lezer/lr" "^0.15.4" - json5 "^2.2.1" - -"@msgpackr-extract/msgpackr-extract-darwin-arm64@2.1.2": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-2.1.2.tgz#9571b87be3a3f2c46de05585470bc4f3af2f6f00" - integrity sha512-TyVLn3S/+ikMDsh0gbKv2YydKClN8HaJDDpONlaZR+LVJmsxLFUgA+O7zu59h9+f9gX1aj/ahw9wqa6rosmrYQ== - -"@msgpackr-extract/msgpackr-extract-darwin-x64@2.1.2": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-2.1.2.tgz#bfbc6936ede2955218f5621a675679a5fe8e6f4c" - integrity sha512-YPXtcVkhmVNoMGlqp81ZHW4dMxK09msWgnxtsDpSiZwTzUBG2N+No2bsr7WMtBKCVJMSD6mbAl7YhKUqkp/Few== - -"@msgpackr-extract/msgpackr-extract-linux-arm64@2.1.2": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-2.1.2.tgz#22555e28382af2922e7450634c8a2f240bb9eb82" - integrity sha512-vHZ2JiOWF2+DN9lzltGbhtQNzDo8fKFGrf37UJrgqxU0yvtERrzUugnfnX1wmVfFhSsF8OxrfqiNOUc5hko1Zg== - -"@msgpackr-extract/msgpackr-extract-linux-arm@2.1.2": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-2.1.2.tgz#ffb6ae1beea7ac572b6be6bf2a8e8162ebdd8be7" - integrity sha512-42R4MAFeIeNn+L98qwxAt360bwzX2Kf0ZQkBBucJ2Ircza3asoY4CDbgiu9VWklq8gWJVSJSJBwDI+c/THiWkA== - -"@msgpackr-extract/msgpackr-extract-linux-x64@2.1.2": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-2.1.2.tgz#7caf62eebbfb1345de40f75e89666b3d4194755f" - integrity sha512-RjRoRxg7Q3kPAdUSC5EUUPlwfMkIVhmaRTIe+cqHbKrGZ4M6TyCA/b5qMaukQ/1CHWrqYY2FbKOAU8Hg0pQFzg== - -"@msgpackr-extract/msgpackr-extract-win32-x64@2.1.2": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-2.1.2.tgz#f2d8b9ddd8d191205ed26ce54aba3dfc5ae3e7c9" - integrity sha512-rIZVR48zA8hGkHIK7ED6+ZiXsjRCcAVBJbm8o89OKAMTmEAQ2QvoOxoiu3w2isAaWwzgtQIOFIqHwvZDyLKCvw== - -"@parcel/bundler-default@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@parcel/bundler-default/-/bundler-default-2.7.0.tgz#17d94be7185f29773aa21454063cbba3cdc03d49" - integrity sha512-PU5MtWWhc+dYI9x8mguYnm9yiG6TkI7niRpxgJgtqAyGHuEyNXVBQQ0X+qyOF4D9LdankBf8uNN18g31IET2Zg== - dependencies: - "@parcel/diagnostic" "2.7.0" - "@parcel/hash" "2.7.0" - "@parcel/plugin" "2.7.0" - "@parcel/utils" "2.7.0" - nullthrows "^1.1.1" - -"@parcel/cache@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@parcel/cache/-/cache-2.7.0.tgz#cc4b99685c7ff0fc20fbc321f4b6850d6e0c6811" - integrity sha512-JlXNoZXcWzLKdDlfeF3dIj5Vtel5T9vtdBN72PJ+cjC4qNHk4Uwvc5sfOBELuibGN0bVu2bwY9nUgSwCiB1iIA== - dependencies: - "@parcel/fs" "2.7.0" - "@parcel/logger" "2.7.0" - "@parcel/utils" "2.7.0" - lmdb "2.5.2" - -"@parcel/codeframe@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@parcel/codeframe/-/codeframe-2.7.0.tgz#b6e4ad6100938edbed1b6c72b37f609e1abaf931" - integrity sha512-UTKx0jejJmmO1dwTHSJuRgrO8N6PMlkxRT6sew8N6NC3Bgv6pu0EbO+RtlWt/jCvzcdLOPdIoTzj4MMZvgcMYg== - dependencies: - chalk "^4.1.0" - -"@parcel/compressor-raw@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@parcel/compressor-raw/-/compressor-raw-2.7.0.tgz#3f8677e6371ef099cd9e4bd2a899884dc8eb571b" - integrity sha512-SCXwnOOQT6EmpusBsYWNQ/RFri+2JnKuE0gMSf2dROl2xbererX45FYzeDplWALCKAdjMNDpFwU+FyMYoVZSCQ== - dependencies: - "@parcel/plugin" "2.7.0" - -"@parcel/config-default@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@parcel/config-default/-/config-default-2.7.0.tgz#2f6cec9c185b89e40f343549295cad21295621a8" - integrity sha512-ZzsLr97AYrz8c9k6qn3DlqPzifi3vbP7q3ynUrAFxmt0L4+K0H9N508ZkORYmCgaFjLIQ8Y3eWpwCJ0AewPNIg== - dependencies: - "@parcel/bundler-default" "2.7.0" - "@parcel/compressor-raw" "2.7.0" - "@parcel/namer-default" "2.7.0" - "@parcel/optimizer-css" "2.7.0" - "@parcel/optimizer-htmlnano" "2.7.0" - "@parcel/optimizer-image" "2.7.0" - "@parcel/optimizer-svgo" "2.7.0" - "@parcel/optimizer-terser" "2.7.0" - "@parcel/packager-css" "2.7.0" - "@parcel/packager-html" "2.7.0" - "@parcel/packager-js" "2.7.0" - "@parcel/packager-raw" "2.7.0" - "@parcel/packager-svg" "2.7.0" - "@parcel/reporter-dev-server" "2.7.0" - "@parcel/resolver-default" "2.7.0" - "@parcel/runtime-browser-hmr" "2.7.0" - "@parcel/runtime-js" "2.7.0" - "@parcel/runtime-react-refresh" "2.7.0" - "@parcel/runtime-service-worker" "2.7.0" - "@parcel/transformer-babel" "2.7.0" - "@parcel/transformer-css" "2.7.0" - "@parcel/transformer-html" "2.7.0" - "@parcel/transformer-image" "2.7.0" - "@parcel/transformer-js" "2.7.0" - "@parcel/transformer-json" "2.7.0" - "@parcel/transformer-postcss" "2.7.0" - "@parcel/transformer-posthtml" "2.7.0" - "@parcel/transformer-raw" "2.7.0" - "@parcel/transformer-react-refresh-wrap" "2.7.0" - "@parcel/transformer-svg" "2.7.0" - -"@parcel/core@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@parcel/core/-/core-2.7.0.tgz#3310f48230bd618735f199f159f37e6b45ed2710" - integrity sha512-7yKZUdh314Q/kU/9+27ZYTfcnXS6VYHuG+iiUlIohnvUUybxLqVJhdMU9Q+z2QcPka1IdJWz4K4Xx0y6/4goyg== - dependencies: - "@mischnic/json-sourcemap" "^0.1.0" - "@parcel/cache" "2.7.0" - "@parcel/diagnostic" "2.7.0" - "@parcel/events" "2.7.0" - "@parcel/fs" "2.7.0" - "@parcel/graph" "2.7.0" - "@parcel/hash" "2.7.0" - "@parcel/logger" "2.7.0" - "@parcel/package-manager" "2.7.0" - "@parcel/plugin" "2.7.0" - "@parcel/source-map" "^2.0.0" - "@parcel/types" "2.7.0" - "@parcel/utils" "2.7.0" - "@parcel/workers" "2.7.0" - abortcontroller-polyfill "^1.1.9" - base-x "^3.0.8" - browserslist "^4.6.6" - clone "^2.1.1" - dotenv "^7.0.0" - dotenv-expand "^5.1.0" - json5 "^2.2.0" - msgpackr "^1.5.4" - nullthrows "^1.1.1" - semver "^5.7.1" - -"@parcel/css-darwin-arm64@1.13.0": - version "1.13.0" - resolved "https://registry.yarnpkg.com/@parcel/css-darwin-arm64/-/css-darwin-arm64-1.13.0.tgz#06d1a419c24b7c00f93243989d87abed4597701f" - integrity sha512-GqyAeNa0Bah6WuIgqeBJCBRRcGEqkRMkK1YxgaFBhJiicrJJJ1/aZetzOhwNy6JGpQ8wnKP+p+t6IX2wrklaWw== - -"@parcel/css-darwin-x64@1.13.0": - version "1.13.0" - resolved "https://registry.yarnpkg.com/@parcel/css-darwin-x64/-/css-darwin-x64-1.13.0.tgz#818082dca71d6a30c7a255ae4732754daeede345" - integrity sha512-k7/YBwZ5nDXmyDLCo8Pf7ATqQPo34emv9Tpz2LbYUU3NCO2uhsGzjjsQiYXsAp5QeupPHgDmQeEX6WSvXxo0fQ== - -"@parcel/css-linux-arm-gnueabihf@1.13.0": - version "1.13.0" - resolved "https://registry.yarnpkg.com/@parcel/css-linux-arm-gnueabihf/-/css-linux-arm-gnueabihf-1.13.0.tgz#f916e699b21b1f0e8470545c6124a1b00c08a245" - integrity sha512-mBtDUkF/Gje3a7KMt2edEc9rUdKupTy49bvgGFE9dc+k9ZBQg1L8JK35mUo0Y3Y0jJmRDURY2+LRnxvOWJm3TA== - -"@parcel/css-linux-arm64-gnu@1.13.0": - version "1.13.0" - resolved "https://registry.yarnpkg.com/@parcel/css-linux-arm64-gnu/-/css-linux-arm64-gnu-1.13.0.tgz#2946390ebe1d70bfeff7aed84b8e58b60602150a" - integrity sha512-h90mKM4SpLLHc1vd06O5SkOae9aR36CfX+NWzgwLI4VKiZGcr+D78gsF7+CDkWrf1hqx5UonguMrqlN/MVdJBQ== - -"@parcel/css-linux-arm64-musl@1.13.0": - version "1.13.0" - resolved "https://registry.yarnpkg.com/@parcel/css-linux-arm64-musl/-/css-linux-arm64-musl-1.13.0.tgz#fa6d6990542a51f20b6086e387596e75ec1eea26" - integrity sha512-FGg6UyHaPwmZ+IFJmSiUzznNUsGYG1aIvKIWIaw2CgH2cUamqLORSnCIBV4LXrpZJ7I8X2845L76hzMvaetkRg== - -"@parcel/css-linux-x64-gnu@1.13.0": - version "1.13.0" - resolved "https://registry.yarnpkg.com/@parcel/css-linux-x64-gnu/-/css-linux-x64-gnu-1.13.0.tgz#6ff0cebf729ee054eb5d5c9d9ac43933d977f761" - integrity sha512-QJyCKM4ms7OaklffoqleouigDAYATZcCcZkp9AUEt7lqg8i2sWFrInEwWM4QhauwML3gxdKaRVugVZCzMSp3Kg== - -"@parcel/css-linux-x64-musl@1.13.0": - version "1.13.0" - resolved "https://registry.yarnpkg.com/@parcel/css-linux-x64-musl/-/css-linux-x64-musl-1.13.0.tgz#d8605cbe236233678496e11af480a5be68219106" - integrity sha512-V2mA8hzZaYRyMIZjEAMaZqrziYTtkjHP/jdS+qnAnHNdvIav3+3Saca3hbSnD2hQuM9iu2wzD3gHoVexlCjTOg== - -"@parcel/css-win32-x64-msvc@1.13.0": - version "1.13.0" - resolved "https://registry.yarnpkg.com/@parcel/css-win32-x64-msvc/-/css-win32-x64-msvc-1.13.0.tgz#55806568f31eb7ef55d1bcd8925b4992e043a62d" - integrity sha512-0WFdh4nS5lkjLnBr0N6O7OatbjUFZdVBSlPDdTdwEYZkl8La+SnmGGMEkrE/jiQ6NjjwgLorN7xainmPWuQdDw== - -"@parcel/css@^1.12.2": - version "1.13.0" - resolved "https://registry.yarnpkg.com/@parcel/css/-/css-1.13.0.tgz#90747a64e05511e813d0d46454165f60ec959e82" - integrity sha512-S4QD4Jd+j8QzU5ZZpfg+1cdmEXeJ71wabbV6ff3DJB/05gXWj9Qf/ZZUVtwH3V255Oif6/jcEmcWY4AmFXTyLw== - dependencies: - detect-libc "^1.0.3" - optionalDependencies: - "@parcel/css-darwin-arm64" "1.13.0" - "@parcel/css-darwin-x64" "1.13.0" - "@parcel/css-linux-arm-gnueabihf" "1.13.0" - "@parcel/css-linux-arm64-gnu" "1.13.0" - "@parcel/css-linux-arm64-musl" "1.13.0" - "@parcel/css-linux-x64-gnu" "1.13.0" - "@parcel/css-linux-x64-musl" "1.13.0" - "@parcel/css-win32-x64-msvc" "1.13.0" - -"@parcel/diagnostic@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@parcel/diagnostic/-/diagnostic-2.7.0.tgz#cf2596a20ce9277334616e12bbdac98490189e99" - integrity sha512-pdq/cTwVoL0n8yuDCRXFRSQHVWdmmIXPt3R3iT4KtYDYvOrMT2dLPT79IMqQkhYPANW8GuL15n/WxRngfRdkug== - dependencies: - "@mischnic/json-sourcemap" "^0.1.0" - nullthrows "^1.1.1" - -"@parcel/events@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@parcel/events/-/events-2.7.0.tgz#b6db8464d45626686134d412d3a36d024ffb1482" - integrity sha512-kQDwMKgZ1U4M/G17qeDYF6bW5kybluN6ajYPc7mZcrWg+trEI/oXi81GMFaMX0BSUhwhbiN5+/Vb2wiG/Sn6ig== - -"@parcel/fs-search@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@parcel/fs-search/-/fs-search-2.7.0.tgz#15e658006039ddc7b92528df5266ee2b9c47b6a4" - integrity sha512-K1Hv25bnRpwQVA15RvcRuB8ZhfclnCHA8N8L6w7Ul1ncSJDxCIkIAc5hAubYNNYW3kWjCC2SOaEgFKnbvMllEQ== - dependencies: - detect-libc "^1.0.3" - -"@parcel/fs@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@parcel/fs/-/fs-2.7.0.tgz#c9a0c60bdbef7101ff47f2db6b23814c3db06007" - integrity sha512-PU5fo4Hh8y03LZgemgVREttc0wyHQUNmsJCybxTB7EjJie2CqJRumo+DFppArlvdchLwJdc9em03yQV/GNWrEg== - dependencies: - "@parcel/fs-search" "2.7.0" - "@parcel/types" "2.7.0" - "@parcel/utils" "2.7.0" - "@parcel/watcher" "^2.0.0" - "@parcel/workers" "2.7.0" - -"@parcel/graph@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@parcel/graph/-/graph-2.7.0.tgz#2ae326c62764aaa53324b89d9c83ec0bc6ad55bf" - integrity sha512-Q6E94GS6q45PtsZh+m+gvFRp/N1Qopxhu2sxjcWsGs5iBd6IWn2oYLWOH5iVzEjWuYpW2HkB08lH6J50O63uOA== - dependencies: - "@parcel/utils" "2.7.0" - nullthrows "^1.1.1" - -"@parcel/hash@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@parcel/hash/-/hash-2.7.0.tgz#8825cff69a0bc4816737415e6e2aa29e8671c0b1" - integrity sha512-k6bSKnIlPJMPU3yjQzfgfvF9zuJZGOAlJgzpL4BbWvdbE8BTdjzLcFn0Ujrtud94EgIkiXd22sC2HpCUWoHGdA== - dependencies: - detect-libc "^1.0.3" - xxhash-wasm "^0.4.2" - -"@parcel/logger@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@parcel/logger/-/logger-2.7.0.tgz#1aa1de0458bdd613714ce4031134d92135aec590" - integrity sha512-qjMY/bYo38+o+OiIrTRldU9CwL1E7J72t+xkTP8QIcUxLWz5LYR0YbynZUVulmBSfqsykjjxCy4a+8siVr+lPw== - dependencies: - "@parcel/diagnostic" "2.7.0" - "@parcel/events" "2.7.0" - -"@parcel/markdown-ansi@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@parcel/markdown-ansi/-/markdown-ansi-2.7.0.tgz#4ba70e3661ce06cd8fd2eb3f7b84028853a586e4" - integrity sha512-ipOX0D6FVZFEXeb/z8MnTMq2RQEIuaILY90olVIuHEFLHHfOPEn+RK3u13HA1ChF5/9E3cMD79tu6x9JL9Kqag== - dependencies: - chalk "^4.1.0" - -"@parcel/namer-default@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@parcel/namer-default/-/namer-default-2.7.0.tgz#e008097586016f16509834db11985dcc772c314c" - integrity sha512-lIKMdsmi//7fepecNDYmJYzBlL91HifPsX03lJCdu1dC6q5fBs+gG0XjKKG7yPnSCw1qH/4m7drzt9+dRZYAHQ== - dependencies: - "@parcel/diagnostic" "2.7.0" - "@parcel/plugin" "2.7.0" - nullthrows "^1.1.1" - -"@parcel/node-resolver-core@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@parcel/node-resolver-core/-/node-resolver-core-2.7.0.tgz#468074aa58a2f0026a492607153079ebb16308e3" - integrity sha512-5UJQHalqMxdhJIs2hhqQzFfQpF7+NAowsRq064lYtiRvcD8wMr3OOQ9wd1iazGpFSl4JKdT7BwDU9/miDJmanQ== - dependencies: - "@parcel/diagnostic" "2.7.0" - "@parcel/utils" "2.7.0" - nullthrows "^1.1.1" - semver "^5.7.1" - -"@parcel/optimizer-css@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@parcel/optimizer-css/-/optimizer-css-2.7.0.tgz#460cde19b9ee61efed577473cb0822796b6e8b1a" - integrity sha512-IfnOMACqhcAclKyOW9X9JpsknB6OShk9OVvb8EvbDTKHJhQHNNmzE88OkSI/pS3ZVZP9Zj+nWcVHguV+kvDeiQ== - dependencies: - "@parcel/css" "^1.12.2" - "@parcel/diagnostic" "2.7.0" - "@parcel/plugin" "2.7.0" - "@parcel/source-map" "^2.0.0" - "@parcel/utils" "2.7.0" - browserslist "^4.6.6" - nullthrows "^1.1.1" - -"@parcel/optimizer-htmlnano@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@parcel/optimizer-htmlnano/-/optimizer-htmlnano-2.7.0.tgz#d2e843b539a430fcca723f08efcee26f98b3d40b" - integrity sha512-5QrGdWS5Hi4VXE3nQNrGqugmSXt68YIsWwKRAdarOxzyULSJS3gbCiQOXqIPRJobfZjnSIcdtkyxSiCUe1inIA== - dependencies: - "@parcel/plugin" "2.7.0" - htmlnano "^2.0.0" - nullthrows "^1.1.1" - posthtml "^0.16.5" - svgo "^2.4.0" - -"@parcel/optimizer-image@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@parcel/optimizer-image/-/optimizer-image-2.7.0.tgz#180d7709e6268e0634967eb265bf901aba2471ce" - integrity sha512-EnaXz5UjR67FUu0BEcqZTT9LsbB/iFAkkghCotbnbOuC5QQsloq6tw54TKU3y+R3qsjgUoMtGxPcGfVoXxZXYw== - dependencies: - "@parcel/diagnostic" "2.7.0" - "@parcel/plugin" "2.7.0" - "@parcel/utils" "2.7.0" - "@parcel/workers" "2.7.0" - detect-libc "^1.0.3" - -"@parcel/optimizer-svgo@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@parcel/optimizer-svgo/-/optimizer-svgo-2.7.0.tgz#9b4ab38a9d3c99504cf399a5c7709e5d2a615e71" - integrity sha512-IO1JV4NpfP3V7FrhsqCcV8pDQIHraFi1/ZvEJyssITxjH49Im/txKlwMiQuZZryAPn8Xb8g395Muawuk6AK6sg== - dependencies: - "@parcel/diagnostic" "2.7.0" - "@parcel/plugin" "2.7.0" - "@parcel/utils" "2.7.0" - svgo "^2.4.0" - -"@parcel/optimizer-terser@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@parcel/optimizer-terser/-/optimizer-terser-2.7.0.tgz#b9ef408f45714952d1502940b6a63e5ebd3f0940" - integrity sha512-07VZjIO8xsl2/WmS/qHI8lI/cpu47iS9eRpqwfZEEsdk1cfz50jhWkmFudHBxiHGMfcZ//1+DdaPg9RDBWZtZA== - dependencies: - "@parcel/diagnostic" "2.7.0" - "@parcel/plugin" "2.7.0" - "@parcel/source-map" "^2.0.0" - "@parcel/utils" "2.7.0" - nullthrows "^1.1.1" - terser "^5.2.0" - -"@parcel/package-manager@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@parcel/package-manager/-/package-manager-2.7.0.tgz#5de1bf5c94d95330e98dffb2a66c22d1f20c4c8a" - integrity sha512-wmfSX1mRrTi8MeA4KrnPk/x7zGUsILCQmTo6lA4gygzAxDbM1pGuyFN8/Kt0y0SFO2lbljARtD/4an5qdotH+Q== - dependencies: - "@parcel/diagnostic" "2.7.0" - "@parcel/fs" "2.7.0" - "@parcel/logger" "2.7.0" - "@parcel/types" "2.7.0" - "@parcel/utils" "2.7.0" - "@parcel/workers" "2.7.0" - semver "^5.7.1" - -"@parcel/packager-css@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@parcel/packager-css/-/packager-css-2.7.0.tgz#060af8b96e5ad53620b4021610364804e26d69b2" - integrity sha512-44nzZwu+ssGuiFmYM6cf/Y4iChiUZ4DUzzpegnGlhXtKJKe4NHntxThJynuRZWKN2AAf48avApDpimg2jW0KDw== - dependencies: - "@parcel/plugin" "2.7.0" - "@parcel/source-map" "^2.0.0" - "@parcel/utils" "2.7.0" - nullthrows "^1.1.1" - -"@parcel/packager-html@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@parcel/packager-html/-/packager-html-2.7.0.tgz#4f86698d05f5ec5c3ebc8b46102a6ae42c58a24a" - integrity sha512-Zgqd7sdcY/UnR370GR0q2ilmEohUDXsO8A1F28QCJzIsR1iCB6KRUT74+pawfQ1IhXZLaaFLLYe0UWcfm0JeXg== - dependencies: - "@parcel/plugin" "2.7.0" - "@parcel/types" "2.7.0" - "@parcel/utils" "2.7.0" - nullthrows "^1.1.1" - posthtml "^0.16.5" - -"@parcel/packager-js@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@parcel/packager-js/-/packager-js-2.7.0.tgz#e694cc731d75697e63d3d4be0bdbbe4a2ae8f1fc" - integrity sha512-wTRdM81PgRVDzWGXdWmqLwguWnTYWzhEDdjXpW2n8uMOu/CjHhMtogk65aaYk3GOnq6OBL/NsrmBiV/zKPj1vA== - dependencies: - "@parcel/diagnostic" "2.7.0" - "@parcel/hash" "2.7.0" - "@parcel/plugin" "2.7.0" - "@parcel/source-map" "^2.0.0" - "@parcel/utils" "2.7.0" - globals "^13.2.0" - nullthrows "^1.1.1" - -"@parcel/packager-raw@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@parcel/packager-raw/-/packager-raw-2.7.0.tgz#5b68de05c19bbcf438f40b4ae9f45411ba9739bd" - integrity sha512-jg2Zp8dI5VpIQlaeahXDCfrPN9m/DKht1NkR9P2CylMAwqCcc1Xc1RRiF0wfwcPZpPMpq1265n+4qnB7rjGBlA== - dependencies: - "@parcel/plugin" "2.7.0" - -"@parcel/packager-svg@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@parcel/packager-svg/-/packager-svg-2.7.0.tgz#e7e96503c86815eca285b9cc8908105075d9ab38" - integrity sha512-EmJg3HpD6/xxKBjir/CdCKJZwI24iVfBuxRS9LUp3xHAIebOzVh1z6IN+i2Di5+NyRwfOFaLliL4uMa1zwbyCA== - dependencies: - "@parcel/plugin" "2.7.0" - "@parcel/types" "2.7.0" - "@parcel/utils" "2.7.0" - posthtml "^0.16.4" - -"@parcel/plugin@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@parcel/plugin/-/plugin-2.7.0.tgz#0211281025d02afbc5a23fba237b7aae02e34e51" - integrity sha512-qqgx+nnMn6/0lRc4lKbLGmhNtBiT93S2gFNB4Eb4Pfz/SxVYoW+fmml+KdfOSiZffWOAH5L6NwhyD7N8aSikzw== - dependencies: - "@parcel/types" "2.7.0" - -"@parcel/reporter-cli@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@parcel/reporter-cli/-/reporter-cli-2.7.0.tgz#86499624e258034001b64c10b14e23ae4b92f44b" - integrity sha512-80gEODg8cnAmnxGVuaSVDo8JJ54P9AA2bHwSs1cIkHWlJ3BjDQb83H31bBHncJ5Kn5kQ/j+7WjlqHpTCiOR9PA== - dependencies: - "@parcel/plugin" "2.7.0" - "@parcel/types" "2.7.0" - "@parcel/utils" "2.7.0" - chalk "^4.1.0" - term-size "^2.2.1" - -"@parcel/reporter-dev-server@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@parcel/reporter-dev-server/-/reporter-dev-server-2.7.0.tgz#9bd3d10f745e0cbc9ab983ec046953c2c564dcb2" - integrity sha512-ySuou5addK8fGue8aXzo536BaEjMujDrEc1xkp4TasInXHVcA98b+SYX5NAZTGob5CxKvZQ5ylhg77zW30B+iA== - dependencies: - "@parcel/plugin" "2.7.0" - "@parcel/utils" "2.7.0" - -"@parcel/resolver-default@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@parcel/resolver-default/-/resolver-default-2.7.0.tgz#648a257b81abe2eda09700d8f36348a88ea0442e" - integrity sha512-v8TvWsbLK7/q7n4gv6OrYNbW18xUx4zKbVMGZb1u4yMhzEH4HFr1D9OeoTq3jk+ximAigds8B6triQbL5exF7A== - dependencies: - "@parcel/node-resolver-core" "2.7.0" - "@parcel/plugin" "2.7.0" - -"@parcel/runtime-browser-hmr@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@parcel/runtime-browser-hmr/-/runtime-browser-hmr-2.7.0.tgz#aed79b96c0d97021f56f2b7e35bc2d4f70869e26" - integrity sha512-PLbMLdclQeYsi2LkilZVGFV1n3y55G1jaBvby4ekedUZjMw3SWdMY2tDxgSDdFWfLCnYHJXdGUQSzGGi1kPzjA== - dependencies: - "@parcel/plugin" "2.7.0" - "@parcel/utils" "2.7.0" - -"@parcel/runtime-js@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@parcel/runtime-js/-/runtime-js-2.7.0.tgz#63dd744e96c3554ac86778ffce1c8055e7653fce" - integrity sha512-9/YUZTBNrSN2H6rbz/o1EOM0O7I3ZR/x9IDzxjJBD6Mi+0uCgCD02aedare/SNr1qgnbZZWmhpOzC+YgREcfLA== - dependencies: - "@parcel/plugin" "2.7.0" - "@parcel/utils" "2.7.0" - nullthrows "^1.1.1" - -"@parcel/runtime-react-refresh@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@parcel/runtime-react-refresh/-/runtime-react-refresh-2.7.0.tgz#c56b847ef1144264e918339381e040ffe811efc5" - integrity sha512-vDKO0rWqRzEpmvoZ4kkYUiSsTxT5NnH904BFPFxKI0wJCl6yEmPuEifmATo73OuYhP6jIP3Qfl1R4TtiDFPJ1Q== - dependencies: - "@parcel/plugin" "2.7.0" - "@parcel/utils" "2.7.0" - react-error-overlay "6.0.9" - react-refresh "^0.9.0" - -"@parcel/runtime-service-worker@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@parcel/runtime-service-worker/-/runtime-service-worker-2.7.0.tgz#352c3722ec635eee2898d9698541e3c1f53e8906" - integrity sha512-uD2pAV0yV6+e7JaWH4KVPbG+zRCrxr/OACyS9tIh+Q/R1vRmh8zGM3yhdrcoiZ7tFOnM72vd6xY11eTrUsSVig== - dependencies: - "@parcel/plugin" "2.7.0" - "@parcel/utils" "2.7.0" - nullthrows "^1.1.1" - -"@parcel/source-map@^2.0.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@parcel/source-map/-/source-map-2.1.0.tgz#bd47aa0a93ae261436f7c5da40b09856e1a331d5" - integrity sha512-E7UOEIof2o89LrKk1agSLmwakjigmEdDp1ZaEdsLVEvq63R/bul4Ij5CT+0ZDcijGpl5tnTbQADY9EyYGtjYgQ== - dependencies: - detect-libc "^1.0.3" - -"@parcel/transformer-babel@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-babel/-/transformer-babel-2.7.0.tgz#eae98d50a99cd722c3146cd57c479bfb86f537b2" - integrity sha512-7iklDXXnKH1530+QbI+e4kIJ+Q1puA1ulRS10db3aUJMj5GnvXGDFwhSZ7+T1ps66QHO7cVO29VlbqiRDarH1Q== - dependencies: - "@parcel/diagnostic" "2.7.0" - "@parcel/plugin" "2.7.0" - "@parcel/source-map" "^2.0.0" - "@parcel/utils" "2.7.0" - browserslist "^4.6.6" - json5 "^2.2.0" - nullthrows "^1.1.1" - semver "^5.7.0" - -"@parcel/transformer-css@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-css/-/transformer-css-2.7.0.tgz#d0879ec04191e5ba3eadb6fc06b7ec0db3f5c3f6" - integrity sha512-J4EpWK9spQpXyNCmKK8Xnane0xW/1B/EAmfp7Fiv7g+5yUjY4ODf4KUugvE+Eb2gekPkhOKNHermO2KrX0/PFA== - dependencies: - "@parcel/css" "^1.12.2" - "@parcel/diagnostic" "2.7.0" - "@parcel/plugin" "2.7.0" - "@parcel/source-map" "^2.0.0" - "@parcel/utils" "2.7.0" - browserslist "^4.6.6" - nullthrows "^1.1.1" - -"@parcel/transformer-html@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-html/-/transformer-html-2.7.0.tgz#5397a924fea683ef2c345f36f99f67f0181d6967" - integrity sha512-wYJl5rn81W+Rlk9oQwDJcjoVsWVDKyeri84FzmlGXOsg0EYgnqOiG+3MDM8GeZjfuGe5fuoum4eqZeS0WdUHXw== - dependencies: - "@parcel/diagnostic" "2.7.0" - "@parcel/hash" "2.7.0" - "@parcel/plugin" "2.7.0" - nullthrows "^1.1.1" - posthtml "^0.16.5" - posthtml-parser "^0.10.1" - posthtml-render "^3.0.0" - semver "^5.7.1" - -"@parcel/transformer-image@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-image/-/transformer-image-2.7.0.tgz#e569ffc426c6060bc4dcccc0347c526930abfba4" - integrity sha512-mhi9/R5/ULhCkL2COVIKhNFoLDiZwQgprdaTJr5fnODggVxEX5o7ebFV6KNLMTEkwZUJWoB1hL0ziI0++DtoFA== - dependencies: - "@parcel/plugin" "2.7.0" - "@parcel/utils" "2.7.0" - "@parcel/workers" "2.7.0" - nullthrows "^1.1.1" - -"@parcel/transformer-js@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-js/-/transformer-js-2.7.0.tgz#1e69295a11bf70d880cdd3846cf89016a74aac50" - integrity sha512-mzerR+D4rDomUSIk5RSTa2w+DXBdXUeQrpDO74WCDdpDi1lIl8ppFpqtmU7O6y6p8QsgkmS9b0g/vhcry6CJTA== - dependencies: - "@parcel/diagnostic" "2.7.0" - "@parcel/plugin" "2.7.0" - "@parcel/source-map" "^2.0.0" - "@parcel/utils" "2.7.0" - "@parcel/workers" "2.7.0" - "@swc/helpers" "^0.4.2" - browserslist "^4.6.6" - detect-libc "^1.0.3" - nullthrows "^1.1.1" - regenerator-runtime "^0.13.7" - semver "^5.7.1" - -"@parcel/transformer-json@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-json/-/transformer-json-2.7.0.tgz#c203f74cd445ce93eb833dd88be8127d1eadc6c3" - integrity sha512-RQjuxBpYOch+kr4a0zi77KJtOLTPYRM7iq4NN80zKnA0r0dwDUCxZBtaj2l0O0o3R4MMJnm+ncP+cB7XR7dZYA== - dependencies: - "@parcel/plugin" "2.7.0" - json5 "^2.2.0" - -"@parcel/transformer-postcss@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-postcss/-/transformer-postcss-2.7.0.tgz#66be4469ae9186c89638ff67ec5808139caaeb8e" - integrity sha512-b6RskXBWf0MjpC9qjR2dQ1ZdRnlOiKYseG5CEovWCqM218RtdydFKz7jS+5Gxkb6qBtOG7zGPONXdPe+gTILcA== - dependencies: - "@parcel/diagnostic" "2.7.0" - "@parcel/hash" "2.7.0" - "@parcel/plugin" "2.7.0" - "@parcel/utils" "2.7.0" - clone "^2.1.1" - nullthrows "^1.1.1" - postcss-value-parser "^4.2.0" - semver "^5.7.1" - -"@parcel/transformer-posthtml@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-posthtml/-/transformer-posthtml-2.7.0.tgz#67d5761b895574edb771f7ab1b24ec80775f58bd" - integrity sha512-cP8YOiSynWJ1ycmBlhnnHeuQb2cwmklZ+BNyLUktj5p78kDy2de7VjX+dRNRHoW4H9OgEcSF4UEfDVVz5RYIhw== - dependencies: - "@parcel/plugin" "2.7.0" - "@parcel/utils" "2.7.0" - nullthrows "^1.1.1" - posthtml "^0.16.5" - posthtml-parser "^0.10.1" - posthtml-render "^3.0.0" - semver "^5.7.1" - -"@parcel/transformer-raw@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-raw/-/transformer-raw-2.7.0.tgz#d6d8b94d1b33efc3dbf748ec1954c8917a2e1566" - integrity sha512-sDnItWCFSDez0izK1i5cgv+kXzZTbcJh4rNpVIgmE1kBLvAz608sqgcCkavb2wVJIvLesxYM+5G4p1CwkDlZ1g== - dependencies: - "@parcel/plugin" "2.7.0" - -"@parcel/transformer-react-refresh-wrap@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-react-refresh-wrap/-/transformer-react-refresh-wrap-2.7.0.tgz#e206b529d4a3444e14ba329d3323c5be3ded25d2" - integrity sha512-1vRmIJzyBA1nIiXTAU6tZExq2FvJj/2F0ft6KDw8GYPv0KjmdiPo/PmaZ7JeSVOM6SdXQIQCbTmp1vkMP7DtkA== - dependencies: - "@parcel/plugin" "2.7.0" - "@parcel/utils" "2.7.0" - react-refresh "^0.9.0" - -"@parcel/transformer-svg@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-svg/-/transformer-svg-2.7.0.tgz#c2a7d10bdbc6aeb2ae7ef85db5b583574807071c" - integrity sha512-ioER37zceuuE+K6ZrnjCyMUWEnv+63hIAFResc1OXxRhyt+7kzMz9ZqK0Mt6QMLwl1dxhkLmrU41n9IxzKZuSQ== - dependencies: - "@parcel/diagnostic" "2.7.0" - "@parcel/hash" "2.7.0" - "@parcel/plugin" "2.7.0" - nullthrows "^1.1.1" - posthtml "^0.16.5" - posthtml-parser "^0.10.1" - posthtml-render "^3.0.0" - semver "^5.7.1" - -"@parcel/types@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@parcel/types/-/types-2.7.0.tgz#c89e95964339324c1931ef7a17906a72291d6b73" - integrity sha512-+dhXVUnseTCpJvBTGMp0V6X13z6O/A/+CUtwEpMGZ8XSmZ4Gk44GvaTiBOp0bJpWG4fvCKp+UmC8PYbrDiiziw== - dependencies: - "@parcel/cache" "2.7.0" - "@parcel/diagnostic" "2.7.0" - "@parcel/fs" "2.7.0" - "@parcel/package-manager" "2.7.0" - "@parcel/source-map" "^2.0.0" - "@parcel/workers" "2.7.0" - utility-types "^3.10.0" - -"@parcel/utils@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@parcel/utils/-/utils-2.7.0.tgz#f795d0f43efdd449ab0bbfac3632cd7f3ec0e4dd" - integrity sha512-jNZ5bIGg1r1RDRKi562o4kuVwnz+XJ2Ie3b0Zwrqwvgfj6AbRFIKzDd+h85dWWmcDYzKUbHp11u6VJl1u8Vapg== - dependencies: - "@parcel/codeframe" "2.7.0" - "@parcel/diagnostic" "2.7.0" - "@parcel/hash" "2.7.0" - "@parcel/logger" "2.7.0" - "@parcel/markdown-ansi" "2.7.0" - "@parcel/source-map" "^2.0.0" - chalk "^4.1.0" - -"@parcel/watcher@^2.0.0": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.0.5.tgz#f913a54e1601b0aac972803829b0eece48de215b" - integrity sha512-x0hUbjv891omnkcHD7ZOhiyyUqUUR6MNjq89JhEI3BxppeKWAm6NPQsqqRrAkCJBogdT/o/My21sXtTI9rJIsw== - dependencies: - node-addon-api "^3.2.1" - node-gyp-build "^4.3.0" - -"@parcel/workers@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@parcel/workers/-/workers-2.7.0.tgz#d74955d361337127227912a5ab26cb3079ebfc78" - integrity sha512-99VfaOX+89+RaoTSyH9ZQtkMBFZBFMvJmVJ/GeJT6QCd2wtKBStTHlaSnQOkLD/iRjJCNwV2xpZmm8YkTwV+hg== - dependencies: - "@parcel/diagnostic" "2.7.0" - "@parcel/logger" "2.7.0" - "@parcel/types" "2.7.0" - "@parcel/utils" "2.7.0" - chrome-trace-event "^1.0.2" - nullthrows "^1.1.1" - -"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" - integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ== - -"@protobufjs/base64@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" - integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== - -"@protobufjs/codegen@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" - integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== - -"@protobufjs/eventemitter@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" - integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q== - -"@protobufjs/fetch@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" - integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ== - dependencies: - "@protobufjs/aspromise" "^1.1.1" - "@protobufjs/inquire" "^1.1.0" - -"@protobufjs/float@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" - integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ== - -"@protobufjs/inquire@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" - integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q== - -"@protobufjs/path@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" - integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA== - -"@protobufjs/pool@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" - integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw== - -"@protobufjs/utf8@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" - integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== - -"@swc/helpers@^0.4.2": - version "0.4.11" - resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.4.11.tgz#db23a376761b3d31c26502122f349a21b592c8de" - integrity sha512-rEUrBSGIoSFuYxwBYtlUFMlE2CwGhmW+w9355/5oduSw8e5h2+Tj4UrAGNNgP9915++wj5vkQo0UuOBqOAq4nw== - dependencies: - tslib "^2.4.0" - -"@trysound/sax@0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" - integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== - -"@types/long@^4.0.1": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.2.tgz#b74129719fc8d11c01868010082d483b7545591a" - integrity sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA== - -"@types/node@>=13.7.0": - version "18.6.3" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.6.3.tgz#4e4a95b6fe44014563ceb514b2598b3e623d1c98" - integrity sha512-6qKpDtoaYLM+5+AFChLhHermMQxc3TOEFIDzrZLPRGHPrLEwqFkkT5Kx3ju05g6X7uDPazz3jHbKPX0KzCjntg== - -"@types/object-hash@^1.3.0": - version "1.3.4" - resolved "https://registry.yarnpkg.com/@types/object-hash/-/object-hash-1.3.4.tgz#079ba142be65833293673254831b5e3e847fe58b" - integrity sha512-xFdpkAkikBgqBdG9vIlsqffDV8GpvnPEzs0IUtr1v3BEB97ijsFQ4RXVbUZwjFThhB4MDSTUfvmxUD5PGx0wXA== - -"@types/parse-json@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" - integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== - -abortcontroller-polyfill@^1.1.9: - version "1.7.3" - resolved "https://registry.yarnpkg.com/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.3.tgz#1b5b487bd6436b5b764fd52a612509702c3144b5" - integrity sha512-zetDJxd89y3X99Kvo4qFx8GKlt6GsvN3UcRZHwU6iFA/0KiOmhkTVhe8oRoTBiTVPZu09x3vCra47+w8Yz1+2Q== - -acorn@^8.5.0: - version "8.8.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" - integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== - -ansi-regex@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" - integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== - -ansi-styles@^3.2.0, ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -anymatch@~3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -base-x@^3.0.8: - version "3.0.9" - resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320" - integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ== - dependencies: - safe-buffer "^5.0.1" - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -boolbase@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== - -braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -browserslist@^4.6.6: - version "4.21.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.3.tgz#5df277694eb3c48bc5c4b05af3e8b7e09c5a6d1a" - integrity sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ== - dependencies: - caniuse-lite "^1.0.30001370" - electron-to-chromium "^1.4.202" - node-releases "^2.0.6" - update-browserslist-db "^1.0.5" - -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camelcase@^5.0.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -caniuse-lite@^1.0.30001370: - version "1.0.30001383" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001383.tgz#aecf317ccd940690725ae3ae4f28293c5fb8050e" - integrity sha512-swMpEoTp5vDoGBZsYZX7L7nXHe6dsHxi9o6/LKf/f0LukVtnrxly5GVb/fWdCDTqi/yw6Km6tiJ0pmBacm0gbg== - -chalk@^2.0.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^4.1.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chokidar-cli@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/chokidar-cli/-/chokidar-cli-3.0.0.tgz#29283666063b9e167559d30f247ff8fc48794eb7" - integrity sha512-xVW+Qeh7z15uZRxHOkP93Ux8A0xbPzwK4GaqD8dQOYc34TlkqUhVSS59fK36DOp5WdJlrRzlYSy02Ht99FjZqQ== - dependencies: - chokidar "^3.5.2" - lodash.debounce "^4.0.8" - lodash.throttle "^4.1.1" - yargs "^13.3.0" - -chokidar@^3.5.2: - version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== - 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" - optionalDependencies: - fsevents "~2.3.2" - -chrome-trace-event@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" - integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== - -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" - integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== - dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" - -clone@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" - integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -commander@^2.20.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -commander@^7.0.0, commander@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" - integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== - -cosmiconfig@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" - integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== - 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" - -css-select@^4.1.3: - version "4.3.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" - integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== - dependencies: - boolbase "^1.0.0" - css-what "^6.0.1" - domhandler "^4.3.1" - domutils "^2.8.0" - nth-check "^2.0.1" - -css-tree@^1.1.2, css-tree@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" - integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== - dependencies: - mdn-data "2.0.14" - source-map "^0.6.1" - -css-what@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" - integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== - -csso@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" - integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== - dependencies: - css-tree "^1.1.2" - -dataloader@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/dataloader/-/dataloader-1.4.0.tgz#bca11d867f5d3f1b9ed9f737bd15970c65dff5c8" - integrity sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw== - -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== - -detect-libc@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg== - -dom-serializer@^1.0.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" - integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.2.0" - entities "^2.0.0" - -domelementtype@^2.0.1, domelementtype@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" - integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== - -domhandler@^4.2.0, domhandler@^4.2.2, domhandler@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" - integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== - dependencies: - domelementtype "^2.2.0" - -domutils@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" - integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== - dependencies: - dom-serializer "^1.0.1" - domelementtype "^2.2.0" - domhandler "^4.2.0" - -dotenv-expand@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" - integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== - -dotenv@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-7.0.0.tgz#a2be3cd52736673206e8a85fb5210eea29628e7c" - integrity sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g== - -electron-to-chromium@^1.4.202: - version "1.4.230" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.230.tgz#666909fdf5765acb1348b69752ee9955dc1664b7" - integrity sha512-3pwjAK0qHSDN9+YAF4fJknsSruP7mpjdWzUSruIJD/JCH77pEh0SorEyb3xVaKkfwk2tzjOt2D8scJ0KAdfXLA== - -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== - -entities@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" - integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== - -entities@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4" - integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q== - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - -fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -get-caller-file@^2.0.1: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-port@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/get-port/-/get-port-4.2.0.tgz#e37368b1e863b7629c43c5a323625f95cf24b119" - integrity sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw== - -glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -globals@^13.2.0: - version "13.17.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.17.0.tgz#902eb1e680a41da93945adbdcb5a9f361ba69bd4" - integrity sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw== - dependencies: - type-fest "^0.20.2" - -google-protobuf@^3.15.5: - version "3.21.0" - resolved "https://registry.yarnpkg.com/google-protobuf/-/google-protobuf-3.21.0.tgz#8dfa3fca16218618d373d414d3c1139e28034d6e" - integrity sha512-byR7MBTK4tZ5PZEb+u5ZTzpt4SfrTxv5682MjPlHN16XeqgZE2/8HOIWeiXe8JKnT9OVbtBGhbq8mtvkK8cd5g== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -htmlnano@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/htmlnano/-/htmlnano-2.0.2.tgz#3e3170941e2446a86211196d740272ebca78f878" - integrity sha512-+ZrQFS4Ub+zd+/fWwfvoYCEGNEa0/zrpys6CyXxvZDwtL7Pl+pOtRkiujyvBQ7Lmfp7/iEPxtOFgxWA16Gkj3w== - dependencies: - cosmiconfig "^7.0.1" - posthtml "^0.16.5" - timsort "^0.3.0" - -htmlparser2@^7.1.1: - version "7.2.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-7.2.0.tgz#8817cdea38bbc324392a90b1990908e81a65f5a5" - integrity sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.2.2" - domutils "^2.8.0" - entities "^3.0.1" - -import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== - -is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-json@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-json/-/is-json-2.0.1.tgz#6be166d144828a131d686891b983df62c39491ff" - integrity sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA== - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json5@^2.2.0, json5@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" - integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== - -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - -lmdb@2.5.2: - version "2.5.2" - resolved "https://registry.yarnpkg.com/lmdb/-/lmdb-2.5.2.tgz#37e28a9fb43405f4dc48c44cec0e13a14c4a6ff1" - integrity sha512-V5V5Xa2Hp9i2XsbDALkBTeHXnBXh/lEmk9p22zdr7jtuOIY9TGhjK6vAvTpOOx9IKU4hJkRWZxn/HsvR1ELLtA== - dependencies: - msgpackr "^1.5.4" - node-addon-api "^4.3.0" - node-gyp-build-optional-packages "5.0.3" - ordered-binary "^1.2.4" - weak-lru-cache "^1.2.2" - optionalDependencies: - "@lmdb/lmdb-darwin-arm64" "2.5.2" - "@lmdb/lmdb-darwin-x64" "2.5.2" - "@lmdb/lmdb-linux-arm" "2.5.2" - "@lmdb/lmdb-linux-arm64" "2.5.2" - "@lmdb/lmdb-linux-x64" "2.5.2" - "@lmdb/lmdb-win32-x64" "2.5.2" - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== - -lodash.throttle@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" - integrity sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ== - -lodash@^4.17.15: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -long@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" - integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== - -long@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/long/-/long-5.2.0.tgz#2696dadf4b4da2ce3f6f6b89186085d94d52fd61" - integrity sha512-9RTUNjK60eJbx3uz+TEGF7fUr29ZDxR5QzXcyDpeSfeH28S9ycINflOgOlppit5U+4kNTe83KQnMEerw7GmE8w== - -mdn-data@2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" - integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== - -msgpackr-extract@^2.0.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/msgpackr-extract/-/msgpackr-extract-2.1.2.tgz#56272030f3e163e1b51964ef8b1cd5e7240c03ed" - integrity sha512-cmrmERQFb19NX2JABOGtrKdHMyI6RUyceaPBQ2iRz9GnDkjBWFjNJC0jyyoOfZl2U/LZE3tQCCQc4dlRyA8mcA== - dependencies: - node-gyp-build-optional-packages "5.0.3" - optionalDependencies: - "@msgpackr-extract/msgpackr-extract-darwin-arm64" "2.1.2" - "@msgpackr-extract/msgpackr-extract-darwin-x64" "2.1.2" - "@msgpackr-extract/msgpackr-extract-linux-arm" "2.1.2" - "@msgpackr-extract/msgpackr-extract-linux-arm64" "2.1.2" - "@msgpackr-extract/msgpackr-extract-linux-x64" "2.1.2" - "@msgpackr-extract/msgpackr-extract-win32-x64" "2.1.2" - -msgpackr@^1.5.4: - version "1.6.2" - resolved "https://registry.yarnpkg.com/msgpackr/-/msgpackr-1.6.2.tgz#176cd9f6b4437dad87a839b37f23c2dfee408d9a" - integrity sha512-bqSQ0DYJbXbrJcrZFmMygUZmqQiDfI2ewFVWcrZY12w5XHWtPuW4WppDT/e63Uu311ajwkRRXSoF0uILroBeTA== - optionalDependencies: - msgpackr-extract "^2.0.2" - -node-addon-api@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" - integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== - -node-addon-api@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-4.3.0.tgz#52a1a0b475193e0928e98e0426a0d1254782b77f" - integrity sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ== - -node-gyp-build-optional-packages@5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.3.tgz#92a89d400352c44ad3975010368072b41ad66c17" - integrity sha512-k75jcVzk5wnnc/FMxsf4udAoTEUv2jY3ycfdSd3yWu6Cnd1oee6/CfZJApyscA4FJOmdoixWwiwOyf16RzD5JA== - -node-gyp-build@^4.3.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.5.0.tgz#7a64eefa0b21112f89f58379da128ac177f20e40" - integrity sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg== - -node-releases@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" - integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -nth-check@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" - integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== - dependencies: - boolbase "^1.0.0" - -nullthrows@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" - integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw== - -object-hash@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-1.3.1.tgz#fde452098a951cb145f039bb7d455449ddc126df" - integrity sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA== - -ordered-binary@^1.2.4: - version "1.3.0" - resolved "https://registry.yarnpkg.com/ordered-binary/-/ordered-binary-1.3.0.tgz#a116d64c923278216e335602d279750b2ebd746e" - integrity sha512-knIeYepTI6BDAzGxqFEDGtI/iGqs57H32CInAIxEvAHG46vk1Di0CEpyc1A7iY39B1mfik3g3KLYwOTNnnMHLA== - -p-limit@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -parcel@^2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/parcel/-/parcel-2.7.0.tgz#41fdd3e5c7144d4cf7f1fa3ab8d0ea0d47d31f77" - integrity sha512-pRYwnivwtNP0tip8xYSo4zCB0XhLt7/gJzP1p8OovCqkmFjG9VG+GW9TcAKqMIo0ovEa9tT+/s6gY1Qy+BONGQ== - dependencies: - "@parcel/config-default" "2.7.0" - "@parcel/core" "2.7.0" - "@parcel/diagnostic" "2.7.0" - "@parcel/events" "2.7.0" - "@parcel/fs" "2.7.0" - "@parcel/logger" "2.7.0" - "@parcel/package-manager" "2.7.0" - "@parcel/reporter-cli" "2.7.0" - "@parcel/reporter-dev-server" "2.7.0" - "@parcel/utils" "2.7.0" - chalk "^4.1.0" - commander "^7.0.0" - get-port "^4.2.0" - v8-compile-cache "^2.0.0" - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-json@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - 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" - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== - -picomatch@^2.0.4, picomatch@^2.2.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -postcss-value-parser@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" - integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== - -posthtml-parser@^0.10.1: - version "0.10.2" - resolved "https://registry.yarnpkg.com/posthtml-parser/-/posthtml-parser-0.10.2.tgz#df364d7b179f2a6bf0466b56be7b98fd4e97c573" - integrity sha512-PId6zZ/2lyJi9LiKfe+i2xv57oEjJgWbsHGGANwos5AvdQp98i6AtamAl8gzSVFGfQ43Glb5D614cvZf012VKg== - dependencies: - htmlparser2 "^7.1.1" - -posthtml-parser@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/posthtml-parser/-/posthtml-parser-0.11.0.tgz#25d1c7bf811ea83559bc4c21c189a29747a24b7a" - integrity sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw== - dependencies: - htmlparser2 "^7.1.1" - -posthtml-render@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/posthtml-render/-/posthtml-render-3.0.0.tgz#97be44931496f495b4f07b99e903cc70ad6a3205" - integrity sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA== - dependencies: - is-json "^2.0.1" - -posthtml@^0.16.4, posthtml@^0.16.5: - version "0.16.6" - resolved "https://registry.yarnpkg.com/posthtml/-/posthtml-0.16.6.tgz#e2fc407f67a64d2fa3567afe770409ffdadafe59" - integrity sha512-JcEmHlyLK/o0uGAlj65vgg+7LIms0xKXe60lcDOTU7oVX/3LuEuLwrQpW3VJ7de5TaFKiW4kWkaIpJL42FEgxQ== - dependencies: - posthtml-parser "^0.11.0" - posthtml-render "^3.0.0" - -prettier@^2.5.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" - integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== - -protobufjs@^6.11.3, protobufjs@^6.8.8: - version "6.11.3" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.3.tgz#637a527205a35caa4f3e2a9a4a13ddffe0e7af74" - integrity sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg== - dependencies: - "@protobufjs/aspromise" "^1.1.2" - "@protobufjs/base64" "^1.1.2" - "@protobufjs/codegen" "^2.0.4" - "@protobufjs/eventemitter" "^1.1.0" - "@protobufjs/fetch" "^1.1.0" - "@protobufjs/float" "^1.0.2" - "@protobufjs/inquire" "^1.1.0" - "@protobufjs/path" "^1.1.2" - "@protobufjs/pool" "^1.1.0" - "@protobufjs/utf8" "^1.1.0" - "@types/long" "^4.0.1" - "@types/node" ">=13.7.0" - long "^4.0.0" - -protobufjs@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.0.0.tgz#8c678e1351fd926178fce5a4213913e8d990974f" - integrity sha512-ffNIEm+quOcYtQvHdW406v1NQmZSuqVklxsXk076BtuFnlYZfigLU+JOMrTD8TUOyqHYbRI/fSVNvgd25YeN3w== - dependencies: - "@protobufjs/aspromise" "^1.1.2" - "@protobufjs/base64" "^1.1.2" - "@protobufjs/codegen" "^2.0.4" - "@protobufjs/eventemitter" "^1.1.0" - "@protobufjs/fetch" "^1.1.0" - "@protobufjs/float" "^1.0.2" - "@protobufjs/inquire" "^1.1.0" - "@protobufjs/path" "^1.1.2" - "@protobufjs/pool" "^1.1.0" - "@protobufjs/utf8" "^1.1.0" - "@types/long" "^4.0.1" - "@types/node" ">=13.7.0" - long "^5.0.0" - -react-error-overlay@6.0.9: - version "6.0.9" - resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.9.tgz#3c743010c9359608c375ecd6bc76f35d93995b0a" - integrity sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew== - -react-refresh@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.9.0.tgz#71863337adc3e5c2f8a6bfddd12ae3bfe32aafbf" - integrity sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ== - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -regenerator-runtime@^0.13.7: - version "0.13.9" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" - integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== - -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -safe-buffer@^5.0.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -semver@^5.7.0, semver@^5.7.1: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== - -source-map-support@~0.5.20: - version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map@^0.6.0, source-map@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -stable@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" - integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== - -string-width@^3.0.0, string-width@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" - -strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -svgo@^2.4.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" - integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== - dependencies: - "@trysound/sax" "0.2.0" - commander "^7.2.0" - css-select "^4.1.3" - css-tree "^1.1.3" - csso "^4.2.0" - picocolors "^1.0.0" - stable "^0.1.8" - -term-size@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54" - integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== - -terser@^5.2.0: - version "5.15.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.15.0.tgz#e16967894eeba6e1091509ec83f0c60e179f2425" - integrity sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA== - dependencies: - "@jridgewell/source-map" "^0.3.2" - acorn "^8.5.0" - commander "^2.20.0" - source-map-support "~0.5.20" - -timsort@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" - integrity sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A== - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -ts-poet@^4.15.0: - version "4.15.0" - resolved "https://registry.yarnpkg.com/ts-poet/-/ts-poet-4.15.0.tgz#637145fa554d3b27c56541578df0ce08cd9eb328" - integrity sha512-sLLR8yQBvHzi9d4R1F4pd+AzQxBfzOSSjfxiJxQhkUoH5bL7RsAC6wgvtVUQdGqiCsyS9rT6/8X2FI7ipdir5g== - dependencies: - lodash "^4.17.15" - prettier "^2.5.1" - -ts-proto-descriptors@1.7.1: - version "1.7.1" - resolved "https://registry.yarnpkg.com/ts-proto-descriptors/-/ts-proto-descriptors-1.7.1.tgz#685d00305b06adfa929fd5a016a419382cd64c50" - integrity sha512-oIKUh3K4Xts4v29USGLfUG+2mEk32MsqpgZAOUyUlkrcIdv34yE+k2oZ2Nzngm6cV/JgFdOxRCqeyvmWHuYAyw== - dependencies: - long "^4.0.0" - protobufjs "^6.8.8" - -ts-proto@^1.121.1: - version "1.121.1" - resolved "https://registry.yarnpkg.com/ts-proto/-/ts-proto-1.121.1.tgz#4ffcfbd5fb7eabf64a36ff6068a61249a552d2b1" - integrity sha512-lO7rT+fmXT6HzfTtClAgjmBLU9bxb6fLsSSpWyYTZgsHbbmowC4zB5JO6PiTcVTKhW3jNlTekwgoSStJM7PrmQ== - dependencies: - "@types/object-hash" "^1.3.0" - dataloader "^1.4.0" - object-hash "^1.3.1" - protobufjs "^6.11.3" - ts-poet "^4.15.0" - ts-proto-descriptors "1.7.1" - -ts-protoc-gen@^0.15.0: - version "0.15.0" - resolved "https://registry.yarnpkg.com/ts-protoc-gen/-/ts-protoc-gen-0.15.0.tgz#2fec5930b46def7dcc9fa73c060d770b7b076b7b" - integrity sha512-TycnzEyrdVDlATJ3bWFTtra3SCiEP0W0vySXReAuEygXCUr1j2uaVyL0DhzjwuUdQoW5oXPwk6oZWeA0955V+g== - dependencies: - google-protobuf "^3.15.5" - -tslib@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" - integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -update-browserslist-db@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz#be06a5eedd62f107b7c19eb5bcefb194411abf38" - integrity sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q== - dependencies: - escalade "^3.1.1" - picocolors "^1.0.0" - -utility-types@^3.10.0: - version "3.10.0" - resolved "https://registry.yarnpkg.com/utility-types/-/utility-types-3.10.0.tgz#ea4148f9a741015f05ed74fd615e1d20e6bed82b" - integrity sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg== - -v8-compile-cache@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" - integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== - -weak-lru-cache@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz#fdbb6741f36bae9540d12f480ce8254060dccd19" - integrity sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw== - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q== - -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" - integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== - dependencies: - ansi-styles "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" - -xxhash-wasm@^0.4.2: - version "0.4.2" - resolved "https://registry.yarnpkg.com/xxhash-wasm/-/xxhash-wasm-0.4.2.tgz#752398c131a4dd407b5132ba62ad372029be6f79" - integrity sha512-/eyHVRJQCirEkSZ1agRSCwriMhwlyUcFkXD5TPVSLP+IPzjsqMVzZwdoczLp1SoQU0R3dxz1RpIK+4YNQbCVOA== - -y18n@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" - integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== - -yaml@^1.10.0: - version "1.10.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" - integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== - -yargs-parser@^13.1.2: - version "13.1.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" - integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs@^13.3.0: - version "13.3.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" - integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== - dependencies: - cliui "^5.0.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^13.1.2" diff --git a/turbo.json b/turbo.json index be27f8844..45e2b1a81 100644 --- a/turbo.json +++ b/turbo.json @@ -1,5 +1,5 @@ { - "npmClient": "npm", + "npmClient": "yarn", "pipeline": { "build": { "cache": false, diff --git a/yarn.lock b/yarn.lock index da303e530..d75d9f678 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,41 +2,72 @@ # yarn lockfile v1 +"7zip-bin@~5.1.1": + version "5.1.1" + resolved "https://registry.yarnpkg.com/7zip-bin/-/7zip-bin-5.1.1.tgz#9274ec7460652f9c632c59addf24efb1684ef876" + integrity sha512-sAP4LldeWNz0lNzmTird3uWfFDWWTeg6V/MsmyyLR9X1idwKBWIgt/ZvinqQldJm3LecKEs1emkbquO6PCiLVQ== + "@aashutoshrathi/word-wrap@^1.2.3": - "integrity" "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==" - "resolved" "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz" - "version" "1.2.6" + version "1.2.6" + resolved "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz" + integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== -"@adobe/css-tools@^4.3.0": - "integrity" "sha512-/62yikz7NLScCGAAST5SHdnjaDJQBDq0M2muyRTpf2VQhw6StBg2ALiu73zSJQ4fMVLA+0uBhBHAle7Wg+2kSg==" - "resolved" "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.1.tgz" - "version" "4.3.1" +"@adobe/css-tools@^4.3.1": + version "4.3.1" + resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.3.1.tgz#abfccb8ca78075a2b6187345c26243c1a0842f28" + integrity sha512-/62yikz7NLScCGAAST5SHdnjaDJQBDq0M2muyRTpf2VQhw6StBg2ALiu73zSJQ4fMVLA+0uBhBHAle7Wg+2kSg== "@ampproject/remapping@^2.2.0": - "integrity" "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==" - "resolved" "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz" - "version" "2.2.1" + version "2.2.1" + resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz" + integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== dependencies: "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.22.13": - "integrity" "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==" - "resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz" - "version" "7.22.13" + version "7.22.13" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz" + integrity sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w== dependencies: "@babel/highlight" "^7.22.13" - "chalk" "^2.4.2" + chalk "^2.4.2" + +"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.23.2": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.2.tgz#6a12ced93455827037bfb5ed8492820d60fc32cc" + integrity sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ== -"@babel/compat-data@^7.22.20", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9": - "integrity" "sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==" - "resolved" "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.20.tgz" - "version" "7.22.20" +"@babel/compat-data@^7.22.9": + version "7.22.20" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.20.tgz" + integrity sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw== -"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.0.0-0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.11.6", "@babel/core@^7.12.0", "@babel/core@^7.12.3", "@babel/core@^7.13.0", "@babel/core@^7.21.3", "@babel/core@^7.4.0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.8.0", "@babel/core@>=7.0.0-beta.0 <8": - "integrity" "sha512-97z/ju/Jy1rZmDxybphrBuI+jtJjFVoz7Mr9yUQVVVi+DNZE333uFQeMOqcCIy1x3WYBIbWftUSLmbNXNT7qFQ==" - "resolved" "https://registry.npmjs.org/@babel/core/-/core-7.23.0.tgz" - "version" "7.23.0" +"@babel/core@^7.11.6", "@babel/core@^7.12.3": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.2.tgz#ed10df0d580fff67c5f3ee70fd22e2e4c90a9f94" + integrity sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.22.13" + "@babel/generator" "^7.23.0" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-module-transforms" "^7.23.0" + "@babel/helpers" "^7.23.2" + "@babel/parser" "^7.23.0" + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.2" + "@babel/types" "^7.23.0" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/core@^7.21.3": + version "7.23.0" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.23.0.tgz" + integrity sha512-97z/ju/Jy1rZmDxybphrBuI+jtJjFVoz7Mr9yUQVVVi+DNZE333uFQeMOqcCIy1x3WYBIbWftUSLmbNXNT7qFQ== dependencies: "@ampproject/remapping" "^2.2.0" "@babel/code-frame" "^7.22.13" @@ -48,51 +79,51 @@ "@babel/template" "^7.22.15" "@babel/traverse" "^7.23.0" "@babel/types" "^7.23.0" - "convert-source-map" "^2.0.0" - "debug" "^4.1.0" - "gensync" "^1.0.0-beta.2" - "json5" "^2.2.3" - "semver" "^6.3.1" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" "@babel/generator@^7.23.0", "@babel/generator@^7.7.2": - "integrity" "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==" - "resolved" "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz" - "version" "7.23.0" + version "7.23.0" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz" + integrity sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g== dependencies: "@babel/types" "^7.23.0" "@jridgewell/gen-mapping" "^0.3.2" "@jridgewell/trace-mapping" "^0.3.17" - "jsesc" "^2.5.1" + jsesc "^2.5.1" "@babel/helper-annotate-as-pure@^7.22.5": - "integrity" "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==" - "resolved" "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz" - "version" "7.22.5" + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" + integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== dependencies: "@babel/types" "^7.22.5" "@babel/helper-builder-binary-assignment-operator-visitor@^7.22.5": - "integrity" "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==" - "resolved" "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz" - "version" "7.22.15" + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz#5426b109cf3ad47b91120f8328d8ab1be8b0b956" + integrity sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw== dependencies: "@babel/types" "^7.22.15" "@babel/helper-compilation-targets@^7.22.15", "@babel/helper-compilation-targets@^7.22.5", "@babel/helper-compilation-targets@^7.22.6": - "integrity" "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==" - "resolved" "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz" - "version" "7.22.15" + version "7.22.15" + resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz" + integrity sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw== dependencies: "@babel/compat-data" "^7.22.9" "@babel/helper-validator-option" "^7.22.15" - "browserslist" "^4.21.9" - "lru-cache" "^5.1.1" - "semver" "^6.3.1" + browserslist "^4.21.9" + lru-cache "^5.1.1" + semver "^6.3.1" "@babel/helper-create-class-features-plugin@^7.22.11", "@babel/helper-create-class-features-plugin@^7.22.15", "@babel/helper-create-class-features-plugin@^7.22.5": - "integrity" "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==" - "resolved" "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz" - "version" "7.22.15" + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz#97a61b385e57fe458496fad19f8e63b63c867de4" + integrity sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" "@babel/helper-environment-visitor" "^7.22.5" @@ -102,66 +133,66 @@ "@babel/helper-replace-supers" "^7.22.9" "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" "@babel/helper-split-export-declaration" "^7.22.6" - "semver" "^6.3.1" + semver "^6.3.1" "@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.5": - "integrity" "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==" - "resolved" "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz" - "version" "7.22.15" + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1" + integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" - "regexpu-core" "^5.3.1" - "semver" "^6.3.1" + regexpu-core "^5.3.1" + semver "^6.3.1" "@babel/helper-define-polyfill-provider@^0.4.3": - "integrity" "sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==" - "resolved" "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz" - "version" "0.4.3" + version "0.4.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz#a71c10f7146d809f4a256c373f462d9bba8cf6ba" + integrity sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug== dependencies: "@babel/helper-compilation-targets" "^7.22.6" "@babel/helper-plugin-utils" "^7.22.5" - "debug" "^4.1.1" - "lodash.debounce" "^4.0.8" - "resolve" "^1.14.2" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" "@babel/helper-environment-visitor@^7.22.20", "@babel/helper-environment-visitor@^7.22.5": - "integrity" "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==" - "resolved" "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz" - "version" "7.22.20" + version "7.22.20" + resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz" + integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== "@babel/helper-function-name@^7.22.5", "@babel/helper-function-name@^7.23.0": - "integrity" "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==" - "resolved" "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz" - "version" "7.23.0" + version "7.23.0" + resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz" + integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== dependencies: "@babel/template" "^7.22.15" "@babel/types" "^7.23.0" "@babel/helper-hoist-variables@^7.22.5": - "integrity" "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==" - "resolved" "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz" - "version" "7.22.5" + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz" + integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== dependencies: "@babel/types" "^7.22.5" "@babel/helper-member-expression-to-functions@^7.22.15": - "integrity" "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==" - "resolved" "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz" - "version" "7.23.0" + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz#9263e88cc5e41d39ec18c9a3e0eced59a3e7d366" + integrity sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA== dependencies: "@babel/types" "^7.23.0" "@babel/helper-module-imports@^7.22.15", "@babel/helper-module-imports@^7.22.5": - "integrity" "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==" - "resolved" "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz" - "version" "7.22.15" + version "7.22.15" + resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz" + integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== dependencies: "@babel/types" "^7.22.15" "@babel/helper-module-transforms@^7.22.5", "@babel/helper-module-transforms@^7.23.0": - "integrity" "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==" - "resolved" "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz" - "version" "7.23.0" + version "7.23.0" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz" + integrity sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw== dependencies: "@babel/helper-environment-visitor" "^7.22.20" "@babel/helper-module-imports" "^7.22.15" @@ -170,333 +201,342 @@ "@babel/helper-validator-identifier" "^7.22.20" "@babel/helper-optimise-call-expression@^7.22.5": - "integrity" "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==" - "resolved" "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz" - "version" "7.22.5" + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e" + integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw== dependencies: "@babel/types" "^7.22.5" "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - "integrity" "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==" - "resolved" "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz" - "version" "7.22.5" + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" + integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== -"@babel/helper-remap-async-to-generator@^7.22.5", "@babel/helper-remap-async-to-generator@^7.22.9": - "integrity" "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==" - "resolved" "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz" - "version" "7.22.20" +"@babel/helper-remap-async-to-generator@^7.22.20", "@babel/helper-remap-async-to-generator@^7.22.5": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0" + integrity sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" "@babel/helper-environment-visitor" "^7.22.20" "@babel/helper-wrap-function" "^7.22.20" "@babel/helper-replace-supers@^7.22.5", "@babel/helper-replace-supers@^7.22.9": - "integrity" "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==" - "resolved" "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz" - "version" "7.22.20" + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz#e37d367123ca98fe455a9887734ed2e16eb7a793" + integrity sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw== dependencies: "@babel/helper-environment-visitor" "^7.22.20" "@babel/helper-member-expression-to-functions" "^7.22.15" "@babel/helper-optimise-call-expression" "^7.22.5" "@babel/helper-simple-access@^7.22.5": - "integrity" "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==" - "resolved" "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz" - "version" "7.22.5" + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz" + integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== dependencies: "@babel/types" "^7.22.5" "@babel/helper-skip-transparent-expression-wrappers@^7.22.5": - "integrity" "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==" - "resolved" "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz" - "version" "7.22.5" + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847" + integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q== dependencies: "@babel/types" "^7.22.5" "@babel/helper-split-export-declaration@^7.22.6": - "integrity" "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==" - "resolved" "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz" - "version" "7.22.6" + version "7.22.6" + resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz" + integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== dependencies: "@babel/types" "^7.22.5" "@babel/helper-string-parser@^7.22.5": - "integrity" "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==" - "resolved" "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz" - "version" "7.22.5" + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz" + integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== "@babel/helper-validator-identifier@^7.22.20": - "integrity" "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==" - "resolved" "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz" - "version" "7.22.20" + version "7.22.20" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== "@babel/helper-validator-option@^7.22.15": - "integrity" "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==" - "resolved" "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz" - "version" "7.22.15" + version "7.22.15" + resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz" + integrity sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA== "@babel/helper-wrap-function@^7.22.20": - "integrity" "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==" - "resolved" "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz" - "version" "7.22.20" + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz#15352b0b9bfb10fc9c76f79f6342c00e3411a569" + integrity sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw== dependencies: "@babel/helper-function-name" "^7.22.5" "@babel/template" "^7.22.15" "@babel/types" "^7.22.19" "@babel/helpers@^7.23.0": - "integrity" "sha512-chNpneuK18yW5Oxsr+t553UZzzAs3aZnFm4bxhebsNTeshrC95yA7l5yl7GBAG+JG1rF0F7zzD2EixK9mWSDoA==" - "resolved" "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.1.tgz" - "version" "7.23.1" + version "7.23.1" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.1.tgz" + integrity sha512-chNpneuK18yW5Oxsr+t553UZzzAs3aZnFm4bxhebsNTeshrC95yA7l5yl7GBAG+JG1rF0F7zzD2EixK9mWSDoA== dependencies: "@babel/template" "^7.22.15" "@babel/traverse" "^7.23.0" "@babel/types" "^7.23.0" +"@babel/helpers@^7.23.2": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.2.tgz#2832549a6e37d484286e15ba36a5330483cac767" + integrity sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ== + dependencies: + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.2" + "@babel/types" "^7.23.0" + "@babel/highlight@^7.22.13": - "integrity" "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==" - "resolved" "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz" - "version" "7.22.20" + version "7.22.20" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz" + integrity sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg== dependencies: "@babel/helper-validator-identifier" "^7.22.20" - "chalk" "^2.4.2" - "js-tokens" "^4.0.0" + chalk "^2.4.2" + js-tokens "^4.0.0" "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.22.15", "@babel/parser@^7.23.0": - "integrity" "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==" - "resolved" "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz" - "version" "7.23.0" + version "7.23.0" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz" + integrity sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.22.15": - "integrity" "sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz" - "version" "7.22.15" + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz#02dc8a03f613ed5fdc29fb2f728397c78146c962" + integrity sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.22.15": - "integrity" "sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz" - "version" "7.22.15" + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz#2aeb91d337d4e1a1e7ce85b76a37f5301781200f" + integrity sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" "@babel/plugin-transform-optional-chaining" "^7.22.15" "@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": - "integrity" "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz" - "version" "7.21.0-placeholder-for-preset-env.2" + version "7.21.0-placeholder-for-preset-env.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" + integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== "@babel/plugin-syntax-async-generators@^7.8.4": - "integrity" "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" - "version" "7.8.4" + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-bigint@^7.8.3": - "integrity" "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz" - "version" "7.8.3" + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": - "integrity" "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz" - "version" "7.12.13" + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== dependencies: "@babel/helper-plugin-utils" "^7.12.13" "@babel/plugin-syntax-class-static-block@^7.14.5": - "integrity" "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz" - "version" "7.14.5" + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-dynamic-import@^7.8.3": - "integrity" "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz" - "version" "7.8.3" + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-export-namespace-from@^7.8.3": - "integrity" "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz" - "version" "7.8.3" + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== dependencies: "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-import-assertions@^7.22.5": - "integrity" "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz" - "version" "7.22.5" + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz#07d252e2aa0bc6125567f742cd58619cb14dce98" + integrity sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-import-attributes@^7.22.5": - "integrity" "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz" - "version" "7.22.5" + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz#ab840248d834410b829f569f5262b9e517555ecb" + integrity sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-import-meta@^7.10.4", "@babel/plugin-syntax-import-meta@^7.8.3": - "integrity" "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz" - "version" "7.10.4" + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-json-strings@^7.8.3": - "integrity" "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz" - "version" "7.8.3" + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-jsx@^7.22.5", "@babel/plugin-syntax-jsx@^7.7.2": - "integrity" "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz" - "version" "7.22.5" + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz#a6b68e84fb76e759fc3b93e901876ffabbe1d918" + integrity sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": - "integrity" "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" - "version" "7.10.4" + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - "integrity" "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" - "version" "7.8.3" + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": - "integrity" "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz" - "version" "7.10.4" + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-object-rest-spread@^7.8.3": - "integrity" "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz" - "version" "7.8.3" + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-optional-catch-binding@^7.8.3": - "integrity" "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz" - "version" "7.8.3" + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-optional-chaining@^7.8.3": - "integrity" "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" - "version" "7.8.3" + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-private-property-in-object@^7.14.5": - "integrity" "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz" - "version" "7.14.5" + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": - "integrity" "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz" - "version" "7.14.5" + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-typescript@^7.22.5", "@babel/plugin-syntax-typescript@^7.7.2": - "integrity" "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz" - "version" "7.22.5" + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz#aac8d383b062c5072c647a31ef990c1d0af90272" + integrity sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-unicode-sets-regex@^7.18.6": - "integrity" "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" + integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-arrow-functions@^7.22.5": - "integrity" "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz" - "version" "7.22.5" + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz#e5ba566d0c58a5b2ba2a8b795450641950b71958" + integrity sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-async-generator-functions@^7.22.15": - "integrity" "sha512-jBm1Es25Y+tVoTi5rfd5t1KLmL8ogLKpXszboWOTTtGFGz2RKnQe2yn7HbZ+kb/B8N0FVSGQo874NSlOU1T4+w==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.15.tgz" - "version" "7.22.15" +"@babel/plugin-transform-async-generator-functions@^7.23.2": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.2.tgz#054afe290d64c6f576f371ccc321772c8ea87ebb" + integrity sha512-BBYVGxbDVHfoeXbOwcagAkOQAm9NxoTdMGfTqghu1GrvadSaw6iW3Je6IcL5PNOw8VwjxqBECXy50/iCQSY/lQ== dependencies: - "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-remap-async-to-generator" "^7.22.9" + "@babel/helper-remap-async-to-generator" "^7.22.20" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-transform-async-to-generator@^7.22.5": - "integrity" "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz" - "version" "7.22.5" + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz#c7a85f44e46f8952f6d27fe57c2ed3cc084c3775" + integrity sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ== dependencies: "@babel/helper-module-imports" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-remap-async-to-generator" "^7.22.5" "@babel/plugin-transform-block-scoped-functions@^7.22.5": - "integrity" "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz" - "version" "7.22.5" + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz#27978075bfaeb9fa586d3cb63a3d30c1de580024" + integrity sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-block-scoping@^7.22.15": - "integrity" "sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.0.tgz" - "version" "7.23.0" +"@babel/plugin-transform-block-scoping@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.0.tgz#8744d02c6c264d82e1a4bc5d2d501fd8aff6f022" + integrity sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-class-properties@^7.22.5": - "integrity" "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz" - "version" "7.22.5" + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz#97a56e31ad8c9dc06a0b3710ce7803d5a48cca77" + integrity sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ== dependencies: "@babel/helper-create-class-features-plugin" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-class-static-block@^7.22.11": - "integrity" "sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz" - "version" "7.22.11" + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz#dc8cc6e498f55692ac6b4b89e56d87cec766c974" + integrity sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g== dependencies: "@babel/helper-create-class-features-plugin" "^7.22.11" "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-class-static-block" "^7.14.5" "@babel/plugin-transform-classes@^7.22.15": - "integrity" "sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz" - "version" "7.22.15" + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz#aaf4753aee262a232bbc95451b4bdf9599c65a0b" + integrity sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" "@babel/helper-compilation-targets" "^7.22.15" @@ -506,129 +546,129 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-replace-supers" "^7.22.9" "@babel/helper-split-export-declaration" "^7.22.6" - "globals" "^11.1.0" + globals "^11.1.0" "@babel/plugin-transform-computed-properties@^7.22.5": - "integrity" "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz" - "version" "7.22.5" + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz#cd1e994bf9f316bd1c2dafcd02063ec261bb3869" + integrity sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/template" "^7.22.5" -"@babel/plugin-transform-destructuring@^7.22.15": - "integrity" "sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.0.tgz" - "version" "7.23.0" +"@babel/plugin-transform-destructuring@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.0.tgz#6447aa686be48b32eaf65a73e0e2c0bd010a266c" + integrity sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-dotall-regex@^7.22.5": - "integrity" "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz" - "version" "7.22.5" + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz#dbb4f0e45766eb544e193fb00e65a1dd3b2a4165" + integrity sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-duplicate-keys@^7.22.5": - "integrity" "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz" - "version" "7.22.5" + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz#b6e6428d9416f5f0bba19c70d1e6e7e0b88ab285" + integrity sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-dynamic-import@^7.22.11": - "integrity" "sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz" - "version" "7.22.11" + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz#2c7722d2a5c01839eaf31518c6ff96d408e447aa" + integrity sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-dynamic-import" "^7.8.3" "@babel/plugin-transform-exponentiation-operator@^7.22.5": - "integrity" "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz" - "version" "7.22.5" + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz#402432ad544a1f9a480da865fda26be653e48f6a" + integrity sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g== dependencies: "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-export-namespace-from@^7.22.11": - "integrity" "sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz" - "version" "7.22.11" + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz#b3c84c8f19880b6c7440108f8929caf6056db26c" + integrity sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" "@babel/plugin-transform-for-of@^7.22.15": - "integrity" "sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz" - "version" "7.22.15" + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz#f64b4ccc3a4f131a996388fae7680b472b306b29" + integrity sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-function-name@^7.22.5": - "integrity" "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz" - "version" "7.22.5" + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz#935189af68b01898e0d6d99658db6b164205c143" + integrity sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg== dependencies: "@babel/helper-compilation-targets" "^7.22.5" "@babel/helper-function-name" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-json-strings@^7.22.11": - "integrity" "sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz" - "version" "7.22.11" + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz#689a34e1eed1928a40954e37f74509f48af67835" + integrity sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-json-strings" "^7.8.3" "@babel/plugin-transform-literals@^7.22.5": - "integrity" "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz" - "version" "7.22.5" + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz#e9341f4b5a167952576e23db8d435849b1dd7920" + integrity sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-logical-assignment-operators@^7.22.11": - "integrity" "sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz" - "version" "7.22.11" + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz#24c522a61688bde045b7d9bc3c2597a4d948fc9c" + integrity sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" "@babel/plugin-transform-member-expression-literals@^7.22.5": - "integrity" "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz" - "version" "7.22.5" + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz#4fcc9050eded981a468347dd374539ed3e058def" + integrity sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-modules-amd@^7.22.5": - "integrity" "sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.0.tgz" - "version" "7.23.0" +"@babel/plugin-transform-modules-amd@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.0.tgz#05b2bc43373faa6d30ca89214731f76f966f3b88" + integrity sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw== dependencies: "@babel/helper-module-transforms" "^7.23.0" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-modules-commonjs@^7.22.15", "@babel/plugin-transform-modules-commonjs@^7.23.0": - "integrity" "sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz" - "version" "7.23.0" +"@babel/plugin-transform-modules-commonjs@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz#b3dba4757133b2762c00f4f94590cf6d52602481" + integrity sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ== dependencies: "@babel/helper-module-transforms" "^7.23.0" "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-simple-access" "^7.22.5" -"@babel/plugin-transform-modules-systemjs@^7.22.11": - "integrity" "sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.0.tgz" - "version" "7.23.0" +"@babel/plugin-transform-modules-systemjs@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.0.tgz#77591e126f3ff4132a40595a6cccd00a6b60d160" + integrity sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg== dependencies: "@babel/helper-hoist-variables" "^7.22.5" "@babel/helper-module-transforms" "^7.23.0" @@ -636,48 +676,48 @@ "@babel/helper-validator-identifier" "^7.22.20" "@babel/plugin-transform-modules-umd@^7.22.5": - "integrity" "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz" - "version" "7.22.5" + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz#4694ae40a87b1745e3775b6a7fe96400315d4f98" + integrity sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ== dependencies: "@babel/helper-module-transforms" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": - "integrity" "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz" - "version" "7.22.5" + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz#67fe18ee8ce02d57c855185e27e3dc959b2e991f" + integrity sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-new-target@^7.22.5": - "integrity" "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz" - "version" "7.22.5" + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz#1b248acea54ce44ea06dfd37247ba089fcf9758d" + integrity sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-nullish-coalescing-operator@^7.22.11": - "integrity" "sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz" - "version" "7.22.11" + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz#debef6c8ba795f5ac67cd861a81b744c5d38d9fc" + integrity sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" "@babel/plugin-transform-numeric-separator@^7.22.11": - "integrity" "sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz" - "version" "7.22.11" + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz#498d77dc45a6c6db74bb829c02a01c1d719cbfbd" + integrity sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-numeric-separator" "^7.10.4" "@babel/plugin-transform-object-rest-spread@^7.22.15": - "integrity" "sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz" - "version" "7.22.15" + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz#21a95db166be59b91cde48775310c0df6e1da56f" + integrity sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q== dependencies: "@babel/compat-data" "^7.22.9" "@babel/helper-compilation-targets" "^7.22.15" @@ -686,49 +726,49 @@ "@babel/plugin-transform-parameters" "^7.22.15" "@babel/plugin-transform-object-super@^7.22.5": - "integrity" "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz" - "version" "7.22.5" + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz#794a8d2fcb5d0835af722173c1a9d704f44e218c" + integrity sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-replace-supers" "^7.22.5" "@babel/plugin-transform-optional-catch-binding@^7.22.11": - "integrity" "sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz" - "version" "7.22.11" + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz#461cc4f578a127bb055527b3e77404cad38c08e0" + integrity sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-transform-optional-chaining@^7.22.15": - "integrity" "sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.0.tgz" - "version" "7.23.0" +"@babel/plugin-transform-optional-chaining@^7.22.15", "@babel/plugin-transform-optional-chaining@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.0.tgz#73ff5fc1cf98f542f09f29c0631647d8ad0be158" + integrity sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-transform-parameters@^7.22.15": - "integrity" "sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz" - "version" "7.22.15" + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz#719ca82a01d177af358df64a514d64c2e3edb114" + integrity sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-private-methods@^7.22.5": - "integrity" "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz" - "version" "7.22.5" + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz#21c8af791f76674420a147ae62e9935d790f8722" + integrity sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA== dependencies: "@babel/helper-create-class-features-plugin" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-private-property-in-object@^7.22.11": - "integrity" "sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz" - "version" "7.22.11" + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz#ad45c4fc440e9cb84c718ed0906d96cf40f9a4e1" + integrity sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" "@babel/helper-create-class-features-plugin" "^7.22.11" @@ -736,37 +776,37 @@ "@babel/plugin-syntax-private-property-in-object" "^7.14.5" "@babel/plugin-transform-property-literals@^7.22.5": - "integrity" "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz" - "version" "7.22.5" + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz#b5ddabd73a4f7f26cd0e20f5db48290b88732766" + integrity sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-react-constant-elements@^7.21.3": - "integrity" "sha512-BF5SXoO+nX3h5OhlN78XbbDrBOffv+AxPP2ENaJOVqjWCgBDeOY3WcaUcddutGSfoap+5NEQ/q/4I3WZIvgkXA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.22.5.tgz" - "version" "7.22.5" + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.22.5.tgz#6dfa7c1c37f7d7279e417ceddf5a04abb8bb9c29" + integrity sha512-BF5SXoO+nX3h5OhlN78XbbDrBOffv+AxPP2ENaJOVqjWCgBDeOY3WcaUcddutGSfoap+5NEQ/q/4I3WZIvgkXA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-react-display-name@^7.22.5": - "integrity" "sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.22.5.tgz" - "version" "7.22.5" + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.22.5.tgz#3c4326f9fce31c7968d6cb9debcaf32d9e279a2b" + integrity sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-react-jsx-development@^7.22.5": - "integrity" "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz" - "version" "7.22.5" + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz#e716b6edbef972a92165cd69d92f1255f7e73e87" + integrity sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A== dependencies: "@babel/plugin-transform-react-jsx" "^7.22.5" "@babel/plugin-transform-react-jsx@^7.22.15", "@babel/plugin-transform-react-jsx@^7.22.5": - "integrity" "sha512-oKckg2eZFa8771O/5vi7XeTvmM6+O9cxZu+kanTU7tD4sin5nO/G8jGJhq8Hvt2Z0kUoEDRayuZLaUlYl8QuGA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.15.tgz" - "version" "7.22.15" + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.15.tgz#7e6266d88705d7c49f11c98db8b9464531289cd6" + integrity sha512-oKckg2eZFa8771O/5vi7XeTvmM6+O9cxZu+kanTU7tD4sin5nO/G8jGJhq8Hvt2Z0kUoEDRayuZLaUlYl8QuGA== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" "@babel/helper-module-imports" "^7.22.15" @@ -775,68 +815,68 @@ "@babel/types" "^7.22.15" "@babel/plugin-transform-react-pure-annotations@^7.22.5": - "integrity" "sha512-gP4k85wx09q+brArVinTXhWiyzLl9UpmGva0+mWyKxk6JZequ05x3eUcIUE+FyttPKJFRRVtAvQaJ6YF9h1ZpA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.22.5.tgz" - "version" "7.22.5" + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.22.5.tgz#1f58363eef6626d6fa517b95ac66fe94685e32c0" + integrity sha512-gP4k85wx09q+brArVinTXhWiyzLl9UpmGva0+mWyKxk6JZequ05x3eUcIUE+FyttPKJFRRVtAvQaJ6YF9h1ZpA== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-regenerator@^7.22.10": - "integrity" "sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz" - "version" "7.22.10" + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz#8ceef3bd7375c4db7652878b0241b2be5d0c3cca" + integrity sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" - "regenerator-transform" "^0.15.2" + regenerator-transform "^0.15.2" "@babel/plugin-transform-reserved-words@^7.22.5": - "integrity" "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz" - "version" "7.22.5" + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz#832cd35b81c287c4bcd09ce03e22199641f964fb" + integrity sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-shorthand-properties@^7.22.5": - "integrity" "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz" - "version" "7.22.5" + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz#6e277654be82b5559fc4b9f58088507c24f0c624" + integrity sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-spread@^7.22.5": - "integrity" "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz" - "version" "7.22.5" + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz#6487fd29f229c95e284ba6c98d65eafb893fea6b" + integrity sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" "@babel/plugin-transform-sticky-regex@^7.22.5": - "integrity" "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz" - "version" "7.22.5" + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz#295aba1595bfc8197abd02eae5fc288c0deb26aa" + integrity sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-template-literals@^7.22.5": - "integrity" "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz" - "version" "7.22.5" + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz#8f38cf291e5f7a8e60e9f733193f0bcc10909bff" + integrity sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-typeof-symbol@^7.22.5": - "integrity" "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz" - "version" "7.22.5" + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz#5e2ba478da4b603af8673ff7c54f75a97b716b34" + integrity sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-typescript@^7.22.15": - "integrity" "sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.15.tgz" - "version" "7.22.15" + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.15.tgz#15adef906451d86349eb4b8764865c960eb54127" + integrity sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" "@babel/helper-create-class-features-plugin" "^7.22.15" @@ -844,42 +884,42 @@ "@babel/plugin-syntax-typescript" "^7.22.5" "@babel/plugin-transform-unicode-escapes@^7.22.10": - "integrity" "sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz" - "version" "7.22.10" + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz#c723f380f40a2b2f57a62df24c9005834c8616d9" + integrity sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-unicode-property-regex@^7.22.5": - "integrity" "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz" - "version" "7.22.5" + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz#098898f74d5c1e86660dc112057b2d11227f1c81" + integrity sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-unicode-regex@^7.22.5": - "integrity" "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz" - "version" "7.22.5" + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz#ce7e7bb3ef208c4ff67e02a22816656256d7a183" + integrity sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-unicode-sets-regex@^7.22.5": - "integrity" "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz" - "version" "7.22.5" + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz#77788060e511b708ffc7d42fdfbc5b37c3004e91" + integrity sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" "@babel/preset-env@^7.20.2": - "integrity" "sha512-11MY04gGC4kSzlPHRfvVkNAZhUxOvm7DCJ37hPDnUENwe06npjIRAfInEMTGSb4LZK5ZgDFkv5hw0lGebHeTyg==" - "resolved" "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.20.tgz" - "version" "7.22.20" + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.23.2.tgz#1f22be0ff0e121113260337dbc3e58fafce8d059" + integrity sha512-BW3gsuDD+rvHL2VO2SjAUNTBe5YrjsTiDyqamPDWY723na3/yPQ65X5oQkFVJZ0o50/2d+svm1rkPoJeR1KxVQ== dependencies: - "@babel/compat-data" "^7.22.20" + "@babel/compat-data" "^7.23.2" "@babel/helper-compilation-targets" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-validator-option" "^7.22.15" @@ -905,15 +945,15 @@ "@babel/plugin-syntax-top-level-await" "^7.14.5" "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" "@babel/plugin-transform-arrow-functions" "^7.22.5" - "@babel/plugin-transform-async-generator-functions" "^7.22.15" + "@babel/plugin-transform-async-generator-functions" "^7.23.2" "@babel/plugin-transform-async-to-generator" "^7.22.5" "@babel/plugin-transform-block-scoped-functions" "^7.22.5" - "@babel/plugin-transform-block-scoping" "^7.22.15" + "@babel/plugin-transform-block-scoping" "^7.23.0" "@babel/plugin-transform-class-properties" "^7.22.5" "@babel/plugin-transform-class-static-block" "^7.22.11" "@babel/plugin-transform-classes" "^7.22.15" "@babel/plugin-transform-computed-properties" "^7.22.5" - "@babel/plugin-transform-destructuring" "^7.22.15" + "@babel/plugin-transform-destructuring" "^7.23.0" "@babel/plugin-transform-dotall-regex" "^7.22.5" "@babel/plugin-transform-duplicate-keys" "^7.22.5" "@babel/plugin-transform-dynamic-import" "^7.22.11" @@ -925,9 +965,9 @@ "@babel/plugin-transform-literals" "^7.22.5" "@babel/plugin-transform-logical-assignment-operators" "^7.22.11" "@babel/plugin-transform-member-expression-literals" "^7.22.5" - "@babel/plugin-transform-modules-amd" "^7.22.5" - "@babel/plugin-transform-modules-commonjs" "^7.22.15" - "@babel/plugin-transform-modules-systemjs" "^7.22.11" + "@babel/plugin-transform-modules-amd" "^7.23.0" + "@babel/plugin-transform-modules-commonjs" "^7.23.0" + "@babel/plugin-transform-modules-systemjs" "^7.23.0" "@babel/plugin-transform-modules-umd" "^7.22.5" "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" "@babel/plugin-transform-new-target" "^7.22.5" @@ -936,7 +976,7 @@ "@babel/plugin-transform-object-rest-spread" "^7.22.15" "@babel/plugin-transform-object-super" "^7.22.5" "@babel/plugin-transform-optional-catch-binding" "^7.22.11" - "@babel/plugin-transform-optional-chaining" "^7.22.15" + "@babel/plugin-transform-optional-chaining" "^7.23.0" "@babel/plugin-transform-parameters" "^7.22.15" "@babel/plugin-transform-private-methods" "^7.22.5" "@babel/plugin-transform-private-property-in-object" "^7.22.11" @@ -953,26 +993,26 @@ "@babel/plugin-transform-unicode-regex" "^7.22.5" "@babel/plugin-transform-unicode-sets-regex" "^7.22.5" "@babel/preset-modules" "0.1.6-no-external-plugins" - "@babel/types" "^7.22.19" - "babel-plugin-polyfill-corejs2" "^0.4.5" - "babel-plugin-polyfill-corejs3" "^0.8.3" - "babel-plugin-polyfill-regenerator" "^0.5.2" - "core-js-compat" "^3.31.0" - "semver" "^6.3.1" + "@babel/types" "^7.23.0" + babel-plugin-polyfill-corejs2 "^0.4.6" + babel-plugin-polyfill-corejs3 "^0.8.5" + babel-plugin-polyfill-regenerator "^0.5.3" + core-js-compat "^3.31.0" + semver "^6.3.1" "@babel/preset-modules@0.1.6-no-external-plugins": - "integrity" "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==" - "resolved" "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz" - "version" "0.1.6-no-external-plugins" + version "0.1.6-no-external-plugins" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a" + integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/types" "^7.4.4" - "esutils" "^2.0.2" + esutils "^2.0.2" "@babel/preset-react@^7.18.6": - "integrity" "sha512-Csy1IJ2uEh/PecCBXXoZGAZBeCATTuePzCSB7dLYWS0vOEj6CNpjxIhW4duWwZodBNueH7QO14WbGn8YyeuN9w==" - "resolved" "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.22.15.tgz" - "version" "7.22.15" + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.22.15.tgz#9a776892b648e13cc8ca2edf5ed1264eea6b6afc" + integrity sha512-Csy1IJ2uEh/PecCBXXoZGAZBeCATTuePzCSB7dLYWS0vOEj6CNpjxIhW4duWwZodBNueH7QO14WbGn8YyeuN9w== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-validator-option" "^7.22.15" @@ -982,9 +1022,9 @@ "@babel/plugin-transform-react-pure-annotations" "^7.22.5" "@babel/preset-typescript@^7.21.0": - "integrity" "sha512-6P6VVa/NM/VlAYj5s2Aq/gdVg8FSENCg3wlZ6Qau9AcPaoF5LbN1nyGlR9DTRIw9PpxI94e+ReydsJHcjwAweg==" - "resolved" "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.23.0.tgz" - "version" "7.23.0" + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.23.2.tgz#c8de488130b7081f7e1482936ad3de5b018beef4" + integrity sha512-u4UJc1XsS1GhIGteM8rnGiIvf9rJpiVgMEeCnwlLA7WJPC+jcXWJAGxYmeqs5hOZD8BbAfnV5ezBOxQbb4OUxA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-validator-option" "^7.22.15" @@ -993,30 +1033,53 @@ "@babel/plugin-transform-typescript" "^7.22.15" "@babel/regjsgen@^0.8.0": - "integrity" "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" - "resolved" "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz" - "version" "0.8.0" + version "0.8.0" + resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" + integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== -"@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.18.6", "@babel/runtime@^7.20.13", "@babel/runtime@^7.20.7", "@babel/runtime@^7.21.0", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": - "integrity" "sha512-hC2v6p8ZSI/W0HUzh3V8C5g+NwSKzKPtJwSpTjwl0o297GP9+ZLQSkdvHz46CM3LqyoXxq+5G9komY+eSqSO0g==" - "resolved" "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.1.tgz" - "version" "7.23.1" +"@babel/runtime@^7.12.5", "@babel/runtime@^7.20.7", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.2.tgz#062b0ac103261d68a966c4c7baf2ae3e62ec3885" + integrity sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg== dependencies: - "regenerator-runtime" "^0.14.0" + regenerator-runtime "^0.14.0" + +"@babel/runtime@^7.15.4", "@babel/runtime@^7.18.6", "@babel/runtime@^7.20.13", "@babel/runtime@^7.21.0": + version "7.23.1" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.1.tgz" + integrity sha512-hC2v6p8ZSI/W0HUzh3V8C5g+NwSKzKPtJwSpTjwl0o297GP9+ZLQSkdvHz46CM3LqyoXxq+5G9komY+eSqSO0g== + dependencies: + regenerator-runtime "^0.14.0" "@babel/template@^7.22.15", "@babel/template@^7.22.5", "@babel/template@^7.3.3": - "integrity" "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==" - "resolved" "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz" - "version" "7.22.15" + version "7.22.15" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz" + integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== dependencies: "@babel/code-frame" "^7.22.13" "@babel/parser" "^7.22.15" "@babel/types" "^7.22.15" "@babel/traverse@^7.23.0": - "integrity" "sha512-t/QaEvyIoIkwzpiZ7aoSKK8kObQYeF7T2v+dazAYCb8SXtp58zEVkWW7zAnju8FNKNdr4ScAOEDmMItbyOmEYw==" - "resolved" "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.0.tgz" - "version" "7.23.0" + version "7.23.0" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.0.tgz" + integrity sha512-t/QaEvyIoIkwzpiZ7aoSKK8kObQYeF7T2v+dazAYCb8SXtp58zEVkWW7zAnju8FNKNdr4ScAOEDmMItbyOmEYw== + dependencies: + "@babel/code-frame" "^7.22.13" + "@babel/generator" "^7.23.0" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.23.0" + "@babel/types" "^7.23.0" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/traverse@^7.23.2": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.2.tgz#329c7a06735e144a506bdb2cad0268b7f46f4ad8" + integrity sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw== dependencies: "@babel/code-frame" "^7.22.13" "@babel/generator" "^7.23.0" @@ -1026,27 +1089,27 @@ "@babel/helper-split-export-declaration" "^7.22.6" "@babel/parser" "^7.23.0" "@babel/types" "^7.23.0" - "debug" "^4.1.0" - "globals" "^11.1.0" + debug "^4.1.0" + globals "^11.1.0" "@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.21.3", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - "integrity" "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==" - "resolved" "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz" - "version" "7.23.0" + version "7.23.0" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz" + integrity sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg== dependencies: "@babel/helper-string-parser" "^7.22.5" "@babel/helper-validator-identifier" "^7.22.20" - "to-fast-properties" "^2.0.0" + to-fast-properties "^2.0.0" "@bcoe/v8-coverage@^0.2.3": - "integrity" "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==" - "resolved" "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz" - "version" "0.2.3" + version "0.2.3" + resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== "@codemirror/autocomplete@^6.0.0": - "integrity" "sha512-suItGf7PhtfgQMCd8ofYzycdsAHDBB8BkNrmyxeLvptW7yNT6zGT6ZzwhAfmB94TUyAAStrHjaDGC4/foenF2A==" - "resolved" "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.9.2.tgz" - "version" "6.9.2" + version "6.9.2" + resolved "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.9.2.tgz" + integrity sha512-suItGf7PhtfgQMCd8ofYzycdsAHDBB8BkNrmyxeLvptW7yNT6zGT6ZzwhAfmB94TUyAAStrHjaDGC4/foenF2A== dependencies: "@codemirror/language" "^6.0.0" "@codemirror/state" "^6.0.0" @@ -1054,9 +1117,9 @@ "@lezer/common" "^1.0.0" "@codemirror/commands@^6.0.0", "@codemirror/commands@^6.1.0": - "integrity" "sha512-tFfcxRIlOWiQDFhjBSWJ10MxcvbCIsRr6V64SgrcaY0MwNk32cUOcCuNlWo8VjV4qRQCgNgUAnIeo0svkk4R5Q==" - "resolved" "https://registry.npmjs.org/@codemirror/commands/-/commands-6.3.0.tgz" - "version" "6.3.0" + version "6.3.0" + resolved "https://registry.npmjs.org/@codemirror/commands/-/commands-6.3.0.tgz" + integrity sha512-tFfcxRIlOWiQDFhjBSWJ10MxcvbCIsRr6V64SgrcaY0MwNk32cUOcCuNlWo8VjV4qRQCgNgUAnIeo0svkk4R5Q== dependencies: "@codemirror/language" "^6.0.0" "@codemirror/state" "^6.2.0" @@ -1064,279 +1127,279 @@ "@lezer/common" "^1.1.0" "@codemirror/language@^6.0.0": - "integrity" "sha512-lWRP3Y9IUdOms6DXuBpoWwjkR7yRmnS0hKYCbSfPz9v6Em1A1UCRujAkDiCrdYfs1Z0Eu4dGtwovNPStIfkgNA==" - "resolved" "https://registry.npmjs.org/@codemirror/language/-/language-6.9.1.tgz" - "version" "6.9.1" + version "6.9.1" + resolved "https://registry.npmjs.org/@codemirror/language/-/language-6.9.1.tgz" + integrity sha512-lWRP3Y9IUdOms6DXuBpoWwjkR7yRmnS0hKYCbSfPz9v6Em1A1UCRujAkDiCrdYfs1Z0Eu4dGtwovNPStIfkgNA== dependencies: "@codemirror/state" "^6.0.0" "@codemirror/view" "^6.0.0" "@lezer/common" "^1.1.0" "@lezer/highlight" "^1.0.0" "@lezer/lr" "^1.0.0" - "style-mod" "^4.0.0" + style-mod "^4.0.0" "@codemirror/legacy-modes@^6.1.0": - "integrity" "sha512-X0Z48odJ0KIoh/HY8Ltz75/4tDYc9msQf1E/2trlxFaFFhgjpVHjZ/BCXe1Lk7s4Gd67LL/CeEEHNI+xHOiESg==" - "resolved" "https://registry.npmjs.org/@codemirror/legacy-modes/-/legacy-modes-6.3.3.tgz" - "version" "6.3.3" + version "6.3.3" + resolved "https://registry.npmjs.org/@codemirror/legacy-modes/-/legacy-modes-6.3.3.tgz" + integrity sha512-X0Z48odJ0KIoh/HY8Ltz75/4tDYc9msQf1E/2trlxFaFFhgjpVHjZ/BCXe1Lk7s4Gd67LL/CeEEHNI+xHOiESg== dependencies: "@codemirror/language" "^6.0.0" "@codemirror/lint@^6.0.0": - "integrity" "sha512-wzRkluWb1ptPKdzlsrbwwjYCPLgzU6N88YBAmlZi8WFyuiEduSd05MnJYNogzyc8rPK7pj6m95ptUApc8sHKVA==" - "resolved" "https://registry.npmjs.org/@codemirror/lint/-/lint-6.4.2.tgz" - "version" "6.4.2" + version "6.4.2" + resolved "https://registry.npmjs.org/@codemirror/lint/-/lint-6.4.2.tgz" + integrity sha512-wzRkluWb1ptPKdzlsrbwwjYCPLgzU6N88YBAmlZi8WFyuiEduSd05MnJYNogzyc8rPK7pj6m95ptUApc8sHKVA== dependencies: "@codemirror/state" "^6.0.0" "@codemirror/view" "^6.0.0" - "crelt" "^1.0.5" + crelt "^1.0.5" "@codemirror/search@^6.0.0": - "integrity" "sha512-YoTrvjv9e8EbPs58opjZKyJ3ewFrVSUzQ/4WXlULQLSDDr1nGPJ67mMXFNNVYwdFhybzhrzrtqgHmtpJwIF+8g==" - "resolved" "https://registry.npmjs.org/@codemirror/search/-/search-6.5.4.tgz" - "version" "6.5.4" + version "6.5.4" + resolved "https://registry.npmjs.org/@codemirror/search/-/search-6.5.4.tgz" + integrity sha512-YoTrvjv9e8EbPs58opjZKyJ3ewFrVSUzQ/4WXlULQLSDDr1nGPJ67mMXFNNVYwdFhybzhrzrtqgHmtpJwIF+8g== dependencies: "@codemirror/state" "^6.0.0" "@codemirror/view" "^6.0.0" - "crelt" "^1.0.5" + crelt "^1.0.5" "@codemirror/state@^6.0.0", "@codemirror/state@^6.1.1", "@codemirror/state@^6.1.4", "@codemirror/state@^6.2.0": - "integrity" "sha512-RupHSZ8+OjNT38zU9fKH2sv+Dnlr8Eb8sl4NOnnqz95mCFTZUaiRP8Xv5MeeaG0px2b8Bnfe7YGwCV3nsBhbuw==" - "resolved" "https://registry.npmjs.org/@codemirror/state/-/state-6.2.1.tgz" - "version" "6.2.1" + version "6.2.1" + resolved "https://registry.npmjs.org/@codemirror/state/-/state-6.2.1.tgz" + integrity sha512-RupHSZ8+OjNT38zU9fKH2sv+Dnlr8Eb8sl4NOnnqz95mCFTZUaiRP8Xv5MeeaG0px2b8Bnfe7YGwCV3nsBhbuw== "@codemirror/theme-one-dark@^6.0.0": - "integrity" "sha512-F+sH0X16j/qFLMAfbciKTxVOwkdAS336b7AXTKOZhy8BR3eH/RelsnLgLFINrpST63mmN2OuwUt0W2ndUgYwUA==" - "resolved" "https://registry.npmjs.org/@codemirror/theme-one-dark/-/theme-one-dark-6.1.2.tgz" - "version" "6.1.2" + version "6.1.2" + resolved "https://registry.npmjs.org/@codemirror/theme-one-dark/-/theme-one-dark-6.1.2.tgz" + integrity sha512-F+sH0X16j/qFLMAfbciKTxVOwkdAS336b7AXTKOZhy8BR3eH/RelsnLgLFINrpST63mmN2OuwUt0W2ndUgYwUA== dependencies: "@codemirror/language" "^6.0.0" "@codemirror/state" "^6.0.0" "@codemirror/view" "^6.0.0" "@lezer/highlight" "^1.0.0" -"@codemirror/view@^6.0.0", "@codemirror/view@^6.17.0", "@codemirror/view@>=6.0.0": - "integrity" "sha512-8l1aSQ6MygzL4Nx7GVYhucSXvW4jQd0F6Zm3v9Dg+6nZEfwzJVqi4C2zHfDljID+73gsQrWp9TgHc81xU15O4A==" - "resolved" "https://registry.npmjs.org/@codemirror/view/-/view-6.21.3.tgz" - "version" "6.21.3" +"@codemirror/view@^6.0.0", "@codemirror/view@^6.17.0": + version "6.21.3" + resolved "https://registry.npmjs.org/@codemirror/view/-/view-6.21.3.tgz" + integrity sha512-8l1aSQ6MygzL4Nx7GVYhucSXvW4jQd0F6Zm3v9Dg+6nZEfwzJVqi4C2zHfDljID+73gsQrWp9TgHc81xU15O4A== dependencies: "@codemirror/state" "^6.1.4" - "style-mod" "^4.1.0" - "w3c-keyname" "^2.2.4" + style-mod "^4.1.0" + w3c-keyname "^2.2.4" "@cspotcode/source-map-support@^0.8.0": - "integrity" "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==" - "resolved" "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz" - "version" "0.8.1" + version "0.8.1" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== dependencies: "@jridgewell/trace-mapping" "0.3.9" "@develar/schema-utils@~2.6.5": - "integrity" "sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==" - "resolved" "https://registry.npmjs.org/@develar/schema-utils/-/schema-utils-2.6.5.tgz" - "version" "2.6.5" + version "2.6.5" + resolved "https://registry.yarnpkg.com/@develar/schema-utils/-/schema-utils-2.6.5.tgz#3ece22c5838402419a6e0425f85742b961d9b6c6" + integrity sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig== dependencies: - "ajv" "^6.12.0" - "ajv-keywords" "^3.4.1" + ajv "^6.12.0" + ajv-keywords "^3.4.1" -"@discoveryjs/json-ext@^0.5.0", "@discoveryjs/json-ext@0.5.7": - "integrity" "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==" - "resolved" "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz" - "version" "0.5.7" +"@discoveryjs/json-ext@0.5.7", "@discoveryjs/json-ext@^0.5.0": + version "0.5.7" + resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" + integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== "@electron/asar@^3.2.1": - "integrity" "sha512-8FaSCAIiZGYFWyjeevPQt+0e9xCK9YmJ2Rjg5SXgdsXon6cRnU0Yxnbe6CvJbQn26baifur2Y2G5EBayRIsjyg==" - "resolved" "https://registry.npmjs.org/@electron/asar/-/asar-3.2.7.tgz" - "version" "3.2.7" + version "3.2.7" + resolved "https://registry.yarnpkg.com/@electron/asar/-/asar-3.2.7.tgz#bb8117dc6fd0c06a922ae7fb1c0e2d433e35a6e5" + integrity sha512-8FaSCAIiZGYFWyjeevPQt+0e9xCK9YmJ2Rjg5SXgdsXon6cRnU0Yxnbe6CvJbQn26baifur2Y2G5EBayRIsjyg== dependencies: - "commander" "^5.0.0" - "glob" "^7.1.6" - "minimatch" "^3.0.4" + commander "^5.0.0" + glob "^7.1.6" + minimatch "^3.0.4" "@electron/get@^2.0.0": - "integrity" "sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==" - "resolved" "https://registry.npmjs.org/@electron/get/-/get-2.0.3.tgz" - "version" "2.0.3" - dependencies: - "debug" "^4.1.1" - "env-paths" "^2.2.0" - "fs-extra" "^8.1.0" - "got" "^11.8.5" - "progress" "^2.0.3" - "semver" "^6.2.0" - "sumchecker" "^3.0.1" + version "2.0.3" + resolved "https://registry.yarnpkg.com/@electron/get/-/get-2.0.3.tgz#fba552683d387aebd9f3fcadbcafc8e12ee4f960" + integrity sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ== + dependencies: + debug "^4.1.1" + env-paths "^2.2.0" + fs-extra "^8.1.0" + got "^11.8.5" + progress "^2.0.3" + semver "^6.2.0" + sumchecker "^3.0.1" optionalDependencies: - "global-agent" "^3.0.0" + global-agent "^3.0.0" -"@electron/notarize@^2.1.0", "@electron/notarize@2.1.0": - "integrity" "sha512-Q02xem1D0sg4v437xHgmBLxI2iz/fc0D4K7fiVWHa/AnW8o7D751xyKNXgziA6HrTOme9ul1JfWN5ark8WH1xA==" - "resolved" "https://registry.npmjs.org/@electron/notarize/-/notarize-2.1.0.tgz" - "version" "2.1.0" +"@electron/notarize@2.1.0", "@electron/notarize@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@electron/notarize/-/notarize-2.1.0.tgz#76aaec10c8687225e8d0a427cc9df67611c46ff3" + integrity sha512-Q02xem1D0sg4v437xHgmBLxI2iz/fc0D4K7fiVWHa/AnW8o7D751xyKNXgziA6HrTOme9ul1JfWN5ark8WH1xA== dependencies: - "debug" "^4.1.1" - "fs-extra" "^9.0.1" - "promise-retry" "^2.0.1" + debug "^4.1.1" + fs-extra "^9.0.1" + promise-retry "^2.0.1" "@electron/osx-sign@1.0.5": - "integrity" "sha512-k9ZzUQtamSoweGQDV2jILiRIHUu7lYlJ3c6IEmjv1hC17rclE+eb9U+f6UFlOOETo0JzY1HNlXy4YOlCvl+Lww==" - "resolved" "https://registry.npmjs.org/@electron/osx-sign/-/osx-sign-1.0.5.tgz" - "version" "1.0.5" + version "1.0.5" + resolved "https://registry.yarnpkg.com/@electron/osx-sign/-/osx-sign-1.0.5.tgz#0af7149f2fce44d1a8215660fd25a9fb610454d8" + integrity sha512-k9ZzUQtamSoweGQDV2jILiRIHUu7lYlJ3c6IEmjv1hC17rclE+eb9U+f6UFlOOETo0JzY1HNlXy4YOlCvl+Lww== dependencies: - "compare-version" "^0.1.2" - "debug" "^4.3.4" - "fs-extra" "^10.0.0" - "isbinaryfile" "^4.0.8" - "minimist" "^1.2.6" - "plist" "^3.0.5" + compare-version "^0.1.2" + debug "^4.3.4" + fs-extra "^10.0.0" + isbinaryfile "^4.0.8" + minimist "^1.2.6" + plist "^3.0.5" "@electron/rebuild@^3.3.0": - "integrity" "sha512-S1vgpzIOS1wCJmsYjdLz97MTUV6UTLcMk/HE3w90HYtVxvW+PQdwxLbgsrECX2bysqcnmM5a0K6mXj/gwVgYtQ==" - "resolved" "https://registry.npmjs.org/@electron/rebuild/-/rebuild-3.3.0.tgz" - "version" "3.3.0" + version "3.3.0" + resolved "https://registry.yarnpkg.com/@electron/rebuild/-/rebuild-3.3.0.tgz#6ba0ae1cb545b2e314901d2ac175ca9c03a2e3da" + integrity sha512-S1vgpzIOS1wCJmsYjdLz97MTUV6UTLcMk/HE3w90HYtVxvW+PQdwxLbgsrECX2bysqcnmM5a0K6mXj/gwVgYtQ== dependencies: "@malept/cross-spawn-promise" "^2.0.0" - "chalk" "^4.0.0" - "debug" "^4.1.1" - "detect-libc" "^2.0.1" - "fs-extra" "^10.0.0" - "got" "^11.7.0" - "node-abi" "^3.45.0" - "node-api-version" "^0.1.4" - "node-gyp" "^9.0.0" - "ora" "^5.1.0" - "semver" "^7.3.5" - "tar" "^6.0.5" - "yargs" "^17.0.1" + chalk "^4.0.0" + debug "^4.1.1" + detect-libc "^2.0.1" + fs-extra "^10.0.0" + got "^11.7.0" + node-abi "^3.45.0" + node-api-version "^0.1.4" + node-gyp "^9.0.0" + ora "^5.1.0" + semver "^7.3.5" + tar "^6.0.5" + yargs "^17.0.1" "@electron/universal@1.4.1": - "integrity" "sha512-lE/U3UNw1YHuowNbTmKNs9UlS3En3cPgwM5MI+agIgr/B1hSze9NdOP0qn7boZaI9Lph8IDv3/24g9IxnJP7aQ==" - "resolved" "https://registry.npmjs.org/@electron/universal/-/universal-1.4.1.tgz" - "version" "1.4.1" + version "1.4.1" + resolved "https://registry.yarnpkg.com/@electron/universal/-/universal-1.4.1.tgz#3fbda2a5ed9ff9f3304c8e8316b94c1e3a7b3785" + integrity sha512-lE/U3UNw1YHuowNbTmKNs9UlS3En3cPgwM5MI+agIgr/B1hSze9NdOP0qn7boZaI9Lph8IDv3/24g9IxnJP7aQ== dependencies: "@electron/asar" "^3.2.1" "@malept/cross-spawn-promise" "^1.1.0" - "debug" "^4.3.1" - "dir-compare" "^3.0.0" - "fs-extra" "^9.0.1" - "minimatch" "^3.0.4" - "plist" "^3.0.4" + debug "^4.3.1" + dir-compare "^3.0.0" + fs-extra "^9.0.1" + minimatch "^3.0.4" + plist "^3.0.4" "@es-joy/jsdoccomment@~0.37.0": - "integrity" "sha512-5vxWJ1gEkEF0yRd0O+uK6dHJf7adrxwQSX8PuRiPfFSAbNLnY0ZJfXaZucoz14Jj2N11xn2DnlEPwWRpYpvRjg==" - "resolved" "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.37.1.tgz" - "version" "0.37.1" + version "0.37.1" + resolved "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.37.1.tgz" + integrity sha512-5vxWJ1gEkEF0yRd0O+uK6dHJf7adrxwQSX8PuRiPfFSAbNLnY0ZJfXaZucoz14Jj2N11xn2DnlEPwWRpYpvRjg== dependencies: - "comment-parser" "1.3.1" - "esquery" "^1.5.0" - "jsdoc-type-pratt-parser" "~4.0.0" - -"@esbuild/darwin-arm64@0.18.20": - "integrity" "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==" - "resolved" "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz" - "version" "0.18.20" + comment-parser "1.3.1" + esquery "^1.5.0" + jsdoc-type-pratt-parser "~4.0.0" "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": - "integrity" "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==" - "resolved" "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz" - "version" "4.4.0" + version "4.4.0" + resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz" + integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== dependencies: - "eslint-visitor-keys" "^3.3.0" + eslint-visitor-keys "^3.3.0" -"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": - "integrity" "sha512-zJmuCWj2VLBt4c25CfBIbMZLGLyhkvs7LznyVX5HfpzeocThgIj5XQK4L+g3U36mMcx8bPMhGyPpwCATamC4jQ==" - "resolved" "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.0.tgz" - "version" "4.9.0" +"@eslint-community/regexpp@^4.5.1": + version "4.9.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.9.1.tgz#449dfa81a57a1d755b09aa58d826c1262e4283b4" + integrity sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA== + +"@eslint-community/regexpp@^4.6.1": + version "4.9.0" + resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.0.tgz" + integrity sha512-zJmuCWj2VLBt4c25CfBIbMZLGLyhkvs7LznyVX5HfpzeocThgIj5XQK4L+g3U36mMcx8bPMhGyPpwCATamC4jQ== "@eslint/eslintrc@^2.1.2": - "integrity" "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==" - "resolved" "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz" - "version" "2.1.2" - dependencies: - "ajv" "^6.12.4" - "debug" "^4.3.2" - "espree" "^9.6.0" - "globals" "^13.19.0" - "ignore" "^5.2.0" - "import-fresh" "^3.2.1" - "js-yaml" "^4.1.0" - "minimatch" "^3.1.2" - "strip-json-comments" "^3.1.1" + version "2.1.2" + resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz" + integrity sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.6.0" + globals "^13.19.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" "@eslint/js@8.51.0": - "integrity" "sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg==" - "resolved" "https://registry.npmjs.org/@eslint/js/-/js-8.51.0.tgz" - "version" "8.51.0" + version "8.51.0" + resolved "https://registry.npmjs.org/@eslint/js/-/js-8.51.0.tgz" + integrity sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg== -"@fingerprintjs/fingerprintjs@^3.3.6", "@fingerprintjs/fingerprintjs@^4.1.0": - "integrity" "sha512-a7RMbIgLEnchrL8TUbYNrsZuRAjN1iha32QXmwYheeLrFSpJW5IgDvuoBnT6R+5LJlZOKOpEU3nXIu3OeQsAlw==" - "resolved" "https://registry.npmjs.org/@fingerprintjs/fingerprintjs/-/fingerprintjs-4.1.0.tgz" - "version" "4.1.0" +"@fingerprintjs/fingerprintjs@^4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@fingerprintjs/fingerprintjs/-/fingerprintjs-4.1.0.tgz#82917f6c0afd59dbe05a4b386682b96cff4f7df0" + integrity sha512-a7RMbIgLEnchrL8TUbYNrsZuRAjN1iha32QXmwYheeLrFSpJW5IgDvuoBnT6R+5LJlZOKOpEU3nXIu3OeQsAlw== dependencies: - "tslib" "^2.4.1" + tslib "^2.4.1" "@humanwhocodes/config-array@^0.11.11": - "integrity" "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==" - "resolved" "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz" - "version" "0.11.11" + version "0.11.11" + resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz" + integrity sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA== dependencies: "@humanwhocodes/object-schema" "^1.2.1" - "debug" "^4.1.1" - "minimatch" "^3.0.5" + debug "^4.1.1" + minimatch "^3.0.5" "@humanwhocodes/module-importer@^1.0.1": - "integrity" "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==" - "resolved" "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" - "version" "1.0.1" + version "1.0.1" + resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== "@humanwhocodes/object-schema@^1.2.1": - "integrity" "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" - "resolved" "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz" - "version" "1.2.1" + version "1.2.1" + resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== "@isaacs/cliui@^8.0.2": - "integrity" "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==" - "resolved" "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz" - "version" "8.0.2" + version "8.0.2" + resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== 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" + 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" "@istanbuljs/load-nyc-config@^1.0.0": - "integrity" "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==" - "resolved" "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz" - "version" "1.1.0" + version "1.1.0" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== 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" + 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" "@istanbuljs/schema@^0.1.2": - "integrity" "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==" - "resolved" "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz" - "version" "0.1.3" + version "0.1.3" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== "@jest/console@^29.7.0": - "integrity" "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==" - "resolved" "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz" - "version" "29.7.0" + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.7.0.tgz#cd4822dbdb84529265c5a2bdb529a3c9cc950ffc" + integrity sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg== dependencies: "@jest/types" "^29.6.3" "@types/node" "*" - "chalk" "^4.0.0" - "jest-message-util" "^29.7.0" - "jest-util" "^29.7.0" - "slash" "^3.0.0" + chalk "^4.0.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + slash "^3.0.0" "@jest/core@^29.7.0": - "integrity" "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==" - "resolved" "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz" - "version" "29.7.0" + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.7.0.tgz#b6cccc239f30ff36609658c5a5e2291757ce448f" + integrity sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg== dependencies: "@jest/console" "^29.7.0" "@jest/reporters" "^29.7.0" @@ -1344,111 +1407,80 @@ "@jest/transform" "^29.7.0" "@jest/types" "^29.6.3" "@types/node" "*" - "ansi-escapes" "^4.2.1" - "chalk" "^4.0.0" - "ci-info" "^3.2.0" - "exit" "^0.1.2" - "graceful-fs" "^4.2.9" - "jest-changed-files" "^29.7.0" - "jest-config" "^29.7.0" - "jest-haste-map" "^29.7.0" - "jest-message-util" "^29.7.0" - "jest-regex-util" "^29.6.3" - "jest-resolve" "^29.7.0" - "jest-resolve-dependencies" "^29.7.0" - "jest-runner" "^29.7.0" - "jest-runtime" "^29.7.0" - "jest-snapshot" "^29.7.0" - "jest-util" "^29.7.0" - "jest-validate" "^29.7.0" - "jest-watcher" "^29.7.0" - "micromatch" "^4.0.4" - "pretty-format" "^29.7.0" - "slash" "^3.0.0" - "strip-ansi" "^6.0.0" - -"@jest/environment@^27.5.1": - "integrity" "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==" - "resolved" "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@jest/fake-timers" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - "jest-mock" "^27.5.1" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + ci-info "^3.2.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-changed-files "^29.7.0" + jest-config "^29.7.0" + jest-haste-map "^29.7.0" + jest-message-util "^29.7.0" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-resolve-dependencies "^29.7.0" + jest-runner "^29.7.0" + jest-runtime "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + jest-watcher "^29.7.0" + micromatch "^4.0.4" + pretty-format "^29.7.0" + slash "^3.0.0" + strip-ansi "^6.0.0" "@jest/environment@^29.7.0": - "integrity" "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==" - "resolved" "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz" - "version" "29.7.0" + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.7.0.tgz#24d61f54ff1f786f3cd4073b4b94416383baf2a7" + integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== dependencies: "@jest/fake-timers" "^29.7.0" "@jest/types" "^29.6.3" "@types/node" "*" - "jest-mock" "^29.7.0" + jest-mock "^29.7.0" "@jest/expect-utils@^29.7.0": - "integrity" "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==" - "resolved" "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz" - "version" "29.7.0" + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz" + integrity sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA== dependencies: - "jest-get-type" "^29.6.3" + jest-get-type "^29.6.3" "@jest/expect@^29.7.0": - "integrity" "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==" - "resolved" "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz" - "version" "29.7.0" + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.7.0.tgz#76a3edb0cb753b70dfbfe23283510d3d45432bf2" + integrity sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ== dependencies: - "expect" "^29.7.0" - "jest-snapshot" "^29.7.0" - -"@jest/fake-timers@^27.5.1": - "integrity" "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==" - "resolved" "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@jest/types" "^27.5.1" - "@sinonjs/fake-timers" "^8.0.1" - "@types/node" "*" - "jest-message-util" "^27.5.1" - "jest-mock" "^27.5.1" - "jest-util" "^27.5.1" + expect "^29.7.0" + jest-snapshot "^29.7.0" "@jest/fake-timers@^29.7.0": - "integrity" "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==" - "resolved" "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz" - "version" "29.7.0" + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.7.0.tgz#fd91bf1fffb16d7d0d24a426ab1a47a49881a565" + integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== dependencies: "@jest/types" "^29.6.3" "@sinonjs/fake-timers" "^10.0.2" "@types/node" "*" - "jest-message-util" "^29.7.0" - "jest-mock" "^29.7.0" - "jest-util" "^29.7.0" + jest-message-util "^29.7.0" + jest-mock "^29.7.0" + jest-util "^29.7.0" "@jest/globals@^29.7.0": - "integrity" "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==" - "resolved" "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz" - "version" "29.7.0" + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.7.0.tgz#8d9290f9ec47ff772607fa864ca1d5a2efae1d4d" + integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ== dependencies: "@jest/environment" "^29.7.0" "@jest/expect" "^29.7.0" "@jest/types" "^29.6.3" - "jest-mock" "^29.7.0" - -"@jest/globals@>= 28": - "integrity" "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==" - "resolved" "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@jest/environment" "^27.5.1" - "@jest/types" "^27.5.1" - "expect" "^27.5.1" + jest-mock "^29.7.0" "@jest/reporters@^29.7.0": - "integrity" "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==" - "resolved" "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz" - "version" "29.7.0" + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.7.0.tgz#04b262ecb3b8faa83b0b3d321623972393e8f4c7" + integrity sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg== dependencies: "@bcoe/v8-coverage" "^0.2.3" "@jest/console" "^29.7.0" @@ -1457,247 +1489,236 @@ "@jest/types" "^29.6.3" "@jridgewell/trace-mapping" "^0.3.18" "@types/node" "*" - "chalk" "^4.0.0" - "collect-v8-coverage" "^1.0.0" - "exit" "^0.1.2" - "glob" "^7.1.3" - "graceful-fs" "^4.2.9" - "istanbul-lib-coverage" "^3.0.0" - "istanbul-lib-instrument" "^6.0.0" - "istanbul-lib-report" "^3.0.0" - "istanbul-lib-source-maps" "^4.0.0" - "istanbul-reports" "^3.1.3" - "jest-message-util" "^29.7.0" - "jest-util" "^29.7.0" - "jest-worker" "^29.7.0" - "slash" "^3.0.0" - "string-length" "^4.0.1" - "strip-ansi" "^6.0.0" - "v8-to-istanbul" "^9.0.1" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^6.0.0" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.1.3" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + jest-worker "^29.7.0" + slash "^3.0.0" + string-length "^4.0.1" + strip-ansi "^6.0.0" + v8-to-istanbul "^9.0.1" "@jest/schemas@^29.6.3": - "integrity" "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==" - "resolved" "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz" - "version" "29.6.3" + version "29.6.3" + resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz" + integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== dependencies: "@sinclair/typebox" "^0.27.8" "@jest/source-map@^29.6.3": - "integrity" "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==" - "resolved" "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz" - "version" "29.6.3" + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.6.3.tgz#d90ba772095cf37a34a5eb9413f1b562a08554c4" + integrity sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw== dependencies: "@jridgewell/trace-mapping" "^0.3.18" - "callsites" "^3.0.0" - "graceful-fs" "^4.2.9" + callsites "^3.0.0" + graceful-fs "^4.2.9" "@jest/test-result@^29.7.0": - "integrity" "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==" - "resolved" "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz" - "version" "29.7.0" + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.7.0.tgz#8db9a80aa1a097bb2262572686734baed9b1657c" + integrity sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA== dependencies: "@jest/console" "^29.7.0" "@jest/types" "^29.6.3" "@types/istanbul-lib-coverage" "^2.0.0" - "collect-v8-coverage" "^1.0.0" + collect-v8-coverage "^1.0.0" "@jest/test-sequencer@^29.7.0": - "integrity" "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==" - "resolved" "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz" - "version" "29.7.0" + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz#6cef977ce1d39834a3aea887a1726628a6f072ce" + integrity sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw== dependencies: "@jest/test-result" "^29.7.0" - "graceful-fs" "^4.2.9" - "jest-haste-map" "^29.7.0" - "slash" "^3.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + slash "^3.0.0" "@jest/transform@^29.7.0": - "integrity" "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==" - "resolved" "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz" - "version" "29.7.0" + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.7.0.tgz#df2dd9c346c7d7768b8a06639994640c642e284c" + integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw== dependencies: "@babel/core" "^7.11.6" "@jest/types" "^29.6.3" "@jridgewell/trace-mapping" "^0.3.18" - "babel-plugin-istanbul" "^6.1.1" - "chalk" "^4.0.0" - "convert-source-map" "^2.0.0" - "fast-json-stable-stringify" "^2.1.0" - "graceful-fs" "^4.2.9" - "jest-haste-map" "^29.7.0" - "jest-regex-util" "^29.6.3" - "jest-util" "^29.7.0" - "micromatch" "^4.0.4" - "pirates" "^4.0.4" - "slash" "^3.0.0" - "write-file-atomic" "^4.0.2" - -"@jest/types@^27.5.1": - "integrity" "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==" - "resolved" "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^16.0.0" - "chalk" "^4.0.0" - -"@jest/types@^29.0.0", "@jest/types@^29.6.3": - "integrity" "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==" - "resolved" "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz" - "version" "29.6.3" + babel-plugin-istanbul "^6.1.1" + chalk "^4.0.0" + convert-source-map "^2.0.0" + fast-json-stable-stringify "^2.1.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + jest-regex-util "^29.6.3" + jest-util "^29.7.0" + micromatch "^4.0.4" + pirates "^4.0.4" + slash "^3.0.0" + write-file-atomic "^4.0.2" + +"@jest/types@^29.6.3": + version "29.6.3" + resolved "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz" + integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== dependencies: "@jest/schemas" "^29.6.3" "@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-reports" "^3.0.0" "@types/node" "*" "@types/yargs" "^17.0.8" - "chalk" "^4.0.0" + chalk "^4.0.0" "@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": - "integrity" "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==" - "resolved" "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz" - "version" "0.3.3" + version "0.3.3" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz" + integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== dependencies: "@jridgewell/set-array" "^1.0.1" "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" "@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0": - "integrity" "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==" - "resolved" "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz" - "version" "3.1.1" + version "3.1.1" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== "@jridgewell/set-array@^1.0.1": - "integrity" "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" - "resolved" "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" - "version" "1.1.2" + version "1.1.2" + resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== "@jridgewell/source-map@^0.3.3": - "integrity" "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==" - "resolved" "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz" - "version" "0.3.5" + version "0.3.5" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.5.tgz#a3bb4d5c6825aab0d281268f47f6ad5853431e91" + integrity sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ== dependencies: "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": - "integrity" "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" - "resolved" "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz" - "version" "1.4.15" - -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.9": - "integrity" "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==" - "resolved" "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz" - "version" "0.3.19" - dependencies: - "@jridgewell/resolve-uri" "^3.1.0" - "@jridgewell/sourcemap-codec" "^1.4.14" + version "1.4.15" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== "@jridgewell/trace-mapping@0.3.9": - "integrity" "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==" - "resolved" "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz" - "version" "0.3.9" + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== dependencies: "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.19" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz" + integrity sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + "@leichtgewicht/ip-codec@^2.0.1": - "integrity" "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==" - "resolved" "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz" - "version" "2.0.4" + version "2.0.4" + resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b" + integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== "@lezer/common@^1.0.0", "@lezer/common@^1.1.0": - "integrity" "sha512-XPIN3cYDXsoJI/oDWoR2tD++juVrhgIago9xyKhZ7IhGlzdDM9QgC8D8saKNCz5pindGcznFr2HBSsEQSWnSjw==" - "resolved" "https://registry.npmjs.org/@lezer/common/-/common-1.1.0.tgz" - "version" "1.1.0" + version "1.1.0" + resolved "https://registry.npmjs.org/@lezer/common/-/common-1.1.0.tgz" + integrity sha512-XPIN3cYDXsoJI/oDWoR2tD++juVrhgIago9xyKhZ7IhGlzdDM9QgC8D8saKNCz5pindGcznFr2HBSsEQSWnSjw== "@lezer/highlight@^1.0.0": - "integrity" "sha512-cmSJYa2us+r3SePpRCjN5ymCqCPv+zyXmDl0ciWtVaNiORT/MxM7ZgOMQZADD0o51qOaOg24qc/zBViOIwAjJg==" - "resolved" "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.1.6.tgz" - "version" "1.1.6" + version "1.1.6" + resolved "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.1.6.tgz" + integrity sha512-cmSJYa2us+r3SePpRCjN5ymCqCPv+zyXmDl0ciWtVaNiORT/MxM7ZgOMQZADD0o51qOaOg24qc/zBViOIwAjJg== dependencies: "@lezer/common" "^1.0.0" "@lezer/lr@^1.0.0": - "integrity" "sha512-RLAbau/4uSzKgIKj96mI5WUtG1qtiR0Frn0Ei9zhPj8YOkHM+1Bb8SgdVvmR/aWJCFIzjo2KFnDiRZ75Xf5NdQ==" - "resolved" "https://registry.npmjs.org/@lezer/lr/-/lr-1.3.13.tgz" - "version" "1.3.13" + version "1.3.13" + resolved "https://registry.npmjs.org/@lezer/lr/-/lr-1.3.13.tgz" + integrity sha512-RLAbau/4uSzKgIKj96mI5WUtG1qtiR0Frn0Ei9zhPj8YOkHM+1Bb8SgdVvmR/aWJCFIzjo2KFnDiRZ75Xf5NdQ== dependencies: "@lezer/common" "^1.0.0" "@malept/cross-spawn-promise@^1.1.0": - "integrity" "sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==" - "resolved" "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz" - "version" "1.1.1" + version "1.1.1" + resolved "https://registry.yarnpkg.com/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz#504af200af6b98e198bce768bc1730c6936ae01d" + integrity sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ== dependencies: - "cross-spawn" "^7.0.1" + cross-spawn "^7.0.1" "@malept/cross-spawn-promise@^2.0.0": - "integrity" "sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg==" - "resolved" "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-2.0.0.tgz" - "version" "2.0.0" + version "2.0.0" + resolved "https://registry.yarnpkg.com/@malept/cross-spawn-promise/-/cross-spawn-promise-2.0.0.tgz#d0772de1aa680a0bfb9ba2f32b4c828c7857cb9d" + integrity sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg== dependencies: - "cross-spawn" "^7.0.1" + cross-spawn "^7.0.1" "@malept/flatpak-bundler@^0.4.0": - "integrity" "sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q==" - "resolved" "https://registry.npmjs.org/@malept/flatpak-bundler/-/flatpak-bundler-0.4.0.tgz" - "version" "0.4.0" + version "0.4.0" + resolved "https://registry.yarnpkg.com/@malept/flatpak-bundler/-/flatpak-bundler-0.4.0.tgz#e8a32c30a95d20c2b1bb635cc580981a06389858" + integrity sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q== dependencies: - "debug" "^4.1.1" - "fs-extra" "^9.0.0" - "lodash" "^4.17.15" - "tmp-promise" "^3.0.2" + debug "^4.1.1" + fs-extra "^9.0.0" + lodash "^4.17.15" + tmp-promise "^3.0.2" "@mdn/browser-compat-data@^5.2.34", "@mdn/browser-compat-data@^5.3.13": - "integrity" "sha512-0MTNMfRvhzksN+XOtXikglAzXIiMQW1JzOZxOz0ymL7LFxX5orVdg8zrlLkgF/3s55Zb7xRadFs15LxpgtD36g==" - "resolved" "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-5.3.21.tgz" - "version" "5.3.21" + version "5.3.23" + resolved "https://registry.yarnpkg.com/@mdn/browser-compat-data/-/browser-compat-data-5.3.23.tgz#b662225a8b72482d940143a824b824677666bdae" + integrity sha512-UnUu2mvVam9CtEMR2+k7eEsbtrYAecmd3SWRrXGDJrAIddnE6Ln+SmihqNMwHRa64VfNkVFSV/mVphvlwky/Bw== "@nodelib/fs.scandir@2.1.5": - "integrity" "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==" - "resolved" "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" - "version" "2.1.5" + version "2.1.5" + resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== dependencies: "@nodelib/fs.stat" "2.0.5" - "run-parallel" "^1.1.9" + run-parallel "^1.1.9" -"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": - "integrity" "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" - "resolved" "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" - "version" "2.0.5" +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== "@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": - "integrity" "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==" - "resolved" "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" - "version" "1.2.8" + version "1.2.8" + resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== dependencies: "@nodelib/fs.scandir" "2.1.5" - "fastq" "^1.6.0" + fastq "^1.6.0" "@npmcli/fs@^3.1.0": - "integrity" "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==" - "resolved" "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz" - "version" "3.1.0" + version "3.1.0" + resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-3.1.0.tgz#233d43a25a91d68c3a863ba0da6a3f00924a173e" + integrity sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w== dependencies: - "semver" "^7.3.5" + semver "^7.3.5" "@onflow/config@^1.1.1", "@onflow/config@^1.1.2": - "integrity" "sha512-Jnorp86YkGFJLpCE4ufY8wva5vW8MJxkPzLRITW+aqUDVH9FQvYuTCLHsujy/Mrr9+WgrClf6MQrA2bUCE2zEg==" - "resolved" "https://registry.npmjs.org/@onflow/config/-/config-1.1.2.tgz" - "version" "1.1.2" + version "1.1.2" + resolved "https://registry.npmjs.org/@onflow/config/-/config-1.1.2.tgz" + integrity sha512-Jnorp86YkGFJLpCE4ufY8wva5vW8MJxkPzLRITW+aqUDVH9FQvYuTCLHsujy/Mrr9+WgrClf6MQrA2bUCE2zEg== dependencies: "@babel/runtime" "^7.18.6" "@onflow/util-actor" "^1.2.0" - "eslint" "^8.34.0" - "eslint-plugin-jsdoc" "^40.0.0" + eslint "^8.34.0" + eslint-plugin-jsdoc "^40.0.0" "@onflow/fcl@^1.6.0": - "integrity" "sha512-ksZFzf0JRtSYDNgCJKeuOt1R39DfBs62uym+GVPW9B5ahWjShoD2D9KYHVZiDbvMX19wUmB9vkgkiUvYfYEobw==" - "resolved" "https://registry.npmjs.org/@onflow/fcl/-/fcl-1.6.0.tgz" - "version" "1.6.0" + version "1.6.0" + resolved "https://registry.npmjs.org/@onflow/fcl/-/fcl-1.6.0.tgz" + integrity sha512-ksZFzf0JRtSYDNgCJKeuOt1R39DfBs62uym+GVPW9B5ahWjShoD2D9KYHVZiDbvMX19wUmB9vkgkiUvYfYEobw== dependencies: "@babel/runtime" "^7.18.6" "@onflow/config" "^1.1.2" @@ -1711,25 +1732,25 @@ "@onflow/util-logger" "^1.2.2" "@onflow/util-template" "^1.1.0" "@onflow/util-uid" "^1.1.0" - "cross-fetch" "^3.1.6" + cross-fetch "^3.1.6" "@onflow/interaction@0.0.11": - "integrity" "sha512-Xuq1Mmx6Wyba/F/L+QLQs0yJeQDsIDwy5SKk5vrCuVgIj0yD8k506g5L8ODrbM1LWll8i0tQsoOi0F85vNl5sA==" - "resolved" "https://registry.npmjs.org/@onflow/interaction/-/interaction-0.0.11.tgz" - "version" "0.0.11" + version "0.0.11" + resolved "https://registry.npmjs.org/@onflow/interaction/-/interaction-0.0.11.tgz" + integrity sha512-Xuq1Mmx6Wyba/F/L+QLQs0yJeQDsIDwy5SKk5vrCuVgIj0yD8k506g5L8ODrbM1LWll8i0tQsoOi0F85vNl5sA== "@onflow/rlp@^1.1.0": - "integrity" "sha512-JJj4dZpKaWmCOXnado+D3RU5xYAXui9kHOmCVfdLReYHIsYBgxwHCDO/hDiQjrbmfLpiybbJKTaIldu+xkCU3Q==" - "resolved" "https://registry.npmjs.org/@onflow/rlp/-/rlp-1.1.0.tgz" - "version" "1.1.0" + version "1.1.0" + resolved "https://registry.npmjs.org/@onflow/rlp/-/rlp-1.1.0.tgz" + integrity sha512-JJj4dZpKaWmCOXnado+D3RU5xYAXui9kHOmCVfdLReYHIsYBgxwHCDO/hDiQjrbmfLpiybbJKTaIldu+xkCU3Q== dependencies: "@babel/runtime" "^7.18.6" - "buffer" "^6.0.3" + buffer "^6.0.3" "@onflow/sdk@^1.2.2": - "integrity" "sha512-OGwp98C7iP7KUGFoBxgnEr52hnr7vxBTCu/TI/w1giF8USPgjgQXNxJdHVauY54Yu/ruoT6XfdSMAS4PACCB/w==" - "resolved" "https://registry.npmjs.org/@onflow/sdk/-/sdk-1.2.2.tgz" - "version" "1.2.2" + version "1.2.2" + resolved "https://registry.npmjs.org/@onflow/sdk/-/sdk-1.2.2.tgz" + integrity sha512-OGwp98C7iP7KUGFoBxgnEr52hnr7vxBTCu/TI/w1giF8USPgjgQXNxJdHVauY54Yu/ruoT6XfdSMAS4PACCB/w== dependencies: "@babel/runtime" "^7.18.6" "@onflow/config" "^1.1.1" @@ -1740,357 +1761,277 @@ "@onflow/util-invariant" "^1.1.0" "@onflow/util-logger" "^1.2.1" "@onflow/util-template" "^1.1.0" - "deepmerge" "^4.2.2" - "sha3" "^2.1.4" + deepmerge "^4.2.2" + sha3 "^2.1.4" "@onflow/transport-http@^1.7.1": - "integrity" "sha512-enSKRDf2OMIH61ltyZe5pxLB8KifdRdVpWwE0MU2S0Vq5DmNN3FfwUZVh1nrK2aJZkLdryJrNJtvv7ot2NPrYA==" - "resolved" "https://registry.npmjs.org/@onflow/transport-http/-/transport-http-1.7.1.tgz" - "version" "1.7.1" + version "1.7.1" + resolved "https://registry.npmjs.org/@onflow/transport-http/-/transport-http-1.7.1.tgz" + integrity sha512-enSKRDf2OMIH61ltyZe5pxLB8KifdRdVpWwE0MU2S0Vq5DmNN3FfwUZVh1nrK2aJZkLdryJrNJtvv7ot2NPrYA== dependencies: "@babel/runtime" "^7.18.6" "@onflow/util-address" "^1.1.0" "@onflow/util-invariant" "^1.1.0" "@onflow/util-logger" "^1.2.1" "@onflow/util-template" "^1.1.0" - "abort-controller" "^3.0.0" - "cross-fetch" "^3.1.6" + abort-controller "^3.0.0" + cross-fetch "^3.1.6" -"@onflow/types@^1.0.3", "@onflow/types@^1.1.0": - "integrity" "sha512-UUd2ZAFqdd8BHW//uTg+YRlh3EIH9Na+UYJ9qXpt6y87qjW0Lf4Zkhn6H5IqvhIJsjK17QYnXLFpoXItD/+ToQ==" - "resolved" "https://registry.npmjs.org/@onflow/types/-/types-1.1.0.tgz" - "version" "1.1.0" +"@onflow/types@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@onflow/types/-/types-1.1.0.tgz" + integrity sha512-UUd2ZAFqdd8BHW//uTg+YRlh3EIH9Na+UYJ9qXpt6y87qjW0Lf4Zkhn6H5IqvhIJsjK17QYnXLFpoXItD/+ToQ== dependencies: "@babel/runtime" "^7.18.6" "@onflow/util-actor@^1.2.0": - "integrity" "sha512-voyHXE3qYNC+P75vzv55pGDDwpxxWKWH0aToR/3g9Bq8nKGcGoszxaMJkVy+fKX1akfdT0yKr/GxXRkjCS9SBg==" - "resolved" "https://registry.npmjs.org/@onflow/util-actor/-/util-actor-1.2.0.tgz" - "version" "1.2.0" + version "1.2.0" + resolved "https://registry.npmjs.org/@onflow/util-actor/-/util-actor-1.2.0.tgz" + integrity sha512-voyHXE3qYNC+P75vzv55pGDDwpxxWKWH0aToR/3g9Bq8nKGcGoszxaMJkVy+fKX1akfdT0yKr/GxXRkjCS9SBg== dependencies: "@babel/runtime" "^7.18.6" - "queue-microtask" "1.2.3" + queue-microtask "1.2.3" "@onflow/util-address@^1.1.0": - "integrity" "sha512-HhJOIfNaYAoeYuTNUe85jt4fqnJhFmSbYqyufiJBrplwd3eKmNsan0NYvVYO4U1ecu3KyuY4D9R/NtjGpHjMlA==" - "resolved" "https://registry.npmjs.org/@onflow/util-address/-/util-address-1.1.0.tgz" - "version" "1.1.0" + version "1.1.0" + resolved "https://registry.npmjs.org/@onflow/util-address/-/util-address-1.1.0.tgz" + integrity sha512-HhJOIfNaYAoeYuTNUe85jt4fqnJhFmSbYqyufiJBrplwd3eKmNsan0NYvVYO4U1ecu3KyuY4D9R/NtjGpHjMlA== dependencies: "@babel/runtime" "^7.18.6" "@onflow/util-invariant@^1.1.0": - "integrity" "sha512-5uxweKl5tqeqB1QLzs3dWWLtpNo7H4PgcmgnRIcC2oItAkELcnVCybDdlfYjKB4n/dlg3rIym8cJQE2tBeOpZQ==" - "resolved" "https://registry.npmjs.org/@onflow/util-invariant/-/util-invariant-1.1.0.tgz" - "version" "1.1.0" + version "1.1.0" + resolved "https://registry.npmjs.org/@onflow/util-invariant/-/util-invariant-1.1.0.tgz" + integrity sha512-5uxweKl5tqeqB1QLzs3dWWLtpNo7H4PgcmgnRIcC2oItAkELcnVCybDdlfYjKB4n/dlg3rIym8cJQE2tBeOpZQ== dependencies: "@babel/runtime" "^7.18.6" "@onflow/util-logger@^1.2.1", "@onflow/util-logger@^1.2.2": - "integrity" "sha512-qgOZFfp4NvGuIwZ6zMPiskt/xBNo6wG+L4k/nt3v4/eVzNZeUR5OZ7XlcA0fjtr2a3W9CNt83bmFSq/11ZGgCw==" - "resolved" "https://registry.npmjs.org/@onflow/util-logger/-/util-logger-1.2.2.tgz" - "version" "1.2.2" + version "1.2.2" + resolved "https://registry.npmjs.org/@onflow/util-logger/-/util-logger-1.2.2.tgz" + integrity sha512-qgOZFfp4NvGuIwZ6zMPiskt/xBNo6wG+L4k/nt3v4/eVzNZeUR5OZ7XlcA0fjtr2a3W9CNt83bmFSq/11ZGgCw== dependencies: "@babel/runtime" "^7.18.6" "@onflow/util-template@^1.1.0": - "integrity" "sha512-gGqJJH5OTPPRmHk6YxMw4t5Ecy7iHnj00ZlCE7lnlOnpGUNdHrNNfoeE//hO8TBGNNVpOkEQERWiLDph+/oIxg==" - "resolved" "https://registry.npmjs.org/@onflow/util-template/-/util-template-1.1.0.tgz" - "version" "1.1.0" + version "1.1.0" + resolved "https://registry.npmjs.org/@onflow/util-template/-/util-template-1.1.0.tgz" + integrity sha512-gGqJJH5OTPPRmHk6YxMw4t5Ecy7iHnj00ZlCE7lnlOnpGUNdHrNNfoeE//hO8TBGNNVpOkEQERWiLDph+/oIxg== dependencies: "@babel/runtime" "^7.18.6" "@onflow/util-uid@^1.1.0": - "integrity" "sha512-HmWfKCOXoz1/TIu7fRx6iR7Nfhq6q5Tmn4YWc868SIfFeWv/inpvVJyrKX0nORf87csSnRSqdDzrJGBowgcXVA==" - "resolved" "https://registry.npmjs.org/@onflow/util-uid/-/util-uid-1.1.0.tgz" - "version" "1.1.0" + version "1.1.0" + resolved "https://registry.npmjs.org/@onflow/util-uid/-/util-uid-1.1.0.tgz" + integrity sha512-HmWfKCOXoz1/TIu7fRx6iR7Nfhq6q5Tmn4YWc868SIfFeWv/inpvVJyrKX0nORf87csSnRSqdDzrJGBowgcXVA== dependencies: "@babel/runtime" "^7.18.6" -"@onflowser/api@*", "@onflowser/api@file:/Users/bartkozorog/Projects/flowser/packages/api": - "resolved" "file:packages/api" - "version" "1.0.0" - dependencies: - "@onflowser/config" "*" - -"@onflowser/config@*", "@onflowser/config@file:/Users/bartkozorog/Projects/flowser/packages/config": - "resolved" "file:packages/config" - "version" "0.0.0" - -"@onflowser/core@*", "@onflowser/core@file:/Users/bartkozorog/Projects/flowser/packages/core": - "resolved" "file:packages/core" - "version" "1.0.0" - dependencies: - "@onflow/fcl" "^1.6.0" - "@onflowser/api" "*" - "@onflowser/config" "*" - "axios" "^0.21.4" - "node-abort-controller" "^3.0.1" - -"@onflowser/demo-app@file:/Users/bartkozorog/Projects/flowser/apps/demo-app": - "resolved" "file:apps/demo-app" - "version" "1.0.0" - dependencies: - "@onflowser/api" "*" - "@onflowser/config" "*" - "@onflowser/core" "*" - "@onflowser/nodejs" "*" - -"@onflowser/nodejs@*", "@onflowser/nodejs@file:/Users/bartkozorog/Projects/flowser/packages/nodejs": - "resolved" "file:packages/nodejs" - "version" "1.0.0" - dependencies: - "@onflow/fcl" "^1.6.0" - "@onflowser/config" "*" - "elliptic" "^6.5.4" - -"@onflowser/ui@*", "@onflowser/ui@file:/Users/bartkozorog/Projects/flowser/packages/ui": - "resolved" "file:packages/ui" - "version" "0.0.0" - dependencies: - "@codemirror/legacy-modes" "^6.1.0" - "@onflowser/api" "*" - "@szhsin/react-menu" "4.0.3" - "@tanstack/react-table" "^8.5.11" - "@uidotdev/usehooks" "^2.3.1" - "@uiw/codemirror-extensions-basic-setup" "^4.12.4" - "@uiw/codemirror-theme-github" "^4.12.4" - "@uiw/react-codemirror" "^4.12.4" - "ansi-to-html" "^0.7.2" - "classnames" "^2.3.2" - "copy-to-clipboard" "^3.3.3" - "date-fns" "^2.30.0" - "dateformat" "^5.0.3" - "formik" "^2.2.9" - "mixpanel-browser" "^2.47.0" - "react-helmet" "^6.1.0" - "react-hot-toast" "^2.4.1" - "react-icons" "^4.11.0" - "react-json-view" "^1.21.3" - "react-router-dom" "6.15.0" - "react-timeago" "^7.2.0" - "reactjs-popup" "2.0.5" - "swr" "^2.2.4" - "yup" "^0.32.11" - "@pkgjs/parseargs@^0.11.0": - "integrity" "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==" - "resolved" "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz" - "version" "0.11.0" + version "0.11.0" + resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== "@pkgr/utils@^2.3.1": - "integrity" "sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==" - "resolved" "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.2.tgz" - "version" "2.4.2" + version "2.4.2" + resolved "https://registry.yarnpkg.com/@pkgr/utils/-/utils-2.4.2.tgz#9e638bbe9a6a6f165580dc943f138fd3309a2cbc" + integrity sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw== dependencies: - "cross-spawn" "^7.0.3" - "fast-glob" "^3.3.0" - "is-glob" "^4.0.3" - "open" "^9.1.0" - "picocolors" "^1.0.0" - "tslib" "^2.6.0" + cross-spawn "^7.0.3" + fast-glob "^3.3.0" + is-glob "^4.0.3" + open "^9.1.0" + picocolors "^1.0.0" + tslib "^2.6.0" "@pmmmwh/react-refresh-webpack-plugin@^0.5.11": - "integrity" "sha512-7j/6vdTym0+qZ6u4XbSAxrWBGYSdCfTzySkj7WAFgDLmSyWlOrWvpyzxlFh5jtw9dn0oL/jtW+06XfFiisN3JQ==" - "resolved" "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.11.tgz" - "version" "0.5.11" - dependencies: - "ansi-html-community" "^0.0.8" - "common-path-prefix" "^3.0.0" - "core-js-pure" "^3.23.3" - "error-stack-parser" "^2.0.6" - "find-up" "^5.0.0" - "html-entities" "^2.1.0" - "loader-utils" "^2.0.4" - "schema-utils" "^3.0.0" - "source-map" "^0.7.3" + version "0.5.11" + resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.11.tgz#7c2268cedaa0644d677e8c4f377bc8fb304f714a" + integrity sha512-7j/6vdTym0+qZ6u4XbSAxrWBGYSdCfTzySkj7WAFgDLmSyWlOrWvpyzxlFh5jtw9dn0oL/jtW+06XfFiisN3JQ== + dependencies: + ansi-html-community "^0.0.8" + common-path-prefix "^3.0.0" + core-js-pure "^3.23.3" + error-stack-parser "^2.0.6" + find-up "^5.0.0" + html-entities "^2.1.0" + loader-utils "^2.0.4" + schema-utils "^3.0.0" + source-map "^0.7.3" "@polka/url@^1.0.0-next.20": - "integrity" "sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg==" - "resolved" "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.23.tgz" - "version" "1.0.0-next.23" + version "1.0.0-next.23" + resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.23.tgz#498e41218ab3b6a1419c735e5c6ae2c5ed609b6c" + integrity sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg== "@remix-run/router@1.8.0": - "integrity" "sha512-mrfKqIHnSZRyIzBcanNJmVQELTnX+qagEDlcKO90RgRBVOZGSGvZKeDihTRfWcqoDn5N/NkUcwWTccnpN18Tfg==" - "resolved" "https://registry.npmjs.org/@remix-run/router/-/router-1.8.0.tgz" - "version" "1.8.0" + version "1.8.0" + resolved "https://registry.npmjs.org/@remix-run/router/-/router-1.8.0.tgz" + integrity sha512-mrfKqIHnSZRyIzBcanNJmVQELTnX+qagEDlcKO90RgRBVOZGSGvZKeDihTRfWcqoDn5N/NkUcwWTccnpN18Tfg== "@remix-run/router@1.9.0": - "integrity" "sha512-bV63itrKBC0zdT27qYm6SDZHlkXwFL1xMBuhkn+X7l0+IIhNaH5wuuvZKp6eKhCD4KFhujhfhCT1YxXW6esUIA==" - "resolved" "https://registry.npmjs.org/@remix-run/router/-/router-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.9.0.tgz#9033238b41c4cbe1e961eccb3f79e2c588328cf6" + integrity sha512-bV63itrKBC0zdT27qYm6SDZHlkXwFL1xMBuhkn+X7l0+IIhNaH5wuuvZKp6eKhCD4KFhujhfhCT1YxXW6esUIA== "@rollup/pluginutils@^5.0.4": - "integrity" "sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==" - "resolved" "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.5.tgz" - "version" "5.0.5" + version "5.0.5" + resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.5.tgz" + integrity sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q== dependencies: "@types/estree" "^1.0.0" - "estree-walker" "^2.0.2" - "picomatch" "^2.3.1" + estree-walker "^2.0.2" + picomatch "^2.3.1" "@sentry-internal/tracing@7.73.0": - "integrity" "sha512-ig3WL/Nqp8nRQ52P205NaypGKNfIl/G+cIqge9xPW6zfRb5kJdM1YParw9GSJ1SPjEZBkBORGAML0on5H2FILw==" - "resolved" "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.73.0.tgz" - "version" "7.73.0" + version "7.73.0" + resolved "https://registry.yarnpkg.com/@sentry-internal/tracing/-/tracing-7.73.0.tgz#4838f31e41d23a6041ef4520519b80f788bf1cac" + integrity sha512-ig3WL/Nqp8nRQ52P205NaypGKNfIl/G+cIqge9xPW6zfRb5kJdM1YParw9GSJ1SPjEZBkBORGAML0on5H2FILw== dependencies: "@sentry/core" "7.73.0" "@sentry/types" "7.73.0" "@sentry/utils" "7.73.0" - "tslib" "^2.4.1 || ^1.9.3" + tslib "^2.4.1 || ^1.9.3" "@sentry/browser@7.73.0": - "integrity" "sha512-e301hUixcJ5+HNKCJwajFF5smF4opXEFSclyWsJuFNufv5J/1C1SDhbwG2JjBt5zzdSoKWJKT1ewR6vpICyoDw==" - "resolved" "https://registry.npmjs.org/@sentry/browser/-/browser-7.73.0.tgz" - "version" "7.73.0" + version "7.73.0" + resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.73.0.tgz#a8eaeb50cf16ca32f0039a81719c503d7045495f" + integrity sha512-e301hUixcJ5+HNKCJwajFF5smF4opXEFSclyWsJuFNufv5J/1C1SDhbwG2JjBt5zzdSoKWJKT1ewR6vpICyoDw== dependencies: "@sentry-internal/tracing" "7.73.0" "@sentry/core" "7.73.0" "@sentry/replay" "7.73.0" "@sentry/types" "7.73.0" "@sentry/utils" "7.73.0" - "tslib" "^2.4.1 || ^1.9.3" + tslib "^2.4.1 || ^1.9.3" "@sentry/core@7.73.0": - "integrity" "sha512-9FEz4Gq848LOgVN2OxJGYuQqxv7cIVw69VlAzWHEm3njt8mjvlTq+7UiFsGRo84+59V2FQuHxzA7vVjl90WfSg==" - "resolved" "https://registry.npmjs.org/@sentry/core/-/core-7.73.0.tgz" - "version" "7.73.0" + version "7.73.0" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.73.0.tgz#1caeeec44f42c4d58c06cc05dec39e5497b65aa3" + integrity sha512-9FEz4Gq848LOgVN2OxJGYuQqxv7cIVw69VlAzWHEm3njt8mjvlTq+7UiFsGRo84+59V2FQuHxzA7vVjl90WfSg== dependencies: "@sentry/types" "7.73.0" "@sentry/utils" "7.73.0" - "tslib" "^2.4.1 || ^1.9.3" + tslib "^2.4.1 || ^1.9.3" -"@sentry/electron@^4.0.2", "@sentry/electron@^4.13.0": - "integrity" "sha512-rVBMGX8WHc/DOeqlWZnl/EFxBFJgI1Y6nJi7u1HWRcAadTFKB1fmbVLbhVreIsQVP0Mc2HjP3Vyy6UXZ9+Mq5A==" - "resolved" "https://registry.npmjs.org/@sentry/electron/-/electron-4.13.0.tgz" - "version" "4.13.0" +"@sentry/electron@^4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@sentry/electron/-/electron-4.13.0.tgz#f19ec7cd05871e343a8ebfc4961c3b6490d1f906" + integrity sha512-rVBMGX8WHc/DOeqlWZnl/EFxBFJgI1Y6nJi7u1HWRcAadTFKB1fmbVLbhVreIsQVP0Mc2HjP3Vyy6UXZ9+Mq5A== dependencies: "@sentry/browser" "7.73.0" "@sentry/core" "7.73.0" "@sentry/node" "7.73.0" "@sentry/types" "7.73.0" "@sentry/utils" "7.73.0" - "deepmerge" "4.3.0" - "lru_map" "^0.3.3" - "tslib" "^2.5.0" + deepmerge "4.3.0" + lru_map "^0.3.3" + tslib "^2.5.0" "@sentry/node@7.73.0": - "integrity" "sha512-i50bRfmgkRRx0XXUbg9jGD/RuznDJxJXc4rBILhoJuhl+BjRIaoXA3ayplfJn8JLZxsNh75uJaCq4IUK70SORw==" - "resolved" "https://registry.npmjs.org/@sentry/node/-/node-7.73.0.tgz" - "version" "7.73.0" + version "7.73.0" + resolved "https://registry.yarnpkg.com/@sentry/node/-/node-7.73.0.tgz#7eecf06689cd8f9d21587ca5cbfdc74543cc8c09" + integrity sha512-i50bRfmgkRRx0XXUbg9jGD/RuznDJxJXc4rBILhoJuhl+BjRIaoXA3ayplfJn8JLZxsNh75uJaCq4IUK70SORw== dependencies: "@sentry-internal/tracing" "7.73.0" "@sentry/core" "7.73.0" "@sentry/types" "7.73.0" "@sentry/utils" "7.73.0" - "cookie" "^0.5.0" - "https-proxy-agent" "^5.0.0" - "lru_map" "^0.3.3" - "tslib" "^2.4.1 || ^1.9.3" + cookie "^0.5.0" + https-proxy-agent "^5.0.0" + lru_map "^0.3.3" + tslib "^2.4.1 || ^1.9.3" "@sentry/replay@7.73.0": - "integrity" "sha512-a8IC9SowBisLYD2IdLkXzx7gN4iVwHDJhQvLp2B8ARs1PyPjJ7gCxSMHeGrYp94V0gOXtorNYkrxvuX8ayPROA==" - "resolved" "https://registry.npmjs.org/@sentry/replay/-/replay-7.73.0.tgz" - "version" "7.73.0" + version "7.73.0" + resolved "https://registry.yarnpkg.com/@sentry/replay/-/replay-7.73.0.tgz#4e6c522bac5c12f596ef76afe15ecb3807407669" + integrity sha512-a8IC9SowBisLYD2IdLkXzx7gN4iVwHDJhQvLp2B8ARs1PyPjJ7gCxSMHeGrYp94V0gOXtorNYkrxvuX8ayPROA== dependencies: "@sentry/core" "7.73.0" "@sentry/types" "7.73.0" "@sentry/utils" "7.73.0" "@sentry/types@7.73.0": - "integrity" "sha512-/v8++bly8jW7r4cP2wswYiiVpn7eLLcqwnfPUMeCQze4zj3F3nTRIKc9BGHzU0V+fhHa3RwRC2ksqTGq1oJMDg==" - "resolved" "https://registry.npmjs.org/@sentry/types/-/types-7.73.0.tgz" - "version" "7.73.0" + version "7.73.0" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.73.0.tgz#6d811bbe413d319df0a592a672d6d72a94a8e716" + integrity sha512-/v8++bly8jW7r4cP2wswYiiVpn7eLLcqwnfPUMeCQze4zj3F3nTRIKc9BGHzU0V+fhHa3RwRC2ksqTGq1oJMDg== "@sentry/utils@7.73.0": - "integrity" "sha512-h3ZK/qpf4k76FhJV9uiSbvMz3V/0Ovy94C+5/9UgPMVCJXFmVsdw8n/dwANJ7LupVPfYP23xFGgebDMFlK1/2w==" - "resolved" "https://registry.npmjs.org/@sentry/utils/-/utils-7.73.0.tgz" - "version" "7.73.0" + version "7.73.0" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.73.0.tgz#530cf023f7c395aa7708cd3824e5a45948449c10" + integrity sha512-h3ZK/qpf4k76FhJV9uiSbvMz3V/0Ovy94C+5/9UgPMVCJXFmVsdw8n/dwANJ7LupVPfYP23xFGgebDMFlK1/2w== dependencies: "@sentry/types" "7.73.0" - "tslib" "^2.4.1 || ^1.9.3" + tslib "^2.4.1 || ^1.9.3" "@sinclair/typebox@^0.27.8": - "integrity" "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==" - "resolved" "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz" - "version" "0.27.8" + version "0.27.8" + resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz" + integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== "@sindresorhus/is@^4.0.0": - "integrity" "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==" - "resolved" "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz" - "version" "4.6.0" - -"@sinonjs/commons@^1.7.0": - "integrity" "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==" - "resolved" "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz" - "version" "1.8.6" - dependencies: - "type-detect" "4.0.8" + version "4.6.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" + integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== "@sinonjs/commons@^3.0.0": - "integrity" "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==" - "resolved" "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz" - "version" "3.0.0" + version "3.0.0" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.0.tgz#beb434fe875d965265e04722ccfc21df7f755d72" + integrity sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA== dependencies: - "type-detect" "4.0.8" + type-detect "4.0.8" "@sinonjs/fake-timers@^10.0.2": - "integrity" "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==" - "resolved" "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz" - "version" "10.3.0" + version "10.3.0" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz#55fdff1ecab9f354019129daf4df0dd4d923ea66" + integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== dependencies: "@sinonjs/commons" "^3.0.0" -"@sinonjs/fake-timers@^8.0.1": - "integrity" "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==" - "resolved" "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz" - "version" "8.1.0" - dependencies: - "@sinonjs/commons" "^1.7.0" - "@svgr/babel-plugin-add-jsx-attribute@8.0.0": - "integrity" "sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==" - "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz" - "version" "8.0.0" + version "8.0.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz" + integrity sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g== "@svgr/babel-plugin-remove-jsx-attribute@8.0.0": - "integrity" "sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==" - "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz" - "version" "8.0.0" + version "8.0.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz" + integrity sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA== "@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0": - "integrity" "sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==" - "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz" - "version" "8.0.0" + version "8.0.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz" + integrity sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA== "@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0": - "integrity" "sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==" - "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz" - "version" "8.0.0" + version "8.0.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz" + integrity sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ== "@svgr/babel-plugin-svg-dynamic-title@8.0.0": - "integrity" "sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==" - "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz" - "version" "8.0.0" + version "8.0.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz" + integrity sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og== "@svgr/babel-plugin-svg-em-dimensions@8.0.0": - "integrity" "sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==" - "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz" - "version" "8.0.0" + version "8.0.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz" + integrity sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g== "@svgr/babel-plugin-transform-react-native-svg@8.1.0": - "integrity" "sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==" - "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz" - "version" "8.1.0" + version "8.1.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz" + integrity sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q== "@svgr/babel-plugin-transform-svg-component@8.0.0": - "integrity" "sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==" - "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz" - "version" "8.0.0" + version "8.0.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz" + integrity sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw== "@svgr/babel-preset@8.1.0": - "integrity" "sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==" - "resolved" "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-8.1.0.tgz" - "version" "8.1.0" + version "8.1.0" + resolved "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-8.1.0.tgz" + integrity sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug== dependencies: "@svgr/babel-plugin-add-jsx-attribute" "8.0.0" "@svgr/babel-plugin-remove-jsx-attribute" "8.0.0" @@ -2101,48 +2042,48 @@ "@svgr/babel-plugin-transform-react-native-svg" "8.1.0" "@svgr/babel-plugin-transform-svg-component" "8.0.0" -"@svgr/core@*", "@svgr/core@^8.1.0", "@svgr/core@8.1.0": - "integrity" "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==" - "resolved" "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz" - "version" "8.1.0" +"@svgr/core@8.1.0", "@svgr/core@^8.1.0": + version "8.1.0" + resolved "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz" + integrity sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA== dependencies: "@babel/core" "^7.21.3" "@svgr/babel-preset" "8.1.0" - "camelcase" "^6.2.0" - "cosmiconfig" "^8.1.3" - "snake-case" "^3.0.4" + camelcase "^6.2.0" + cosmiconfig "^8.1.3" + snake-case "^3.0.4" "@svgr/hast-util-to-babel-ast@8.0.0": - "integrity" "sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==" - "resolved" "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz" - "version" "8.0.0" + version "8.0.0" + resolved "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz" + integrity sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q== dependencies: "@babel/types" "^7.21.3" - "entities" "^4.4.0" + entities "^4.4.0" -"@svgr/plugin-jsx@^8.1.0", "@svgr/plugin-jsx@8.1.0": - "integrity" "sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==" - "resolved" "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz" - "version" "8.1.0" +"@svgr/plugin-jsx@8.1.0", "@svgr/plugin-jsx@^8.1.0": + version "8.1.0" + resolved "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz" + integrity sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA== dependencies: "@babel/core" "^7.21.3" "@svgr/babel-preset" "8.1.0" "@svgr/hast-util-to-babel-ast" "8.0.0" - "svg-parser" "^2.0.4" + svg-parser "^2.0.4" "@svgr/plugin-svgo@8.1.0": - "integrity" "sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==" - "resolved" "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz" - "version" "8.1.0" + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz#b115b7b967b564f89ac58feae89b88c3decd0f00" + integrity sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA== dependencies: - "cosmiconfig" "^8.1.3" - "deepmerge" "^4.3.1" - "svgo" "^3.0.2" + cosmiconfig "^8.1.3" + deepmerge "^4.3.1" + svgo "^3.0.2" "@svgr/webpack@^8.1.0": - "integrity" "sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA==" - "resolved" "https://registry.npmjs.org/@svgr/webpack/-/webpack-8.1.0.tgz" - "version" "8.1.0" + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-8.1.0.tgz#16f1b5346f102f89fda6ec7338b96a701d8be0c2" + integrity sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA== dependencies: "@babel/core" "^7.21.3" "@babel/plugin-transform-react-constant-elements" "^7.21.3" @@ -2154,119 +2095,119 @@ "@svgr/plugin-svgo" "8.1.0" "@szhsin/react-menu@4.0.3": - "integrity" "sha512-TPsOKLEkesE79802evnLt2Mbv/+zwRJdX8776/vxK5ST9SK8SO0A8kRrus6JuxijLxZxFpmY/3VMdoyeCWQHKA==" - "resolved" "https://registry.npmjs.org/@szhsin/react-menu/-/react-menu-4.0.3.tgz" - "version" "4.0.3" + version "4.0.3" + resolved "https://registry.npmjs.org/@szhsin/react-menu/-/react-menu-4.0.3.tgz" + integrity sha512-TPsOKLEkesE79802evnLt2Mbv/+zwRJdX8776/vxK5ST9SK8SO0A8kRrus6JuxijLxZxFpmY/3VMdoyeCWQHKA== dependencies: - "prop-types" "^15.7.2" - "react-transition-state" "^2.1.0" + prop-types "^15.7.2" + react-transition-state "^2.1.0" "@szmarczak/http-timer@^4.0.5": - "integrity" "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==" - "resolved" "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz" - "version" "4.0.6" + version "4.0.6" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" + integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w== dependencies: - "defer-to-connect" "^2.0.0" + defer-to-connect "^2.0.0" "@tanstack/react-table@^8.5.11": - "integrity" "sha512-D0VEfkIYnIKdy6SHiBNEaMc4SxO+MV7ojaPhRu8jP933/gbMi367+Wul2LxkdovJ5cq6awm0L1+jgxdS/unzIg==" - "resolved" "https://registry.npmjs.org/@tanstack/react-table/-/react-table-8.10.6.tgz" - "version" "8.10.6" + version "8.10.6" + resolved "https://registry.npmjs.org/@tanstack/react-table/-/react-table-8.10.6.tgz" + integrity sha512-D0VEfkIYnIKdy6SHiBNEaMc4SxO+MV7ojaPhRu8jP933/gbMi367+Wul2LxkdovJ5cq6awm0L1+jgxdS/unzIg== dependencies: "@tanstack/table-core" "8.10.6" "@tanstack/table-core@8.10.6": - "integrity" "sha512-9t8brthhAmCBIjzk7fCDa/kPKoLQTtA31l9Ir76jYxciTlHU61r/6gYm69XF9cbg9n88gVL5y7rNpeJ2dc1AFA==" - "resolved" "https://registry.npmjs.org/@tanstack/table-core/-/table-core-8.10.6.tgz" - "version" "8.10.6" + version "8.10.6" + resolved "https://registry.npmjs.org/@tanstack/table-core/-/table-core-8.10.6.tgz" + integrity sha512-9t8brthhAmCBIjzk7fCDa/kPKoLQTtA31l9Ir76jYxciTlHU61r/6gYm69XF9cbg9n88gVL5y7rNpeJ2dc1AFA== "@teamsupercell/typings-for-css-modules-loader@^2.5.2": - "integrity" "sha512-3sqH2B4itcm5XgV1IHENt4NOaW7bOC1CwJr63vrdKWWyKVxNxtBM+ABVhJZYFCCVAwNy7ulA64z6HyQqw96m4A==" - "resolved" "https://registry.npmjs.org/@teamsupercell/typings-for-css-modules-loader/-/typings-for-css-modules-loader-2.5.2.tgz" - "version" "2.5.2" + version "2.5.2" + resolved "https://registry.yarnpkg.com/@teamsupercell/typings-for-css-modules-loader/-/typings-for-css-modules-loader-2.5.2.tgz#b29deee5ebf6dac48693a2039a3b68b5ad821c1d" + integrity sha512-3sqH2B4itcm5XgV1IHENt4NOaW7bOC1CwJr63vrdKWWyKVxNxtBM+ABVhJZYFCCVAwNy7ulA64z6HyQqw96m4A== dependencies: - "camelcase" "^5.3.1" - "loader-utils" "^1.4.2" - "schema-utils" "^2.0.1" + camelcase "^5.3.1" + loader-utils "^1.4.2" + schema-utils "^2.0.1" optionalDependencies: - "prettier" "*" + prettier "*" "@testing-library/dom@^9.0.0": - "integrity" "sha512-fB0R+fa3AUqbLHWyxXa2kGVtf1Fe1ZZFr0Zp6AIbIAzXb2mKbEXl+PCQNUOaq5lbTab5tfctfXRNsWXxa2f7Aw==" - "resolved" "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.3.tgz" - "version" "9.3.3" + version "9.3.3" + resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-9.3.3.tgz#108c23a5b0ef51121c26ae92eb3179416b0434f5" + integrity sha512-fB0R+fa3AUqbLHWyxXa2kGVtf1Fe1ZZFr0Zp6AIbIAzXb2mKbEXl+PCQNUOaq5lbTab5tfctfXRNsWXxa2f7Aw== dependencies: "@babel/code-frame" "^7.10.4" "@babel/runtime" "^7.12.5" "@types/aria-query" "^5.0.1" - "aria-query" "5.1.3" - "chalk" "^4.1.0" - "dom-accessibility-api" "^0.5.9" - "lz-string" "^1.5.0" - "pretty-format" "^27.0.2" - -"@testing-library/jest-dom@^5.14.1", "@testing-library/jest-dom@^6.1.3": - "integrity" "sha512-YzpjRHoCBWPzpPNtg6gnhasqtE/5O4qz8WCwDEaxtfnPO6gkaLrnuXusrGSPyhIGPezr1HM7ZH0CFaUTY9PJEQ==" - "resolved" "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.1.3.tgz" - "version" "6.1.3" - dependencies: - "@adobe/css-tools" "^4.3.0" + aria-query "5.1.3" + chalk "^4.1.0" + dom-accessibility-api "^0.5.9" + lz-string "^1.5.0" + pretty-format "^27.0.2" + +"@testing-library/jest-dom@^6.1.3": + version "6.1.4" + resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-6.1.4.tgz#cf0835c33bc5ef00befb9e672b1e3e6a710e30e3" + integrity sha512-wpoYrCYwSZ5/AxcrjLxJmCU6I5QAJXslEeSiMQqaWmP2Kzpd1LvF/qxmAIW2qposULGWq2gw30GgVNFLSc2Jnw== + dependencies: + "@adobe/css-tools" "^4.3.1" "@babel/runtime" "^7.9.2" - "aria-query" "^5.0.0" - "chalk" "^3.0.0" - "css.escape" "^1.5.1" - "dom-accessibility-api" "^0.5.6" - "lodash" "^4.17.15" - "redent" "^3.0.0" + aria-query "^5.0.0" + chalk "^3.0.0" + css.escape "^1.5.1" + dom-accessibility-api "^0.5.6" + lodash "^4.17.15" + redent "^3.0.0" "@testing-library/react@^14.0.0": - "integrity" "sha512-S04gSNJbYE30TlIMLTzv6QCTzt9AqIF5y6s6SzVFILNcNvbV/jU96GeiTPillGQo+Ny64M/5PV7klNYYgv5Dfg==" - "resolved" "https://registry.npmjs.org/@testing-library/react/-/react-14.0.0.tgz" - "version" "14.0.0" + version "14.0.0" + resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-14.0.0.tgz#59030392a6792450b9ab8e67aea5f3cc18d6347c" + integrity sha512-S04gSNJbYE30TlIMLTzv6QCTzt9AqIF5y6s6SzVFILNcNvbV/jU96GeiTPillGQo+Ny64M/5PV7klNYYgv5Dfg== dependencies: "@babel/runtime" "^7.12.5" "@testing-library/dom" "^9.0.0" "@types/react-dom" "^18.0.0" "@tootallnate/once@2": - "integrity" "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==" - "resolved" "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz" - "version" "2.0.0" + version "2.0.0" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" + integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== "@trysound/sax@0.2.0": - "integrity" "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==" - "resolved" "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz" - "version" "0.2.0" + version "0.2.0" + resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" + integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== "@tsconfig/node10@^1.0.7": - "integrity" "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==" - "resolved" "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz" - "version" "1.0.9" + version "1.0.9" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" + integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== "@tsconfig/node12@^1.0.7": - "integrity" "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==" - "resolved" "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz" - "version" "1.0.11" + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== "@tsconfig/node14@^1.0.0": - "integrity" "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==" - "resolved" "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz" - "version" "1.0.3" + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== "@tsconfig/node16@^1.0.2": - "integrity" "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==" - "resolved" "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz" - "version" "1.0.4" + version "1.0.4" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" + integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== "@types/aria-query@^5.0.1": - "integrity" "sha512-PHKZuMN+K5qgKIWhBodXzQslTo5P+K/6LqeKXS6O/4liIDdZqaX5RXrCK++LAw+y/nptN48YmUMFiQHRSWYwtQ==" - "resolved" "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.2.tgz" - "version" "5.0.2" + version "5.0.2" + resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-5.0.2.tgz#6f1225829d89794fd9f891989c9ce667422d7f64" + integrity sha512-PHKZuMN+K5qgKIWhBodXzQslTo5P+K/6LqeKXS6O/4liIDdZqaX5RXrCK++LAw+y/nptN48YmUMFiQHRSWYwtQ== "@types/babel__core@^7.1.14": - "integrity" "sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA==" - "resolved" "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.2.tgz" - "version" "7.20.2" + version "7.20.2" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.2.tgz#215db4f4a35d710256579784a548907237728756" + integrity sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA== dependencies: "@babel/parser" "^7.20.7" "@babel/types" "^7.20.7" @@ -2275,53 +2216,53 @@ "@types/babel__traverse" "*" "@types/babel__generator@*": - "integrity" "sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w==" - "resolved" "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.5.tgz" - "version" "7.6.5" + version "7.6.5" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.5.tgz#281f4764bcbbbc51fdded0f25aa587b4ce14da95" + integrity sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w== dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": - "integrity" "sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ==" - "resolved" "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.2.tgz" - "version" "7.4.2" + version "7.4.2" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.2.tgz#843e9f1f47c957553b0c374481dc4772921d6a6b" + integrity sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - "integrity" "sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw==" - "resolved" "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.2.tgz" - "version" "7.20.2" + version "7.20.2" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.2.tgz#4ddf99d95cfdd946ff35d2b65c978d9c9bf2645d" + integrity sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw== dependencies: "@babel/types" "^7.20.7" "@types/bn.js@*": - "integrity" "sha512-dkpZu0szUtn9UXTmw+e0AJFd4D2XAxDnsCLdc05SfqpqzPEBft8eQr8uaFitfo/dUUOZERaLec2hHMG87A4Dxg==" - "resolved" "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.2.tgz" - "version" "5.1.2" + version "5.1.2" + resolved "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.2.tgz" + integrity sha512-dkpZu0szUtn9UXTmw+e0AJFd4D2XAxDnsCLdc05SfqpqzPEBft8eQr8uaFitfo/dUUOZERaLec2hHMG87A4Dxg== dependencies: "@types/node" "*" "@types/body-parser@*": - "integrity" "sha512-oyl4jvAfTGX9Bt6Or4H9ni1Z447/tQuxnZsytsCaExKlmJiU8sFgnIBRzJUpKwB5eWn9HuBYlUlVA74q/yN0eQ==" - "resolved" "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.3.tgz" - "version" "1.19.3" + version "1.19.3" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.3.tgz#fb558014374f7d9e56c8f34bab2042a3a07d25cd" + integrity sha512-oyl4jvAfTGX9Bt6Or4H9ni1Z447/tQuxnZsytsCaExKlmJiU8sFgnIBRzJUpKwB5eWn9HuBYlUlVA74q/yN0eQ== dependencies: "@types/connect" "*" "@types/node" "*" "@types/bonjour@^3.5.9": - "integrity" "sha512-isGhjmBtLIxdHBDl2xGwUzEM8AOyOvWsADWq7rqirdi/ZQoHnLWErHvsThcEzTX8juDRiZtzp2Qkv5bgNh6mAg==" - "resolved" "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.11.tgz" - "version" "3.5.11" + version "3.5.11" + resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.11.tgz#fbaa46a1529ea5c5e46cde36e4be6a880db55b84" + integrity sha512-isGhjmBtLIxdHBDl2xGwUzEM8AOyOvWsADWq7rqirdi/ZQoHnLWErHvsThcEzTX8juDRiZtzp2Qkv5bgNh6mAg== dependencies: "@types/node" "*" "@types/cacheable-request@^6.0.1": - "integrity" "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==" - "resolved" "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz" - "version" "6.0.3" + version "6.0.3" + resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183" + integrity sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw== dependencies: "@types/http-cache-semantics" "*" "@types/keyv" "^3.1.4" @@ -2329,59 +2270,59 @@ "@types/responselike" "^1.0.0" "@types/connect-history-api-fallback@^1.3.5": - "integrity" "sha512-iaQslNbARe8fctL5Lk+DsmgWOM83lM+7FzP0eQUJs1jd3kBE8NWqBTIT2S8SqQOJjxvt2eyIjpOuYeRXq2AdMw==" - "resolved" "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.1.tgz" - "version" "1.5.1" + version "1.5.1" + resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.1.tgz#6e5e3602d93bda975cebc3449e1a318340af9e20" + integrity sha512-iaQslNbARe8fctL5Lk+DsmgWOM83lM+7FzP0eQUJs1jd3kBE8NWqBTIT2S8SqQOJjxvt2eyIjpOuYeRXq2AdMw== dependencies: "@types/express-serve-static-core" "*" "@types/node" "*" "@types/connect@*": - "integrity" "sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==" - "resolved" "https://registry.npmjs.org/@types/connect/-/connect-3.4.36.tgz" - "version" "3.4.36" + version "3.4.36" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.36.tgz#e511558c15a39cb29bd5357eebb57bd1459cd1ab" + integrity sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w== dependencies: "@types/node" "*" "@types/debug@^4.1.6": - "integrity" "sha512-8Hz50m2eoS56ldRlepxSBa6PWEVCtzUo/92HgLc2qTMnotJNIm7xP+UZhyWoYsyOdd5dxZ+NZLb24rsKyFs2ow==" - "resolved" "https://registry.npmjs.org/@types/debug/-/debug-4.1.9.tgz" - "version" "4.1.9" + version "4.1.9" + resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.9.tgz#906996938bc672aaf2fb8c0d3733ae1dda05b005" + integrity sha512-8Hz50m2eoS56ldRlepxSBa6PWEVCtzUo/92HgLc2qTMnotJNIm7xP+UZhyWoYsyOdd5dxZ+NZLb24rsKyFs2ow== dependencies: "@types/ms" "*" "@types/elliptic@^6.4.14": - "integrity" "sha512-tW9Z/mrlymYEbx/WWcO/Kkly0VxqPNaf/p3KcZTYKI282ZX+50efZvY/p6FoMuTpFq+QMyABQNfs6OXvdmVUhQ==" - "resolved" "https://registry.npmjs.org/@types/elliptic/-/elliptic-6.4.15.tgz" - "version" "6.4.15" + version "6.4.15" + resolved "https://registry.npmjs.org/@types/elliptic/-/elliptic-6.4.15.tgz" + integrity sha512-tW9Z/mrlymYEbx/WWcO/Kkly0VxqPNaf/p3KcZTYKI282ZX+50efZvY/p6FoMuTpFq+QMyABQNfs6OXvdmVUhQ== dependencies: "@types/bn.js" "*" "@types/eslint-scope@^3.7.3": - "integrity" "sha512-JNvhIEyxVW6EoMIFIvj93ZOywYFatlpu9deeH6eSx6PE3WHYvHaQtmHmQeNw7aA81bYGBPPQqdtBm6b1SsQMmA==" - "resolved" "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.5.tgz" - "version" "3.7.5" + version "3.7.5" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.5.tgz#e28b09dbb1d9d35fdfa8a884225f00440dfc5a3e" + integrity sha512-JNvhIEyxVW6EoMIFIvj93ZOywYFatlpu9deeH6eSx6PE3WHYvHaQtmHmQeNw7aA81bYGBPPQqdtBm6b1SsQMmA== dependencies: "@types/eslint" "*" "@types/estree" "*" -"@types/eslint@*", "@types/eslint@>=8.0.0": - "integrity" "sha512-iM/WfkwAhwmPff3wZuPLYiHX18HI24jU8k1ZSH7P8FHwxTjZ2P6CoX2wnF43oprR+YXJM6UUxATkNvyv/JHd+g==" - "resolved" "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.3.tgz" - "version" "8.44.3" +"@types/eslint@*": + version "8.44.4" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.44.4.tgz#28eaff82e1ca0a96554ec5bb0188f10ae1a74c2f" + integrity sha512-lOzjyfY/D9QR4hY9oblZ76B90MYTB3RrQ4z2vBIJKj9ROCRqdkYl2gSUx1x1a4IWPjKJZLL4Aw1Zfay7eMnmnA== dependencies: "@types/estree" "*" "@types/json-schema" "*" "@types/estree@*", "@types/estree@^1.0.0": - "integrity" "sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA==" - "resolved" "https://registry.npmjs.org/@types/estree/-/estree-1.0.2.tgz" - "version" "1.0.2" + version "1.0.2" + resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.2.tgz" + integrity sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA== "@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33": - "integrity" "sha512-ZohaCYTgGFcOP7u6aJOhY9uIZQgZ2vxC2yWoArY+FeDXlqeH66ZVBjgvg+RLVAS/DWNq4Ap9ZXu1+SUQiiWYMg==" - "resolved" "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.37.tgz" - "version" "4.17.37" + version "4.17.37" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.37.tgz#7e4b7b59da9142138a2aaa7621f5abedce8c7320" + integrity sha512-ZohaCYTgGFcOP7u6aJOhY9uIZQgZ2vxC2yWoArY+FeDXlqeH66ZVBjgvg+RLVAS/DWNq4Ap9ZXu1+SUQiiWYMg== dependencies: "@types/node" "*" "@types/qs" "*" @@ -2389,416 +2330,431 @@ "@types/send" "*" "@types/express@*", "@types/express@^4.17.13": - "integrity" "sha512-Sxv8BSLLgsBYmcnGdGjjEjqET2U+AKAdCRODmMiq02FgjwuV75Ut85DRpvFjyw/Mk0vgUOliGRU0UUmuuZHByQ==" - "resolved" "https://registry.npmjs.org/@types/express/-/express-4.17.18.tgz" - "version" "4.17.18" + version "4.17.19" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.19.tgz#6ff9b4851fda132c5d3dcd2f89fdb6a7a0031ced" + integrity sha512-UtOfBtzN9OvpZPPbnnYunfjM7XCI4jyk1NvnFhTVz5krYAnW4o5DCoIekvms+8ApqhB4+9wSge1kBijdfTSmfg== dependencies: "@types/body-parser" "*" "@types/express-serve-static-core" "^4.17.33" "@types/qs" "*" "@types/serve-static" "*" -"@types/fs-extra@^9.0.11", "@types/fs-extra@9.0.13": - "integrity" "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==" - "resolved" "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz" - "version" "9.0.13" +"@types/fs-extra@9.0.13", "@types/fs-extra@^9.0.11": + version "9.0.13" + resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-9.0.13.tgz#7594fbae04fe7f1918ce8b3d213f74ff44ac1f45" + integrity sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA== dependencies: "@types/node" "*" -"@types/graceful-fs@^4.1.2", "@types/graceful-fs@^4.1.3": - "integrity" "sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw==" - "resolved" "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.7.tgz" - "version" "4.1.7" +"@types/graceful-fs@^4.1.3": + version "4.1.7" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.7.tgz#30443a2e64fd51113bc3e2ba0914d47109695e2a" + integrity sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw== dependencies: "@types/node" "*" "@types/hoist-non-react-statics@^3.3.1": - "integrity" "sha512-YIQtIg4PKr7ZyqNPZObpxfHsHEmuB8dXCxd6qVcGuQVDK2bpsF7bYNnBJ4Nn7giuACZg+WewExgrtAJ3XnA4Xw==" - "resolved" "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz" - "version" "3.3.2" + version "3.3.2" + resolved "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz" + integrity sha512-YIQtIg4PKr7ZyqNPZObpxfHsHEmuB8dXCxd6qVcGuQVDK2bpsF7bYNnBJ4Nn7giuACZg+WewExgrtAJ3XnA4Xw== dependencies: "@types/react" "*" - "hoist-non-react-statics" "^3.3.0" + hoist-non-react-statics "^3.3.0" "@types/html-minifier-terser@^6.0.0": - "integrity" "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==" - "resolved" "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz" - "version" "6.1.0" + version "6.1.0" + resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35" + integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== "@types/http-cache-semantics@*": - "integrity" "sha512-FD+nQWA2zJjh4L9+pFXqWOi0Hs1ryBCfI+985NjluQ1p8EYtoLvjLOKidXBtZ4/IcxDX4o8/E8qDS3540tNliw==" - "resolved" "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.2.tgz" - "version" "4.0.2" + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.2.tgz#abe102d06ccda1efdf0ed98c10ccf7f36a785a41" + integrity sha512-FD+nQWA2zJjh4L9+pFXqWOi0Hs1ryBCfI+985NjluQ1p8EYtoLvjLOKidXBtZ4/IcxDX4o8/E8qDS3540tNliw== "@types/http-errors@*": - "integrity" "sha512-lPG6KlZs88gef6aD85z3HNkztpj7w2R7HmR3gygjfXCQmsLloWNARFkMuzKiiY8FGdh1XDpgBdrSf4aKDiA7Kg==" - "resolved" "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.2.tgz" - "version" "2.0.2" + version "2.0.2" + resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.2.tgz#a86e00bbde8950364f8e7846687259ffcd96e8c2" + integrity sha512-lPG6KlZs88gef6aD85z3HNkztpj7w2R7HmR3gygjfXCQmsLloWNARFkMuzKiiY8FGdh1XDpgBdrSf4aKDiA7Kg== "@types/http-proxy@^1.17.8": - "integrity" "sha512-kQtujO08dVtQ2wXAuSFfk9ASy3sug4+ogFR8Kd8UgP8PEuc1/G/8yjYRmp//PcDNJEUKOza/MrQu15bouEUCiw==" - "resolved" "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.12.tgz" - "version" "1.17.12" + version "1.17.12" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.12.tgz#86e849e9eeae0362548803c37a0a1afc616bd96b" + integrity sha512-kQtujO08dVtQ2wXAuSFfk9ASy3sug4+ogFR8Kd8UgP8PEuc1/G/8yjYRmp//PcDNJEUKOza/MrQu15bouEUCiw== dependencies: "@types/node" "*" "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - "integrity" "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==" - "resolved" "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz" - "version" "2.0.4" + version "2.0.4" + resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz" + integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== "@types/istanbul-lib-report@*": - "integrity" "sha512-gPQuzaPR5h/djlAv2apEG1HVOyj1IUs7GpfMZixU0/0KXT3pm64ylHuMUI1/Akh+sq/iikxg6Z2j+fcMDXaaTQ==" - "resolved" "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz" - "version" "3.0.1" + version "3.0.1" + resolved "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz" + integrity sha512-gPQuzaPR5h/djlAv2apEG1HVOyj1IUs7GpfMZixU0/0KXT3pm64ylHuMUI1/Akh+sq/iikxg6Z2j+fcMDXaaTQ== dependencies: "@types/istanbul-lib-coverage" "*" "@types/istanbul-reports@^3.0.0": - "integrity" "sha512-kv43F9eb3Lhj+lr/Hn6OcLCs/sSM8bt+fIaP11rCYngfV6NVjzWXJ17owQtDQTL9tQ8WSLUrGsSJ6rJz0F1w1A==" - "resolved" "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.2.tgz" - "version" "3.0.2" + version "3.0.2" + resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.2.tgz" + integrity sha512-kv43F9eb3Lhj+lr/Hn6OcLCs/sSM8bt+fIaP11rCYngfV6NVjzWXJ17owQtDQTL9tQ8WSLUrGsSJ6rJz0F1w1A== dependencies: "@types/istanbul-lib-report" "*" -"@types/jest@^26.0.24", "@types/jest@^27.0.2", "@types/jest@^29.5.5", "@types/jest@>= 28": - "integrity" "sha512-ebylz2hnsWR9mYvmBFbXJXr+33UPc4+ZdxyDXh5w0FlPBTfCVN3wPL+kuOiQt3xvrK419v7XWeAs+AeOksafXg==" - "resolved" "https://registry.npmjs.org/@types/jest/-/jest-29.5.5.tgz" - "version" "29.5.5" +"@types/jest@^29.5.5": + version "29.5.5" + resolved "https://registry.npmjs.org/@types/jest/-/jest-29.5.5.tgz" + integrity sha512-ebylz2hnsWR9mYvmBFbXJXr+33UPc4+ZdxyDXh5w0FlPBTfCVN3wPL+kuOiQt3xvrK419v7XWeAs+AeOksafXg== dependencies: - "expect" "^29.0.0" - "pretty-format" "^29.0.0" + expect "^29.0.0" + pretty-format "^29.0.0" "@types/jsdom@^20.0.0": - "integrity" "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==" - "resolved" "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz" - "version" "20.0.1" + version "20.0.1" + resolved "https://registry.yarnpkg.com/@types/jsdom/-/jsdom-20.0.1.tgz#07c14bc19bd2f918c1929541cdaacae894744808" + integrity sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ== dependencies: "@types/node" "*" "@types/tough-cookie" "*" - "parse5" "^7.0.0" + parse5 "^7.0.0" "@types/json-schema@*", "@types/json-schema@^7.0.12", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": - "integrity" "sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==" - "resolved" "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.13.tgz" - "version" "7.0.13" + version "7.0.13" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.13.tgz#02c24f4363176d2d18fc8b70b9f3c54aba178a85" + integrity sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ== "@types/json5@^0.0.29": - "integrity" "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" - "resolved" "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" - "version" "0.0.29" + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== "@types/keyv@^3.1.4": - "integrity" "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==" - "resolved" "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz" - "version" "3.1.4" + version "3.1.4" + resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" + integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg== dependencies: "@types/node" "*" "@types/lodash@^4.14.175": - "integrity" "sha512-Vrjz5N5Ia4SEzWWgIVwnHNEnb1UE1XMkvY5DGXrAeOGE9imk0hgTHh5GyDjLDJi9OTCn9oo9dXH1uToK1VRfrg==" - "resolved" "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.199.tgz" - "version" "4.14.199" + version "4.14.199" + resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.199.tgz" + integrity sha512-Vrjz5N5Ia4SEzWWgIVwnHNEnb1UE1XMkvY5DGXrAeOGE9imk0hgTHh5GyDjLDJi9OTCn9oo9dXH1uToK1VRfrg== + +"@types/mime@*": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.2.tgz#c1ae807f13d308ee7511a5b81c74f327028e66e8" + integrity sha512-Wj+fqpTLtTbG7c0tH47dkahefpLKEbB+xAZuLq7b4/IDHPl/n6VoXcyUQ2bypFlbSwvCr0y+bD4euTTqTJsPxQ== -"@types/mime@*", "@types/mime@^1": - "integrity" "sha512-Ys+/St+2VF4+xuY6+kDIXGxbNRO0mesVg0bbxEfB97Od1Vjpjx9KD1qxs64Gcb3CWPirk9Xe+PT4YiiHQ9T+eg==" - "resolved" "https://registry.npmjs.org/@types/mime/-/mime-1.3.3.tgz" - "version" "1.3.3" +"@types/mime@^1": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.3.tgz#bbe64987e0eb05de150c305005055c7ad784a9ce" + integrity sha512-Ys+/St+2VF4+xuY6+kDIXGxbNRO0mesVg0bbxEfB97Od1Vjpjx9KD1qxs64Gcb3CWPirk9Xe+PT4YiiHQ9T+eg== -"@types/mixpanel-browser@^2.38.0", "@types/mixpanel-browser@^2.47.3": - "integrity" "sha512-lum9ZdfLihJ89XoCrBjB8le/Vg6ohYSR2/3AdfLWGZdhUBEgftncDO9+0uW08FSN6SLqy2s9zCf55YV5sNLNYA==" - "resolved" "https://registry.npmjs.org/@types/mixpanel-browser/-/mixpanel-browser-2.47.3.tgz" - "version" "2.47.3" +"@types/mixpanel-browser@^2.47.3": + version "2.47.3" + resolved "https://registry.yarnpkg.com/@types/mixpanel-browser/-/mixpanel-browser-2.47.3.tgz#1c4c96c946aac102e8a4ed941a9ebaae9ff04f8a" + integrity sha512-lum9ZdfLihJ89XoCrBjB8le/Vg6ohYSR2/3AdfLWGZdhUBEgftncDO9+0uW08FSN6SLqy2s9zCf55YV5sNLNYA== "@types/ms@*": - "integrity" "sha512-xPSg0jm4mqgEkNhowKgZFBNtwoEwF6gJ4Dhww+GFpm3IgtNseHQZ5IqdNwnquZEoANxyDAKDRAdVo4Z72VvD/g==" - "resolved" "https://registry.npmjs.org/@types/ms/-/ms-0.7.32.tgz" - "version" "0.7.32" + version "0.7.32" + resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.32.tgz#f6cd08939ae3ad886fcc92ef7f0109dacddf61ab" + integrity sha512-xPSg0jm4mqgEkNhowKgZFBNtwoEwF6gJ4Dhww+GFpm3IgtNseHQZ5IqdNwnquZEoANxyDAKDRAdVo4Z72VvD/g== -"@types/node@*", "@types/node@^12.20.27", "@types/node@^16.11.6", "@types/node@>= 14", "@types/node@18.18.4": - "integrity" "sha512-Y1zz/LIuJek01+hlPNzzXQhmq/Z2BCP96j18MSXC0S0jSu/IG4FFxmBs7W4/lI2vPJ7foVfEB0hUVtnOjnCiTg==" - "resolved" "https://registry.npmjs.org/@types/node/-/node-16.18.55.tgz" - "version" "16.18.55" - -"@types/node@^18.11.18": - "integrity" "sha512-t3rNFBgJRugIhackit2mVcLfF6IRc0JE4oeizPQL8Zrm8n2WY/0wOdpOPhdtG0V9Q2TlW/axbF1MJ6z+Yj/kKQ==" - "resolved" "https://registry.npmjs.org/@types/node/-/node-18.18.4.tgz" - "version" "18.18.4" +"@types/node@*", "@types/node@^16.11.6": + version "16.18.55" + resolved "https://registry.npmjs.org/@types/node/-/node-16.18.55.tgz" + integrity sha512-Y1zz/LIuJek01+hlPNzzXQhmq/Z2BCP96j18MSXC0S0jSu/IG4FFxmBs7W4/lI2vPJ7foVfEB0hUVtnOjnCiTg== "@types/node@20.6.2": - "integrity" "sha512-Y+/1vGBHV/cYk6OI1Na/LHzwnlNCAfU3ZNGrc1LdRe/LAIbdDPTTv/HU3M7yXN448aTVDq3eKRm2cg7iKLb8gw==" - "resolved" "https://registry.npmjs.org/@types/node/-/node-20.6.2.tgz" - "version" "20.6.2" + version "20.6.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.6.2.tgz#a065925409f59657022e9063275cd0b9bd7e1b12" + integrity sha512-Y+/1vGBHV/cYk6OI1Na/LHzwnlNCAfU3ZNGrc1LdRe/LAIbdDPTTv/HU3M7yXN448aTVDq3eKRm2cg7iKLb8gw== -"@types/parse-json@^4.0.0": - "integrity" "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" - "resolved" "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz" - "version" "4.0.0" +"@types/node@^18.11.18": + version "18.18.5" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.18.5.tgz#afc0fd975df946d6e1add5bbf98264225b212244" + integrity sha512-4slmbtwV59ZxitY4ixUZdy1uRLf9eSIvBWPQxNjhHYWEtn0FryfKpyS2cvADYXTayWdKEIsJengncrVvkI4I6A== "@types/plist@^3.0.1": - "integrity" "sha512-DXkBoKc7jwUR0p439icInmXXMJNhoImdpOrrgA5/nDFK7LVtcJ9MyQNKhJEKpEztnHGWnNWMWLOIR62By0Ln0A==" - "resolved" "https://registry.npmjs.org/@types/plist/-/plist-3.0.3.tgz" - "version" "3.0.3" + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/plist/-/plist-3.0.3.tgz#8571d797ed09e0ee2700f7e40bbdec7fd80966ef" + integrity sha512-DXkBoKc7jwUR0p439icInmXXMJNhoImdpOrrgA5/nDFK7LVtcJ9MyQNKhJEKpEztnHGWnNWMWLOIR62By0Ln0A== dependencies: "@types/node" "*" - "xmlbuilder" ">=11.0.1" + xmlbuilder ">=11.0.1" "@types/prop-types@*": - "integrity" "sha512-kMpQpfZKSCBqltAJwskgePRaYRFukDkm1oItcAbC3gNELR20XIBcN9VRgg4+m8DKsTfkWeA4m4Imp4DDuWy7FQ==" - "resolved" "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.8.tgz" - "version" "15.7.8" + version "15.7.8" + resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.8.tgz" + integrity sha512-kMpQpfZKSCBqltAJwskgePRaYRFukDkm1oItcAbC3gNELR20XIBcN9VRgg4+m8DKsTfkWeA4m4Imp4DDuWy7FQ== "@types/qs@*": - "integrity" "sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg==" - "resolved" "https://registry.npmjs.org/@types/qs/-/qs-6.9.8.tgz" - "version" "6.9.8" + version "6.9.8" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.8.tgz#f2a7de3c107b89b441e071d5472e6b726b4adf45" + integrity sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg== "@types/range-parser@*": - "integrity" "sha512-xrO9OoVPqFuYyR/loIHjnbvvyRZREYKLjxV4+dY6v3FQR3stQ9ZxIGkaclF7YhI9hfjpuTbu14hZEy94qKLtOA==" - "resolved" "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.5.tgz" - "version" "1.2.5" + version "1.2.5" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.5.tgz#38bd1733ae299620771bd414837ade2e57757498" + integrity sha512-xrO9OoVPqFuYyR/loIHjnbvvyRZREYKLjxV4+dY6v3FQR3stQ9ZxIGkaclF7YhI9hfjpuTbu14hZEy94qKLtOA== -"@types/react-dom@^17.0.9", "@types/react-dom@^18.0.0", "@types/react-dom@^18.2.7": - "integrity" "sha512-zq6Dy0EiCuF9pWFW6I6k6W2LdpUixLE4P6XjXU1QHLfak3GPACQfLwEuHzY5pOYa4hzj1d0GxX/P141aFjZsyg==" - "resolved" "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.11.tgz" - "version" "18.2.11" +"@types/react-dom@^18.0.0", "@types/react-dom@^18.2.7": + version "18.2.13" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.13.tgz#89cd7f9ec8b28c8b6f0392b9591671fb4a9e96b7" + integrity sha512-eJIUv7rPP+EC45uNYp/ThhSpE16k22VJUknt5OLoH9tbXoi8bMhwLf5xRuWMywamNbWzhrSmU7IBJfPup1+3fw== dependencies: "@types/react" "*" "@types/react-helmet@^6.1.7": - "integrity" "sha512-mUFOrdR3AIvHE8BEaqzfPEnR62xq5PHQJehhgNtj78x0d5NOxUCQ0j+r9OZ4RvB+prNZx9wvQnVW8ApFBX+fig==" - "resolved" "https://registry.npmjs.org/@types/react-helmet/-/react-helmet-6.1.7.tgz" - "version" "6.1.7" + version "6.1.7" + resolved "https://registry.npmjs.org/@types/react-helmet/-/react-helmet-6.1.7.tgz" + integrity sha512-mUFOrdR3AIvHE8BEaqzfPEnR62xq5PHQJehhgNtj78x0d5NOxUCQ0j+r9OZ4RvB+prNZx9wvQnVW8ApFBX+fig== dependencies: "@types/react" "*" "@types/react-test-renderer@^18.0.1": - "integrity" "sha512-4wcNLnY6nIT+L6g94CpzL4CXX2P18JvKPU9CDlaHr3DnbP3GiaQLhDotJqjWlVqOcE4UhLRjp0MtxqwuNKONnA==" - "resolved" "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-18.0.3.tgz" - "version" "18.0.3" + version "18.0.3" + resolved "https://registry.yarnpkg.com/@types/react-test-renderer/-/react-test-renderer-18.0.3.tgz#67922bf5e5f0096581b1efd67dcdeabdd400cfea" + integrity sha512-4wcNLnY6nIT+L6g94CpzL4CXX2P18JvKPU9CDlaHr3DnbP3GiaQLhDotJqjWlVqOcE4UhLRjp0MtxqwuNKONnA== dependencies: "@types/react" "*" -"@types/react@*", "@types/react@^17.0.24", "@types/react@^18.2.0", "@types/react@^18.2.21": - "integrity" "sha512-24xqse6+VByVLIr+xWaQ9muX1B4bXJKXBbjszbld/UEDslGLY53+ZucF44HCmLbMPejTzGG9XgR+3m2/Wqu1kw==" - "resolved" "https://registry.npmjs.org/@types/react/-/react-18.2.25.tgz" - "version" "18.2.25" +"@types/react@*", "@types/react@^18.2.0": + version "18.2.25" + resolved "https://registry.npmjs.org/@types/react/-/react-18.2.25.tgz" + integrity sha512-24xqse6+VByVLIr+xWaQ9muX1B4bXJKXBbjszbld/UEDslGLY53+ZucF44HCmLbMPejTzGG9XgR+3m2/Wqu1kw== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" - "csstype" "^3.0.2" + csstype "^3.0.2" + +"@types/react@^18.2.21": + version "18.2.28" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.28.tgz#86877465c0fcf751659a36c769ecedfcfacee332" + integrity sha512-ad4aa/RaaJS3hyGz0BGegdnSRXQBkd1CCYDCdNjBPg90UUpLgo+WlJqb9fMYUxtehmzF3PJaTWqRZjko6BRzBg== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" "@types/responselike@^1.0.0": - "integrity" "sha512-TiGnitEDxj2X0j+98Eqk5lv/Cij8oHd32bU4D/Yw6AOq7vvTk0gSD2GPj0G/HkvhMoVsdlhYF4yqqlyPBTM6Sg==" - "resolved" "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.1.tgz" - "version" "1.0.1" + version "1.0.1" + resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.1.tgz#1dd57e54509b3b95c7958e52709567077019d65d" + integrity sha512-TiGnitEDxj2X0j+98Eqk5lv/Cij8oHd32bU4D/Yw6AOq7vvTk0gSD2GPj0G/HkvhMoVsdlhYF4yqqlyPBTM6Sg== dependencies: "@types/node" "*" "@types/retry@0.12.0": - "integrity" "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" - "resolved" "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz" - "version" "0.12.0" + version "0.12.0" + resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" + integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== "@types/scheduler@*": - "integrity" "sha512-2L9ifAGl7wmXwP4v3pN4p2FLhD0O1qsJpvKmNin5VA8+UvNVb447UDaAEV6UdrkA+m/Xs58U1RFps44x6TFsVQ==" - "resolved" "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.4.tgz" - "version" "0.16.4" + version "0.16.4" + resolved "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.4.tgz" + integrity sha512-2L9ifAGl7wmXwP4v3pN4p2FLhD0O1qsJpvKmNin5VA8+UvNVb447UDaAEV6UdrkA+m/Xs58U1RFps44x6TFsVQ== "@types/semver@^7.3.12", "@types/semver@^7.5.0": - "integrity" "sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==" - "resolved" "https://registry.npmjs.org/@types/semver/-/semver-7.5.3.tgz" - "version" "7.5.3" + version "7.5.3" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.3.tgz#9a726e116beb26c24f1ccd6850201e1246122e04" + integrity sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw== "@types/send@*": - "integrity" "sha512-aAG6yRf6r0wQ29bkS+x97BIs64ZLxeE/ARwyS6wrldMm3C1MdKwCcnnEwMC1slI8wuxJOpiUH9MioC0A0i+GJw==" - "resolved" "https://registry.npmjs.org/@types/send/-/send-0.17.2.tgz" - "version" "0.17.2" + version "0.17.2" + resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.2.tgz#af78a4495e3c2b79bfbdac3955fdd50e03cc98f2" + integrity sha512-aAG6yRf6r0wQ29bkS+x97BIs64ZLxeE/ARwyS6wrldMm3C1MdKwCcnnEwMC1slI8wuxJOpiUH9MioC0A0i+GJw== dependencies: "@types/mime" "^1" "@types/node" "*" "@types/serve-index@^1.9.1": - "integrity" "sha512-asaEIoc6J+DbBKXtO7p2shWUpKacZOoMBEGBgPG91P8xhO53ohzHWGCs4ScZo5pQMf5ukQzVT9fhX1WzpHihig==" - "resolved" "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.2.tgz" - "version" "1.9.2" + version "1.9.2" + resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.2.tgz#cb26e775678a8526b73a5d980a147518740aaecd" + integrity sha512-asaEIoc6J+DbBKXtO7p2shWUpKacZOoMBEGBgPG91P8xhO53ohzHWGCs4ScZo5pQMf5ukQzVT9fhX1WzpHihig== dependencies: "@types/express" "*" "@types/serve-static@*", "@types/serve-static@^1.13.10": - "integrity" "sha512-yVRvFsEMrv7s0lGhzrggJjNOSmZCdgCjw9xWrPr/kNNLp6FaDfMC1KaYl3TSJ0c58bECwNBMoQrZJ8hA8E1eFg==" - "resolved" "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.3.tgz" - "version" "1.15.3" + version "1.15.3" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.3.tgz#2cfacfd1fd4520bbc3e292cca432d5e8e2e3ee61" + integrity sha512-yVRvFsEMrv7s0lGhzrggJjNOSmZCdgCjw9xWrPr/kNNLp6FaDfMC1KaYl3TSJ0c58bECwNBMoQrZJ8hA8E1eFg== dependencies: "@types/http-errors" "*" "@types/mime" "*" "@types/node" "*" "@types/sockjs@^0.3.33": - "integrity" "sha512-R+n7qBFnm/6jinlteC9DBL5dGiDGjWAvjo4viUanpnc/dG1y7uDoacXPIQ/PQEg1fI912SMHIa014ZjRpvDw4g==" - "resolved" "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.34.tgz" - "version" "0.3.34" + version "0.3.34" + resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.34.tgz#43e10e549b36d2ba2589278f00f81b5d7ccda167" + integrity sha512-R+n7qBFnm/6jinlteC9DBL5dGiDGjWAvjo4viUanpnc/dG1y7uDoacXPIQ/PQEg1fI912SMHIa014ZjRpvDw4g== dependencies: "@types/node" "*" "@types/stack-utils@^2.0.0": - "integrity" "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==" - "resolved" "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz" - "version" "2.0.1" + version "2.0.1" + resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz" + integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== "@types/terser-webpack-plugin@^5.0.4": - "integrity" "sha512-iHDR2pRfFjGyDqCALX2tgUgFtGoQf2AJhKpC2XD1IMBQVJF2bny6WChGRDKj9eaZJl4F2RmvBhxJNtVPj7aTRw==" - "resolved" "https://registry.npmjs.org/@types/terser-webpack-plugin/-/terser-webpack-plugin-5.2.0.tgz" - "version" "5.2.0" + version "5.2.0" + resolved "https://registry.yarnpkg.com/@types/terser-webpack-plugin/-/terser-webpack-plugin-5.2.0.tgz#6aaec696593216917f9f03266bed222f8253483b" + integrity sha512-iHDR2pRfFjGyDqCALX2tgUgFtGoQf2AJhKpC2XD1IMBQVJF2bny6WChGRDKj9eaZJl4F2RmvBhxJNtVPj7aTRw== dependencies: - "terser-webpack-plugin" "*" + terser-webpack-plugin "*" "@types/tough-cookie@*": - "integrity" "sha512-THo502dA5PzG/sfQH+42Lw3fvmYkceefOspdCwpHRul8ik2Jv1K8I5OZz1AT3/rs46kwgMCe9bSBmDLYkkOMGg==" - "resolved" "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.3.tgz" - "version" "4.0.3" + version "4.0.3" + resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.3.tgz#3d06b6769518450871fbc40770b7586334bdfd90" + integrity sha512-THo502dA5PzG/sfQH+42Lw3fvmYkceefOspdCwpHRul8ik2Jv1K8I5OZz1AT3/rs46kwgMCe9bSBmDLYkkOMGg== "@types/verror@^1.10.3": - "integrity" "sha512-4c5F4T0qMSoXq1KHx7WV1FMuD2h0xdaFoJ7HSVWUfQ8w5YbqCwLOA8K7/yy1I+Txuzvm417dnPUaLmqazX1F7g==" - "resolved" "https://registry.npmjs.org/@types/verror/-/verror-1.10.7.tgz" - "version" "1.10.7" + version "1.10.7" + resolved "https://registry.yarnpkg.com/@types/verror/-/verror-1.10.7.tgz#7e2ee21514355a7ae354fa151d96856d18531f72" + integrity sha512-4c5F4T0qMSoXq1KHx7WV1FMuD2h0xdaFoJ7HSVWUfQ8w5YbqCwLOA8K7/yy1I+Txuzvm417dnPUaLmqazX1F7g== "@types/webpack-bundle-analyzer@^4.6.0": - "integrity" "sha512-MQ9GBzu8N7bsjmE9xtWe9JUrRUsPljKxS8fd5EdSIU/x+/U0Ga8f0OsVJZTX1yWF87xZSt0Ai1Iaiwi+Gq+ugA==" - "resolved" "https://registry.npmjs.org/@types/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.6.1.tgz" - "version" "4.6.1" + version "4.6.1" + resolved "https://registry.yarnpkg.com/@types/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.6.1.tgz#207adeda2ef8084ab3ec6ccdf27c74bfa826925d" + integrity sha512-MQ9GBzu8N7bsjmE9xtWe9JUrRUsPljKxS8fd5EdSIU/x+/U0Ga8f0OsVJZTX1yWF87xZSt0Ai1Iaiwi+Gq+ugA== dependencies: "@types/node" "*" - "tapable" "^2.2.0" - "webpack" "^5" + tapable "^2.2.0" + webpack "^5" "@types/ws@^8.5.5": - "integrity" "sha512-8B5EO9jLVCy+B58PLHvLDuOD8DRVMgQzq8d55SjLCOn9kqGyqOvy27exVaTio1q1nX5zLu8/6N0n2ThSxOM6tg==" - "resolved" "https://registry.npmjs.org/@types/ws/-/ws-8.5.6.tgz" - "version" "8.5.6" + version "8.5.7" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.7.tgz#1ca585074fe5d2c81dec7a3d451f244a2a6d83cb" + integrity sha512-6UrLjiDUvn40CMrAubXuIVtj2PEfKDffJS7ychvnPU44j+KVeXmdHHTgqcM/dxLUTHxlXHiFM8Skmb8ozGdTnQ== dependencies: "@types/node" "*" "@types/yargs-parser@*": - "integrity" "sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ==" - "resolved" "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.1.tgz" - "version" "21.0.1" - -"@types/yargs@^16.0.0": - "integrity" "sha512-oTP7/Q13GSPrgcwEwdlnkoZSQ1Hg9THe644qq8PG6hhJzjZ3qj1JjEFPIwWV/IXVs5XGIVqtkNOS9kh63WIJ+A==" - "resolved" "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.6.tgz" - "version" "16.0.6" - dependencies: - "@types/yargs-parser" "*" + version "21.0.1" + resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.1.tgz" + integrity sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ== "@types/yargs@^17.0.8": - "integrity" "sha512-N3e3fkS86hNhtk6BEnc0rj3zcehaxx8QWhCROJkqpl5Zaoi7nAic3jH8q94jVD3zu5LGk+PUB6KAiDmimYOEQw==" - "resolved" "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.28.tgz" - "version" "17.0.28" + version "17.0.28" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.28.tgz" + integrity sha512-N3e3fkS86hNhtk6BEnc0rj3zcehaxx8QWhCROJkqpl5Zaoi7nAic3jH8q94jVD3zu5LGk+PUB6KAiDmimYOEQw== dependencies: "@types/yargs-parser" "*" "@types/yauzl@^2.9.1": - "integrity" "sha512-CHzgNU3qYBnp/O4S3yv2tXPlvMTq0YWSTVg2/JYLqWZGHwwgJGAwd00poay/11asPq8wLFwHzubyInqHIFmmiw==" - "resolved" "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.1.tgz" - "version" "2.10.1" + version "2.10.1" + resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.1.tgz#4e8f299f0934d60f36c74f59cb5a8483fd786691" + integrity sha512-CHzgNU3qYBnp/O4S3yv2tXPlvMTq0YWSTVg2/JYLqWZGHwwgJGAwd00poay/11asPq8wLFwHzubyInqHIFmmiw== dependencies: "@types/node" "*" -"@typescript-eslint/eslint-plugin@^4.28.2", "@typescript-eslint/eslint-plugin@^4.31.2", "@typescript-eslint/eslint-plugin@^5.0.0 || ^6.0.0", "@typescript-eslint/eslint-plugin@^5.13.0 || ^6.0.0", "@typescript-eslint/eslint-plugin@^6.7.0", "@typescript-eslint/eslint-plugin@6.7.4": - "integrity" "sha512-DAbgDXwtX+pDkAHwiGhqP3zWUGpW49B7eqmgpPtg+BKJXwdct79ut9+ifqOFPJGClGKSHXn2PTBatCnldJRUoA==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.4.tgz" - "version" "6.7.4" +"@typescript-eslint/eslint-plugin@^6.7.0": + version "6.7.5" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.5.tgz#f4024b9f63593d0c2b5bd6e4ca027e6f30934d4f" + integrity sha512-JhtAwTRhOUcP96D0Y6KYnwig/MRQbOoLGXTON2+LlyB/N35SP9j1boai2zzwXb7ypKELXMx3DVk9UTaEq1vHEw== dependencies: "@eslint-community/regexpp" "^4.5.1" - "@typescript-eslint/scope-manager" "6.7.4" - "@typescript-eslint/type-utils" "6.7.4" - "@typescript-eslint/utils" "6.7.4" - "@typescript-eslint/visitor-keys" "6.7.4" - "debug" "^4.3.4" - "graphemer" "^1.4.0" - "ignore" "^5.2.4" - "natural-compare" "^1.4.0" - "semver" "^7.5.4" - "ts-api-utils" "^1.0.1" - -"@typescript-eslint/parser@^4.28.2", "@typescript-eslint/parser@^4.31.2", "@typescript-eslint/parser@^5.0.0 || ^6.0.0", "@typescript-eslint/parser@^6.0.0 || ^6.0.0-alpha", "@typescript-eslint/parser@^6.7.0": - "integrity" "sha512-I5zVZFY+cw4IMZUeNCU7Sh2PO5O57F7Lr0uyhgCJmhN/BuTlnc55KxPonR4+EM3GBdfiCyGZye6DgMjtubQkmA==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.7.4.tgz" - "version" "6.7.4" - dependencies: - "@typescript-eslint/scope-manager" "6.7.4" - "@typescript-eslint/types" "6.7.4" - "@typescript-eslint/typescript-estree" "6.7.4" - "@typescript-eslint/visitor-keys" "6.7.4" - "debug" "^4.3.4" + "@typescript-eslint/scope-manager" "6.7.5" + "@typescript-eslint/type-utils" "6.7.5" + "@typescript-eslint/utils" "6.7.5" + "@typescript-eslint/visitor-keys" "6.7.5" + debug "^4.3.4" + graphemer "^1.4.0" + ignore "^5.2.4" + natural-compare "^1.4.0" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/parser@^6.7.0": + version "6.7.5" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.7.5.tgz#8d7ca3d1fbd9d5a58cc4d30b2aa797a760137886" + integrity sha512-bIZVSGx2UME/lmhLcjdVc7ePBwn7CLqKarUBL4me1C5feOd663liTGjMBGVcGr+BhnSLeP4SgwdvNnnkbIdkCw== + dependencies: + "@typescript-eslint/scope-manager" "6.7.5" + "@typescript-eslint/types" "6.7.5" + "@typescript-eslint/typescript-estree" "6.7.5" + "@typescript-eslint/visitor-keys" "6.7.5" + debug "^4.3.4" "@typescript-eslint/scope-manager@5.62.0": - "integrity" "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz" - "version" "5.62.0" + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" + integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== dependencies: "@typescript-eslint/types" "5.62.0" "@typescript-eslint/visitor-keys" "5.62.0" -"@typescript-eslint/scope-manager@6.7.4": - "integrity" "sha512-SdGqSLUPTXAXi7c3Ob7peAGVnmMoGzZ361VswK2Mqf8UOYcODiYvs8rs5ILqEdfvX1lE7wEZbLyELCW+Yrql1A==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.7.4.tgz" - "version" "6.7.4" +"@typescript-eslint/scope-manager@6.7.5": + version "6.7.5" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.7.5.tgz#1cf33b991043886cd67f4f3600b8e122fc14e711" + integrity sha512-GAlk3eQIwWOJeb9F7MKQ6Jbah/vx1zETSDw8likab/eFcqkjSD7BI75SDAeC5N2L0MmConMoPvTsmkrg71+B1A== dependencies: - "@typescript-eslint/types" "6.7.4" - "@typescript-eslint/visitor-keys" "6.7.4" + "@typescript-eslint/types" "6.7.5" + "@typescript-eslint/visitor-keys" "6.7.5" -"@typescript-eslint/type-utils@6.7.4": - "integrity" "sha512-n+g3zi1QzpcAdHFP9KQF+rEFxMb2KxtnJGID3teA/nxKHOVi3ylKovaqEzGBbVY2pBttU6z85gp0D00ufLzViQ==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.7.4.tgz" - "version" "6.7.4" +"@typescript-eslint/type-utils@6.7.5": + version "6.7.5" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.7.5.tgz#0a65949ec16588d8956f6d967f7d9c84ddb2d72a" + integrity sha512-Gs0qos5wqxnQrvpYv+pf3XfcRXW6jiAn9zE/K+DlmYf6FcpxeNYN0AIETaPR7rHO4K2UY+D0CIbDP9Ut0U4m1g== dependencies: - "@typescript-eslint/typescript-estree" "6.7.4" - "@typescript-eslint/utils" "6.7.4" - "debug" "^4.3.4" - "ts-api-utils" "^1.0.1" + "@typescript-eslint/typescript-estree" "6.7.5" + "@typescript-eslint/utils" "6.7.5" + debug "^4.3.4" + ts-api-utils "^1.0.1" "@typescript-eslint/types@5.62.0": - "integrity" "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz" - "version" "5.62.0" + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" + integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== -"@typescript-eslint/types@6.7.4": - "integrity" "sha512-o9XWK2FLW6eSS/0r/tgjAGsYasLAnOWg7hvZ/dGYSSNjCh+49k5ocPN8OmG5aZcSJ8pclSOyVKP2x03Sj+RrCA==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.4.tgz" - "version" "6.7.4" +"@typescript-eslint/types@6.7.5": + version "6.7.5" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.7.5.tgz#4571320fb9cf669de9a95d9849f922c3af809790" + integrity sha512-WboQBlOXtdj1tDFPyIthpKrUb+kZf2VroLZhxKa/VlwLlLyqv/PwUNgL30BlTVZV1Wu4Asu2mMYPqarSO4L5ZQ== "@typescript-eslint/typescript-estree@5.62.0": - "integrity" "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz" - "version" "5.62.0" + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" + integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== dependencies: "@typescript-eslint/types" "5.62.0" "@typescript-eslint/visitor-keys" "5.62.0" - "debug" "^4.3.4" - "globby" "^11.1.0" - "is-glob" "^4.0.3" - "semver" "^7.3.7" - "tsutils" "^3.21.0" - -"@typescript-eslint/typescript-estree@6.7.4": - "integrity" "sha512-ty8b5qHKatlNYd9vmpHooQz3Vki3gG+3PchmtsA4TgrZBKWHNjWfkQid7K7xQogBqqc7/BhGazxMD5vr6Ha+iQ==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.4.tgz" - "version" "6.7.4" - dependencies: - "@typescript-eslint/types" "6.7.4" - "@typescript-eslint/visitor-keys" "6.7.4" - "debug" "^4.3.4" - "globby" "^11.1.0" - "is-glob" "^4.0.3" - "semver" "^7.5.4" - "ts-api-utils" "^1.0.1" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/typescript-estree@6.7.5": + version "6.7.5" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.5.tgz#4578de1a26e9f24950f029a4f00d1bfe41f15a39" + integrity sha512-NhJiJ4KdtwBIxrKl0BqG1Ur+uw7FiOnOThcYx9DpOGJ/Abc9z2xNzLeirCG02Ig3vkvrc2qFLmYSSsaITbKjlg== + dependencies: + "@typescript-eslint/types" "6.7.5" + "@typescript-eslint/visitor-keys" "6.7.5" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/utils@6.7.5": + version "6.7.5" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.7.5.tgz#ab847b53d6b65e029314b8247c2336843dba81ab" + integrity sha512-pfRRrH20thJbzPPlPc4j0UNGvH1PjPlhlCMq4Yx7EGjV7lvEeGX0U6MJYe8+SyFutWgSHsdbJ3BXzZccYggezA== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@types/json-schema" "^7.0.12" + "@types/semver" "^7.5.0" + "@typescript-eslint/scope-manager" "6.7.5" + "@typescript-eslint/types" "6.7.5" + "@typescript-eslint/typescript-estree" "6.7.5" + semver "^7.5.4" "@typescript-eslint/utils@^5.10.0": - "integrity" "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz" - "version" "5.62.0" + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" + integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@types/json-schema" "^7.0.9" @@ -2806,47 +2762,34 @@ "@typescript-eslint/scope-manager" "5.62.0" "@typescript-eslint/types" "5.62.0" "@typescript-eslint/typescript-estree" "5.62.0" - "eslint-scope" "^5.1.1" - "semver" "^7.3.7" - -"@typescript-eslint/utils@6.7.4": - "integrity" "sha512-PRQAs+HUn85Qdk+khAxsVV+oULy3VkbH3hQ8hxLRJXWBEd7iI+GbQxH5SEUSH7kbEoTp6oT1bOwyga24ELALTA==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.7.4.tgz" - "version" "6.7.4" - dependencies: - "@eslint-community/eslint-utils" "^4.4.0" - "@types/json-schema" "^7.0.12" - "@types/semver" "^7.5.0" - "@typescript-eslint/scope-manager" "6.7.4" - "@typescript-eslint/types" "6.7.4" - "@typescript-eslint/typescript-estree" "6.7.4" - "semver" "^7.5.4" + eslint-scope "^5.1.1" + semver "^7.3.7" "@typescript-eslint/visitor-keys@5.62.0": - "integrity" "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz" - "version" "5.62.0" + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" + integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== dependencies: "@typescript-eslint/types" "5.62.0" - "eslint-visitor-keys" "^3.3.0" + eslint-visitor-keys "^3.3.0" -"@typescript-eslint/visitor-keys@6.7.4": - "integrity" "sha512-pOW37DUhlTZbvph50x5zZCkFn3xzwkGtNoJHzIM3svpiSkJzwOYr/kVBaXmf+RAQiUDs1AHEZVNPg6UJCJpwRA==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.4.tgz" - "version" "6.7.4" +"@typescript-eslint/visitor-keys@6.7.5": + version "6.7.5" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.5.tgz#84c68d6ceb5b12d5246b918b84f2b79affd6c2f1" + integrity sha512-3MaWdDZtLlsexZzDSdQWsFQ9l9nL8B80Z4fImSpyllFC/KLqWQRdEcB+gGGO+N3Q2uL40EsG66wZLsohPxNXvg== dependencies: - "@typescript-eslint/types" "6.7.4" - "eslint-visitor-keys" "^3.4.1" + "@typescript-eslint/types" "6.7.5" + eslint-visitor-keys "^3.4.1" "@uidotdev/usehooks@^2.3.1": - "integrity" "sha512-1GL8CatTsTGZdwPNrZ44JhJI5QWip7oyDXEXFBEibJ+P+p+ZBi7mKrpG90ZIdQTSEcvkfiE2Y492Uo3ubPBZ3g==" - "resolved" "https://registry.npmjs.org/@uidotdev/usehooks/-/usehooks-2.3.1.tgz" - "version" "2.3.1" + version "2.3.1" + resolved "https://registry.npmjs.org/@uidotdev/usehooks/-/usehooks-2.3.1.tgz" + integrity sha512-1GL8CatTsTGZdwPNrZ44JhJI5QWip7oyDXEXFBEibJ+P+p+ZBi7mKrpG90ZIdQTSEcvkfiE2Y492Uo3ubPBZ3g== -"@uiw/codemirror-extensions-basic-setup@^4.12.4", "@uiw/codemirror-extensions-basic-setup@4.21.19": - "integrity" "sha512-FwnzjNSc1mbzlcOlGmZgK2JMFcmPSHDeDUoql4ioyffF6ytiUD6LB9exOlQlAppzAZkKBYHqBwBjd0gdJYpH/w==" - "resolved" "https://registry.npmjs.org/@uiw/codemirror-extensions-basic-setup/-/codemirror-extensions-basic-setup-4.21.19.tgz" - "version" "4.21.19" +"@uiw/codemirror-extensions-basic-setup@4.21.19", "@uiw/codemirror-extensions-basic-setup@^4.12.4": + version "4.21.19" + resolved "https://registry.npmjs.org/@uiw/codemirror-extensions-basic-setup/-/codemirror-extensions-basic-setup-4.21.19.tgz" + integrity sha512-FwnzjNSc1mbzlcOlGmZgK2JMFcmPSHDeDUoql4ioyffF6ytiUD6LB9exOlQlAppzAZkKBYHqBwBjd0gdJYpH/w== dependencies: "@codemirror/autocomplete" "^6.0.0" "@codemirror/commands" "^6.0.0" @@ -2857,74 +2800,74 @@ "@codemirror/view" "^6.0.0" "@uiw/codemirror-theme-github@^4.12.4": - "integrity" "sha512-VgtASDyTHH7IoVb9gI6AFyclwnQgCCWIEFm8v/QhENqwumpU2ar5P10usT4agk5WOWiy1kM2YS/MBCnfe0wutw==" - "resolved" "https://registry.npmjs.org/@uiw/codemirror-theme-github/-/codemirror-theme-github-4.21.19.tgz" - "version" "4.21.19" + version "4.21.19" + resolved "https://registry.npmjs.org/@uiw/codemirror-theme-github/-/codemirror-theme-github-4.21.19.tgz" + integrity sha512-VgtASDyTHH7IoVb9gI6AFyclwnQgCCWIEFm8v/QhENqwumpU2ar5P10usT4agk5WOWiy1kM2YS/MBCnfe0wutw== dependencies: "@uiw/codemirror-themes" "4.21.19" "@uiw/codemirror-themes@4.21.19": - "integrity" "sha512-fA06v3jiPiCCXWQA6f3T7A4wzIYxLKxom5WgP0Qy5eP/hioTYaHAeS/4R/oomQ4AmtEoGa1L+mXEjBeCahhLsg==" - "resolved" "https://registry.npmjs.org/@uiw/codemirror-themes/-/codemirror-themes-4.21.19.tgz" - "version" "4.21.19" + version "4.21.19" + resolved "https://registry.npmjs.org/@uiw/codemirror-themes/-/codemirror-themes-4.21.19.tgz" + integrity sha512-fA06v3jiPiCCXWQA6f3T7A4wzIYxLKxom5WgP0Qy5eP/hioTYaHAeS/4R/oomQ4AmtEoGa1L+mXEjBeCahhLsg== dependencies: "@codemirror/language" "^6.0.0" "@codemirror/state" "^6.0.0" "@codemirror/view" "^6.0.0" "@uiw/react-codemirror@^4.12.4": - "integrity" "sha512-KCm+izhkeRCz9uuPY4WtlMAwEE6HsGR/iHGFDABj2OFq9DfnpAIFyVx2Z87NxMHvHi7zttn6JerxwNLJdV12og==" - "resolved" "https://registry.npmjs.org/@uiw/react-codemirror/-/react-codemirror-4.21.19.tgz" - "version" "4.21.19" + version "4.21.19" + resolved "https://registry.npmjs.org/@uiw/react-codemirror/-/react-codemirror-4.21.19.tgz" + integrity sha512-KCm+izhkeRCz9uuPY4WtlMAwEE6HsGR/iHGFDABj2OFq9DfnpAIFyVx2Z87NxMHvHi7zttn6JerxwNLJdV12og== dependencies: "@babel/runtime" "^7.18.6" "@codemirror/commands" "^6.1.0" "@codemirror/state" "^6.1.1" "@codemirror/theme-one-dark" "^6.0.0" "@uiw/codemirror-extensions-basic-setup" "4.21.19" - "codemirror" "^6.0.0" + codemirror "^6.0.0" -"@webassemblyjs/ast@^1.11.5", "@webassemblyjs/ast@1.11.6": - "integrity" "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz" - "version" "1.11.6" +"@webassemblyjs/ast@1.11.6", "@webassemblyjs/ast@^1.11.5": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.6.tgz#db046555d3c413f8966ca50a95176a0e2c642e24" + integrity sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q== dependencies: "@webassemblyjs/helper-numbers" "1.11.6" "@webassemblyjs/helper-wasm-bytecode" "1.11.6" "@webassemblyjs/floating-point-hex-parser@1.11.6": - "integrity" "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz" - "version" "1.11.6" + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz#dacbcb95aff135c8260f77fa3b4c5fea600a6431" + integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw== "@webassemblyjs/helper-api-error@1.11.6": - "integrity" "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz" - "version" "1.11.6" + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz#6132f68c4acd59dcd141c44b18cbebbd9f2fa768" + integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== "@webassemblyjs/helper-buffer@1.11.6": - "integrity" "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz" - "version" "1.11.6" + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz#b66d73c43e296fd5e88006f18524feb0f2c7c093" + integrity sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA== "@webassemblyjs/helper-numbers@1.11.6": - "integrity" "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz" - "version" "1.11.6" + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz#cbce5e7e0c1bd32cf4905ae444ef64cea919f1b5" + integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g== dependencies: "@webassemblyjs/floating-point-hex-parser" "1.11.6" "@webassemblyjs/helper-api-error" "1.11.6" "@xtuc/long" "4.2.2" "@webassemblyjs/helper-wasm-bytecode@1.11.6": - "integrity" "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz" - "version" "1.11.6" + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz#bb2ebdb3b83aa26d9baad4c46d4315283acd51e9" + integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== "@webassemblyjs/helper-wasm-section@1.11.6": - "integrity" "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz" - "version" "1.11.6" + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz#ff97f3863c55ee7f580fd5c41a381e9def4aa577" + integrity sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g== dependencies: "@webassemblyjs/ast" "1.11.6" "@webassemblyjs/helper-buffer" "1.11.6" @@ -2932,28 +2875,28 @@ "@webassemblyjs/wasm-gen" "1.11.6" "@webassemblyjs/ieee754@1.11.6": - "integrity" "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz" - "version" "1.11.6" + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz#bb665c91d0b14fffceb0e38298c329af043c6e3a" + integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg== dependencies: "@xtuc/ieee754" "^1.2.0" "@webassemblyjs/leb128@1.11.6": - "integrity" "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz" - "version" "1.11.6" + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz#70e60e5e82f9ac81118bc25381a0b283893240d7" + integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ== dependencies: "@xtuc/long" "4.2.2" "@webassemblyjs/utf8@1.11.6": - "integrity" "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz" - "version" "1.11.6" + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#90f8bc34c561595fe156603be7253cdbcd0fab5a" + integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== "@webassemblyjs/wasm-edit@^1.11.5": - "integrity" "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz" - "version" "1.11.6" + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz#c72fa8220524c9b416249f3d94c2958dfe70ceab" + integrity sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw== dependencies: "@webassemblyjs/ast" "1.11.6" "@webassemblyjs/helper-buffer" "1.11.6" @@ -2965,9 +2908,9 @@ "@webassemblyjs/wast-printer" "1.11.6" "@webassemblyjs/wasm-gen@1.11.6": - "integrity" "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz" - "version" "1.11.6" + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz#fb5283e0e8b4551cc4e9c3c0d7184a65faf7c268" + integrity sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA== dependencies: "@webassemblyjs/ast" "1.11.6" "@webassemblyjs/helper-wasm-bytecode" "1.11.6" @@ -2976,19 +2919,19 @@ "@webassemblyjs/utf8" "1.11.6" "@webassemblyjs/wasm-opt@1.11.6": - "integrity" "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz" - "version" "1.11.6" + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz#d9a22d651248422ca498b09aa3232a81041487c2" + integrity sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g== dependencies: "@webassemblyjs/ast" "1.11.6" "@webassemblyjs/helper-buffer" "1.11.6" "@webassemblyjs/wasm-gen" "1.11.6" "@webassemblyjs/wasm-parser" "1.11.6" -"@webassemblyjs/wasm-parser@^1.11.5", "@webassemblyjs/wasm-parser@1.11.6": - "integrity" "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz" - "version" "1.11.6" +"@webassemblyjs/wasm-parser@1.11.6", "@webassemblyjs/wasm-parser@^1.11.5": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz#bb85378c527df824004812bbdb784eea539174a1" + integrity sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ== dependencies: "@webassemblyjs/ast" "1.11.6" "@webassemblyjs/helper-api-error" "1.11.6" @@ -2998,619 +2941,550 @@ "@webassemblyjs/utf8" "1.11.6" "@webassemblyjs/wast-printer@1.11.6": - "integrity" "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz" - "version" "1.11.6" + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz#a7bf8dd7e362aeb1668ff43f35cb849f188eff20" + integrity sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A== dependencies: "@webassemblyjs/ast" "1.11.6" "@xtuc/long" "4.2.2" "@webpack-cli/configtest@^2.1.1": - "integrity" "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==" - "resolved" "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz" - "version" "2.1.1" + version "2.1.1" + resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-2.1.1.tgz#3b2f852e91dac6e3b85fb2a314fb8bef46d94646" + integrity sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw== "@webpack-cli/info@^2.0.2": - "integrity" "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==" - "resolved" "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz" - "version" "2.0.2" + version "2.0.2" + resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-2.0.2.tgz#cc3fbf22efeb88ff62310cf885c5b09f44ae0fdd" + integrity sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A== "@webpack-cli/serve@^2.0.5": - "integrity" "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==" - "resolved" "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz" - "version" "2.0.5" + version "2.0.5" + resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-2.0.5.tgz#325db42395cd49fe6c14057f9a900e427df8810e" + integrity sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ== "@xmldom/xmldom@^0.8.8": - "integrity" "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==" - "resolved" "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz" - "version" "0.8.10" + version "0.8.10" + resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.8.10.tgz#a1337ca426aa61cef9fe15b5b28e340a72f6fa99" + integrity sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw== "@xtuc/ieee754@^1.2.0": - "integrity" "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" - "resolved" "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz" - "version" "1.2.0" + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== "@xtuc/long@4.2.2": - "integrity" "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" - "resolved" "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz" - "version" "4.2.2" + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +abab@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" + integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== + +abbrev@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +acorn-globals@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-7.0.1.tgz#0dbf05c44fa7c94332914c02066d5beff62c40c3" + integrity sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q== + dependencies: + acorn "^8.1.0" + acorn-walk "^8.0.2" + +acorn-import-assertions@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" + integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn-walk@^8.0.0, acorn-walk@^8.0.2, acorn-walk@^8.1.1: + version "8.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" + integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== + +acorn@^8.0.4, acorn@^8.1.0, acorn@^8.4.1, acorn@^8.7.1, acorn@^8.8.1, acorn@^8.8.2, acorn@^8.9.0: + version "8.10.0" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz" + integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== + +address@^1.0.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/address/-/address-1.2.2.tgz#2b5248dac5485a6390532c6a517fda2e3faac89e" + integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA== + +agent-base@6, agent-base@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + +agentkeepalive@^4.2.1: + version "4.5.0" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.5.0.tgz#2673ad1389b3c418c5a20c5d7364f93ca04be923" + integrity sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew== + dependencies: + humanize-ms "^1.2.1" + +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ajv-formats@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" + integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== + dependencies: + ajv "^8.0.0" + +ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv-keywords@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" + integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== + dependencies: + fast-deep-equal "^3.1.3" + +ajv@^6.10.0, ajv@^6.12.0, ajv@^6.12.4, ajv@^6.12.5: + version "6.12.6" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + 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" + +ajv@^8.0.0, ajv@^8.9.0: + version "8.12.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" + integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: + version "4.3.2" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-html-community@^0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" + integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-regex@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + 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" + +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + +ansi-styles@^6.0.0: + version "6.1.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.1.0.tgz" + integrity sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ== -"7zip-bin@~5.1.1": - "integrity" "sha512-sAP4LldeWNz0lNzmTird3uWfFDWWTeg6V/MsmyyLR9X1idwKBWIgt/ZvinqQldJm3LecKEs1emkbquO6PCiLVQ==" - "resolved" "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.1.1.tgz" - "version" "5.1.1" - -"abab@^2.0.6": - "integrity" "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==" - "resolved" "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz" - "version" "2.0.6" - -"abbrev@^1.0.0": - "integrity" "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" - "resolved" "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz" - "version" "1.1.1" - -"abort-controller@^3.0.0": - "integrity" "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==" - "resolved" "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "event-target-shim" "^5.0.0" - -"accepts@~1.3.4", "accepts@~1.3.5", "accepts@~1.3.8": - "integrity" "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==" - "resolved" "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz" - "version" "1.3.8" - dependencies: - "mime-types" "~2.1.34" - "negotiator" "0.6.3" - -"acorn-globals@^7.0.0": - "integrity" "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==" - "resolved" "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz" - "version" "7.0.1" - dependencies: - "acorn" "^8.1.0" - "acorn-walk" "^8.0.2" - -"acorn-import-assertions@^1.9.0": - "integrity" "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==" - "resolved" "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz" - "version" "1.9.0" - -"acorn-jsx@^5.3.2": - "integrity" "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==" - "resolved" "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" - "version" "5.3.2" - -"acorn-walk@^8.0.0", "acorn-walk@^8.0.2", "acorn-walk@^8.1.1": - "integrity" "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==" - "resolved" "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz" - "version" "8.2.0" - -"acorn@^6.0.0 || ^7.0.0 || ^8.0.0": - "integrity" "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" - "resolved" "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" - "version" "7.4.1" - -"acorn@^8.0.4": - "integrity" "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==" - "resolved" "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz" - "version" "8.10.0" - -"acorn@^8.1.0": - "integrity" "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==" - "resolved" "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz" - "version" "8.10.0" - -"acorn@^8.4.1": - "integrity" "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==" - "resolved" "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz" - "version" "8.10.0" - -"acorn@^8.8.1": - "integrity" "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==" - "resolved" "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz" - "version" "8.10.0" - -"acorn@^8.8.2": - "integrity" "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==" - "resolved" "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz" - "version" "8.10.0" - -"acorn@^8.9.0": - "integrity" "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==" - "resolved" "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz" - "version" "8.10.0" - -"acorn@^8", "acorn@^8.7.1": - "integrity" "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==" - "resolved" "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz" - "version" "8.10.0" - -"address@^1.0.1": - "integrity" "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==" - "resolved" "https://registry.npmjs.org/address/-/address-1.2.2.tgz" - "version" "1.2.2" - -"agent-base@^6.0.2", "agent-base@6": - "integrity" "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==" - "resolved" "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" - "version" "6.0.2" - dependencies: - "debug" "4" - -"agentkeepalive@^4.2.1": - "integrity" "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==" - "resolved" "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz" - "version" "4.5.0" - dependencies: - "humanize-ms" "^1.2.1" - -"aggregate-error@^3.0.0": - "integrity" "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==" - "resolved" "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "clean-stack" "^2.0.0" - "indent-string" "^4.0.0" - -"ajv-formats@^2.1.1": - "integrity" "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==" - "resolved" "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz" - "version" "2.1.1" - dependencies: - "ajv" "^8.0.0" - -"ajv-keywords@^3.4.1": - "integrity" "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" - "resolved" "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" - "version" "3.5.2" - -"ajv-keywords@^3.5.2": - "integrity" "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" - "resolved" "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" - "version" "3.5.2" - -"ajv-keywords@^5.1.0": - "integrity" "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==" - "resolved" "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz" - "version" "5.1.0" - dependencies: - "fast-deep-equal" "^3.1.3" - -"ajv@^6.10.0": - "integrity" "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==" - "resolved" "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" - "version" "6.12.6" - 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" - -"ajv@^6.12.0", "ajv@^6.12.4", "ajv@^6.12.5", "ajv@^6.9.1": - "integrity" "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==" - "resolved" "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" - "version" "6.12.6" - 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" - -"ajv@^8.0.0", "ajv@^8.8.2", "ajv@^8.9.0": - "integrity" "sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==" - "resolved" "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz" - "version" "8.9.0" - dependencies: - "fast-deep-equal" "^3.1.1" - "json-schema-traverse" "^1.0.0" - "require-from-string" "^2.0.2" - "uri-js" "^4.2.2" - -"ansi-colors@^4.1.1": - "integrity" "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==" - "resolved" "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz" - "version" "4.1.3" - -"ansi-escapes@^4.2.1", "ansi-escapes@^4.3.0": - "integrity" "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==" - "resolved" "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" - "version" "4.3.2" - dependencies: - "type-fest" "^0.21.3" - -"ansi-html-community@^0.0.8": - "integrity" "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==" - "resolved" "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz" - "version" "0.0.8" - -"ansi-regex@^5.0.1": - "integrity" "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" - "version" "5.0.1" - -"ansi-regex@^6.0.1": - "integrity" "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" - "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz" - "version" "6.0.1" - -"ansi-styles@^3.2.1": - "integrity" "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==" - "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" - "version" "3.2.1" - dependencies: - "color-convert" "^1.9.0" - -"ansi-styles@^4.0.0", "ansi-styles@^4.1.0": - "integrity" "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==" - "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" - "version" "4.3.0" - dependencies: - "color-convert" "^2.0.1" - -"ansi-styles@^5.0.0": - "integrity" "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" - "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" - "version" "5.2.0" - -"ansi-styles@^6.0.0": - "integrity" "sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==" - "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.1.0.tgz" - "version" "6.1.0" - -"ansi-styles@^6.1.0": - "integrity" "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==" - "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" - "version" "6.2.1" - -"ansi-to-html@^0.7.2": - "integrity" "sha512-v6MqmEpNlxF+POuyhKkidusCHWWkaLcGRURzivcU3I9tv7k4JVhFcnukrM5Rlk2rUywdZuzYAZ+kbZqWCnfN3g==" - "resolved" "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.7.2.tgz" - "version" "0.7.2" - dependencies: - "entities" "^2.2.0" - -"anymatch@^3.0.3", "anymatch@~3.1.2": - "integrity" "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==" - "resolved" "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" - "version" "3.1.3" - dependencies: - "normalize-path" "^3.0.0" - "picomatch" "^2.0.4" - -"app-builder-bin@4.0.0": - "integrity" "sha512-xwdG0FJPQMe0M0UA4Tz0zEB8rBJTRA5a476ZawAqiBkMv16GRK5xpXThOjMaEOFnZ6zabejjG4J3da0SXG63KA==" - "resolved" "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-4.0.0.tgz" - "version" "4.0.0" - -"app-builder-lib@24.6.4": - "integrity" "sha512-m9931WXb83teb32N0rKg+ulbn6+Hl8NV5SUpVDOVz9MWOXfhV6AQtTdftf51zJJvCQnQugGtSqoLvgw6mdF/Rg==" - "resolved" "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-24.6.4.tgz" - "version" "24.6.4" +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + +ansi-to-html@^0.7.2: + version "0.7.2" + resolved "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.7.2.tgz" + integrity sha512-v6MqmEpNlxF+POuyhKkidusCHWWkaLcGRURzivcU3I9tv7k4JVhFcnukrM5Rlk2rUywdZuzYAZ+kbZqWCnfN3g== + dependencies: + entities "^2.2.0" + +anymatch@^3.0.3, anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +app-builder-bin@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/app-builder-bin/-/app-builder-bin-4.0.0.tgz#1df8e654bd1395e4a319d82545c98667d7eed2f0" + integrity sha512-xwdG0FJPQMe0M0UA4Tz0zEB8rBJTRA5a476ZawAqiBkMv16GRK5xpXThOjMaEOFnZ6zabejjG4J3da0SXG63KA== + +app-builder-lib@24.6.4: + version "24.6.4" + resolved "https://registry.yarnpkg.com/app-builder-lib/-/app-builder-lib-24.6.4.tgz#5bf77dd89d3ee557bc615b9ddfaf383f3e51577b" + integrity sha512-m9931WXb83teb32N0rKg+ulbn6+Hl8NV5SUpVDOVz9MWOXfhV6AQtTdftf51zJJvCQnQugGtSqoLvgw6mdF/Rg== dependencies: + "7zip-bin" "~5.1.1" "@develar/schema-utils" "~2.6.5" "@electron/notarize" "2.1.0" "@electron/osx-sign" "1.0.5" "@electron/universal" "1.4.1" "@malept/flatpak-bundler" "^0.4.0" "@types/fs-extra" "9.0.13" - "7zip-bin" "~5.1.1" - "async-exit-hook" "^2.0.1" - "bluebird-lst" "^1.0.9" - "builder-util" "24.5.0" - "builder-util-runtime" "9.2.1" - "chromium-pickle-js" "^0.2.0" - "debug" "^4.3.4" - "ejs" "^3.1.8" - "electron-publish" "24.5.0" - "form-data" "^4.0.0" - "fs-extra" "^10.1.0" - "hosted-git-info" "^4.1.0" - "is-ci" "^3.0.0" - "isbinaryfile" "^5.0.0" - "js-yaml" "^4.1.0" - "lazy-val" "^1.0.5" - "minimatch" "^5.1.1" - "read-config-file" "6.3.2" - "sanitize-filename" "^1.6.3" - "semver" "^7.3.8" - "tar" "^6.1.12" - "temp-file" "^3.4.0" + async-exit-hook "^2.0.1" + bluebird-lst "^1.0.9" + builder-util "24.5.0" + builder-util-runtime "9.2.1" + chromium-pickle-js "^0.2.0" + debug "^4.3.4" + ejs "^3.1.8" + electron-publish "24.5.0" + form-data "^4.0.0" + fs-extra "^10.1.0" + hosted-git-info "^4.1.0" + is-ci "^3.0.0" + isbinaryfile "^5.0.0" + js-yaml "^4.1.0" + lazy-val "^1.0.5" + minimatch "^5.1.1" + read-config-file "6.3.2" + sanitize-filename "^1.6.3" + semver "^7.3.8" + tar "^6.1.12" + temp-file "^3.4.0" "aproba@^1.0.3 || ^2.0.0": - "integrity" "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" - "resolved" "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz" - "version" "2.0.0" - -"are-we-there-yet@^3.0.0": - "integrity" "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==" - "resolved" "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "delegates" "^1.0.0" - "readable-stream" "^3.6.0" - -"arg@^4.1.0": - "integrity" "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" - "resolved" "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz" - "version" "4.1.3" - -"argparse@^1.0.7": - "integrity" "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==" - "resolved" "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" - "version" "1.0.10" - dependencies: - "sprintf-js" "~1.0.2" - -"argparse@^2.0.1": - "integrity" "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - "resolved" "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" - "version" "2.0.1" - -"aria-query@^5.0.0", "aria-query@^5.1.3": - "integrity" "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==" - "resolved" "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz" - "version" "5.3.0" - dependencies: - "dequal" "^2.0.3" - -"aria-query@5.1.3": - "integrity" "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==" - "resolved" "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz" - "version" "5.1.3" - dependencies: - "deep-equal" "^2.0.5" - -"array-buffer-byte-length@^1.0.0": - "integrity" "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==" - "resolved" "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "call-bind" "^1.0.2" - "is-array-buffer" "^3.0.1" - -"array-flatten@^2.1.2": - "integrity" "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" - "resolved" "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz" - "version" "2.1.2" - -"array-flatten@1.1.1": - "integrity" "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" - "resolved" "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" - "version" "1.1.1" - -"array-includes@^3.1.6": - "integrity" "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==" - "resolved" "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz" - "version" "3.1.7" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.2.0" - "es-abstract" "^1.22.1" - "get-intrinsic" "^1.2.1" - "is-string" "^1.0.7" - -"array-union@^2.1.0": - "integrity" "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" - "resolved" "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" - "version" "2.1.0" - -"array.prototype.find@^2.2.1": - "integrity" "sha512-DRumkfW97iZGOfn+lIXbkVrXL04sfYKX+EfOodo8XboR5sxPDVvOjZTF/rysusa9lmhmSOeD6Vp6RKQP+eP4Tg==" - "resolved" "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.2.2.tgz" - "version" "2.2.2" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.2.0" - "es-abstract" "^1.22.1" - "es-shim-unscopables" "^1.0.0" - -"array.prototype.findlastindex@^1.2.2": - "integrity" "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==" - "resolved" "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz" - "version" "1.2.3" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.2.0" - "es-abstract" "^1.22.1" - "es-shim-unscopables" "^1.0.0" - "get-intrinsic" "^1.2.1" - -"array.prototype.flat@^1.3.1": - "integrity" "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==" - "resolved" "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz" - "version" "1.3.2" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.2.0" - "es-abstract" "^1.22.1" - "es-shim-unscopables" "^1.0.0" - -"array.prototype.flatmap@^1.3.1": - "integrity" "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==" - "resolved" "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz" - "version" "1.3.2" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.2.0" - "es-abstract" "^1.22.1" - "es-shim-unscopables" "^1.0.0" - -"array.prototype.tosorted@^1.1.1": - "integrity" "sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==" - "resolved" "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz" - "version" "1.1.2" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.2.0" - "es-abstract" "^1.22.1" - "es-shim-unscopables" "^1.0.0" - "get-intrinsic" "^1.2.1" - -"arraybuffer.prototype.slice@^1.0.2": - "integrity" "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==" - "resolved" "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "array-buffer-byte-length" "^1.0.0" - "call-bind" "^1.0.2" - "define-properties" "^1.2.0" - "es-abstract" "^1.22.1" - "get-intrinsic" "^1.2.1" - "is-array-buffer" "^3.0.2" - "is-shared-array-buffer" "^1.0.2" - -"asap@~2.0.3": - "integrity" "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" - "resolved" "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz" - "version" "2.0.6" - -"assert-plus@^1.0.0": - "integrity" "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==" - "resolved" "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" - "version" "1.0.0" - -"ast-metadata-inferer@^0.8.0": - "integrity" "sha512-jOMKcHht9LxYIEQu+RVd22vtgrPaVCtDRQ/16IGmurdzxvYbDd5ynxjnyrzLnieG96eTcAyaoj/wN/4/1FyyeA==" - "resolved" "https://registry.npmjs.org/ast-metadata-inferer/-/ast-metadata-inferer-0.8.0.tgz" - "version" "0.8.0" + version "2.0.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" + integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== + +are-we-there-yet@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz#679df222b278c64f2cdba1175cdc00b0d96164bd" + integrity sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg== + dependencies: + delegates "^1.0.0" + readable-stream "^3.6.0" + +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +aria-query@5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e" + integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== + dependencies: + deep-equal "^2.0.5" + +aria-query@^5.0.0, aria-query@^5.1.3: + version "5.3.0" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e" + integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== + dependencies: + dequal "^2.0.3" + +array-buffer-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" + integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== + dependencies: + call-bind "^1.0.2" + is-array-buffer "^3.0.1" + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== + +array-flatten@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" + integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== + +array-includes@^3.1.6: + version "3.1.7" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.7.tgz#8cd2e01b26f7a3086cbc87271593fe921c62abda" + integrity sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + is-string "^1.0.7" + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array.prototype.find@^2.2.1: + version "2.2.2" + resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.2.2.tgz#e862cf891e725d8f2a10e5e42d750629faaabd32" + integrity sha512-DRumkfW97iZGOfn+lIXbkVrXL04sfYKX+EfOodo8XboR5sxPDVvOjZTF/rysusa9lmhmSOeD6Vp6RKQP+eP4Tg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + +array.prototype.findlastindex@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz#b37598438f97b579166940814e2c0493a4f50207" + integrity sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + get-intrinsic "^1.2.1" + +array.prototype.flat@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" + integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + +array.prototype.flatmap@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" + integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + +array.prototype.tosorted@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz#620eff7442503d66c799d95503f82b475745cefd" + integrity sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + get-intrinsic "^1.2.1" + +arraybuffer.prototype.slice@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz#98bd561953e3e74bb34938e77647179dfe6e9f12" + integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw== + dependencies: + array-buffer-byte-length "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + is-array-buffer "^3.0.2" + is-shared-array-buffer "^1.0.2" + +asap@~2.0.3: + version "2.0.6" + resolved "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz" + integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== + +assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== + +ast-metadata-inferer@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/ast-metadata-inferer/-/ast-metadata-inferer-0.8.0.tgz#0f94c3425e310d8da45823ab2161142e3f134343" + integrity sha512-jOMKcHht9LxYIEQu+RVd22vtgrPaVCtDRQ/16IGmurdzxvYbDd5ynxjnyrzLnieG96eTcAyaoj/wN/4/1FyyeA== dependencies: "@mdn/browser-compat-data" "^5.2.34" -"ast-types-flow@^0.0.7": - "integrity" "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==" - "resolved" "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz" - "version" "0.0.7" +ast-types-flow@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" + integrity sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag== -"astral-regex@^2.0.0": - "integrity" "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==" - "resolved" "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz" - "version" "2.0.0" +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== -"async-exit-hook@^2.0.1": - "integrity" "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==" - "resolved" "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz" - "version" "2.0.1" +async-exit-hook@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/async-exit-hook/-/async-exit-hook-2.0.1.tgz#8bd8b024b0ec9b1c01cccb9af9db29bd717dfaf3" + integrity sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw== -"async@^3.2.3": - "integrity" "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" - "resolved" "https://registry.npmjs.org/async/-/async-3.2.4.tgz" - "version" "3.2.4" +async@^3.2.3: + version "3.2.4" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" + integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== -"asynciterator.prototype@^1.0.0": - "integrity" "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==" - "resolved" "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz" - "version" "1.0.0" +asynciterator.prototype@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz#8c5df0514936cdd133604dfcc9d3fb93f09b2b62" + integrity sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg== dependencies: - "has-symbols" "^1.0.3" + has-symbols "^1.0.3" -"asynckit@^0.4.0": - "integrity" "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - "resolved" "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" - "version" "0.4.0" +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== -"at-least-node@^1.0.0": - "integrity" "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" - "resolved" "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz" - "version" "1.0.0" +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== -"available-typed-arrays@^1.0.5": - "integrity" "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" - "resolved" "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz" - "version" "1.0.5" +available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== -"axe-core@^4.6.2": - "integrity" "sha512-/dlp0fxyM3R8YW7MFzaHWXrf4zzbr0vaYb23VBFCl83R7nWNPg/yaQw2Dc8jzCMmDVLhSdzH8MjrsuIUuvX+6g==" - "resolved" "https://registry.npmjs.org/axe-core/-/axe-core-4.8.2.tgz" - "version" "4.8.2" +axe-core@^4.6.2: + version "4.8.2" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.8.2.tgz#2f6f3cde40935825cf4465e3c1c9e77b240ff6ae" + integrity sha512-/dlp0fxyM3R8YW7MFzaHWXrf4zzbr0vaYb23VBFCl83R7nWNPg/yaQw2Dc8jzCMmDVLhSdzH8MjrsuIUuvX+6g== -"axios@^0.21.4": - "integrity" "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==" - "resolved" "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz" - "version" "0.21.4" +axios@^0.21.4: + version "0.21.4" + resolved "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz" + integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== dependencies: - "follow-redirects" "^1.14.0" + follow-redirects "^1.14.0" -"axobject-query@^3.1.1": - "integrity" "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==" - "resolved" "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz" - "version" "3.2.1" +axobject-query@^3.1.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.2.1.tgz#39c378a6e3b06ca679f29138151e45b2b32da62a" + integrity sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg== dependencies: - "dequal" "^2.0.3" + dequal "^2.0.3" -"babel-jest@^29.0.0", "babel-jest@^29.7.0": - "integrity" "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==" - "resolved" "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz" - "version" "29.7.0" +babel-jest@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5" + integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== dependencies: "@jest/transform" "^29.7.0" "@types/babel__core" "^7.1.14" - "babel-plugin-istanbul" "^6.1.1" - "babel-preset-jest" "^29.6.3" - "chalk" "^4.0.0" - "graceful-fs" "^4.2.9" - "slash" "^3.0.0" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^29.6.3" + chalk "^4.0.0" + graceful-fs "^4.2.9" + slash "^3.0.0" -"babel-plugin-istanbul@^6.1.1": - "integrity" "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==" - "resolved" "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz" - "version" "6.1.1" +babel-plugin-istanbul@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" + integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== 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" + istanbul-lib-instrument "^5.0.4" + test-exclude "^6.0.0" -"babel-plugin-jest-hoist@^29.6.3": - "integrity" "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==" - "resolved" "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz" - "version" "29.6.3" +babel-plugin-jest-hoist@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz#aadbe943464182a8922c3c927c3067ff40d24626" + integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg== dependencies: "@babel/template" "^7.3.3" "@babel/types" "^7.3.3" "@types/babel__core" "^7.1.14" "@types/babel__traverse" "^7.0.6" -"babel-plugin-macros@^3.1.0": - "integrity" "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==" - "resolved" "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "@babel/runtime" "^7.12.5" - "cosmiconfig" "^7.0.0" - "resolve" "^1.19.0" - -"babel-plugin-polyfill-corejs2@^0.4.5": - "integrity" "sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==" - "resolved" "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz" - "version" "0.4.6" +babel-plugin-polyfill-corejs2@^0.4.6: + version "0.4.6" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz#b2df0251d8e99f229a8e60fc4efa9a68b41c8313" + integrity sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q== dependencies: "@babel/compat-data" "^7.22.6" "@babel/helper-define-polyfill-provider" "^0.4.3" - "semver" "^6.3.1" + semver "^6.3.1" -"babel-plugin-polyfill-corejs3@^0.8.3": - "integrity" "sha512-Q6CdATeAvbScWPNLB8lzSO7fgUVBkQt6zLgNlfyeCr/EQaEQR+bWiBYYPYAFyE528BMjRhL+1QBMOI4jc/c5TA==" - "resolved" "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.5.tgz" - "version" "0.8.5" +babel-plugin-polyfill-corejs3@^0.8.5: + version "0.8.5" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.5.tgz#a75fa1b0c3fc5bd6837f9ec465c0f48031b8cab1" + integrity sha512-Q6CdATeAvbScWPNLB8lzSO7fgUVBkQt6zLgNlfyeCr/EQaEQR+bWiBYYPYAFyE528BMjRhL+1QBMOI4jc/c5TA== dependencies: "@babel/helper-define-polyfill-provider" "^0.4.3" - "core-js-compat" "^3.32.2" + core-js-compat "^3.32.2" -"babel-plugin-polyfill-regenerator@^0.5.2": - "integrity" "sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==" - "resolved" "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz" - "version" "0.5.3" +babel-plugin-polyfill-regenerator@^0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz#d4c49e4b44614607c13fb769bcd85c72bb26a4a5" + integrity sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw== dependencies: "@babel/helper-define-polyfill-provider" "^0.4.3" -"babel-preset-current-node-syntax@^1.0.0": - "integrity" "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==" - "resolved" "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz" - "version" "1.0.1" +babel-preset-current-node-syntax@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" + integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== dependencies: "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-bigint" "^7.8.3" @@ -3625,503 +3499,500 @@ "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-top-level-await" "^7.8.3" -"babel-preset-jest@^29.6.3": - "integrity" "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==" - "resolved" "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz" - "version" "29.6.3" - dependencies: - "babel-plugin-jest-hoist" "^29.6.3" - "babel-preset-current-node-syntax" "^1.0.0" - -"balanced-match@^1.0.0": - "integrity" "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - "resolved" "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" - "version" "1.0.2" - -"base16@^1.0.0": - "integrity" "sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ==" - "resolved" "https://registry.npmjs.org/base16/-/base16-1.0.0.tgz" - "version" "1.0.0" - -"base64-js@^1.3.1", "base64-js@^1.5.1": - "integrity" "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - "resolved" "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" - "version" "1.5.1" - -"batch@0.6.1": - "integrity" "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==" - "resolved" "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz" - "version" "0.6.1" - -"big-integer@^1.6.44": - "integrity" "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==" - "resolved" "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz" - "version" "1.6.51" - -"big.js@^5.2.2": - "integrity" "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" - "resolved" "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz" - "version" "5.2.2" - -"binary-extensions@^2.0.0": - "integrity" "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" - "resolved" "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" - "version" "2.2.0" - -"bl@^4.1.0": - "integrity" "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==" - "resolved" "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "buffer" "^5.5.0" - "inherits" "^2.0.4" - "readable-stream" "^3.4.0" - -"bluebird-lst@^1.0.9": - "integrity" "sha512-7B1Rtx82hjnSD4PGLAjVWeYH3tHAcVUmChh85a3lltKQm6FresXh9ErQo6oAv6CqxttczC3/kEg8SY5NluPuUw==" - "resolved" "https://registry.npmjs.org/bluebird-lst/-/bluebird-lst-1.0.9.tgz" - "version" "1.0.9" - dependencies: - "bluebird" "^3.5.5" - -"bluebird@^3.5.5": - "integrity" "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - "resolved" "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz" - "version" "3.7.2" - -"bn.js@^4.11.9": - "integrity" "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" - "version" "4.12.0" - -"body-parser@1.20.1": - "integrity" "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==" - "resolved" "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz" - "version" "1.20.1" - dependencies: - "bytes" "3.1.2" - "content-type" "~1.0.4" - "debug" "2.6.9" - "depd" "2.0.0" - "destroy" "1.2.0" - "http-errors" "2.0.0" - "iconv-lite" "0.4.24" - "on-finished" "2.4.1" - "qs" "6.11.0" - "raw-body" "2.5.1" - "type-is" "~1.6.18" - "unpipe" "1.0.0" - -"bonjour-service@^1.0.11": - "integrity" "sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg==" - "resolved" "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.1.tgz" - "version" "1.1.1" - dependencies: - "array-flatten" "^2.1.2" - "dns-equal" "^1.0.0" - "fast-deep-equal" "^3.1.3" - "multicast-dns" "^7.2.5" - -"boolbase@^1.0.0": - "integrity" "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" - "resolved" "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" - "version" "1.0.0" - -"boolean@^3.0.1": - "integrity" "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==" - "resolved" "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz" - "version" "3.2.0" - -"bplist-parser@^0.2.0": - "integrity" "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==" - "resolved" "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz" - "version" "0.2.0" - dependencies: - "big-integer" "^1.6.44" - -"brace-expansion@^1.1.7": - "integrity" "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==" - "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" - "version" "1.1.11" - dependencies: - "balanced-match" "^1.0.0" - "concat-map" "0.0.1" - -"brace-expansion@^2.0.1": - "integrity" "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==" - "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "balanced-match" "^1.0.0" - -"braces@^3.0.2", "braces@~3.0.2": - "integrity" "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==" - "resolved" "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" - "version" "3.0.2" - dependencies: - "fill-range" "^7.0.1" - -"brorand@^1.1.0": - "integrity" "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" - "resolved" "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz" - "version" "1.1.0" - -"browserslist-config-erb@^0.0.3": - "integrity" "sha512-y47DryCY92lxkKyRVMlaZvXAolIY7U33q9e4CS0MdWeJkoAht7OzsrkfdZFCBOP3H5q1EVUxS0L7VVsKM6gZCQ==" - "resolved" "https://registry.npmjs.org/browserslist-config-erb/-/browserslist-config-erb-0.0.3.tgz" - "version" "0.0.3" - -"browserslist@^4.0.0", "browserslist@^4.14.5", "browserslist@^4.21.10", "browserslist@^4.21.4", "browserslist@^4.21.9", "browserslist@^4.22.1", "browserslist@>= 4.21.0": - "integrity" "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==" - "resolved" "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz" - "version" "4.22.1" - dependencies: - "caniuse-lite" "^1.0.30001541" - "electron-to-chromium" "^1.4.535" - "node-releases" "^2.0.13" - "update-browserslist-db" "^1.0.13" - -"bs-logger@0.x": - "integrity" "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==" - "resolved" "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz" - "version" "0.2.6" - dependencies: - "fast-json-stable-stringify" "2.x" - -"bser@2.1.1": - "integrity" "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==" - "resolved" "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz" - "version" "2.1.1" - dependencies: - "node-int64" "^0.4.0" - -"buffer-crc32@~0.2.3": - "integrity" "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==" - "resolved" "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz" - "version" "0.2.13" - -"buffer-equal@^1.0.0": - "integrity" "sha512-tcBWO2Dl4e7Asr9hTGcpVrCe+F7DubpmqWCTbj4FHLmjqO2hIaC383acQubWtRJhdceqs5uBHs6Es+Sk//RKiQ==" - "resolved" "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz" - "version" "1.0.0" - -"buffer-from@^1.0.0": - "integrity" "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - "resolved" "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" - "version" "1.1.2" - -"buffer@^5.1.0": - "integrity" "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==" - "resolved" "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" - "version" "5.7.1" - dependencies: - "base64-js" "^1.3.1" - "ieee754" "^1.1.13" - -"buffer@^5.5.0": - "integrity" "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==" - "resolved" "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" - "version" "5.7.1" - dependencies: - "base64-js" "^1.3.1" - "ieee754" "^1.1.13" +babel-preset-jest@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz#fa05fa510e7d493896d7b0dd2033601c840f171c" + integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA== + dependencies: + babel-plugin-jest-hoist "^29.6.3" + babel-preset-current-node-syntax "^1.0.0" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base16@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/base16/-/base16-1.0.0.tgz" + integrity sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ== + +base64-js@^1.3.1, base64-js@^1.5.1: + version "1.5.1" + resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + integrity sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw== + +big-integer@^1.6.44: + version "1.6.51" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" + integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +bl@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + +bluebird-lst@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/bluebird-lst/-/bluebird-lst-1.0.9.tgz#a64a0e4365658b9ab5fe875eb9dfb694189bb41c" + integrity sha512-7B1Rtx82hjnSD4PGLAjVWeYH3tHAcVUmChh85a3lltKQm6FresXh9ErQo6oAv6CqxttczC3/kEg8SY5NluPuUw== + dependencies: + bluebird "^3.5.5" + +bluebird@^3.5.5: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +bn.js@^4.11.9: + version "4.12.0" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + +body-parser@1.20.1: + version "1.20.1" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" + integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== + dependencies: + bytes "3.1.2" + content-type "~1.0.4" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.11.0" + raw-body "2.5.1" + type-is "~1.6.18" + unpipe "1.0.0" + +bonjour-service@^1.0.11: + version "1.1.1" + resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.1.1.tgz#960948fa0e0153f5d26743ab15baf8e33752c135" + integrity sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg== + dependencies: + array-flatten "^2.1.2" + dns-equal "^1.0.0" + fast-deep-equal "^3.1.3" + multicast-dns "^7.2.5" + +boolbase@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== + +boolean@^3.0.1: + version "3.2.0" + resolved "https://registry.yarnpkg.com/boolean/-/boolean-3.2.0.tgz#9e5294af4e98314494cbb17979fa54ca159f116b" + integrity sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw== + +bplist-parser@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/bplist-parser/-/bplist-parser-0.2.0.tgz#43a9d183e5bf9d545200ceac3e712f79ebbe8d0e" + integrity sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw== + dependencies: + big-integer "^1.6.44" + +brace-expansion@^1.1.7: + 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" + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.2, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz" + integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== + +browserslist-config-erb@^0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/browserslist-config-erb/-/browserslist-config-erb-0.0.3.tgz#db7f06fe5b1ce2ab9f09e78ac4d5a9f572e188a4" + integrity sha512-y47DryCY92lxkKyRVMlaZvXAolIY7U33q9e4CS0MdWeJkoAht7OzsrkfdZFCBOP3H5q1EVUxS0L7VVsKM6gZCQ== + +browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.21.9, browserslist@^4.22.1: + version "4.22.1" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz" + integrity sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ== + dependencies: + caniuse-lite "^1.0.30001541" + electron-to-chromium "^1.4.535" + node-releases "^2.0.13" + update-browserslist-db "^1.0.13" + +bs-logger@0.x: + version "0.2.6" + resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" + integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== + dependencies: + fast-json-stable-stringify "2.x" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +buffer-crc32@~0.2.3: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== + +buffer-equal@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.1.tgz#2f7651be5b1b3f057fcd6e7ee16cf34767077d90" + integrity sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg== + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer@6.0.3, buffer@^6.0.3: + version "6.0.3" + resolved "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + +buffer@^5.1.0, buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" -"buffer@^6.0.3", "buffer@6.0.3": - "integrity" "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==" - "resolved" "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz" - "version" "6.0.3" +builder-util-runtime@9.2.1: + version "9.2.1" + resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-9.2.1.tgz#3184dcdf7ed6c47afb8df733813224ced4f624fd" + integrity sha512-2rLv/uQD2x+dJ0J3xtsmI12AlRyk7p45TEbE/6o/fbb633e/S3pPgm+ct+JHsoY7r39dKHnGEFk/AASRFdnXmA== dependencies: - "base64-js" "^1.3.1" - "ieee754" "^1.2.1" + debug "^4.3.4" + sax "^1.2.4" -"builder-util-runtime@9.2.1": - "integrity" "sha512-2rLv/uQD2x+dJ0J3xtsmI12AlRyk7p45TEbE/6o/fbb633e/S3pPgm+ct+JHsoY7r39dKHnGEFk/AASRFdnXmA==" - "resolved" "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.2.1.tgz" - "version" "9.2.1" +builder-util@24.5.0: + version "24.5.0" + resolved "https://registry.yarnpkg.com/builder-util/-/builder-util-24.5.0.tgz#8683c9a7a1c5c9f9a4c4d2789ecca0e47dddd3f9" + integrity sha512-STnBmZN/M5vGcv01u/K8l+H+kplTaq4PAIn3yeuufUKSpcdro0DhJWxPI81k5XcNfC//bjM3+n9nr8F9uV4uAQ== dependencies: - "debug" "^4.3.4" - "sax" "^1.2.4" - -"builder-util@24.5.0": - "integrity" "sha512-STnBmZN/M5vGcv01u/K8l+H+kplTaq4PAIn3yeuufUKSpcdro0DhJWxPI81k5XcNfC//bjM3+n9nr8F9uV4uAQ==" - "resolved" "https://registry.npmjs.org/builder-util/-/builder-util-24.5.0.tgz" - "version" "24.5.0" - dependencies: - "@types/debug" "^4.1.6" "7zip-bin" "~5.1.1" - "app-builder-bin" "4.0.0" - "bluebird-lst" "^1.0.9" - "builder-util-runtime" "9.2.1" - "chalk" "^4.1.2" - "cross-spawn" "^7.0.3" - "debug" "^4.3.4" - "fs-extra" "^10.1.0" - "http-proxy-agent" "^5.0.0" - "https-proxy-agent" "^5.0.1" - "is-ci" "^3.0.0" - "js-yaml" "^4.1.0" - "source-map-support" "^0.5.19" - "stat-mode" "^1.0.0" - "temp-file" "^3.4.0" - -"bundle-name@^3.0.0": - "integrity" "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==" - "resolved" "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "run-applescript" "^5.0.0" - -"bytes@3.0.0": - "integrity" "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==" - "resolved" "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz" - "version" "3.0.0" - -"bytes@3.1.2": - "integrity" "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" - "resolved" "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" - "version" "3.1.2" - -"cacache@^17.0.0": - "integrity" "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==" - "resolved" "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz" - "version" "17.1.4" + "@types/debug" "^4.1.6" + app-builder-bin "4.0.0" + bluebird-lst "^1.0.9" + builder-util-runtime "9.2.1" + chalk "^4.1.2" + cross-spawn "^7.0.3" + debug "^4.3.4" + fs-extra "^10.1.0" + http-proxy-agent "^5.0.0" + https-proxy-agent "^5.0.1" + is-ci "^3.0.0" + js-yaml "^4.1.0" + source-map-support "^0.5.19" + stat-mode "^1.0.0" + temp-file "^3.4.0" + +bundle-name@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bundle-name/-/bundle-name-3.0.0.tgz#ba59bcc9ac785fb67ccdbf104a2bf60c099f0e1a" + integrity sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw== + dependencies: + run-applescript "^5.0.0" + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== + +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + +cacache@^17.0.0: + version "17.1.4" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-17.1.4.tgz#b3ff381580b47e85c6e64f801101508e26604b35" + integrity sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A== dependencies: "@npmcli/fs" "^3.1.0" - "fs-minipass" "^3.0.0" - "glob" "^10.2.2" - "lru-cache" "^7.7.1" - "minipass" "^7.0.3" - "minipass-collect" "^1.0.2" - "minipass-flush" "^1.0.5" - "minipass-pipeline" "^1.2.4" - "p-map" "^4.0.0" - "ssri" "^10.0.0" - "tar" "^6.1.11" - "unique-filename" "^3.0.0" - -"cacheable-lookup@^5.0.3": - "integrity" "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==" - "resolved" "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz" - "version" "5.0.4" - -"cacheable-request@^7.0.2": - "integrity" "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==" - "resolved" "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz" - "version" "7.0.4" - dependencies: - "clone-response" "^1.0.2" - "get-stream" "^5.1.0" - "http-cache-semantics" "^4.0.0" - "keyv" "^4.0.0" - "lowercase-keys" "^2.0.0" - "normalize-url" "^6.0.1" - "responselike" "^2.0.0" - -"call-bind@^1.0.0", "call-bind@^1.0.2": - "integrity" "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==" - "resolved" "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "function-bind" "^1.1.1" - "get-intrinsic" "^1.0.2" - -"callsites@^3.0.0": - "integrity" "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" - "resolved" "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" - "version" "3.1.0" - -"camel-case@^4.1.2": - "integrity" "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==" - "resolved" "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz" - "version" "4.1.2" - dependencies: - "pascal-case" "^3.1.2" - "tslib" "^2.0.3" - -"camelcase@^5.3.1": - "integrity" "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" - "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" - "version" "5.3.1" - -"camelcase@^6.2.0": - "integrity" "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" - "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" - "version" "6.3.0" - -"caniuse-api@^3.0.0": - "integrity" "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==" - "resolved" "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "browserslist" "^4.0.0" - "caniuse-lite" "^1.0.0" - "lodash.memoize" "^4.1.2" - "lodash.uniq" "^4.5.0" - -"caniuse-lite@^1.0.0", "caniuse-lite@^1.0.30001524", "caniuse-lite@^1.0.30001541": - "integrity" "sha512-zvtSJwuQFpewSyRrI3AsftF6rM0X80mZkChIt1spBGEvRglCrjTniXvinc8JKRoqTwXAgvqTImaN9igfSMtUBw==" - "resolved" "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001546.tgz" - "version" "1.0.30001546" - -"chalk@^2.4.2": - "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" - "version" "2.4.2" - dependencies: - "ansi-styles" "^3.2.1" - "escape-string-regexp" "^1.0.5" - "supports-color" "^5.3.0" - -"chalk@^3.0.0": - "integrity" "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "ansi-styles" "^4.1.0" - "supports-color" "^7.1.0" - -"chalk@^4.0.0", "chalk@^4.0.2", "chalk@^4.1.0", "chalk@^4.1.2": - "integrity" "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" - "version" "4.1.2" - dependencies: - "ansi-styles" "^4.1.0" - "supports-color" "^7.1.0" - -"char-regex@^1.0.2": - "integrity" "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==" - "resolved" "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz" - "version" "1.0.2" - -"chokidar@^3.5.3", "chokidar@>=3.0.0 <4.0.0": - "integrity" "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==" - "resolved" "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" - "version" "3.5.3" - 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" + fs-minipass "^3.0.0" + glob "^10.2.2" + lru-cache "^7.7.1" + minipass "^7.0.3" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + p-map "^4.0.0" + ssri "^10.0.0" + tar "^6.1.11" + unique-filename "^3.0.0" + +cacheable-lookup@^5.0.3: + version "5.0.4" + resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" + integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== + +cacheable-request@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.4.tgz#7a33ebf08613178b403635be7b899d3e69bbe817" + integrity sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg== + dependencies: + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^4.0.0" + lowercase-keys "^2.0.0" + normalize-url "^6.0.1" + responselike "^2.0.0" + +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camel-case@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" + integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== + dependencies: + pascal-case "^3.1.2" + tslib "^2.0.3" + +camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.2.0: + version "6.3.0" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001524: + version "1.0.30001549" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001549.tgz#7d1a3dce7ea78c06ed72c32c2743ea364b3615aa" + integrity sha512-qRp48dPYSCYaP+KurZLhDYdVE+yEyht/3NlmcJgVQ2VMGt6JL36ndQ/7rgspdZsJuxDPFIo/OzBT2+GmIJ53BA== + +caniuse-lite@^1.0.30001541: + version "1.0.30001546" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001546.tgz" + integrity sha512-zvtSJwuQFpewSyRrI3AsftF6rM0X80mZkChIt1spBGEvRglCrjTniXvinc8JKRoqTwXAgvqTImaN9igfSMtUBw== + +chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + +"chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.3: + version "3.5.3" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + 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" optionalDependencies: - "fsevents" "~2.3.2" - -"chownr@^2.0.0": - "integrity" "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" - "resolved" "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz" - "version" "2.0.0" - -"chrome-trace-event@^1.0.2": - "integrity" "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==" - "resolved" "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz" - "version" "1.0.3" - -"chromium-pickle-js@^0.2.0": - "integrity" "sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==" - "resolved" "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz" - "version" "0.2.0" - -"ci-info@^3.2.0": - "integrity" "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==" - "resolved" "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz" - "version" "3.9.0" - -"cjs-module-lexer@^1.0.0": - "integrity" "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==" - "resolved" "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz" - "version" "1.2.3" - -"classnames@^2.3.1", "classnames@^2.3.2": - "integrity" "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" - "resolved" "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz" - "version" "2.3.2" - -"clean-css@^5.2.2": - "integrity" "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==" - "resolved" "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz" - "version" "5.3.2" - dependencies: - "source-map" "~0.6.0" - -"clean-stack@^2.0.0": - "integrity" "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" - "resolved" "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz" - "version" "2.2.0" - -"cli-cursor@^3.1.0": - "integrity" "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==" - "resolved" "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "restore-cursor" "^3.1.0" - -"cli-spinners@^2.5.0": - "integrity" "sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==" - "resolved" "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.1.tgz" - "version" "2.9.1" - -"cli-truncate@^2.1.0": - "integrity" "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==" - "resolved" "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "slice-ansi" "^3.0.0" - "string-width" "^4.2.0" - -"cli-truncate@^3.1.0": - "integrity" "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==" - "resolved" "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "slice-ansi" "^5.0.0" - "string-width" "^5.0.0" - -"client-only@^0.0.1": - "integrity" "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" - "resolved" "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz" - "version" "0.0.1" - -"cliui@^8.0.1": - "integrity" "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==" - "resolved" "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" - "version" "8.0.1" - dependencies: - "string-width" "^4.2.0" - "strip-ansi" "^6.0.1" - "wrap-ansi" "^7.0.0" - -"clone-deep@^4.0.1": - "integrity" "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==" - "resolved" "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz" - "version" "4.0.1" - dependencies: - "is-plain-object" "^2.0.4" - "kind-of" "^6.0.2" - "shallow-clone" "^3.0.0" - -"clone-response@^1.0.2": - "integrity" "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==" - "resolved" "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz" - "version" "1.0.3" - dependencies: - "mimic-response" "^1.0.0" - -"clone@^1.0.2": - "integrity" "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==" - "resolved" "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz" - "version" "1.0.4" - -"co@^4.6.0": - "integrity" "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==" - "resolved" "https://registry.npmjs.org/co/-/co-4.6.0.tgz" - "version" "4.6.0" - -"codemirror@^6.0.0": - "integrity" "sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==" - "resolved" "https://registry.npmjs.org/codemirror/-/codemirror-6.0.1.tgz" - "version" "6.0.1" + fsevents "~2.3.2" + +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + +chrome-trace-event@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" + integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== + +chromium-pickle-js@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz#04a106672c18b085ab774d983dfa3ea138f22205" + integrity sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw== + +ci-info@^3.2.0: + version "3.9.0" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz" + integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== + +cjs-module-lexer@^1.0.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz#6c370ab19f8a3394e318fe682686ec0ac684d107" + integrity sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ== + +classnames@^2.3.2: + version "2.3.2" + resolved "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz" + integrity sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw== + +clean-css@^5.2.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.2.tgz#70ecc7d4d4114921f5d298349ff86a31a9975224" + integrity sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww== + dependencies: + source-map "~0.6.0" + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-spinners@^2.5.0: + version "2.9.1" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.1.tgz#9c0b9dad69a6d47cbb4333c14319b060ed395a35" + integrity sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ== + +cli-truncate@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz" + integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== + dependencies: + slice-ansi "^3.0.0" + string-width "^4.2.0" + +cli-truncate@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz" + integrity sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA== + dependencies: + slice-ansi "^5.0.0" + string-width "^5.0.0" + +client-only@^0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz" + integrity sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA== + +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + +clone-response@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3" + integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA== + dependencies: + mimic-response "^1.0.0" + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== + +codemirror@^6.0.0: + version "6.0.1" + resolved "https://registry.npmjs.org/codemirror/-/codemirror-6.0.1.tgz" + integrity sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg== dependencies: "@codemirror/autocomplete" "^6.0.0" "@codemirror/commands" "^6.0.0" @@ -4131,1554 +4002,1483 @@ "@codemirror/state" "^6.0.0" "@codemirror/view" "^6.0.0" -"collect-v8-coverage@^1.0.0": - "integrity" "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==" - "resolved" "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz" - "version" "1.0.2" - -"color-convert@^1.9.0": - "integrity" "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==" - "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" - "version" "1.9.3" - dependencies: - "color-name" "1.1.3" - -"color-convert@^2.0.1": - "integrity" "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==" - "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "color-name" "~1.1.4" - -"color-name@~1.1.4": - "integrity" "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" - "version" "1.1.4" - -"color-name@1.1.3": - "integrity" "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" - "version" "1.1.3" - -"color-support@^1.1.3": - "integrity" "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" - "resolved" "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz" - "version" "1.1.3" - -"colord@^2.9.1": - "integrity" "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==" - "resolved" "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz" - "version" "2.9.3" - -"colorette@^2.0.10", "colorette@^2.0.14", "colorette@^2.0.16": - "integrity" "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==" - "resolved" "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz" - "version" "2.0.19" - -"combined-stream@^1.0.8": - "integrity" "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==" - "resolved" "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" - "version" "1.0.8" - dependencies: - "delayed-stream" "~1.0.0" - -"commander@^10.0.1": - "integrity" "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==" - "resolved" "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz" - "version" "10.0.1" - -"commander@^2.20.0": - "integrity" "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - "resolved" "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" - "version" "2.20.3" - -"commander@^5.0.0": - "integrity" "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==" - "resolved" "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz" - "version" "5.1.0" - -"commander@^7.2.0": - "integrity" "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" - "resolved" "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" - "version" "7.2.0" - -"commander@^8.3.0": - "integrity" "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==" - "resolved" "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz" - "version" "8.3.0" - -"commander@^9.3.0": - "integrity" "sha512-sRPT+umqkz90UA8M1yqYfnHlZA7fF6nSphDtxeywPZ49ysjxDQybzk13CL+mXekDRG92skbcqCLVovuCusNmFw==" - "resolved" "https://registry.npmjs.org/commander/-/commander-9.4.0.tgz" - "version" "9.4.0" - -"comment-parser@1.3.1": - "integrity" "sha512-B52sN2VNghyq5ofvUsqZjmk6YkihBX5vMSChmSK9v4ShjKf3Vk5Xcmgpw4o+iIgtrnM/u5FiMpz9VKb8lpBveA==" - "resolved" "https://registry.npmjs.org/comment-parser/-/comment-parser-1.3.1.tgz" - "version" "1.3.1" - -"common-path-prefix@^3.0.0": - "integrity" "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==" - "resolved" "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz" - "version" "3.0.0" - -"compare-version@^0.1.2": - "integrity" "sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==" - "resolved" "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz" - "version" "0.1.2" - -"compressible@~2.0.16": - "integrity" "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==" - "resolved" "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz" - "version" "2.0.18" - dependencies: - "mime-db" ">= 1.43.0 < 2" - -"compression@^1.7.4": - "integrity" "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==" - "resolved" "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz" - "version" "1.7.4" - 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" - -"concat-map@0.0.1": - "integrity" "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - "resolved" "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - "version" "0.0.1" - -"concurrently@^7.3.0", "concurrently@^8.2.1": - "integrity" "sha512-nVraf3aXOpIcNud5pB9M82p1tynmZkrSGQ1p6X/VY8cJ+2LMVqAgXsJxYYefACSHbTYlm92O1xuhdGTjwoEvbQ==" - "resolved" "https://registry.npmjs.org/concurrently/-/concurrently-8.2.1.tgz" - "version" "8.2.1" - dependencies: - "chalk" "^4.1.2" - "date-fns" "^2.30.0" - "lodash" "^4.17.21" - "rxjs" "^7.8.1" - "shell-quote" "^1.8.1" - "spawn-command" "0.0.2" - "supports-color" "^8.1.1" - "tree-kill" "^1.2.2" - "yargs" "^17.7.2" - -"config-file-ts@^0.2.4": - "integrity" "sha512-cKSW0BfrSaAUnxpgvpXPLaaW/umg4bqg4k3GO1JqlRfpx+d5W0GDXznCMkWotJQek5Mmz1MJVChQnz3IVaeMZQ==" - "resolved" "https://registry.npmjs.org/config-file-ts/-/config-file-ts-0.2.4.tgz" - "version" "0.2.4" - dependencies: - "glob" "^7.1.6" - "typescript" "^4.0.2" - -"confusing-browser-globals@^1.0.10": - "integrity" "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==" - "resolved" "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz" - "version" "1.0.11" - -"connect-history-api-fallback@^2.0.0": - "integrity" "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==" - "resolved" "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz" - "version" "2.0.0" - -"console-control-strings@^1.1.0": - "integrity" "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" - "resolved" "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz" - "version" "1.1.0" - -"content-disposition@0.5.4": - "integrity" "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==" - "resolved" "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz" - "version" "0.5.4" - dependencies: - "safe-buffer" "5.2.1" - -"content-type@~1.0.4": - "integrity" "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" - "resolved" "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz" - "version" "1.0.5" - -"convert-source-map@^2.0.0": - "integrity" "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" - "resolved" "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz" - "version" "2.0.0" - -"cookie-signature@1.0.6": - "integrity" "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" - "resolved" "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" - "version" "1.0.6" - -"cookie@^0.5.0", "cookie@0.5.0": - "integrity" "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" - "resolved" "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz" - "version" "0.5.0" - -"copy-to-clipboard@^3.3.1", "copy-to-clipboard@^3.3.3": - "integrity" "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==" - "resolved" "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz" - "version" "3.3.3" - dependencies: - "toggle-selection" "^1.0.6" - -"core-js-compat@^3.31.0", "core-js-compat@^3.32.2": - "integrity" "sha512-0w4LcLXsVEuNkIqwjjf9rjCoPhK8uqA4tMRh4Ge26vfLtUutshn+aRJU21I9LCJlh2QQHfisNToLjw1XEJLTWw==" - "resolved" "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.0.tgz" - "version" "3.33.0" - dependencies: - "browserslist" "^4.22.1" - -"core-js-pure@^3.23.3": - "integrity" "sha512-FKSIDtJnds/YFIEaZ4HszRX7hkxGpNKM7FC9aJ9WLJbSd3lD4vOltFuVIBLR8asSx9frkTSqL0dw90SKQxgKrg==" - "resolved" "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.33.0.tgz" - "version" "3.33.0" - -"core-js@^3.32.2": - "integrity" "sha512-HoZr92+ZjFEKar5HS6MC776gYslNOKHt75mEBKWKnPeFDpZ6nH5OeF3S6HFT1mUAUZKrzkez05VboaX8myjSuw==" - "resolved" "https://registry.npmjs.org/core-js/-/core-js-3.33.0.tgz" - "version" "3.33.0" - -"core-util-is@~1.0.0": - "integrity" "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - "resolved" "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" - "version" "1.0.3" - -"core-util-is@1.0.2": - "integrity" "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" - "resolved" "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - "version" "1.0.2" - -"cosmiconfig@^7.0.0": - "integrity" "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==" - "resolved" "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz" - "version" "7.1.0" - 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" - -"cosmiconfig@^8.1.3": - "integrity" "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==" - "resolved" "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz" - "version" "8.3.6" - dependencies: - "import-fresh" "^3.3.0" - "js-yaml" "^4.1.0" - "parse-json" "^5.2.0" - "path-type" "^4.0.0" - -"crc@^3.8.0": - "integrity" "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==" - "resolved" "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz" - "version" "3.8.0" - dependencies: - "buffer" "^5.1.0" - -"create-jest@^29.7.0": - "integrity" "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==" - "resolved" "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz" - "version" "29.7.0" +collect-v8-coverage@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#c0b29bcd33bcd0779a1344c2136051e6afd3d9e9" + integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + 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" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-support@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== + +colord@^2.9.1: + version "2.9.3" + resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43" + integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== + +colorette@^2.0.10, colorette@^2.0.14: + version "2.0.20" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" + integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== + +colorette@^2.0.16: + version "2.0.19" + resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz" + integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" + integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== + +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" + integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== + +commander@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + +commander@^8.3.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" + integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== + +commander@^9.3.0: + version "9.4.0" + resolved "https://registry.npmjs.org/commander/-/commander-9.4.0.tgz" + integrity sha512-sRPT+umqkz90UA8M1yqYfnHlZA7fF6nSphDtxeywPZ49ysjxDQybzk13CL+mXekDRG92skbcqCLVovuCusNmFw== + +comment-parser@1.3.1: + version "1.3.1" + resolved "https://registry.npmjs.org/comment-parser/-/comment-parser-1.3.1.tgz" + integrity sha512-B52sN2VNghyq5ofvUsqZjmk6YkihBX5vMSChmSK9v4ShjKf3Vk5Xcmgpw4o+iIgtrnM/u5FiMpz9VKb8lpBveA== + +common-path-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz#7d007a7e07c58c4b4d5f433131a19141b29f11e0" + integrity sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w== + +compare-version@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/compare-version/-/compare-version-0.1.2.tgz#0162ec2d9351f5ddd59a9202cba935366a725080" + integrity sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A== + +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + 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" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +concurrently@^8.2.1: + version "8.2.1" + resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-8.2.1.tgz#bcab9cacc38c23c503839583151e0fa96fd5b584" + integrity sha512-nVraf3aXOpIcNud5pB9M82p1tynmZkrSGQ1p6X/VY8cJ+2LMVqAgXsJxYYefACSHbTYlm92O1xuhdGTjwoEvbQ== + dependencies: + chalk "^4.1.2" + date-fns "^2.30.0" + lodash "^4.17.21" + rxjs "^7.8.1" + shell-quote "^1.8.1" + spawn-command "0.0.2" + supports-color "^8.1.1" + tree-kill "^1.2.2" + yargs "^17.7.2" + +config-file-ts@^0.2.4: + version "0.2.4" + resolved "https://registry.yarnpkg.com/config-file-ts/-/config-file-ts-0.2.4.tgz#6c0741fbe118a7cf786c65f139030f0448a2cc99" + integrity sha512-cKSW0BfrSaAUnxpgvpXPLaaW/umg4bqg4k3GO1JqlRfpx+d5W0GDXznCMkWotJQek5Mmz1MJVChQnz3IVaeMZQ== + dependencies: + glob "^7.1.6" + typescript "^4.0.2" + +confusing-browser-globals@^1.0.10: + version "1.0.11" + resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz#ae40e9b57cdd3915408a2805ebd3a5585608dc81" + integrity sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA== + +connect-history-api-fallback@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz#647264845251a0daf25b97ce87834cace0f5f1c8" + integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA== + +console-control-strings@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== + +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +content-type@~1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== + +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== + +cookie@0.5.0, cookie@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" + integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== + +copy-to-clipboard@^3.3.3: + version "3.3.3" + resolved "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz" + integrity sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA== + dependencies: + toggle-selection "^1.0.6" + +core-js-compat@^3.31.0, core-js-compat@^3.32.2: + version "3.33.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.33.0.tgz#24aa230b228406450b2277b7c8bfebae932df966" + integrity sha512-0w4LcLXsVEuNkIqwjjf9rjCoPhK8uqA4tMRh4Ge26vfLtUutshn+aRJU21I9LCJlh2QQHfisNToLjw1XEJLTWw== + dependencies: + browserslist "^4.22.1" + +core-js-pure@^3.23.3: + version "3.33.0" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.33.0.tgz#938a28754b4d82017a7a8cbd2727b1abecc63591" + integrity sha512-FKSIDtJnds/YFIEaZ4HszRX7hkxGpNKM7FC9aJ9WLJbSd3lD4vOltFuVIBLR8asSx9frkTSqL0dw90SKQxgKrg== + +core-js@^3.32.2: + version "3.33.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.33.0.tgz#70366dbf737134761edb017990cf5ce6c6369c40" + integrity sha512-HoZr92+ZjFEKar5HS6MC776gYslNOKHt75mEBKWKnPeFDpZ6nH5OeF3S6HFT1mUAUZKrzkez05VboaX8myjSuw== + +core-util-is@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cosmiconfig@^8.1.3: + version "8.3.6" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz" + integrity sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA== + dependencies: + import-fresh "^3.3.0" + js-yaml "^4.1.0" + parse-json "^5.2.0" + path-type "^4.0.0" + +crc@^3.8.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/crc/-/crc-3.8.0.tgz#ad60269c2c856f8c299e2c4cc0de4556914056c6" + integrity sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ== + dependencies: + buffer "^5.1.0" + +create-jest@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/create-jest/-/create-jest-29.7.0.tgz#a355c5b3cb1e1af02ba177fe7afd7feee49a5320" + integrity sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q== dependencies: "@jest/types" "^29.6.3" - "chalk" "^4.0.0" - "exit" "^0.1.2" - "graceful-fs" "^4.2.9" - "jest-config" "^29.7.0" - "jest-util" "^29.7.0" - "prompts" "^2.0.1" - -"create-require@^1.1.0": - "integrity" "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" - "resolved" "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz" - "version" "1.1.1" - -"crelt@^1.0.5": - "integrity" "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==" - "resolved" "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz" - "version" "1.0.6" - -"cross-env@^7.0.3", "cross-env@7.0.3": - "integrity" "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==" - "resolved" "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz" - "version" "7.0.3" - dependencies: - "cross-spawn" "^7.0.1" - -"cross-fetch@^3.1.5", "cross-fetch@^3.1.6": - "integrity" "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==" - "resolved" "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz" - "version" "3.1.8" - dependencies: - "node-fetch" "^2.6.12" - -"cross-spawn@^7.0.0", "cross-spawn@^7.0.1", "cross-spawn@^7.0.2", "cross-spawn@^7.0.3": - "integrity" "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==" - "resolved" "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" - "version" "7.0.3" - dependencies: - "path-key" "^3.1.0" - "shebang-command" "^2.0.0" - "which" "^2.0.1" - -"css-declaration-sorter@^6.3.1": - "integrity" "sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==" - "resolved" "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz" - "version" "6.4.1" - -"css-loader@^6.8.1": - "integrity" "sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==" - "resolved" "https://registry.npmjs.org/css-loader/-/css-loader-6.8.1.tgz" - "version" "6.8.1" - dependencies: - "icss-utils" "^5.1.0" - "postcss" "^8.4.21" - "postcss-modules-extract-imports" "^3.0.0" - "postcss-modules-local-by-default" "^4.0.3" - "postcss-modules-scope" "^3.0.0" - "postcss-modules-values" "^4.0.0" - "postcss-value-parser" "^4.2.0" - "semver" "^7.3.8" - -"css-minimizer-webpack-plugin@^5.0.1": - "integrity" "sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg==" - "resolved" "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-5.0.1.tgz" - "version" "5.0.1" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-config "^29.7.0" + jest-util "^29.7.0" + prompts "^2.0.1" + +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + +crelt@^1.0.5: + version "1.0.6" + resolved "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz" + integrity sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g== + +cross-env@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf" + integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw== + dependencies: + cross-spawn "^7.0.1" + +cross-fetch@^3.1.5, cross-fetch@^3.1.6: + version "3.1.8" + resolved "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz" + integrity sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg== + dependencies: + node-fetch "^2.6.12" + +cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +css-declaration-sorter@^6.3.1: + version "6.4.1" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz#28beac7c20bad7f1775be3a7129d7eae409a3a71" + integrity sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g== + +css-loader@^6.8.1: + version "6.8.1" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.8.1.tgz#0f8f52699f60f5e679eab4ec0fcd68b8e8a50a88" + integrity sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g== + dependencies: + icss-utils "^5.1.0" + postcss "^8.4.21" + postcss-modules-extract-imports "^3.0.0" + postcss-modules-local-by-default "^4.0.3" + postcss-modules-scope "^3.0.0" + postcss-modules-values "^4.0.0" + postcss-value-parser "^4.2.0" + semver "^7.3.8" + +css-minimizer-webpack-plugin@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-5.0.1.tgz#33effe662edb1a0bf08ad633c32fa75d0f7ec565" + integrity sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg== dependencies: "@jridgewell/trace-mapping" "^0.3.18" - "cssnano" "^6.0.1" - "jest-worker" "^29.4.3" - "postcss" "^8.4.24" - "schema-utils" "^4.0.1" - "serialize-javascript" "^6.0.1" - -"css-select@^4.1.3": - "integrity" "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==" - "resolved" "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz" - "version" "4.3.0" - dependencies: - "boolbase" "^1.0.0" - "css-what" "^6.0.1" - "domhandler" "^4.3.1" - "domutils" "^2.8.0" - "nth-check" "^2.0.1" - -"css-select@^5.1.0": - "integrity" "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==" - "resolved" "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz" - "version" "5.1.0" - dependencies: - "boolbase" "^1.0.0" - "css-what" "^6.1.0" - "domhandler" "^5.0.2" - "domutils" "^3.0.1" - "nth-check" "^2.0.1" - -"css-tree@^2.2.1": - "integrity" "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==" - "resolved" "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz" - "version" "2.3.1" - dependencies: - "mdn-data" "2.0.30" - "source-map-js" "^1.0.1" - -"css-tree@~2.2.0": - "integrity" "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==" - "resolved" "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz" - "version" "2.2.1" - dependencies: - "mdn-data" "2.0.28" - "source-map-js" "^1.0.1" - -"css-what@^6.0.1", "css-what@^6.1.0": - "integrity" "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==" - "resolved" "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz" - "version" "6.1.0" - -"css.escape@^1.5.1": - "integrity" "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==" - "resolved" "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz" - "version" "1.5.1" - -"cssesc@^3.0.0": - "integrity" "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" - "resolved" "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz" - "version" "3.0.0" - -"cssnano-preset-default@^6.0.1": - "integrity" "sha512-7VzyFZ5zEB1+l1nToKyrRkuaJIx0zi/1npjvZfbBwbtNTzhLtlvYraK/7/uqmX2Wb2aQtd983uuGw79jAjLSuQ==" - "resolved" "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.0.1.tgz" - "version" "6.0.1" - dependencies: - "css-declaration-sorter" "^6.3.1" - "cssnano-utils" "^4.0.0" - "postcss-calc" "^9.0.0" - "postcss-colormin" "^6.0.0" - "postcss-convert-values" "^6.0.0" - "postcss-discard-comments" "^6.0.0" - "postcss-discard-duplicates" "^6.0.0" - "postcss-discard-empty" "^6.0.0" - "postcss-discard-overridden" "^6.0.0" - "postcss-merge-longhand" "^6.0.0" - "postcss-merge-rules" "^6.0.1" - "postcss-minify-font-values" "^6.0.0" - "postcss-minify-gradients" "^6.0.0" - "postcss-minify-params" "^6.0.0" - "postcss-minify-selectors" "^6.0.0" - "postcss-normalize-charset" "^6.0.0" - "postcss-normalize-display-values" "^6.0.0" - "postcss-normalize-positions" "^6.0.0" - "postcss-normalize-repeat-style" "^6.0.0" - "postcss-normalize-string" "^6.0.0" - "postcss-normalize-timing-functions" "^6.0.0" - "postcss-normalize-unicode" "^6.0.0" - "postcss-normalize-url" "^6.0.0" - "postcss-normalize-whitespace" "^6.0.0" - "postcss-ordered-values" "^6.0.0" - "postcss-reduce-initial" "^6.0.0" - "postcss-reduce-transforms" "^6.0.0" - "postcss-svgo" "^6.0.0" - "postcss-unique-selectors" "^6.0.0" - -"cssnano-utils@^4.0.0": - "integrity" "sha512-Z39TLP+1E0KUcd7LGyF4qMfu8ZufI0rDzhdyAMsa/8UyNUU8wpS0fhdBxbQbv32r64ea00h4878gommRVg2BHw==" - "resolved" "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-4.0.0.tgz" - "version" "4.0.0" - -"cssnano@^6.0.1": - "integrity" "sha512-fVO1JdJ0LSdIGJq68eIxOqFpIJrZqXUsBt8fkrBcztCQqAjQD51OhZp7tc0ImcbwXD4k7ny84QTV90nZhmqbkg==" - "resolved" "https://registry.npmjs.org/cssnano/-/cssnano-6.0.1.tgz" - "version" "6.0.1" - dependencies: - "cssnano-preset-default" "^6.0.1" - "lilconfig" "^2.1.0" - -"csso@^5.0.5": - "integrity" "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==" - "resolved" "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz" - "version" "5.0.5" - dependencies: - "css-tree" "~2.2.0" - -"cssom@^0.5.0": - "integrity" "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==" - "resolved" "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz" - "version" "0.5.0" - -"cssom@~0.3.6": - "integrity" "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" - "resolved" "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz" - "version" "0.3.8" - -"cssstyle@^2.3.0": - "integrity" "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==" - "resolved" "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz" - "version" "2.3.0" - dependencies: - "cssom" "~0.3.6" - -"csstype@^3.0.10", "csstype@^3.0.2": - "integrity" "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" - "resolved" "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz" - "version" "3.1.2" - -"damerau-levenshtein@^1.0.8": - "integrity" "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==" - "resolved" "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz" - "version" "1.0.8" - -"data-urls@^3.0.2": - "integrity" "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==" - "resolved" "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz" - "version" "3.0.2" - dependencies: - "abab" "^2.0.6" - "whatwg-mimetype" "^3.0.0" - "whatwg-url" "^11.0.0" - -"date-fns@^2.30.0": - "integrity" "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==" - "resolved" "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz" - "version" "2.30.0" + cssnano "^6.0.1" + jest-worker "^29.4.3" + postcss "^8.4.24" + schema-utils "^4.0.1" + serialize-javascript "^6.0.1" + +css-select@^4.1.3: + version "4.3.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" + integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== + dependencies: + boolbase "^1.0.0" + css-what "^6.0.1" + domhandler "^4.3.1" + domutils "^2.8.0" + nth-check "^2.0.1" + +css-select@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" + integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== + dependencies: + boolbase "^1.0.0" + css-what "^6.1.0" + domhandler "^5.0.2" + domutils "^3.0.1" + nth-check "^2.0.1" + +css-tree@^2.2.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.3.1.tgz#10264ce1e5442e8572fc82fbe490644ff54b5c20" + integrity sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw== + dependencies: + mdn-data "2.0.30" + source-map-js "^1.0.1" + +css-tree@~2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.2.1.tgz#36115d382d60afd271e377f9c5f67d02bd48c032" + integrity sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA== + dependencies: + mdn-data "2.0.28" + source-map-js "^1.0.1" + +css-what@^6.0.1, css-what@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== + +css.escape@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" + integrity sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cssnano-preset-default@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-6.0.1.tgz#2a93247140d214ddb9f46bc6a3562fa9177fe301" + integrity sha512-7VzyFZ5zEB1+l1nToKyrRkuaJIx0zi/1npjvZfbBwbtNTzhLtlvYraK/7/uqmX2Wb2aQtd983uuGw79jAjLSuQ== + dependencies: + css-declaration-sorter "^6.3.1" + cssnano-utils "^4.0.0" + postcss-calc "^9.0.0" + postcss-colormin "^6.0.0" + postcss-convert-values "^6.0.0" + postcss-discard-comments "^6.0.0" + postcss-discard-duplicates "^6.0.0" + postcss-discard-empty "^6.0.0" + postcss-discard-overridden "^6.0.0" + postcss-merge-longhand "^6.0.0" + postcss-merge-rules "^6.0.1" + postcss-minify-font-values "^6.0.0" + postcss-minify-gradients "^6.0.0" + postcss-minify-params "^6.0.0" + postcss-minify-selectors "^6.0.0" + postcss-normalize-charset "^6.0.0" + postcss-normalize-display-values "^6.0.0" + postcss-normalize-positions "^6.0.0" + postcss-normalize-repeat-style "^6.0.0" + postcss-normalize-string "^6.0.0" + postcss-normalize-timing-functions "^6.0.0" + postcss-normalize-unicode "^6.0.0" + postcss-normalize-url "^6.0.0" + postcss-normalize-whitespace "^6.0.0" + postcss-ordered-values "^6.0.0" + postcss-reduce-initial "^6.0.0" + postcss-reduce-transforms "^6.0.0" + postcss-svgo "^6.0.0" + postcss-unique-selectors "^6.0.0" + +cssnano-utils@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-4.0.0.tgz#d1da885ec04003ab19505ff0e62e029708d36b08" + integrity sha512-Z39TLP+1E0KUcd7LGyF4qMfu8ZufI0rDzhdyAMsa/8UyNUU8wpS0fhdBxbQbv32r64ea00h4878gommRVg2BHw== + +cssnano@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-6.0.1.tgz#87c38c4cd47049c735ab756d7e77ac3ca855c008" + integrity sha512-fVO1JdJ0LSdIGJq68eIxOqFpIJrZqXUsBt8fkrBcztCQqAjQD51OhZp7tc0ImcbwXD4k7ny84QTV90nZhmqbkg== + dependencies: + cssnano-preset-default "^6.0.1" + lilconfig "^2.1.0" + +csso@^5.0.5: + version "5.0.5" + resolved "https://registry.yarnpkg.com/csso/-/csso-5.0.5.tgz#f9b7fe6cc6ac0b7d90781bb16d5e9874303e2ca6" + integrity sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ== + dependencies: + css-tree "~2.2.0" + +cssom@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.5.0.tgz#d254fa92cd8b6fbd83811b9fbaed34663cc17c36" + integrity sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw== + +cssom@~0.3.6: + version "0.3.8" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + +cssstyle@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" + integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== + dependencies: + cssom "~0.3.6" + +csstype@^3.0.2: + version "3.1.2" + resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz" + integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== + +damerau-levenshtein@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" + integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== + +data-urls@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-3.0.2.tgz#9cf24a477ae22bcef5cd5f6f0bfbc1d2d3be9143" + integrity sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ== + dependencies: + abab "^2.0.6" + whatwg-mimetype "^3.0.0" + whatwg-url "^11.0.0" + +date-fns@^2.30.0: + version "2.30.0" + resolved "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz" + integrity sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw== dependencies: "@babel/runtime" "^7.21.0" -"dateformat@^5.0.1", "dateformat@^5.0.3": - "integrity" "sha512-Kvr6HmPXUMerlLcLF+Pwq3K7apHpYmGDVqrxcDasBg86UcKeTSNWbEzU8bwdXnxnR44FtMhJAxI4Bov6Y/KUfA==" - "resolved" "https://registry.npmjs.org/dateformat/-/dateformat-5.0.3.tgz" - "version" "5.0.3" - -"debug@^3.2.7": - "integrity" "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==" - "resolved" "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" - "version" "3.2.7" - dependencies: - "ms" "^2.1.1" - -"debug@^4.0.1", "debug@^4.1.0", "debug@^4.1.1", "debug@^4.3.1", "debug@^4.3.2", "debug@^4.3.3", "debug@^4.3.4", "debug@4": - "integrity" "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==" - "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" - "version" "4.3.4" - dependencies: - "ms" "2.1.2" - -"debug@2.6.9": - "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" - "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - "version" "2.6.9" - dependencies: - "ms" "2.0.0" - -"decimal.js@^10.4.2": - "integrity" "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" - "resolved" "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz" - "version" "10.4.3" - -"decompress-response@^6.0.0": - "integrity" "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==" - "resolved" "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "mimic-response" "^3.1.0" - -"dedent@^1.0.0": - "integrity" "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==" - "resolved" "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz" - "version" "1.5.1" - -"deep-equal@^2.0.5": - "integrity" "sha512-xjVyBf0w5vH0I42jdAZzOKVldmPgSulmiyPRywoyq7HXC9qdgo17kxJE+rdnif5Tz6+pIrpJI8dCpMNLIGkUiA==" - "resolved" "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.2.tgz" - "version" "2.2.2" - dependencies: - "array-buffer-byte-length" "^1.0.0" - "call-bind" "^1.0.2" - "es-get-iterator" "^1.1.3" - "get-intrinsic" "^1.2.1" - "is-arguments" "^1.1.1" - "is-array-buffer" "^3.0.2" - "is-date-object" "^1.0.5" - "is-regex" "^1.1.4" - "is-shared-array-buffer" "^1.0.2" - "isarray" "^2.0.5" - "object-is" "^1.1.5" - "object-keys" "^1.1.1" - "object.assign" "^4.1.4" - "regexp.prototype.flags" "^1.5.0" - "side-channel" "^1.0.4" - "which-boxed-primitive" "^1.0.2" - "which-collection" "^1.0.1" - "which-typed-array" "^1.1.9" - -"deep-is@^0.1.3": - "integrity" "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" - "resolved" "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" - "version" "0.1.4" - -"deepmerge@^2.1.1": - "integrity" "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==" - "resolved" "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz" - "version" "2.2.1" - -"deepmerge@^4.2.2", "deepmerge@^4.3.1": - "integrity" "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==" - "resolved" "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz" - "version" "4.3.1" - -"deepmerge@4.3.0": - "integrity" "sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==" - "resolved" "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.0.tgz" - "version" "4.3.0" - -"default-browser-id@^3.0.0": - "integrity" "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==" - "resolved" "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "bplist-parser" "^0.2.0" - "untildify" "^4.0.0" - -"default-browser@^4.0.0": - "integrity" "sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==" - "resolved" "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "bundle-name" "^3.0.0" - "default-browser-id" "^3.0.0" - "execa" "^7.1.1" - "titleize" "^3.0.0" - -"default-gateway@^6.0.3": - "integrity" "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==" - "resolved" "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz" - "version" "6.0.3" - dependencies: - "execa" "^5.0.0" - -"defaults@^1.0.3": - "integrity" "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==" - "resolved" "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz" - "version" "1.0.4" - dependencies: - "clone" "^1.0.2" - -"defer-to-connect@^2.0.0": - "integrity" "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==" - "resolved" "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz" - "version" "2.0.1" - -"define-data-property@^1.0.1": - "integrity" "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==" - "resolved" "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz" - "version" "1.1.0" - dependencies: - "get-intrinsic" "^1.2.1" - "gopd" "^1.0.1" - "has-property-descriptors" "^1.0.0" - -"define-lazy-prop@^2.0.0": - "integrity" "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==" - "resolved" "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz" - "version" "2.0.0" - -"define-lazy-prop@^3.0.0": - "integrity" "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==" - "resolved" "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz" - "version" "3.0.0" - -"define-properties@^1.1.3", "define-properties@^1.1.4", "define-properties@^1.2.0", "define-properties@^1.2.1": - "integrity" "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==" - "resolved" "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz" - "version" "1.2.1" - dependencies: - "define-data-property" "^1.0.1" - "has-property-descriptors" "^1.0.0" - "object-keys" "^1.1.1" - -"delayed-stream@~1.0.0": - "integrity" "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" - "resolved" "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" - "version" "1.0.0" - -"delegates@^1.0.0": - "integrity" "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" - "resolved" "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz" - "version" "1.0.0" - -"depd@~1.1.2": - "integrity" "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==" - "resolved" "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" - "version" "1.1.2" - -"depd@2.0.0": - "integrity" "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" - "resolved" "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" - "version" "2.0.0" - -"dequal@^2.0.3": - "integrity" "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==" - "resolved" "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz" - "version" "2.0.3" - -"destroy@1.2.0": - "integrity" "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" - "resolved" "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" - "version" "1.2.0" - -"detect-libc@^2.0.1": - "integrity" "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==" - "resolved" "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz" - "version" "2.0.2" - -"detect-newline@^3.0.0": - "integrity" "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==" - "resolved" "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz" - "version" "3.1.0" - -"detect-node@^2.0.4": - "integrity" "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" - "resolved" "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz" - "version" "2.1.0" - -"detect-port@^1.5.1": - "integrity" "sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==" - "resolved" "https://registry.npmjs.org/detect-port/-/detect-port-1.5.1.tgz" - "version" "1.5.1" - dependencies: - "address" "^1.0.1" - "debug" "4" - -"diff-sequences@^27.5.1": - "integrity" "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==" - "resolved" "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz" - "version" "27.5.1" - -"diff-sequences@^29.6.3": - "integrity" "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==" - "resolved" "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz" - "version" "29.6.3" - -"diff@^4.0.1": - "integrity" "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" - "resolved" "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" - "version" "4.0.2" - -"dir-compare@^3.0.0": - "integrity" "sha512-J7/et3WlGUCxjdnD3HAAzQ6nsnc0WL6DD7WcwJb7c39iH1+AWfg+9OqzJNaI6PkBwBvm1mhZNL9iY/nRiZXlPg==" - "resolved" "https://registry.npmjs.org/dir-compare/-/dir-compare-3.3.0.tgz" - "version" "3.3.0" - dependencies: - "buffer-equal" "^1.0.0" - "minimatch" "^3.0.4" - -"dir-glob@^3.0.1": - "integrity" "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==" - "resolved" "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "path-type" "^4.0.0" - -"dmg-builder@24.6.4": - "integrity" "sha512-BNcHRc9CWEuI9qt0E655bUBU/j/3wUCYBVKGu1kVpbN5lcUdEJJJeiO0NHK3dgKmra6LUUZlo+mWqc+OCbi0zw==" - "resolved" "https://registry.npmjs.org/dmg-builder/-/dmg-builder-24.6.4.tgz" - "version" "24.6.4" - dependencies: - "app-builder-lib" "24.6.4" - "builder-util" "24.5.0" - "builder-util-runtime" "9.2.1" - "fs-extra" "^10.1.0" - "iconv-lite" "^0.6.2" - "js-yaml" "^4.1.0" +dateformat@^5.0.3: + version "5.0.3" + resolved "https://registry.npmjs.org/dateformat/-/dateformat-5.0.3.tgz" + integrity sha512-Kvr6HmPXUMerlLcLF+Pwq3K7apHpYmGDVqrxcDasBg86UcKeTSNWbEzU8bwdXnxnR44FtMhJAxI4Bov6Y/KUfA== + +debug@2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: + version "4.3.4" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +debug@^3.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +decimal.js@^10.4.2: + version "10.4.3" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" + integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== + +decompress-response@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" + integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== + dependencies: + mimic-response "^3.1.0" + +dedent@^1.0.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.1.tgz#4f3fc94c8b711e9bb2800d185cd6ad20f2a90aff" + integrity sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg== + +deep-equal@^2.0.5: + version "2.2.2" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.2.tgz#9b2635da569a13ba8e1cc159c2f744071b115daa" + integrity sha512-xjVyBf0w5vH0I42jdAZzOKVldmPgSulmiyPRywoyq7HXC9qdgo17kxJE+rdnif5Tz6+pIrpJI8dCpMNLIGkUiA== + dependencies: + array-buffer-byte-length "^1.0.0" + call-bind "^1.0.2" + es-get-iterator "^1.1.3" + get-intrinsic "^1.2.1" + is-arguments "^1.1.1" + is-array-buffer "^3.0.2" + is-date-object "^1.0.5" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + isarray "^2.0.5" + object-is "^1.1.5" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.5.0" + side-channel "^1.0.4" + which-boxed-primitive "^1.0.2" + which-collection "^1.0.1" + which-typed-array "^1.1.9" + +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +deepmerge@4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.0.tgz#65491893ec47756d44719ae520e0e2609233b59b" + integrity sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og== + +deepmerge@^2.1.1: + version "2.2.1" + resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz" + integrity sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA== + +deepmerge@^4.2.2, deepmerge@^4.3.1: + 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== + +default-browser-id@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/default-browser-id/-/default-browser-id-3.0.0.tgz#bee7bbbef1f4e75d31f98f4d3f1556a14cea790c" + integrity sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA== + dependencies: + bplist-parser "^0.2.0" + untildify "^4.0.0" + +default-browser@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/default-browser/-/default-browser-4.0.0.tgz#53c9894f8810bf86696de117a6ce9085a3cbc7da" + integrity sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA== + dependencies: + bundle-name "^3.0.0" + default-browser-id "^3.0.0" + execa "^7.1.1" + titleize "^3.0.0" + +default-gateway@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71" + integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg== + dependencies: + execa "^5.0.0" + +defaults@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" + integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== + dependencies: + clone "^1.0.2" + +defer-to-connect@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" + integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== + +define-data-property@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" + integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== + dependencies: + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + +define-lazy-prop@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz#dbb19adfb746d7fc6d734a06b72f4a00d021255f" + integrity sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg== + +define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0, define-properties@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== + dependencies: + define-data-property "^1.0.1" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== + +depd@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== + +dequal@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" + integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== + +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +detect-libc@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.2.tgz#8ccf2ba9315350e1241b88d0ac3b0e1fbd99605d" + integrity sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw== + +detect-newline@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== + +detect-node@^2.0.4: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" + integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== + +detect-port@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.5.1.tgz#451ca9b6eaf20451acb0799b8ab40dff7718727b" + integrity sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ== + dependencies: + address "^1.0.1" + debug "4" + +diff-sequences@^29.6.3: + version "29.6.3" + resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz" + integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== + +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + +dir-compare@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/dir-compare/-/dir-compare-3.3.0.tgz#2c749f973b5c4b5d087f11edaae730db31788416" + integrity sha512-J7/et3WlGUCxjdnD3HAAzQ6nsnc0WL6DD7WcwJb7c39iH1+AWfg+9OqzJNaI6PkBwBvm1mhZNL9iY/nRiZXlPg== + dependencies: + buffer-equal "^1.0.0" + minimatch "^3.0.4" + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +dmg-builder@24.6.4: + version "24.6.4" + resolved "https://registry.yarnpkg.com/dmg-builder/-/dmg-builder-24.6.4.tgz#e19b8305f7e1ea0b4faaa30382c81b9d6de39863" + integrity sha512-BNcHRc9CWEuI9qt0E655bUBU/j/3wUCYBVKGu1kVpbN5lcUdEJJJeiO0NHK3dgKmra6LUUZlo+mWqc+OCbi0zw== + dependencies: + app-builder-lib "24.6.4" + builder-util "24.5.0" + builder-util-runtime "9.2.1" + fs-extra "^10.1.0" + iconv-lite "^0.6.2" + js-yaml "^4.1.0" optionalDependencies: - "dmg-license" "^1.0.11" + dmg-license "^1.0.11" -"dmg-license@^1.0.11": - "integrity" "sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q==" - "resolved" "https://registry.npmjs.org/dmg-license/-/dmg-license-1.0.11.tgz" - "version" "1.0.11" +dmg-license@^1.0.11: + version "1.0.11" + resolved "https://registry.yarnpkg.com/dmg-license/-/dmg-license-1.0.11.tgz#7b3bc3745d1b52be7506b4ee80cb61df6e4cd79a" + integrity sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q== dependencies: "@types/plist" "^3.0.1" "@types/verror" "^1.10.3" - "ajv" "^6.10.0" - "crc" "^3.8.0" - "iconv-corefoundation" "^1.1.7" - "plist" "^3.0.4" - "smart-buffer" "^4.0.2" - "verror" "^1.10.0" - -"dns-equal@^1.0.0": - "integrity" "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==" - "resolved" "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz" - "version" "1.0.0" - -"dns-packet@^5.2.2": - "integrity" "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==" - "resolved" "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz" - "version" "5.6.1" + ajv "^6.10.0" + crc "^3.8.0" + iconv-corefoundation "^1.1.7" + plist "^3.0.4" + smart-buffer "^4.0.2" + verror "^1.10.0" + +dns-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" + integrity sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg== + +dns-packet@^5.2.2: + version "5.6.1" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.6.1.tgz#ae888ad425a9d1478a0674256ab866de1012cf2f" + integrity sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw== dependencies: "@leichtgewicht/ip-codec" "^2.0.1" -"doctrine@^2.1.0": - "integrity" "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==" - "resolved" "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz" - "version" "2.1.0" +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== dependencies: - "esutils" "^2.0.2" + esutils "^2.0.2" -"doctrine@^3.0.0": - "integrity" "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==" - "resolved" "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" - "version" "3.0.0" +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== dependencies: - "esutils" "^2.0.2" + esutils "^2.0.2" -"dom-accessibility-api@^0.5.6", "dom-accessibility-api@^0.5.9": - "integrity" "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==" - "resolved" "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz" - "version" "0.5.16" - -"dom-converter@^0.2.0": - "integrity" "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==" - "resolved" "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz" - "version" "0.2.0" - dependencies: - "utila" "~0.4" +dom-accessibility-api@^0.5.6, dom-accessibility-api@^0.5.9: + version "0.5.16" + resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz#5a7429e6066eb3664d911e33fb0e45de8eb08453" + integrity sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg== + +dom-converter@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" + integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== + dependencies: + utila "~0.4" -"dom-serializer@^1.0.1": - "integrity" "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==" - "resolved" "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz" - "version" "1.4.1" - dependencies: - "domelementtype" "^2.0.1" - "domhandler" "^4.2.0" - "entities" "^2.0.0" - -"dom-serializer@^2.0.0": - "integrity" "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==" - "resolved" "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "domelementtype" "^2.3.0" - "domhandler" "^5.0.2" - "entities" "^4.2.0" - -"domelementtype@^2.0.1", "domelementtype@^2.2.0", "domelementtype@^2.3.0": - "integrity" "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" - "resolved" "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz" - "version" "2.3.0" - -"domexception@^4.0.0": - "integrity" "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==" - "resolved" "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "webidl-conversions" "^7.0.0" - -"domhandler@^4.0.0", "domhandler@^4.2.0", "domhandler@^4.3.1": - "integrity" "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==" - "resolved" "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz" - "version" "4.3.1" - dependencies: - "domelementtype" "^2.2.0" - -"domhandler@^5.0.2", "domhandler@^5.0.3": - "integrity" "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==" - "resolved" "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz" - "version" "5.0.3" - dependencies: - "domelementtype" "^2.3.0" - -"domutils@^2.5.2", "domutils@^2.8.0": - "integrity" "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==" - "resolved" "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz" - "version" "2.8.0" - dependencies: - "dom-serializer" "^1.0.1" - "domelementtype" "^2.2.0" - "domhandler" "^4.2.0" - -"domutils@^3.0.1": - "integrity" "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==" - "resolved" "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "dom-serializer" "^2.0.0" - "domelementtype" "^2.3.0" - "domhandler" "^5.0.3" - -"dot-case@^3.0.4": - "integrity" "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==" - "resolved" "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz" - "version" "3.0.4" - dependencies: - "no-case" "^3.0.4" - "tslib" "^2.0.3" - -"dotenv-expand@^5.1.0": - "integrity" "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==" - "resolved" "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz" - "version" "5.1.0" - -"dotenv@^9.0.2": - "integrity" "sha512-I9OvvrHp4pIARv4+x9iuewrWycX6CcZtoAu1XrzPxc5UygMJXJZYmBsynku8IkrJwgypE5DGNjDPmPRhDCptUg==" - "resolved" "https://registry.npmjs.org/dotenv/-/dotenv-9.0.2.tgz" - "version" "9.0.2" - -"duplexer@^0.1.2": - "integrity" "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" - "resolved" "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz" - "version" "0.1.2" - -"eastasianwidth@^0.2.0": - "integrity" "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" - "resolved" "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" - "version" "0.2.0" - -"ee-first@1.1.1": - "integrity" "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - "resolved" "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" - "version" "1.1.1" - -"ejs@^3.1.8": - "integrity" "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==" - "resolved" "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz" - "version" "3.1.9" - dependencies: - "jake" "^10.8.5" - -"electron-builder@^23.3.3", "electron-builder@^24.6.4", "electron-builder@24.6.4": - "integrity" "sha512-uNWQoU7pE7qOaIQ6CJHpBi44RJFVG8OHRBIadUxrsDJVwLLo8Nma3K/EEtx5/UyWAQYdcK4nVPYKoRqBb20hbA==" - "resolved" "https://registry.npmjs.org/electron-builder/-/electron-builder-24.6.4.tgz" - "version" "24.6.4" - dependencies: - "app-builder-lib" "24.6.4" - "builder-util" "24.5.0" - "builder-util-runtime" "9.2.1" - "chalk" "^4.1.2" - "dmg-builder" "24.6.4" - "fs-extra" "^10.1.0" - "is-ci" "^3.0.0" - "lazy-val" "^1.0.5" - "read-config-file" "6.3.2" - "simple-update-notifier" "2.0.0" - "yargs" "^17.6.2" - -"electron-debug@^3.2.0": - "integrity" "sha512-7xZh+LfUvJ52M9rn6N+tPuDw6oRAjxUj9SoxAZfJ0hVCXhZCsdkrSt7TgXOiWiEOBgEV8qwUIO/ScxllsPS7ow==" - "resolved" "https://registry.npmjs.org/electron-debug/-/electron-debug-3.2.0.tgz" - "version" "3.2.0" - dependencies: - "electron-is-dev" "^1.1.0" - "electron-localshortcut" "^3.1.0" - -"electron-devtools-installer@^3.2.0": - "integrity" "sha512-t3UczsYugm4OAbqvdImMCImIMVdFzJAHgbwHpkl5jmfu1izVgUcP/mnrPqJIpEeCK1uZGpt+yHgWEN+9EwoYhQ==" - "resolved" "https://registry.npmjs.org/electron-devtools-installer/-/electron-devtools-installer-3.2.0.tgz" - "version" "3.2.0" - dependencies: - "rimraf" "^3.0.2" - "semver" "^7.2.1" - "tslib" "^2.1.0" - "unzip-crx-3" "^0.2.0" - -"electron-is-accelerator@^0.1.0": - "integrity" "sha512-fLGSAjXZtdn1sbtZxx52+krefmtNuVwnJCV2gNiVt735/ARUboMl8jnNC9fZEqQdlAv2ZrETfmBUsoQci5evJA==" - "resolved" "https://registry.npmjs.org/electron-is-accelerator/-/electron-is-accelerator-0.1.2.tgz" - "version" "0.1.2" - -"electron-is-dev@^1.1.0": - "integrity" "sha512-R1oD5gMBPS7PVU8gJwH6CtT0e6VSoD0+SzSnYpNm+dBkcijgA+K7VAMHDfnRq/lkKPZArpzplTW6jfiMYosdzw==" - "resolved" "https://registry.npmjs.org/electron-is-dev/-/electron-is-dev-1.2.0.tgz" - "version" "1.2.0" - -"electron-localshortcut@^3.1.0": - "integrity" "sha512-DWvhKv36GsdXKnaFFhEiK8kZZA+24/yFLgtTwJJHc7AFgDjNRIBJZ/jq62Y/dWv9E4ypYwrVWN2bVrCYw1uv7Q==" - "resolved" "https://registry.npmjs.org/electron-localshortcut/-/electron-localshortcut-3.2.1.tgz" - "version" "3.2.1" - dependencies: - "debug" "^4.0.1" - "electron-is-accelerator" "^0.1.0" - "keyboardevent-from-electron-accelerator" "^2.0.0" - "keyboardevents-areequal" "^0.2.1" - -"electron-log@^4.4.8": - "integrity" "sha512-QQ4GvrXO+HkgqqEOYbi+DHL7hj5JM+nHi/j+qrN9zeeXVKy8ZABgbu4CnG+BBqDZ2+tbeq9tUC4DZfIWFU5AZA==" - "resolved" "https://registry.npmjs.org/electron-log/-/electron-log-4.4.8.tgz" - "version" "4.4.8" - -"electron-publish@24.5.0": - "integrity" "sha512-zwo70suH15L15B4ZWNDoEg27HIYoPsGJUF7xevLJLSI7JUPC8l2yLBdLGwqueJ5XkDL7ucYyRZzxJVR8ElV9BA==" - "resolved" "https://registry.npmjs.org/electron-publish/-/electron-publish-24.5.0.tgz" - "version" "24.5.0" +dom-serializer@^1.0.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" + integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.0" + entities "^2.0.0" + +dom-serializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" + integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== + dependencies: + domelementtype "^2.3.0" + domhandler "^5.0.2" + entities "^4.2.0" + +domelementtype@^2.0.1, domelementtype@^2.2.0, domelementtype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== + +domexception@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-4.0.0.tgz#4ad1be56ccadc86fc76d033353999a8037d03673" + integrity sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw== + dependencies: + webidl-conversions "^7.0.0" + +domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" + integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== + dependencies: + domelementtype "^2.2.0" + +domhandler@^5.0.2, domhandler@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" + integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== + dependencies: + domelementtype "^2.3.0" + +domutils@^2.5.2, domutils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" + integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + +domutils@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.1.0.tgz#c47f551278d3dc4b0b1ab8cbb42d751a6f0d824e" + integrity sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA== + dependencies: + dom-serializer "^2.0.0" + domelementtype "^2.3.0" + domhandler "^5.0.3" + +dot-case@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz" + integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +dotenv-expand@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" + integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== + +dotenv@^9.0.2: + version "9.0.2" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-9.0.2.tgz#dacc20160935a37dea6364aa1bef819fb9b6ab05" + integrity sha512-I9OvvrHp4pIARv4+x9iuewrWycX6CcZtoAu1XrzPxc5UygMJXJZYmBsynku8IkrJwgypE5DGNjDPmPRhDCptUg== + +duplexer@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== + +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + +ejs@^3.1.8: + version "3.1.9" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.9.tgz#03c9e8777fe12686a9effcef22303ca3d8eeb361" + integrity sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ== + dependencies: + jake "^10.8.5" + +electron-builder@^24.6.4: + version "24.6.4" + resolved "https://registry.yarnpkg.com/electron-builder/-/electron-builder-24.6.4.tgz#c51271e49b9a02c9a3ec444f866b6008c4d98a1d" + integrity sha512-uNWQoU7pE7qOaIQ6CJHpBi44RJFVG8OHRBIadUxrsDJVwLLo8Nma3K/EEtx5/UyWAQYdcK4nVPYKoRqBb20hbA== + dependencies: + app-builder-lib "24.6.4" + builder-util "24.5.0" + builder-util-runtime "9.2.1" + chalk "^4.1.2" + dmg-builder "24.6.4" + fs-extra "^10.1.0" + is-ci "^3.0.0" + lazy-val "^1.0.5" + read-config-file "6.3.2" + simple-update-notifier "2.0.0" + yargs "^17.6.2" + +electron-debug@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/electron-debug/-/electron-debug-3.2.0.tgz#46a15b555c3b11872218c65ea01d058aa0814920" + integrity sha512-7xZh+LfUvJ52M9rn6N+tPuDw6oRAjxUj9SoxAZfJ0hVCXhZCsdkrSt7TgXOiWiEOBgEV8qwUIO/ScxllsPS7ow== + dependencies: + electron-is-dev "^1.1.0" + electron-localshortcut "^3.1.0" + +electron-devtools-installer@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/electron-devtools-installer/-/electron-devtools-installer-3.2.0.tgz#acc48d24eb7033fe5af284a19667e73b78d406d0" + integrity sha512-t3UczsYugm4OAbqvdImMCImIMVdFzJAHgbwHpkl5jmfu1izVgUcP/mnrPqJIpEeCK1uZGpt+yHgWEN+9EwoYhQ== + dependencies: + rimraf "^3.0.2" + semver "^7.2.1" + tslib "^2.1.0" + unzip-crx-3 "^0.2.0" + +electron-is-accelerator@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/electron-is-accelerator/-/electron-is-accelerator-0.1.2.tgz#509e510c26a56b55e17f863a4b04e111846ab27b" + integrity sha512-fLGSAjXZtdn1sbtZxx52+krefmtNuVwnJCV2gNiVt735/ARUboMl8jnNC9fZEqQdlAv2ZrETfmBUsoQci5evJA== + +electron-is-dev@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/electron-is-dev/-/electron-is-dev-1.2.0.tgz#2e5cea0a1b3ccf1c86f577cee77363ef55deb05e" + integrity sha512-R1oD5gMBPS7PVU8gJwH6CtT0e6VSoD0+SzSnYpNm+dBkcijgA+K7VAMHDfnRq/lkKPZArpzplTW6jfiMYosdzw== + +electron-localshortcut@^3.1.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/electron-localshortcut/-/electron-localshortcut-3.2.1.tgz#cfc83a3eff5e28faf98ddcc87f80a2ce4f623cd3" + integrity sha512-DWvhKv36GsdXKnaFFhEiK8kZZA+24/yFLgtTwJJHc7AFgDjNRIBJZ/jq62Y/dWv9E4ypYwrVWN2bVrCYw1uv7Q== + dependencies: + debug "^4.0.1" + electron-is-accelerator "^0.1.0" + keyboardevent-from-electron-accelerator "^2.0.0" + keyboardevents-areequal "^0.2.1" + +electron-log@^4.4.8: + version "4.4.8" + resolved "https://registry.yarnpkg.com/electron-log/-/electron-log-4.4.8.tgz#fcb9f714dbcaefb6ac7984c4683912c74730248a" + integrity sha512-QQ4GvrXO+HkgqqEOYbi+DHL7hj5JM+nHi/j+qrN9zeeXVKy8ZABgbu4CnG+BBqDZ2+tbeq9tUC4DZfIWFU5AZA== + +electron-publish@24.5.0: + version "24.5.0" + resolved "https://registry.yarnpkg.com/electron-publish/-/electron-publish-24.5.0.tgz#492a4d7caa232e88ee3c18f5c3b4dc637e5e1b3a" + integrity sha512-zwo70suH15L15B4ZWNDoEg27HIYoPsGJUF7xevLJLSI7JUPC8l2yLBdLGwqueJ5XkDL7ucYyRZzxJVR8ElV9BA== dependencies: "@types/fs-extra" "^9.0.11" - "builder-util" "24.5.0" - "builder-util-runtime" "9.2.1" - "chalk" "^4.1.2" - "fs-extra" "^10.1.0" - "lazy-val" "^1.0.5" - "mime" "^2.5.2" - -"electron-to-chromium@^1.4.535": - "integrity" "sha512-54z7squS1FyFRSUqq/knOFSptjjogLZXbKcYk3B0qkE1KZzvqASwRZnY2KzZQJqIYLVD38XZeoiMRflYSwyO4w==" - "resolved" "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.544.tgz" - "version" "1.4.544" - -"electron-updater@^5.3.0", "electron-updater@^6.1.4", "electron-updater@6.1.4": - "integrity" "sha512-yYAJc6RQjjV4WtInZVn+ZcLyXRhbVXoomKEfUUwDqIk5s2wxzLhWaor7lrNgxODyODhipjg4SVPMhJHi5EnsCA==" - "resolved" "https://registry.npmjs.org/electron-updater/-/electron-updater-6.1.4.tgz" - "version" "6.1.4" - dependencies: - "builder-util-runtime" "9.2.1" - "fs-extra" "^10.1.0" - "js-yaml" "^4.1.0" - "lazy-val" "^1.0.5" - "lodash.escaperegexp" "^4.1.2" - "lodash.isequal" "^4.5.0" - "semver" "^7.3.8" - "tiny-typed-emitter" "^2.1.0" - -"electron@^26.2.1", "electron@>=12.0.0": - "integrity" "sha512-7ZpvSHu+jmqialSvywTZnOQZZGLqlyj+yV5HGDrEzFnMiFaXBRpbByHgoUhaExJ/8t/0xKQjKlMRAY65w+zNZQ==" - "resolved" "https://registry.npmjs.org/electron/-/electron-26.3.0.tgz" - "version" "26.3.0" + builder-util "24.5.0" + builder-util-runtime "9.2.1" + chalk "^4.1.2" + fs-extra "^10.1.0" + lazy-val "^1.0.5" + mime "^2.5.2" + +electron-to-chromium@^1.4.535: + version "1.4.544" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.544.tgz" + integrity sha512-54z7squS1FyFRSUqq/knOFSptjjogLZXbKcYk3B0qkE1KZzvqASwRZnY2KzZQJqIYLVD38XZeoiMRflYSwyO4w== + +electron-updater@^6.1.4: + version "6.1.4" + resolved "https://registry.yarnpkg.com/electron-updater/-/electron-updater-6.1.4.tgz#86f7e1fc4353f578456c34304b48df7d976cf348" + integrity sha512-yYAJc6RQjjV4WtInZVn+ZcLyXRhbVXoomKEfUUwDqIk5s2wxzLhWaor7lrNgxODyODhipjg4SVPMhJHi5EnsCA== + dependencies: + builder-util-runtime "9.2.1" + fs-extra "^10.1.0" + js-yaml "^4.1.0" + lazy-val "^1.0.5" + lodash.escaperegexp "^4.1.2" + lodash.isequal "^4.5.0" + semver "^7.3.8" + tiny-typed-emitter "^2.1.0" + +electron@26.2.1: + version "26.2.1" + resolved "https://registry.yarnpkg.com/electron/-/electron-26.2.1.tgz#2ef86c03d9753647622bb9a53c4213fb290e5eac" + integrity sha512-SNT24Cf/wRvfcFZQoERXjzswUlg5ouqhIuA2t9x2L7VdTn+2Jbs0QXRtOfzcnOV/raVMz3e8ICyaU2GGeciKLg== dependencies: "@electron/get" "^2.0.0" "@types/node" "^18.11.18" - "extract-zip" "^2.0.1" - -"electron@20.1.0", "electron@26.3.0", "electron@file:/Users/bartkozorog/Projects/flowser/apps/electron": - "resolved" "file:apps/electron" - dependencies: - "@fingerprintjs/fingerprintjs" "^4.1.0" - "@sentry/electron" "^4.13.0" - "electron-debug" "^3.2.0" - "electron-log" "^4.4.8" - "electron-updater" "^6.1.4" - "mixpanel-browser" "^2.47.0" - "react" "^18.2.0" - "react-dom" "^18.2.0" - "react-hot-toast" "^2.1.1" - "react-router-dom" "^6.16.0" - "swr" "^2.2.4" - -"electronmon@^2.0.2": - "integrity" "sha512-Yw1CXEp5HJT9P6Sns3UP3Krwm5eb2JKqTRAVczKdsUa+U/dMTgONwKIHkPbKSSmtyTV+5JwobxkhFPiRgegObA==" - "resolved" "https://registry.npmjs.org/electronmon/-/electronmon-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "chalk" "^3.0.0" - "import-from" "^3.0.0" - "runtime-required" "^1.1.0" - "watchboy" "^0.4.3" - -"elliptic@^6.5.4": - "integrity" "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==" - "resolved" "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz" - "version" "6.5.4" - dependencies: - "bn.js" "^4.11.9" - "brorand" "^1.1.0" - "hash.js" "^1.0.0" - "hmac-drbg" "^1.0.1" - "inherits" "^2.0.4" - "minimalistic-assert" "^1.0.1" - "minimalistic-crypto-utils" "^1.0.1" - -"emittery@^0.13.1": - "integrity" "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==" - "resolved" "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz" - "version" "0.13.1" - -"emoji-regex@^8.0.0": - "integrity" "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" - "version" "8.0.0" - -"emoji-regex@^9.2.2": - "integrity" "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" - "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" - "version" "9.2.2" - -"emojis-list@^3.0.0": - "integrity" "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" - "resolved" "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz" - "version" "3.0.0" - -"encodeurl@~1.0.2": - "integrity" "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" - "resolved" "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" - "version" "1.0.2" - -"encoding@^0.1.0", "encoding@^0.1.13": - "integrity" "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==" - "resolved" "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz" - "version" "0.1.13" - dependencies: - "iconv-lite" "^0.6.2" - -"end-of-stream@^1.1.0": - "integrity" "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==" - "resolved" "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz" - "version" "1.4.4" - dependencies: - "once" "^1.4.0" - -"enhanced-resolve@^0.9.1": - "integrity" "sha512-kxpoMgrdtkXZ5h0SeraBS1iRntpTpQ3R8ussdb38+UAFnMGX5DDyJXePm+OCHOcoXvHDw7mc2erbJBpDnl7TPw==" - "resolved" "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz" - "version" "0.9.1" - dependencies: - "graceful-fs" "^4.1.2" - "memory-fs" "^0.2.0" - "tapable" "^0.1.8" - -"enhanced-resolve@^5.0.0", "enhanced-resolve@^5.12.0", "enhanced-resolve@^5.15.0", "enhanced-resolve@^5.7.0": - "integrity" "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==" - "resolved" "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz" - "version" "5.15.0" - dependencies: - "graceful-fs" "^4.2.4" - "tapable" "^2.2.0" - -"enquirer@>= 2.3.0 < 3": - "integrity" "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==" - "resolved" "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz" - "version" "2.3.6" - dependencies: - "ansi-colors" "^4.1.1" - -"entities@^2.0.0": - "integrity" "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" - "resolved" "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz" - "version" "2.2.0" - -"entities@^2.2.0": - "integrity" "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" - "resolved" "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz" - "version" "2.2.0" - -"entities@^4.2.0", "entities@^4.4.0": - "integrity" "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==" - "resolved" "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz" - "version" "4.5.0" - -"env-paths@^2.2.0": - "integrity" "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==" - "resolved" "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz" - "version" "2.2.1" - -"envinfo@^7.7.3": - "integrity" "sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw==" - "resolved" "https://registry.npmjs.org/envinfo/-/envinfo-7.10.0.tgz" - "version" "7.10.0" - -"err-code@^2.0.2": - "integrity" "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==" - "resolved" "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz" - "version" "2.0.3" - -"error-ex@^1.3.1": - "integrity" "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==" - "resolved" "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" - "version" "1.3.2" - dependencies: - "is-arrayish" "^0.2.1" - -"error-stack-parser@^2.0.6": - "integrity" "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==" - "resolved" "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz" - "version" "2.1.4" - dependencies: - "stackframe" "^1.3.4" - -"es-abstract@^1.22.1": - "integrity" "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==" - "resolved" "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz" - "version" "1.22.2" - dependencies: - "array-buffer-byte-length" "^1.0.0" - "arraybuffer.prototype.slice" "^1.0.2" - "available-typed-arrays" "^1.0.5" - "call-bind" "^1.0.2" - "es-set-tostringtag" "^2.0.1" - "es-to-primitive" "^1.2.1" - "function.prototype.name" "^1.1.6" - "get-intrinsic" "^1.2.1" - "get-symbol-description" "^1.0.0" - "globalthis" "^1.0.3" - "gopd" "^1.0.1" - "has" "^1.0.3" - "has-property-descriptors" "^1.0.0" - "has-proto" "^1.0.1" - "has-symbols" "^1.0.3" - "internal-slot" "^1.0.5" - "is-array-buffer" "^3.0.2" - "is-callable" "^1.2.7" - "is-negative-zero" "^2.0.2" - "is-regex" "^1.1.4" - "is-shared-array-buffer" "^1.0.2" - "is-string" "^1.0.7" - "is-typed-array" "^1.1.12" - "is-weakref" "^1.0.2" - "object-inspect" "^1.12.3" - "object-keys" "^1.1.1" - "object.assign" "^4.1.4" - "regexp.prototype.flags" "^1.5.1" - "safe-array-concat" "^1.0.1" - "safe-regex-test" "^1.0.0" - "string.prototype.trim" "^1.2.8" - "string.prototype.trimend" "^1.0.7" - "string.prototype.trimstart" "^1.0.7" - "typed-array-buffer" "^1.0.0" - "typed-array-byte-length" "^1.0.0" - "typed-array-byte-offset" "^1.0.0" - "typed-array-length" "^1.0.4" - "unbox-primitive" "^1.0.2" - "which-typed-array" "^1.1.11" - -"es-get-iterator@^1.1.3": - "integrity" "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==" - "resolved" "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz" - "version" "1.1.3" - dependencies: - "call-bind" "^1.0.2" - "get-intrinsic" "^1.1.3" - "has-symbols" "^1.0.3" - "is-arguments" "^1.1.1" - "is-map" "^2.0.2" - "is-set" "^2.0.2" - "is-string" "^1.0.7" - "isarray" "^2.0.5" - "stop-iteration-iterator" "^1.0.0" - -"es-iterator-helpers@^1.0.12": - "integrity" "sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==" - "resolved" "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz" - "version" "1.0.15" - dependencies: - "asynciterator.prototype" "^1.0.0" - "call-bind" "^1.0.2" - "define-properties" "^1.2.1" - "es-abstract" "^1.22.1" - "es-set-tostringtag" "^2.0.1" - "function-bind" "^1.1.1" - "get-intrinsic" "^1.2.1" - "globalthis" "^1.0.3" - "has-property-descriptors" "^1.0.0" - "has-proto" "^1.0.1" - "has-symbols" "^1.0.3" - "internal-slot" "^1.0.5" - "iterator.prototype" "^1.1.2" - "safe-array-concat" "^1.0.1" - -"es-module-lexer@^1.2.1": - "integrity" "sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==" - "resolved" "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.1.tgz" - "version" "1.3.1" - -"es-set-tostringtag@^2.0.1": - "integrity" "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==" - "resolved" "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "get-intrinsic" "^1.1.3" - "has" "^1.0.3" - "has-tostringtag" "^1.0.0" - -"es-shim-unscopables@^1.0.0": - "integrity" "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==" - "resolved" "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "has" "^1.0.3" - -"es-to-primitive@^1.2.1": - "integrity" "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==" - "resolved" "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz" - "version" "1.2.1" - dependencies: - "is-callable" "^1.1.4" - "is-date-object" "^1.0.1" - "is-symbol" "^1.0.2" - -"es6-error@^4.1.1": - "integrity" "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==" - "resolved" "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz" - "version" "4.1.1" - -"esbuild@^0.18.10": - "integrity" "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==" - "resolved" "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz" - "version" "0.18.20" - optionalDependencies: - "@esbuild/android-arm" "0.18.20" - "@esbuild/android-arm64" "0.18.20" - "@esbuild/android-x64" "0.18.20" - "@esbuild/darwin-arm64" "0.18.20" - "@esbuild/darwin-x64" "0.18.20" - "@esbuild/freebsd-arm64" "0.18.20" - "@esbuild/freebsd-x64" "0.18.20" - "@esbuild/linux-arm" "0.18.20" - "@esbuild/linux-arm64" "0.18.20" - "@esbuild/linux-ia32" "0.18.20" - "@esbuild/linux-loong64" "0.18.20" - "@esbuild/linux-mips64el" "0.18.20" - "@esbuild/linux-ppc64" "0.18.20" - "@esbuild/linux-riscv64" "0.18.20" - "@esbuild/linux-s390x" "0.18.20" - "@esbuild/linux-x64" "0.18.20" - "@esbuild/netbsd-x64" "0.18.20" - "@esbuild/openbsd-x64" "0.18.20" - "@esbuild/sunos-x64" "0.18.20" - "@esbuild/win32-arm64" "0.18.20" - "@esbuild/win32-ia32" "0.18.20" - "@esbuild/win32-x64" "0.18.20" - -"escalade@^3.1.1": - "integrity" "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" - "resolved" "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" - "version" "3.1.1" - -"escape-html@~1.0.3": - "integrity" "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - "resolved" "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" - "version" "1.0.3" - -"escape-string-regexp@^1.0.5": - "integrity" "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" - "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - "version" "1.0.5" - -"escape-string-regexp@^2.0.0": - "integrity" "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" - "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" - "version" "2.0.0" - -"escape-string-regexp@^4.0.0": - "integrity" "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" - "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" - "version" "4.0.0" - -"escodegen@^2.0.0": - "integrity" "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==" - "resolved" "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "esprima" "^4.0.1" - "estraverse" "^5.2.0" - "esutils" "^2.0.2" + extract-zip "^2.0.1" + +electronmon@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/electronmon/-/electronmon-2.0.2.tgz#082cb4c7cd5eee0602308c3253b17ecbef77aea8" + integrity sha512-Yw1CXEp5HJT9P6Sns3UP3Krwm5eb2JKqTRAVczKdsUa+U/dMTgONwKIHkPbKSSmtyTV+5JwobxkhFPiRgegObA== + dependencies: + chalk "^3.0.0" + import-from "^3.0.0" + runtime-required "^1.1.0" + watchboy "^0.4.3" + +elliptic@^6.5.4: + version "6.5.4" + resolved "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +emittery@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" + integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + +encoding@^0.1.13: + version "0.1.13" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" + integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== + dependencies: + iconv-lite "^0.6.2" + +end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +enhanced-resolve@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz#4d6e689b3725f86090927ccc86cd9f1635b89e2e" + integrity sha512-kxpoMgrdtkXZ5h0SeraBS1iRntpTpQ3R8ussdb38+UAFnMGX5DDyJXePm+OCHOcoXvHDw7mc2erbJBpDnl7TPw== + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.2.0" + tapable "^0.1.8" + +enhanced-resolve@^5.0.0, enhanced-resolve@^5.12.0, enhanced-resolve@^5.15.0, enhanced-resolve@^5.7.0: + version "5.15.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz#1af946c7d93603eb88e9896cee4904dc012e9c35" + integrity sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + +entities@^2.0.0, entities@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + +entities@^4.2.0, entities@^4.4.0: + version "4.5.0" + resolved "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz" + integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== + +env-paths@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== + +envinfo@^7.7.3: + version "7.10.0" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.10.0.tgz#55146e3909cc5fe63c22da63fb15b05aeac35b13" + integrity sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw== + +err-code@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" + integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +error-stack-parser@^2.0.6: + version "2.1.4" + resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.1.4.tgz#229cb01cdbfa84440bfa91876285b94680188286" + integrity sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ== + dependencies: + stackframe "^1.3.4" + +es-abstract@^1.22.1: + version "1.22.2" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.2.tgz#90f7282d91d0ad577f505e423e52d4c1d93c1b8a" + integrity sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA== + dependencies: + array-buffer-byte-length "^1.0.0" + arraybuffer.prototype.slice "^1.0.2" + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + es-set-tostringtag "^2.0.1" + es-to-primitive "^1.2.1" + function.prototype.name "^1.1.6" + get-intrinsic "^1.2.1" + get-symbol-description "^1.0.0" + globalthis "^1.0.3" + gopd "^1.0.1" + has "^1.0.3" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + internal-slot "^1.0.5" + is-array-buffer "^3.0.2" + is-callable "^1.2.7" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-typed-array "^1.1.12" + is-weakref "^1.0.2" + object-inspect "^1.12.3" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.5.1" + safe-array-concat "^1.0.1" + safe-regex-test "^1.0.0" + string.prototype.trim "^1.2.8" + string.prototype.trimend "^1.0.7" + string.prototype.trimstart "^1.0.7" + typed-array-buffer "^1.0.0" + typed-array-byte-length "^1.0.0" + typed-array-byte-offset "^1.0.0" + typed-array-length "^1.0.4" + unbox-primitive "^1.0.2" + which-typed-array "^1.1.11" + +es-get-iterator@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.3.tgz#3ef87523c5d464d41084b2c3c9c214f1199763d6" + integrity sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + has-symbols "^1.0.3" + is-arguments "^1.1.1" + is-map "^2.0.2" + is-set "^2.0.2" + is-string "^1.0.7" + isarray "^2.0.5" + stop-iteration-iterator "^1.0.0" + +es-iterator-helpers@^1.0.12: + version "1.0.15" + resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz#bd81d275ac766431d19305923707c3efd9f1ae40" + integrity sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g== + dependencies: + asynciterator.prototype "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.2.1" + es-abstract "^1.22.1" + es-set-tostringtag "^2.0.1" + function-bind "^1.1.1" + get-intrinsic "^1.2.1" + globalthis "^1.0.3" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + internal-slot "^1.0.5" + iterator.prototype "^1.1.2" + safe-array-concat "^1.0.1" + +es-module-lexer@^1.2.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.3.1.tgz#c1b0dd5ada807a3b3155315911f364dc4e909db1" + integrity sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q== + +es-set-tostringtag@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" + integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== + dependencies: + get-intrinsic "^1.1.3" + has "^1.0.3" + has-tostringtag "^1.0.0" + +es-shim-unscopables@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" + integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== + dependencies: + has "^1.0.3" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +es6-error@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" + integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +escodegen@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17" + integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w== + dependencies: + esprima "^4.0.1" + estraverse "^5.2.0" + esutils "^2.0.2" optionalDependencies: - "source-map" "~0.6.1" + source-map "~0.6.1" -"eslint-config-airbnb-base@^15.0.0": - "integrity" "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==" - "resolved" "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz" - "version" "15.0.0" +eslint-config-airbnb-base@^15.0.0: + version "15.0.0" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz#6b09add90ac79c2f8d723a2580e07f3925afd236" + integrity sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig== dependencies: - "confusing-browser-globals" "^1.0.10" - "object.assign" "^4.1.2" - "object.entries" "^1.1.5" - "semver" "^6.3.0" + confusing-browser-globals "^1.0.10" + object.assign "^4.1.2" + object.entries "^1.1.5" + semver "^6.3.0" -"eslint-config-airbnb-typescript@^17.1.0": - "integrity" "sha512-GPxI5URre6dDpJ0CtcthSZVBAfI+Uw7un5OYNVxP2EYi3H81Jw701yFP7AU+/vCE7xBtFmjge7kfhhk4+RAiig==" - "resolved" "https://registry.npmjs.org/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-17.1.0.tgz" - "version" "17.1.0" +eslint-config-airbnb-typescript@^17.1.0: + version "17.1.0" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-17.1.0.tgz#fda960eee4a510f092a9a1c139035ac588937ddc" + integrity sha512-GPxI5URre6dDpJ0CtcthSZVBAfI+Uw7un5OYNVxP2EYi3H81Jw701yFP7AU+/vCE7xBtFmjge7kfhhk4+RAiig== dependencies: - "eslint-config-airbnb-base" "^15.0.0" + eslint-config-airbnb-base "^15.0.0" -"eslint-config-airbnb@^19.0.4": - "integrity" "sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==" - "resolved" "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-19.0.4.tgz" - "version" "19.0.4" +eslint-config-airbnb@^19.0.4: + version "19.0.4" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb/-/eslint-config-airbnb-19.0.4.tgz#84d4c3490ad70a0ffa571138ebcdea6ab085fdc3" + integrity sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew== dependencies: - "eslint-config-airbnb-base" "^15.0.0" - "object.assign" "^4.1.2" - "object.entries" "^1.1.5" + eslint-config-airbnb-base "^15.0.0" + object.assign "^4.1.2" + object.entries "^1.1.5" -"eslint-config-erb@^4.1.0-0": - "integrity" "sha512-30Ysy1JJmxu+VElnNcBZLOsDRWHJh1exfCLMIwe1lscnby8WeTAWJNS0j+WgS9GzYm+5JoNeas90O1wq2bLnJQ==" - "resolved" "https://registry.npmjs.org/eslint-config-erb/-/eslint-config-erb-4.1.0.tgz" - "version" "4.1.0" +eslint-config-erb@^4.1.0-0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/eslint-config-erb/-/eslint-config-erb-4.1.0.tgz#7ebc016bd52452a79b66a2462c751fa60172f17f" + integrity sha512-30Ysy1JJmxu+VElnNcBZLOsDRWHJh1exfCLMIwe1lscnby8WeTAWJNS0j+WgS9GzYm+5JoNeas90O1wq2bLnJQ== dependencies: "@typescript-eslint/eslint-plugin" "^6.7.0" "@typescript-eslint/parser" "^6.7.0" - "eslint-config-airbnb" "^19.0.4" - "eslint-config-airbnb-typescript" "^17.1.0" - "eslint-config-prettier" "^9.0.0" - "eslint-plugin-compat" "^4.2.0" - "eslint-plugin-import" "^2.28.1" - "eslint-plugin-jest" "^27.4.0" - "eslint-plugin-jsx-a11y" "6.7.1" - "eslint-plugin-prettier" "^5.0.0" - "eslint-plugin-promise" "^6.1.1" - "eslint-plugin-react" "^7.33.2" - "eslint-plugin-react-hooks" "^4.6.0" - -"eslint-config-prettier@^9.0.0": - "integrity" "sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==" - "resolved" "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz" - "version" "9.0.0" - -"eslint-import-resolver-node@^0.3.7": - "integrity" "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==" - "resolved" "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz" - "version" "0.3.9" - dependencies: - "debug" "^3.2.7" - "is-core-module" "^2.13.0" - "resolve" "^1.22.4" - -"eslint-import-resolver-typescript@^3.6.0": - "integrity" "sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==" - "resolved" "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz" - "version" "3.6.1" - dependencies: - "debug" "^4.3.4" - "enhanced-resolve" "^5.12.0" - "eslint-module-utils" "^2.7.4" - "fast-glob" "^3.3.1" - "get-tsconfig" "^4.5.0" - "is-core-module" "^2.11.0" - "is-glob" "^4.0.3" - -"eslint-import-resolver-webpack@^0.13.7": - "integrity" "sha512-2a+meyMeABBRO4K53Oj1ygkmt5lhQS79Lmx2f684Qnv6gjvD4RLOM5jfPGTXwQ0A2K03WSoKt3HRQu/uBgxF7w==" - "resolved" "https://registry.npmjs.org/eslint-import-resolver-webpack/-/eslint-import-resolver-webpack-0.13.7.tgz" - "version" "0.13.7" - dependencies: - "array.prototype.find" "^2.2.1" - "debug" "^3.2.7" - "enhanced-resolve" "^0.9.1" - "find-root" "^1.1.0" - "has" "^1.0.3" - "interpret" "^1.4.0" - "is-core-module" "^2.13.0" - "is-regex" "^1.1.4" - "lodash" "^4.17.21" - "resolve" "^2.0.0-next.4" - "semver" "^5.7.2" - -"eslint-module-utils@^2.7.4", "eslint-module-utils@^2.8.0": - "integrity" "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==" - "resolved" "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz" - "version" "2.8.0" - dependencies: - "debug" "^3.2.7" - -"eslint-plugin-compat@^4.2.0": - "integrity" "sha512-RDKSYD0maWy5r7zb5cWQS+uSPc26mgOzdORJ8hxILmWM7S/Ncwky7BcAtXVY5iRbKjBdHsWU8Yg7hfoZjtkv7w==" - "resolved" "https://registry.npmjs.org/eslint-plugin-compat/-/eslint-plugin-compat-4.2.0.tgz" - "version" "4.2.0" + eslint-config-airbnb "^19.0.4" + eslint-config-airbnb-typescript "^17.1.0" + eslint-config-prettier "^9.0.0" + eslint-plugin-compat "^4.2.0" + eslint-plugin-import "^2.28.1" + eslint-plugin-jest "^27.4.0" + eslint-plugin-jsx-a11y "6.7.1" + eslint-plugin-prettier "^5.0.0" + eslint-plugin-promise "^6.1.1" + eslint-plugin-react "^7.33.2" + eslint-plugin-react-hooks "^4.6.0" + +eslint-config-prettier@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz#eb25485946dd0c66cd216a46232dc05451518d1f" + integrity sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw== + +eslint-import-resolver-node@^0.3.7: + version "0.3.9" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" + integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== + dependencies: + debug "^3.2.7" + is-core-module "^2.13.0" + resolve "^1.22.4" + +eslint-import-resolver-typescript@^3.6.0: + version "3.6.1" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz#7b983680edd3f1c5bce1a5829ae0bc2d57fe9efa" + integrity sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg== + dependencies: + debug "^4.3.4" + enhanced-resolve "^5.12.0" + eslint-module-utils "^2.7.4" + fast-glob "^3.3.1" + get-tsconfig "^4.5.0" + is-core-module "^2.11.0" + is-glob "^4.0.3" + +eslint-import-resolver-webpack@^0.13.7: + version "0.13.7" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-webpack/-/eslint-import-resolver-webpack-0.13.7.tgz#49cd0108767b1f8ff81123c7e1ae362305aad47b" + integrity sha512-2a+meyMeABBRO4K53Oj1ygkmt5lhQS79Lmx2f684Qnv6gjvD4RLOM5jfPGTXwQ0A2K03WSoKt3HRQu/uBgxF7w== + dependencies: + array.prototype.find "^2.2.1" + debug "^3.2.7" + enhanced-resolve "^0.9.1" + find-root "^1.1.0" + has "^1.0.3" + interpret "^1.4.0" + is-core-module "^2.13.0" + is-regex "^1.1.4" + lodash "^4.17.21" + resolve "^2.0.0-next.4" + semver "^5.7.2" + +eslint-module-utils@^2.7.4, eslint-module-utils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz#e439fee65fc33f6bba630ff621efc38ec0375c49" + integrity sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw== + dependencies: + debug "^3.2.7" + +eslint-plugin-compat@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-compat/-/eslint-plugin-compat-4.2.0.tgz#eeaf80daa1afe495c88a47e9281295acae45c0aa" + integrity sha512-RDKSYD0maWy5r7zb5cWQS+uSPc26mgOzdORJ8hxILmWM7S/Ncwky7BcAtXVY5iRbKjBdHsWU8Yg7hfoZjtkv7w== dependencies: "@mdn/browser-compat-data" "^5.3.13" - "ast-metadata-inferer" "^0.8.0" - "browserslist" "^4.21.10" - "caniuse-lite" "^1.0.30001524" - "find-up" "^5.0.0" - "lodash.memoize" "^4.1.2" - "semver" "^7.5.4" - -"eslint-plugin-import@*", "eslint-plugin-import@^2.25.2", "eslint-plugin-import@^2.25.3", "eslint-plugin-import@^2.28.1", "eslint-plugin-import@>=1.4.0": - "integrity" "sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==" - "resolved" "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz" - "version" "2.28.1" - dependencies: - "array-includes" "^3.1.6" - "array.prototype.findlastindex" "^1.2.2" - "array.prototype.flat" "^1.3.1" - "array.prototype.flatmap" "^1.3.1" - "debug" "^3.2.7" - "doctrine" "^2.1.0" - "eslint-import-resolver-node" "^0.3.7" - "eslint-module-utils" "^2.8.0" - "has" "^1.0.3" - "is-core-module" "^2.13.0" - "is-glob" "^4.0.3" - "minimatch" "^3.1.2" - "object.fromentries" "^2.0.6" - "object.groupby" "^1.0.0" - "object.values" "^1.1.6" - "semver" "^6.3.1" - "tsconfig-paths" "^3.14.2" - -"eslint-plugin-jest@^27.4.0": - "integrity" "sha512-3Nfvv3wbq2+PZlRTf2oaAWXWwbdBejFRBR2O8tAO67o+P8zno+QGbcDYaAXODlreXVg+9gvWhKKmG2rgfb8GEg==" - "resolved" "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.4.2.tgz" - "version" "27.4.2" + ast-metadata-inferer "^0.8.0" + browserslist "^4.21.10" + caniuse-lite "^1.0.30001524" + find-up "^5.0.0" + lodash.memoize "^4.1.2" + semver "^7.5.4" + +eslint-plugin-import@^2.28.1: + version "2.28.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz#63b8b5b3c409bfc75ebaf8fb206b07ab435482c4" + integrity sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A== + dependencies: + array-includes "^3.1.6" + array.prototype.findlastindex "^1.2.2" + array.prototype.flat "^1.3.1" + array.prototype.flatmap "^1.3.1" + debug "^3.2.7" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.7" + eslint-module-utils "^2.8.0" + has "^1.0.3" + is-core-module "^2.13.0" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.fromentries "^2.0.6" + object.groupby "^1.0.0" + object.values "^1.1.6" + semver "^6.3.1" + tsconfig-paths "^3.14.2" + +eslint-plugin-jest@^27.4.0: + version "27.4.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-27.4.2.tgz#181d999ac67a9b6040db1d27935887cf5a2882ed" + integrity sha512-3Nfvv3wbq2+PZlRTf2oaAWXWwbdBejFRBR2O8tAO67o+P8zno+QGbcDYaAXODlreXVg+9gvWhKKmG2rgfb8GEg== dependencies: "@typescript-eslint/utils" "^5.10.0" -"eslint-plugin-jsdoc@^40.0.0": - "integrity" "sha512-EhCqpzRkxoT2DUB4AnrU0ggBYvTh3bWrLZzQTupq6vSVE6XzNwJVKsOHa41GCoevnsWMBNmoDVjXWGqckjuG1g==" - "resolved" "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-40.3.0.tgz" - "version" "40.3.0" +eslint-plugin-jsdoc@^40.0.0: + version "40.3.0" + resolved "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-40.3.0.tgz" + integrity sha512-EhCqpzRkxoT2DUB4AnrU0ggBYvTh3bWrLZzQTupq6vSVE6XzNwJVKsOHa41GCoevnsWMBNmoDVjXWGqckjuG1g== dependencies: "@es-joy/jsdoccomment" "~0.37.0" - "comment-parser" "1.3.1" - "debug" "^4.3.4" - "escape-string-regexp" "^4.0.0" - "esquery" "^1.5.0" - "semver" "^7.3.8" - "spdx-expression-parse" "^3.0.1" - -"eslint-plugin-jsx-a11y@^6.5.1", "eslint-plugin-jsx-a11y@^6.7.1", "eslint-plugin-jsx-a11y@6.7.1": - "integrity" "sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==" - "resolved" "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz" - "version" "6.7.1" + comment-parser "1.3.1" + debug "^4.3.4" + escape-string-regexp "^4.0.0" + esquery "^1.5.0" + semver "^7.3.8" + spdx-expression-parse "^3.0.1" + +eslint-plugin-jsx-a11y@6.7.1, eslint-plugin-jsx-a11y@^6.7.1: + version "6.7.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz#fca5e02d115f48c9a597a6894d5bcec2f7a76976" + integrity sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA== dependencies: "@babel/runtime" "^7.20.7" - "aria-query" "^5.1.3" - "array-includes" "^3.1.6" - "array.prototype.flatmap" "^1.3.1" - "ast-types-flow" "^0.0.7" - "axe-core" "^4.6.2" - "axobject-query" "^3.1.1" - "damerau-levenshtein" "^1.0.8" - "emoji-regex" "^9.2.2" - "has" "^1.0.3" - "jsx-ast-utils" "^3.3.3" - "language-tags" "=1.0.5" - "minimatch" "^3.1.2" - "object.entries" "^1.1.6" - "object.fromentries" "^2.0.6" - "semver" "^6.3.0" - -"eslint-plugin-prettier@^5.0.0": - "integrity" "sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==" - "resolved" "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "prettier-linter-helpers" "^1.0.0" - "synckit" "^0.8.5" - -"eslint-plugin-promise@^6.1.1": - "integrity" "sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==" - "resolved" "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz" - "version" "6.1.1" - -"eslint-plugin-react-hooks@^4.3.0", "eslint-plugin-react-hooks@^4.6.0": - "integrity" "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==" - "resolved" "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz" - "version" "4.6.0" - -"eslint-plugin-react@^7.26.0", "eslint-plugin-react@^7.28.0", "eslint-plugin-react@^7.33.2": - "integrity" "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==" - "resolved" "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz" - "version" "7.33.2" - dependencies: - "array-includes" "^3.1.6" - "array.prototype.flatmap" "^1.3.1" - "array.prototype.tosorted" "^1.1.1" - "doctrine" "^2.1.0" - "es-iterator-helpers" "^1.0.12" - "estraverse" "^5.3.0" - "jsx-ast-utils" "^2.4.1 || ^3.0.0" - "minimatch" "^3.1.2" - "object.entries" "^1.1.6" - "object.fromentries" "^2.0.6" - "object.hasown" "^1.1.2" - "object.values" "^1.1.6" - "prop-types" "^15.8.1" - "resolve" "^2.0.0-next.4" - "semver" "^6.3.1" - "string.prototype.matchall" "^4.0.8" - -"eslint-scope@^5.1.1", "eslint-scope@5.1.1": - "integrity" "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==" - "resolved" "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" - "version" "5.1.1" - dependencies: - "esrecurse" "^4.3.0" - "estraverse" "^4.1.1" - -"eslint-scope@^7.2.2": - "integrity" "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==" - "resolved" "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz" - "version" "7.2.2" - dependencies: - "esrecurse" "^4.3.0" - "estraverse" "^5.2.0" - -"eslint-visitor-keys@^3.3.0": - "integrity" "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==" - "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" - "version" "3.4.3" - -"eslint-visitor-keys@^3.4.1", "eslint-visitor-keys@^3.4.3": - "integrity" "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==" - "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" - "version" "3.4.3" - -"eslint@*", "eslint@^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8", "eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8", "eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", "eslint@^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0", "eslint@^6.0.0 || ^7.0.0 || ^8.0.0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^7.0.0 || ^8.0.0", "eslint@^7.32.0", "eslint@^7.32.0 || ^8.2.0", "eslint@^8.34.0", "eslint@^8.49.0", "eslint@>=7 || >=8", "eslint@>=7.0.0", "eslint@>=8.0.0", "eslint@8.51.0": - "integrity" "sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==" - "resolved" "https://registry.npmjs.org/eslint/-/eslint-8.51.0.tgz" - "version" "8.51.0" + aria-query "^5.1.3" + array-includes "^3.1.6" + array.prototype.flatmap "^1.3.1" + ast-types-flow "^0.0.7" + axe-core "^4.6.2" + axobject-query "^3.1.1" + damerau-levenshtein "^1.0.8" + emoji-regex "^9.2.2" + has "^1.0.3" + jsx-ast-utils "^3.3.3" + language-tags "=1.0.5" + minimatch "^3.1.2" + object.entries "^1.1.6" + object.fromentries "^2.0.6" + semver "^6.3.0" + +eslint-plugin-prettier@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.1.tgz#a3b399f04378f79f066379f544e42d6b73f11515" + integrity sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg== + dependencies: + prettier-linter-helpers "^1.0.0" + synckit "^0.8.5" + +eslint-plugin-promise@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz#269a3e2772f62875661220631bd4dafcb4083816" + integrity sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig== + +eslint-plugin-react-hooks@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" + integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== + +eslint-plugin-react@^7.33.2: + version "7.33.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz#69ee09443ffc583927eafe86ffebb470ee737608" + integrity sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw== + dependencies: + array-includes "^3.1.6" + array.prototype.flatmap "^1.3.1" + array.prototype.tosorted "^1.1.1" + doctrine "^2.1.0" + es-iterator-helpers "^1.0.12" + estraverse "^5.3.0" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.1.2" + object.entries "^1.1.6" + object.fromentries "^2.0.6" + object.hasown "^1.1.2" + object.values "^1.1.6" + prop-types "^15.8.1" + resolve "^2.0.0-next.4" + semver "^6.3.1" + string.prototype.matchall "^4.0.8" + +eslint-scope@5.1.1, eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint@^8.34.0, eslint@^8.49.0: + version "8.51.0" + resolved "https://registry.npmjs.org/eslint/-/eslint-8.51.0.tgz" + integrity sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.6.1" @@ -5687,1887 +5487,1740 @@ "@humanwhocodes/config-array" "^0.11.11" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" - "ajv" "^6.12.4" - "chalk" "^4.0.0" - "cross-spawn" "^7.0.2" - "debug" "^4.3.2" - "doctrine" "^3.0.0" - "escape-string-regexp" "^4.0.0" - "eslint-scope" "^7.2.2" - "eslint-visitor-keys" "^3.4.3" - "espree" "^9.6.1" - "esquery" "^1.4.2" - "esutils" "^2.0.2" - "fast-deep-equal" "^3.1.3" - "file-entry-cache" "^6.0.1" - "find-up" "^5.0.0" - "glob-parent" "^6.0.2" - "globals" "^13.19.0" - "graphemer" "^1.4.0" - "ignore" "^5.2.0" - "imurmurhash" "^0.1.4" - "is-glob" "^4.0.0" - "is-path-inside" "^3.0.3" - "js-yaml" "^4.1.0" - "json-stable-stringify-without-jsonify" "^1.0.1" - "levn" "^0.4.1" - "lodash.merge" "^4.6.2" - "minimatch" "^3.1.2" - "natural-compare" "^1.4.0" - "optionator" "^0.9.3" - "strip-ansi" "^6.0.1" - "text-table" "^0.2.0" - -"espree@^9.6.0", "espree@^9.6.1": - "integrity" "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==" - "resolved" "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz" - "version" "9.6.1" - dependencies: - "acorn" "^8.9.0" - "acorn-jsx" "^5.3.2" - "eslint-visitor-keys" "^3.4.1" - -"esprima@^4.0.0", "esprima@^4.0.1": - "integrity" "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - "resolved" "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" - "version" "4.0.1" - -"esquery@^1.4.2", "esquery@^1.5.0": - "integrity" "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==" - "resolved" "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz" - "version" "1.5.0" - dependencies: - "estraverse" "^5.1.0" - -"esrecurse@^4.3.0": - "integrity" "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==" - "resolved" "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" - "version" "4.3.0" - dependencies: - "estraverse" "^5.2.0" - -"estraverse@^4.1.1": - "integrity" "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" - "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" - "version" "4.3.0" - -"estraverse@^5.1.0", "estraverse@^5.2.0", "estraverse@^5.3.0": - "integrity" "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" - "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" - "version" "5.3.0" - -"estree-walker@^2.0.2": - "integrity" "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" - "resolved" "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz" - "version" "2.0.2" - -"esutils@^2.0.2": - "integrity" "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" - "resolved" "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" - "version" "2.0.3" - -"etag@~1.8.1": - "integrity" "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" - "resolved" "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" - "version" "1.8.1" - -"event-target-shim@^5.0.0": - "integrity" "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" - "resolved" "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz" - "version" "5.0.1" - -"eventemitter3@^4.0.0": - "integrity" "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - "resolved" "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" - "version" "4.0.7" - -"events@^3.2.0": - "integrity" "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" - "resolved" "https://registry.npmjs.org/events/-/events-3.3.0.tgz" - "version" "3.3.0" - -"execa@^5.0.0", "execa@^5.1.1": - "integrity" "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==" - "resolved" "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" - "version" "5.1.1" - 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" - -"execa@^7.1.1": - "integrity" "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==" - "resolved" "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz" - "version" "7.2.0" - dependencies: - "cross-spawn" "^7.0.3" - "get-stream" "^6.0.1" - "human-signals" "^4.3.0" - "is-stream" "^3.0.0" - "merge-stream" "^2.0.0" - "npm-run-path" "^5.1.0" - "onetime" "^6.0.0" - "signal-exit" "^3.0.7" - "strip-final-newline" "^3.0.0" - -"exit@^0.1.2": - "integrity" "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==" - "resolved" "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" - "version" "0.1.2" - -"expect@^27.5.1": - "integrity" "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==" - "resolved" "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@jest/types" "^27.5.1" - "jest-get-type" "^27.5.1" - "jest-matcher-utils" "^27.5.1" - "jest-message-util" "^27.5.1" - -"expect@^29.0.0", "expect@^29.7.0": - "integrity" "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==" - "resolved" "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz" - "version" "29.7.0" + ajv "^6.12.4" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" + ignore "^5.2.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" + +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== + dependencies: + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" + +esprima@^4.0.0, esprima@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.4.2, esquery@^1.5.0: + version "1.5.0" + resolved "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz" + integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: + version "5.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +estree-walker@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + +event-target-shim@^5.0.0: + 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== + +eventemitter3@^4.0.0: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +events@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +execa@^5.0.0, execa@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + 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" + +execa@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-7.2.0.tgz#657e75ba984f42a70f38928cedc87d6f2d4fe4e9" + integrity sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.1" + human-signals "^4.3.0" + is-stream "^3.0.0" + merge-stream "^2.0.0" + npm-run-path "^5.1.0" + onetime "^6.0.0" + signal-exit "^3.0.7" + strip-final-newline "^3.0.0" + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== + +expect@^29.0.0, expect@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz" + integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== dependencies: "@jest/expect-utils" "^29.7.0" - "jest-get-type" "^29.6.3" - "jest-matcher-utils" "^29.7.0" - "jest-message-util" "^29.7.0" - "jest-util" "^29.7.0" - -"exponential-backoff@^3.1.1": - "integrity" "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==" - "resolved" "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz" - "version" "3.1.1" - -"express@^4.17.3": - "integrity" "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==" - "resolved" "https://registry.npmjs.org/express/-/express-4.18.2.tgz" - "version" "4.18.2" - dependencies: - "accepts" "~1.3.8" - "array-flatten" "1.1.1" - "body-parser" "1.20.1" - "content-disposition" "0.5.4" - "content-type" "~1.0.4" - "cookie" "0.5.0" - "cookie-signature" "1.0.6" - "debug" "2.6.9" - "depd" "2.0.0" - "encodeurl" "~1.0.2" - "escape-html" "~1.0.3" - "etag" "~1.8.1" - "finalhandler" "1.2.0" - "fresh" "0.5.2" - "http-errors" "2.0.0" - "merge-descriptors" "1.0.1" - "methods" "~1.1.2" - "on-finished" "2.4.1" - "parseurl" "~1.3.3" - "path-to-regexp" "0.1.7" - "proxy-addr" "~2.0.7" - "qs" "6.11.0" - "range-parser" "~1.2.1" - "safe-buffer" "5.2.1" - "send" "0.18.0" - "serve-static" "1.15.0" - "setprototypeof" "1.2.0" - "statuses" "2.0.1" - "type-is" "~1.6.18" - "utils-merge" "1.0.1" - "vary" "~1.1.2" - -"extract-zip@^2.0.1": - "integrity" "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==" - "resolved" "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "debug" "^4.1.1" - "get-stream" "^5.1.0" - "yauzl" "^2.10.0" + jest-get-type "^29.6.3" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + +exponential-backoff@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/exponential-backoff/-/exponential-backoff-3.1.1.tgz#64ac7526fe341ab18a39016cd22c787d01e00bf6" + integrity sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw== + +express@^4.17.3: + version "4.18.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" + integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== + dependencies: + accepts "~1.3.8" + array-flatten "1.1.1" + body-parser "1.20.1" + content-disposition "0.5.4" + content-type "~1.0.4" + cookie "0.5.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "2.0.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.2.0" + fresh "0.5.2" + http-errors "2.0.0" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "2.4.1" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.7" + qs "6.11.0" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "0.18.0" + serve-static "1.15.0" + setprototypeof "1.2.0" + statuses "2.0.1" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +extract-zip@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" + integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg== + dependencies: + debug "^4.1.1" + get-stream "^5.1.0" + yauzl "^2.10.0" optionalDependencies: "@types/yauzl" "^2.9.1" -"extsprintf@^1.2.0": - "integrity" "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==" - "resolved" "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz" - "version" "1.3.0" +extsprintf@^1.2.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" + integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== -"fast-deep-equal@^3.1.1", "fast-deep-equal@^3.1.3": - "integrity" "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - "resolved" "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" - "version" "3.1.3" +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + 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== -"fast-diff@^1.1.2": - "integrity" "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==" - "resolved" "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz" - "version" "1.3.0" +fast-diff@^1.1.2: + version "1.3.0" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" + integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== -"fast-glob@^3.2.9", "fast-glob@^3.3.0", "fast-glob@^3.3.1": - "integrity" "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==" - "resolved" "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz" - "version" "3.3.1" +fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" + integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== 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" - -"fast-json-stable-stringify@^2.0.0", "fast-json-stable-stringify@^2.1.0", "fast-json-stable-stringify@2.x": - "integrity" "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - "resolved" "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" - "version" "2.1.0" - -"fast-levenshtein@^2.0.6": - "integrity" "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" - "resolved" "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" - "version" "2.0.6" - -"fastest-levenshtein@^1.0.12": - "integrity" "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==" - "resolved" "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz" - "version" "1.0.16" - -"fastq@^1.6.0": - "integrity" "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==" - "resolved" "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz" - "version" "1.15.0" - dependencies: - "reusify" "^1.0.4" - -"faye-websocket@^0.11.3": - "integrity" "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==" - "resolved" "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz" - "version" "0.11.4" - dependencies: - "websocket-driver" ">=0.5.1" - -"fb-watchman@^2.0.0": - "integrity" "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==" - "resolved" "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "bser" "2.1.1" - -"fbemitter@^3.0.0": - "integrity" "sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==" - "resolved" "https://registry.npmjs.org/fbemitter/-/fbemitter-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "fbjs" "^3.0.0" - -"fbjs-css-vars@^1.0.0": - "integrity" "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==" - "resolved" "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz" - "version" "1.0.2" - -"fbjs@^3.0.0", "fbjs@^3.0.1": - "integrity" "sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==" - "resolved" "https://registry.npmjs.org/fbjs/-/fbjs-3.0.5.tgz" - "version" "3.0.5" - dependencies: - "cross-fetch" "^3.1.5" - "fbjs-css-vars" "^1.0.0" - "loose-envify" "^1.0.0" - "object-assign" "^4.1.0" - "promise" "^7.1.1" - "setimmediate" "^1.0.5" - "ua-parser-js" "^1.0.35" - -"fd-slicer@~1.1.0": - "integrity" "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==" - "resolved" "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz" - "version" "1.1.0" - dependencies: - "pend" "~1.2.0" - -"file-entry-cache@^6.0.1": - "integrity" "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==" - "resolved" "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" - "version" "6.0.1" - dependencies: - "flat-cache" "^3.0.4" - -"file-loader@*", "file-loader@^6.2.0": - "integrity" "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==" - "resolved" "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz" - "version" "6.2.0" - dependencies: - "loader-utils" "^2.0.0" - "schema-utils" "^3.0.0" - -"filelist@^1.0.4": - "integrity" "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==" - "resolved" "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz" - "version" "1.0.4" - dependencies: - "minimatch" "^5.0.1" - -"fill-range@^7.0.1": - "integrity" "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==" - "resolved" "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" - "version" "7.0.1" - dependencies: - "to-regex-range" "^5.0.1" - -"finalhandler@1.2.0": - "integrity" "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==" - "resolved" "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz" - "version" "1.2.0" - dependencies: - "debug" "2.6.9" - "encodeurl" "~1.0.2" - "escape-html" "~1.0.3" - "on-finished" "2.4.1" - "parseurl" "~1.3.3" - "statuses" "2.0.1" - "unpipe" "~1.0.0" - -"find-root@^1.1.0": - "integrity" "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" - "resolved" "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz" - "version" "1.1.0" - -"find-up@^4.0.0": - "integrity" "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==" - "resolved" "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "locate-path" "^5.0.0" - "path-exists" "^4.0.0" - -"find-up@^4.1.0": - "integrity" "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==" - "resolved" "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "locate-path" "^5.0.0" - "path-exists" "^4.0.0" - -"find-up@^5.0.0": - "integrity" "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==" - "resolved" "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "locate-path" "^6.0.0" - "path-exists" "^4.0.0" - -"flat-cache@^3.0.4": - "integrity" "sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==" - "resolved" "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "flatted" "^3.2.7" - "keyv" "^4.5.3" - "rimraf" "^3.0.2" - -"flatted@^3.2.7": - "integrity" "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==" - "resolved" "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz" - "version" "3.2.9" - -"flux@^4.0.1": - "integrity" "sha512-NCj3XlayA2UsapRpM7va6wU1+9rE5FIL7qoMcmxWHRzbp0yujihMBm9BBHZ1MDIk5h5o2Bl6eGiCe8rYELAmYw==" - "resolved" "https://registry.npmjs.org/flux/-/flux-4.0.4.tgz" - "version" "4.0.4" - dependencies: - "fbemitter" "^3.0.0" - "fbjs" "^3.0.1" - -"follow-redirects@^1.0.0", "follow-redirects@^1.14.0": - "integrity" "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==" - "resolved" "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz" - "version" "1.15.3" - -"for-each@^0.3.3": - "integrity" "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==" - "resolved" "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz" - "version" "0.3.3" - dependencies: - "is-callable" "^1.1.3" - -"foreground-child@^3.1.0": - "integrity" "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==" - "resolved" "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz" - "version" "3.1.1" - dependencies: - "cross-spawn" "^7.0.0" - "signal-exit" "^4.0.1" - -"form-data@^4.0.0": - "integrity" "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==" - "resolved" "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "asynckit" "^0.4.0" - "combined-stream" "^1.0.8" - "mime-types" "^2.1.12" - -"formik@^2.2.9": - "integrity" "sha512-Gxlht0TD3vVdzMDHwkiNZqJ7Mvg77xQNfmBRrNtvzcHZs72TJppSTDKHpImCMJZwcWPBJ8jSQQ95GJzXFf1nAQ==" - "resolved" "https://registry.npmjs.org/formik/-/formik-2.4.5.tgz" - "version" "2.4.5" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: + 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== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fastest-levenshtein@^1.0.12: + version "1.0.16" + resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" + integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== + +fastq@^1.6.0: + version "1.15.0" + resolved "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz" + integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== + dependencies: + reusify "^1.0.4" + +faye-websocket@^0.11.3: + version "0.11.4" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" + integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== + dependencies: + websocket-driver ">=0.5.1" + +fb-watchman@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" + integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== + dependencies: + bser "2.1.1" + +fbemitter@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/fbemitter/-/fbemitter-3.0.0.tgz" + integrity sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw== + dependencies: + fbjs "^3.0.0" + +fbjs-css-vars@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz" + integrity sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ== + +fbjs@^3.0.0, fbjs@^3.0.1: + version "3.0.5" + resolved "https://registry.npmjs.org/fbjs/-/fbjs-3.0.5.tgz" + integrity sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg== + dependencies: + cross-fetch "^3.1.5" + fbjs-css-vars "^1.0.0" + loose-envify "^1.0.0" + object-assign "^4.1.0" + promise "^7.1.1" + setimmediate "^1.0.5" + ua-parser-js "^1.0.35" + +fd-slicer@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" + integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g== + dependencies: + pend "~1.2.0" + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +file-loader@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" + integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== + dependencies: + loader-utils "^2.0.0" + schema-utils "^3.0.0" + +filelist@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" + integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== + dependencies: + minimatch "^5.0.1" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" + integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "2.4.1" + parseurl "~1.3.3" + statuses "2.0.1" + unpipe "~1.0.0" + +find-root@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" + integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== + +find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flat-cache@^3.0.4: + version "3.1.0" + resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.0.tgz" + integrity sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew== + dependencies: + flatted "^3.2.7" + keyv "^4.5.3" + rimraf "^3.0.2" + +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + +flatted@^3.2.7: + version "3.2.9" + resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz" + integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== + +flux@^4.0.1: + version "4.0.4" + resolved "https://registry.npmjs.org/flux/-/flux-4.0.4.tgz" + integrity sha512-NCj3XlayA2UsapRpM7va6wU1+9rE5FIL7qoMcmxWHRzbp0yujihMBm9BBHZ1MDIk5h5o2Bl6eGiCe8rYELAmYw== + dependencies: + fbemitter "^3.0.0" + fbjs "^3.0.1" + +follow-redirects@^1.0.0, follow-redirects@^1.14.0: + version "1.15.3" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz" + integrity sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q== + +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + +foreground-child@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" + integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^4.0.1" + +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +formik@^2.2.9: + version "2.4.5" + resolved "https://registry.npmjs.org/formik/-/formik-2.4.5.tgz" + integrity sha512-Gxlht0TD3vVdzMDHwkiNZqJ7Mvg77xQNfmBRrNtvzcHZs72TJppSTDKHpImCMJZwcWPBJ8jSQQ95GJzXFf1nAQ== dependencies: "@types/hoist-non-react-statics" "^3.3.1" - "deepmerge" "^2.1.1" - "hoist-non-react-statics" "^3.3.0" - "lodash" "^4.17.21" - "lodash-es" "^4.17.21" - "react-fast-compare" "^2.0.1" - "tiny-warning" "^1.0.2" - "tslib" "^2.0.0" - -"forwarded@0.2.0": - "integrity" "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" - "resolved" "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" - "version" "0.2.0" - -"fresh@0.5.2": - "integrity" "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" - "resolved" "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" - "version" "0.5.2" - -"fs-extra@^10.0.0", "fs-extra@^10.1.0": - "integrity" "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==" - "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz" - "version" "10.1.0" - dependencies: - "graceful-fs" "^4.2.0" - "jsonfile" "^6.0.1" - "universalify" "^2.0.0" - -"fs-extra@^8.1.0": - "integrity" "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==" - "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz" - "version" "8.1.0" - dependencies: - "graceful-fs" "^4.2.0" - "jsonfile" "^4.0.0" - "universalify" "^0.1.0" - -"fs-extra@^9.0.0": - "integrity" "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==" - "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" - "version" "9.1.0" - dependencies: - "at-least-node" "^1.0.0" - "graceful-fs" "^4.2.0" - "jsonfile" "^6.0.1" - "universalify" "^2.0.0" - -"fs-extra@^9.0.1": - "integrity" "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==" - "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" - "version" "9.1.0" - dependencies: - "at-least-node" "^1.0.0" - "graceful-fs" "^4.2.0" - "jsonfile" "^6.0.1" - "universalify" "^2.0.0" - -"fs-minipass@^2.0.0": - "integrity" "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==" - "resolved" "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "minipass" "^3.0.0" - -"fs-minipass@^3.0.0": - "integrity" "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==" - "resolved" "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz" - "version" "3.0.3" - dependencies: - "minipass" "^7.0.3" - -"fs-monkey@^1.0.4": - "integrity" "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==" - "resolved" "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz" - "version" "1.0.5" - -"fs.realpath@^1.0.0": - "integrity" "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - "resolved" "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - "version" "1.0.0" - -"fsevents@^2.3.2", "fsevents@~2.3.2": - "integrity" "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==" - "resolved" "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz" - "version" "2.3.3" - -"function-bind@^1.1.1": - "integrity" "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - "resolved" "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" - "version" "1.1.1" - -"function.prototype.name@^1.1.5", "function.prototype.name@^1.1.6": - "integrity" "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==" - "resolved" "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz" - "version" "1.1.6" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.2.0" - "es-abstract" "^1.22.1" - "functions-have-names" "^1.2.3" - -"functions-have-names@^1.2.3": - "integrity" "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" - "resolved" "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" - "version" "1.2.3" - -"gauge@^4.0.3": - "integrity" "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==" - "resolved" "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz" - "version" "4.0.4" - 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" - -"gensync@^1.0.0-beta.2": - "integrity" "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" - "resolved" "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" - "version" "1.0.0-beta.2" - -"get-caller-file@^2.0.5": - "integrity" "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" - "resolved" "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" - "version" "2.0.5" - -"get-intrinsic@^1.0.2", "get-intrinsic@^1.1.1", "get-intrinsic@^1.1.3", "get-intrinsic@^1.2.0", "get-intrinsic@^1.2.1": - "integrity" "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==" - "resolved" "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz" - "version" "1.2.1" - dependencies: - "function-bind" "^1.1.1" - "has" "^1.0.3" - "has-proto" "^1.0.1" - "has-symbols" "^1.0.3" - -"get-package-type@^0.1.0": - "integrity" "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==" - "resolved" "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz" - "version" "0.1.0" - -"get-stream@^5.1.0": - "integrity" "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==" - "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz" - "version" "5.2.0" - dependencies: - "pump" "^3.0.0" - -"get-stream@^6.0.0", "get-stream@^6.0.1": - "integrity" "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" - "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" - "version" "6.0.1" - -"get-symbol-description@^1.0.0": - "integrity" "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==" - "resolved" "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "call-bind" "^1.0.2" - "get-intrinsic" "^1.1.1" - -"get-tsconfig@^4.5.0": - "integrity" "sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==" - "resolved" "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.2.tgz" - "version" "4.7.2" - dependencies: - "resolve-pkg-maps" "^1.0.0" - -"glob-parent@^5.1.2", "glob-parent@~5.1.2": - "integrity" "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==" - "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" - "version" "5.1.2" - dependencies: - "is-glob" "^4.0.1" - -"glob-parent@^6.0.2": - "integrity" "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==" - "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" - "version" "6.0.2" - dependencies: - "is-glob" "^4.0.3" - -"glob-to-regexp@^0.4.1": - "integrity" "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" - "resolved" "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" - "version" "0.4.1" - -"glob@^10.2.2": - "integrity" "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==" - "resolved" "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz" - "version" "10.3.10" - dependencies: - "foreground-child" "^3.1.0" - "jackspeak" "^2.3.5" - "minimatch" "^9.0.1" - "minipass" "^5.0.0 || ^6.0.2 || ^7.0.0" - "path-scurry" "^1.10.1" - -"glob@^10.3.7": - "integrity" "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==" - "resolved" "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz" - "version" "10.3.10" - dependencies: - "foreground-child" "^3.1.0" - "jackspeak" "^2.3.5" - "minimatch" "^9.0.1" - "minipass" "^5.0.0 || ^6.0.2 || ^7.0.0" - "path-scurry" "^1.10.1" - -"glob@^7.1.3", "glob@^7.1.4", "glob@^7.1.6": - "integrity" "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==" - "resolved" "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" - "version" "7.2.3" - dependencies: - "fs.realpath" "^1.0.0" - "inflight" "^1.0.4" - "inherits" "2" - "minimatch" "^3.1.1" - "once" "^1.3.0" - "path-is-absolute" "^1.0.0" - -"global-agent@^3.0.0": - "integrity" "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==" - "resolved" "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "boolean" "^3.0.1" - "es6-error" "^4.1.1" - "matcher" "^3.0.0" - "roarr" "^2.15.3" - "semver" "^7.3.2" - "serialize-error" "^7.0.1" - -"globals@^11.1.0": - "integrity" "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" - "resolved" "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" - "version" "11.12.0" - -"globals@^13.19.0": - "integrity" "sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw==" - "resolved" "https://registry.npmjs.org/globals/-/globals-13.22.0.tgz" - "version" "13.22.0" - dependencies: - "type-fest" "^0.20.2" - -"globalthis@^1.0.1", "globalthis@^1.0.3": - "integrity" "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==" - "resolved" "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz" - "version" "1.0.3" - dependencies: - "define-properties" "^1.1.3" - -"globby@^11.1.0": - "integrity" "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==" - "resolved" "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" - "version" "11.1.0" - 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" - -"goober@^2.1.10": - "integrity" "sha512-jFj3BQeleOoy7t93E9rZ2de+ScC4lQICLwiAQmKMg9F6roKGaLSHoCDYKkWlSafg138jejvq/mTdvmnwDQgqoQ==" - "resolved" "https://registry.npmjs.org/goober/-/goober-2.1.13.tgz" - "version" "2.1.13" - -"gopd@^1.0.1": - "integrity" "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==" - "resolved" "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "get-intrinsic" "^1.1.3" - -"got@^11.7.0": - "integrity" "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==" - "resolved" "https://registry.npmjs.org/got/-/got-11.8.6.tgz" - "version" "11.8.6" + deepmerge "^2.1.1" + hoist-non-react-statics "^3.3.0" + lodash "^4.17.21" + lodash-es "^4.17.21" + react-fast-compare "^2.0.1" + tiny-warning "^1.0.2" + tslib "^2.0.0" + +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + +fs-extra@^10.0.0, fs-extra@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^9.0.0, fs-extra@^9.0.1: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + +fs-minipass@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-3.0.3.tgz#79a85981c4dc120065e96f62086bf6f9dc26cc54" + integrity sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw== + dependencies: + minipass "^7.0.3" + +fs-monkey@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.5.tgz#fe450175f0db0d7ea758102e1d84096acb925788" + integrity sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew== + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@^2.3.2, fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +function-bind@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +function.prototype.name@^1.1.5, function.prototype.name@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" + integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + functions-have-names "^1.2.3" + +functions-have-names@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + +gauge@^4.0.3: + version "4.0.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" + integrity sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg== + 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" + +gensync@^1.0.0-beta.2: + 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@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82" + integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-proto "^1.0.1" + has-symbols "^1.0.3" + +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + +get-stream@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + +get-stream@^6.0.0, get-stream@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + +get-tsconfig@^4.5.0: + version "4.7.2" + resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.7.2.tgz#0dcd6fb330391d46332f4c6c1bf89a6514c2ddce" + integrity sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A== + dependencies: + resolve-pkg-maps "^1.0.0" + +glob-parent@^5.1.2, glob-parent@~5.1.2: + 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" + +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + +glob@^10.2.2, glob@^10.3.7: + version "10.3.10" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.10.tgz#0351ebb809fd187fe421ab96af83d3a70715df4b" + integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== + dependencies: + foreground-child "^3.1.0" + jackspeak "^2.3.5" + minimatch "^9.0.1" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-scurry "^1.10.1" + +glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: + version "7.2.3" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-agent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-agent/-/global-agent-3.0.0.tgz#ae7cd31bd3583b93c5a16437a1afe27cc33a1ab6" + integrity sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q== + dependencies: + boolean "^3.0.1" + es6-error "^4.1.1" + matcher "^3.0.0" + roarr "^2.15.3" + semver "^7.3.2" + serialize-error "^7.0.1" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^13.19.0: + version "13.22.0" + resolved "https://registry.npmjs.org/globals/-/globals-13.22.0.tgz" + integrity sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw== + dependencies: + type-fest "^0.20.2" + +globalthis@^1.0.1, globalthis@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" + integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== + dependencies: + define-properties "^1.1.3" + +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + 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" + +goober@^2.1.10: + version "2.1.13" + resolved "https://registry.npmjs.org/goober/-/goober-2.1.13.tgz" + integrity sha512-jFj3BQeleOoy7t93E9rZ2de+ScC4lQICLwiAQmKMg9F6roKGaLSHoCDYKkWlSafg138jejvq/mTdvmnwDQgqoQ== + +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + +got@^11.7.0, got@^11.8.5: + version "11.8.6" + resolved "https://registry.yarnpkg.com/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a" + integrity sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g== dependencies: "@sindresorhus/is" "^4.0.0" "@szmarczak/http-timer" "^4.0.5" "@types/cacheable-request" "^6.0.1" "@types/responselike" "^1.0.0" - "cacheable-lookup" "^5.0.3" - "cacheable-request" "^7.0.2" - "decompress-response" "^6.0.0" - "http2-wrapper" "^1.0.0-beta.5.2" - "lowercase-keys" "^2.0.0" - "p-cancelable" "^2.0.0" - "responselike" "^2.0.0" - -"got@^11.8.5": - "integrity" "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==" - "resolved" "https://registry.npmjs.org/got/-/got-11.8.6.tgz" - "version" "11.8.6" - dependencies: - "@sindresorhus/is" "^4.0.0" - "@szmarczak/http-timer" "^4.0.5" - "@types/cacheable-request" "^6.0.1" - "@types/responselike" "^1.0.0" - "cacheable-lookup" "^5.0.3" - "cacheable-request" "^7.0.2" - "decompress-response" "^6.0.0" - "http2-wrapper" "^1.0.0-beta.5.2" - "lowercase-keys" "^2.0.0" - "p-cancelable" "^2.0.0" - "responselike" "^2.0.0" - -"graceful-fs@^4.1.2", "graceful-fs@^4.1.6", "graceful-fs@^4.2.0", "graceful-fs@^4.2.4", "graceful-fs@^4.2.6", "graceful-fs@^4.2.9": - "integrity" "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - "resolved" "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" - "version" "4.2.11" - -"graphemer@^1.4.0": - "integrity" "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==" - "resolved" "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz" - "version" "1.4.0" - -"gzip-size@^6.0.0": - "integrity" "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==" - "resolved" "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "duplexer" "^0.1.2" - -"handle-thing@^2.0.0": - "integrity" "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" - "resolved" "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz" - "version" "2.0.1" - -"harmony-reflect@^1.4.6": - "integrity" "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==" - "resolved" "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz" - "version" "1.6.2" - -"has-bigints@^1.0.1", "has-bigints@^1.0.2": - "integrity" "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" - "resolved" "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz" - "version" "1.0.2" - -"has-flag@^3.0.0": - "integrity" "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" - "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" - "version" "3.0.0" - -"has-flag@^4.0.0": - "integrity" "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" - "version" "4.0.0" - -"has-property-descriptors@^1.0.0": - "integrity" "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==" - "resolved" "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "get-intrinsic" "^1.1.1" - -"has-proto@^1.0.1": - "integrity" "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" - "resolved" "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz" - "version" "1.0.1" - -"has-symbols@^1.0.2", "has-symbols@^1.0.3": - "integrity" "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" - "resolved" "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" - "version" "1.0.3" - -"has-tostringtag@^1.0.0": - "integrity" "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==" - "resolved" "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "has-symbols" "^1.0.2" - -"has-unicode@^2.0.1": - "integrity" "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" - "resolved" "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz" - "version" "2.0.1" - -"has@^1.0.3": - "integrity" "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==" - "resolved" "https://registry.npmjs.org/has/-/has-1.0.4.tgz" - "version" "1.0.4" - -"hash.js@^1.0.0", "hash.js@^1.0.3": - "integrity" "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==" - "resolved" "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz" - "version" "1.1.7" - dependencies: - "inherits" "^2.0.3" - "minimalistic-assert" "^1.0.1" - -"he@^1.2.0": - "integrity" "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" - "resolved" "https://registry.npmjs.org/he/-/he-1.2.0.tgz" - "version" "1.2.0" - -"hmac-drbg@^1.0.1": - "integrity" "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==" - "resolved" "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "hash.js" "^1.0.3" - "minimalistic-assert" "^1.0.0" - "minimalistic-crypto-utils" "^1.0.1" - -"hoist-non-react-statics@^3.3.0": - "integrity" "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==" - "resolved" "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz" - "version" "3.3.2" - dependencies: - "react-is" "^16.7.0" - -"hosted-git-info@^4.1.0": - "integrity" "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==" - "resolved" "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "lru-cache" "^6.0.0" - -"hpack.js@^2.1.6": - "integrity" "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==" - "resolved" "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz" - "version" "2.1.6" - dependencies: - "inherits" "^2.0.1" - "obuf" "^1.0.0" - "readable-stream" "^2.0.1" - "wbuf" "^1.1.0" - -"html-encoding-sniffer@^3.0.0": - "integrity" "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==" - "resolved" "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "whatwg-encoding" "^2.0.0" - -"html-entities@^2.1.0", "html-entities@^2.3.2": - "integrity" "sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==" - "resolved" "https://registry.npmjs.org/html-entities/-/html-entities-2.4.0.tgz" - "version" "2.4.0" - -"html-escaper@^2.0.0": - "integrity" "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==" - "resolved" "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz" - "version" "2.0.2" - -"html-minifier-terser@^6.0.2": - "integrity" "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==" - "resolved" "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz" - "version" "6.1.0" - dependencies: - "camel-case" "^4.1.2" - "clean-css" "^5.2.2" - "commander" "^8.3.0" - "he" "^1.2.0" - "param-case" "^3.0.4" - "relateurl" "^0.2.7" - "terser" "^5.10.0" - -"html-webpack-plugin@^5.5.3": - "integrity" "sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==" - "resolved" "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz" - "version" "5.5.3" + cacheable-lookup "^5.0.3" + cacheable-request "^7.0.2" + decompress-response "^6.0.0" + http2-wrapper "^1.0.0-beta.5.2" + lowercase-keys "^2.0.0" + p-cancelable "^2.0.0" + responselike "^2.0.0" + +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: + 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== + +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + +gzip-size@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" + integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== + dependencies: + duplexer "^0.1.2" + +handle-thing@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" + integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== + +harmony-reflect@^1.4.6: + version "1.6.2" + resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.2.tgz#31ecbd32e648a34d030d86adb67d4d47547fe710" + integrity sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g== + +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + dependencies: + get-intrinsic "^1.1.1" + +has-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== + +has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + +has-unicode@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== + +has@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.4.tgz#2eb2860e000011dae4f1406a86fe80e530fb2ec6" + integrity sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ== + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +he@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz" + integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +hoist-non-react-statics@^3.3.0: + version "3.3.2" + resolved "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + +hosted-git-info@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" + integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== + dependencies: + lru-cache "^6.0.0" + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + integrity sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ== + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +html-encoding-sniffer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz#2cb1a8cf0db52414776e5b2a7a04d5dd98158de9" + integrity sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA== + dependencies: + whatwg-encoding "^2.0.0" + +html-entities@^2.1.0, html-entities@^2.3.2: + version "2.4.0" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.4.0.tgz#edd0cee70402584c8c76cc2c0556db09d1f45061" + integrity sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ== + +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +html-minifier-terser@^6.0.2: + version "6.1.0" + resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#bfc818934cc07918f6b3669f5774ecdfd48f32ab" + integrity sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw== + dependencies: + camel-case "^4.1.2" + clean-css "^5.2.2" + commander "^8.3.0" + he "^1.2.0" + param-case "^3.0.4" + relateurl "^0.2.7" + terser "^5.10.0" + +html-webpack-plugin@^5.5.3: + version "5.5.3" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz#72270f4a78e222b5825b296e5e3e1328ad525a3e" + integrity sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg== dependencies: "@types/html-minifier-terser" "^6.0.0" - "html-minifier-terser" "^6.0.2" - "lodash" "^4.17.21" - "pretty-error" "^4.0.0" - "tapable" "^2.0.0" - -"htmlparser2@^6.1.0": - "integrity" "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==" - "resolved" "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz" - "version" "6.1.0" - dependencies: - "domelementtype" "^2.0.1" - "domhandler" "^4.0.0" - "domutils" "^2.5.2" - "entities" "^2.0.0" - -"http-cache-semantics@^4.0.0", "http-cache-semantics@^4.1.1": - "integrity" "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" - "resolved" "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz" - "version" "4.1.1" - -"http-deceiver@^1.2.7": - "integrity" "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==" - "resolved" "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz" - "version" "1.2.7" - -"http-errors@~1.6.2": - "integrity" "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==" - "resolved" "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" - "version" "1.6.3" - dependencies: - "depd" "~1.1.2" - "inherits" "2.0.3" - "setprototypeof" "1.1.0" - "statuses" ">= 1.4.0 < 2" - -"http-errors@2.0.0": - "integrity" "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==" - "resolved" "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "depd" "2.0.0" - "inherits" "2.0.4" - "setprototypeof" "1.2.0" - "statuses" "2.0.1" - "toidentifier" "1.0.1" - -"http-parser-js@>=0.5.1": - "integrity" "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==" - "resolved" "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz" - "version" "0.5.8" - -"http-proxy-agent@^5.0.0": - "integrity" "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==" - "resolved" "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz" - "version" "5.0.0" + html-minifier-terser "^6.0.2" + lodash "^4.17.21" + pretty-error "^4.0.0" + tapable "^2.0.0" + +htmlparser2@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" + integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.0.0" + domutils "^2.5.2" + entities "^2.0.0" + +http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" + integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== + +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-parser-js@>=0.5.1: + version "0.5.8" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.8.tgz#af23090d9ac4e24573de6f6aecc9d84a48bf20e3" + integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q== + +http-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" + integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== dependencies: "@tootallnate/once" "2" - "agent-base" "6" - "debug" "4" + agent-base "6" + debug "4" -"http-proxy-middleware@^2.0.3": - "integrity" "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==" - "resolved" "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz" - "version" "2.0.6" +http-proxy-middleware@^2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz#e1a4dd6979572c7ab5a4e4b55095d1f32a74963f" + integrity sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw== 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" - -"http-proxy@^1.18.1": - "integrity" "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==" - "resolved" "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz" - "version" "1.18.1" - dependencies: - "eventemitter3" "^4.0.0" - "follow-redirects" "^1.0.0" - "requires-port" "^1.0.0" - -"http2-wrapper@^1.0.0-beta.5.2": - "integrity" "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==" - "resolved" "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz" - "version" "1.0.3" - dependencies: - "quick-lru" "^5.1.1" - "resolve-alpn" "^1.0.0" - -"https-proxy-agent@^5.0.0", "https-proxy-agent@^5.0.1": - "integrity" "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==" - "resolved" "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" - "version" "5.0.1" - dependencies: - "agent-base" "6" - "debug" "4" - -"human-signals@^2.1.0": - "integrity" "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" - "resolved" "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" - "version" "2.1.0" - -"human-signals@^4.3.0": - "integrity" "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==" - "resolved" "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz" - "version" "4.3.1" - -"humanize-ms@^1.2.1": - "integrity" "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==" - "resolved" "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz" - "version" "1.2.1" - dependencies: - "ms" "^2.0.0" - -"husky@^7.0.2", "husky@^8.0.1": - "integrity" "sha512-xs7/chUH/CKdOCs7Zy0Aev9e/dKOMZf3K1Az1nar3tzlv0jfqnYtu235bstsWTmXOR0EfINrPa97yy4Lz6RiKw==" - "resolved" "https://registry.npmjs.org/husky/-/husky-8.0.1.tgz" - "version" "8.0.1" - -"iconv-corefoundation@^1.1.7": - "integrity" "sha512-T10qvkw0zz4wnm560lOEg0PovVqUXuOFhhHAkixw8/sycy7TJt7v/RrkEKEQnAw2viPSJu6iAkErxnzR0g8PpQ==" - "resolved" "https://registry.npmjs.org/iconv-corefoundation/-/iconv-corefoundation-1.1.7.tgz" - "version" "1.1.7" - dependencies: - "cli-truncate" "^2.1.0" - "node-addon-api" "^1.6.3" - -"iconv-lite@^0.6.2": - "integrity" "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==" - "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" - "version" "0.6.3" - dependencies: - "safer-buffer" ">= 2.1.2 < 3.0.0" - -"iconv-lite@0.4.24": - "integrity" "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==" - "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" - "version" "0.4.24" - dependencies: - "safer-buffer" ">= 2.1.2 < 3" - -"iconv-lite@0.6.3": - "integrity" "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==" - "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" - "version" "0.6.3" - dependencies: - "safer-buffer" ">= 2.1.2 < 3.0.0" - -"icss-utils@^5.0.0", "icss-utils@^5.1.0": - "integrity" "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==" - "resolved" "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz" - "version" "5.1.0" - -"identity-obj-proxy@^3.0.0": - "integrity" "sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==" - "resolved" "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "harmony-reflect" "^1.4.6" - -"ieee754@^1.1.13", "ieee754@^1.2.1": - "integrity" "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - "resolved" "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" - "version" "1.2.1" - -"ignore@^5.2.0", "ignore@^5.2.4": - "integrity" "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==" - "resolved" "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz" - "version" "5.2.4" - -"immediate@~3.0.5": - "integrity" "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" - "resolved" "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz" - "version" "3.0.6" - -"immutable@^4.0.0": - "integrity" "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==" - "resolved" "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz" - "version" "4.3.4" - -"import-fresh@^3.2.1", "import-fresh@^3.3.0": - "integrity" "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==" - "resolved" "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" - "version" "3.3.0" - dependencies: - "parent-module" "^1.0.0" - "resolve-from" "^4.0.0" - -"import-from@^3.0.0": - "integrity" "sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==" - "resolved" "https://registry.npmjs.org/import-from/-/import-from-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "resolve-from" "^5.0.0" - -"import-local@^3.0.2": - "integrity" "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==" - "resolved" "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "pkg-dir" "^4.2.0" - "resolve-cwd" "^3.0.0" - -"imurmurhash@^0.1.4": - "integrity" "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" - "resolved" "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" - "version" "0.1.4" - -"indent-string@^4.0.0": - "integrity" "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" - "resolved" "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" - "version" "4.0.0" - -"inflight@^1.0.4": - "integrity" "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==" - "resolved" "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" - "version" "1.0.6" - dependencies: - "once" "^1.3.0" - "wrappy" "1" - -"inherits@^2.0.1", "inherits@^2.0.3", "inherits@^2.0.4", "inherits@~2.0.3", "inherits@2", "inherits@2.0.4": - "integrity" "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" - "version" "2.0.4" - -"inherits@2.0.3": - "integrity" "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" - "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" - "version" "2.0.3" - -"internal-slot@^1.0.4", "internal-slot@^1.0.5": - "integrity" "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==" - "resolved" "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz" - "version" "1.0.5" - dependencies: - "get-intrinsic" "^1.2.0" - "has" "^1.0.3" - "side-channel" "^1.0.4" - -"interpret@^1.4.0": - "integrity" "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" - "resolved" "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz" - "version" "1.4.0" - -"interpret@^3.1.1": - "integrity" "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==" - "resolved" "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz" - "version" "3.1.1" - -"ip@^2.0.0": - "integrity" "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" - "resolved" "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz" - "version" "2.0.0" - -"ipaddr.js@^2.0.1": - "integrity" "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==" - "resolved" "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz" - "version" "2.1.0" - -"ipaddr.js@1.9.1": - "integrity" "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" - "resolved" "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" - "version" "1.9.1" - -"is-arguments@^1.1.1": - "integrity" "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==" - "resolved" "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz" - "version" "1.1.1" - dependencies: - "call-bind" "^1.0.2" - "has-tostringtag" "^1.0.0" - -"is-array-buffer@^3.0.1", "is-array-buffer@^3.0.2": - "integrity" "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==" - "resolved" "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz" - "version" "3.0.2" - dependencies: - "call-bind" "^1.0.2" - "get-intrinsic" "^1.2.0" - "is-typed-array" "^1.1.10" - -"is-arrayish@^0.2.1": - "integrity" "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" - "resolved" "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" - "version" "0.2.1" - -"is-async-function@^2.0.0": - "integrity" "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==" - "resolved" "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "has-tostringtag" "^1.0.0" - -"is-bigint@^1.0.1": - "integrity" "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==" - "resolved" "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz" - "version" "1.0.4" - dependencies: - "has-bigints" "^1.0.1" - -"is-binary-path@~2.1.0": - "integrity" "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==" - "resolved" "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "binary-extensions" "^2.0.0" - -"is-boolean-object@^1.1.0": - "integrity" "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==" - "resolved" "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz" - "version" "1.1.2" - dependencies: - "call-bind" "^1.0.2" - "has-tostringtag" "^1.0.0" - -"is-callable@^1.1.3", "is-callable@^1.1.4", "is-callable@^1.2.7": - "integrity" "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" - "resolved" "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz" - "version" "1.2.7" - -"is-ci@^3.0.0": - "integrity" "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==" - "resolved" "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "ci-info" "^3.2.0" - -"is-core-module@^2.11.0", "is-core-module@^2.13.0", "is-core-module@^2.9.0": - "integrity" "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==" - "resolved" "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz" - "version" "2.13.0" - dependencies: - "has" "^1.0.3" - -"is-date-object@^1.0.1", "is-date-object@^1.0.5": - "integrity" "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==" - "resolved" "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz" - "version" "1.0.5" - dependencies: - "has-tostringtag" "^1.0.0" - -"is-docker@^2.0.0", "is-docker@^2.1.1": - "integrity" "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==" - "resolved" "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" - "version" "2.2.1" - -"is-docker@^3.0.0": - "integrity" "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==" - "resolved" "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz" - "version" "3.0.0" - -"is-extglob@^2.1.1": - "integrity" "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" - "resolved" "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" - "version" "2.1.1" - -"is-finalizationregistry@^1.0.2": - "integrity" "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==" - "resolved" "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "call-bind" "^1.0.2" - -"is-fullwidth-code-point@^3.0.0": - "integrity" "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" - "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" - "version" "3.0.0" - -"is-fullwidth-code-point@^4.0.0": - "integrity" "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==" - "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz" - "version" "4.0.0" - -"is-generator-fn@^2.0.0": - "integrity" "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==" - "resolved" "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz" - "version" "2.1.0" - -"is-generator-function@^1.0.10": - "integrity" "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==" - "resolved" "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz" - "version" "1.0.10" - dependencies: - "has-tostringtag" "^1.0.0" - -"is-glob@^4.0.0", "is-glob@^4.0.1", "is-glob@^4.0.3", "is-glob@~4.0.1": - "integrity" "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==" - "resolved" "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" - "version" "4.0.3" - dependencies: - "is-extglob" "^2.1.1" - -"is-inside-container@^1.0.0": - "integrity" "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==" - "resolved" "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "is-docker" "^3.0.0" - -"is-interactive@^1.0.0": - "integrity" "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==" - "resolved" "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz" - "version" "1.0.0" - -"is-lambda@^1.0.1": - "integrity" "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==" - "resolved" "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz" - "version" "1.0.1" - -"is-map@^2.0.1", "is-map@^2.0.2": - "integrity" "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==" - "resolved" "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz" - "version" "2.0.2" - -"is-negative-zero@^2.0.2": - "integrity" "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" - "resolved" "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz" - "version" "2.0.2" - -"is-number-object@^1.0.4": - "integrity" "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==" - "resolved" "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz" - "version" "1.0.7" - dependencies: - "has-tostringtag" "^1.0.0" - -"is-number@^7.0.0": - "integrity" "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - "resolved" "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" - "version" "7.0.0" - -"is-path-inside@^3.0.3": - "integrity" "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" - "resolved" "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" - "version" "3.0.3" - -"is-plain-obj@^3.0.0": - "integrity" "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==" - "resolved" "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz" - "version" "3.0.0" - -"is-plain-object@^2.0.4": - "integrity" "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==" - "resolved" "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" - "version" "2.0.4" - dependencies: - "isobject" "^3.0.1" - -"is-plain-object@^5.0.0": - "integrity" "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" - "resolved" "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz" - "version" "5.0.0" - -"is-potential-custom-element-name@^1.0.1": - "integrity" "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" - "resolved" "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz" - "version" "1.0.1" - -"is-regex@^1.1.4": - "integrity" "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==" - "resolved" "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz" - "version" "1.1.4" - dependencies: - "call-bind" "^1.0.2" - "has-tostringtag" "^1.0.0" - -"is-set@^2.0.1", "is-set@^2.0.2": - "integrity" "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==" - "resolved" "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz" - "version" "2.0.2" - -"is-shared-array-buffer@^1.0.2": - "integrity" "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==" - "resolved" "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "call-bind" "^1.0.2" - -"is-stream@^2.0.0": - "integrity" "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" - "resolved" "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" - "version" "2.0.1" - -"is-stream@^3.0.0": - "integrity" "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==" - "resolved" "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz" - "version" "3.0.0" - -"is-string@^1.0.5", "is-string@^1.0.7": - "integrity" "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==" - "resolved" "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz" - "version" "1.0.7" - dependencies: - "has-tostringtag" "^1.0.0" - -"is-symbol@^1.0.2", "is-symbol@^1.0.3": - "integrity" "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==" - "resolved" "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz" - "version" "1.0.4" - dependencies: - "has-symbols" "^1.0.2" - -"is-typed-array@^1.1.10", "is-typed-array@^1.1.12", "is-typed-array@^1.1.9": - "integrity" "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==" - "resolved" "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz" - "version" "1.1.12" - dependencies: - "which-typed-array" "^1.1.11" - -"is-unicode-supported@^0.1.0": - "integrity" "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==" - "resolved" "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" - "version" "0.1.0" - -"is-weakmap@^2.0.1": - "integrity" "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==" - "resolved" "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz" - "version" "2.0.1" - -"is-weakref@^1.0.2": - "integrity" "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==" - "resolved" "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "call-bind" "^1.0.2" - -"is-weakset@^2.0.1": - "integrity" "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==" - "resolved" "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "call-bind" "^1.0.2" - "get-intrinsic" "^1.1.1" - -"is-wsl@^2.2.0": - "integrity" "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==" - "resolved" "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" - "version" "2.2.0" - dependencies: - "is-docker" "^2.0.0" - -"isarray@^2.0.5": - "integrity" "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" - "resolved" "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz" - "version" "2.0.5" - -"isarray@~1.0.0": - "integrity" "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - "resolved" "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - "version" "1.0.0" - -"isbinaryfile@^4.0.8": - "integrity" "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==" - "resolved" "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz" - "version" "4.0.10" - -"isbinaryfile@^5.0.0": - "integrity" "sha512-UDdnyGvMajJUWCkib7Cei/dvyJrrvo4FIrsvSFWdPpXSUorzXrDJ0S+X5Q4ZlasfPjca4yqCNNsjbCeiy8FFeg==" - "resolved" "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-5.0.0.tgz" - "version" "5.0.0" - -"isexe@^2.0.0": - "integrity" "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - "resolved" "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" - "version" "2.0.0" - -"isobject@^3.0.1": - "integrity" "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==" - "resolved" "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" - "version" "3.0.1" + http-proxy "^1.18.1" + is-glob "^4.0.1" + is-plain-obj "^3.0.0" + micromatch "^4.0.2" + +http-proxy@^1.18.1: + version "1.18.1" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +http2-wrapper@^1.0.0-beta.5.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" + integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== + dependencies: + quick-lru "^5.1.1" + resolve-alpn "^1.0.0" + +https-proxy-agent@^5.0.0, https-proxy-agent@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +human-signals@^4.3.0: + version "4.3.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-4.3.1.tgz#ab7f811e851fca97ffbd2c1fe9a958964de321b2" + integrity sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ== + +humanize-ms@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== + dependencies: + ms "^2.0.0" + +husky@^8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/husky/-/husky-8.0.1.tgz" + integrity sha512-xs7/chUH/CKdOCs7Zy0Aev9e/dKOMZf3K1Az1nar3tzlv0jfqnYtu235bstsWTmXOR0EfINrPa97yy4Lz6RiKw== + +iconv-corefoundation@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/iconv-corefoundation/-/iconv-corefoundation-1.1.7.tgz#31065e6ab2c9272154c8b0821151e2c88f1b002a" + integrity sha512-T10qvkw0zz4wnm560lOEg0PovVqUXuOFhhHAkixw8/sycy7TJt7v/RrkEKEQnAw2viPSJu6iAkErxnzR0g8PpQ== + dependencies: + cli-truncate "^2.1.0" + node-addon-api "^1.6.3" + +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +iconv-lite@0.6.3, iconv-lite@^0.6.2: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +icss-utils@^5.0.0, icss-utils@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" + integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== + +identity-obj-proxy@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14" + integrity sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA== + dependencies: + harmony-reflect "^1.4.6" + +ieee754@^1.1.13, ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +ignore@^5.2.0, ignore@^5.2.4: + version "5.2.4" + resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz" + integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== + +immediate@~3.0.5: + version "3.0.6" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" + integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== + +immutable@^4.0.0: + version "4.3.4" + resolved "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz" + integrity sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA== + +import-fresh@^3.2.1, import-fresh@^3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/import-from/-/import-from-3.0.0.tgz#055cfec38cd5a27d8057ca51376d7d3bf0891966" + integrity sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ== + dependencies: + resolve-from "^5.0.0" + +import-local@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" + integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== + +internal-slot@^1.0.4, internal-slot@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" + integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== + dependencies: + get-intrinsic "^1.2.0" + has "^1.0.3" + side-channel "^1.0.4" + +interpret@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" + integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== + +interpret@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-3.1.1.tgz#5be0ceed67ca79c6c4bc5cf0d7ee843dcea110c4" + integrity sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ== + +ip@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.0.tgz#4cf4ab182fee2314c75ede1276f8c80b479936da" + integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ== + +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +ipaddr.js@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.1.0.tgz#2119bc447ff8c257753b196fc5f1ce08a4cdf39f" + integrity sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ== + +is-arguments@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" + integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.0" + is-typed-array "^1.1.10" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-async-function@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-async-function/-/is-async-function-2.0.0.tgz#8e4418efd3e5d3a6ebb0164c05ef5afb69aa9646" + integrity sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA== + dependencies: + has-tostringtag "^1.0.0" + +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + +is-binary-path@~2.1.0: + 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" + +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + +is-ci@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.1.tgz#db6ecbed1bd659c43dac0f45661e7674103d1867" + integrity sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ== + dependencies: + ci-info "^3.2.0" + +is-core-module@^2.11.0, is-core-module@^2.13.0: + version "2.13.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.0.tgz#bb52aa6e2cbd49a30c2ba68c42bf3435ba6072db" + integrity sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ== + dependencies: + has "^1.0.3" + +is-date-object@^1.0.1, is-date-object@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + +is-docker@^2.0.0, is-docker@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-docker@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200" + integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-finalizationregistry@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz#c8749b65f17c133313e661b1289b95ad3dbd62e6" + integrity sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw== + dependencies: + call-bind "^1.0.2" + +is-fullwidth-code-point@^3.0.0: + 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== + +is-fullwidth-code-point@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz" + integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ== + +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + +is-generator-function@^1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== + dependencies: + has-tostringtag "^1.0.0" + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + 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" + +is-inside-container@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-inside-container/-/is-inside-container-1.0.0.tgz#e81fba699662eb31dbdaf26766a61d4814717ea4" + integrity sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA== + dependencies: + is-docker "^3.0.0" + +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + +is-lambda@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" + integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== + +is-map@^2.0.1, is-map@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" + integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== + +is-negative-zero@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + +is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== + dependencies: + has-tostringtag "^1.0.0" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-path-inside@^3.0.3: + 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== + +is-plain-obj@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" + integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== + +is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-plain-object@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" + integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== + +is-potential-custom-element-name@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" + integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== + +is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-set@^2.0.1, is-set@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" + integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== + +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" + integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== + +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.9: + version "1.1.12" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" + integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== + dependencies: + which-typed-array "^1.1.11" + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + +is-weakmap@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" + integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== + +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + +is-weakset@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.2.tgz#4569d67a747a1ce5a994dfd4ef6dcea76e7c0a1d" + integrity sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + +is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isbinaryfile@^4.0.8: + version "4.0.10" + resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.10.tgz#0c5b5e30c2557a2f06febd37b7322946aaee42b3" + integrity sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw== + +isbinaryfile@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-5.0.0.tgz#034b7e54989dab8986598cbcea41f66663c65234" + integrity sha512-UDdnyGvMajJUWCkib7Cei/dvyJrrvo4FIrsvSFWdPpXSUorzXrDJ0S+X5Q4ZlasfPjca4yqCNNsjbCeiy8FFeg== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== -"istanbul-lib-coverage@^3.0.0", "istanbul-lib-coverage@^3.2.0": - "integrity" "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==" - "resolved" "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz" - "version" "3.2.0" +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" + integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== -"istanbul-lib-instrument@^5.0.4": - "integrity" "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==" - "resolved" "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz" - "version" "5.2.1" +istanbul-lib-instrument@^5.0.4: + version "5.2.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" + integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== 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" + istanbul-lib-coverage "^3.2.0" + semver "^6.3.0" -"istanbul-lib-instrument@^6.0.0": - "integrity" "sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==" - "resolved" "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz" - "version" "6.0.1" +istanbul-lib-instrument@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz#71e87707e8041428732518c6fb5211761753fbdf" + integrity sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA== dependencies: "@babel/core" "^7.12.3" "@babel/parser" "^7.14.7" "@istanbuljs/schema" "^0.1.2" - "istanbul-lib-coverage" "^3.2.0" - "semver" "^7.5.4" - -"istanbul-lib-report@^3.0.0": - "integrity" "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==" - "resolved" "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "istanbul-lib-coverage" "^3.0.0" - "make-dir" "^4.0.0" - "supports-color" "^7.1.0" - -"istanbul-lib-source-maps@^4.0.0": - "integrity" "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==" - "resolved" "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz" - "version" "4.0.1" - dependencies: - "debug" "^4.1.1" - "istanbul-lib-coverage" "^3.0.0" - "source-map" "^0.6.1" - -"istanbul-reports@^3.1.3": - "integrity" "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==" - "resolved" "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz" - "version" "3.1.6" - dependencies: - "html-escaper" "^2.0.0" - "istanbul-lib-report" "^3.0.0" - -"iterator.prototype@^1.1.2": - "integrity" "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==" - "resolved" "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz" - "version" "1.1.2" - dependencies: - "define-properties" "^1.2.1" - "get-intrinsic" "^1.2.1" - "has-symbols" "^1.0.3" - "reflect.getprototypeof" "^1.0.4" - "set-function-name" "^2.0.1" - -"jackspeak@^2.3.5": - "integrity" "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==" - "resolved" "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz" - "version" "2.3.6" + istanbul-lib-coverage "^3.2.0" + semver "^7.5.4" + +istanbul-lib-report@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" + integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^4.0.0" + supports-color "^7.1.0" + +istanbul-lib-source-maps@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" + integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + source-map "^0.6.1" + +istanbul-reports@^3.1.3: + version "3.1.6" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.6.tgz#2544bcab4768154281a2f0870471902704ccaa1a" + integrity sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +iterator.prototype@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.2.tgz#5e29c8924f01916cb9335f1ff80619dcff22b0c0" + integrity sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w== + dependencies: + define-properties "^1.2.1" + get-intrinsic "^1.2.1" + has-symbols "^1.0.3" + reflect.getprototypeof "^1.0.4" + set-function-name "^2.0.1" + +jackspeak@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" + integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== dependencies: "@isaacs/cliui" "^8.0.2" optionalDependencies: "@pkgjs/parseargs" "^0.11.0" -"jake@^10.8.5": - "integrity" "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==" - "resolved" "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz" - "version" "10.8.7" +jake@^10.8.5: + version "10.8.7" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.7.tgz#63a32821177940c33f356e0ba44ff9d34e1c7d8f" + integrity sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w== dependencies: - "async" "^3.2.3" - "chalk" "^4.0.2" - "filelist" "^1.0.4" - "minimatch" "^3.1.2" + async "^3.2.3" + chalk "^4.0.2" + filelist "^1.0.4" + minimatch "^3.1.2" -"jest-changed-files@^29.7.0": - "integrity" "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==" - "resolved" "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz" - "version" "29.7.0" +jest-changed-files@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.7.0.tgz#1c06d07e77c78e1585d020424dedc10d6e17ac3a" + integrity sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w== dependencies: - "execa" "^5.0.0" - "jest-util" "^29.7.0" - "p-limit" "^3.1.0" + execa "^5.0.0" + jest-util "^29.7.0" + p-limit "^3.1.0" -"jest-circus@^29.7.0": - "integrity" "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==" - "resolved" "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz" - "version" "29.7.0" +jest-circus@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.7.0.tgz#b6817a45fcc835d8b16d5962d0c026473ee3668a" + integrity sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw== dependencies: "@jest/environment" "^29.7.0" "@jest/expect" "^29.7.0" "@jest/test-result" "^29.7.0" "@jest/types" "^29.6.3" "@types/node" "*" - "chalk" "^4.0.0" - "co" "^4.6.0" - "dedent" "^1.0.0" - "is-generator-fn" "^2.0.0" - "jest-each" "^29.7.0" - "jest-matcher-utils" "^29.7.0" - "jest-message-util" "^29.7.0" - "jest-runtime" "^29.7.0" - "jest-snapshot" "^29.7.0" - "jest-util" "^29.7.0" - "p-limit" "^3.1.0" - "pretty-format" "^29.7.0" - "pure-rand" "^6.0.0" - "slash" "^3.0.0" - "stack-utils" "^2.0.3" - -"jest-cli@^29.7.0": - "integrity" "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==" - "resolved" "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz" - "version" "29.7.0" + chalk "^4.0.0" + co "^4.6.0" + dedent "^1.0.0" + is-generator-fn "^2.0.0" + jest-each "^29.7.0" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-runtime "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + p-limit "^3.1.0" + pretty-format "^29.7.0" + pure-rand "^6.0.0" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-cli@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.7.0.tgz#5592c940798e0cae677eec169264f2d839a37995" + integrity sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg== dependencies: "@jest/core" "^29.7.0" "@jest/test-result" "^29.7.0" "@jest/types" "^29.6.3" - "chalk" "^4.0.0" - "create-jest" "^29.7.0" - "exit" "^0.1.2" - "import-local" "^3.0.2" - "jest-config" "^29.7.0" - "jest-util" "^29.7.0" - "jest-validate" "^29.7.0" - "yargs" "^17.3.1" - -"jest-config@^29.7.0": - "integrity" "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==" - "resolved" "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz" - "version" "29.7.0" + chalk "^4.0.0" + create-jest "^29.7.0" + exit "^0.1.2" + import-local "^3.0.2" + jest-config "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + yargs "^17.3.1" + +jest-config@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.7.0.tgz#bcbda8806dbcc01b1e316a46bb74085a84b0245f" + integrity sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ== dependencies: "@babel/core" "^7.11.6" "@jest/test-sequencer" "^29.7.0" "@jest/types" "^29.6.3" - "babel-jest" "^29.7.0" - "chalk" "^4.0.0" - "ci-info" "^3.2.0" - "deepmerge" "^4.2.2" - "glob" "^7.1.3" - "graceful-fs" "^4.2.9" - "jest-circus" "^29.7.0" - "jest-environment-node" "^29.7.0" - "jest-get-type" "^29.6.3" - "jest-regex-util" "^29.6.3" - "jest-resolve" "^29.7.0" - "jest-runner" "^29.7.0" - "jest-util" "^29.7.0" - "jest-validate" "^29.7.0" - "micromatch" "^4.0.4" - "parse-json" "^5.2.0" - "pretty-format" "^29.7.0" - "slash" "^3.0.0" - "strip-json-comments" "^3.1.1" - -"jest-diff@^27.5.1": - "integrity" "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==" - "resolved" "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "chalk" "^4.0.0" - "diff-sequences" "^27.5.1" - "jest-get-type" "^27.5.1" - "pretty-format" "^27.5.1" - -"jest-diff@^29.7.0": - "integrity" "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==" - "resolved" "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz" - "version" "29.7.0" - dependencies: - "chalk" "^4.0.0" - "diff-sequences" "^29.6.3" - "jest-get-type" "^29.6.3" - "pretty-format" "^29.7.0" - -"jest-docblock@^29.7.0": - "integrity" "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==" - "resolved" "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz" - "version" "29.7.0" - dependencies: - "detect-newline" "^3.0.0" - -"jest-each@^29.7.0": - "integrity" "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==" - "resolved" "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz" - "version" "29.7.0" + babel-jest "^29.7.0" + chalk "^4.0.0" + ci-info "^3.2.0" + deepmerge "^4.2.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-circus "^29.7.0" + jest-environment-node "^29.7.0" + jest-get-type "^29.6.3" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-runner "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + micromatch "^4.0.4" + parse-json "^5.2.0" + pretty-format "^29.7.0" + slash "^3.0.0" + strip-json-comments "^3.1.1" + +jest-diff@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz" + integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== + dependencies: + chalk "^4.0.0" + diff-sequences "^29.6.3" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + +jest-docblock@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.7.0.tgz#8fddb6adc3cdc955c93e2a87f61cfd350d5d119a" + integrity sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g== + dependencies: + detect-newline "^3.0.0" + +jest-each@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.7.0.tgz#162a9b3f2328bdd991beaabffbb74745e56577d1" + integrity sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ== dependencies: "@jest/types" "^29.6.3" - "chalk" "^4.0.0" - "jest-get-type" "^29.6.3" - "jest-util" "^29.7.0" - "pretty-format" "^29.7.0" + chalk "^4.0.0" + jest-get-type "^29.6.3" + jest-util "^29.7.0" + pretty-format "^29.7.0" -"jest-environment-jsdom@^29.7.0": - "integrity" "sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==" - "resolved" "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz" - "version" "29.7.0" +jest-environment-jsdom@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz#d206fa3551933c3fd519e5dfdb58a0f5139a837f" + integrity sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA== dependencies: "@jest/environment" "^29.7.0" "@jest/fake-timers" "^29.7.0" "@jest/types" "^29.6.3" "@types/jsdom" "^20.0.0" "@types/node" "*" - "jest-mock" "^29.7.0" - "jest-util" "^29.7.0" - "jsdom" "^20.0.0" + jest-mock "^29.7.0" + jest-util "^29.7.0" + jsdom "^20.0.0" -"jest-environment-node@^29.7.0": - "integrity" "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==" - "resolved" "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz" - "version" "29.7.0" +jest-environment-node@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.7.0.tgz#0b93e111dda8ec120bc8300e6d1fb9576e164376" + integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== dependencies: "@jest/environment" "^29.7.0" "@jest/fake-timers" "^29.7.0" "@jest/types" "^29.6.3" "@types/node" "*" - "jest-mock" "^29.7.0" - "jest-util" "^29.7.0" - -"jest-get-type@^27.5.1": - "integrity" "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==" - "resolved" "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz" - "version" "27.5.1" - -"jest-get-type@^29.6.3": - "integrity" "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==" - "resolved" "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz" - "version" "29.6.3" - -"jest-haste-map@^27.5.1": - "integrity" "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==" - "resolved" "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@jest/types" "^27.5.1" - "@types/graceful-fs" "^4.1.2" - "@types/node" "*" - "anymatch" "^3.0.3" - "fb-watchman" "^2.0.0" - "graceful-fs" "^4.2.9" - "jest-regex-util" "^27.5.1" - "jest-serializer" "^27.5.1" - "jest-util" "^27.5.1" - "jest-worker" "^27.5.1" - "micromatch" "^4.0.4" - "walker" "^1.0.7" - optionalDependencies: - "fsevents" "^2.3.2" + jest-mock "^29.7.0" + jest-util "^29.7.0" -"jest-haste-map@^29.7.0": - "integrity" "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==" - "resolved" "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz" - "version" "29.7.0" +jest-get-type@^29.6.3: + version "29.6.3" + resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz" + integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== + +jest-haste-map@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.7.0.tgz#3c2396524482f5a0506376e6c858c3bbcc17b104" + integrity sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA== dependencies: "@jest/types" "^29.6.3" "@types/graceful-fs" "^4.1.3" "@types/node" "*" - "anymatch" "^3.0.3" - "fb-watchman" "^2.0.0" - "graceful-fs" "^4.2.9" - "jest-regex-util" "^29.6.3" - "jest-util" "^29.7.0" - "jest-worker" "^29.7.0" - "micromatch" "^4.0.4" - "walker" "^1.0.8" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.9" + jest-regex-util "^29.6.3" + jest-util "^29.7.0" + jest-worker "^29.7.0" + micromatch "^4.0.4" + walker "^1.0.8" optionalDependencies: - "fsevents" "^2.3.2" - -"jest-leak-detector@^29.7.0": - "integrity" "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==" - "resolved" "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz" - "version" "29.7.0" - dependencies: - "jest-get-type" "^29.6.3" - "pretty-format" "^29.7.0" + fsevents "^2.3.2" -"jest-matcher-utils@^27.5.1": - "integrity" "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==" - "resolved" "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz" - "version" "27.5.1" +jest-leak-detector@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz#5b7ec0dadfdfec0ca383dc9aa016d36b5ea4c728" + integrity sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw== dependencies: - "chalk" "^4.0.0" - "jest-diff" "^27.5.1" - "jest-get-type" "^27.5.1" - "pretty-format" "^27.5.1" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" -"jest-matcher-utils@^29.7.0": - "integrity" "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==" - "resolved" "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz" - "version" "29.7.0" +jest-matcher-utils@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz" + integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g== dependencies: - "chalk" "^4.0.0" - "jest-diff" "^29.7.0" - "jest-get-type" "^29.6.3" - "pretty-format" "^29.7.0" + chalk "^4.0.0" + jest-diff "^29.7.0" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" -"jest-message-util@^27.5.1": - "integrity" "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==" - "resolved" "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@babel/code-frame" "^7.12.13" - "@jest/types" "^27.5.1" - "@types/stack-utils" "^2.0.0" - "chalk" "^4.0.0" - "graceful-fs" "^4.2.9" - "micromatch" "^4.0.4" - "pretty-format" "^27.5.1" - "slash" "^3.0.0" - "stack-utils" "^2.0.3" - -"jest-message-util@^29.7.0": - "integrity" "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==" - "resolved" "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz" - "version" "29.7.0" +jest-message-util@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz" + integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w== dependencies: "@babel/code-frame" "^7.12.13" "@jest/types" "^29.6.3" "@types/stack-utils" "^2.0.0" - "chalk" "^4.0.0" - "graceful-fs" "^4.2.9" - "micromatch" "^4.0.4" - "pretty-format" "^29.7.0" - "slash" "^3.0.0" - "stack-utils" "^2.0.3" - -"jest-mock@^27.5.1": - "integrity" "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==" - "resolved" "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@jest/types" "^27.5.1" - "@types/node" "*" - -"jest-mock@^29.7.0": - "integrity" "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==" - "resolved" "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz" - "version" "29.7.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^29.7.0" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-mock@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.7.0.tgz#4e836cf60e99c6fcfabe9f99d017f3fdd50a6347" + integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== dependencies: "@jest/types" "^29.6.3" "@types/node" "*" - "jest-util" "^29.7.0" - -"jest-pnp-resolver@^1.2.2": - "integrity" "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==" - "resolved" "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz" - "version" "1.2.3" - -"jest-regex-util@^27.5.1": - "integrity" "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==" - "resolved" "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz" - "version" "27.5.1" - -"jest-regex-util@^29.6.3": - "integrity" "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==" - "resolved" "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz" - "version" "29.6.3" - -"jest-resolve-dependencies@^29.7.0": - "integrity" "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==" - "resolved" "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz" - "version" "29.7.0" - dependencies: - "jest-regex-util" "^29.6.3" - "jest-snapshot" "^29.7.0" - -"jest-resolve@*": - "integrity" "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==" - "resolved" "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@jest/types" "^27.5.1" - "chalk" "^4.0.0" - "graceful-fs" "^4.2.9" - "jest-haste-map" "^27.5.1" - "jest-pnp-resolver" "^1.2.2" - "jest-util" "^27.5.1" - "jest-validate" "^27.5.1" - "resolve" "^1.20.0" - "resolve.exports" "^1.1.0" - "slash" "^3.0.0" - -"jest-resolve@^29.7.0": - "integrity" "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==" - "resolved" "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz" - "version" "29.7.0" - dependencies: - "chalk" "^4.0.0" - "graceful-fs" "^4.2.9" - "jest-haste-map" "^29.7.0" - "jest-pnp-resolver" "^1.2.2" - "jest-util" "^29.7.0" - "jest-validate" "^29.7.0" - "resolve" "^1.20.0" - "resolve.exports" "^2.0.0" - "slash" "^3.0.0" - -"jest-runner@^29.7.0": - "integrity" "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==" - "resolved" "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz" - "version" "29.7.0" + jest-util "^29.7.0" + +jest-pnp-resolver@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" + integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== + +jest-regex-util@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52" + integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== + +jest-resolve-dependencies@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz#1b04f2c095f37fc776ff40803dc92921b1e88428" + integrity sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA== + dependencies: + jest-regex-util "^29.6.3" + jest-snapshot "^29.7.0" + +jest-resolve@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.7.0.tgz#64d6a8992dd26f635ab0c01e5eef4399c6bcbc30" + integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA== + dependencies: + chalk "^4.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + jest-pnp-resolver "^1.2.2" + jest-util "^29.7.0" + jest-validate "^29.7.0" + resolve "^1.20.0" + resolve.exports "^2.0.0" + slash "^3.0.0" + +jest-runner@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.7.0.tgz#809af072d408a53dcfd2e849a4c976d3132f718e" + integrity sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ== dependencies: "@jest/console" "^29.7.0" "@jest/environment" "^29.7.0" @@ -7575,26 +7228,26 @@ "@jest/transform" "^29.7.0" "@jest/types" "^29.6.3" "@types/node" "*" - "chalk" "^4.0.0" - "emittery" "^0.13.1" - "graceful-fs" "^4.2.9" - "jest-docblock" "^29.7.0" - "jest-environment-node" "^29.7.0" - "jest-haste-map" "^29.7.0" - "jest-leak-detector" "^29.7.0" - "jest-message-util" "^29.7.0" - "jest-resolve" "^29.7.0" - "jest-runtime" "^29.7.0" - "jest-util" "^29.7.0" - "jest-watcher" "^29.7.0" - "jest-worker" "^29.7.0" - "p-limit" "^3.1.0" - "source-map-support" "0.5.13" - -"jest-runtime@^29.7.0": - "integrity" "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==" - "resolved" "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz" - "version" "29.7.0" + chalk "^4.0.0" + emittery "^0.13.1" + graceful-fs "^4.2.9" + jest-docblock "^29.7.0" + jest-environment-node "^29.7.0" + jest-haste-map "^29.7.0" + jest-leak-detector "^29.7.0" + jest-message-util "^29.7.0" + jest-resolve "^29.7.0" + jest-runtime "^29.7.0" + jest-util "^29.7.0" + jest-watcher "^29.7.0" + jest-worker "^29.7.0" + p-limit "^3.1.0" + source-map-support "0.5.13" + +jest-runtime@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.7.0.tgz#efecb3141cf7d3767a3a0cc8f7c9990587d3d817" + integrity sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ== dependencies: "@jest/environment" "^29.7.0" "@jest/fake-timers" "^29.7.0" @@ -7604,33 +7257,25 @@ "@jest/transform" "^29.7.0" "@jest/types" "^29.6.3" "@types/node" "*" - "chalk" "^4.0.0" - "cjs-module-lexer" "^1.0.0" - "collect-v8-coverage" "^1.0.0" - "glob" "^7.1.3" - "graceful-fs" "^4.2.9" - "jest-haste-map" "^29.7.0" - "jest-message-util" "^29.7.0" - "jest-mock" "^29.7.0" - "jest-regex-util" "^29.6.3" - "jest-resolve" "^29.7.0" - "jest-snapshot" "^29.7.0" - "jest-util" "^29.7.0" - "slash" "^3.0.0" - "strip-bom" "^4.0.0" - -"jest-serializer@^27.5.1": - "integrity" "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==" - "resolved" "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@types/node" "*" - "graceful-fs" "^4.2.9" - -"jest-snapshot@^29.7.0": - "integrity" "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==" - "resolved" "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz" - "version" "29.7.0" + chalk "^4.0.0" + cjs-module-lexer "^1.0.0" + collect-v8-coverage "^1.0.0" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + jest-message-util "^29.7.0" + jest-mock "^29.7.0" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + slash "^3.0.0" + strip-bom "^4.0.0" + +jest-snapshot@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.7.0.tgz#c2c574c3f51865da1bb329036778a69bf88a6be5" + integrity sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw== dependencies: "@babel/core" "^7.11.6" "@babel/generator" "^7.7.2" @@ -7640,3939 +7285,3733 @@ "@jest/expect-utils" "^29.7.0" "@jest/transform" "^29.7.0" "@jest/types" "^29.6.3" - "babel-preset-current-node-syntax" "^1.0.0" - "chalk" "^4.0.0" - "expect" "^29.7.0" - "graceful-fs" "^4.2.9" - "jest-diff" "^29.7.0" - "jest-get-type" "^29.6.3" - "jest-matcher-utils" "^29.7.0" - "jest-message-util" "^29.7.0" - "jest-util" "^29.7.0" - "natural-compare" "^1.4.0" - "pretty-format" "^29.7.0" - "semver" "^7.5.3" - -"jest-util@^27.5.1": - "integrity" "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==" - "resolved" "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@jest/types" "^27.5.1" - "@types/node" "*" - "chalk" "^4.0.0" - "ci-info" "^3.2.0" - "graceful-fs" "^4.2.9" - "picomatch" "^2.2.3" - -"jest-util@^29.0.0": - "integrity" "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==" - "resolved" "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz" - "version" "29.7.0" + babel-preset-current-node-syntax "^1.0.0" + chalk "^4.0.0" + expect "^29.7.0" + graceful-fs "^4.2.9" + jest-diff "^29.7.0" + jest-get-type "^29.6.3" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + natural-compare "^1.4.0" + pretty-format "^29.7.0" + semver "^7.5.3" + +jest-util@^29.0.0, jest-util@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz" + integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== dependencies: "@jest/types" "^29.6.3" "@types/node" "*" - "chalk" "^4.0.0" - "ci-info" "^3.2.0" - "graceful-fs" "^4.2.9" - "picomatch" "^2.2.3" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" -"jest-util@^29.7.0": - "integrity" "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==" - "resolved" "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz" - "version" "29.7.0" - dependencies: - "@jest/types" "^29.6.3" - "@types/node" "*" - "chalk" "^4.0.0" - "ci-info" "^3.2.0" - "graceful-fs" "^4.2.9" - "picomatch" "^2.2.3" - -"jest-validate@^27.5.1": - "integrity" "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==" - "resolved" "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@jest/types" "^27.5.1" - "camelcase" "^6.2.0" - "chalk" "^4.0.0" - "jest-get-type" "^27.5.1" - "leven" "^3.1.0" - "pretty-format" "^27.5.1" - -"jest-validate@^29.7.0": - "integrity" "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==" - "resolved" "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz" - "version" "29.7.0" +jest-validate@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.7.0.tgz#7bf705511c64da591d46b15fce41400d52147d9c" + integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== dependencies: "@jest/types" "^29.6.3" - "camelcase" "^6.2.0" - "chalk" "^4.0.0" - "jest-get-type" "^29.6.3" - "leven" "^3.1.0" - "pretty-format" "^29.7.0" + camelcase "^6.2.0" + chalk "^4.0.0" + jest-get-type "^29.6.3" + leven "^3.1.0" + pretty-format "^29.7.0" -"jest-watcher@^29.7.0": - "integrity" "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==" - "resolved" "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz" - "version" "29.7.0" +jest-watcher@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.7.0.tgz#7810d30d619c3a62093223ce6bb359ca1b28a2f2" + integrity sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g== dependencies: "@jest/test-result" "^29.7.0" "@jest/types" "^29.6.3" "@types/node" "*" - "ansi-escapes" "^4.2.1" - "chalk" "^4.0.0" - "emittery" "^0.13.1" - "jest-util" "^29.7.0" - "string-length" "^4.0.1" - -"jest-worker@^27.4.5", "jest-worker@^27.5.1": - "integrity" "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==" - "resolved" "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@types/node" "*" - "merge-stream" "^2.0.0" - "supports-color" "^8.0.0" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + emittery "^0.13.1" + jest-util "^29.7.0" + string-length "^4.0.1" -"jest-worker@^29.4.3": - "integrity" "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==" - "resolved" "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz" - "version" "29.7.0" +jest-worker@^27.4.5: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== dependencies: "@types/node" "*" - "jest-util" "^29.7.0" - "merge-stream" "^2.0.0" - "supports-color" "^8.0.0" + merge-stream "^2.0.0" + supports-color "^8.0.0" -"jest-worker@^29.7.0": - "integrity" "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==" - "resolved" "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz" - "version" "29.7.0" +jest-worker@^29.4.3, jest-worker@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" + integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== dependencies: "@types/node" "*" - "jest-util" "^29.7.0" - "merge-stream" "^2.0.0" - "supports-color" "^8.0.0" + jest-util "^29.7.0" + merge-stream "^2.0.0" + supports-color "^8.0.0" -"jest@*", "jest@^27.0.6", "jest@^29.0.0", "jest@^29.7.0", "jest@>= 28", "jest@>=27.0.0": - "integrity" "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==" - "resolved" "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz" - "version" "29.7.0" +jest@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-29.7.0.tgz#994676fc24177f088f1c5e3737f5697204ff2613" + integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw== dependencies: "@jest/core" "^29.7.0" "@jest/types" "^29.6.3" - "import-local" "^3.0.2" - "jest-cli" "^29.7.0" - -"js-tokens@^3.0.0 || ^4.0.0", "js-tokens@^4.0.0": - "integrity" "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - "resolved" "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" - "version" "4.0.0" - -"js-yaml@^3.13.1": - "integrity" "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==" - "resolved" "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" - "version" "3.14.1" - dependencies: - "argparse" "^1.0.7" - "esprima" "^4.0.0" - -"js-yaml@^4.1.0": - "integrity" "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==" - "resolved" "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "argparse" "^2.0.1" - -"jsdoc-type-pratt-parser@~4.0.0": - "integrity" "sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==" - "resolved" "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz" - "version" "4.0.0" - -"jsdom@^20.0.0": - "integrity" "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==" - "resolved" "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz" - "version" "20.0.3" - dependencies: - "abab" "^2.0.6" - "acorn" "^8.8.1" - "acorn-globals" "^7.0.0" - "cssom" "^0.5.0" - "cssstyle" "^2.3.0" - "data-urls" "^3.0.2" - "decimal.js" "^10.4.2" - "domexception" "^4.0.0" - "escodegen" "^2.0.0" - "form-data" "^4.0.0" - "html-encoding-sniffer" "^3.0.0" - "http-proxy-agent" "^5.0.0" - "https-proxy-agent" "^5.0.1" - "is-potential-custom-element-name" "^1.0.1" - "nwsapi" "^2.2.2" - "parse5" "^7.1.1" - "saxes" "^6.0.0" - "symbol-tree" "^3.2.4" - "tough-cookie" "^4.1.2" - "w3c-xmlserializer" "^4.0.0" - "webidl-conversions" "^7.0.0" - "whatwg-encoding" "^2.0.0" - "whatwg-mimetype" "^3.0.0" - "whatwg-url" "^11.0.0" - "ws" "^8.11.0" - "xml-name-validator" "^4.0.0" - -"jsesc@^2.5.1": - "integrity" "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" - "resolved" "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" - "version" "2.5.2" - -"jsesc@~0.5.0": - "integrity" "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==" - "resolved" "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" - "version" "0.5.0" - -"json-buffer@3.0.1": - "integrity" "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" - "resolved" "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz" - "version" "3.0.1" - -"json-parse-even-better-errors@^2.3.0", "json-parse-even-better-errors@^2.3.1": - "integrity" "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - "resolved" "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" - "version" "2.3.1" - -"json-schema-traverse@^0.4.1": - "integrity" "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - "resolved" "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" - "version" "0.4.1" - -"json-schema-traverse@^1.0.0": - "integrity" "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - "resolved" "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" - "version" "1.0.0" - -"json-stable-stringify-without-jsonify@^1.0.1": - "integrity" "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" - "resolved" "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" - "version" "1.0.1" - -"json-stringify-safe@^5.0.1": - "integrity" "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" - "resolved" "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" - "version" "5.0.1" - -"json5@^1.0.1": - "integrity" "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==" - "resolved" "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "minimist" "^1.2.0" - -"json5@^1.0.2": - "integrity" "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==" - "resolved" "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "minimist" "^1.2.0" - -"json5@^2.1.2", "json5@^2.2.0", "json5@^2.2.2", "json5@^2.2.3": - "integrity" "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" - "resolved" "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" - "version" "2.2.3" - -"jsonfile@^4.0.0": - "integrity" "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==" - "resolved" "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz" - "version" "4.0.0" + import-local "^3.0.2" + jest-cli "^29.7.0" + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +jsdoc-type-pratt-parser@~4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz" + integrity sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ== + +jsdom@^20.0.0: + version "20.0.3" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-20.0.3.tgz#886a41ba1d4726f67a8858028c99489fed6ad4db" + integrity sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ== + dependencies: + abab "^2.0.6" + acorn "^8.8.1" + acorn-globals "^7.0.0" + cssom "^0.5.0" + cssstyle "^2.3.0" + data-urls "^3.0.2" + decimal.js "^10.4.2" + domexception "^4.0.0" + escodegen "^2.0.0" + form-data "^4.0.0" + html-encoding-sniffer "^3.0.0" + http-proxy-agent "^5.0.0" + https-proxy-agent "^5.0.1" + is-potential-custom-element-name "^1.0.1" + nwsapi "^2.2.2" + parse5 "^7.1.1" + saxes "^6.0.0" + symbol-tree "^3.2.4" + tough-cookie "^4.1.2" + w3c-xmlserializer "^4.0.0" + webidl-conversions "^7.0.0" + whatwg-encoding "^2.0.0" + whatwg-mimetype "^3.0.0" + whatwg-url "^11.0.0" + ws "^8.11.0" + xml-name-validator "^4.0.0" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== + +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: + 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== + +json-schema-traverse@^0.4.1: + 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== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +json-stringify-safe@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== + +json5@^1.0.1, json5@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== + dependencies: + minimist "^1.2.0" + +json5@^2.1.2, json5@^2.2.0, json5@^2.2.2, json5@^2.2.3: + version "2.2.3" + resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== optionalDependencies: - "graceful-fs" "^4.1.6" + graceful-fs "^4.1.6" -"jsonfile@^6.0.1": - "integrity" "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==" - "resolved" "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" - "version" "6.1.0" +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== dependencies: - "universalify" "^2.0.0" + universalify "^2.0.0" optionalDependencies: - "graceful-fs" "^4.1.6" - -"jsx-ast-utils@^2.4.1 || ^3.0.0", "jsx-ast-utils@^3.3.3": - "integrity" "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==" - "resolved" "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz" - "version" "3.3.5" - dependencies: - "array-includes" "^3.1.6" - "array.prototype.flat" "^1.3.1" - "object.assign" "^4.1.4" - "object.values" "^1.1.6" - -"jszip@^3.1.0": - "integrity" "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==" - "resolved" "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz" - "version" "3.10.1" - dependencies: - "lie" "~3.3.0" - "pako" "~1.0.2" - "readable-stream" "~2.3.6" - "setimmediate" "^1.0.5" - -"keyboardevent-from-electron-accelerator@^2.0.0": - "integrity" "sha512-iQcmNA0M4ETMNi0kG/q0h/43wZk7rMeKYrXP7sqKIJbHkTU8Koowgzv+ieR/vWJbOwxx5nDC3UnudZ0aLSu4VA==" - "resolved" "https://registry.npmjs.org/keyboardevent-from-electron-accelerator/-/keyboardevent-from-electron-accelerator-2.0.0.tgz" - "version" "2.0.0" - -"keyboardevents-areequal@^0.2.1": - "integrity" "sha512-Nv+Kr33T0mEjxR500q+I6IWisOQ0lK1GGOncV0kWE6n4KFmpcu7RUX5/2B0EUtX51Cb0HjZ9VJsSY3u4cBa0kw==" - "resolved" "https://registry.npmjs.org/keyboardevents-areequal/-/keyboardevents-areequal-0.2.2.tgz" - "version" "0.2.2" - -"keyv@^4.0.0", "keyv@^4.5.3": - "integrity" "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==" - "resolved" "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz" - "version" "4.5.3" - dependencies: - "json-buffer" "3.0.1" - -"kind-of@^6.0.2": - "integrity" "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - "resolved" "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" - "version" "6.0.3" - -"kleur@^3.0.3": - "integrity" "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" - "resolved" "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" - "version" "3.0.3" - -"language-subtag-registry@~0.3.2": - "integrity" "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==" - "resolved" "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz" - "version" "0.3.22" - -"language-tags@=1.0.5": - "integrity" "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==" - "resolved" "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz" - "version" "1.0.5" - dependencies: - "language-subtag-registry" "~0.3.2" - -"launch-editor@^2.6.0": - "integrity" "sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==" - "resolved" "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.1.tgz" - "version" "2.6.1" - dependencies: - "picocolors" "^1.0.0" - "shell-quote" "^1.8.1" - -"lazy-val@^1.0.4", "lazy-val@^1.0.5": - "integrity" "sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==" - "resolved" "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.5.tgz" - "version" "1.0.5" - -"leven@^3.1.0": - "integrity" "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==" - "resolved" "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" - "version" "3.1.0" - -"levn@^0.4.1": - "integrity" "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==" - "resolved" "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" - "version" "0.4.1" - dependencies: - "prelude-ls" "^1.2.1" - "type-check" "~0.4.0" - -"lie@~3.3.0": - "integrity" "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==" - "resolved" "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz" - "version" "3.3.0" - dependencies: - "immediate" "~3.0.5" - -"lilconfig@^2.1.0": - "integrity" "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==" - "resolved" "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz" - "version" "2.1.0" - -"lilconfig@2.0.5": - "integrity" "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==" - "resolved" "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz" - "version" "2.0.5" - -"lines-and-columns@^1.1.6": - "integrity" "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" - "resolved" "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" - "version" "1.2.4" - -"lint-staged@^11.1.2", "lint-staged@^12.4.2", "lint-staged@^13.0.3": - "integrity" "sha512-BKLUjWDsKquV/JuIcoQW4MSAI3ggwEImF1+sB4zaKvyVx1wBk3FsG7UK9bpnmBTN1pm7EH2BBcMwINJzCRv12g==" - "resolved" "https://registry.npmjs.org/lint-staged/-/lint-staged-12.5.0.tgz" - "version" "12.5.0" - dependencies: - "cli-truncate" "^3.1.0" - "colorette" "^2.0.16" - "commander" "^9.3.0" - "debug" "^4.3.4" - "execa" "^5.1.1" - "lilconfig" "2.0.5" - "listr2" "^4.0.5" - "micromatch" "^4.0.5" - "normalize-path" "^3.0.0" - "object-inspect" "^1.12.2" - "pidtree" "^0.5.0" - "string-argv" "^0.3.1" - "supports-color" "^9.2.2" - "yaml" "^1.10.2" - -"listr2@^4.0.5": - "integrity" "sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA==" - "resolved" "https://registry.npmjs.org/listr2/-/listr2-4.0.5.tgz" - "version" "4.0.5" - dependencies: - "cli-truncate" "^2.1.0" - "colorette" "^2.0.16" - "log-update" "^4.0.0" - "p-map" "^4.0.0" - "rfdc" "^1.3.0" - "rxjs" "^7.5.5" - "through" "^2.3.8" - "wrap-ansi" "^7.0.0" - -"loader-runner@^4.2.0": - "integrity" "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==" - "resolved" "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz" - "version" "4.3.0" - -"loader-utils@^1.4.2": - "integrity" "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==" - "resolved" "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz" - "version" "1.4.2" - dependencies: - "big.js" "^5.2.2" - "emojis-list" "^3.0.0" - "json5" "^1.0.1" - -"loader-utils@^2.0.0", "loader-utils@^2.0.4": - "integrity" "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==" - "resolved" "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz" - "version" "2.0.4" - dependencies: - "big.js" "^5.2.2" - "emojis-list" "^3.0.0" - "json5" "^2.1.2" - -"locate-path@^5.0.0": - "integrity" "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==" - "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "p-locate" "^4.1.0" - -"locate-path@^6.0.0": - "integrity" "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==" - "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "p-locate" "^5.0.0" - -"lodash-es@^4.17.21": - "integrity" "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" - "resolved" "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz" - "version" "4.17.21" - -"lodash.curry@^4.0.1": - "integrity" "sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA==" - "resolved" "https://registry.npmjs.org/lodash.curry/-/lodash.curry-4.1.1.tgz" - "version" "4.1.1" - -"lodash.debounce@^4.0.8": - "integrity" "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" - "resolved" "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz" - "version" "4.0.8" - -"lodash.difference@^4.5.0": - "integrity" "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==" - "resolved" "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz" - "version" "4.5.0" - -"lodash.escape@^4.0.1": - "integrity" "sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw==" - "resolved" "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz" - "version" "4.0.1" - -"lodash.escaperegexp@^4.1.2": - "integrity" "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==" - "resolved" "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz" - "version" "4.1.2" - -"lodash.flatten@^4.4.0": - "integrity" "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==" - "resolved" "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz" - "version" "4.4.0" - -"lodash.flow@^3.3.0": - "integrity" "sha512-ff3BX/tSioo+XojX4MOsOMhJw0nZoUEF011LX8g8d3gvjVbxd89cCio4BCXronjxcTUIJUoqKEUA+n4CqvvRPw==" - "resolved" "https://registry.npmjs.org/lodash.flow/-/lodash.flow-3.5.0.tgz" - "version" "3.5.0" - -"lodash.invokemap@^4.6.0": - "integrity" "sha512-CfkycNtMqgUlfjfdh2BhKO/ZXrP8ePOX5lEU/g0R3ItJcnuxWDwokMGKx1hWcfOikmyOVx6X9IwWnDGlgKl61w==" - "resolved" "https://registry.npmjs.org/lodash.invokemap/-/lodash.invokemap-4.6.0.tgz" - "version" "4.6.0" - -"lodash.isequal@^4.5.0": - "integrity" "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" - "resolved" "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz" - "version" "4.5.0" - -"lodash.memoize@^4.1.2", "lodash.memoize@4.x": - "integrity" "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==" - "resolved" "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" - "version" "4.1.2" - -"lodash.merge@^4.6.2": - "integrity" "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" - "resolved" "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" - "version" "4.6.2" - -"lodash.pullall@^4.2.0": - "integrity" "sha512-VhqxBKH0ZxPpLhiu68YD1KnHmbhQJQctcipvmFnqIBDYzcIHzf3Zpu0tpeOKtR4x76p9yohc506eGdOjTmyIBg==" - "resolved" "https://registry.npmjs.org/lodash.pullall/-/lodash.pullall-4.2.0.tgz" - "version" "4.2.0" - -"lodash.uniq@^4.5.0": - "integrity" "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" - "resolved" "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz" - "version" "4.5.0" - -"lodash.uniqby@^4.7.0": - "integrity" "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==" - "resolved" "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz" - "version" "4.7.0" - -"lodash@^4.17.15", "lodash@^4.17.20", "lodash@^4.17.21": - "integrity" "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - "resolved" "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" - "version" "4.17.21" - -"log-symbols@^4.1.0": - "integrity" "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==" - "resolved" "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "chalk" "^4.1.0" - "is-unicode-supported" "^0.1.0" - -"log-update@^4.0.0": - "integrity" "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==" - "resolved" "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "ansi-escapes" "^4.3.0" - "cli-cursor" "^3.1.0" - "slice-ansi" "^4.0.0" - "wrap-ansi" "^6.2.0" - -"loose-envify@^1.0.0", "loose-envify@^1.1.0", "loose-envify@^1.4.0": - "integrity" "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==" - "resolved" "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" - "version" "1.4.0" - dependencies: - "js-tokens" "^3.0.0 || ^4.0.0" - -"lower-case@^2.0.2": - "integrity" "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==" - "resolved" "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "tslib" "^2.0.3" - -"lowercase-keys@^2.0.0": - "integrity" "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" - "resolved" "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz" - "version" "2.0.0" - -"lru_map@^0.3.3": - "integrity" "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==" - "resolved" "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz" - "version" "0.3.3" - -"lru-cache@^5.1.1": - "integrity" "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==" - "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" - "version" "5.1.1" - dependencies: - "yallist" "^3.0.2" - -"lru-cache@^6.0.0": - "integrity" "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==" - "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "yallist" "^4.0.0" - -"lru-cache@^7.7.1": - "integrity" "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==" - "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz" - "version" "7.18.3" + graceful-fs "^4.1.6" + +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.3: + version "3.3.5" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#4766bd05a8e2a11af222becd19e15575e52a853a" + integrity sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ== + dependencies: + array-includes "^3.1.6" + array.prototype.flat "^1.3.1" + object.assign "^4.1.4" + object.values "^1.1.6" + +jszip@^3.1.0: + version "3.10.1" + resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.10.1.tgz#34aee70eb18ea1faec2f589208a157d1feb091c2" + integrity sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g== + dependencies: + lie "~3.3.0" + pako "~1.0.2" + readable-stream "~2.3.6" + setimmediate "^1.0.5" + +keyboardevent-from-electron-accelerator@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/keyboardevent-from-electron-accelerator/-/keyboardevent-from-electron-accelerator-2.0.0.tgz#ace21b1aa4e47148815d160057f9edb66567c50c" + integrity sha512-iQcmNA0M4ETMNi0kG/q0h/43wZk7rMeKYrXP7sqKIJbHkTU8Koowgzv+ieR/vWJbOwxx5nDC3UnudZ0aLSu4VA== + +keyboardevents-areequal@^0.2.1: + version "0.2.2" + resolved "https://registry.yarnpkg.com/keyboardevents-areequal/-/keyboardevents-areequal-0.2.2.tgz#88191ec738ce9f7591c25e9056de928b40277194" + integrity sha512-Nv+Kr33T0mEjxR500q+I6IWisOQ0lK1GGOncV0kWE6n4KFmpcu7RUX5/2B0EUtX51Cb0HjZ9VJsSY3u4cBa0kw== + +keyv@^4.0.0: + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + +keyv@^4.5.3: + version "4.5.3" + resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz" + integrity sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug== + dependencies: + json-buffer "3.0.1" + +kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +language-subtag-registry@~0.3.2: + version "0.3.22" + resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz#2e1500861b2e457eba7e7ae86877cbd08fa1fd1d" + integrity sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w== + +language-tags@=1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a" + integrity sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ== + dependencies: + language-subtag-registry "~0.3.2" + +launch-editor@^2.6.0: + version "2.6.1" + resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.6.1.tgz#f259c9ef95cbc9425620bbbd14b468fcdb4ffe3c" + integrity sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw== + dependencies: + picocolors "^1.0.0" + shell-quote "^1.8.1" + +lazy-val@^1.0.4, lazy-val@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/lazy-val/-/lazy-val-1.0.5.tgz#6cf3b9f5bc31cee7ee3e369c0832b7583dcd923d" + integrity sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q== + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +lie@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a" + integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ== + dependencies: + immediate "~3.0.5" + +lilconfig@2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz" + integrity sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg== + +lilconfig@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" + integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +lint-staged@^12.4.2: + version "12.5.0" + resolved "https://registry.npmjs.org/lint-staged/-/lint-staged-12.5.0.tgz" + integrity sha512-BKLUjWDsKquV/JuIcoQW4MSAI3ggwEImF1+sB4zaKvyVx1wBk3FsG7UK9bpnmBTN1pm7EH2BBcMwINJzCRv12g== + dependencies: + cli-truncate "^3.1.0" + colorette "^2.0.16" + commander "^9.3.0" + debug "^4.3.4" + execa "^5.1.1" + lilconfig "2.0.5" + listr2 "^4.0.5" + micromatch "^4.0.5" + normalize-path "^3.0.0" + object-inspect "^1.12.2" + pidtree "^0.5.0" + string-argv "^0.3.1" + supports-color "^9.2.2" + yaml "^1.10.2" + +listr2@^4.0.5: + version "4.0.5" + resolved "https://registry.npmjs.org/listr2/-/listr2-4.0.5.tgz" + integrity sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA== + dependencies: + cli-truncate "^2.1.0" + colorette "^2.0.16" + log-update "^4.0.0" + p-map "^4.0.0" + rfdc "^1.3.0" + rxjs "^7.5.5" + through "^2.3.8" + wrap-ansi "^7.0.0" + +loader-runner@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" + integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== + +loader-utils@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.2.tgz#29a957f3a63973883eb684f10ffd3d151fec01a3" + integrity sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^1.0.1" + +loader-utils@^2.0.0, loader-utils@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" + integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash-es@^4.17.21: + version "4.17.21" + resolved "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz" + integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== + +lodash.curry@^4.0.1: + version "4.1.1" + resolved "https://registry.npmjs.org/lodash.curry/-/lodash.curry-4.1.1.tgz" + integrity sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA== + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== + +lodash.difference@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.difference/-/lodash.difference-4.5.0.tgz#9ccb4e505d486b91651345772885a2df27fd017c" + integrity sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA== + +lodash.escape@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-4.0.1.tgz#c9044690c21e04294beaa517712fded1fa88de98" + integrity sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw== + +lodash.escaperegexp@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz#64762c48618082518ac3df4ccf5d5886dae20347" + integrity sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw== + +lodash.flatten@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" + integrity sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g== + +lodash.flow@^3.3.0: + version "3.5.0" + resolved "https://registry.npmjs.org/lodash.flow/-/lodash.flow-3.5.0.tgz" + integrity sha512-ff3BX/tSioo+XojX4MOsOMhJw0nZoUEF011LX8g8d3gvjVbxd89cCio4BCXronjxcTUIJUoqKEUA+n4CqvvRPw== + +lodash.invokemap@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.invokemap/-/lodash.invokemap-4.6.0.tgz#1748cda5d8b0ef8369c4eb3ec54c21feba1f2d62" + integrity sha512-CfkycNtMqgUlfjfdh2BhKO/ZXrP8ePOX5lEU/g0R3ItJcnuxWDwokMGKx1hWcfOikmyOVx6X9IwWnDGlgKl61w== + +lodash.isequal@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== + +lodash.memoize@4.x, lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.pullall@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.pullall/-/lodash.pullall-4.2.0.tgz#9d98b8518b7c965b0fae4099bd9fb7df8bbf38ba" + integrity sha512-VhqxBKH0ZxPpLhiu68YD1KnHmbhQJQctcipvmFnqIBDYzcIHzf3Zpu0tpeOKtR4x76p9yohc506eGdOjTmyIBg== + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== + +lodash.uniqby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz#d99c07a669e9e6d24e1362dfe266c67616af1302" + integrity sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww== + +lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +log-update@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz" + integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== + dependencies: + ansi-escapes "^4.3.0" + cli-cursor "^3.1.0" + slice-ansi "^4.0.0" + wrap-ansi "^6.2.0" + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== + dependencies: + tslib "^2.0.3" + +lowercase-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" + integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +lru-cache@^6.0.0: + 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" + +lru-cache@^7.7.1: + version "7.18.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" + integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== "lru-cache@^9.1.1 || ^10.0.0": - "integrity" "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==" - "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz" - "version" "10.0.1" - -"lz-string@^1.5.0": - "integrity" "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==" - "resolved" "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz" - "version" "1.5.0" - -"make-dir@^4.0.0": - "integrity" "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==" - "resolved" "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "semver" "^7.5.3" - -"make-error@^1.1.1", "make-error@1.x": - "integrity" "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" - "resolved" "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" - "version" "1.3.6" - -"make-fetch-happen@^11.0.3": - "integrity" "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==" - "resolved" "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz" - "version" "11.1.1" - dependencies: - "agentkeepalive" "^4.2.1" - "cacache" "^17.0.0" - "http-cache-semantics" "^4.1.1" - "http-proxy-agent" "^5.0.0" - "https-proxy-agent" "^5.0.0" - "is-lambda" "^1.0.1" - "lru-cache" "^7.7.1" - "minipass" "^5.0.0" - "minipass-fetch" "^3.0.0" - "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" "^10.0.0" - -"makeerror@1.0.12": - "integrity" "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==" - "resolved" "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz" - "version" "1.0.12" - dependencies: - "tmpl" "1.0.5" - -"matcher@^3.0.0": - "integrity" "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==" - "resolved" "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "escape-string-regexp" "^4.0.0" - -"mdn-data@2.0.28": - "integrity" "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==" - "resolved" "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz" - "version" "2.0.28" - -"mdn-data@2.0.30": - "integrity" "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==" - "resolved" "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz" - "version" "2.0.30" - -"media-typer@0.3.0": - "integrity" "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" - "resolved" "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" - "version" "0.3.0" - -"memfs@^3.4.3": - "integrity" "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==" - "resolved" "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz" - "version" "3.5.3" - dependencies: - "fs-monkey" "^1.0.4" - -"memory-fs@^0.2.0": - "integrity" "sha512-+y4mDxU4rvXXu5UDSGCGNiesFmwCHuefGMoPCO1WYucNYj7DsLqrFaa2fXVI0H+NNiPTwwzKwspn9yTZqUGqng==" - "resolved" "https://registry.npmjs.org/memory-fs/-/memory-fs-0.2.0.tgz" - "version" "0.2.0" - -"merge-descriptors@1.0.1": - "integrity" "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" - "resolved" "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" - "version" "1.0.1" - -"merge-stream@^2.0.0": - "integrity" "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" - "resolved" "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" - "version" "2.0.0" - -"merge2@^1.3.0", "merge2@^1.4.1": - "integrity" "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" - "resolved" "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" - "version" "1.4.1" - -"methods@~1.1.2": - "integrity" "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" - "resolved" "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" - "version" "1.1.2" - -"micromatch@^4.0.0", "micromatch@^4.0.2", "micromatch@^4.0.4", "micromatch@^4.0.5": - "integrity" "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==" - "resolved" "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" - "version" "4.0.5" - dependencies: - "braces" "^3.0.2" - "picomatch" "^2.3.1" - -"mime-db@>= 1.43.0 < 2", "mime-db@1.52.0": - "integrity" "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" - "resolved" "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" - "version" "1.52.0" - -"mime-types@^2.1.12", "mime-types@^2.1.27", "mime-types@^2.1.31", "mime-types@~2.1.17", "mime-types@~2.1.24", "mime-types@~2.1.34": - "integrity" "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==" - "resolved" "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" - "version" "2.1.35" - dependencies: - "mime-db" "1.52.0" - -"mime@^2.5.2": - "integrity" "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==" - "resolved" "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz" - "version" "2.6.0" - -"mime@1.6.0": - "integrity" "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - "resolved" "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" - "version" "1.6.0" - -"mimic-fn@^2.1.0": - "integrity" "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" - "resolved" "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" - "version" "2.1.0" - -"mimic-fn@^4.0.0": - "integrity" "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==" - "resolved" "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz" - "version" "4.0.0" - -"mimic-response@^1.0.0": - "integrity" "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" - "resolved" "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz" - "version" "1.0.1" - -"mimic-response@^3.1.0": - "integrity" "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" - "resolved" "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz" - "version" "3.1.0" - -"min-indent@^1.0.0": - "integrity" "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==" - "resolved" "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz" - "version" "1.0.1" - -"mini-css-extract-plugin@^2.7.6": - "integrity" "sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw==" - "resolved" "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.6.tgz" - "version" "2.7.6" - dependencies: - "schema-utils" "^4.0.0" - -"minimalistic-assert@^1.0.0", "minimalistic-assert@^1.0.1": - "integrity" "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" - "resolved" "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" - "version" "1.0.1" - -"minimalistic-crypto-utils@^1.0.1": - "integrity" "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" - "resolved" "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz" - "version" "1.0.1" - -"minimatch@^3.0.4", "minimatch@^3.0.5", "minimatch@^3.1.1", "minimatch@^3.1.2": - "integrity" "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==" - "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" - "version" "3.1.2" - dependencies: - "brace-expansion" "^1.1.7" - -"minimatch@^5.0.1": - "integrity" "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==" - "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz" - "version" "5.1.6" - dependencies: - "brace-expansion" "^2.0.1" - -"minimatch@^5.1.1": - "integrity" "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==" - "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz" - "version" "5.1.6" - dependencies: - "brace-expansion" "^2.0.1" - -"minimatch@^9.0.1": - "integrity" "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==" - "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz" - "version" "9.0.3" - dependencies: - "brace-expansion" "^2.0.1" - -"minimist@^1.2.0", "minimist@^1.2.6": - "integrity" "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" - "resolved" "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz" - "version" "1.2.6" - -"minipass-collect@^1.0.2": - "integrity" "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==" - "resolved" "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "minipass" "^3.0.0" - -"minipass-fetch@^3.0.0": - "integrity" "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==" - "resolved" "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.4.tgz" - "version" "3.0.4" - dependencies: - "minipass" "^7.0.3" - "minipass-sized" "^1.0.3" - "minizlib" "^2.1.2" + version "10.0.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.1.tgz#0a3be479df549cca0e5d693ac402ff19537a6b7a" + integrity sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g== + +lru_map@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd" + integrity sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ== + +lz-string@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941" + integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ== + +make-dir@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" + integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== + dependencies: + semver "^7.5.3" + +make-error@1.x, make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +make-fetch-happen@^11.0.3: + version "11.1.1" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz#85ceb98079584a9523d4bf71d32996e7e208549f" + integrity sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w== + dependencies: + agentkeepalive "^4.2.1" + cacache "^17.0.0" + http-cache-semantics "^4.1.1" + http-proxy-agent "^5.0.0" + https-proxy-agent "^5.0.0" + is-lambda "^1.0.1" + lru-cache "^7.7.1" + minipass "^5.0.0" + minipass-fetch "^3.0.0" + 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 "^10.0.0" + +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== + dependencies: + tmpl "1.0.5" + +matcher@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/matcher/-/matcher-3.0.0.tgz#bd9060f4c5b70aa8041ccc6f80368760994f30ca" + integrity sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng== + dependencies: + escape-string-regexp "^4.0.0" + +mdn-data@2.0.28: + version "2.0.28" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.28.tgz#5ec48e7bef120654539069e1ae4ddc81ca490eba" + integrity sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g== + +mdn-data@2.0.30: + version "2.0.30" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.30.tgz#ce4df6f80af6cfbe218ecd5c552ba13c4dfa08cc" + integrity sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA== + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== + +memfs@^3.4.3: + version "3.6.0" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.6.0.tgz#d7a2110f86f79dd950a8b6df6d57bc984aa185f6" + integrity sha512-EGowvkkgbMcIChjMTMkESFDbZeSh8xZ7kNSF0hAiAN4Jh6jgHCRS0Ga/+C8y6Au+oqpezRHCfPsmJ2+DwAgiwQ== + dependencies: + fs-monkey "^1.0.4" + +memory-fs@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.2.0.tgz#f2bb25368bc121e391c2520de92969caee0a0290" + integrity sha512-+y4mDxU4rvXXu5UDSGCGNiesFmwCHuefGMoPCO1WYucNYj7DsLqrFaa2fXVI0H+NNiPTwwzKwspn9yTZqUGqng== + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== + +micromatch@^4.0.0, micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: + version "4.0.5" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mime@^2.5.2: + version "2.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mimic-fn@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" + integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== + +mimic-response@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + +mimic-response@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" + integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== + +min-indent@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" + integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== + +mini-css-extract-plugin@^2.7.6: + version "2.7.6" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.6.tgz#282a3d38863fddcd2e0c220aaed5b90bc156564d" + integrity sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw== + dependencies: + schema-utils "^4.0.0" + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz" + integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== + +minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^5.0.1, minimatch@^5.1.1: + version "5.1.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^9.0.1: + version "9.0.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" + integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== + dependencies: + brace-expansion "^2.0.1" + +minimist@^1.2.0, minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +minipass-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== + dependencies: + minipass "^3.0.0" + +minipass-fetch@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-3.0.4.tgz#4d4d9b9f34053af6c6e597a64be8e66e42bf45b7" + integrity sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg== + dependencies: + minipass "^7.0.3" + minipass-sized "^1.0.3" + minizlib "^2.1.2" optionalDependencies: - "encoding" "^0.1.13" - -"minipass-flush@^1.0.5": - "integrity" "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==" - "resolved" "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz" - "version" "1.0.5" - dependencies: - "minipass" "^3.0.0" - -"minipass-pipeline@^1.2.4": - "integrity" "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==" - "resolved" "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz" - "version" "1.2.4" - dependencies: - "minipass" "^3.0.0" - -"minipass-sized@^1.0.3": - "integrity" "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==" - "resolved" "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz" - "version" "1.0.3" - dependencies: - "minipass" "^3.0.0" - -"minipass@^3.0.0": - "integrity" "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==" - "resolved" "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz" - "version" "3.3.6" - dependencies: - "yallist" "^4.0.0" - -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", "minipass@^7.0.3": - "integrity" "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==" - "resolved" "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz" - "version" "7.0.4" - -"minipass@^5.0.0": - "integrity" "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==" - "resolved" "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz" - "version" "5.0.0" - -"minipass@^7.0.3": - "integrity" "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==" - "resolved" "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz" - "version" "7.0.4" - -"minizlib@^2.1.1", "minizlib@^2.1.2": - "integrity" "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==" - "resolved" "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz" - "version" "2.1.2" - dependencies: - "minipass" "^3.0.0" - "yallist" "^4.0.0" - -"mixpanel-browser@^2.45.0", "mixpanel-browser@^2.47.0": - "integrity" "sha512-Ldrva0fRBEIFWmEibBQO1PulfpJVF3pf28Guk09lDirDaSQqqU/xs9zQLwN2rL5VwVtsP1aD3JaCgaa98EjojQ==" - "resolved" "https://registry.npmjs.org/mixpanel-browser/-/mixpanel-browser-2.47.0.tgz" - "version" "2.47.0" - -"mkdirp@^0.5.1": - "integrity" "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==" - "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" - "version" "0.5.6" - dependencies: - "minimist" "^1.2.6" - -"mkdirp@^1.0.3": - "integrity" "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" - "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" - "version" "1.0.4" - -"mrmime@^1.0.0": - "integrity" "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==" - "resolved" "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz" - "version" "1.0.1" - -"ms@^2.0.0", "ms@^2.1.1", "ms@2.1.2": - "integrity" "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" - "version" "2.1.2" - -"ms@2.0.0": - "integrity" "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - "resolved" "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" - "version" "2.0.0" - -"ms@2.1.3": - "integrity" "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" - "version" "2.1.3" - -"multicast-dns@^7.2.5": - "integrity" "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==" - "resolved" "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz" - "version" "7.2.5" - dependencies: - "dns-packet" "^5.2.2" - "thunky" "^1.0.2" - -"nanoclone@^0.2.1": - "integrity" "sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA==" - "resolved" "https://registry.npmjs.org/nanoclone/-/nanoclone-0.2.1.tgz" - "version" "0.2.1" - -"nanoid@^3.3.6": - "integrity" "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==" - "resolved" "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz" - "version" "3.3.6" - -"natural-compare@^1.4.0": - "integrity" "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" - "resolved" "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" - "version" "1.4.0" - -"negotiator@^0.6.3", "negotiator@0.6.3": - "integrity" "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" - "resolved" "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" - "version" "0.6.3" - -"neo-async@^2.6.2": - "integrity" "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" - "resolved" "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" - "version" "2.6.2" - -"no-case@^3.0.4": - "integrity" "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==" - "resolved" "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz" - "version" "3.0.4" - dependencies: - "lower-case" "^2.0.2" - "tslib" "^2.0.3" - -"node-abi@^3.45.0": - "integrity" "sha512-2s6B2CWZM//kPgwnuI0KrYwNjfdByE25zvAaEpq9IH4zcNsarH8Ihu/UuX6XMPEogDAxkuUFeZn60pXNHAqn3A==" - "resolved" "https://registry.npmjs.org/node-abi/-/node-abi-3.47.0.tgz" - "version" "3.47.0" - dependencies: - "semver" "^7.3.5" - -"node-abort-controller@^3.0.1": - "integrity" "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==" - "resolved" "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz" - "version" "3.1.1" - -"node-addon-api@^1.6.3": - "integrity" "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==" - "resolved" "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz" - "version" "1.7.2" - -"node-api-version@^0.1.4": - "integrity" "sha512-KGXihXdUChwJAOHO53bv9/vXcLmdUsZ6jIptbvYvkpKfth+r7jw44JkVxQFA3kX5nQjzjmGu1uAu/xNNLNlI5g==" - "resolved" "https://registry.npmjs.org/node-api-version/-/node-api-version-0.1.4.tgz" - "version" "0.1.4" - dependencies: - "semver" "^7.3.5" - -"node-fetch@^2.6.12": - "integrity" "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==" - "resolved" "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "whatwg-url" "^5.0.0" - -"node-forge@^1": - "integrity" "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==" - "resolved" "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz" - "version" "1.3.1" - -"node-gyp@^9.0.0": - "integrity" "sha512-dMXsYP6gc9rRbejLXmTbVRYjAHw7ppswsKyMxuxJxxOHzluIO1rGp9TOQgjFJ+2MCqcOcQTOPB/8Xwhr+7s4Eg==" - "resolved" "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.0.tgz" - "version" "9.4.0" - dependencies: - "env-paths" "^2.2.0" - "exponential-backoff" "^3.1.1" - "glob" "^7.1.4" - "graceful-fs" "^4.2.6" - "make-fetch-happen" "^11.0.3" - "nopt" "^6.0.0" - "npmlog" "^6.0.0" - "rimraf" "^3.0.2" - "semver" "^7.3.5" - "tar" "^6.1.2" - "which" "^2.0.2" - -"node-int64@^0.4.0": - "integrity" "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==" - "resolved" "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz" - "version" "0.4.0" - -"node-releases@^2.0.13": - "integrity" "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==" - "resolved" "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz" - "version" "2.0.13" - -"nopt@^6.0.0": - "integrity" "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==" - "resolved" "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "abbrev" "^1.0.0" - -"normalize-path@^2.1.1": - "integrity" "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==" - "resolved" "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz" - "version" "2.1.1" - dependencies: - "remove-trailing-separator" "^1.0.1" - -"normalize-path@^3.0.0", "normalize-path@~3.0.0": - "integrity" "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - "resolved" "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" - "version" "3.0.0" - -"normalize-url@^6.0.1": - "integrity" "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==" - "resolved" "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz" - "version" "6.1.0" - -"npm-run-path@^4.0.1": - "integrity" "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==" - "resolved" "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" - "version" "4.0.1" - dependencies: - "path-key" "^3.0.0" - -"npm-run-path@^5.1.0": - "integrity" "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==" - "resolved" "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz" - "version" "5.1.0" - dependencies: - "path-key" "^4.0.0" - -"npmlog@^6.0.0": - "integrity" "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==" - "resolved" "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz" - "version" "6.0.2" - dependencies: - "are-we-there-yet" "^3.0.0" - "console-control-strings" "^1.1.0" - "gauge" "^4.0.3" - "set-blocking" "^2.0.0" - -"nth-check@^2.0.1": - "integrity" "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==" - "resolved" "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz" - "version" "2.1.1" - dependencies: - "boolbase" "^1.0.0" - -"nwsapi@^2.2.2": - "integrity" "sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==" - "resolved" "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz" - "version" "2.2.7" - -"object-assign@^4.1.0", "object-assign@^4.1.1": - "integrity" "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" - "resolved" "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" - "version" "4.1.1" - -"object-inspect@^1.12.2", "object-inspect@^1.12.3", "object-inspect@^1.9.0": - "integrity" "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==" - "resolved" "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz" - "version" "1.12.3" - -"object-is@^1.1.5": - "integrity" "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==" - "resolved" "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz" - "version" "1.1.5" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.3" - -"object-keys@^1.1.1": - "integrity" "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" - "resolved" "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" - "version" "1.1.1" - -"object.assign@^4.1.2", "object.assign@^4.1.4": - "integrity" "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==" - "resolved" "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz" - "version" "4.1.4" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "has-symbols" "^1.0.3" - "object-keys" "^1.1.1" - -"object.entries@^1.1.5", "object.entries@^1.1.6": - "integrity" "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==" - "resolved" "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz" - "version" "1.1.7" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.2.0" - "es-abstract" "^1.22.1" - -"object.fromentries@^2.0.6": - "integrity" "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==" - "resolved" "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz" - "version" "2.0.7" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.2.0" - "es-abstract" "^1.22.1" - -"object.groupby@^1.0.0": - "integrity" "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==" - "resolved" "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.2.0" - "es-abstract" "^1.22.1" - "get-intrinsic" "^1.2.1" - -"object.hasown@^1.1.2": - "integrity" "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==" - "resolved" "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz" - "version" "1.1.3" - dependencies: - "define-properties" "^1.2.0" - "es-abstract" "^1.22.1" - -"object.values@^1.1.6": - "integrity" "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==" - "resolved" "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz" - "version" "1.1.7" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.2.0" - "es-abstract" "^1.22.1" - -"obuf@^1.0.0", "obuf@^1.1.2": - "integrity" "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" - "resolved" "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz" - "version" "1.1.2" - -"on-finished@2.4.1": - "integrity" "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==" - "resolved" "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" - "version" "2.4.1" - dependencies: - "ee-first" "1.1.1" - -"on-headers@~1.0.2": - "integrity" "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" - "resolved" "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz" - "version" "1.0.2" - -"once@^1.3.0", "once@^1.3.1", "once@^1.4.0": - "integrity" "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==" - "resolved" "https://registry.npmjs.org/once/-/once-1.4.0.tgz" - "version" "1.4.0" - dependencies: - "wrappy" "1" - -"onetime@^5.1.0", "onetime@^5.1.2": - "integrity" "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==" - "resolved" "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" - "version" "5.1.2" - dependencies: - "mimic-fn" "^2.1.0" - -"onetime@^6.0.0": - "integrity" "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==" - "resolved" "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "mimic-fn" "^4.0.0" - -"open@^8.0.9": - "integrity" "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==" - "resolved" "https://registry.npmjs.org/open/-/open-8.4.2.tgz" - "version" "8.4.2" - dependencies: - "define-lazy-prop" "^2.0.0" - "is-docker" "^2.1.1" - "is-wsl" "^2.2.0" - -"open@^9.1.0": - "integrity" "sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==" - "resolved" "https://registry.npmjs.org/open/-/open-9.1.0.tgz" - "version" "9.1.0" - dependencies: - "default-browser" "^4.0.0" - "define-lazy-prop" "^3.0.0" - "is-inside-container" "^1.0.0" - "is-wsl" "^2.2.0" - -"opener@^1.5.2": - "integrity" "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==" - "resolved" "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz" - "version" "1.5.2" - -"optionator@^0.9.3": - "integrity" "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==" - "resolved" "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz" - "version" "0.9.3" + encoding "^0.1.13" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-pipeline@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" + integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== + dependencies: + minipass "^3.0.0" + +minipass-sized@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" + integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== + dependencies: + minipass "^3.0.0" + +minipass@^3.0.0: + version "3.3.6" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" + integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== + dependencies: + yallist "^4.0.0" + +minipass@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" + integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== + +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.3: + version "7.0.4" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c" + integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== + +minizlib@^2.1.1, minizlib@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + +mixpanel-browser@^2.47.0: + version "2.47.0" + resolved "https://registry.npmjs.org/mixpanel-browser/-/mixpanel-browser-2.47.0.tgz" + integrity sha512-Ldrva0fRBEIFWmEibBQO1PulfpJVF3pf28Guk09lDirDaSQqqU/xs9zQLwN2rL5VwVtsP1aD3JaCgaa98EjojQ== + +mkdirp@^0.5.1: + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +mkdirp@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +mrmime@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mrmime/-/mrmime-1.0.1.tgz#5f90c825fad4bdd41dc914eff5d1a8cfdaf24f27" + integrity sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw== + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@2.1.3, ms@^2.0.0, ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multicast-dns@^7.2.5: + version "7.2.5" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.5.tgz#77eb46057f4d7adbd16d9290fa7299f6fa64cced" + integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg== + dependencies: + dns-packet "^5.2.2" + thunky "^1.0.2" + +nanoclone@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/nanoclone/-/nanoclone-0.2.1.tgz" + integrity sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA== + +nanoid@^3.3.6: + version "3.3.6" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" + integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +negotiator@0.6.3, negotiator@^0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== + dependencies: + lower-case "^2.0.2" + tslib "^2.0.3" + +node-abi@^3.45.0: + version "3.50.0" + resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.50.0.tgz#bbee6943c8812d20e241539854d7b8003404d917" + integrity sha512-2Gxu7Eq7vnBIRfYSmqPruEllMM14FjOQFJSoqdGWthVn+tmwEXzmdPpya6cvvwf0uZA3F5N1fMFr9mijZBplFA== + dependencies: + semver "^7.3.5" + +node-abort-controller@^3.0.1: + version "3.1.1" + resolved "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz" + integrity sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ== + +node-addon-api@^1.6.3: + version "1.7.2" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-1.7.2.tgz#3df30b95720b53c24e59948b49532b662444f54d" + integrity sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg== + +node-api-version@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/node-api-version/-/node-api-version-0.1.4.tgz#1ed46a485e462d55d66b5aa1fe2821720dedf080" + integrity sha512-KGXihXdUChwJAOHO53bv9/vXcLmdUsZ6jIptbvYvkpKfth+r7jw44JkVxQFA3kX5nQjzjmGu1uAu/xNNLNlI5g== + dependencies: + semver "^7.3.5" + +node-fetch@^2.6.12: + version "2.7.0" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== + dependencies: + whatwg-url "^5.0.0" + +node-forge@^1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" + integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== + +node-gyp@^9.0.0: + version "9.4.0" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-9.4.0.tgz#2a7a91c7cba4eccfd95e949369f27c9ba704f369" + integrity sha512-dMXsYP6gc9rRbejLXmTbVRYjAHw7ppswsKyMxuxJxxOHzluIO1rGp9TOQgjFJ+2MCqcOcQTOPB/8Xwhr+7s4Eg== + dependencies: + env-paths "^2.2.0" + exponential-backoff "^3.1.1" + glob "^7.1.4" + graceful-fs "^4.2.6" + make-fetch-happen "^11.0.3" + nopt "^6.0.0" + npmlog "^6.0.0" + rimraf "^3.0.2" + semver "^7.3.5" + tar "^6.1.2" + which "^2.0.2" + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== + +node-releases@^2.0.13: + version "2.0.13" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz" + integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== + +nopt@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-6.0.0.tgz#245801d8ebf409c6df22ab9d95b65e1309cdb16d" + integrity sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g== + dependencies: + abbrev "^1.0.0" + +normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w== + dependencies: + remove-trailing-separator "^1.0.1" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-url@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" + integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +npm-run-path@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.1.0.tgz#bc62f7f3f6952d9894bd08944ba011a6ee7b7e00" + integrity sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q== + dependencies: + path-key "^4.0.0" + +npmlog@^6.0.0: + version "6.0.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830" + integrity sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg== + dependencies: + are-we-there-yet "^3.0.0" + console-control-strings "^1.1.0" + gauge "^4.0.3" + set-blocking "^2.0.0" + +nth-check@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== + dependencies: + boolbase "^1.0.0" + +nwsapi@^2.2.2: + version "2.2.7" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.7.tgz#738e0707d3128cb750dddcfe90e4610482df0f30" + integrity sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ== + +object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-inspect@^1.12.2: + version "1.12.3" + resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz" + integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== + +object-inspect@^1.12.3, object-inspect@^1.9.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.0.tgz#42695d3879e1cd5bda6df5062164d80c996e23e2" + integrity sha512-HQ4J+ic8hKrgIt3mqk6cVOVrW2ozL4KdvHlqpBv9vDYWx9ysAgENAdvy4FoGF+KFdhR7nQTNm5J0ctAeOwn+3g== + +object-is@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.2, object.assign@^4.1.4: + version "4.1.4" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" + integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + has-symbols "^1.0.3" + object-keys "^1.1.1" + +object.entries@^1.1.5, object.entries@^1.1.6: + version "1.1.7" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.7.tgz#2b47760e2a2e3a752f39dd874655c61a7f03c131" + integrity sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +object.fromentries@^2.0.6: + version "2.0.7" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.7.tgz#71e95f441e9a0ea6baf682ecaaf37fa2a8d7e616" + integrity sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +object.groupby@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.1.tgz#d41d9f3c8d6c778d9cbac86b4ee9f5af103152ee" + integrity sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + +object.hasown@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.3.tgz#6a5f2897bb4d3668b8e79364f98ccf971bda55ae" + integrity sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA== + dependencies: + define-properties "^1.2.0" + es-abstract "^1.22.1" + +object.values@^1.1.6: + version "1.1.7" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.7.tgz#617ed13272e7e1071b43973aa1655d9291b8442a" + integrity sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +obuf@^1.0.0, obuf@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^5.1.0, onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +onetime@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" + integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== + dependencies: + mimic-fn "^4.0.0" + +open@^8.0.9: + version "8.4.2" + resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" + integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== + dependencies: + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" + +open@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/open/-/open-9.1.0.tgz#684934359c90ad25742f5a26151970ff8c6c80b6" + integrity sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg== + dependencies: + default-browser "^4.0.0" + define-lazy-prop "^3.0.0" + is-inside-container "^1.0.0" + is-wsl "^2.2.0" + +opener@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" + integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== + +optionator@^0.9.3: + version "0.9.3" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz" + integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== dependencies: "@aashutoshrathi/word-wrap" "^1.2.3" - "deep-is" "^0.1.3" - "fast-levenshtein" "^2.0.6" - "levn" "^0.4.1" - "prelude-ls" "^1.2.1" - "type-check" "^0.4.0" - -"ora@^5.1.0": - "integrity" "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==" - "resolved" "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz" - "version" "5.4.1" - 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" - -"p-cancelable@^2.0.0": - "integrity" "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==" - "resolved" "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz" - "version" "2.1.1" - -"p-limit@^2.2.0": - "integrity" "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==" - "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" - "version" "2.3.0" - dependencies: - "p-try" "^2.0.0" - -"p-limit@^3.0.2", "p-limit@^3.1.0": - "integrity" "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==" - "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "yocto-queue" "^0.1.0" - -"p-locate@^4.1.0": - "integrity" "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==" - "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "p-limit" "^2.2.0" - -"p-locate@^5.0.0": - "integrity" "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==" - "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "p-limit" "^3.0.2" - -"p-map@^4.0.0": - "integrity" "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==" - "resolved" "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "aggregate-error" "^3.0.0" - -"p-retry@^4.5.0": - "integrity" "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==" - "resolved" "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz" - "version" "4.6.2" + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + +ora@^5.1.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" + integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== + 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" + +p-cancelable@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" + integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== + +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.0.2, p-limit@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +p-retry@^4.5.0: + version "4.6.2" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16" + integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== dependencies: "@types/retry" "0.12.0" - "retry" "^0.13.1" + retry "^0.13.1" -"p-try@^2.0.0": - "integrity" "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" - "resolved" "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" - "version" "2.2.0" +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -"pako@~1.0.2": - "integrity" "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" - "resolved" "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz" - "version" "1.0.11" +pako@~1.0.2: + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== -"param-case@^3.0.4": - "integrity" "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==" - "resolved" "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz" - "version" "3.0.4" +param-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" + integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== dependencies: - "dot-case" "^3.0.4" - "tslib" "^2.0.3" + dot-case "^3.0.4" + tslib "^2.0.3" -"parent-module@^1.0.0": - "integrity" "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==" - "resolved" "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" - "version" "1.0.1" +parent-module@^1.0.0: + 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== dependencies: - "callsites" "^3.0.0" + callsites "^3.0.0" -"parse-json@^5.0.0", "parse-json@^5.2.0": - "integrity" "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==" - "resolved" "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" - "version" "5.2.0" +parse-json@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== 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" - -"parse5@^7.0.0", "parse5@^7.1.1": - "integrity" "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==" - "resolved" "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz" - "version" "7.1.2" - dependencies: - "entities" "^4.4.0" - -"parseurl@~1.3.2", "parseurl@~1.3.3": - "integrity" "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - "resolved" "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" - "version" "1.3.3" - -"pascal-case@^3.1.2": - "integrity" "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==" - "resolved" "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz" - "version" "3.1.2" - dependencies: - "no-case" "^3.0.4" - "tslib" "^2.0.3" - -"path-exists@^4.0.0": - "integrity" "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" - "resolved" "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" - "version" "4.0.0" - -"path-is-absolute@^1.0.0": - "integrity" "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" - "resolved" "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" - "version" "1.0.1" - -"path-key@^3.0.0": - "integrity" "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" - "resolved" "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" - "version" "3.1.1" - -"path-key@^3.1.0": - "integrity" "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" - "resolved" "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" - "version" "3.1.1" - -"path-key@^4.0.0": - "integrity" "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==" - "resolved" "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz" - "version" "4.0.0" - -"path-parse@^1.0.7": - "integrity" "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - "resolved" "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" - "version" "1.0.7" - -"path-scurry@^1.10.1": - "integrity" "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==" - "resolved" "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz" - "version" "1.10.1" - dependencies: - "lru-cache" "^9.1.1 || ^10.0.0" - "minipass" "^5.0.0 || ^6.0.2 || ^7.0.0" - -"path-to-regexp@0.1.7": - "integrity" "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" - "resolved" "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz" - "version" "0.1.7" - -"path-type@^4.0.0": - "integrity" "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" - "resolved" "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" - "version" "4.0.0" - -"pend@~1.2.0": - "integrity" "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" - "resolved" "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz" - "version" "1.2.0" - -"picocolors@^1.0.0": - "integrity" "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - "resolved" "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" - "version" "1.0.0" - -"picomatch@^2.0.4", "picomatch@^2.2.1", "picomatch@^2.2.3", "picomatch@^2.3.1": - "integrity" "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" - "resolved" "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" - "version" "2.3.1" - -"pidtree@^0.5.0": - "integrity" "sha512-9nxspIM7OpZuhBxPg73Zvyq7j1QMPMPsGKTqRc2XOaFQauDvoNz9fM1Wdkjmeo7l9GXOZiRs97sPkuayl39wjA==" - "resolved" "https://registry.npmjs.org/pidtree/-/pidtree-0.5.0.tgz" - "version" "0.5.0" - -"pify@^4.0.1": - "integrity" "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" - "resolved" "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" - "version" "4.0.1" - -"pirates@^4.0.4": - "integrity" "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==" - "resolved" "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz" - "version" "4.0.6" - -"pkg-dir@^4.2.0": - "integrity" "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==" - "resolved" "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" - "version" "4.2.0" - dependencies: - "find-up" "^4.0.0" - -"plist@^3.0.4", "plist@^3.0.5": - "integrity" "sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==" - "resolved" "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz" - "version" "3.1.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +parse5@^7.0.0, parse5@^7.1.1: + version "7.1.2" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32" + integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== + dependencies: + entities "^4.4.0" + +parseurl@~1.3.2, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascal-case@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" + integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-key@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" + integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-scurry@^1.10.1: + version "1.10.1" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.1.tgz#9ba6bf5aa8500fe9fd67df4f0d9483b2b0bfc698" + integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ== + dependencies: + lru-cache "^9.1.1 || ^10.0.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pend@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pidtree@^0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/pidtree/-/pidtree-0.5.0.tgz" + integrity sha512-9nxspIM7OpZuhBxPg73Zvyq7j1QMPMPsGKTqRc2XOaFQauDvoNz9fM1Wdkjmeo7l9GXOZiRs97sPkuayl39wjA== + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pirates@^4.0.4: + version "4.0.6" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" + integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== + +pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +plist@^3.0.4, plist@^3.0.5: + version "3.1.0" + resolved "https://registry.yarnpkg.com/plist/-/plist-3.1.0.tgz#797a516a93e62f5bde55e0b9cc9c967f860893c9" + integrity sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ== dependencies: "@xmldom/xmldom" "^0.8.8" - "base64-js" "^1.5.1" - "xmlbuilder" "^15.1.1" - -"postcss-calc@^9.0.0": - "integrity" "sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==" - "resolved" "https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.1.tgz" - "version" "9.0.1" - dependencies: - "postcss-selector-parser" "^6.0.11" - "postcss-value-parser" "^4.2.0" - -"postcss-colormin@^6.0.0": - "integrity" "sha512-EuO+bAUmutWoZYgHn2T1dG1pPqHU6L4TjzPlu4t1wZGXQ/fxV16xg2EJmYi0z+6r+MGV1yvpx1BHkUaRrPa2bw==" - "resolved" "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "browserslist" "^4.21.4" - "caniuse-api" "^3.0.0" - "colord" "^2.9.1" - "postcss-value-parser" "^4.2.0" - -"postcss-convert-values@^6.0.0": - "integrity" "sha512-U5D8QhVwqT++ecmy8rnTb+RL9n/B806UVaS3m60lqle4YDFcpbS3ae5bTQIh3wOGUSDHSEtMYLs/38dNG7EYFw==" - "resolved" "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "browserslist" "^4.21.4" - "postcss-value-parser" "^4.2.0" - -"postcss-discard-comments@^6.0.0": - "integrity" "sha512-p2skSGqzPMZkEQvJsgnkBhCn8gI7NzRH2683EEjrIkoMiwRELx68yoUJ3q3DGSGuQ8Ug9Gsn+OuDr46yfO+eFw==" - "resolved" "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-6.0.0.tgz" - "version" "6.0.0" - -"postcss-discard-duplicates@^6.0.0": - "integrity" "sha512-bU1SXIizMLtDW4oSsi5C/xHKbhLlhek/0/yCnoMQany9k3nPBq+Ctsv/9oMmyqbR96HYHxZcHyK2HR5P/mqoGA==" - "resolved" "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.0.tgz" - "version" "6.0.0" - -"postcss-discard-empty@^6.0.0": - "integrity" "sha512-b+h1S1VT6dNhpcg+LpyiUrdnEZfICF0my7HAKgJixJLW7BnNmpRH34+uw/etf5AhOlIhIAuXApSzzDzMI9K/gQ==" - "resolved" "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-6.0.0.tgz" - "version" "6.0.0" - -"postcss-discard-overridden@^6.0.0": - "integrity" "sha512-4VELwssYXDFigPYAZ8vL4yX4mUepF/oCBeeIT4OXsJPYOtvJumyz9WflmJWTfDwCUcpDR+z0zvCWBXgTx35SVw==" - "resolved" "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-6.0.0.tgz" - "version" "6.0.0" - -"postcss-merge-longhand@^6.0.0": - "integrity" "sha512-4VSfd1lvGkLTLYcxFuISDtWUfFS4zXe0FpF149AyziftPFQIWxjvFSKhA4MIxMe4XM3yTDgQMbSNgzIVxChbIg==" - "resolved" "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "postcss-value-parser" "^4.2.0" - "stylehacks" "^6.0.0" - -"postcss-merge-rules@^6.0.1": - "integrity" "sha512-a4tlmJIQo9SCjcfiCcCMg/ZCEe0XTkl/xK0XHBs955GWg9xDX3NwP9pwZ78QUOWB8/0XCjZeJn98Dae0zg6AAw==" - "resolved" "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.0.1.tgz" - "version" "6.0.1" - dependencies: - "browserslist" "^4.21.4" - "caniuse-api" "^3.0.0" - "cssnano-utils" "^4.0.0" - "postcss-selector-parser" "^6.0.5" + base64-js "^1.5.1" + xmlbuilder "^15.1.1" + +postcss-calc@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-9.0.1.tgz#a744fd592438a93d6de0f1434c572670361eb6c6" + integrity sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ== + dependencies: + postcss-selector-parser "^6.0.11" + postcss-value-parser "^4.2.0" + +postcss-colormin@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-6.0.0.tgz#d4250652e952e1c0aca70c66942da93d3cdeaafe" + integrity sha512-EuO+bAUmutWoZYgHn2T1dG1pPqHU6L4TjzPlu4t1wZGXQ/fxV16xg2EJmYi0z+6r+MGV1yvpx1BHkUaRrPa2bw== + dependencies: + browserslist "^4.21.4" + caniuse-api "^3.0.0" + colord "^2.9.1" + postcss-value-parser "^4.2.0" + +postcss-convert-values@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-6.0.0.tgz#ec94a954957e5c3f78f0e8f65dfcda95280b8996" + integrity sha512-U5D8QhVwqT++ecmy8rnTb+RL9n/B806UVaS3m60lqle4YDFcpbS3ae5bTQIh3wOGUSDHSEtMYLs/38dNG7EYFw== + dependencies: + browserslist "^4.21.4" + postcss-value-parser "^4.2.0" + +postcss-discard-comments@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-6.0.0.tgz#9ca335e8b68919f301b24ba47dde226a42e535fe" + integrity sha512-p2skSGqzPMZkEQvJsgnkBhCn8gI7NzRH2683EEjrIkoMiwRELx68yoUJ3q3DGSGuQ8Ug9Gsn+OuDr46yfO+eFw== + +postcss-discard-duplicates@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.0.tgz#c26177a6c33070922e67e9a92c0fd23d443d1355" + integrity sha512-bU1SXIizMLtDW4oSsi5C/xHKbhLlhek/0/yCnoMQany9k3nPBq+Ctsv/9oMmyqbR96HYHxZcHyK2HR5P/mqoGA== + +postcss-discard-empty@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-6.0.0.tgz#06c1c4fce09e22d2a99e667c8550eb8a3a1b9aee" + integrity sha512-b+h1S1VT6dNhpcg+LpyiUrdnEZfICF0my7HAKgJixJLW7BnNmpRH34+uw/etf5AhOlIhIAuXApSzzDzMI9K/gQ== + +postcss-discard-overridden@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-6.0.0.tgz#49c5262db14e975e349692d9024442de7cd8e234" + integrity sha512-4VELwssYXDFigPYAZ8vL4yX4mUepF/oCBeeIT4OXsJPYOtvJumyz9WflmJWTfDwCUcpDR+z0zvCWBXgTx35SVw== + +postcss-merge-longhand@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-6.0.0.tgz#6f627b27db939bce316eaa97e22400267e798d69" + integrity sha512-4VSfd1lvGkLTLYcxFuISDtWUfFS4zXe0FpF149AyziftPFQIWxjvFSKhA4MIxMe4XM3yTDgQMbSNgzIVxChbIg== + dependencies: + postcss-value-parser "^4.2.0" + stylehacks "^6.0.0" + +postcss-merge-rules@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-6.0.1.tgz#39f165746404e646c0f5c510222ccde4824a86aa" + integrity sha512-a4tlmJIQo9SCjcfiCcCMg/ZCEe0XTkl/xK0XHBs955GWg9xDX3NwP9pwZ78QUOWB8/0XCjZeJn98Dae0zg6AAw== + dependencies: + browserslist "^4.21.4" + caniuse-api "^3.0.0" + cssnano-utils "^4.0.0" + postcss-selector-parser "^6.0.5" -"postcss-minify-font-values@^6.0.0": - "integrity" "sha512-zNRAVtyh5E8ndZEYXA4WS8ZYsAp798HiIQ1V2UF/C/munLp2r1UGHwf1+6JFu7hdEhJFN+W1WJQKBrtjhFgEnA==" - "resolved" "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "postcss-value-parser" "^4.2.0" - -"postcss-minify-gradients@^6.0.0": - "integrity" "sha512-wO0F6YfVAR+K1xVxF53ueZJza3L+R3E6cp0VwuXJQejnNUH0DjcAFe3JEBeTY1dLwGa0NlDWueCA1VlEfiKgAA==" - "resolved" "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "colord" "^2.9.1" - "cssnano-utils" "^4.0.0" - "postcss-value-parser" "^4.2.0" +postcss-minify-font-values@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-6.0.0.tgz#68d4a028f9fa5f61701974724b2cc9445d8e6070" + integrity sha512-zNRAVtyh5E8ndZEYXA4WS8ZYsAp798HiIQ1V2UF/C/munLp2r1UGHwf1+6JFu7hdEhJFN+W1WJQKBrtjhFgEnA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-minify-gradients@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-6.0.0.tgz#22b5c88cc63091dadbad34e31ff958404d51d679" + integrity sha512-wO0F6YfVAR+K1xVxF53ueZJza3L+R3E6cp0VwuXJQejnNUH0DjcAFe3JEBeTY1dLwGa0NlDWueCA1VlEfiKgAA== + dependencies: + colord "^2.9.1" + cssnano-utils "^4.0.0" + postcss-value-parser "^4.2.0" -"postcss-minify-params@^6.0.0": - "integrity" "sha512-Fz/wMQDveiS0n5JPcvsMeyNXOIMrwF88n7196puSuQSWSa+/Ofc1gDOSY2xi8+A4PqB5dlYCKk/WfqKqsI+ReQ==" - "resolved" "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "browserslist" "^4.21.4" - "cssnano-utils" "^4.0.0" - "postcss-value-parser" "^4.2.0" - -"postcss-minify-selectors@^6.0.0": - "integrity" "sha512-ec/q9JNCOC2CRDNnypipGfOhbYPuUkewGwLnbv6omue/PSASbHSU7s6uSQ0tcFRVv731oMIx8k0SP4ZX6be/0g==" - "resolved" "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-6.0.0.tgz" - "version" "6.0.0" +postcss-minify-params@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-6.0.0.tgz#2b3a85a9e3b990d7a16866f430f5fd1d5961b539" + integrity sha512-Fz/wMQDveiS0n5JPcvsMeyNXOIMrwF88n7196puSuQSWSa+/Ofc1gDOSY2xi8+A4PqB5dlYCKk/WfqKqsI+ReQ== + dependencies: + browserslist "^4.21.4" + cssnano-utils "^4.0.0" + postcss-value-parser "^4.2.0" + +postcss-minify-selectors@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-6.0.0.tgz#5046c5e8680a586e5a0cad52cc9aa36d6be5bda2" + integrity sha512-ec/q9JNCOC2CRDNnypipGfOhbYPuUkewGwLnbv6omue/PSASbHSU7s6uSQ0tcFRVv731oMIx8k0SP4ZX6be/0g== dependencies: - "postcss-selector-parser" "^6.0.5" + postcss-selector-parser "^6.0.5" -"postcss-modules-extract-imports@^3.0.0": - "integrity" "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==" - "resolved" "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz" - "version" "3.0.0" - -"postcss-modules-local-by-default@^4.0.3": - "integrity" "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==" - "resolved" "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz" - "version" "4.0.3" - dependencies: - "icss-utils" "^5.0.0" - "postcss-selector-parser" "^6.0.2" - "postcss-value-parser" "^4.1.0" +postcss-modules-extract-imports@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d" + integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== + +postcss-modules-local-by-default@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz#b08eb4f083050708998ba2c6061b50c2870ca524" + integrity sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA== + dependencies: + icss-utils "^5.0.0" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.1.0" -"postcss-modules-scope@^3.0.0": - "integrity" "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==" - "resolved" "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz" - "version" "3.0.0" +postcss-modules-scope@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06" + integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg== dependencies: - "postcss-selector-parser" "^6.0.4" + postcss-selector-parser "^6.0.4" -"postcss-modules-values@^4.0.0": - "integrity" "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==" - "resolved" "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz" - "version" "4.0.0" +postcss-modules-values@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" + integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== dependencies: - "icss-utils" "^5.0.0" + icss-utils "^5.0.0" -"postcss-normalize-charset@^6.0.0": - "integrity" "sha512-cqundwChbu8yO/gSWkuFDmKrCZ2vJzDAocheT2JTd0sFNA4HMGoKMfbk2B+J0OmO0t5GUkiAkSM5yF2rSLUjgQ==" - "resolved" "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-6.0.0.tgz" - "version" "6.0.0" +postcss-normalize-charset@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-6.0.0.tgz#36cc12457259064969fb96f84df491652a4b0975" + integrity sha512-cqundwChbu8yO/gSWkuFDmKrCZ2vJzDAocheT2JTd0sFNA4HMGoKMfbk2B+J0OmO0t5GUkiAkSM5yF2rSLUjgQ== -"postcss-normalize-display-values@^6.0.0": - "integrity" "sha512-Qyt5kMrvy7dJRO3OjF7zkotGfuYALETZE+4lk66sziWSPzlBEt7FrUshV6VLECkI4EN8Z863O6Nci4NXQGNzYw==" - "resolved" "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.0.tgz" - "version" "6.0.0" +postcss-normalize-display-values@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.0.tgz#8d2961415078644d8c6bbbdaf9a2fdd60f546cd4" + integrity sha512-Qyt5kMrvy7dJRO3OjF7zkotGfuYALETZE+4lk66sziWSPzlBEt7FrUshV6VLECkI4EN8Z863O6Nci4NXQGNzYw== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" -"postcss-normalize-positions@^6.0.0": - "integrity" "sha512-mPCzhSV8+30FZyWhxi6UoVRYd3ZBJgTRly4hOkaSifo0H+pjDYcii/aVT4YE6QpOil15a5uiv6ftnY3rm0igPg==" - "resolved" "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-6.0.0.tgz" - "version" "6.0.0" +postcss-normalize-positions@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-6.0.0.tgz#25b96df99a69f8925f730eaee0be74416865e301" + integrity sha512-mPCzhSV8+30FZyWhxi6UoVRYd3ZBJgTRly4hOkaSifo0H+pjDYcii/aVT4YE6QpOil15a5uiv6ftnY3rm0igPg== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" -"postcss-normalize-repeat-style@^6.0.0": - "integrity" "sha512-50W5JWEBiOOAez2AKBh4kRFm2uhrT3O1Uwdxz7k24aKtbD83vqmcVG7zoIwo6xI2FZ/HDlbrCopXhLeTpQib1A==" - "resolved" "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.0.tgz" - "version" "6.0.0" +postcss-normalize-repeat-style@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.0.tgz#ddf30ad8762feb5b1eb97f39f251acd7b8353299" + integrity sha512-50W5JWEBiOOAez2AKBh4kRFm2uhrT3O1Uwdxz7k24aKtbD83vqmcVG7zoIwo6xI2FZ/HDlbrCopXhLeTpQib1A== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" -"postcss-normalize-string@^6.0.0": - "integrity" "sha512-KWkIB7TrPOiqb8ZZz6homet2KWKJwIlysF5ICPZrXAylGe2hzX/HSf4NTX2rRPJMAtlRsj/yfkrWGavFuB+c0w==" - "resolved" "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-6.0.0.tgz" - "version" "6.0.0" +postcss-normalize-string@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-6.0.0.tgz#948282647a51e409d69dde7910f0ac2ff97cb5d8" + integrity sha512-KWkIB7TrPOiqb8ZZz6homet2KWKJwIlysF5ICPZrXAylGe2hzX/HSf4NTX2rRPJMAtlRsj/yfkrWGavFuB+c0w== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" -"postcss-normalize-timing-functions@^6.0.0": - "integrity" "sha512-tpIXWciXBp5CiFs8sem90IWlw76FV4oi6QEWfQwyeREVwUy39VSeSqjAT7X0Qw650yAimYW5gkl2Gd871N5SQg==" - "resolved" "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.0.tgz" - "version" "6.0.0" +postcss-normalize-timing-functions@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.0.tgz#5f13e650b8c43351989fc5de694525cc2539841c" + integrity sha512-tpIXWciXBp5CiFs8sem90IWlw76FV4oi6QEWfQwyeREVwUy39VSeSqjAT7X0Qw650yAimYW5gkl2Gd871N5SQg== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" -"postcss-normalize-unicode@^6.0.0": - "integrity" "sha512-ui5crYkb5ubEUDugDc786L/Me+DXp2dLg3fVJbqyAl0VPkAeALyAijF2zOsnZyaS1HyfPuMH0DwyY18VMFVNkg==" - "resolved" "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-6.0.0.tgz" - "version" "6.0.0" +postcss-normalize-unicode@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-6.0.0.tgz#741b3310f874616bdcf07764f5503695d3604730" + integrity sha512-ui5crYkb5ubEUDugDc786L/Me+DXp2dLg3fVJbqyAl0VPkAeALyAijF2zOsnZyaS1HyfPuMH0DwyY18VMFVNkg== dependencies: - "browserslist" "^4.21.4" - "postcss-value-parser" "^4.2.0" + browserslist "^4.21.4" + postcss-value-parser "^4.2.0" -"postcss-normalize-url@^6.0.0": - "integrity" "sha512-98mvh2QzIPbb02YDIrYvAg4OUzGH7s1ZgHlD3fIdTHLgPLRpv1ZTKJDnSAKr4Rt21ZQFzwhGMXxpXlfrUBKFHw==" - "resolved" "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-6.0.0.tgz" - "version" "6.0.0" +postcss-normalize-url@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-6.0.0.tgz#d0a31e962a16401fb7deb7754b397a323fb650b4" + integrity sha512-98mvh2QzIPbb02YDIrYvAg4OUzGH7s1ZgHlD3fIdTHLgPLRpv1ZTKJDnSAKr4Rt21ZQFzwhGMXxpXlfrUBKFHw== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" -"postcss-normalize-whitespace@^6.0.0": - "integrity" "sha512-7cfE1AyLiK0+ZBG6FmLziJzqQCpTQY+8XjMhMAz8WSBSCsCNNUKujgIgjCAmDT3cJ+3zjTXFkoD15ZPsckArVw==" - "resolved" "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.0.tgz" - "version" "6.0.0" +postcss-normalize-whitespace@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.0.tgz#accb961caa42e25ca4179b60855b79b1f7129d4d" + integrity sha512-7cfE1AyLiK0+ZBG6FmLziJzqQCpTQY+8XjMhMAz8WSBSCsCNNUKujgIgjCAmDT3cJ+3zjTXFkoD15ZPsckArVw== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" -"postcss-ordered-values@^6.0.0": - "integrity" "sha512-K36XzUDpvfG/nWkjs6d1hRBydeIxGpKS2+n+ywlKPzx1nMYDYpoGbcjhj5AwVYJK1qV2/SDoDEnHzlPD6s3nMg==" - "resolved" "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-6.0.0.tgz" - "version" "6.0.0" +postcss-ordered-values@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-6.0.0.tgz#374704cdff25560d44061d17ba3c6308837a3218" + integrity sha512-K36XzUDpvfG/nWkjs6d1hRBydeIxGpKS2+n+ywlKPzx1nMYDYpoGbcjhj5AwVYJK1qV2/SDoDEnHzlPD6s3nMg== dependencies: - "cssnano-utils" "^4.0.0" - "postcss-value-parser" "^4.2.0" + cssnano-utils "^4.0.0" + postcss-value-parser "^4.2.0" -"postcss-reduce-initial@^6.0.0": - "integrity" "sha512-s2UOnidpVuXu6JiiI5U+fV2jamAw5YNA9Fdi/GRK0zLDLCfXmSGqQtzpUPtfN66RtCbb9fFHoyZdQaxOB3WxVA==" - "resolved" "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-6.0.0.tgz" - "version" "6.0.0" +postcss-reduce-initial@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-6.0.0.tgz#7d16e83e60e27e2fa42f56ec0b426f1da332eca7" + integrity sha512-s2UOnidpVuXu6JiiI5U+fV2jamAw5YNA9Fdi/GRK0zLDLCfXmSGqQtzpUPtfN66RtCbb9fFHoyZdQaxOB3WxVA== dependencies: - "browserslist" "^4.21.4" - "caniuse-api" "^3.0.0" + browserslist "^4.21.4" + caniuse-api "^3.0.0" -"postcss-reduce-transforms@^6.0.0": - "integrity" "sha512-FQ9f6xM1homnuy1wLe9lP1wujzxnwt1EwiigtWwuyf8FsqqXUDUp2Ulxf9A5yjlUOTdCJO6lonYjg1mgqIIi2w==" - "resolved" "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.0.tgz" - "version" "6.0.0" +postcss-reduce-transforms@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.0.tgz#28ff2601a6d9b96a2f039b3501526e1f4d584a46" + integrity sha512-FQ9f6xM1homnuy1wLe9lP1wujzxnwt1EwiigtWwuyf8FsqqXUDUp2Ulxf9A5yjlUOTdCJO6lonYjg1mgqIIi2w== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" -"postcss-selector-parser@^6.0.11", "postcss-selector-parser@^6.0.2", "postcss-selector-parser@^6.0.4", "postcss-selector-parser@^6.0.5": - "integrity" "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==" - "resolved" "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz" - "version" "6.0.13" +postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5: + version "6.0.13" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz#d05d8d76b1e8e173257ef9d60b706a8e5e99bf1b" + integrity sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ== dependencies: - "cssesc" "^3.0.0" - "util-deprecate" "^1.0.2" + cssesc "^3.0.0" + util-deprecate "^1.0.2" -"postcss-svgo@^6.0.0": - "integrity" "sha512-r9zvj/wGAoAIodn84dR/kFqwhINp5YsJkLoujybWG59grR/IHx+uQ2Zo+IcOwM0jskfYX3R0mo+1Kip1VSNcvw==" - "resolved" "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-6.0.0.tgz" - "version" "6.0.0" +postcss-svgo@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-6.0.0.tgz#7b18742d38d4505a0455bbe70d52b49f00eaf69d" + integrity sha512-r9zvj/wGAoAIodn84dR/kFqwhINp5YsJkLoujybWG59grR/IHx+uQ2Zo+IcOwM0jskfYX3R0mo+1Kip1VSNcvw== dependencies: - "postcss-value-parser" "^4.2.0" - "svgo" "^3.0.2" + postcss-value-parser "^4.2.0" + svgo "^3.0.2" -"postcss-unique-selectors@^6.0.0": - "integrity" "sha512-EPQzpZNxOxP7777t73RQpZE5e9TrnCrkvp7AH7a0l89JmZiPnS82y216JowHXwpBCQitfyxrof9TK3rYbi7/Yw==" - "resolved" "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-6.0.0.tgz" - "version" "6.0.0" +postcss-unique-selectors@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-6.0.0.tgz#c94e9b0f7bffb1203894e42294b5a1b3fb34fbe1" + integrity sha512-EPQzpZNxOxP7777t73RQpZE5e9TrnCrkvp7AH7a0l89JmZiPnS82y216JowHXwpBCQitfyxrof9TK3rYbi7/Yw== dependencies: - "postcss-selector-parser" "^6.0.5" + postcss-selector-parser "^6.0.5" -"postcss-value-parser@^4.1.0", "postcss-value-parser@^4.2.0": - "integrity" "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" - "resolved" "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" - "version" "4.2.0" +postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -"postcss@^8.0.9", "postcss@^8.1.0", "postcss@^8.2.15", "postcss@^8.2.2", "postcss@^8.4.21", "postcss@^8.4.24", "postcss@^8.4.27": - "integrity" "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==" - "resolved" "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz" - "version" "8.4.31" +postcss@^8.4.21, postcss@^8.4.24: + version "8.4.31" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" + integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== dependencies: - "nanoid" "^3.3.6" - "picocolors" "^1.0.0" - "source-map-js" "^1.0.2" + nanoid "^3.3.6" + picocolors "^1.0.0" + source-map-js "^1.0.2" -"prelude-ls@^1.2.1": - "integrity" "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" - "resolved" "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" - "version" "1.2.1" +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== -"prettier-linter-helpers@^1.0.0": - "integrity" "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==" - "resolved" "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz" - "version" "1.0.0" +prettier-linter-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" + integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== dependencies: - "fast-diff" "^1.1.2" - -"prettier@*", "prettier@^2.3.2", "prettier@^2.4.1", "prettier@^2.5.1": - "integrity" "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==" - "resolved" "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz" - "version" "2.7.1" + fast-diff "^1.1.2" -"prettier@^3.0.3": - "integrity" "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==" - "resolved" "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz" - "version" "3.0.3" +prettier@*, prettier@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.0.3.tgz#432a51f7ba422d1469096c0fdc28e235db8f9643" + integrity sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg== -"prettier@>=3.0.0": - "integrity" "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==" - "resolved" "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz" - "version" "3.0.3" +prettier@^2.5.1: + version "2.7.1" + resolved "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz" + integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== -"pretty-error@^4.0.0": - "integrity" "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==" - "resolved" "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz" - "version" "4.0.0" +pretty-error@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-4.0.0.tgz#90a703f46dd7234adb46d0f84823e9d1cb8f10d6" + integrity sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw== dependencies: - "lodash" "^4.17.20" - "renderkid" "^3.0.0" + lodash "^4.17.20" + renderkid "^3.0.0" -"pretty-format@^27.0.2", "pretty-format@^27.5.1": - "integrity" "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==" - "resolved" "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz" - "version" "27.5.1" +pretty-format@^27.0.2: + version "27.5.1" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" + integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== dependencies: - "ansi-regex" "^5.0.1" - "ansi-styles" "^5.0.0" - "react-is" "^17.0.1" + ansi-regex "^5.0.1" + ansi-styles "^5.0.0" + react-is "^17.0.1" -"pretty-format@^29.0.0": - "integrity" "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==" - "resolved" "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz" - "version" "29.7.0" +pretty-format@^29.0.0, pretty-format@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz" + integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== dependencies: "@jest/schemas" "^29.6.3" - "ansi-styles" "^5.0.0" - "react-is" "^18.0.0" - -"pretty-format@^29.7.0": - "integrity" "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==" - "resolved" "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz" - "version" "29.7.0" + ansi-styles "^5.0.0" + react-is "^18.0.0" + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +progress@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +promise-retry@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" + integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== + dependencies: + err-code "^2.0.2" + retry "^0.12.0" + +promise@^7.1.1: + version "7.3.1" + resolved "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz" + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== + dependencies: + asap "~2.0.3" + +prompts@^2.0.1: + version "2.4.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +prop-types@^15.7.2, prop-types@^15.8.1: + version "15.8.1" + resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + +property-expr@^2.0.4: + version "2.0.5" + resolved "https://registry.npmjs.org/property-expr/-/property-expr-2.0.5.tgz" + integrity sha512-IJUkICM5dP5znhCckHSv30Q4b5/JA5enCtkRHYaOVOAocnH/1BQEYTC5NMfT3AVl/iXKdr3aqQbQn9DxyWknwA== + +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + +psl@^1.1.33: + version "1.9.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" + integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +punycode@^2.1.0, punycode@^2.1.1: + version "2.3.0" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz" + integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== + +pure-color@^1.2.0: + version "1.3.0" + resolved "https://registry.npmjs.org/pure-color/-/pure-color-1.3.0.tgz" + integrity sha512-QFADYnsVoBMw1srW7OVKEYjG+MbIa49s54w1MA1EDY6r2r/sTcKKYqRX1f4GYvnXP7eN/Pe9HFcX+hwzmrXRHA== + +pure-rand@^6.0.0: + version "6.0.4" + resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.0.4.tgz#50b737f6a925468679bff00ad20eade53f37d5c7" + integrity sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA== + +qs@6.11.0: + version "6.11.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== + dependencies: + side-channel "^1.0.4" + +querystringify@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== + +queue-microtask@1.2.3, queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +quick-lru@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" + integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== + +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +range-parser@^1.2.1, range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" + integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +react-base16-styling@^0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/react-base16-styling/-/react-base16-styling-0.6.0.tgz" + integrity sha512-yvh/7CArceR/jNATXOKDlvTnPKPmGZz7zsenQ3jUwLzHkNUR0CvY3yGYJbWJ/nnxsL8Sgmt5cO3/SILVuPO6TQ== + dependencies: + base16 "^1.0.0" + lodash.curry "^4.0.1" + lodash.flow "^3.3.0" + pure-color "^1.2.0" + +react-dom@^18.2.0: + version "18.2.0" + resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz" + integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== + dependencies: + loose-envify "^1.1.0" + scheduler "^0.23.0" + +react-fast-compare@^2.0.1: + version "2.0.4" + resolved "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz" + integrity sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw== + +react-fast-compare@^3.1.1: + version "3.2.2" + resolved "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz" + integrity sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ== + +react-helmet@^6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/react-helmet/-/react-helmet-6.1.0.tgz" + integrity sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw== + dependencies: + object-assign "^4.1.1" + prop-types "^15.7.2" + react-fast-compare "^3.1.1" + react-side-effect "^2.1.0" + +react-hot-toast@^2.1.1, react-hot-toast@^2.4.1: + version "2.4.1" + resolved "https://registry.npmjs.org/react-hot-toast/-/react-hot-toast-2.4.1.tgz" + integrity sha512-j8z+cQbWIM5LY37pR6uZR6D4LfseplqnuAO4co4u8917hBUvXlEqyP1ZzqVLcqoyUesZZv/ImreoCeHVDpE5pQ== + dependencies: + goober "^2.1.10" + +react-icons@^4.11.0: + version "4.11.0" + resolved "https://registry.npmjs.org/react-icons/-/react-icons-4.11.0.tgz" + integrity sha512-V+4khzYcE5EBk/BvcuYRq6V/osf11ODUM2J8hg2FDSswRrGvqiYUYPRy4OdrWaQOBj4NcpJfmHZLNaD+VH0TyA== + +"react-is@^16.12.0 || ^17.0.0 || ^18.0.0", react-is@^18.0.0, react-is@^18.2.0: + version "18.2.0" + resolved "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz" + integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== + +react-is@^16.13.1, react-is@^16.7.0: + version "16.13.1" + resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-is@^17.0.1: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== + +react-json-view@^1.21.3: + version "1.21.3" + resolved "https://registry.npmjs.org/react-json-view/-/react-json-view-1.21.3.tgz" + integrity sha512-13p8IREj9/x/Ye4WI/JpjhoIwuzEgUAtgJZNBJckfzJt1qyh24BdTm6UQNGnyTq9dapQdrqvquZTo3dz1X6Cjw== + dependencies: + flux "^4.0.1" + react-base16-styling "^0.6.0" + react-lifecycles-compat "^3.0.4" + react-textarea-autosize "^8.3.2" + +react-lifecycles-compat@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz" + integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== + +react-refresh@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.0.tgz#4e02825378a5f227079554d4284889354e5f553e" + integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ== + +react-router-dom@6.15.0: + version "6.15.0" + resolved "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.15.0.tgz" + integrity sha512-aR42t0fs7brintwBGAv2+mGlCtgtFQeOzK0BM1/OiqEzRejOZtpMZepvgkscpMUnKb8YO84G7s3LsHnnDNonbQ== dependencies: - "@jest/schemas" "^29.6.3" - "ansi-styles" "^5.0.0" - "react-is" "^18.0.0" - -"process-nextick-args@~2.0.0": - "integrity" "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - "resolved" "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" - "version" "2.0.1" - -"progress@^2.0.3": - "integrity" "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" - "resolved" "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz" - "version" "2.0.3" - -"promise-retry@^2.0.1": - "integrity" "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==" - "resolved" "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "err-code" "^2.0.2" - "retry" "^0.12.0" - -"promise@^7.1.1": - "integrity" "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==" - "resolved" "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz" - "version" "7.3.1" - dependencies: - "asap" "~2.0.3" - -"prompts@^2.0.1": - "integrity" "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==" - "resolved" "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz" - "version" "2.4.2" - dependencies: - "kleur" "^3.0.3" - "sisteransi" "^1.0.5" - -"prop-types@^15.7.2", "prop-types@^15.8.1": - "integrity" "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==" - "resolved" "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" - "version" "15.8.1" - dependencies: - "loose-envify" "^1.4.0" - "object-assign" "^4.1.1" - "react-is" "^16.13.1" - -"property-expr@^2.0.4": - "integrity" "sha512-IJUkICM5dP5znhCckHSv30Q4b5/JA5enCtkRHYaOVOAocnH/1BQEYTC5NMfT3AVl/iXKdr3aqQbQn9DxyWknwA==" - "resolved" "https://registry.npmjs.org/property-expr/-/property-expr-2.0.5.tgz" - "version" "2.0.5" - -"proxy-addr@~2.0.7": - "integrity" "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==" - "resolved" "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz" - "version" "2.0.7" - dependencies: - "forwarded" "0.2.0" - "ipaddr.js" "1.9.1" - -"psl@^1.1.33": - "integrity" "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" - "resolved" "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz" - "version" "1.9.0" - -"pump@^3.0.0": - "integrity" "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==" - "resolved" "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "end-of-stream" "^1.1.0" - "once" "^1.3.1" - -"punycode@^2.1.0", "punycode@^2.1.1": - "integrity" "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==" - "resolved" "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz" - "version" "2.3.0" - -"pure-color@^1.2.0": - "integrity" "sha512-QFADYnsVoBMw1srW7OVKEYjG+MbIa49s54w1MA1EDY6r2r/sTcKKYqRX1f4GYvnXP7eN/Pe9HFcX+hwzmrXRHA==" - "resolved" "https://registry.npmjs.org/pure-color/-/pure-color-1.3.0.tgz" - "version" "1.3.0" - -"pure-rand@^6.0.0": - "integrity" "sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==" - "resolved" "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.4.tgz" - "version" "6.0.4" - -"qs@6.11.0": - "integrity" "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==" - "resolved" "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz" - "version" "6.11.0" - dependencies: - "side-channel" "^1.0.4" - -"querystringify@^2.1.1": - "integrity" "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" - "resolved" "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz" - "version" "2.2.0" - -"queue-microtask@^1.2.2", "queue-microtask@1.2.3": - "integrity" "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" - "resolved" "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" - "version" "1.2.3" - -"quick-lru@^5.1.1": - "integrity" "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" - "resolved" "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz" - "version" "5.1.1" - -"randombytes@^2.1.0": - "integrity" "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==" - "resolved" "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "safe-buffer" "^5.1.0" - -"range-parser@^1.2.1", "range-parser@~1.2.1": - "integrity" "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" - "resolved" "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" - "version" "1.2.1" - -"raw-body@2.5.1": - "integrity" "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==" - "resolved" "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz" - "version" "2.5.1" - dependencies: - "bytes" "3.1.2" - "http-errors" "2.0.0" - "iconv-lite" "0.4.24" - "unpipe" "1.0.0" - -"react-base16-styling@^0.6.0": - "integrity" "sha512-yvh/7CArceR/jNATXOKDlvTnPKPmGZz7zsenQ3jUwLzHkNUR0CvY3yGYJbWJ/nnxsL8Sgmt5cO3/SILVuPO6TQ==" - "resolved" "https://registry.npmjs.org/react-base16-styling/-/react-base16-styling-0.6.0.tgz" - "version" "0.6.0" - dependencies: - "base16" "^1.0.0" - "lodash.curry" "^4.0.1" - "lodash.flow" "^3.3.0" - "pure-color" "^1.2.0" - -"react-dom@^17.0.0 || ^16.3.0 || ^15.5.4", "react-dom@^17.0.2", "react-dom@>=16", "react-dom@>=16.14.0", "react-dom@>=16.8", "react-dom@>=16.8.0": - "integrity" "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==" - "resolved" "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz" - "version" "17.0.2" - dependencies: - "loose-envify" "^1.1.0" - "object-assign" "^4.1.1" - "scheduler" "^0.20.2" - -"react-dom@^18.0.0", "react-dom@^18.2.0": - "integrity" "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==" - "resolved" "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz" - "version" "18.2.0" - dependencies: - "loose-envify" "^1.1.0" - "scheduler" "^0.23.0" - -"react-dom@>=18.0.0": - "integrity" "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==" - "resolved" "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz" - "version" "18.2.0" - dependencies: - "loose-envify" "^1.1.0" - "scheduler" "^0.23.0" - -"react-fast-compare@^2.0.1": - "integrity" "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==" - "resolved" "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz" - "version" "2.0.4" - -"react-fast-compare@^3.1.1": - "integrity" "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==" - "resolved" "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz" - "version" "3.2.2" - -"react-helmet@^6.1.0": - "integrity" "sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw==" - "resolved" "https://registry.npmjs.org/react-helmet/-/react-helmet-6.1.0.tgz" - "version" "6.1.0" - dependencies: - "object-assign" "^4.1.1" - "prop-types" "^15.7.2" - "react-fast-compare" "^3.1.1" - "react-side-effect" "^2.1.0" - -"react-hot-toast@^2.1.1", "react-hot-toast@^2.4.1": - "integrity" "sha512-j8z+cQbWIM5LY37pR6uZR6D4LfseplqnuAO4co4u8917hBUvXlEqyP1ZzqVLcqoyUesZZv/ImreoCeHVDpE5pQ==" - "resolved" "https://registry.npmjs.org/react-hot-toast/-/react-hot-toast-2.4.1.tgz" - "version" "2.4.1" - dependencies: - "goober" "^2.1.10" - -"react-icons@^4.11.0": - "integrity" "sha512-V+4khzYcE5EBk/BvcuYRq6V/osf11ODUM2J8hg2FDSswRrGvqiYUYPRy4OdrWaQOBj4NcpJfmHZLNaD+VH0TyA==" - "resolved" "https://registry.npmjs.org/react-icons/-/react-icons-4.11.0.tgz" - "version" "4.11.0" - -"react-is@^16.12.0 || ^17.0.0 || ^18.0.0", "react-is@^18.0.0", "react-is@^18.2.0": - "integrity" "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" - "resolved" "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz" - "version" "18.2.0" - -"react-is@^16.13.1": - "integrity" "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - "resolved" "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" - "version" "16.13.1" - -"react-is@^16.7.0": - "integrity" "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - "resolved" "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" - "version" "16.13.1" - -"react-is@^17.0.1": - "integrity" "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" - "resolved" "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" - "version" "17.0.2" - -"react-json-view@^1.21.3": - "integrity" "sha512-13p8IREj9/x/Ye4WI/JpjhoIwuzEgUAtgJZNBJckfzJt1qyh24BdTm6UQNGnyTq9dapQdrqvquZTo3dz1X6Cjw==" - "resolved" "https://registry.npmjs.org/react-json-view/-/react-json-view-1.21.3.tgz" - "version" "1.21.3" - dependencies: - "flux" "^4.0.1" - "react-base16-styling" "^0.6.0" - "react-lifecycles-compat" "^3.0.4" - "react-textarea-autosize" "^8.3.2" - -"react-lifecycles-compat@^3.0.4": - "integrity" "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" - "resolved" "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz" - "version" "3.0.4" - -"react-refresh@^0.14.0", "react-refresh@>=0.10.0 <1.0.0": - "integrity" "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==" - "resolved" "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz" - "version" "0.14.0" - -"react-router-dom@^6.16.0": - "integrity" "sha512-aTfBLv3mk/gaKLxgRDUPbPw+s4Y/O+ma3rEN1u8EgEpLpPe6gNjIsWt9rxushMHHMb7mSwxRGdGlGdvmFsyPIg==" - "resolved" "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.16.0.tgz" - "version" "6.16.0" - dependencies: - "@remix-run/router" "1.9.0" - "react-router" "6.16.0" + "@remix-run/router" "1.8.0" + react-router "6.15.0" -"react-router-dom@6.15.0": - "integrity" "sha512-aR42t0fs7brintwBGAv2+mGlCtgtFQeOzK0BM1/OiqEzRejOZtpMZepvgkscpMUnKb8YO84G7s3LsHnnDNonbQ==" - "resolved" "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.15.0.tgz" - "version" "6.15.0" +react-router-dom@^6.16.0: + version "6.16.0" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.16.0.tgz#86f24658da35eb66727e75ecbb1a029e33ee39d9" + integrity sha512-aTfBLv3mk/gaKLxgRDUPbPw+s4Y/O+ma3rEN1u8EgEpLpPe6gNjIsWt9rxushMHHMb7mSwxRGdGlGdvmFsyPIg== dependencies: - "@remix-run/router" "1.8.0" - "react-router" "6.15.0" + "@remix-run/router" "1.9.0" + react-router "6.16.0" -"react-router@6.15.0": - "integrity" "sha512-NIytlzvzLwJkCQj2HLefmeakxxWHWAP+02EGqWEZy+DgfHHKQMUoBBjUQLOtFInBMhWtb3hiUy6MfFgwLjXhqg==" - "resolved" "https://registry.npmjs.org/react-router/-/react-router-6.15.0.tgz" - "version" "6.15.0" +react-router@6.15.0: + version "6.15.0" + resolved "https://registry.npmjs.org/react-router/-/react-router-6.15.0.tgz" + integrity sha512-NIytlzvzLwJkCQj2HLefmeakxxWHWAP+02EGqWEZy+DgfHHKQMUoBBjUQLOtFInBMhWtb3hiUy6MfFgwLjXhqg== dependencies: "@remix-run/router" "1.8.0" -"react-router@6.16.0": - "integrity" "sha512-VT4Mmc4jj5YyjpOi5jOf0I+TYzGpvzERy4ckNSvSh2RArv8LLoCxlsZ2D+tc7zgjxcY34oTz2hZaeX5RVprKqA==" - "resolved" "https://registry.npmjs.org/react-router/-/react-router-6.16.0.tgz" - "version" "6.16.0" +react-router@6.16.0: + version "6.16.0" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.16.0.tgz#abbf3d5bdc9c108c9b822a18be10ee004096fb81" + integrity sha512-VT4Mmc4jj5YyjpOi5jOf0I+TYzGpvzERy4ckNSvSh2RArv8LLoCxlsZ2D+tc7zgjxcY34oTz2hZaeX5RVprKqA== dependencies: "@remix-run/router" "1.9.0" -"react-shallow-renderer@^16.15.0": - "integrity" "sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==" - "resolved" "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz" - "version" "16.15.0" +react-shallow-renderer@^16.15.0: + version "16.15.0" + resolved "https://registry.yarnpkg.com/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz#48fb2cf9b23d23cde96708fe5273a7d3446f4457" + integrity sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA== dependencies: - "object-assign" "^4.1.1" - "react-is" "^16.12.0 || ^17.0.0 || ^18.0.0" + object-assign "^4.1.1" + react-is "^16.12.0 || ^17.0.0 || ^18.0.0" -"react-side-effect@^2.1.0": - "integrity" "sha512-PVjOcvVOyIILrYoyGEpDN3vmYNLdy1CajSFNt4TDsVQC5KpTijDvWVoR+/7Rz2xT978D8/ZtFceXxzsPwZEDvw==" - "resolved" "https://registry.npmjs.org/react-side-effect/-/react-side-effect-2.1.2.tgz" - "version" "2.1.2" +react-side-effect@^2.1.0: + version "2.1.2" + resolved "https://registry.npmjs.org/react-side-effect/-/react-side-effect-2.1.2.tgz" + integrity sha512-PVjOcvVOyIILrYoyGEpDN3vmYNLdy1CajSFNt4TDsVQC5KpTijDvWVoR+/7Rz2xT978D8/ZtFceXxzsPwZEDvw== -"react-test-renderer@^18.2.0": - "integrity" "sha512-JWD+aQ0lh2gvh4NM3bBM42Kx+XybOxCpgYK7F8ugAlpaTSnWsX+39Z4XkOykGZAHrjwwTZT3x3KxswVWxHPUqA==" - "resolved" "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-18.2.0.tgz" - "version" "18.2.0" +react-test-renderer@^18.2.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-18.2.0.tgz#1dd912bd908ff26da5b9fca4fd1c489b9523d37e" + integrity sha512-JWD+aQ0lh2gvh4NM3bBM42Kx+XybOxCpgYK7F8ugAlpaTSnWsX+39Z4XkOykGZAHrjwwTZT3x3KxswVWxHPUqA== dependencies: - "react-is" "^18.2.0" - "react-shallow-renderer" "^16.15.0" - "scheduler" "^0.23.0" + react-is "^18.2.0" + react-shallow-renderer "^16.15.0" + scheduler "^0.23.0" -"react-textarea-autosize@^8.3.2": - "integrity" "sha512-XT1024o2pqCuZSuBt9FwHlaDeNtVrtCXu0Rnz88t1jUGheCLa3PhjE1GH8Ctm2axEtvdCl5SUHYschyQ0L5QHQ==" - "resolved" "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.5.3.tgz" - "version" "8.5.3" +react-textarea-autosize@^8.3.2: + version "8.5.3" + resolved "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.5.3.tgz" + integrity sha512-XT1024o2pqCuZSuBt9FwHlaDeNtVrtCXu0Rnz88t1jUGheCLa3PhjE1GH8Ctm2axEtvdCl5SUHYschyQ0L5QHQ== dependencies: "@babel/runtime" "^7.20.13" - "use-composed-ref" "^1.3.0" - "use-latest" "^1.2.1" - -"react-timeago@^6.2.1", "react-timeago@^7.2.0": - "integrity" "sha512-2KsBEEs+qRhKx/kekUVNSTIpop3Jwd7SRBm0R4Eiq3mPeswRGSsftY9FpKsE/lXLdURyQFiHeHFrIUxLYskG5g==" - "resolved" "https://registry.npmjs.org/react-timeago/-/react-timeago-7.2.0.tgz" - "version" "7.2.0" - -"react-transition-state@^2.1.0": - "integrity" "sha512-kQx5g1FVu9knoz1T1WkapjUgFz08qQ/g1OmuWGi3/AoEFfS0kStxrPlZx81urjCXdz2d+1DqLpU6TyLW/Ro04Q==" - "resolved" "https://registry.npmjs.org/react-transition-state/-/react-transition-state-2.1.1.tgz" - "version" "2.1.1" - -"react@*", "react@^15.0.2 || ^16.0.0 || ^17.0.0", "react@^16.0.0 || ^17.0.0 || ^18.0.0", "react@^16.11.0 || ^17.0.0 || ^18.0.0", "react@^16.3.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^17.0.0 || ^16.3.0 || ^15.5.4", "react@^17.0.0 || ^18.0.0", "react@^17.0.2", "react@>=16", "react@>=16.14.0", "react@>=16.3.0", "react@>=16.8", "react@>=16.8.0", "react@>=17.0.0 || >=18.0.0", "react@17.0.2": - "integrity" "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==" - "resolved" "https://registry.npmjs.org/react/-/react-17.0.2.tgz" - "version" "17.0.2" - dependencies: - "loose-envify" "^1.1.0" - "object-assign" "^4.1.1" - -"react@^18.0.0", "react@^18.2.0", "react@>=18.0.0": - "integrity" "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==" - "resolved" "https://registry.npmjs.org/react/-/react-18.2.0.tgz" - "version" "18.2.0" - dependencies: - "loose-envify" "^1.1.0" - -"reactjs-popup@2.0.5": - "integrity" "sha512-b5hv9a6aGsHEHXFAgPO5s1Jw1eSkopueyUVxQewGdLgqk2eW0IVXZrPRpHR629YcgIpC2oxtX8OOZ8a7bQJbxA==" - "resolved" "https://registry.npmjs.org/reactjs-popup/-/reactjs-popup-2.0.5.tgz" - "version" "2.0.5" - -"read-config-file@6.3.2": - "integrity" "sha512-M80lpCjnE6Wt6zb98DoW8WHR09nzMSpu8XHtPkiTHrJ5Az9CybfeQhTJ8D7saeBHpGhLPIVyA8lcL6ZmdKwY6Q==" - "resolved" "https://registry.npmjs.org/read-config-file/-/read-config-file-6.3.2.tgz" - "version" "6.3.2" - dependencies: - "config-file-ts" "^0.2.4" - "dotenv" "^9.0.2" - "dotenv-expand" "^5.1.0" - "js-yaml" "^4.1.0" - "json5" "^2.2.0" - "lazy-val" "^1.0.4" - -"readable-stream@^2.0.1", "readable-stream@~2.3.6": - "integrity" "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==" - "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" - "version" "2.3.8" - 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" - -"readable-stream@^3.0.6": - "integrity" "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==" - "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" - "version" "3.6.2" - dependencies: - "inherits" "^2.0.3" - "string_decoder" "^1.1.1" - "util-deprecate" "^1.0.1" - -"readable-stream@^3.4.0": - "integrity" "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==" - "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" - "version" "3.6.2" - dependencies: - "inherits" "^2.0.3" - "string_decoder" "^1.1.1" - "util-deprecate" "^1.0.1" - -"readable-stream@^3.6.0": - "integrity" "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==" - "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" - "version" "3.6.2" - dependencies: - "inherits" "^2.0.3" - "string_decoder" "^1.1.1" - "util-deprecate" "^1.0.1" - -"readdirp@~3.6.0": - "integrity" "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==" - "resolved" "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" - "version" "3.6.0" - dependencies: - "picomatch" "^2.2.1" - -"rechoir@^0.8.0": - "integrity" "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==" - "resolved" "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz" - "version" "0.8.0" - dependencies: - "resolve" "^1.20.0" - -"redent@^3.0.0": - "integrity" "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==" - "resolved" "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "indent-string" "^4.0.0" - "strip-indent" "^3.0.0" - -"reflect.getprototypeof@^1.0.4": - "integrity" "sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==" - "resolved" "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz" - "version" "1.0.4" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.2.0" - "es-abstract" "^1.22.1" - "get-intrinsic" "^1.2.1" - "globalthis" "^1.0.3" - "which-builtin-type" "^1.1.3" - -"regenerate-unicode-properties@^10.1.0": - "integrity" "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==" - "resolved" "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz" - "version" "10.1.1" - dependencies: - "regenerate" "^1.4.2" - -"regenerate@^1.4.2": - "integrity" "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" - "resolved" "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz" - "version" "1.4.2" - -"regenerator-runtime@^0.14.0": - "integrity" "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" - "resolved" "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz" - "version" "0.14.0" - -"regenerator-transform@^0.15.2": - "integrity" "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==" - "resolved" "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz" - "version" "0.15.2" + use-composed-ref "^1.3.0" + use-latest "^1.2.1" + +react-timeago@^7.2.0: + version "7.2.0" + resolved "https://registry.npmjs.org/react-timeago/-/react-timeago-7.2.0.tgz" + integrity sha512-2KsBEEs+qRhKx/kekUVNSTIpop3Jwd7SRBm0R4Eiq3mPeswRGSsftY9FpKsE/lXLdURyQFiHeHFrIUxLYskG5g== + +react-transition-state@^2.1.0: + version "2.1.1" + resolved "https://registry.npmjs.org/react-transition-state/-/react-transition-state-2.1.1.tgz" + integrity sha512-kQx5g1FVu9knoz1T1WkapjUgFz08qQ/g1OmuWGi3/AoEFfS0kStxrPlZx81urjCXdz2d+1DqLpU6TyLW/Ro04Q== + +react@^18.2.0: + version "18.2.0" + resolved "https://registry.npmjs.org/react/-/react-18.2.0.tgz" + integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== + dependencies: + loose-envify "^1.1.0" + +reactjs-popup@2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/reactjs-popup/-/reactjs-popup-2.0.5.tgz" + integrity sha512-b5hv9a6aGsHEHXFAgPO5s1Jw1eSkopueyUVxQewGdLgqk2eW0IVXZrPRpHR629YcgIpC2oxtX8OOZ8a7bQJbxA== + +read-config-file@6.3.2: + version "6.3.2" + resolved "https://registry.yarnpkg.com/read-config-file/-/read-config-file-6.3.2.tgz#556891aa6ffabced916ed57457cb192e61880411" + integrity sha512-M80lpCjnE6Wt6zb98DoW8WHR09nzMSpu8XHtPkiTHrJ5Az9CybfeQhTJ8D7saeBHpGhLPIVyA8lcL6ZmdKwY6Q== + dependencies: + config-file-ts "^0.2.4" + dotenv "^9.0.2" + dotenv-expand "^5.1.0" + js-yaml "^4.1.0" + json5 "^2.2.0" + lazy-val "^1.0.4" + +readable-stream@^2.0.1, readable-stream@~2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + 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" + +readable-stream@^3.0.6, readable-stream@^3.4.0, readable-stream@^3.6.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +rechoir@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.8.0.tgz#49f866e0d32146142da3ad8f0eff352b3215ff22" + integrity sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ== + dependencies: + resolve "^1.20.0" + +redent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" + integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== + dependencies: + indent-string "^4.0.0" + strip-indent "^3.0.0" + +reflect.getprototypeof@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz#aaccbf41aca3821b87bb71d9dcbc7ad0ba50a3f3" + integrity sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + globalthis "^1.0.3" + which-builtin-type "^1.1.3" + +regenerate-unicode-properties@^10.1.0: + version "10.1.1" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480" + integrity sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q== + dependencies: + regenerate "^1.4.2" + +regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + +regenerator-runtime@^0.14.0: + version "0.14.0" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz" + integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA== + +regenerator-transform@^0.15.2: + version "0.15.2" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz#5bbae58b522098ebdf09bca2f83838929001c7a4" + integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg== dependencies: "@babel/runtime" "^7.8.4" -"regexp.prototype.flags@^1.5.0", "regexp.prototype.flags@^1.5.1": - "integrity" "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==" - "resolved" "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz" - "version" "1.5.1" +regexp.prototype.flags@^1.5.0, regexp.prototype.flags@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e" + integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.2.0" - "set-function-name" "^2.0.0" + call-bind "^1.0.2" + define-properties "^1.2.0" + set-function-name "^2.0.0" -"regexpu-core@^5.3.1": - "integrity" "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==" - "resolved" "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz" - "version" "5.3.2" +regexpu-core@^5.3.1: + version "5.3.2" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" + integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== dependencies: "@babel/regjsgen" "^0.8.0" - "regenerate" "^1.4.2" - "regenerate-unicode-properties" "^10.1.0" - "regjsparser" "^0.9.1" - "unicode-match-property-ecmascript" "^2.0.0" - "unicode-match-property-value-ecmascript" "^2.1.0" - -"regjsparser@^0.9.1": - "integrity" "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==" - "resolved" "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz" - "version" "0.9.1" - dependencies: - "jsesc" "~0.5.0" - -"relateurl@^0.2.7": - "integrity" "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==" - "resolved" "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz" - "version" "0.2.7" - -"remove-trailing-separator@^1.0.1": - "integrity" "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==" - "resolved" "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz" - "version" "1.1.0" - -"renderkid@^3.0.0": - "integrity" "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==" - "resolved" "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "css-select" "^4.1.3" - "dom-converter" "^0.2.0" - "htmlparser2" "^6.1.0" - "lodash" "^4.17.21" - "strip-ansi" "^6.0.1" - -"require-directory@^2.1.1": - "integrity" "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" - "resolved" "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" - "version" "2.1.1" - -"require-from-string@^2.0.2": - "integrity" "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" - "resolved" "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" - "version" "2.0.2" - -"requires-port@^1.0.0": - "integrity" "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" - "resolved" "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" - "version" "1.0.0" - -"resolve-alpn@^1.0.0": - "integrity" "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" - "resolved" "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz" - "version" "1.2.1" - -"resolve-cwd@^3.0.0": - "integrity" "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==" - "resolved" "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "resolve-from" "^5.0.0" - -"resolve-from@^4.0.0": - "integrity" "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" - "resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" - "version" "4.0.0" - -"resolve-from@^5.0.0": - "integrity" "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" - "resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" - "version" "5.0.0" - -"resolve-pkg-maps@^1.0.0": - "integrity" "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==" - "resolved" "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz" - "version" "1.0.0" - -"resolve.exports@^1.1.0": - "integrity" "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==" - "resolved" "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz" - "version" "1.1.1" - -"resolve.exports@^2.0.0": - "integrity" "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==" - "resolved" "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz" - "version" "2.0.2" - -"resolve@^1.14.2": - "integrity" "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==" - "resolved" "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz" - "version" "1.22.8" - dependencies: - "is-core-module" "^2.13.0" - "path-parse" "^1.0.7" - "supports-preserve-symlinks-flag" "^1.0.0" - -"resolve@^1.19.0": - "integrity" "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==" - "resolved" "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz" - "version" "1.22.6" - dependencies: - "is-core-module" "^2.13.0" - "path-parse" "^1.0.7" - "supports-preserve-symlinks-flag" "^1.0.0" - -"resolve@^1.20.0": - "integrity" "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==" - "resolved" "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz" - "version" "1.22.6" - dependencies: - "is-core-module" "^2.13.0" - "path-parse" "^1.0.7" - "supports-preserve-symlinks-flag" "^1.0.0" - -"resolve@^1.22.4": - "integrity" "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==" - "resolved" "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz" - "version" "1.22.6" - dependencies: - "is-core-module" "^2.13.0" - "path-parse" "^1.0.7" - "supports-preserve-symlinks-flag" "^1.0.0" - -"resolve@^2.0.0-next.4": - "integrity" "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==" - "resolved" "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz" - "version" "2.0.0-next.4" - dependencies: - "is-core-module" "^2.9.0" - "path-parse" "^1.0.7" - "supports-preserve-symlinks-flag" "^1.0.0" - -"responselike@^2.0.0": - "integrity" "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==" - "resolved" "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "lowercase-keys" "^2.0.0" - -"restore-cursor@^3.1.0": - "integrity" "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==" - "resolved" "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "onetime" "^5.1.0" - "signal-exit" "^3.0.2" - -"retry@^0.12.0": - "integrity" "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==" - "resolved" "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz" - "version" "0.12.0" - -"retry@^0.13.1": - "integrity" "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==" - "resolved" "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz" - "version" "0.13.1" - -"reusify@^1.0.4": - "integrity" "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" - "resolved" "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" - "version" "1.0.4" - -"rfdc@^1.3.0": - "integrity" "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==" - "resolved" "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz" - "version" "1.3.0" - -"rimraf@^3.0.0", "rimraf@^3.0.2": - "integrity" "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==" - "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" - "version" "3.0.2" - dependencies: - "glob" "^7.1.3" - -"rimraf@^5.0.1": - "integrity" "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==" - "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz" - "version" "5.0.5" - dependencies: - "glob" "^10.3.7" - -"roarr@^2.15.3": - "integrity" "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==" - "resolved" "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz" - "version" "2.15.4" - dependencies: - "boolean" "^3.0.1" - "detect-node" "^2.0.4" - "globalthis" "^1.0.1" - "json-stringify-safe" "^5.0.1" - "semver-compare" "^1.0.0" - "sprintf-js" "^1.1.2" - -"rollup@^1.20.0||^2.0.0||^3.0.0||^4.0.0", "rollup@^3.27.1": - "integrity" "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==" - "resolved" "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz" - "version" "3.29.4" - optionalDependencies: - "fsevents" "~2.3.2" - -"run-applescript@^5.0.0": - "integrity" "sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==" - "resolved" "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "execa" "^5.0.0" - -"run-parallel@^1.1.9": - "integrity" "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==" - "resolved" "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" - "version" "1.2.0" - dependencies: - "queue-microtask" "^1.2.2" - -"runtime-required@^1.1.0": - "integrity" "sha512-yX97f5E0WfNpcQnfVjap6vzQcvErkYYCx6eTK4siqGEdC8lglwypUFgZVTX7ShvIlgfkC4XGFl9O1KTYcff0pw==" - "resolved" "https://registry.npmjs.org/runtime-required/-/runtime-required-1.1.0.tgz" - "version" "1.1.0" - -"rxjs@^7.2.0", "rxjs@^7.5.5": - "integrity" "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==" - "resolved" "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz" - "version" "7.5.6" - dependencies: - "tslib" "^2.1.0" - -"rxjs@^7.8.1": - "integrity" "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==" - "resolved" "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz" - "version" "7.8.1" - dependencies: - "tslib" "^2.1.0" - -"safe-array-concat@^1.0.1": - "integrity" "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==" - "resolved" "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "call-bind" "^1.0.2" - "get-intrinsic" "^1.2.1" - "has-symbols" "^1.0.3" - "isarray" "^2.0.5" - -"safe-buffer@^5.1.0", "safe-buffer@>=5.1.0", "safe-buffer@5.2.1": - "integrity" "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - "version" "5.2.1" - -"safe-buffer@~5.1.0": - "integrity" "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" - "version" "5.1.2" - -"safe-buffer@~5.1.1": - "integrity" "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" - "version" "5.1.2" - -"safe-buffer@5.1.2": - "integrity" "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" - "version" "5.1.2" - -"safe-regex-test@^1.0.0": - "integrity" "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==" - "resolved" "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "call-bind" "^1.0.2" - "get-intrinsic" "^1.1.3" - "is-regex" "^1.1.4" + regenerate "^1.4.2" + regenerate-unicode-properties "^10.1.0" + regjsparser "^0.9.1" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.1.0" + +regjsparser@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" + integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== + dependencies: + jsesc "~0.5.0" + +relateurl@^0.2.7: + version "0.2.7" + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog== + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw== + +renderkid@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-3.0.0.tgz#5fd823e4d6951d37358ecc9a58b1f06836b6268a" + integrity sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg== + dependencies: + css-select "^4.1.3" + dom-converter "^0.2.0" + htmlparser2 "^6.1.0" + lodash "^4.17.21" + strip-ansi "^6.0.1" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== + +resolve-alpn@^1.0.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" + integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== + +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve-pkg-maps@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" + integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== + +resolve.exports@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" + integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== + +resolve@^1.14.2, resolve@^1.20.0, resolve@^1.22.4: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +resolve@^2.0.0-next.4: + version "2.0.0-next.5" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.5.tgz#6b0ec3107e671e52b68cd068ef327173b90dc03c" + integrity sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +responselike@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc" + integrity sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw== + dependencies: + lowercase-keys "^2.0.0" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== + +retry@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" + integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rfdc@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz" + integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== + +rimraf@^3.0.0, rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +rimraf@^5.0.1: + version "5.0.5" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-5.0.5.tgz#9be65d2d6e683447d2e9013da2bf451139a61ccf" + integrity sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A== + dependencies: + glob "^10.3.7" + +roarr@^2.15.3: + version "2.15.4" + resolved "https://registry.yarnpkg.com/roarr/-/roarr-2.15.4.tgz#f5fe795b7b838ccfe35dc608e0282b9eba2e7afd" + integrity sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A== + dependencies: + boolean "^3.0.1" + detect-node "^2.0.4" + globalthis "^1.0.1" + json-stringify-safe "^5.0.1" + semver-compare "^1.0.0" + sprintf-js "^1.1.2" + +run-applescript@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/run-applescript/-/run-applescript-5.0.0.tgz#e11e1c932e055d5c6b40d98374e0268d9b11899c" + integrity sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg== + dependencies: + execa "^5.0.0" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +runtime-required@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/runtime-required/-/runtime-required-1.1.0.tgz#a000a50c2748dba123f4dac5105e66d4599519c4" + integrity sha512-yX97f5E0WfNpcQnfVjap6vzQcvErkYYCx6eTK4siqGEdC8lglwypUFgZVTX7ShvIlgfkC4XGFl9O1KTYcff0pw== + +rxjs@^7.5.5: + version "7.5.6" + resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz" + integrity sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw== + dependencies: + tslib "^2.1.0" + +rxjs@^7.8.1: + version "7.8.1" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" + integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== + dependencies: + tslib "^2.1.0" + +safe-array-concat@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.1.tgz#91686a63ce3adbea14d61b14c99572a8ff84754c" + integrity sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + has-symbols "^1.0.3" + isarray "^2.0.5" + +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-regex-test@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" + integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + is-regex "^1.1.4" "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": - "integrity" "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - "resolved" "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" - "version" "2.1.2" + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -"sanitize-filename@^1.6.3": - "integrity" "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==" - "resolved" "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz" - "version" "1.6.3" +sanitize-filename@^1.6.3: + version "1.6.3" + resolved "https://registry.yarnpkg.com/sanitize-filename/-/sanitize-filename-1.6.3.tgz#755ebd752045931977e30b2025d340d7c9090378" + integrity sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg== dependencies: - "truncate-utf8-bytes" "^1.0.0" + truncate-utf8-bytes "^1.0.0" -"sass-loader@^13.3.2": - "integrity" "sha512-CQbKl57kdEv+KDLquhC+gE3pXt74LEAzm+tzywcA0/aHZuub8wTErbjAoNI57rPUWRYRNC5WUnNl8eGJNbDdwg==" - "resolved" "https://registry.npmjs.org/sass-loader/-/sass-loader-13.3.2.tgz" - "version" "13.3.2" +sass-loader@^13.3.2: + version "13.3.2" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-13.3.2.tgz#460022de27aec772480f03de17f5ba88fa7e18c6" + integrity sha512-CQbKl57kdEv+KDLquhC+gE3pXt74LEAzm+tzywcA0/aHZuub8wTErbjAoNI57rPUWRYRNC5WUnNl8eGJNbDdwg== dependencies: - "neo-async" "^2.6.2" + neo-async "^2.6.2" -"sass@*", "sass@^1.3.0", "sass@^1.42.1", "sass@^1.67.0", "sass@^1.69.0": - "integrity" "sha512-l3bbFpfTOGgQZCLU/gvm1lbsQ5mC/WnLz3djL2v4WCJBDrWm58PO+jgngcGRNnKUh6wSsdm50YaovTqskZ0xDQ==" - "resolved" "https://registry.npmjs.org/sass/-/sass-1.69.0.tgz" - "version" "1.69.0" +sass@^1.67.0: + version "1.69.3" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.69.3.tgz#f8a0c488697e6419519834a13335e7b65a609c11" + integrity sha512-X99+a2iGdXkdWn1akFPs0ZmelUzyAQfvqYc2P/MPTrJRuIRoTffGzT9W9nFqG00S+c8hXzVmgxhUuHFdrwxkhQ== dependencies: - "chokidar" ">=3.0.0 <4.0.0" - "immutable" "^4.0.0" - "source-map-js" ">=0.6.2 <2.0.0" - -"sax@^1.2.4": - "integrity" "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==" - "resolved" "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz" - "version" "1.3.0" + chokidar ">=3.0.0 <4.0.0" + immutable "^4.0.0" + source-map-js ">=0.6.2 <2.0.0" -"saxes@^6.0.0": - "integrity" "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==" - "resolved" "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz" - "version" "6.0.0" +sass@^1.69.0: + version "1.69.0" + resolved "https://registry.npmjs.org/sass/-/sass-1.69.0.tgz" + integrity sha512-l3bbFpfTOGgQZCLU/gvm1lbsQ5mC/WnLz3djL2v4WCJBDrWm58PO+jgngcGRNnKUh6wSsdm50YaovTqskZ0xDQ== dependencies: - "xmlchars" "^2.2.0" + chokidar ">=3.0.0 <4.0.0" + immutable "^4.0.0" + source-map-js ">=0.6.2 <2.0.0" -"scheduler@^0.20.2": - "integrity" "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==" - "resolved" "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz" - "version" "0.20.2" +sax@^1.2.4: + version "1.3.0" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.3.0.tgz#a5dbe77db3be05c9d1ee7785dbd3ea9de51593d0" + integrity sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA== + +saxes@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-6.0.0.tgz#fe5b4a4768df4f14a201b1ba6a65c1f3d9988cc5" + integrity sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA== dependencies: - "loose-envify" "^1.1.0" - "object-assign" "^4.1.1" + xmlchars "^2.2.0" -"scheduler@^0.23.0": - "integrity" "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==" - "resolved" "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz" - "version" "0.23.0" +scheduler@^0.23.0: + version "0.23.0" + resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz" + integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== dependencies: - "loose-envify" "^1.1.0" + loose-envify "^1.1.0" -"schema-utils@^2.0.1": - "integrity" "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==" - "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz" - "version" "2.7.1" +schema-utils@^2.0.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" + integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== dependencies: "@types/json-schema" "^7.0.5" - "ajv" "^6.12.4" - "ajv-keywords" "^3.5.2" + ajv "^6.12.4" + ajv-keywords "^3.5.2" -"schema-utils@^3.0.0", "schema-utils@^3.1.1", "schema-utils@^3.2.0": - "integrity" "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==" - "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" - "version" "3.3.0" +schema-utils@^3.0.0, schema-utils@^3.1.1, schema-utils@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe" + integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== dependencies: "@types/json-schema" "^7.0.8" - "ajv" "^6.12.5" - "ajv-keywords" "^3.5.2" + ajv "^6.12.5" + ajv-keywords "^3.5.2" -"schema-utils@^4.0.0": - "integrity" "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==" - "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz" - "version" "4.2.0" +schema-utils@^4.0.0, schema-utils@^4.0.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.2.0.tgz#70d7c93e153a273a805801882ebd3bff20d89c8b" + integrity sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw== dependencies: "@types/json-schema" "^7.0.9" - "ajv" "^8.9.0" - "ajv-formats" "^2.1.1" - "ajv-keywords" "^5.1.0" - -"schema-utils@^4.0.1": - "integrity" "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==" - "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz" - "version" "4.2.0" - dependencies: - "@types/json-schema" "^7.0.9" - "ajv" "^8.9.0" - "ajv-formats" "^2.1.1" - "ajv-keywords" "^5.1.0" - -"select-hose@^2.0.0": - "integrity" "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==" - "resolved" "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz" - "version" "2.0.0" - -"selfsigned@^2.1.1": - "integrity" "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==" - "resolved" "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz" - "version" "2.1.1" - dependencies: - "node-forge" "^1" - -"semver-compare@^1.0.0": - "integrity" "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==" - "resolved" "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz" - "version" "1.0.0" - -"semver@^5.7.2": - "integrity" "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" - "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" - "version" "5.7.2" - -"semver@^6.2.0": - "integrity" "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" - "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" - "version" "6.3.1" - -"semver@^6.3.0": - "integrity" "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" - "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" - "version" "6.3.1" - -"semver@^6.3.1": - "integrity" "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" - "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" - "version" "6.3.1" - -"semver@^7.2.1", "semver@^7.3.2", "semver@^7.3.4", "semver@^7.3.5", "semver@^7.3.7", "semver@^7.3.8", "semver@^7.5.3", "semver@^7.5.4": - "integrity" "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==" - "resolved" "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz" - "version" "7.5.4" - dependencies: - "lru-cache" "^6.0.0" - -"send@0.18.0": - "integrity" "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==" - "resolved" "https://registry.npmjs.org/send/-/send-0.18.0.tgz" - "version" "0.18.0" - 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" - -"serialize-error@^7.0.1": - "integrity" "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==" - "resolved" "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz" - "version" "7.0.1" - dependencies: - "type-fest" "^0.13.1" - -"serialize-javascript@^6.0.1": - "integrity" "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==" - "resolved" "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz" - "version" "6.0.1" - dependencies: - "randombytes" "^2.1.0" - -"serve-index@^1.9.1": - "integrity" "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==" - "resolved" "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz" - "version" "1.9.1" - 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" - -"serve-static@1.15.0": - "integrity" "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==" - "resolved" "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz" - "version" "1.15.0" - dependencies: - "encodeurl" "~1.0.2" - "escape-html" "~1.0.3" - "parseurl" "~1.3.3" - "send" "0.18.0" - -"set-blocking@^2.0.0": - "integrity" "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" - "resolved" "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" - "version" "2.0.0" - -"set-function-name@^2.0.0", "set-function-name@^2.0.1": - "integrity" "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==" - "resolved" "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "define-data-property" "^1.0.1" - "functions-have-names" "^1.2.3" - "has-property-descriptors" "^1.0.0" - -"setimmediate@^1.0.5": - "integrity" "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" - "resolved" "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" - "version" "1.0.5" - -"setprototypeof@1.1.0": - "integrity" "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" - "resolved" "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz" - "version" "1.1.0" - -"setprototypeof@1.2.0": - "integrity" "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - "resolved" "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" - "version" "1.2.0" - -"sha3@^2.1.4": - "integrity" "sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg==" - "resolved" "https://registry.npmjs.org/sha3/-/sha3-2.1.4.tgz" - "version" "2.1.4" - dependencies: - "buffer" "6.0.3" - -"shallow-clone@^3.0.0": - "integrity" "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==" - "resolved" "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "kind-of" "^6.0.2" - -"shebang-command@^2.0.0": - "integrity" "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==" - "resolved" "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "shebang-regex" "^3.0.0" - -"shebang-regex@^3.0.0": - "integrity" "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" - "resolved" "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" - "version" "3.0.0" - -"shell-quote@^1.8.1": - "integrity" "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==" - "resolved" "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz" - "version" "1.8.1" - -"side-channel@^1.0.4": - "integrity" "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==" - "resolved" "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" - "version" "1.0.4" - dependencies: - "call-bind" "^1.0.0" - "get-intrinsic" "^1.0.2" - "object-inspect" "^1.9.0" - -"signal-exit@^3.0.2", "signal-exit@^3.0.3", "signal-exit@^3.0.7": - "integrity" "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - "resolved" "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" - "version" "3.0.7" - -"signal-exit@^4.0.1": - "integrity" "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==" - "resolved" "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz" - "version" "4.1.0" - -"simple-update-notifier@2.0.0": - "integrity" "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==" - "resolved" "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "semver" "^7.5.3" - -"sirv@^2.0.3": - "integrity" "sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==" - "resolved" "https://registry.npmjs.org/sirv/-/sirv-2.0.3.tgz" - "version" "2.0.3" + ajv "^8.9.0" + ajv-formats "^2.1.1" + ajv-keywords "^5.1.0" + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== + +selfsigned@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.1.1.tgz#18a7613d714c0cd3385c48af0075abf3f266af61" + integrity sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ== + dependencies: + node-forge "^1" + +semver-compare@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" + integrity sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow== + +semver@^5.7.2: + version "5.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== + +semver@^6.2.0, semver@^6.3.0, semver@^6.3.1: + version "6.3.1" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4: + version "7.5.4" + resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== + dependencies: + lru-cache "^6.0.0" + +send@0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== + 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" + +serialize-error@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-7.0.1.tgz#f1360b0447f61ffb483ec4157c737fab7d778e18" + integrity sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw== + dependencies: + type-fest "^0.13.1" + +serialize-javascript@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.1.tgz#b206efb27c3da0b0ab6b52f48d170b7996458e5c" + integrity sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w== + dependencies: + randombytes "^2.1.0" + +serve-index@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + integrity sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw== + 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" + +serve-static@1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.18.0" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== + +set-function-name@^2.0.0, set-function-name@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" + integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== + dependencies: + define-data-property "^1.0.1" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.0" + +setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +sha3@^2.1.4: + version "2.1.4" + resolved "https://registry.npmjs.org/sha3/-/sha3-2.1.4.tgz" + integrity sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg== + dependencies: + buffer "6.0.3" + +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@^1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" + integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: + version "3.0.7" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +signal-exit@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + +simple-update-notifier@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz#d70b92bdab7d6d90dfd73931195a30b6e3d7cebb" + integrity sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w== + dependencies: + semver "^7.5.3" + +sirv@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/sirv/-/sirv-2.0.3.tgz#ca5868b87205a74bef62a469ed0296abceccd446" + integrity sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA== dependencies: "@polka/url" "^1.0.0-next.20" - "mrmime" "^1.0.0" - "totalist" "^3.0.0" - -"sisteransi@^1.0.5": - "integrity" "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" - "resolved" "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" - "version" "1.0.5" - -"slash@^3.0.0": - "integrity" "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" - "resolved" "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" - "version" "3.0.0" - -"slice-ansi@^3.0.0": - "integrity" "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==" - "resolved" "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "ansi-styles" "^4.0.0" - "astral-regex" "^2.0.0" - "is-fullwidth-code-point" "^3.0.0" - -"slice-ansi@^4.0.0": - "integrity" "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==" - "resolved" "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "ansi-styles" "^4.0.0" - "astral-regex" "^2.0.0" - "is-fullwidth-code-point" "^3.0.0" - -"slice-ansi@^5.0.0": - "integrity" "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==" - "resolved" "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "ansi-styles" "^6.0.0" - "is-fullwidth-code-point" "^4.0.0" - -"smart-buffer@^4.0.2", "smart-buffer@^4.2.0": - "integrity" "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==" - "resolved" "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz" - "version" "4.2.0" - -"snake-case@^3.0.4": - "integrity" "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==" - "resolved" "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz" - "version" "3.0.4" - dependencies: - "dot-case" "^3.0.4" - "tslib" "^2.0.3" - -"sockjs@^0.3.24": - "integrity" "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==" - "resolved" "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz" - "version" "0.3.24" - dependencies: - "faye-websocket" "^0.11.3" - "uuid" "^8.3.2" - "websocket-driver" "^0.7.4" - -"socks-proxy-agent@^7.0.0": - "integrity" "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==" - "resolved" "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz" - "version" "7.0.0" - dependencies: - "agent-base" "^6.0.2" - "debug" "^4.3.3" - "socks" "^2.6.2" - -"socks@^2.6.2": - "integrity" "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==" - "resolved" "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz" - "version" "2.7.1" - dependencies: - "ip" "^2.0.0" - "smart-buffer" "^4.2.0" - -"source-map-js@^1.0.1", "source-map-js@^1.0.2", "source-map-js@>=0.6.2 <2.0.0": - "integrity" "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" - "resolved" "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" - "version" "1.0.2" - -"source-map-support@^0.5.19", "source-map-support@~0.5.20": - "integrity" "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==" - "resolved" "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" - "version" "0.5.21" - dependencies: - "buffer-from" "^1.0.0" - "source-map" "^0.6.0" - -"source-map-support@0.5.13": - "integrity" "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==" - "resolved" "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz" - "version" "0.5.13" - dependencies: - "buffer-from" "^1.0.0" - "source-map" "^0.6.0" - -"source-map@^0.6.0", "source-map@^0.6.1", "source-map@~0.6.0", "source-map@~0.6.1": - "integrity" "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" - "version" "0.6.1" - -"source-map@^0.7.3": - "integrity" "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==" - "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" - "version" "0.7.4" - -"source-map@^0.7.4": - "integrity" "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==" - "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" - "version" "0.7.4" - -"spawn-command@0.0.2": - "integrity" "sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==" - "resolved" "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz" - "version" "0.0.2" - -"spdx-exceptions@^2.1.0": - "integrity" "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" - "resolved" "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz" - "version" "2.3.0" - -"spdx-expression-parse@^3.0.1": - "integrity" "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==" - "resolved" "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "spdx-exceptions" "^2.1.0" - "spdx-license-ids" "^3.0.0" - -"spdx-license-ids@^3.0.0": - "integrity" "sha512-lpT8hSQp9jAKp9mhtBU4Xjon8LPGBvLIuBiSVhMEtmLecTh2mO0tlqrAMp47tBXzMr13NJMQ2lf7RpQGLJ3HsQ==" - "resolved" "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.15.tgz" - "version" "3.0.15" - -"spdy-transport@^3.0.0": - "integrity" "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==" - "resolved" "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz" - "version" "3.0.0" - 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" - -"spdy@^4.0.2": - "integrity" "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==" - "resolved" "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz" - "version" "4.0.2" - 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" - -"sprintf-js@^1.1.2": - "integrity" "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==" - "resolved" "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz" - "version" "1.1.3" - -"sprintf-js@~1.0.2": - "integrity" "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" - "resolved" "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" - "version" "1.0.3" - -"ssri@^10.0.0": - "integrity" "sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==" - "resolved" "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz" - "version" "10.0.5" - dependencies: - "minipass" "^7.0.3" - -"stack-utils@^2.0.3": - "integrity" "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==" - "resolved" "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz" - "version" "2.0.6" - dependencies: - "escape-string-regexp" "^2.0.0" - -"stackframe@^1.3.4": - "integrity" "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==" - "resolved" "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz" - "version" "1.3.4" - -"stat-mode@^1.0.0": - "integrity" "sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg==" - "resolved" "https://registry.npmjs.org/stat-mode/-/stat-mode-1.0.0.tgz" - "version" "1.0.0" + mrmime "^1.0.0" + totalist "^3.0.0" + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz" + integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +slice-ansi@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz" + integrity sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ== + dependencies: + ansi-styles "^6.0.0" + is-fullwidth-code-point "^4.0.0" + +smart-buffer@^4.0.2, smart-buffer@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== + +snake-case@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz" + integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + +sockjs@^0.3.24: + version "0.3.24" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" + integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== + dependencies: + faye-websocket "^0.11.3" + uuid "^8.3.2" + websocket-driver "^0.7.4" + +socks-proxy-agent@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz#dc069ecf34436621acb41e3efa66ca1b5fed15b6" + integrity sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww== + dependencies: + agent-base "^6.0.2" + debug "^4.3.3" + socks "^2.6.2" + +socks@^2.6.2: + version "2.7.1" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.7.1.tgz#d8e651247178fde79c0663043e07240196857d55" + integrity sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ== + dependencies: + ip "^2.0.0" + smart-buffer "^4.2.0" + +"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.1, source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +source-map-support@0.5.13: + version "0.5.13" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" + integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-support@^0.5.19, source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.7.3, source-map@^0.7.4: + version "0.7.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" + integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== + +spawn-command@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2.tgz#9544e1a43ca045f8531aac1a48cb29bdae62338e" + integrity sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ== + +spdx-exceptions@^2.1.0: + version "2.3.0" + resolved "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + +spdx-expression-parse@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.15" + resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.15.tgz" + integrity sha512-lpT8hSQp9jAKp9mhtBU4Xjon8LPGBvLIuBiSVhMEtmLecTh2mO0tlqrAMp47tBXzMr13NJMQ2lf7RpQGLJ3HsQ== + +spdy-transport@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" + integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== + 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" + +spdy@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" + integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== + 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" + +sprintf-js@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a" + integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA== + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +ssri@^10.0.0: + version "10.0.5" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-10.0.5.tgz#e49efcd6e36385196cb515d3a2ad6c3f0265ef8c" + integrity sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A== + dependencies: + minipass "^7.0.3" + +stack-utils@^2.0.3: + version "2.0.6" + resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz" + integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== + dependencies: + escape-string-regexp "^2.0.0" + +stackframe@^1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310" + integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== + +stat-mode@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/stat-mode/-/stat-mode-1.0.0.tgz#68b55cb61ea639ff57136f36b216a291800d1465" + integrity sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg== + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== "statuses@>= 1.4.0 < 2": - "integrity" "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==" - "resolved" "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" - "version" "1.5.0" - -"statuses@2.0.1": - "integrity" "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" - "resolved" "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" - "version" "2.0.1" + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== -"stop-iteration-iterator@^1.0.0": - "integrity" "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==" - "resolved" "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz" - "version" "1.0.0" +stop-iteration-iterator@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz#6a60be0b4ee757d1ed5254858ec66b10c49285e4" + integrity sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ== dependencies: - "internal-slot" "^1.0.4" + internal-slot "^1.0.4" -"string_decoder@^1.1.1", "string_decoder@~1.1.1": - "integrity" "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==" - "resolved" "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" - "version" "1.1.1" - dependencies: - "safe-buffer" "~5.1.0" - -"string-argv@^0.3.1": - "integrity" "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==" - "resolved" "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz" - "version" "0.3.1" +string-argv@^0.3.1: + version "0.3.1" + resolved "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz" + integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== -"string-length@^4.0.1": - "integrity" "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==" - "resolved" "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz" - "version" "4.0.2" +string-length@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== dependencies: - "char-regex" "^1.0.2" - "strip-ansi" "^6.0.0" + char-regex "^1.0.2" + strip-ansi "^6.0.0" "string-width-cjs@npm:string-width@^4.2.0": - "integrity" "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==" - "resolved" "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" - "version" "4.2.3" - dependencies: - "emoji-regex" "^8.0.0" - "is-fullwidth-code-point" "^3.0.0" - "strip-ansi" "^6.0.1" - -"string-width@^1.0.2 || 2 || 3 || 4", "string-width@^4.1.0", "string-width@^4.2.0", "string-width@^4.2.3": - "integrity" "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==" - "resolved" "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" - "version" "4.2.3" - dependencies: - "emoji-regex" "^8.0.0" - "is-fullwidth-code-point" "^3.0.0" - "strip-ansi" "^6.0.1" - -"string-width@^5.0.0": - "integrity" "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==" - "resolved" "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz" - "version" "5.1.2" - dependencies: - "eastasianwidth" "^0.2.0" - "emoji-regex" "^9.2.2" - "strip-ansi" "^7.0.1" - -"string-width@^5.0.1", "string-width@^5.1.2": - "integrity" "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==" - "resolved" "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz" - "version" "5.1.2" - dependencies: - "eastasianwidth" "^0.2.0" - "emoji-regex" "^9.2.2" - "strip-ansi" "^7.0.1" - -"string.prototype.matchall@^4.0.8": - "integrity" "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==" - "resolved" "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz" - "version" "4.0.10" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.2.0" - "es-abstract" "^1.22.1" - "get-intrinsic" "^1.2.1" - "has-symbols" "^1.0.3" - "internal-slot" "^1.0.5" - "regexp.prototype.flags" "^1.5.0" - "set-function-name" "^2.0.0" - "side-channel" "^1.0.4" - -"string.prototype.trim@^1.2.8": - "integrity" "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==" - "resolved" "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz" - "version" "1.2.8" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.2.0" - "es-abstract" "^1.22.1" - -"string.prototype.trimend@^1.0.7": - "integrity" "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==" - "resolved" "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz" - "version" "1.0.7" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.2.0" - "es-abstract" "^1.22.1" - -"string.prototype.trimstart@^1.0.7": - "integrity" "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==" - "resolved" "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz" - "version" "1.0.7" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.2.0" - "es-abstract" "^1.22.1" + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + 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" + +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + 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" + +string-width@^5.0.0, string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + +string.prototype.matchall@^4.0.8: + version "4.0.10" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz#a1553eb532221d4180c51581d6072cd65d1ee100" + integrity sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + has-symbols "^1.0.3" + internal-slot "^1.0.5" + regexp.prototype.flags "^1.5.0" + set-function-name "^2.0.0" + side-channel "^1.0.4" + +string.prototype.trim@^1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz#f9ac6f8af4bd55ddfa8895e6aea92a96395393bd" + integrity sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +string.prototype.trimend@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz#1bb3afc5008661d73e2dc015cd4853732d6c471e" + integrity sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +string.prototype.trimstart@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz#d4cdb44b83a4737ffbac2d406e405d43d0184298" + integrity sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" "strip-ansi-cjs@npm:strip-ansi@^6.0.1": - "integrity" "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==" - "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" - "version" "6.0.1" + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: - "ansi-regex" "^5.0.1" + ansi-regex "^5.0.1" -"strip-ansi@^6.0.0", "strip-ansi@^6.0.1": - "integrity" "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==" - "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" - "version" "6.0.1" +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + 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" + ansi-regex "^5.0.1" -"strip-ansi@^7.0.1": - "integrity" "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==" - "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz" - "version" "7.1.0" +strip-ansi@^7.0.1: + version "7.1.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== dependencies: - "ansi-regex" "^6.0.1" + ansi-regex "^6.0.1" -"strip-bom@^3.0.0": - "integrity" "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==" - "resolved" "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" - "version" "3.0.0" +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== -"strip-bom@^4.0.0": - "integrity" "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==" - "resolved" "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz" - "version" "4.0.0" +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== -"strip-final-newline@^2.0.0": - "integrity" "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" - "resolved" "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" - "version" "2.0.0" +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== -"strip-final-newline@^3.0.0": - "integrity" "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==" - "resolved" "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz" - "version" "3.0.0" +strip-final-newline@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" + integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== -"strip-indent@^3.0.0": - "integrity" "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==" - "resolved" "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz" - "version" "3.0.0" +strip-indent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" + integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== dependencies: - "min-indent" "^1.0.0" + min-indent "^1.0.0" -"strip-json-comments@^3.1.1": - "integrity" "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" - "resolved" "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" - "version" "3.1.1" +strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== -"style-loader@^3.3.3": - "integrity" "sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw==" - "resolved" "https://registry.npmjs.org/style-loader/-/style-loader-3.3.3.tgz" - "version" "3.3.3" +style-loader@^3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.3.tgz#bba8daac19930169c0c9c96706749a597ae3acff" + integrity sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw== -"style-mod@^4.0.0", "style-mod@^4.1.0": - "integrity" "sha512-Ca5ib8HrFn+f+0n4N4ScTIA9iTOQ7MaGS1ylHcoVqW9J7w2w8PzN6g9gKmTYgGEBH8e120+RCmhpje6jC5uGWA==" - "resolved" "https://registry.npmjs.org/style-mod/-/style-mod-4.1.0.tgz" - "version" "4.1.0" +style-mod@^4.0.0, style-mod@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/style-mod/-/style-mod-4.1.0.tgz" + integrity sha512-Ca5ib8HrFn+f+0n4N4ScTIA9iTOQ7MaGS1ylHcoVqW9J7w2w8PzN6g9gKmTYgGEBH8e120+RCmhpje6jC5uGWA== -"stylehacks@^6.0.0": - "integrity" "sha512-+UT589qhHPwz6mTlCLSt/vMNTJx8dopeJlZAlBMJPWA3ORqu6wmQY7FBXf+qD+FsqoBJODyqNxOUP3jdntFRdw==" - "resolved" "https://registry.npmjs.org/stylehacks/-/stylehacks-6.0.0.tgz" - "version" "6.0.0" +stylehacks@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-6.0.0.tgz#9fdd7c217660dae0f62e14d51c89f6c01b3cb738" + integrity sha512-+UT589qhHPwz6mTlCLSt/vMNTJx8dopeJlZAlBMJPWA3ORqu6wmQY7FBXf+qD+FsqoBJODyqNxOUP3jdntFRdw== dependencies: - "browserslist" "^4.21.4" - "postcss-selector-parser" "^6.0.4" + browserslist "^4.21.4" + postcss-selector-parser "^6.0.4" -"sumchecker@^3.0.1": - "integrity" "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==" - "resolved" "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz" - "version" "3.0.1" +sumchecker@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/sumchecker/-/sumchecker-3.0.1.tgz#6377e996795abb0b6d348e9b3e1dfb24345a8e42" + integrity sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg== dependencies: - "debug" "^4.1.0" + debug "^4.1.0" -"supports-color@^5.3.0": - "integrity" "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" - "version" "5.5.0" +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: - "has-flag" "^3.0.0" + has-flag "^3.0.0" -"supports-color@^7.1.0": - "integrity" "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" - "version" "7.2.0" +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: - "has-flag" "^4.0.0" + has-flag "^4.0.0" -"supports-color@^8.0.0", "supports-color@^8.1.1": - "integrity" "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" - "version" "8.1.1" +supports-color@^8.0.0, supports-color@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== dependencies: - "has-flag" "^4.0.0" + has-flag "^4.0.0" -"supports-color@^9.2.2": - "integrity" "sha512-XC6g/Kgux+rJXmwokjm9ECpD6k/smUoS5LKlUCcsYr4IY3rW0XyAympon2RmxGrlnZURMpg5T18gWDP9CsHXFA==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-9.2.2.tgz" - "version" "9.2.2" +supports-color@^9.2.2: + version "9.2.2" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-9.2.2.tgz" + integrity sha512-XC6g/Kgux+rJXmwokjm9ECpD6k/smUoS5LKlUCcsYr4IY3rW0XyAympon2RmxGrlnZURMpg5T18gWDP9CsHXFA== -"supports-preserve-symlinks-flag@^1.0.0": - "integrity" "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" - "resolved" "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" - "version" "1.0.0" +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -"svg-parser@^2.0.4": - "integrity" "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==" - "resolved" "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz" - "version" "2.0.4" +svg-parser@^2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz" + integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== -"svgo@^3.0.2": - "integrity" "sha512-Z706C1U2pb1+JGP48fbazf3KxHrWOsLme6Rv7imFBn5EnuanDW1GPaA/P1/dvObE670JDePC3mnj0k0B7P0jjQ==" - "resolved" "https://registry.npmjs.org/svgo/-/svgo-3.0.2.tgz" - "version" "3.0.2" +svgo@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-3.0.2.tgz#5e99eeea42c68ee0dc46aa16da093838c262fe0a" + integrity sha512-Z706C1U2pb1+JGP48fbazf3KxHrWOsLme6Rv7imFBn5EnuanDW1GPaA/P1/dvObE670JDePC3mnj0k0B7P0jjQ== dependencies: "@trysound/sax" "0.2.0" - "commander" "^7.2.0" - "css-select" "^5.1.0" - "css-tree" "^2.2.1" - "csso" "^5.0.5" - "picocolors" "^1.0.0" - -"swr@^2.2.4": - "integrity" "sha512-njiZ/4RiIhoOlAaLYDqwz5qH/KZXVilRLvomrx83HjzCWTfa+InyfAjv05PSFxnmLzZkNO9ZfvgoqzAaEI4sGQ==" - "resolved" "https://registry.npmjs.org/swr/-/swr-2.2.4.tgz" - "version" "2.2.4" - dependencies: - "client-only" "^0.0.1" - "use-sync-external-store" "^1.2.0" - -"symbol-tree@^3.2.4": - "integrity" "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" - "resolved" "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz" - "version" "3.2.4" - -"synckit@^0.8.5": - "integrity" "sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==" - "resolved" "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz" - "version" "0.8.5" + commander "^7.2.0" + css-select "^5.1.0" + css-tree "^2.2.1" + csso "^5.0.5" + picocolors "^1.0.0" + +swr@^2.2.4: + version "2.2.4" + resolved "https://registry.npmjs.org/swr/-/swr-2.2.4.tgz" + integrity sha512-njiZ/4RiIhoOlAaLYDqwz5qH/KZXVilRLvomrx83HjzCWTfa+InyfAjv05PSFxnmLzZkNO9ZfvgoqzAaEI4sGQ== + dependencies: + client-only "^0.0.1" + use-sync-external-store "^1.2.0" + +symbol-tree@^3.2.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + +synckit@^0.8.5: + version "0.8.5" + resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.5.tgz#b7f4358f9bb559437f9f167eb6bc46b3c9818fa3" + integrity sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q== dependencies: "@pkgr/utils" "^2.3.1" - "tslib" "^2.5.0" - -"tapable@^0.1.8": - "integrity" "sha512-jX8Et4hHg57mug1/079yitEKWGB3LCwoxByLsNim89LABq8NqgiX+6iYVOsq0vX8uJHkU+DZ5fnq95f800bEsQ==" - "resolved" "https://registry.npmjs.org/tapable/-/tapable-0.1.10.tgz" - "version" "0.1.10" - -"tapable@^2.0.0", "tapable@^2.1.1", "tapable@^2.2.0": - "integrity" "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" - "resolved" "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz" - "version" "2.2.1" - -"tar@^6.0.5", "tar@^6.1.11", "tar@^6.1.12", "tar@^6.1.2": - "integrity" "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==" - "resolved" "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz" - "version" "6.2.0" - 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" - -"temp-file@^3.4.0": - "integrity" "sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg==" - "resolved" "https://registry.npmjs.org/temp-file/-/temp-file-3.4.0.tgz" - "version" "3.4.0" - dependencies: - "async-exit-hook" "^2.0.1" - "fs-extra" "^10.0.0" - -"terser-webpack-plugin@*", "terser-webpack-plugin@^5.3.7", "terser-webpack-plugin@^5.3.9": - "integrity" "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==" - "resolved" "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz" - "version" "5.3.9" + tslib "^2.5.0" + +tapable@^0.1.8: + version "0.1.10" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.1.10.tgz#29c35707c2b70e50d07482b5d202e8ed446dafd4" + integrity sha512-jX8Et4hHg57mug1/079yitEKWGB3LCwoxByLsNim89LABq8NqgiX+6iYVOsq0vX8uJHkU+DZ5fnq95f800bEsQ== + +tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + +tar@^6.0.5, tar@^6.1.11, tar@^6.1.12, tar@^6.1.2: + version "6.2.0" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.0.tgz#b14ce49a79cb1cd23bc9b016302dea5474493f73" + integrity sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ== + 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" + +temp-file@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/temp-file/-/temp-file-3.4.0.tgz#766ea28911c683996c248ef1a20eea04d51652c7" + integrity sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg== + dependencies: + async-exit-hook "^2.0.1" + fs-extra "^10.0.0" + +terser-webpack-plugin@*, terser-webpack-plugin@^5.3.7, terser-webpack-plugin@^5.3.9: + version "5.3.9" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz#832536999c51b46d468067f9e37662a3b96adfe1" + integrity sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA== dependencies: "@jridgewell/trace-mapping" "^0.3.17" - "jest-worker" "^27.4.5" - "schema-utils" "^3.1.1" - "serialize-javascript" "^6.0.1" - "terser" "^5.16.8" + jest-worker "^27.4.5" + schema-utils "^3.1.1" + serialize-javascript "^6.0.1" + terser "^5.16.8" -"terser@^5.10.0", "terser@^5.16.8", "terser@^5.4.0": - "integrity" "sha512-WtnFKrxu9kaoXuiZFSGrcAvvBqAdmKx0SFNmVNYdJamMu9yyN3I/QF0FbH4QcqJQ+y1CJnzxGIKH0cSj+FGYRw==" - "resolved" "https://registry.npmjs.org/terser/-/terser-5.21.0.tgz" - "version" "5.21.0" +terser@^5.10.0, terser@^5.16.8: + version "5.21.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.21.0.tgz#d2b27e92b5e56650bc83b6defa00a110f0b124b2" + integrity sha512-WtnFKrxu9kaoXuiZFSGrcAvvBqAdmKx0SFNmVNYdJamMu9yyN3I/QF0FbH4QcqJQ+y1CJnzxGIKH0cSj+FGYRw== dependencies: "@jridgewell/source-map" "^0.3.3" - "acorn" "^8.8.2" - "commander" "^2.20.0" - "source-map-support" "~0.5.20" + acorn "^8.8.2" + commander "^2.20.0" + source-map-support "~0.5.20" -"test-exclude@^6.0.0": - "integrity" "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==" - "resolved" "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz" - "version" "6.0.0" +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== dependencies: "@istanbuljs/schema" "^0.1.2" - "glob" "^7.1.4" - "minimatch" "^3.0.4" - -"text-table@^0.2.0": - "integrity" "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" - "resolved" "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" - "version" "0.2.0" - -"through@^2.3.8": - "integrity" "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" - "resolved" "https://registry.npmjs.org/through/-/through-2.3.8.tgz" - "version" "2.3.8" - -"thunky@^1.0.2": - "integrity" "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" - "resolved" "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz" - "version" "1.1.0" - -"tiny-typed-emitter@^2.1.0": - "integrity" "sha512-qVtvMxeXbVej0cQWKqVSSAHmKZEHAvxdF8HEUBFWts8h+xEo5m/lEiPakuyZ3BnCBjOD8i24kzNOiOLLgsSxhA==" - "resolved" "https://registry.npmjs.org/tiny-typed-emitter/-/tiny-typed-emitter-2.1.0.tgz" - "version" "2.1.0" - -"tiny-warning@^1.0.2": - "integrity" "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" - "resolved" "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz" - "version" "1.0.3" - -"titleize@^3.0.0": - "integrity" "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==" - "resolved" "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz" - "version" "3.0.0" - -"tmp-promise@^3.0.2": - "integrity" "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==" - "resolved" "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz" - "version" "3.0.3" - dependencies: - "tmp" "^0.2.0" - -"tmp@^0.2.0": - "integrity" "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==" - "resolved" "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz" - "version" "0.2.1" - dependencies: - "rimraf" "^3.0.0" - -"tmpl@1.0.5": - "integrity" "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==" - "resolved" "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz" - "version" "1.0.5" - -"to-fast-properties@^2.0.0": - "integrity" "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" - "resolved" "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" - "version" "2.0.0" - -"to-regex-range@^5.0.1": - "integrity" "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==" - "resolved" "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" - "version" "5.0.1" - dependencies: - "is-number" "^7.0.0" - -"toggle-selection@^1.0.6": - "integrity" "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==" - "resolved" "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz" - "version" "1.0.6" - -"toidentifier@1.0.1": - "integrity" "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" - "resolved" "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" - "version" "1.0.1" - -"toposort@^2.0.2": - "integrity" "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==" - "resolved" "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz" - "version" "2.0.2" - -"totalist@^3.0.0": - "integrity" "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==" - "resolved" "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz" - "version" "3.0.1" - -"tough-cookie@^4.1.2": - "integrity" "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==" - "resolved" "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz" - "version" "4.1.3" - dependencies: - "psl" "^1.1.33" - "punycode" "^2.1.1" - "universalify" "^0.2.0" - "url-parse" "^1.5.3" - -"tr46@^3.0.0": - "integrity" "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==" - "resolved" "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "punycode" "^2.1.1" - -"tr46@~0.0.3": - "integrity" "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - "resolved" "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" - "version" "0.0.3" - -"tree-kill@^1.2.2": - "integrity" "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==" - "resolved" "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz" - "version" "1.2.2" - -"truncate-utf8-bytes@^1.0.0": - "integrity" "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==" - "resolved" "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "utf8-byte-length" "^1.0.1" - -"ts-api-utils@^1.0.1": - "integrity" "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==" - "resolved" "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz" - "version" "1.0.3" - -"ts-jest@^27.0.3", "ts-jest@^29.1.1": - "integrity" "sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==" - "resolved" "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz" - "version" "29.1.1" - dependencies: - "bs-logger" "0.x" - "fast-json-stable-stringify" "2.x" - "jest-util" "^29.0.0" - "json5" "^2.2.3" - "lodash.memoize" "4.x" - "make-error" "1.x" - "semver" "^7.5.3" - "yargs-parser" "^21.0.1" - -"ts-loader@^9.2.3", "ts-loader@^9.4.4": - "integrity" "sha512-LLlB/pkB4q9mW2yLdFMnK3dEHbrBjeZTYguaaIfusyojBgAGf5kF+O6KcWqiGzWqHk0LBsoolrp4VftEURhybg==" - "resolved" "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.0.tgz" - "version" "9.5.0" - dependencies: - "chalk" "^4.1.0" - "enhanced-resolve" "^5.0.0" - "micromatch" "^4.0.0" - "semver" "^7.3.4" - "source-map" "^0.7.4" - -"ts-node@^10.0.0", "ts-node@^10.9.1", "ts-node@>=9.0.0": - "integrity" "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==" - "resolved" "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz" - "version" "10.9.1" + glob "^7.1.4" + minimatch "^3.0.4" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +through@^2.3.8: + version "2.3.8" + resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + +thunky@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== + +tiny-typed-emitter@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/tiny-typed-emitter/-/tiny-typed-emitter-2.1.0.tgz#b3b027fdd389ff81a152c8e847ee2f5be9fad7b5" + integrity sha512-qVtvMxeXbVej0cQWKqVSSAHmKZEHAvxdF8HEUBFWts8h+xEo5m/lEiPakuyZ3BnCBjOD8i24kzNOiOLLgsSxhA== + +tiny-warning@^1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz" + integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== + +titleize@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/titleize/-/titleize-3.0.0.tgz#71c12eb7fdd2558aa8a44b0be83b8a76694acd53" + integrity sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ== + +tmp-promise@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/tmp-promise/-/tmp-promise-3.0.3.tgz#60a1a1cc98c988674fcbfd23b6e3367bdeac4ce7" + integrity sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ== + dependencies: + tmp "^0.2.0" + +tmp@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" + integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== + dependencies: + rimraf "^3.0.0" + +tmpl@1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toggle-selection@^1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz" + integrity sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ== + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +toposort@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz" + integrity sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg== + +totalist@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/totalist/-/totalist-3.0.1.tgz#ba3a3d600c915b1a97872348f79c127475f6acf8" + integrity sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ== + +tough-cookie@^4.1.2: + version "4.1.3" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.3.tgz#97b9adb0728b42280aa3d814b6b999b2ff0318bf" + integrity sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw== + dependencies: + psl "^1.1.33" + punycode "^2.1.1" + universalify "^0.2.0" + url-parse "^1.5.3" + +tr46@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-3.0.0.tgz#555c4e297a950617e8eeddef633c87d4d9d6cbf9" + integrity sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA== + dependencies: + punycode "^2.1.1" + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +tree-kill@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" + integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== + +truncate-utf8-bytes@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz#405923909592d56f78a5818434b0b78489ca5f2b" + integrity sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ== + dependencies: + utf8-byte-length "^1.0.1" + +ts-api-utils@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.0.3.tgz#f12c1c781d04427313dbac808f453f050e54a331" + integrity sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg== + +ts-jest@^29.1.1: + version "29.1.1" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.1.1.tgz#f58fe62c63caf7bfcc5cc6472082f79180f0815b" + integrity sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA== + dependencies: + bs-logger "0.x" + fast-json-stable-stringify "2.x" + jest-util "^29.0.0" + json5 "^2.2.3" + lodash.memoize "4.x" + make-error "1.x" + semver "^7.5.3" + yargs-parser "^21.0.1" + +ts-loader@^9.4.4: + version "9.5.0" + resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.5.0.tgz#f0a51dda37cc4d8e43e6cb14edebbc599b0c3aa2" + integrity sha512-LLlB/pkB4q9mW2yLdFMnK3dEHbrBjeZTYguaaIfusyojBgAGf5kF+O6KcWqiGzWqHk0LBsoolrp4VftEURhybg== + dependencies: + chalk "^4.1.0" + enhanced-resolve "^5.0.0" + micromatch "^4.0.0" + semver "^7.3.4" + source-map "^0.7.4" + +ts-node@^10.9.1: + version "10.9.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" + integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== dependencies: "@cspotcode/source-map-support" "^0.8.0" "@tsconfig/node10" "^1.0.7" "@tsconfig/node12" "^1.0.7" "@tsconfig/node14" "^1.0.0" "@tsconfig/node16" "^1.0.2" - "acorn" "^8.4.1" - "acorn-walk" "^8.1.1" - "arg" "^4.1.0" - "create-require" "^1.1.0" - "diff" "^4.0.1" - "make-error" "^1.1.1" - "v8-compile-cache-lib" "^3.0.1" - "yn" "3.1.1" - -"tsconfig-paths-webpack-plugin@^4.1.0": - "integrity" "sha512-xWFISjviPydmtmgeUAuXp4N1fky+VCtfhOkDUFIv5ea7p4wuTomI4QTrXvFBX2S4jZsmyTSrStQl+E+4w+RzxA==" - "resolved" "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "chalk" "^4.1.0" - "enhanced-resolve" "^5.7.0" - "tsconfig-paths" "^4.1.2" - -"tsconfig-paths@^3.10.1", "tsconfig-paths@^3.14.2": - "integrity" "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==" - "resolved" "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz" - "version" "3.14.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + +tsconfig-paths-webpack-plugin@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.1.0.tgz#3c6892c5e7319c146eee1e7302ed9e6f2be4f763" + integrity sha512-xWFISjviPydmtmgeUAuXp4N1fky+VCtfhOkDUFIv5ea7p4wuTomI4QTrXvFBX2S4jZsmyTSrStQl+E+4w+RzxA== + dependencies: + chalk "^4.1.0" + enhanced-resolve "^5.7.0" + tsconfig-paths "^4.1.2" + +tsconfig-paths@^3.14.2: + version "3.14.2" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz#6e32f1f79412decd261f92d633a9dc1cfa99f088" + integrity sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g== dependencies: "@types/json5" "^0.0.29" - "json5" "^1.0.2" - "minimist" "^1.2.6" - "strip-bom" "^3.0.0" - -"tsconfig-paths@^4.1.2": - "integrity" "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==" - "resolved" "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz" - "version" "4.2.0" - dependencies: - "json5" "^2.2.2" - "minimist" "^1.2.6" - "strip-bom" "^3.0.0" - -"tslib@^1.8.1": - "integrity" "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - "resolved" "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" - "version" "1.14.1" - -"tslib@^2.0.0", "tslib@^2.0.3", "tslib@^2.1.0": - "integrity" "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" - "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz" - "version" "2.4.0" - -"tslib@^2.4.1 || ^1.9.3": - "integrity" "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" - "version" "2.6.2" - -"tslib@^2.4.1": - "integrity" "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" - "version" "2.6.2" - -"tslib@^2.5.0": - "integrity" "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" - "version" "2.6.2" - -"tslib@^2.6.0": - "integrity" "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" - "version" "2.6.2" - -"tsutils@^3.21.0": - "integrity" "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==" - "resolved" "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz" - "version" "3.21.0" - dependencies: - "tslib" "^1.8.1" - -"turbo-darwin-arm64@1.10.4": - "integrity" "sha512-N0XPFLXsZRLE6gKDa5MREpPQp0drOz9PrADaaMXTlspxWS/tmmxyH+ZQ/uGqKC/0mqsNIhZuSFsEVZe1PGaqxw==" - "resolved" "https://registry.npmjs.org/turbo-darwin-arm64/-/turbo-darwin-arm64-1.10.4.tgz" - "version" "1.10.4" - -"turbo@1.10.4": - "integrity" "sha512-EVBt762wVGyZAXtp1UWQptRG2N/9TThUJ1tRawvt/pmB62VmdzgDuz80SQYXK5U5yKEID6OJdqAzq8HnIQVA6g==" - "resolved" "https://registry.npmjs.org/turbo/-/turbo-1.10.4.tgz" - "version" "1.10.4" + json5 "^1.0.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + +tsconfig-paths@^4.1.2: + version "4.2.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz#ef78e19039133446d244beac0fd6a1632e2d107c" + integrity sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg== + dependencies: + json5 "^2.2.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + +tslib@^1.8.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0: + version "2.4.0" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz" + integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== + +tslib@^2.4.1, "tslib@^2.4.1 || ^1.9.3", tslib@^2.5.0, tslib@^2.6.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + +turbo-darwin-64@1.10.4: + version "1.10.4" + resolved "https://registry.yarnpkg.com/turbo-darwin-64/-/turbo-darwin-64-1.10.4.tgz#ee902a1ded21c2dae1deb24b940ec31d07ec9c46" + integrity sha512-oAILq0QZUvOxYZU71SXRsL7DFpqZutPl9CX7+rD48tReHrmhcm3HMeuAFY0S5FD/9fKub04UfAQwVtJSlhvISg== + +turbo-darwin-arm64@1.10.4: + version "1.10.4" + resolved "https://registry.npmjs.org/turbo-darwin-arm64/-/turbo-darwin-arm64-1.10.4.tgz" + integrity sha512-N0XPFLXsZRLE6gKDa5MREpPQp0drOz9PrADaaMXTlspxWS/tmmxyH+ZQ/uGqKC/0mqsNIhZuSFsEVZe1PGaqxw== + +turbo-linux-64@1.10.4: + version "1.10.4" + resolved "https://registry.yarnpkg.com/turbo-linux-64/-/turbo-linux-64-1.10.4.tgz#9e70ac014e764268180f1f93dfc8e7c3d004fa66" + integrity sha512-S8ZVNCPnrBU+GMKKUWcgg4MaTOdL1reOU1XQtDiHfEPskXjLE+10vr65xJJQb6CqO8ARFXUlFSAUfxZRX6WVNA== + +turbo-linux-arm64@1.10.4: + version "1.10.4" + resolved "https://registry.yarnpkg.com/turbo-linux-arm64/-/turbo-linux-arm64-1.10.4.tgz#c81f9b7a03259ab17cc21514d146695a4a414272" + integrity sha512-/C6vpo7kd2ae6dR0iZyRuvfjijuixidhwLzV026A+/1gmAMRXYkslBfgOGfoOquHmvqjCeDVTsMWwCY2NRQqtw== + +turbo-windows-64@1.10.4: + version "1.10.4" + resolved "https://registry.yarnpkg.com/turbo-windows-64/-/turbo-windows-64-1.10.4.tgz#fc35c9cdf48411224c67c3ac03f237be591d7e5a" + integrity sha512-fh6X/fJl9gNTu3r7zMmwCychxMlpQMFn32bpioPNIBxrTHCbQYeGSQuw2XWa/RswgNzCY3Xo34emYAKu9btrsw== + +turbo-windows-arm64@1.10.4: + version "1.10.4" + resolved "https://registry.yarnpkg.com/turbo-windows-arm64/-/turbo-windows-arm64-1.10.4.tgz#baa18ba2b8843983d68a9c9a5fce040f13c23b1b" + integrity sha512-KzcKGl+bjwaSkxMNTutuoIM+xPuTBA13zJiC2vFM7fQ6XYM0/ZmUekfoxpMnWgSav8vlTk5tRYaPniLcVzLnTQ== + +turbo@1.10.4: + version "1.10.4" + resolved "https://registry.npmjs.org/turbo/-/turbo-1.10.4.tgz" + integrity sha512-EVBt762wVGyZAXtp1UWQptRG2N/9TThUJ1tRawvt/pmB62VmdzgDuz80SQYXK5U5yKEID6OJdqAzq8HnIQVA6g== optionalDependencies: - "turbo-darwin-64" "1.10.4" - "turbo-darwin-arm64" "1.10.4" - "turbo-linux-64" "1.10.4" - "turbo-linux-arm64" "1.10.4" - "turbo-windows-64" "1.10.4" - "turbo-windows-arm64" "1.10.4" - -"type-check@^0.4.0", "type-check@~0.4.0": - "integrity" "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==" - "resolved" "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" - "version" "0.4.0" - dependencies: - "prelude-ls" "^1.2.1" - -"type-detect@4.0.8": - "integrity" "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" - "resolved" "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" - "version" "4.0.8" - -"type-fest@^0.13.1": - "integrity" "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==" - "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz" - "version" "0.13.1" - -"type-fest@^0.20.2": - "integrity" "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" - "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" - "version" "0.20.2" - -"type-fest@^0.21.3": - "integrity" "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" - "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" - "version" "0.21.3" - -"type-fest@>=0.17.0 <5.0.0": - "integrity" "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==" - "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz" - "version" "1.4.0" - -"type-is@~1.6.18": - "integrity" "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==" - "resolved" "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" - "version" "1.6.18" - dependencies: - "media-typer" "0.3.0" - "mime-types" "~2.1.24" - -"typed-array-buffer@^1.0.0": - "integrity" "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==" - "resolved" "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "call-bind" "^1.0.2" - "get-intrinsic" "^1.2.1" - "is-typed-array" "^1.1.10" - -"typed-array-byte-length@^1.0.0": - "integrity" "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==" - "resolved" "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "call-bind" "^1.0.2" - "for-each" "^0.3.3" - "has-proto" "^1.0.1" - "is-typed-array" "^1.1.10" - -"typed-array-byte-offset@^1.0.0": - "integrity" "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==" - "resolved" "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "available-typed-arrays" "^1.0.5" - "call-bind" "^1.0.2" - "for-each" "^0.3.3" - "has-proto" "^1.0.1" - "is-typed-array" "^1.1.10" - -"typed-array-length@^1.0.4": - "integrity" "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==" - "resolved" "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz" - "version" "1.0.4" - dependencies: - "call-bind" "^1.0.2" - "for-each" "^0.3.3" - "is-typed-array" "^1.1.9" - -"typescript@*", "typescript@^4.0.2", "typescript@^4.3.5", "typescript@^4.4.3", "typescript@>=2.7", "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta", "typescript@>=4.2.0", "typescript@>=4.3 <6", "typescript@5.2.2": - "integrity" "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==" - "resolved" "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz" - "version" "4.7.4" - -"typescript@^4.9.5": - "integrity" "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==" - "resolved" "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz" - "version" "4.9.5" - -"typescript@^5.2.2": - "integrity" "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==" - "resolved" "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz" - "version" "5.2.2" - -"typescript@>=4.9.5": - "integrity" "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==" - "resolved" "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz" - "version" "5.2.2" - -"ua-parser-js@^1.0.35": - "integrity" "sha512-znuyCIXzl8ciS3+y3fHJI/2OhQIXbXw9MWC/o3qwyR+RGppjZHrM27CGFSKCJXi2Kctiz537iOu2KnXs1lMQhw==" - "resolved" "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.36.tgz" - "version" "1.0.36" - -"unbox-primitive@^1.0.2": - "integrity" "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==" - "resolved" "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "call-bind" "^1.0.2" - "has-bigints" "^1.0.2" - "has-symbols" "^1.0.3" - "which-boxed-primitive" "^1.0.2" - -"unicode-canonical-property-names-ecmascript@^2.0.0": - "integrity" "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==" - "resolved" "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz" - "version" "2.0.0" - -"unicode-match-property-ecmascript@^2.0.0": - "integrity" "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==" - "resolved" "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "unicode-canonical-property-names-ecmascript" "^2.0.0" - "unicode-property-aliases-ecmascript" "^2.0.0" - -"unicode-match-property-value-ecmascript@^2.1.0": - "integrity" "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==" - "resolved" "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz" - "version" "2.1.0" - -"unicode-property-aliases-ecmascript@^2.0.0": - "integrity" "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==" - "resolved" "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz" - "version" "2.1.0" - -"unique-filename@^3.0.0": - "integrity" "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==" - "resolved" "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "unique-slug" "^4.0.0" - -"unique-slug@^4.0.0": - "integrity" "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==" - "resolved" "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "imurmurhash" "^0.1.4" - -"universalify@^0.1.0": - "integrity" "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" - "resolved" "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" - "version" "0.1.2" - -"universalify@^0.2.0": - "integrity" "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==" - "resolved" "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz" - "version" "0.2.0" - -"universalify@^2.0.0": - "integrity" "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" - "resolved" "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz" - "version" "2.0.0" - -"unixify@^1.0.0": - "integrity" "sha512-6bc58dPYhCMHHuwxldQxO3RRNZ4eCogZ/st++0+fcC1nr0jiGUtAdBJ2qzmLQWSxbtz42pWt4QQMiZ9HvZf5cg==" - "resolved" "https://registry.npmjs.org/unixify/-/unixify-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "normalize-path" "^2.1.1" - -"unpipe@~1.0.0", "unpipe@1.0.0": - "integrity" "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" - "resolved" "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" - "version" "1.0.0" - -"untildify@^4.0.0": - "integrity" "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==" - "resolved" "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz" - "version" "4.0.0" - -"unzip-crx-3@^0.2.0": - "integrity" "sha512-0+JiUq/z7faJ6oifVB5nSwt589v1KCduqIJupNVDoWSXZtWDmjDGO3RAEOvwJ07w90aoXoP4enKsR7ecMrJtWQ==" - "resolved" "https://registry.npmjs.org/unzip-crx-3/-/unzip-crx-3-0.2.0.tgz" - "version" "0.2.0" - dependencies: - "jszip" "^3.1.0" - "mkdirp" "^0.5.1" - "yaku" "^0.16.6" - -"update-browserslist-db@^1.0.13": - "integrity" "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==" - "resolved" "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz" - "version" "1.0.13" - dependencies: - "escalade" "^3.1.1" - "picocolors" "^1.0.0" - -"uri-js@^4.2.2": - "integrity" "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==" - "resolved" "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" - "version" "4.4.1" - dependencies: - "punycode" "^2.1.0" - -"url-loader@^4.1.1": - "integrity" "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==" - "resolved" "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz" - "version" "4.1.1" - dependencies: - "loader-utils" "^2.0.0" - "mime-types" "^2.1.27" - "schema-utils" "^3.0.0" - -"url-parse@^1.5.3": - "integrity" "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==" - "resolved" "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz" - "version" "1.5.10" - dependencies: - "querystringify" "^2.1.1" - "requires-port" "^1.0.0" - -"use-composed-ref@^1.3.0": - "integrity" "sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==" - "resolved" "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.3.0.tgz" - "version" "1.3.0" - -"use-isomorphic-layout-effect@^1.1.1": - "integrity" "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==" - "resolved" "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz" - "version" "1.1.2" - -"use-latest@^1.2.1": - "integrity" "sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==" - "resolved" "https://registry.npmjs.org/use-latest/-/use-latest-1.2.1.tgz" - "version" "1.2.1" - dependencies: - "use-isomorphic-layout-effect" "^1.1.1" - -"use-sync-external-store@^1.2.0": - "integrity" "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==" - "resolved" "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz" - "version" "1.2.0" - -"utf8-byte-length@^1.0.1": - "integrity" "sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==" - "resolved" "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz" - "version" "1.0.4" - -"util-deprecate@^1.0.1", "util-deprecate@^1.0.2", "util-deprecate@~1.0.1": - "integrity" "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - "resolved" "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - "version" "1.0.2" - -"utila@~0.4": - "integrity" "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==" - "resolved" "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz" - "version" "0.4.0" - -"utils-merge@1.0.1": - "integrity" "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" - "resolved" "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" - "version" "1.0.1" - -"uuid@^8.3.2": - "integrity" "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" - "resolved" "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" - "version" "8.3.2" - -"v8-compile-cache-lib@^3.0.1": - "integrity" "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==" - "resolved" "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz" - "version" "3.0.1" - -"v8-to-istanbul@^9.0.1": - "integrity" "sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg==" - "resolved" "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.3.tgz" - "version" "9.1.3" + turbo-darwin-64 "1.10.4" + turbo-darwin-arm64 "1.10.4" + turbo-linux-64 "1.10.4" + turbo-linux-arm64 "1.10.4" + turbo-windows-64 "1.10.4" + turbo-windows-arm64 "1.10.4" + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934" + integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg== + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +typed-array-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" + integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + is-typed-array "^1.1.10" + +typed-array-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz#d787a24a995711611fb2b87a4052799517b230d0" + integrity sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + +typed-array-byte-offset@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz#cbbe89b51fdef9cd6aaf07ad4707340abbc4ea0b" + integrity sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + +typed-array-length@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" + integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + is-typed-array "^1.1.9" + +typescript@^4.0.2, typescript@^4.9.5: + version "4.9.5" + resolved "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== + +typescript@^4.3.5: + version "4.7.4" + resolved "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz" + integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ== + +typescript@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78" + integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w== + +ua-parser-js@^1.0.35: + version "1.0.36" + resolved "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.36.tgz" + integrity sha512-znuyCIXzl8ciS3+y3fHJI/2OhQIXbXw9MWC/o3qwyR+RGppjZHrM27CGFSKCJXi2Kctiz537iOu2KnXs1lMQhw== + +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== + dependencies: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" + +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== + +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== + dependencies: + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" + +unicode-match-property-value-ecmascript@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" + integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== + +unicode-property-aliases-ecmascript@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" + integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== + +unique-filename@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-3.0.0.tgz#48ba7a5a16849f5080d26c760c86cf5cf05770ea" + integrity sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g== + dependencies: + unique-slug "^4.0.0" + +unique-slug@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-4.0.0.tgz#6bae6bb16be91351badd24cdce741f892a6532e3" + integrity sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ== + dependencies: + imurmurhash "^0.1.4" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +universalify@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" + integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== + +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + +unixify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unixify/-/unixify-1.0.0.tgz#3a641c8c2ffbce4da683a5c70f03a462940c2090" + integrity sha512-6bc58dPYhCMHHuwxldQxO3RRNZ4eCogZ/st++0+fcC1nr0jiGUtAdBJ2qzmLQWSxbtz42pWt4QQMiZ9HvZf5cg== + dependencies: + normalize-path "^2.1.1" + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + +untildify@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" + integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== + +unzip-crx-3@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/unzip-crx-3/-/unzip-crx-3-0.2.0.tgz#d5324147b104a8aed9ae8639c95521f6f7cda292" + integrity sha512-0+JiUq/z7faJ6oifVB5nSwt589v1KCduqIJupNVDoWSXZtWDmjDGO3RAEOvwJ07w90aoXoP4enKsR7ecMrJtWQ== + dependencies: + jszip "^3.1.0" + mkdirp "^0.5.1" + yaku "^0.16.6" + +update-browserslist-db@^1.0.13: + version "1.0.13" + resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz" + integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +url-loader@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-4.1.1.tgz#28505e905cae158cf07c92ca622d7f237e70a4e2" + integrity sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA== + dependencies: + loader-utils "^2.0.0" + mime-types "^2.1.27" + schema-utils "^3.0.0" + +url-parse@^1.5.3: + version "1.5.10" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" + integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + +use-composed-ref@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.3.0.tgz" + integrity sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ== + +use-isomorphic-layout-effect@^1.1.1: + version "1.1.2" + resolved "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz" + integrity sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA== + +use-latest@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/use-latest/-/use-latest-1.2.1.tgz" + integrity sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw== + dependencies: + use-isomorphic-layout-effect "^1.1.1" + +use-sync-external-store@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz" + integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA== + +utf8-byte-length@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz#f45f150c4c66eee968186505ab93fcbb8ad6bf61" + integrity sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA== + +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +utila@~0.4: + version "0.4.0" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + integrity sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA== + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== + +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + +v8-to-istanbul@^9.0.1: + version "9.1.3" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.1.3.tgz#ea456604101cd18005ac2cae3cdd1aa058a6306b" + integrity sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg== dependencies: "@jridgewell/trace-mapping" "^0.3.12" "@types/istanbul-lib-coverage" "^2.0.1" - "convert-source-map" "^2.0.0" + convert-source-map "^2.0.0" -"vary@~1.1.2": - "integrity" "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" - "resolved" "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" - "version" "1.1.2" +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== -"verror@^1.10.0": - "integrity" "sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==" - "resolved" "https://registry.npmjs.org/verror/-/verror-1.10.1.tgz" - "version" "1.10.1" +verror@^1.10.0: + version "1.10.1" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.1.tgz#4bf09eeccf4563b109ed4b3d458380c972b0cdeb" + integrity sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg== dependencies: - "assert-plus" "^1.0.0" - "core-util-is" "1.0.2" - "extsprintf" "^1.2.0" + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" -"vite-plugin-svgr@^4.1.0": - "integrity" "sha512-v7Qic+FWmCChgQNGSI4V8X63OEYsdUoLt66iqIcHozq9bfK/Dwmr0V+LBy1NE8CE98Y8HouEBJ+pto4AMfN5xw==" - "resolved" "https://registry.npmjs.org/vite-plugin-svgr/-/vite-plugin-svgr-4.1.0.tgz" - "version" "4.1.0" +vite-plugin-svgr@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/vite-plugin-svgr/-/vite-plugin-svgr-4.1.0.tgz" + integrity sha512-v7Qic+FWmCChgQNGSI4V8X63OEYsdUoLt66iqIcHozq9bfK/Dwmr0V+LBy1NE8CE98Y8HouEBJ+pto4AMfN5xw== dependencies: "@rollup/pluginutils" "^5.0.4" "@svgr/core" "^8.1.0" "@svgr/plugin-jsx" "^8.1.0" -"vite@^2.6.0 || 3 || 4", "vite@4.4.11": - "integrity" "sha512-ksNZJlkcU9b0lBwAGZGGaZHCMqHsc8OpgtoYhsQ4/I2v5cnpmmmqe5pM4nv/4Hn6G/2GhTdj0DhZh2e+Er1q5A==" - "resolved" "https://registry.npmjs.org/vite/-/vite-4.4.11.tgz" - "version" "4.4.11" - dependencies: - "esbuild" "^0.18.10" - "postcss" "^8.4.27" - "rollup" "^3.27.1" - optionalDependencies: - "fsevents" "~2.3.2" - -"w3c-keyname@^2.2.4": - "integrity" "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==" - "resolved" "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz" - "version" "2.2.8" +w3c-keyname@^2.2.4: + version "2.2.8" + resolved "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz" + integrity sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ== -"w3c-xmlserializer@^4.0.0": - "integrity" "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==" - "resolved" "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz" - "version" "4.0.0" +w3c-xmlserializer@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz#aebdc84920d806222936e3cdce408e32488a3073" + integrity sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw== dependencies: - "xml-name-validator" "^4.0.0" + xml-name-validator "^4.0.0" -"walker@^1.0.7", "walker@^1.0.8": - "integrity" "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==" - "resolved" "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz" - "version" "1.0.8" +walker@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== dependencies: - "makeerror" "1.0.12" + makeerror "1.0.12" -"watchboy@^0.4.3": - "integrity" "sha512-GHs1HxwvxSMBsqd/WfTOZhj5gBdMqf5HQpfgtKxDfZRxrlYPDdVLRB61LCeRzJaWANmvSIMlfmRVDwVmJFgAKA==" - "resolved" "https://registry.npmjs.org/watchboy/-/watchboy-0.4.3.tgz" - "version" "0.4.3" +watchboy@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/watchboy/-/watchboy-0.4.3.tgz#4b766e7923d8122e5811a6b9736a8e3e5943838c" + integrity sha512-GHs1HxwvxSMBsqd/WfTOZhj5gBdMqf5HQpfgtKxDfZRxrlYPDdVLRB61LCeRzJaWANmvSIMlfmRVDwVmJFgAKA== dependencies: - "lodash.difference" "^4.5.0" - "micromatch" "^4.0.2" - "pify" "^4.0.1" - "unixify" "^1.0.0" + lodash.difference "^4.5.0" + micromatch "^4.0.2" + pify "^4.0.1" + unixify "^1.0.0" -"watchpack@^2.4.0": - "integrity" "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==" - "resolved" "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz" - "version" "2.4.0" +watchpack@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" + integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== dependencies: - "glob-to-regexp" "^0.4.1" - "graceful-fs" "^4.1.2" + glob-to-regexp "^0.4.1" + graceful-fs "^4.1.2" -"wbuf@^1.1.0", "wbuf@^1.7.3": - "integrity" "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==" - "resolved" "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz" - "version" "1.7.3" +wbuf@^1.1.0, wbuf@^1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== dependencies: - "minimalistic-assert" "^1.0.0" + minimalistic-assert "^1.0.0" -"wcwidth@^1.0.1": - "integrity" "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==" - "resolved" "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz" - "version" "1.0.1" +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== dependencies: - "defaults" "^1.0.3" + defaults "^1.0.3" -"webidl-conversions@^3.0.0": - "integrity" "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - "resolved" "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" - "version" "3.0.1" +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== -"webidl-conversions@^7.0.0": - "integrity" "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==" - "resolved" "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz" - "version" "7.0.0" +webidl-conversions@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" + integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== -"webpack-bundle-analyzer@^4.9.1": - "integrity" "sha512-jnd6EoYrf9yMxCyYDPj8eutJvtjQNp8PHmni/e/ulydHBWhT5J3menXt3HEkScsu9YqMAcG4CfFjs3rj5pVU1w==" - "resolved" "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.9.1.tgz" - "version" "4.9.1" +webpack-bundle-analyzer@^4.9.1: + version "4.9.1" + resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.9.1.tgz#d00bbf3f17500c10985084f22f1a2bf45cb2f09d" + integrity sha512-jnd6EoYrf9yMxCyYDPj8eutJvtjQNp8PHmni/e/ulydHBWhT5J3menXt3HEkScsu9YqMAcG4CfFjs3rj5pVU1w== dependencies: "@discoveryjs/json-ext" "0.5.7" - "acorn" "^8.0.4" - "acorn-walk" "^8.0.0" - "commander" "^7.2.0" - "escape-string-regexp" "^4.0.0" - "gzip-size" "^6.0.0" - "is-plain-object" "^5.0.0" - "lodash.debounce" "^4.0.8" - "lodash.escape" "^4.0.1" - "lodash.flatten" "^4.4.0" - "lodash.invokemap" "^4.6.0" - "lodash.pullall" "^4.2.0" - "lodash.uniqby" "^4.7.0" - "opener" "^1.5.2" - "picocolors" "^1.0.0" - "sirv" "^2.0.3" - "ws" "^7.3.1" - -"webpack-cli@^5.1.4", "webpack-cli@5.x.x": - "integrity" "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==" - "resolved" "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz" - "version" "5.1.4" + acorn "^8.0.4" + acorn-walk "^8.0.0" + commander "^7.2.0" + escape-string-regexp "^4.0.0" + gzip-size "^6.0.0" + is-plain-object "^5.0.0" + lodash.debounce "^4.0.8" + lodash.escape "^4.0.1" + lodash.flatten "^4.4.0" + lodash.invokemap "^4.6.0" + lodash.pullall "^4.2.0" + lodash.uniqby "^4.7.0" + opener "^1.5.2" + picocolors "^1.0.0" + sirv "^2.0.3" + ws "^7.3.1" + +webpack-cli@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-5.1.4.tgz#c8e046ba7eaae4911d7e71e2b25b776fcc35759b" + integrity sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg== dependencies: "@discoveryjs/json-ext" "^0.5.0" "@webpack-cli/configtest" "^2.1.1" "@webpack-cli/info" "^2.0.2" "@webpack-cli/serve" "^2.0.5" - "colorette" "^2.0.14" - "commander" "^10.0.1" - "cross-spawn" "^7.0.3" - "envinfo" "^7.7.3" - "fastest-levenshtein" "^1.0.12" - "import-local" "^3.0.2" - "interpret" "^3.1.1" - "rechoir" "^0.8.0" - "webpack-merge" "^5.7.3" - -"webpack-dev-middleware@^5.3.1": - "integrity" "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==" - "resolved" "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz" - "version" "5.3.3" - dependencies: - "colorette" "^2.0.10" - "memfs" "^3.4.3" - "mime-types" "^2.1.31" - "range-parser" "^1.2.1" - "schema-utils" "^4.0.0" - -"webpack-dev-server@^4.15.1", "webpack-dev-server@3.x || 4.x": - "integrity" "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==" - "resolved" "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz" - "version" "4.15.1" + colorette "^2.0.14" + commander "^10.0.1" + cross-spawn "^7.0.3" + envinfo "^7.7.3" + fastest-levenshtein "^1.0.12" + import-local "^3.0.2" + interpret "^3.1.1" + rechoir "^0.8.0" + webpack-merge "^5.7.3" + +webpack-dev-middleware@^5.3.1: + version "5.3.3" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz#efae67c2793908e7311f1d9b06f2a08dcc97e51f" + integrity sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA== + dependencies: + colorette "^2.0.10" + memfs "^3.4.3" + mime-types "^2.1.31" + range-parser "^1.2.1" + schema-utils "^4.0.0" + +webpack-dev-server@^4.15.1: + version "4.15.1" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz#8944b29c12760b3a45bdaa70799b17cb91b03df7" + integrity sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA== dependencies: "@types/bonjour" "^3.5.9" "@types/connect-history-api-fallback" "^1.3.5" @@ -11581,333 +11020,329 @@ "@types/serve-static" "^1.13.10" "@types/sockjs" "^0.3.33" "@types/ws" "^8.5.5" - "ansi-html-community" "^0.0.8" - "bonjour-service" "^1.0.11" - "chokidar" "^3.5.3" - "colorette" "^2.0.10" - "compression" "^1.7.4" - "connect-history-api-fallback" "^2.0.0" - "default-gateway" "^6.0.3" - "express" "^4.17.3" - "graceful-fs" "^4.2.6" - "html-entities" "^2.3.2" - "http-proxy-middleware" "^2.0.3" - "ipaddr.js" "^2.0.1" - "launch-editor" "^2.6.0" - "open" "^8.0.9" - "p-retry" "^4.5.0" - "rimraf" "^3.0.2" - "schema-utils" "^4.0.0" - "selfsigned" "^2.1.1" - "serve-index" "^1.9.1" - "sockjs" "^0.3.24" - "spdy" "^4.0.2" - "webpack-dev-middleware" "^5.3.1" - "ws" "^8.13.0" - -"webpack-merge@^5.7.3", "webpack-merge@^5.9.0": - "integrity" "sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg==" - "resolved" "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.9.0.tgz" - "version" "5.9.0" - dependencies: - "clone-deep" "^4.0.1" - "wildcard" "^2.0.0" - -"webpack-sources@^3.2.3": - "integrity" "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==" - "resolved" "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz" - "version" "3.2.3" - -"webpack@^4.0.0 || ^5.0.0", "webpack@^4.37.0 || ^5.0.0", "webpack@^5", "webpack@^5.0.0", "webpack@^5.1.0", "webpack@^5.20.0", "webpack@^5.88.2", "webpack@>=1.11.0", "webpack@>=4.43.0 <6.0.0", "webpack@5.x.x": - "integrity" "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==" - "resolved" "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz" - "version" "5.88.2" + ansi-html-community "^0.0.8" + bonjour-service "^1.0.11" + chokidar "^3.5.3" + colorette "^2.0.10" + compression "^1.7.4" + connect-history-api-fallback "^2.0.0" + default-gateway "^6.0.3" + express "^4.17.3" + graceful-fs "^4.2.6" + html-entities "^2.3.2" + http-proxy-middleware "^2.0.3" + ipaddr.js "^2.0.1" + launch-editor "^2.6.0" + open "^8.0.9" + p-retry "^4.5.0" + rimraf "^3.0.2" + schema-utils "^4.0.0" + selfsigned "^2.1.1" + serve-index "^1.9.1" + sockjs "^0.3.24" + spdy "^4.0.2" + webpack-dev-middleware "^5.3.1" + ws "^8.13.0" + +webpack-merge@^5.7.3, webpack-merge@^5.9.0: + version "5.10.0" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.10.0.tgz#a3ad5d773241e9c682803abf628d4cd62b8a4177" + integrity sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA== + dependencies: + clone-deep "^4.0.1" + flat "^5.0.2" + wildcard "^2.0.0" + +webpack-sources@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" + integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== + +webpack@^5, webpack@^5.88.2: + version "5.89.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.89.0.tgz#56b8bf9a34356e93a6625770006490bf3a7f32dc" + integrity sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw== dependencies: "@types/eslint-scope" "^3.7.3" "@types/estree" "^1.0.0" "@webassemblyjs/ast" "^1.11.5" "@webassemblyjs/wasm-edit" "^1.11.5" "@webassemblyjs/wasm-parser" "^1.11.5" - "acorn" "^8.7.1" - "acorn-import-assertions" "^1.9.0" - "browserslist" "^4.14.5" - "chrome-trace-event" "^1.0.2" - "enhanced-resolve" "^5.15.0" - "es-module-lexer" "^1.2.1" - "eslint-scope" "5.1.1" - "events" "^3.2.0" - "glob-to-regexp" "^0.4.1" - "graceful-fs" "^4.2.9" - "json-parse-even-better-errors" "^2.3.1" - "loader-runner" "^4.2.0" - "mime-types" "^2.1.27" - "neo-async" "^2.6.2" - "schema-utils" "^3.2.0" - "tapable" "^2.1.1" - "terser-webpack-plugin" "^5.3.7" - "watchpack" "^2.4.0" - "webpack-sources" "^3.2.3" - -"websocket-driver@^0.7.4", "websocket-driver@>=0.5.1": - "integrity" "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==" - "resolved" "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz" - "version" "0.7.4" - dependencies: - "http-parser-js" ">=0.5.1" - "safe-buffer" ">=5.1.0" - "websocket-extensions" ">=0.1.1" - -"websocket-extensions@>=0.1.1": - "integrity" "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==" - "resolved" "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz" - "version" "0.1.4" - -"whatwg-encoding@^2.0.0": - "integrity" "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==" - "resolved" "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "iconv-lite" "0.6.3" - -"whatwg-mimetype@^3.0.0": - "integrity" "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==" - "resolved" "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz" - "version" "3.0.0" - -"whatwg-url@^11.0.0": - "integrity" "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==" - "resolved" "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz" - "version" "11.0.0" - dependencies: - "tr46" "^3.0.0" - "webidl-conversions" "^7.0.0" - -"whatwg-url@^5.0.0": - "integrity" "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==" - "resolved" "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "tr46" "~0.0.3" - "webidl-conversions" "^3.0.0" - -"which-boxed-primitive@^1.0.2": - "integrity" "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==" - "resolved" "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "is-bigint" "^1.0.1" - "is-boolean-object" "^1.1.0" - "is-number-object" "^1.0.4" - "is-string" "^1.0.5" - "is-symbol" "^1.0.3" - -"which-builtin-type@^1.1.3": - "integrity" "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==" - "resolved" "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz" - "version" "1.1.3" - dependencies: - "function.prototype.name" "^1.1.5" - "has-tostringtag" "^1.0.0" - "is-async-function" "^2.0.0" - "is-date-object" "^1.0.5" - "is-finalizationregistry" "^1.0.2" - "is-generator-function" "^1.0.10" - "is-regex" "^1.1.4" - "is-weakref" "^1.0.2" - "isarray" "^2.0.5" - "which-boxed-primitive" "^1.0.2" - "which-collection" "^1.0.1" - "which-typed-array" "^1.1.9" - -"which-collection@^1.0.1": - "integrity" "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==" - "resolved" "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "is-map" "^2.0.1" - "is-set" "^2.0.1" - "is-weakmap" "^2.0.1" - "is-weakset" "^2.0.1" - -"which-typed-array@^1.1.11", "which-typed-array@^1.1.9": - "integrity" "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==" - "resolved" "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz" - "version" "1.1.11" - dependencies: - "available-typed-arrays" "^1.0.5" - "call-bind" "^1.0.2" - "for-each" "^0.3.3" - "gopd" "^1.0.1" - "has-tostringtag" "^1.0.0" - -"which@^2.0.1", "which@^2.0.2": - "integrity" "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==" - "resolved" "https://registry.npmjs.org/which/-/which-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "isexe" "^2.0.0" - -"wide-align@^1.1.5": - "integrity" "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==" - "resolved" "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz" - "version" "1.1.5" - dependencies: - "string-width" "^1.0.2 || 2 || 3 || 4" - -"wildcard@^2.0.0": - "integrity" "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==" - "resolved" "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz" - "version" "2.0.1" + acorn "^8.7.1" + acorn-import-assertions "^1.9.0" + browserslist "^4.14.5" + chrome-trace-event "^1.0.2" + enhanced-resolve "^5.15.0" + es-module-lexer "^1.2.1" + eslint-scope "5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.9" + json-parse-even-better-errors "^2.3.1" + loader-runner "^4.2.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^3.2.0" + tapable "^2.1.1" + terser-webpack-plugin "^5.3.7" + watchpack "^2.4.0" + webpack-sources "^3.2.3" + +websocket-driver@>=0.5.1, websocket-driver@^0.7.4: + version "0.7.4" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== + dependencies: + http-parser-js ">=0.5.1" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.4" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" + integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== + +whatwg-encoding@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz#e7635f597fd87020858626805a2729fa7698ac53" + integrity sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg== + dependencies: + iconv-lite "0.6.3" + +whatwg-mimetype@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7" + integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q== + +whatwg-url@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-11.0.0.tgz#0a849eebb5faf2119b901bb76fd795c2848d4018" + integrity sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ== + dependencies: + tr46 "^3.0.0" + webidl-conversions "^7.0.0" + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +which-builtin-type@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.1.3.tgz#b1b8443707cc58b6e9bf98d32110ff0c2cbd029b" + integrity sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw== + dependencies: + function.prototype.name "^1.1.5" + has-tostringtag "^1.0.0" + is-async-function "^2.0.0" + is-date-object "^1.0.5" + is-finalizationregistry "^1.0.2" + is-generator-function "^1.0.10" + is-regex "^1.1.4" + is-weakref "^1.0.2" + isarray "^2.0.5" + which-boxed-primitive "^1.0.2" + which-collection "^1.0.1" + which-typed-array "^1.1.9" + +which-collection@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" + integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== + dependencies: + is-map "^2.0.1" + is-set "^2.0.1" + is-weakmap "^2.0.1" + is-weakset "^2.0.1" + +which-typed-array@^1.1.11, which-typed-array@^1.1.9: + version "1.1.11" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a" + integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + +which@^2.0.1, which@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wide-align@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" + integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== + dependencies: + string-width "^1.0.2 || 2 || 3 || 4" + +wildcard@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.1.tgz#5ab10d02487198954836b6349f74fff961e10f67" + integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": - "integrity" "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==" - "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" - "version" "7.0.0" - dependencies: - "ansi-styles" "^4.0.0" - "string-width" "^4.1.0" - "strip-ansi" "^6.0.0" - -"wrap-ansi@^6.2.0": - "integrity" "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==" - "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz" - "version" "6.2.0" - dependencies: - "ansi-styles" "^4.0.0" - "string-width" "^4.1.0" - "strip-ansi" "^6.0.0" - -"wrap-ansi@^7.0.0": - "integrity" "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==" - "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" - "version" "7.0.0" - dependencies: - "ansi-styles" "^4.0.0" - "string-width" "^4.1.0" - "strip-ansi" "^6.0.0" - -"wrap-ansi@^8.1.0": - "integrity" "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==" - "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz" - "version" "8.1.0" - dependencies: - "ansi-styles" "^6.1.0" - "string-width" "^5.0.1" - "strip-ansi" "^7.0.1" - -"wrappy@1": - "integrity" "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - "resolved" "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - "version" "1.0.2" - -"write-file-atomic@^4.0.2": - "integrity" "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==" - "resolved" "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz" - "version" "4.0.2" - dependencies: - "imurmurhash" "^0.1.4" - "signal-exit" "^3.0.7" - -"ws@^7.3.1": - "integrity" "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==" - "resolved" "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz" - "version" "7.5.9" - -"ws@^8.11.0", "ws@^8.13.0": - "integrity" "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==" - "resolved" "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz" - "version" "8.14.2" - -"xml-name-validator@^4.0.0": - "integrity" "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==" - "resolved" "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz" - "version" "4.0.0" - -"xmlbuilder@^15.1.1", "xmlbuilder@>=11.0.1": - "integrity" "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==" - "resolved" "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz" - "version" "15.1.1" - -"xmlchars@^2.2.0": - "integrity" "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" - "resolved" "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz" - "version" "2.2.0" - -"y18n@^5.0.5": - "integrity" "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" - "resolved" "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" - "version" "5.0.8" - -"yaku@^0.16.6": - "integrity" "sha512-Syu3IB3rZvKvYk7yTiyl1bo/jiEFaaStrgv1V2TIJTqYPStSMQVO8EQjg/z+DRzLq/4LIIharNT3iH1hylEIRw==" - "resolved" "https://registry.npmjs.org/yaku/-/yaku-0.16.7.tgz" - "version" "0.16.7" - -"yallist@^3.0.2": - "integrity" "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - "resolved" "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" - "version" "3.1.1" - -"yallist@^4.0.0": - "integrity" "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - "resolved" "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" - "version" "4.0.0" - -"yaml@^1.10.0", "yaml@^1.10.2": - "integrity" "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" - "resolved" "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" - "version" "1.10.2" - -"yargs-parser@^21.0.1": - "integrity" "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" - "resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" - "version" "21.1.1" - -"yargs-parser@^21.1.1": - "integrity" "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" - "resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" - "version" "21.1.1" - -"yargs@^17.0.1", "yargs@^17.3.1", "yargs@^17.6.2", "yargs@^17.7.2": - "integrity" "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==" - "resolved" "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz" - "version" "17.7.2" - dependencies: - "cliui" "^8.0.1" - "escalade" "^3.1.1" - "get-caller-file" "^2.0.5" - "require-directory" "^2.1.1" - "string-width" "^4.2.3" - "y18n" "^5.0.5" - "yargs-parser" "^21.1.1" - -"yauzl@^2.10.0": - "integrity" "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==" - "resolved" "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz" - "version" "2.10.0" - dependencies: - "buffer-crc32" "~0.2.3" - "fd-slicer" "~1.1.0" - -"yn@3.1.1": - "integrity" "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==" - "resolved" "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz" - "version" "3.1.1" - -"yocto-queue@^0.1.0": - "integrity" "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" - "resolved" "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" - "version" "0.1.0" - -"yup@^0.32.11": - "integrity" "sha512-Z2Fe1bn+eLstG8DRR6FTavGD+MeAwyfmouhHsIUgaADz8jvFKbO/fXc2trJKZg+5EBjh4gGm3iU/t3onKlXHIg==" - "resolved" "https://registry.npmjs.org/yup/-/yup-0.32.11.tgz" - "version" "0.32.11" + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: + 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" + +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +write-file-atomic@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" + integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^3.0.7" + +ws@^7.3.1: + version "7.5.9" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" + integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== + +ws@^8.11.0, ws@^8.13.0: + version "8.14.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.14.2.tgz#6c249a806eb2db7a20d26d51e7709eab7b2e6c7f" + integrity sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g== + +xml-name-validator@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835" + integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== + +xmlbuilder@>=11.0.1, xmlbuilder@^15.1.1: + version "15.1.1" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-15.1.1.tgz#9dcdce49eea66d8d10b42cae94a79c3c8d0c2ec5" + integrity sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg== + +xmlchars@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yaku@^0.16.6: + version "0.16.7" + resolved "https://registry.yarnpkg.com/yaku/-/yaku-0.16.7.tgz#1d195c78aa9b5bf8479c895b9504fd4f0847984e" + integrity sha512-Syu3IB3rZvKvYk7yTiyl1bo/jiEFaaStrgv1V2TIJTqYPStSMQVO8EQjg/z+DRzLq/4LIIharNT3iH1hylEIRw== + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^1.10.2: + version "1.10.2" + resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + +yargs-parser@^21.0.1, yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs@^17.0.1, yargs@^17.3.1, yargs@^17.6.2, yargs@^17.7.2: + version "17.7.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + +yauzl@^2.10.0: + version "2.10.0" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" + integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== + dependencies: + buffer-crc32 "~0.2.3" + fd-slicer "~1.1.0" + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +yup@^0.32.11: + version "0.32.11" + resolved "https://registry.npmjs.org/yup/-/yup-0.32.11.tgz" + integrity sha512-Z2Fe1bn+eLstG8DRR6FTavGD+MeAwyfmouhHsIUgaADz8jvFKbO/fXc2trJKZg+5EBjh4gGm3iU/t3onKlXHIg== dependencies: "@babel/runtime" "^7.15.4" "@types/lodash" "^4.14.175" - "lodash" "^4.17.21" - "lodash-es" "^4.17.21" - "nanoclone" "^0.2.1" - "property-expr" "^2.0.4" - "toposort" "^2.0.2" + lodash "^4.17.21" + lodash-es "^4.17.21" + nanoclone "^0.2.1" + property-expr "^2.0.4" + toposort "^2.0.2" From 20b2129acaf56d16cd67dede9a26d71eedcd59e6 Mon Sep 17 00:00:00 2001 From: Bart Date: Mon, 16 Oct 2023 13:29:11 +0200 Subject: [PATCH 020/100] remove demo app, add sample communication with ipc --- apps/demo-app/package.json | 22 - apps/demo-app/src/main.ts | 132 - apps/demo-app/tsconfig.json | 8 - packages/ui/package.json | 8 +- .../accounts/AccountAvatar/AccountAvatar.tsx | 11 +- .../AccountDetails/AccountDetails.tsx | 2 +- packages/ui/src/accounts/api.ts | 18 + .../src/blocks/BlockDetails/BlockDetails.tsx | 6 +- .../FlowserUsageRequirements.tsx | 2 +- packages/ui/src/common/misc/Label/Label.tsx | 3 +- packages/ui/src/common/misc/Value/Value.tsx | 12 +- ...-api.context.tsx => api-hooks.context.tsx} | 24 +- packages/ui/src/contexts/flow.context.tsx | 4 +- packages/ui/src/contexts/projects.context.tsx | 2 +- .../src/contexts/service-registry.context.tsx | 22 +- .../ui/src/contexts/snapshots.context.tsx | 2 +- .../ContractDetails/ContractDetails.tsx | 2 +- .../src/events/EventDetails/EventDetails.tsx | 4 +- packages/ui/src/hooks/use-analytics.ts | 34 +- .../InteractionHistory/InteractionHistory.tsx | 21 +- .../InteractionLabel/InteractionLabel.tsx | 2 +- .../InteractionOutcomeDisplay.tsx | 2 +- .../AddressBuilder/AddressBuilder.tsx | 2 +- .../contexts/definition.context.tsx | 2 +- .../contexts/templates.context.tsx | 2 +- packages/ui/src/logs/Logs.tsx | 4 +- .../ProjectListPage/ProjectListPage.tsx | 2 +- .../ProjectSettings/ProjectSettings.tsx | 2 +- .../TransactionDetails/TransactionDetails.tsx | 2 +- .../TransactionDetailsTabs.tsx | 2 +- yarn.lock | 2183 ++++++++--------- 31 files changed, 1187 insertions(+), 1357 deletions(-) delete mode 100644 apps/demo-app/package.json delete mode 100644 apps/demo-app/src/main.ts delete mode 100644 apps/demo-app/tsconfig.json create mode 100644 packages/ui/src/accounts/api.ts rename packages/ui/src/contexts/{flowser-api.context.tsx => api-hooks.context.tsx} (84%) diff --git a/apps/demo-app/package.json b/apps/demo-app/package.json deleted file mode 100644 index 56092be2d..000000000 --- a/apps/demo-app/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "@onflowser/demo-app", - "version": "1.0.0", - "description": "", - "types": "./src/index.ts", - "scripts": { - "build": "tsc" - }, - "keywords": [], - "author": "", - "license": "ISC", - "dependencies": { - "@onflowser/config": "*", - "@onflowser/nodejs": "*", - "@onflowser/core": "*", - "@onflowser/api": "*" - }, - "devDependencies": { - "@types/node": "^16.11.6", - "typescript": "^4.3.5" - } -} diff --git a/apps/demo-app/src/main.ts b/apps/demo-app/src/main.ts deleted file mode 100644 index f2602c619..000000000 --- a/apps/demo-app/src/main.ts +++ /dev/null @@ -1,132 +0,0 @@ -import { - FlowIndexerService, - InMemoryIndex, - FlowGatewayService, - FlowAccountStorageService, - waitForMs, -} from "@onflowser/core"; -import * as flowserResource from "@onflowser/api"; -import { - AsyncIntervalScheduler, - FlowInteractionsService, - GoBindingsService, -} from "@onflowser/nodejs"; - -const flowGatewayService = new FlowGatewayService(); - -flowGatewayService.configure({ - restServerAddress: "http://localhost:8888", - flowJSON: { - contracts: { - ExampleNFT: "cadence/contracts/exampleNFT/ExampleNFT.cdc", - FungibleToken: { - source: "", - aliases: { - emulator: "ee82856bf20e2aa6", - }, - }, - MetadataViews: { - source: "", - aliases: { - emulator: "f8d6e0586b0a20c7", - }, - }, - NonFungibleToken: { - source: "", - aliases: { - emulator: "f8d6e0586b0a20c7", - }, - }, - ViewResolver: "cadence/contracts/standards/ViewResolver.cdc", - }, - networks: { - emulator: "127.0.0.1:3569", - mainnet: "access.mainnet.nodes.onflow.org:9000", - sandboxnet: "access.sandboxnet.nodes.onflow.org:9000", - testnet: "access.devnet.nodes.onflow.org:9000", - }, - accounts: { - default: { - address: "f669cb8d41ce0c74", - key: "2e09fac1b3b8e128c67b2e57ba59ec8506ff8326053812135a954b4d3291096f", - }, - "emulator-account": { - address: "f8d6e0586b0a20c7", - key: "d2c3686da84d61c13627bdf2127866fe358165734f5470be792e6771901d2856", - }, - exampleNFT: { - address: "192440c99cb17282", - key: "58cfc56dcbbfa8bfb7b9898586793b0710dfebe8a0358774044968abc9acc8c2", - }, - standards: { - address: "fd43f9148d4b725d", - key: "28946711cc802634ca4520c0f8b113e065c519dc02306a05ecb204a896ee80ed", - }, - "0x01cf0e2f2f715450": { - address: "0x01cf0e2f2f715450", - key: "95b367208187ecc83a3e6c9aba61ad0edc00af3e0d678c60b39fe13ccfc5d75b", - }, - "0x179b6b1cb6755e31": { - address: "0x179b6b1cb6755e31", - key: "f1f066337d4e853311807fd94bed599739d7cede8c6e6585414703eb0e0345ed", - }, - }, - deployments: { - emulator: { - default: [], - exampleNFT: ["ExampleNFT"], - standards: ["ViewResolver"], - }, - }, - }, -}); - -const flowAccountStorageService = new FlowAccountStorageService( - flowGatewayService -); -const goBindingsService = new GoBindingsService(); -const flowInteractionsService = new FlowInteractionsService(goBindingsService); - -const indexes = { - transaction: new InMemoryIndex(), - block: new InMemoryIndex(), - account: new InMemoryIndex(), - event: new InMemoryIndex(), - contract: new InMemoryIndex(), - accountStorage: new InMemoryIndex(), -}; - -const indexer = new FlowIndexerService( - indexes.transaction, - indexes.account, - indexes.block, - indexes.event, - indexes.contract, - indexes.accountStorage, - flowAccountStorageService, - flowGatewayService, - flowInteractionsService -); - -const scheduler = new AsyncIntervalScheduler({ - name: "Blockchain processing", - pollingIntervalInMs: 500, - functionToExecute: () => indexer.processBlockchainData(), -}); - -scheduler.start(); - -(async function () { - while (true) { - await waitForMs(1000); - const map = await Promise.all( - Object.keys(indexes).map(async (key: any) => [ - key, - (await (indexes as any)[key].findAll()).length, - ]) - ); - // @ts-ignore - const countLookup = new Map(map); - console.log(countLookup); - } -})(); diff --git a/apps/demo-app/tsconfig.json b/apps/demo-app/tsconfig.json deleted file mode 100644 index 52bcf60e1..000000000 --- a/apps/demo-app/tsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "@onflowser/config/tsconfig.json", - "include": ["src"], - "exclude": ["dist", "build", "node_modules"], - "compilerOptions": { - "outDir": "./dist", - } -} diff --git a/packages/ui/package.json b/packages/ui/package.json index 6112aed44..f3d669f5e 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -15,7 +15,10 @@ }, "peerDependencies": { "react": "^18.2.0", - "react-dom": "^18.2.0" + "react-dom": "^18.2.0", + "react-router-dom": "6.15.0", + "swr": "^2.2.4", + "react-hot-toast": "^2.4.1" }, "dependencies": { "yup": "^0.32.11", @@ -35,12 +38,9 @@ "dateformat": "^5.0.3", "mixpanel-browser": "^2.47.0", "react-helmet": "^6.1.0", - "react-hot-toast": "^2.4.1", "react-icons": "^4.11.0", "react-json-view": "^1.21.3", - "react-router-dom": "6.15.0", "react-timeago": "^7.2.0", - "swr": "^2.2.4", "reactjs-popup": "2.0.5" } } diff --git a/packages/ui/src/accounts/AccountAvatar/AccountAvatar.tsx b/packages/ui/src/accounts/AccountAvatar/AccountAvatar.tsx index 4a56a200d..5d2facae9 100644 --- a/packages/ui/src/accounts/AccountAvatar/AccountAvatar.tsx +++ b/packages/ui/src/accounts/AccountAvatar/AccountAvatar.tsx @@ -19,7 +19,7 @@ import avatar14 from "./avatars/14.jpg"; import avatar15 from "./avatars/15.jpg"; import avatar16 from "./avatars/16.jpg"; import { Spinner } from "../../common/loaders/Spinner/Spinner"; -import { useFlowserHooksApi } from "../../contexts/flowser-api.context"; +import { useGetAddressIndex } from "../api"; const avatarUrls = [ avatar1, @@ -51,8 +51,7 @@ export function AccountAvatar({ address, className, }: AccountAvatarProps): ReactElement | null { - const api = useFlowserHooksApi(); - const { data } = api.useGetAddressIndex({ + const { data: addressIndex } = useGetAddressIndex({ address, chainId: "flow-emulator", }); @@ -67,12 +66,12 @@ export function AccountAvatar({ return service; } - if (!data) { + if (addressIndex === undefined) { return undefined; } - return avatarUrls[data.index % avatarUrls.length]; - }, [data]); + return avatarUrls[addressIndex % avatarUrls.length]; + }, [addressIndex]); if (avatarUrl === undefined) { return ; diff --git a/packages/ui/src/accounts/AccountDetails/AccountDetails.tsx b/packages/ui/src/accounts/AccountDetails/AccountDetails.tsx index 9af43b70a..fef27de4b 100644 --- a/packages/ui/src/accounts/AccountDetails/AccountDetails.tsx +++ b/packages/ui/src/accounts/AccountDetails/AccountDetails.tsx @@ -1,7 +1,7 @@ import React, { FunctionComponent } from "react"; import classes from "./AccountDetails.module.scss"; import FullScreenLoading from "../../common/loaders/FullScreenLoading/FullScreenLoading"; -import { useFlowserHooksApi } from "../../contexts/flowser-api.context"; +import { useFlowserHooksApi } from "../../contexts/api-hooks.context"; import { DetailsCard, DetailsCardColumn, diff --git a/packages/ui/src/accounts/api.ts b/packages/ui/src/accounts/api.ts new file mode 100644 index 000000000..8311470ea --- /dev/null +++ b/packages/ui/src/accounts/api.ts @@ -0,0 +1,18 @@ +import useSWR, { SWRResponse } from "swr"; +import { FlowAccount } from "@onflowser/api"; +import { useServiceRegistry } from "../contexts/service-registry.context"; + +export function useGetAccounts(): SWRResponse { + const { accountIndex } = useServiceRegistry(); + return useSWR("accounts", () => accountIndex.findAll(), { + refreshInterval: 1000, + }); +} + +export function useGetAddressIndex(options: { + address: string; + chainId: "flow-emulator"; +}): SWRResponse { + // TODO(restructure): Implement + return useSWR("account-index", () => 0) +} diff --git a/packages/ui/src/blocks/BlockDetails/BlockDetails.tsx b/packages/ui/src/blocks/BlockDetails/BlockDetails.tsx index 79c5d93ce..bd93078be 100644 --- a/packages/ui/src/blocks/BlockDetails/BlockDetails.tsx +++ b/packages/ui/src/blocks/BlockDetails/BlockDetails.tsx @@ -1,9 +1,7 @@ import React, { FunctionComponent } from "react"; import classes from "./BlockDetails.module.scss"; import FullScreenLoading from "../../common/loaders/FullScreenLoading/FullScreenLoading"; -import { - useFlowserHooksApi, -} from '../../contexts/flowser-api.context'; +import { useFlowserHooksApi } from "../../contexts/api-hooks.context"; import { FlowUtils } from "../../utils/flow-utils"; import { DetailsCard, @@ -20,7 +18,7 @@ type BlockDetailsProps = { }; export const BlockDetails: FunctionComponent = (props) => { - const api = useFlowserHooksApi() + const api = useFlowserHooksApi(); const { isLoading, data: block } = api.useGetBlock(props.blockId); const { data: transactions } = api.useGetTransactionsByBlock(props.blockId); diff --git a/packages/ui/src/common/misc/FlowserUsageRequirements/FlowserUsageRequirements.tsx b/packages/ui/src/common/misc/FlowserUsageRequirements/FlowserUsageRequirements.tsx index b10d8535d..a95c62a60 100644 --- a/packages/ui/src/common/misc/FlowserUsageRequirements/FlowserUsageRequirements.tsx +++ b/packages/ui/src/common/misc/FlowserUsageRequirements/FlowserUsageRequirements.tsx @@ -1,6 +1,6 @@ import React from "react"; import { ActionDialog } from "../../overlays/dialogs/action/ActionDialog"; -import { useFlowserHooksApi } from "../../../contexts/flowser-api.context"; +import { useFlowserHooksApi } from "../../../contexts/api-hooks.context"; import { ReactElement } from "react"; import classes from "./FlowserUsageRequirements.module.scss"; import { diff --git a/packages/ui/src/common/misc/Label/Label.tsx b/packages/ui/src/common/misc/Label/Label.tsx index 9559d1b76..5a94500f5 100644 --- a/packages/ui/src/common/misc/Label/Label.tsx +++ b/packages/ui/src/common/misc/Label/Label.tsx @@ -1,4 +1,4 @@ -import React, { FunctionComponent } from "react"; +import React, { FunctionComponent, ReactNode } from "react"; import classes from "./Label.module.scss"; import classNames from "classnames"; @@ -6,6 +6,7 @@ type LabelProps = { className?: string; variant?: "small" | "normal" | "medium" | "large" | "xlarge"; title?: string; + children: ReactNode; }; const Label: FunctionComponent = ({ diff --git a/packages/ui/src/common/misc/Value/Value.tsx b/packages/ui/src/common/misc/Value/Value.tsx index 94d396ae7..ca8d60bf4 100644 --- a/packages/ui/src/common/misc/Value/Value.tsx +++ b/packages/ui/src/common/misc/Value/Value.tsx @@ -1,4 +1,4 @@ -import React, { CSSProperties, FunctionComponent } from "react"; +import React, { CSSProperties, ReactNode } from "react"; import classes from "./Value.module.scss"; import classNames from "classnames"; @@ -8,14 +8,10 @@ type ValueProps = { className?: string; style?: CSSProperties; variant?: ValueVariant; + children: ReactNode; }; -const Value: FunctionComponent = ({ - children, - className, - style, - variant = "normal", -}) => { +function Value({ children, className, style, variant = "normal" }: ValueProps) { return ( = ({ {children} ); -}; +} function getClassForVariant(variant: ValueVariant) { switch (variant) { diff --git a/packages/ui/src/contexts/flowser-api.context.tsx b/packages/ui/src/contexts/api-hooks.context.tsx similarity index 84% rename from packages/ui/src/contexts/flowser-api.context.tsx rename to packages/ui/src/contexts/api-hooks.context.tsx index 1df05a28c..7cdeaf52b 100644 --- a/packages/ui/src/contexts/flowser-api.context.tsx +++ b/packages/ui/src/contexts/api-hooks.context.tsx @@ -1,4 +1,4 @@ -import { createContext, useContext } from "react"; +import { createContext, ReactNode, useContext } from "react"; import { InteractionDefinition } from "../interactions/core/core-types"; import { SWRResponse } from "swr"; import { @@ -14,8 +14,9 @@ import { FlowStateSnapshot, FlowTransaction, InteractionTemplate, - ManagedProcessOutput, ParsedInteractionOrError -} from '@onflowser/api'; + ManagedProcessOutput, + ParsedInteractionOrError, +} from "@onflowser/api"; type FlowserHooksApi = { useGetAccounts(): SWRResponse; @@ -49,10 +50,6 @@ type FlowserHooksApi = { request: InteractionDefinition ): SWRResponse; useGetFlowCliInfo(): SWRResponse; - useGetAddressIndex(options: { - address: string; - chainId: "flow-emulator"; - }): SWRResponse; useGetFlowJson(): SWRResponse; }; @@ -60,6 +57,19 @@ const FlowserHooksApiContext = createContext( undefined as never ); +type FlowserHooksApiProviderProps = { + children: ReactNode; + hooks: FlowserHooksApi; +}; + +export function FlowserHooksApiProvider(props: FlowserHooksApiProviderProps) { + return ( + + {props.children} + + ); +} + export function useFlowserHooksApi() { const context = useContext(FlowserHooksApiContext); diff --git a/packages/ui/src/contexts/flow.context.tsx b/packages/ui/src/contexts/flow.context.tsx index b19fe2094..66a529efd 100644 --- a/packages/ui/src/contexts/flow.context.tsx +++ b/packages/ui/src/contexts/flow.context.tsx @@ -1,5 +1,5 @@ import React, { createContext, ReactElement, useEffect } from "react"; -import { useFlowserHooksApi } from './flowser-api.context'; +import { useFlowserHooksApi } from "./api-hooks.context"; import * as fcl from "@onflow/fcl"; import { useProjectManager } from "./projects.context"; @@ -13,7 +13,7 @@ export function FlowConfigProvider({ }: { children: ReactElement; }): ReactElement { - const api = useFlowserHooksApi() + const api = useFlowserHooksApi(); const { currentProject } = useProjectManager(); const { data: flowJSON } = api.useGetFlowJson(); diff --git a/packages/ui/src/contexts/projects.context.tsx b/packages/ui/src/contexts/projects.context.tsx index 894cd6749..9dfe6b7cb 100644 --- a/packages/ui/src/contexts/projects.context.tsx +++ b/packages/ui/src/contexts/projects.context.tsx @@ -1,7 +1,7 @@ import React, { createContext, ReactElement, useContext } from "react"; import toast from "react-hot-toast"; import { useConfirmDialog } from "./confirm-dialog.context"; -import { useFlowserHooksApi } from "./flowser-api.context"; +import { useFlowserHooksApi } from "./api-hooks.context"; import { AnalyticEvent, useAnalytics } from "../hooks/use-analytics"; import { useNavigate } from "react-router-dom"; import { Helmet } from "react-helmet"; diff --git a/packages/ui/src/contexts/service-registry.context.tsx b/packages/ui/src/contexts/service-registry.context.tsx index 8084a4d3f..89d15e74b 100644 --- a/packages/ui/src/contexts/service-registry.context.tsx +++ b/packages/ui/src/contexts/service-registry.context.tsx @@ -1,5 +1,9 @@ -import { createContext, useContext } from "react"; -import { FlowserProject } from "@onflowser/api"; +import { createContext, ReactNode, useContext } from "react"; +import { + FlowAccount, + FlowserProject, + IResourceIndexReader +} from '@onflowser/api'; interface IWalletService { // TODO(restructure): Provide request/response type @@ -39,12 +43,26 @@ type ServiceRegistry = { projectsService: IProjectService; analyticsService: IAnalyticsService; monitoringService: IMonitoringService; + accountIndex: IResourceIndexReader; }; const ServiceRegistryContext = createContext( undefined as never ); +type ServiceRegistryProviderProps = { + children: ReactNode; + services: ServiceRegistry; +}; + +export function ServiceRegistryProvider(props: ServiceRegistryProviderProps) { + return ( + + {props.children} + + ); +} + export function useServiceRegistry() { const context = useContext(ServiceRegistryContext); diff --git a/packages/ui/src/contexts/snapshots.context.tsx b/packages/ui/src/contexts/snapshots.context.tsx index aa84d4955..aa23e1895 100644 --- a/packages/ui/src/contexts/snapshots.context.tsx +++ b/packages/ui/src/contexts/snapshots.context.tsx @@ -8,7 +8,7 @@ import React, { } from "react"; import toast from "react-hot-toast"; import { useConfirmDialog } from "./confirm-dialog.context"; -import { useFlowserHooksApi } from "./flowser-api.context"; +import { useFlowserHooksApi } from "./api-hooks.context"; import { useErrorHandler } from "../hooks/use-error-handler"; import { AnalyticEvent, useAnalytics } from "../hooks/use-analytics"; import { FlowUtils } from "../utils/flow-utils"; diff --git a/packages/ui/src/contracts/ContractDetails/ContractDetails.tsx b/packages/ui/src/contracts/ContractDetails/ContractDetails.tsx index 47bdffb36..398090864 100644 --- a/packages/ui/src/contracts/ContractDetails/ContractDetails.tsx +++ b/packages/ui/src/contracts/ContractDetails/ContractDetails.tsx @@ -1,6 +1,6 @@ import React, { FunctionComponent } from "react"; import FullScreenLoading from "../../common/loaders/FullScreenLoading/FullScreenLoading"; -import { useFlowserHooksApi } from "../../contexts/flowser-api.context"; +import { useFlowserHooksApi } from "../../contexts/api-hooks.context"; import classes from "./ContractDetails.module.scss"; import { DetailsCard, diff --git a/packages/ui/src/events/EventDetails/EventDetails.tsx b/packages/ui/src/events/EventDetails/EventDetails.tsx index 3a909543e..821824aa5 100644 --- a/packages/ui/src/events/EventDetails/EventDetails.tsx +++ b/packages/ui/src/events/EventDetails/EventDetails.tsx @@ -1,8 +1,6 @@ import React, { FunctionComponent } from "react"; import FullScreenLoading from "../../common/loaders/FullScreenLoading/FullScreenLoading"; -import { - useFlowserHooksApi, -} from "../../contexts/flowser-api.context"; +import { useFlowserHooksApi } from "../../contexts/api-hooks.context"; import classes from "./EventDetails.module.scss"; import { DetailsCard, diff --git a/packages/ui/src/hooks/use-analytics.ts b/packages/ui/src/hooks/use-analytics.ts index f62bc83f3..eb40472f6 100644 --- a/packages/ui/src/hooks/use-analytics.ts +++ b/packages/ui/src/hooks/use-analytics.ts @@ -1,26 +1,26 @@ -import { useEffect } from 'react'; -import { useLocalStorage } from '@uidotdev/usehooks'; -import { useFlowserHooksApi } from '../contexts/flowser-api.context'; -import { useCurrentProjectId } from './use-current-project-id'; -import { useServiceRegistry } from '../contexts/service-registry.context'; +import { useEffect } from "react"; +import { useLocalStorage } from "@uidotdev/usehooks"; +import { useFlowserHooksApi } from "../contexts/api-hooks.context"; +import { useCurrentProjectId } from "./use-current-project-id"; +import { useServiceRegistry } from "../contexts/service-registry.context"; export enum AnalyticEvent { - PAGE_VIEW = 'page_view', + PAGE_VIEW = "page_view", - PROJECT_REMOVED = 'project_removed', - PROJECT_CREATED = 'project_created', - PROJECT_STARTED = 'project_started', + PROJECT_REMOVED = "project_removed", + PROJECT_CREATED = "project_created", + PROJECT_STARTED = "project_started", - CLICK_MINIMIZE_STORAGE_CARD = 'click_minimize_storage_card', - CLICK_EXPAND_STORAGE_CARD = 'click_expand_storage_card', - CLICK_PROJECT_SETTINGS = 'click_project_settings', - CLICK_CREATE_SNAPSHOT = 'click_create_snapshot', - CLICK_CHECKOUT_SNAPSHOT = 'click_checkout_snapshot', + CLICK_MINIMIZE_STORAGE_CARD = "click_minimize_storage_card", + CLICK_EXPAND_STORAGE_CARD = "click_expand_storage_card", + CLICK_PROJECT_SETTINGS = "click_project_settings", + CLICK_CREATE_SNAPSHOT = "click_create_snapshot", + CLICK_CHECKOUT_SNAPSHOT = "click_checkout_snapshot", - CREATE_SNAPSHOT = 'create_snapshot', - CHECKOUT_SNAPSHOT = 'checkout_snapshot', + CREATE_SNAPSHOT = "create_snapshot", + CHECKOUT_SNAPSHOT = "checkout_snapshot", - RESTART_PROCESS = 'restart_process', + RESTART_PROCESS = "restart_process", } type Analytics = { diff --git a/packages/ui/src/interactions/components/InteractionHistory/InteractionHistory.tsx b/packages/ui/src/interactions/components/InteractionHistory/InteractionHistory.tsx index 0f9127d55..ae3dba11f 100644 --- a/packages/ui/src/interactions/components/InteractionHistory/InteractionHistory.tsx +++ b/packages/ui/src/interactions/components/InteractionHistory/InteractionHistory.tsx @@ -1,8 +1,6 @@ import React, { ReactElement } from "react"; import classes from "./InteractionHistory.module.scss"; -import { - useFlowserHooksApi, -} from "../../../contexts/flowser-api.context"; +import { useFlowserHooksApi } from "../../../contexts/api-hooks.context"; import { FlowserIcon } from "../../../common/icons/FlowserIcon"; import { SizedBox } from "../../../common/misc/SizedBox/SizedBox"; import { Spinner } from "../../../common/loaders/Spinner/Spinner"; @@ -12,7 +10,7 @@ import { MenuItem } from "@szhsin/react-menu"; import { FlowserMenu } from "../../../common/overlays/Menu/Menu"; import { GrcpStatusIcon } from "../../../common/status/GrcpStatus"; import { useSnapshotsManager } from "../../../contexts/snapshots.context"; -import { FlowBlock, FlowTransaction } from '@onflowser/api'; +import { FlowBlock, FlowTransaction } from "@onflowser/api"; export function InteractionHistory(): ReactElement { const api = useFlowserHooksApi(); @@ -47,13 +45,14 @@ function BlockItem(props: BlockItemProps) { const api = useFlowserHooksApi(); const { checkoutBlock } = useSnapshotsManager(); const { create, setFocused } = useInteractionRegistry(); - const { data } = api.useGetTransactionsByAccount(block.id, - // TODO(restructure): Add this option - // { - // // Assume that every transaction is packaged into a separate block. - // // So once a block exists, no transactions can be appended to it. - // pollingInterval: 0, - // } + const { data } = api.useGetTransactionsByAccount( + block.id + // TODO(restructure): Add this option + // { + // // Assume that every transaction is packaged into a separate block. + // // So once a block exists, no transactions can be appended to it. + // pollingInterval: 0, + // } ); const firstTransaction = data[0]; diff --git a/packages/ui/src/interactions/components/InteractionLabel/InteractionLabel.tsx b/packages/ui/src/interactions/components/InteractionLabel/InteractionLabel.tsx index 47ae13e46..32f4153e4 100644 --- a/packages/ui/src/interactions/components/InteractionLabel/InteractionLabel.tsx +++ b/packages/ui/src/interactions/components/InteractionLabel/InteractionLabel.tsx @@ -1,7 +1,7 @@ import React, { ReactElement } from "react"; import { InteractionIcon } from "../InteractionIcon/InteractionIcon"; import { SizedBox } from "../../../common/misc/SizedBox/SizedBox"; -import { useFlowserHooksApi } from "../../../contexts/flowser-api.context"; +import { useFlowserHooksApi } from "../../../contexts/api-hooks.context"; import { Spinner } from "../../../common/loaders/Spinner/Spinner"; import classes from "./InteractionLabel.module.scss"; import { InteractionDefinition } from "../../core/core-types"; diff --git a/packages/ui/src/interactions/components/InteractionOutcomeDisplay/InteractionOutcomeDisplay.tsx b/packages/ui/src/interactions/components/InteractionOutcomeDisplay/InteractionOutcomeDisplay.tsx index 6b714307e..057a3285c 100644 --- a/packages/ui/src/interactions/components/InteractionOutcomeDisplay/InteractionOutcomeDisplay.tsx +++ b/packages/ui/src/interactions/components/InteractionOutcomeDisplay/InteractionOutcomeDisplay.tsx @@ -2,7 +2,7 @@ import React, { ReactElement, useEffect, useState } from "react"; import { useInteractionOutcomeManager } from "../../contexts/outcome.context"; import { ScriptError } from "../../../common/status/ErrorMessage"; import { JsonView } from "../../../common/code/JsonView/JsonView"; -import { useFlowserHooksApi } from "../../../contexts/flowser-api.context"; +import { useFlowserHooksApi } from "../../../contexts/api-hooks.context"; import classes from "./InteractionOutcomeDisplay.module.scss"; import { BaseTabItem } from "../../../common/tabs/BaseTabs/BaseTabs"; import { Callout } from "../../../common/misc/Callout/Callout"; diff --git a/packages/ui/src/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.tsx b/packages/ui/src/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.tsx index 52c1d3924..596d1409c 100644 --- a/packages/ui/src/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.tsx +++ b/packages/ui/src/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.tsx @@ -1,7 +1,7 @@ import React, { ReactElement, useEffect, useState } from "react"; import classes from "./AddressBuilder.module.scss"; import { CadenceValueBuilder } from "../interface"; -import { useFlowserHooksApi } from "../../../../contexts/flowser-api.context"; +import { useFlowserHooksApi } from "../../../../contexts/api-hooks.context"; import { AccountAvatar } from "../../../../accounts/AccountAvatar/AccountAvatar"; import { AccountName } from "../../../../accounts/AccountName/AccountName"; import { FlowserIcon } from "../../../../common/icons/FlowserIcon"; diff --git a/packages/ui/src/interactions/contexts/definition.context.tsx b/packages/ui/src/interactions/contexts/definition.context.tsx index 28a12335f..1026f0d84 100644 --- a/packages/ui/src/interactions/contexts/definition.context.tsx +++ b/packages/ui/src/interactions/contexts/definition.context.tsx @@ -5,7 +5,7 @@ import React, { useContext, } from "react"; import { useInteractionRegistry } from "./interaction-registry.context"; -import { useFlowserHooksApi } from "../../contexts/flowser-api.context"; +import { useFlowserHooksApi } from "../../contexts/api-hooks.context"; import { FclValueLookupByIdentifier, InteractionDefinition, diff --git a/packages/ui/src/interactions/contexts/templates.context.tsx b/packages/ui/src/interactions/contexts/templates.context.tsx index 303c48b29..57033d86e 100644 --- a/packages/ui/src/interactions/contexts/templates.context.tsx +++ b/packages/ui/src/interactions/contexts/templates.context.tsx @@ -1,5 +1,5 @@ import React, { createContext, ReactElement, useContext, useMemo } from "react"; -import { useFlowserHooksApi } from "../../contexts/flowser-api.context"; +import { useFlowserHooksApi } from "../../contexts/api-hooks.context"; import { InteractionDefinition } from "../core/core-types"; import { FclValue } from "@onflowser/core"; import { useLocalStorage } from "@uidotdev/usehooks"; diff --git a/packages/ui/src/logs/Logs.tsx b/packages/ui/src/logs/Logs.tsx index 80981b863..ed4539f08 100644 --- a/packages/ui/src/logs/Logs.tsx +++ b/packages/ui/src/logs/Logs.tsx @@ -10,7 +10,7 @@ import classes from "./Logs.module.scss"; import { CaretIcon } from "../common/icons/CaretIcon/CaretIcon"; import { useFilterData } from "../hooks/use-filter-data"; import { useMouseMove } from "../hooks/use-mouse-move"; -import { useFlowserHooksApi } from "../contexts/flowser-api.context"; +import { useFlowserHooksApi } from "../contexts/api-hooks.context"; import { toast } from "react-hot-toast"; import classNames from "classnames"; import { SimpleButton } from "../common/buttons/SimpleButton/SimpleButton"; @@ -18,7 +18,7 @@ import { Callout } from "../common/misc/Callout/Callout"; import { SearchInput } from "../common/inputs/SearchInput/SearchInput"; import { ManagedProcessOutput, ProcessOutputSource } from "@onflowser/api"; import AnsiHtmlConvert from "ansi-to-html"; -import { FlowserIcon } from '../common/icons/FlowserIcon'; +import { FlowserIcon } from "../common/icons/FlowserIcon"; type LogsProps = { className?: string; diff --git a/packages/ui/src/projects/ProjectListPage/ProjectListPage.tsx b/packages/ui/src/projects/ProjectListPage/ProjectListPage.tsx index 636c13465..8284af1d4 100644 --- a/packages/ui/src/projects/ProjectListPage/ProjectListPage.tsx +++ b/packages/ui/src/projects/ProjectListPage/ProjectListPage.tsx @@ -4,7 +4,7 @@ import IconButton from "../../common/buttons/IconButton/IconButton"; import longLogo from "../../assets/long_logo.png"; import trash from "../../common/icons/assets/trash.svg"; import classes from "./ProjectListPage.module.scss"; -import { useFlowserHooksApi } from "../../contexts/flowser-api.context"; +import { useFlowserHooksApi } from "../../contexts/api-hooks.context"; import classNames from "classnames"; import { useProjectManager } from "../../contexts/projects.context"; import { SimpleButton } from "../../common/buttons/SimpleButton/SimpleButton"; diff --git a/packages/ui/src/projects/ProjectSettings/ProjectSettings.tsx b/packages/ui/src/projects/ProjectSettings/ProjectSettings.tsx index c93191aa0..07b6e37c6 100644 --- a/packages/ui/src/projects/ProjectSettings/ProjectSettings.tsx +++ b/packages/ui/src/projects/ProjectSettings/ProjectSettings.tsx @@ -6,7 +6,7 @@ import Button from "../../common/buttons/Button/Button"; import FullScreenLoading from "../../common/loaders/FullScreenLoading/FullScreenLoading"; import { toast } from "react-hot-toast"; import classNames from "classnames"; -import { useFlowserHooksApi } from "../../contexts/flowser-api.context"; +import { useFlowserHooksApi } from "../../contexts/api-hooks.context"; import { FlowUtils } from "../../utils/flow-utils"; import * as yup from "yup"; import { useErrorHandler } from "../../hooks/use-error-handler"; diff --git a/packages/ui/src/transactions/TransactionDetails/TransactionDetails.tsx b/packages/ui/src/transactions/TransactionDetails/TransactionDetails.tsx index 3371f3e62..7be9e93e9 100644 --- a/packages/ui/src/transactions/TransactionDetails/TransactionDetails.tsx +++ b/packages/ui/src/transactions/TransactionDetails/TransactionDetails.tsx @@ -1,7 +1,7 @@ import React, { FunctionComponent } from "react"; import classes from "./TransactionDetails.module.scss"; import FullScreenLoading from "../../common/loaders/FullScreenLoading/FullScreenLoading"; -import { useFlowserHooksApi } from "../../contexts/flowser-api.context"; +import { useFlowserHooksApi } from "../../contexts/api-hooks.context"; import { TransactionOverview } from "../TransactionOverview/TransactionOverview"; import { SizedBox } from "../../common/misc/SizedBox/SizedBox"; import { TransactionDetailsTabs } from "../TransactionDetailsTabs/TransactionDetailsTabs"; diff --git a/packages/ui/src/transactions/TransactionDetailsTabs/TransactionDetailsTabs.tsx b/packages/ui/src/transactions/TransactionDetailsTabs/TransactionDetailsTabs.tsx index e9d5a7ef6..94f9bb7f4 100644 --- a/packages/ui/src/transactions/TransactionDetailsTabs/TransactionDetailsTabs.tsx +++ b/packages/ui/src/transactions/TransactionDetailsTabs/TransactionDetailsTabs.tsx @@ -8,7 +8,7 @@ import { StyledTabs, StyledTabsProps, } from "../../common/tabs/StyledTabs/StyledTabs"; -import { useFlowserHooksApi } from "../../contexts/flowser-api.context"; +import { useFlowserHooksApi } from "../../contexts/api-hooks.context"; import { TransactionOverview } from "../TransactionOverview/TransactionOverview"; import { FlowTransaction } from "@onflowser/api"; import FullScreenLoading from "../../common/loaders/FullScreenLoading/FullScreenLoading"; diff --git a/yarn.lock b/yarn.lock index d75d9f678..d832fad39 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4,7 +4,7 @@ "7zip-bin@~5.1.1": version "5.1.1" - resolved "https://registry.yarnpkg.com/7zip-bin/-/7zip-bin-5.1.1.tgz#9274ec7460652f9c632c59addf24efb1684ef876" + resolved "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.1.1.tgz" integrity sha512-sAP4LldeWNz0lNzmTird3uWfFDWWTeg6V/MsmyyLR9X1idwKBWIgt/ZvinqQldJm3LecKEs1emkbquO6PCiLVQ== "@aashutoshrathi/word-wrap@^1.2.3": @@ -14,7 +14,7 @@ "@adobe/css-tools@^4.3.1": version "4.3.1" - resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.3.1.tgz#abfccb8ca78075a2b6187345c26243c1a0842f28" + resolved "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.1.tgz" integrity sha512-/62yikz7NLScCGAAST5SHdnjaDJQBDq0M2muyRTpf2VQhw6StBg2ALiu73zSJQ4fMVLA+0uBhBHAle7Wg+2kSg== "@ampproject/remapping@^2.2.0": @@ -35,7 +35,7 @@ "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.23.2": version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.2.tgz#6a12ced93455827037bfb5ed8492820d60fc32cc" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.2.tgz" integrity sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ== "@babel/compat-data@^7.22.9": @@ -45,7 +45,7 @@ "@babel/core@^7.11.6", "@babel/core@^7.12.3": version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.2.tgz#ed10df0d580fff67c5f3ee70fd22e2e4c90a9f94" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.23.2.tgz" integrity sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ== dependencies: "@ampproject/remapping" "^2.2.0" @@ -97,14 +97,14 @@ "@babel/helper-annotate-as-pure@^7.22.5": version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" + resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz" integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== dependencies: "@babel/types" "^7.22.5" "@babel/helper-builder-binary-assignment-operator-visitor@^7.22.5": version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz#5426b109cf3ad47b91120f8328d8ab1be8b0b956" + resolved "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz" integrity sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw== dependencies: "@babel/types" "^7.22.15" @@ -122,7 +122,7 @@ "@babel/helper-create-class-features-plugin@^7.22.11", "@babel/helper-create-class-features-plugin@^7.22.15", "@babel/helper-create-class-features-plugin@^7.22.5": version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz#97a61b385e57fe458496fad19f8e63b63c867de4" + resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz" integrity sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" @@ -137,7 +137,7 @@ "@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.5": version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1" + resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz" integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" @@ -146,7 +146,7 @@ "@babel/helper-define-polyfill-provider@^0.4.3": version "0.4.3" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz#a71c10f7146d809f4a256c373f462d9bba8cf6ba" + resolved "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz" integrity sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug== dependencies: "@babel/helper-compilation-targets" "^7.22.6" @@ -177,7 +177,7 @@ "@babel/helper-member-expression-to-functions@^7.22.15": version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz#9263e88cc5e41d39ec18c9a3e0eced59a3e7d366" + resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz" integrity sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA== dependencies: "@babel/types" "^7.23.0" @@ -202,19 +202,19 @@ "@babel/helper-optimise-call-expression@^7.22.5": version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e" + resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz" integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw== dependencies: "@babel/types" "^7.22.5" "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz" integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== "@babel/helper-remap-async-to-generator@^7.22.20", "@babel/helper-remap-async-to-generator@^7.22.5": version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0" + resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz" integrity sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" @@ -223,7 +223,7 @@ "@babel/helper-replace-supers@^7.22.5", "@babel/helper-replace-supers@^7.22.9": version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz#e37d367123ca98fe455a9887734ed2e16eb7a793" + resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz" integrity sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw== dependencies: "@babel/helper-environment-visitor" "^7.22.20" @@ -239,7 +239,7 @@ "@babel/helper-skip-transparent-expression-wrappers@^7.22.5": version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847" + resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz" integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q== dependencies: "@babel/types" "^7.22.5" @@ -268,7 +268,7 @@ "@babel/helper-wrap-function@^7.22.20": version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz#15352b0b9bfb10fc9c76f79f6342c00e3411a569" + resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz" integrity sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw== dependencies: "@babel/helper-function-name" "^7.22.5" @@ -286,7 +286,7 @@ "@babel/helpers@^7.23.2": version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.2.tgz#2832549a6e37d484286e15ba36a5330483cac767" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.2.tgz" integrity sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ== dependencies: "@babel/template" "^7.22.15" @@ -309,14 +309,14 @@ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.22.15": version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz#02dc8a03f613ed5fdc29fb2f728397c78146c962" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz" integrity sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.22.15": version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz#2aeb91d337d4e1a1e7ce85b76a37f5301781200f" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz" integrity sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -325,152 +325,152 @@ "@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": version "7.21.0-placeholder-for-preset-env.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz" integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-bigint@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz" integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz" integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== dependencies: "@babel/helper-plugin-utils" "^7.12.13" "@babel/plugin-syntax-class-static-block@^7.14.5": version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" + 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== dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-dynamic-import@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz" integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-export-namespace-from@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz" integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== dependencies: "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-import-assertions@^7.22.5": version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz#07d252e2aa0bc6125567f742cd58619cb14dce98" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz" integrity sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-import-attributes@^7.22.5": version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz#ab840248d834410b829f569f5262b9e517555ecb" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz" integrity sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-import-meta@^7.10.4", "@babel/plugin-syntax-import-meta@^7.8.3": version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz" integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-json-strings@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz" integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-jsx@^7.22.5", "@babel/plugin-syntax-jsx@^7.7.2": version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz#a6b68e84fb76e759fc3b93e901876ffabbe1d918" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz" integrity sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + 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== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + 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== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + 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== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-object-rest-spread@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + 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== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-optional-catch-binding@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + 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== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-optional-chaining@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-private-property-in-object@^7.14.5": version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" + 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== dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + 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== dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-typescript@^7.22.5", "@babel/plugin-syntax-typescript@^7.7.2": version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz#aac8d383b062c5072c647a31ef990c1d0af90272" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz" integrity sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-unicode-sets-regex@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz" integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.18.6" @@ -478,14 +478,14 @@ "@babel/plugin-transform-arrow-functions@^7.22.5": version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz#e5ba566d0c58a5b2ba2a8b795450641950b71958" + resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz" integrity sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-async-generator-functions@^7.23.2": version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.2.tgz#054afe290d64c6f576f371ccc321772c8ea87ebb" + resolved "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.2.tgz" integrity sha512-BBYVGxbDVHfoeXbOwcagAkOQAm9NxoTdMGfTqghu1GrvadSaw6iW3Je6IcL5PNOw8VwjxqBECXy50/iCQSY/lQ== dependencies: "@babel/helper-environment-visitor" "^7.22.20" @@ -495,7 +495,7 @@ "@babel/plugin-transform-async-to-generator@^7.22.5": version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz#c7a85f44e46f8952f6d27fe57c2ed3cc084c3775" + resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz" integrity sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ== dependencies: "@babel/helper-module-imports" "^7.22.5" @@ -504,21 +504,21 @@ "@babel/plugin-transform-block-scoped-functions@^7.22.5": version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz#27978075bfaeb9fa586d3cb63a3d30c1de580024" + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz" integrity sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-block-scoping@^7.23.0": version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.0.tgz#8744d02c6c264d82e1a4bc5d2d501fd8aff6f022" + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.0.tgz" integrity sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-class-properties@^7.22.5": version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz#97a56e31ad8c9dc06a0b3710ce7803d5a48cca77" + resolved "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz" integrity sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ== dependencies: "@babel/helper-create-class-features-plugin" "^7.22.5" @@ -526,7 +526,7 @@ "@babel/plugin-transform-class-static-block@^7.22.11": version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz#dc8cc6e498f55692ac6b4b89e56d87cec766c974" + resolved "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz" integrity sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g== dependencies: "@babel/helper-create-class-features-plugin" "^7.22.11" @@ -535,7 +535,7 @@ "@babel/plugin-transform-classes@^7.22.15": version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz#aaf4753aee262a232bbc95451b4bdf9599c65a0b" + resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz" integrity sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" @@ -550,7 +550,7 @@ "@babel/plugin-transform-computed-properties@^7.22.5": version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz#cd1e994bf9f316bd1c2dafcd02063ec261bb3869" + resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz" integrity sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -558,14 +558,14 @@ "@babel/plugin-transform-destructuring@^7.23.0": version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.0.tgz#6447aa686be48b32eaf65a73e0e2c0bd010a266c" + resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.0.tgz" integrity sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-dotall-regex@^7.22.5": version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz#dbb4f0e45766eb544e193fb00e65a1dd3b2a4165" + resolved "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz" integrity sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.22.5" @@ -573,14 +573,14 @@ "@babel/plugin-transform-duplicate-keys@^7.22.5": version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz#b6e6428d9416f5f0bba19c70d1e6e7e0b88ab285" + resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz" integrity sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-dynamic-import@^7.22.11": version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz#2c7722d2a5c01839eaf31518c6ff96d408e447aa" + resolved "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz" integrity sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -588,7 +588,7 @@ "@babel/plugin-transform-exponentiation-operator@^7.22.5": version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz#402432ad544a1f9a480da865fda26be653e48f6a" + resolved "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz" integrity sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g== dependencies: "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.5" @@ -596,7 +596,7 @@ "@babel/plugin-transform-export-namespace-from@^7.22.11": version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz#b3c84c8f19880b6c7440108f8929caf6056db26c" + resolved "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz" integrity sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -604,14 +604,14 @@ "@babel/plugin-transform-for-of@^7.22.15": version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz#f64b4ccc3a4f131a996388fae7680b472b306b29" + resolved "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz" integrity sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-function-name@^7.22.5": version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz#935189af68b01898e0d6d99658db6b164205c143" + resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz" integrity sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg== dependencies: "@babel/helper-compilation-targets" "^7.22.5" @@ -620,7 +620,7 @@ "@babel/plugin-transform-json-strings@^7.22.11": version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz#689a34e1eed1928a40954e37f74509f48af67835" + resolved "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz" integrity sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -628,14 +628,14 @@ "@babel/plugin-transform-literals@^7.22.5": version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz#e9341f4b5a167952576e23db8d435849b1dd7920" + resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz" integrity sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-logical-assignment-operators@^7.22.11": version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz#24c522a61688bde045b7d9bc3c2597a4d948fc9c" + resolved "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz" integrity sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -643,14 +643,14 @@ "@babel/plugin-transform-member-expression-literals@^7.22.5": version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz#4fcc9050eded981a468347dd374539ed3e058def" + resolved "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz" integrity sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-modules-amd@^7.23.0": version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.0.tgz#05b2bc43373faa6d30ca89214731f76f966f3b88" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.0.tgz" integrity sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw== dependencies: "@babel/helper-module-transforms" "^7.23.0" @@ -658,7 +658,7 @@ "@babel/plugin-transform-modules-commonjs@^7.23.0": version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz#b3dba4757133b2762c00f4f94590cf6d52602481" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz" integrity sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ== dependencies: "@babel/helper-module-transforms" "^7.23.0" @@ -667,7 +667,7 @@ "@babel/plugin-transform-modules-systemjs@^7.23.0": version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.0.tgz#77591e126f3ff4132a40595a6cccd00a6b60d160" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.0.tgz" integrity sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg== dependencies: "@babel/helper-hoist-variables" "^7.22.5" @@ -677,7 +677,7 @@ "@babel/plugin-transform-modules-umd@^7.22.5": version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz#4694ae40a87b1745e3775b6a7fe96400315d4f98" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz" integrity sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ== dependencies: "@babel/helper-module-transforms" "^7.22.5" @@ -685,7 +685,7 @@ "@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz#67fe18ee8ce02d57c855185e27e3dc959b2e991f" + resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz" integrity sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.22.5" @@ -693,14 +693,14 @@ "@babel/plugin-transform-new-target@^7.22.5": version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz#1b248acea54ce44ea06dfd37247ba089fcf9758d" + resolved "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz" integrity sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-nullish-coalescing-operator@^7.22.11": version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz#debef6c8ba795f5ac67cd861a81b744c5d38d9fc" + resolved "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz" integrity sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -708,7 +708,7 @@ "@babel/plugin-transform-numeric-separator@^7.22.11": version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz#498d77dc45a6c6db74bb829c02a01c1d719cbfbd" + resolved "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz" integrity sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -716,7 +716,7 @@ "@babel/plugin-transform-object-rest-spread@^7.22.15": version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz#21a95db166be59b91cde48775310c0df6e1da56f" + resolved "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz" integrity sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q== dependencies: "@babel/compat-data" "^7.22.9" @@ -727,7 +727,7 @@ "@babel/plugin-transform-object-super@^7.22.5": version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz#794a8d2fcb5d0835af722173c1a9d704f44e218c" + resolved "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz" integrity sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -735,7 +735,7 @@ "@babel/plugin-transform-optional-catch-binding@^7.22.11": version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz#461cc4f578a127bb055527b3e77404cad38c08e0" + resolved "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz" integrity sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -743,7 +743,7 @@ "@babel/plugin-transform-optional-chaining@^7.22.15", "@babel/plugin-transform-optional-chaining@^7.23.0": version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.0.tgz#73ff5fc1cf98f542f09f29c0631647d8ad0be158" + resolved "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.0.tgz" integrity sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -752,14 +752,14 @@ "@babel/plugin-transform-parameters@^7.22.15": version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz#719ca82a01d177af358df64a514d64c2e3edb114" + resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz" integrity sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-private-methods@^7.22.5": version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz#21c8af791f76674420a147ae62e9935d790f8722" + resolved "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz" integrity sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA== dependencies: "@babel/helper-create-class-features-plugin" "^7.22.5" @@ -767,7 +767,7 @@ "@babel/plugin-transform-private-property-in-object@^7.22.11": version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz#ad45c4fc440e9cb84c718ed0906d96cf40f9a4e1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz" integrity sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" @@ -777,35 +777,35 @@ "@babel/plugin-transform-property-literals@^7.22.5": version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz#b5ddabd73a4f7f26cd0e20f5db48290b88732766" + resolved "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz" integrity sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-react-constant-elements@^7.21.3": version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.22.5.tgz#6dfa7c1c37f7d7279e417ceddf5a04abb8bb9c29" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.22.5.tgz" integrity sha512-BF5SXoO+nX3h5OhlN78XbbDrBOffv+AxPP2ENaJOVqjWCgBDeOY3WcaUcddutGSfoap+5NEQ/q/4I3WZIvgkXA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-react-display-name@^7.22.5": version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.22.5.tgz#3c4326f9fce31c7968d6cb9debcaf32d9e279a2b" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.22.5.tgz" integrity sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-react-jsx-development@^7.22.5": version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz#e716b6edbef972a92165cd69d92f1255f7e73e87" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz" integrity sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A== dependencies: "@babel/plugin-transform-react-jsx" "^7.22.5" "@babel/plugin-transform-react-jsx@^7.22.15", "@babel/plugin-transform-react-jsx@^7.22.5": version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.15.tgz#7e6266d88705d7c49f11c98db8b9464531289cd6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.15.tgz" integrity sha512-oKckg2eZFa8771O/5vi7XeTvmM6+O9cxZu+kanTU7tD4sin5nO/G8jGJhq8Hvt2Z0kUoEDRayuZLaUlYl8QuGA== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" @@ -816,7 +816,7 @@ "@babel/plugin-transform-react-pure-annotations@^7.22.5": version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.22.5.tgz#1f58363eef6626d6fa517b95ac66fe94685e32c0" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.22.5.tgz" integrity sha512-gP4k85wx09q+brArVinTXhWiyzLl9UpmGva0+mWyKxk6JZequ05x3eUcIUE+FyttPKJFRRVtAvQaJ6YF9h1ZpA== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" @@ -824,7 +824,7 @@ "@babel/plugin-transform-regenerator@^7.22.10": version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz#8ceef3bd7375c4db7652878b0241b2be5d0c3cca" + resolved "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz" integrity sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -832,21 +832,21 @@ "@babel/plugin-transform-reserved-words@^7.22.5": version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz#832cd35b81c287c4bcd09ce03e22199641f964fb" + resolved "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz" integrity sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-shorthand-properties@^7.22.5": version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz#6e277654be82b5559fc4b9f58088507c24f0c624" + resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz" integrity sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-spread@^7.22.5": version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz#6487fd29f229c95e284ba6c98d65eafb893fea6b" + resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz" integrity sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -854,28 +854,28 @@ "@babel/plugin-transform-sticky-regex@^7.22.5": version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz#295aba1595bfc8197abd02eae5fc288c0deb26aa" + resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz" integrity sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-template-literals@^7.22.5": version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz#8f38cf291e5f7a8e60e9f733193f0bcc10909bff" + resolved "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz" integrity sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-typeof-symbol@^7.22.5": version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz#5e2ba478da4b603af8673ff7c54f75a97b716b34" + resolved "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz" integrity sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-typescript@^7.22.15": version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.15.tgz#15adef906451d86349eb4b8764865c960eb54127" + resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.15.tgz" integrity sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" @@ -885,14 +885,14 @@ "@babel/plugin-transform-unicode-escapes@^7.22.10": version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz#c723f380f40a2b2f57a62df24c9005834c8616d9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz" integrity sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-unicode-property-regex@^7.22.5": version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz#098898f74d5c1e86660dc112057b2d11227f1c81" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz" integrity sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.22.5" @@ -900,7 +900,7 @@ "@babel/plugin-transform-unicode-regex@^7.22.5": version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz#ce7e7bb3ef208c4ff67e02a22816656256d7a183" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz" integrity sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.22.5" @@ -908,7 +908,7 @@ "@babel/plugin-transform-unicode-sets-regex@^7.22.5": version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz#77788060e511b708ffc7d42fdfbc5b37c3004e91" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz" integrity sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.22.5" @@ -916,7 +916,7 @@ "@babel/preset-env@^7.20.2": version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.23.2.tgz#1f22be0ff0e121113260337dbc3e58fafce8d059" + resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.2.tgz" integrity sha512-BW3gsuDD+rvHL2VO2SjAUNTBe5YrjsTiDyqamPDWY723na3/yPQ65X5oQkFVJZ0o50/2d+svm1rkPoJeR1KxVQ== dependencies: "@babel/compat-data" "^7.23.2" @@ -1002,7 +1002,7 @@ "@babel/preset-modules@0.1.6-no-external-plugins": version "0.1.6-no-external-plugins" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a" + resolved "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz" integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" @@ -1011,7 +1011,7 @@ "@babel/preset-react@^7.18.6": version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.22.15.tgz#9a776892b648e13cc8ca2edf5ed1264eea6b6afc" + resolved "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.22.15.tgz" integrity sha512-Csy1IJ2uEh/PecCBXXoZGAZBeCATTuePzCSB7dLYWS0vOEj6CNpjxIhW4duWwZodBNueH7QO14WbGn8YyeuN9w== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -1023,7 +1023,7 @@ "@babel/preset-typescript@^7.21.0": version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.23.2.tgz#c8de488130b7081f7e1482936ad3de5b018beef4" + resolved "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.23.2.tgz" integrity sha512-u4UJc1XsS1GhIGteM8rnGiIvf9rJpiVgMEeCnwlLA7WJPC+jcXWJAGxYmeqs5hOZD8BbAfnV5ezBOxQbb4OUxA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -1034,12 +1034,12 @@ "@babel/regjsgen@^0.8.0": version "0.8.0" - resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" + resolved "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== "@babel/runtime@^7.12.5", "@babel/runtime@^7.20.7", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.2.tgz#062b0ac103261d68a966c4c7baf2ae3e62ec3885" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz" integrity sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg== dependencies: regenerator-runtime "^0.14.0" @@ -1078,7 +1078,7 @@ "@babel/traverse@^7.23.2": version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.2.tgz#329c7a06735e144a506bdb2cad0268b7f46f4ad8" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz" integrity sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw== dependencies: "@babel/code-frame" "^7.22.13" @@ -1103,7 +1103,7 @@ "@bcoe/v8-coverage@^0.2.3": version "0.2.3" - resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== "@codemirror/autocomplete@^6.0.0": @@ -1189,14 +1189,14 @@ "@cspotcode/source-map-support@^0.8.0": version "0.8.1" - resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + resolved "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz" integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== dependencies: "@jridgewell/trace-mapping" "0.3.9" "@develar/schema-utils@~2.6.5": version "2.6.5" - resolved "https://registry.yarnpkg.com/@develar/schema-utils/-/schema-utils-2.6.5.tgz#3ece22c5838402419a6e0425f85742b961d9b6c6" + resolved "https://registry.npmjs.org/@develar/schema-utils/-/schema-utils-2.6.5.tgz" integrity sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig== dependencies: ajv "^6.12.0" @@ -1204,12 +1204,12 @@ "@discoveryjs/json-ext@0.5.7", "@discoveryjs/json-ext@^0.5.0": version "0.5.7" - resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" + resolved "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz" integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== "@electron/asar@^3.2.1": version "3.2.7" - resolved "https://registry.yarnpkg.com/@electron/asar/-/asar-3.2.7.tgz#bb8117dc6fd0c06a922ae7fb1c0e2d433e35a6e5" + resolved "https://registry.npmjs.org/@electron/asar/-/asar-3.2.7.tgz" integrity sha512-8FaSCAIiZGYFWyjeevPQt+0e9xCK9YmJ2Rjg5SXgdsXon6cRnU0Yxnbe6CvJbQn26baifur2Y2G5EBayRIsjyg== dependencies: commander "^5.0.0" @@ -1218,7 +1218,7 @@ "@electron/get@^2.0.0": version "2.0.3" - resolved "https://registry.yarnpkg.com/@electron/get/-/get-2.0.3.tgz#fba552683d387aebd9f3fcadbcafc8e12ee4f960" + resolved "https://registry.npmjs.org/@electron/get/-/get-2.0.3.tgz" integrity sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ== dependencies: debug "^4.1.1" @@ -1233,7 +1233,7 @@ "@electron/notarize@2.1.0", "@electron/notarize@^2.1.0": version "2.1.0" - resolved "https://registry.yarnpkg.com/@electron/notarize/-/notarize-2.1.0.tgz#76aaec10c8687225e8d0a427cc9df67611c46ff3" + resolved "https://registry.npmjs.org/@electron/notarize/-/notarize-2.1.0.tgz" integrity sha512-Q02xem1D0sg4v437xHgmBLxI2iz/fc0D4K7fiVWHa/AnW8o7D751xyKNXgziA6HrTOme9ul1JfWN5ark8WH1xA== dependencies: debug "^4.1.1" @@ -1242,7 +1242,7 @@ "@electron/osx-sign@1.0.5": version "1.0.5" - resolved "https://registry.yarnpkg.com/@electron/osx-sign/-/osx-sign-1.0.5.tgz#0af7149f2fce44d1a8215660fd25a9fb610454d8" + resolved "https://registry.npmjs.org/@electron/osx-sign/-/osx-sign-1.0.5.tgz" integrity sha512-k9ZzUQtamSoweGQDV2jILiRIHUu7lYlJ3c6IEmjv1hC17rclE+eb9U+f6UFlOOETo0JzY1HNlXy4YOlCvl+Lww== dependencies: compare-version "^0.1.2" @@ -1254,7 +1254,7 @@ "@electron/rebuild@^3.3.0": version "3.3.0" - resolved "https://registry.yarnpkg.com/@electron/rebuild/-/rebuild-3.3.0.tgz#6ba0ae1cb545b2e314901d2ac175ca9c03a2e3da" + resolved "https://registry.npmjs.org/@electron/rebuild/-/rebuild-3.3.0.tgz" integrity sha512-S1vgpzIOS1wCJmsYjdLz97MTUV6UTLcMk/HE3w90HYtVxvW+PQdwxLbgsrECX2bysqcnmM5a0K6mXj/gwVgYtQ== dependencies: "@malept/cross-spawn-promise" "^2.0.0" @@ -1273,7 +1273,7 @@ "@electron/universal@1.4.1": version "1.4.1" - resolved "https://registry.yarnpkg.com/@electron/universal/-/universal-1.4.1.tgz#3fbda2a5ed9ff9f3304c8e8316b94c1e3a7b3785" + resolved "https://registry.npmjs.org/@electron/universal/-/universal-1.4.1.tgz" integrity sha512-lE/U3UNw1YHuowNbTmKNs9UlS3En3cPgwM5MI+agIgr/B1hSze9NdOP0qn7boZaI9Lph8IDv3/24g9IxnJP7aQ== dependencies: "@electron/asar" "^3.2.1" @@ -1302,7 +1302,7 @@ "@eslint-community/regexpp@^4.5.1": version "4.9.1" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.9.1.tgz#449dfa81a57a1d755b09aa58d826c1262e4283b4" + resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.1.tgz" integrity sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA== "@eslint-community/regexpp@^4.6.1": @@ -1332,7 +1332,7 @@ "@fingerprintjs/fingerprintjs@^4.1.0": version "4.1.0" - resolved "https://registry.yarnpkg.com/@fingerprintjs/fingerprintjs/-/fingerprintjs-4.1.0.tgz#82917f6c0afd59dbe05a4b386682b96cff4f7df0" + resolved "https://registry.npmjs.org/@fingerprintjs/fingerprintjs/-/fingerprintjs-4.1.0.tgz" integrity sha512-a7RMbIgLEnchrL8TUbYNrsZuRAjN1iha32QXmwYheeLrFSpJW5IgDvuoBnT6R+5LJlZOKOpEU3nXIu3OeQsAlw== dependencies: tslib "^2.4.1" @@ -1358,7 +1358,7 @@ "@isaacs/cliui@^8.0.2": version "8.0.2" - resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + resolved "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz" integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== dependencies: string-width "^5.1.2" @@ -1370,7 +1370,7 @@ "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" - resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz" integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== dependencies: camelcase "^5.3.1" @@ -1381,12 +1381,12 @@ "@istanbuljs/schema@^0.1.2": version "0.1.3" - resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz" integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== "@jest/console@^29.7.0": version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.7.0.tgz#cd4822dbdb84529265c5a2bdb529a3c9cc950ffc" + resolved "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz" integrity sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg== dependencies: "@jest/types" "^29.6.3" @@ -1398,7 +1398,7 @@ "@jest/core@^29.7.0": version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.7.0.tgz#b6cccc239f30ff36609658c5a5e2291757ce448f" + resolved "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz" integrity sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg== dependencies: "@jest/console" "^29.7.0" @@ -1432,7 +1432,7 @@ "@jest/environment@^29.7.0": version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.7.0.tgz#24d61f54ff1f786f3cd4073b4b94416383baf2a7" + resolved "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz" integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== dependencies: "@jest/fake-timers" "^29.7.0" @@ -1449,7 +1449,7 @@ "@jest/expect@^29.7.0": version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.7.0.tgz#76a3edb0cb753b70dfbfe23283510d3d45432bf2" + resolved "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz" integrity sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ== dependencies: expect "^29.7.0" @@ -1457,7 +1457,7 @@ "@jest/fake-timers@^29.7.0": version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.7.0.tgz#fd91bf1fffb16d7d0d24a426ab1a47a49881a565" + resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz" integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== dependencies: "@jest/types" "^29.6.3" @@ -1469,7 +1469,7 @@ "@jest/globals@^29.7.0": version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.7.0.tgz#8d9290f9ec47ff772607fa864ca1d5a2efae1d4d" + resolved "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz" integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ== dependencies: "@jest/environment" "^29.7.0" @@ -1479,7 +1479,7 @@ "@jest/reporters@^29.7.0": version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.7.0.tgz#04b262ecb3b8faa83b0b3d321623972393e8f4c7" + resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz" integrity sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg== dependencies: "@bcoe/v8-coverage" "^0.2.3" @@ -1516,7 +1516,7 @@ "@jest/source-map@^29.6.3": version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.6.3.tgz#d90ba772095cf37a34a5eb9413f1b562a08554c4" + resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz" integrity sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw== dependencies: "@jridgewell/trace-mapping" "^0.3.18" @@ -1525,7 +1525,7 @@ "@jest/test-result@^29.7.0": version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.7.0.tgz#8db9a80aa1a097bb2262572686734baed9b1657c" + resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz" integrity sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA== dependencies: "@jest/console" "^29.7.0" @@ -1535,7 +1535,7 @@ "@jest/test-sequencer@^29.7.0": version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz#6cef977ce1d39834a3aea887a1726628a6f072ce" + resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz" integrity sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw== dependencies: "@jest/test-result" "^29.7.0" @@ -1545,7 +1545,7 @@ "@jest/transform@^29.7.0": version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.7.0.tgz#df2dd9c346c7d7768b8a06639994640c642e284c" + resolved "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz" integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw== dependencies: "@babel/core" "^7.11.6" @@ -1597,7 +1597,7 @@ "@jridgewell/source-map@^0.3.3": version "0.3.5" - resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.5.tgz#a3bb4d5c6825aab0d281268f47f6ad5853431e91" + resolved "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz" integrity sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ== dependencies: "@jridgewell/gen-mapping" "^0.3.0" @@ -1610,7 +1610,7 @@ "@jridgewell/trace-mapping@0.3.9": version "0.3.9" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz" integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== dependencies: "@jridgewell/resolve-uri" "^3.0.3" @@ -1626,7 +1626,7 @@ "@leichtgewicht/ip-codec@^2.0.1": version "2.0.4" - resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b" + resolved "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz" integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== "@lezer/common@^1.0.0", "@lezer/common@^1.1.0": @@ -1650,21 +1650,21 @@ "@malept/cross-spawn-promise@^1.1.0": version "1.1.1" - resolved "https://registry.yarnpkg.com/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz#504af200af6b98e198bce768bc1730c6936ae01d" + resolved "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz" integrity sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ== dependencies: cross-spawn "^7.0.1" "@malept/cross-spawn-promise@^2.0.0": version "2.0.0" - resolved "https://registry.yarnpkg.com/@malept/cross-spawn-promise/-/cross-spawn-promise-2.0.0.tgz#d0772de1aa680a0bfb9ba2f32b4c828c7857cb9d" + resolved "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-2.0.0.tgz" integrity sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg== dependencies: cross-spawn "^7.0.1" "@malept/flatpak-bundler@^0.4.0": version "0.4.0" - resolved "https://registry.yarnpkg.com/@malept/flatpak-bundler/-/flatpak-bundler-0.4.0.tgz#e8a32c30a95d20c2b1bb635cc580981a06389858" + resolved "https://registry.npmjs.org/@malept/flatpak-bundler/-/flatpak-bundler-0.4.0.tgz" integrity sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q== dependencies: debug "^4.1.1" @@ -1674,7 +1674,7 @@ "@mdn/browser-compat-data@^5.2.34", "@mdn/browser-compat-data@^5.3.13": version "5.3.23" - resolved "https://registry.yarnpkg.com/@mdn/browser-compat-data/-/browser-compat-data-5.3.23.tgz#b662225a8b72482d940143a824b824677666bdae" + resolved "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-5.3.23.tgz" integrity sha512-UnUu2mvVam9CtEMR2+k7eEsbtrYAecmd3SWRrXGDJrAIddnE6Ln+SmihqNMwHRa64VfNkVFSV/mVphvlwky/Bw== "@nodelib/fs.scandir@2.1.5": @@ -1700,7 +1700,7 @@ "@npmcli/fs@^3.1.0": version "3.1.0" - resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-3.1.0.tgz#233d43a25a91d68c3a863ba0da6a3f00924a173e" + resolved "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz" integrity sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w== dependencies: semver "^7.3.5" @@ -1829,12 +1829,12 @@ "@pkgjs/parseargs@^0.11.0": version "0.11.0" - resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== "@pkgr/utils@^2.3.1": version "2.4.2" - resolved "https://registry.yarnpkg.com/@pkgr/utils/-/utils-2.4.2.tgz#9e638bbe9a6a6f165580dc943f138fd3309a2cbc" + resolved "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.2.tgz" integrity sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw== dependencies: cross-spawn "^7.0.3" @@ -1846,7 +1846,7 @@ "@pmmmwh/react-refresh-webpack-plugin@^0.5.11": version "0.5.11" - resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.11.tgz#7c2268cedaa0644d677e8c4f377bc8fb304f714a" + resolved "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.11.tgz" integrity sha512-7j/6vdTym0+qZ6u4XbSAxrWBGYSdCfTzySkj7WAFgDLmSyWlOrWvpyzxlFh5jtw9dn0oL/jtW+06XfFiisN3JQ== dependencies: ansi-html-community "^0.0.8" @@ -1861,17 +1861,12 @@ "@polka/url@^1.0.0-next.20": version "1.0.0-next.23" - resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.23.tgz#498e41218ab3b6a1419c735e5c6ae2c5ed609b6c" + resolved "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.23.tgz" integrity sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg== -"@remix-run/router@1.8.0": - version "1.8.0" - resolved "https://registry.npmjs.org/@remix-run/router/-/router-1.8.0.tgz" - integrity sha512-mrfKqIHnSZRyIzBcanNJmVQELTnX+qagEDlcKO90RgRBVOZGSGvZKeDihTRfWcqoDn5N/NkUcwWTccnpN18Tfg== - "@remix-run/router@1.9.0": version "1.9.0" - resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.9.0.tgz#9033238b41c4cbe1e961eccb3f79e2c588328cf6" + resolved "https://registry.npmjs.org/@remix-run/router/-/router-1.9.0.tgz" integrity sha512-bV63itrKBC0zdT27qYm6SDZHlkXwFL1xMBuhkn+X7l0+IIhNaH5wuuvZKp6eKhCD4KFhujhfhCT1YxXW6esUIA== "@rollup/pluginutils@^5.0.4": @@ -1885,7 +1880,7 @@ "@sentry-internal/tracing@7.73.0": version "7.73.0" - resolved "https://registry.yarnpkg.com/@sentry-internal/tracing/-/tracing-7.73.0.tgz#4838f31e41d23a6041ef4520519b80f788bf1cac" + resolved "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.73.0.tgz" integrity sha512-ig3WL/Nqp8nRQ52P205NaypGKNfIl/G+cIqge9xPW6zfRb5kJdM1YParw9GSJ1SPjEZBkBORGAML0on5H2FILw== dependencies: "@sentry/core" "7.73.0" @@ -1895,7 +1890,7 @@ "@sentry/browser@7.73.0": version "7.73.0" - resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.73.0.tgz#a8eaeb50cf16ca32f0039a81719c503d7045495f" + resolved "https://registry.npmjs.org/@sentry/browser/-/browser-7.73.0.tgz" integrity sha512-e301hUixcJ5+HNKCJwajFF5smF4opXEFSclyWsJuFNufv5J/1C1SDhbwG2JjBt5zzdSoKWJKT1ewR6vpICyoDw== dependencies: "@sentry-internal/tracing" "7.73.0" @@ -1907,7 +1902,7 @@ "@sentry/core@7.73.0": version "7.73.0" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.73.0.tgz#1caeeec44f42c4d58c06cc05dec39e5497b65aa3" + resolved "https://registry.npmjs.org/@sentry/core/-/core-7.73.0.tgz" integrity sha512-9FEz4Gq848LOgVN2OxJGYuQqxv7cIVw69VlAzWHEm3njt8mjvlTq+7UiFsGRo84+59V2FQuHxzA7vVjl90WfSg== dependencies: "@sentry/types" "7.73.0" @@ -1916,7 +1911,7 @@ "@sentry/electron@^4.13.0": version "4.13.0" - resolved "https://registry.yarnpkg.com/@sentry/electron/-/electron-4.13.0.tgz#f19ec7cd05871e343a8ebfc4961c3b6490d1f906" + resolved "https://registry.npmjs.org/@sentry/electron/-/electron-4.13.0.tgz" integrity sha512-rVBMGX8WHc/DOeqlWZnl/EFxBFJgI1Y6nJi7u1HWRcAadTFKB1fmbVLbhVreIsQVP0Mc2HjP3Vyy6UXZ9+Mq5A== dependencies: "@sentry/browser" "7.73.0" @@ -1930,7 +1925,7 @@ "@sentry/node@7.73.0": version "7.73.0" - resolved "https://registry.yarnpkg.com/@sentry/node/-/node-7.73.0.tgz#7eecf06689cd8f9d21587ca5cbfdc74543cc8c09" + resolved "https://registry.npmjs.org/@sentry/node/-/node-7.73.0.tgz" integrity sha512-i50bRfmgkRRx0XXUbg9jGD/RuznDJxJXc4rBILhoJuhl+BjRIaoXA3ayplfJn8JLZxsNh75uJaCq4IUK70SORw== dependencies: "@sentry-internal/tracing" "7.73.0" @@ -1944,7 +1939,7 @@ "@sentry/replay@7.73.0": version "7.73.0" - resolved "https://registry.yarnpkg.com/@sentry/replay/-/replay-7.73.0.tgz#4e6c522bac5c12f596ef76afe15ecb3807407669" + resolved "https://registry.npmjs.org/@sentry/replay/-/replay-7.73.0.tgz" integrity sha512-a8IC9SowBisLYD2IdLkXzx7gN4iVwHDJhQvLp2B8ARs1PyPjJ7gCxSMHeGrYp94V0gOXtorNYkrxvuX8ayPROA== dependencies: "@sentry/core" "7.73.0" @@ -1953,12 +1948,12 @@ "@sentry/types@7.73.0": version "7.73.0" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.73.0.tgz#6d811bbe413d319df0a592a672d6d72a94a8e716" + resolved "https://registry.npmjs.org/@sentry/types/-/types-7.73.0.tgz" integrity sha512-/v8++bly8jW7r4cP2wswYiiVpn7eLLcqwnfPUMeCQze4zj3F3nTRIKc9BGHzU0V+fhHa3RwRC2ksqTGq1oJMDg== "@sentry/utils@7.73.0": version "7.73.0" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.73.0.tgz#530cf023f7c395aa7708cd3824e5a45948449c10" + resolved "https://registry.npmjs.org/@sentry/utils/-/utils-7.73.0.tgz" integrity sha512-h3ZK/qpf4k76FhJV9uiSbvMz3V/0Ovy94C+5/9UgPMVCJXFmVsdw8n/dwANJ7LupVPfYP23xFGgebDMFlK1/2w== dependencies: "@sentry/types" "7.73.0" @@ -1971,19 +1966,19 @@ "@sindresorhus/is@^4.0.0": version "4.6.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" + resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz" integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== "@sinonjs/commons@^3.0.0": version "3.0.0" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.0.tgz#beb434fe875d965265e04722ccfc21df7f755d72" + resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz" integrity sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA== dependencies: type-detect "4.0.8" "@sinonjs/fake-timers@^10.0.2": version "10.3.0" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz#55fdff1ecab9f354019129daf4df0dd4d923ea66" + resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz" integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== dependencies: "@sinonjs/commons" "^3.0.0" @@ -2073,7 +2068,7 @@ "@svgr/plugin-svgo@8.1.0": version "8.1.0" - resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz#b115b7b967b564f89ac58feae89b88c3decd0f00" + resolved "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz" integrity sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA== dependencies: cosmiconfig "^8.1.3" @@ -2082,7 +2077,7 @@ "@svgr/webpack@^8.1.0": version "8.1.0" - resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-8.1.0.tgz#16f1b5346f102f89fda6ec7338b96a701d8be0c2" + resolved "https://registry.npmjs.org/@svgr/webpack/-/webpack-8.1.0.tgz" integrity sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA== dependencies: "@babel/core" "^7.21.3" @@ -2104,7 +2099,7 @@ "@szmarczak/http-timer@^4.0.5": version "4.0.6" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" + resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz" integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w== dependencies: defer-to-connect "^2.0.0" @@ -2123,7 +2118,7 @@ "@teamsupercell/typings-for-css-modules-loader@^2.5.2": version "2.5.2" - resolved "https://registry.yarnpkg.com/@teamsupercell/typings-for-css-modules-loader/-/typings-for-css-modules-loader-2.5.2.tgz#b29deee5ebf6dac48693a2039a3b68b5ad821c1d" + resolved "https://registry.npmjs.org/@teamsupercell/typings-for-css-modules-loader/-/typings-for-css-modules-loader-2.5.2.tgz" integrity sha512-3sqH2B4itcm5XgV1IHENt4NOaW7bOC1CwJr63vrdKWWyKVxNxtBM+ABVhJZYFCCVAwNy7ulA64z6HyQqw96m4A== dependencies: camelcase "^5.3.1" @@ -2134,7 +2129,7 @@ "@testing-library/dom@^9.0.0": version "9.3.3" - resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-9.3.3.tgz#108c23a5b0ef51121c26ae92eb3179416b0434f5" + resolved "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.3.tgz" integrity sha512-fB0R+fa3AUqbLHWyxXa2kGVtf1Fe1ZZFr0Zp6AIbIAzXb2mKbEXl+PCQNUOaq5lbTab5tfctfXRNsWXxa2f7Aw== dependencies: "@babel/code-frame" "^7.10.4" @@ -2148,7 +2143,7 @@ "@testing-library/jest-dom@^6.1.3": version "6.1.4" - resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-6.1.4.tgz#cf0835c33bc5ef00befb9e672b1e3e6a710e30e3" + resolved "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.1.4.tgz" integrity sha512-wpoYrCYwSZ5/AxcrjLxJmCU6I5QAJXslEeSiMQqaWmP2Kzpd1LvF/qxmAIW2qposULGWq2gw30GgVNFLSc2Jnw== dependencies: "@adobe/css-tools" "^4.3.1" @@ -2162,7 +2157,7 @@ "@testing-library/react@^14.0.0": version "14.0.0" - resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-14.0.0.tgz#59030392a6792450b9ab8e67aea5f3cc18d6347c" + resolved "https://registry.npmjs.org/@testing-library/react/-/react-14.0.0.tgz" integrity sha512-S04gSNJbYE30TlIMLTzv6QCTzt9AqIF5y6s6SzVFILNcNvbV/jU96GeiTPillGQo+Ny64M/5PV7klNYYgv5Dfg== dependencies: "@babel/runtime" "^7.12.5" @@ -2171,42 +2166,42 @@ "@tootallnate/once@2": version "2.0.0" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" + resolved "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz" integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== "@trysound/sax@0.2.0": version "0.2.0" - resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" + resolved "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz" integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== "@tsconfig/node10@^1.0.7": version "1.0.9" - resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" + resolved "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz" integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== "@tsconfig/node12@^1.0.7": version "1.0.11" - resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + resolved "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz" integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== "@tsconfig/node14@^1.0.0": version "1.0.3" - resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + resolved "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz" integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== "@tsconfig/node16@^1.0.2": version "1.0.4" - resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" + resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz" integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== "@types/aria-query@^5.0.1": version "5.0.2" - resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-5.0.2.tgz#6f1225829d89794fd9f891989c9ce667422d7f64" + resolved "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.2.tgz" integrity sha512-PHKZuMN+K5qgKIWhBodXzQslTo5P+K/6LqeKXS6O/4liIDdZqaX5RXrCK++LAw+y/nptN48YmUMFiQHRSWYwtQ== "@types/babel__core@^7.1.14": version "7.20.2" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.2.tgz#215db4f4a35d710256579784a548907237728756" + resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.2.tgz" integrity sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA== dependencies: "@babel/parser" "^7.20.7" @@ -2217,14 +2212,14 @@ "@types/babel__generator@*": version "7.6.5" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.5.tgz#281f4764bcbbbc51fdded0f25aa587b4ce14da95" + resolved "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.5.tgz" integrity sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w== dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": version "7.4.2" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.2.tgz#843e9f1f47c957553b0c374481dc4772921d6a6b" + resolved "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.2.tgz" integrity sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ== dependencies: "@babel/parser" "^7.1.0" @@ -2232,7 +2227,7 @@ "@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": version "7.20.2" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.2.tgz#4ddf99d95cfdd946ff35d2b65c978d9c9bf2645d" + resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.2.tgz" integrity sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw== dependencies: "@babel/types" "^7.20.7" @@ -2246,7 +2241,7 @@ "@types/body-parser@*": version "1.19.3" - resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.3.tgz#fb558014374f7d9e56c8f34bab2042a3a07d25cd" + resolved "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.3.tgz" integrity sha512-oyl4jvAfTGX9Bt6Or4H9ni1Z447/tQuxnZsytsCaExKlmJiU8sFgnIBRzJUpKwB5eWn9HuBYlUlVA74q/yN0eQ== dependencies: "@types/connect" "*" @@ -2254,14 +2249,14 @@ "@types/bonjour@^3.5.9": version "3.5.11" - resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.11.tgz#fbaa46a1529ea5c5e46cde36e4be6a880db55b84" + resolved "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.11.tgz" integrity sha512-isGhjmBtLIxdHBDl2xGwUzEM8AOyOvWsADWq7rqirdi/ZQoHnLWErHvsThcEzTX8juDRiZtzp2Qkv5bgNh6mAg== dependencies: "@types/node" "*" "@types/cacheable-request@^6.0.1": version "6.0.3" - resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183" + resolved "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz" integrity sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw== dependencies: "@types/http-cache-semantics" "*" @@ -2271,7 +2266,7 @@ "@types/connect-history-api-fallback@^1.3.5": version "1.5.1" - resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.1.tgz#6e5e3602d93bda975cebc3449e1a318340af9e20" + resolved "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.1.tgz" integrity sha512-iaQslNbARe8fctL5Lk+DsmgWOM83lM+7FzP0eQUJs1jd3kBE8NWqBTIT2S8SqQOJjxvt2eyIjpOuYeRXq2AdMw== dependencies: "@types/express-serve-static-core" "*" @@ -2279,14 +2274,14 @@ "@types/connect@*": version "3.4.36" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.36.tgz#e511558c15a39cb29bd5357eebb57bd1459cd1ab" + resolved "https://registry.npmjs.org/@types/connect/-/connect-3.4.36.tgz" integrity sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w== dependencies: "@types/node" "*" "@types/debug@^4.1.6": version "4.1.9" - resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.9.tgz#906996938bc672aaf2fb8c0d3733ae1dda05b005" + resolved "https://registry.npmjs.org/@types/debug/-/debug-4.1.9.tgz" integrity sha512-8Hz50m2eoS56ldRlepxSBa6PWEVCtzUo/92HgLc2qTMnotJNIm7xP+UZhyWoYsyOdd5dxZ+NZLb24rsKyFs2ow== dependencies: "@types/ms" "*" @@ -2300,7 +2295,7 @@ "@types/eslint-scope@^3.7.3": version "3.7.5" - resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.5.tgz#e28b09dbb1d9d35fdfa8a884225f00440dfc5a3e" + resolved "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.5.tgz" integrity sha512-JNvhIEyxVW6EoMIFIvj93ZOywYFatlpu9deeH6eSx6PE3WHYvHaQtmHmQeNw7aA81bYGBPPQqdtBm6b1SsQMmA== dependencies: "@types/eslint" "*" @@ -2308,7 +2303,7 @@ "@types/eslint@*": version "8.44.4" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.44.4.tgz#28eaff82e1ca0a96554ec5bb0188f10ae1a74c2f" + resolved "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.4.tgz" integrity sha512-lOzjyfY/D9QR4hY9oblZ76B90MYTB3RrQ4z2vBIJKj9ROCRqdkYl2gSUx1x1a4IWPjKJZLL4Aw1Zfay7eMnmnA== dependencies: "@types/estree" "*" @@ -2321,7 +2316,7 @@ "@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33": version "4.17.37" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.37.tgz#7e4b7b59da9142138a2aaa7621f5abedce8c7320" + resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.37.tgz" integrity sha512-ZohaCYTgGFcOP7u6aJOhY9uIZQgZ2vxC2yWoArY+FeDXlqeH66ZVBjgvg+RLVAS/DWNq4Ap9ZXu1+SUQiiWYMg== dependencies: "@types/node" "*" @@ -2331,7 +2326,7 @@ "@types/express@*", "@types/express@^4.17.13": version "4.17.19" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.19.tgz#6ff9b4851fda132c5d3dcd2f89fdb6a7a0031ced" + resolved "https://registry.npmjs.org/@types/express/-/express-4.17.19.tgz" integrity sha512-UtOfBtzN9OvpZPPbnnYunfjM7XCI4jyk1NvnFhTVz5krYAnW4o5DCoIekvms+8ApqhB4+9wSge1kBijdfTSmfg== dependencies: "@types/body-parser" "*" @@ -2341,14 +2336,14 @@ "@types/fs-extra@9.0.13", "@types/fs-extra@^9.0.11": version "9.0.13" - resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-9.0.13.tgz#7594fbae04fe7f1918ce8b3d213f74ff44ac1f45" + resolved "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz" integrity sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA== dependencies: "@types/node" "*" "@types/graceful-fs@^4.1.3": version "4.1.7" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.7.tgz#30443a2e64fd51113bc3e2ba0914d47109695e2a" + resolved "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.7.tgz" integrity sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw== dependencies: "@types/node" "*" @@ -2363,22 +2358,22 @@ "@types/html-minifier-terser@^6.0.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35" + resolved "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz" integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== "@types/http-cache-semantics@*": version "4.0.2" - resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.2.tgz#abe102d06ccda1efdf0ed98c10ccf7f36a785a41" + resolved "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.2.tgz" integrity sha512-FD+nQWA2zJjh4L9+pFXqWOi0Hs1ryBCfI+985NjluQ1p8EYtoLvjLOKidXBtZ4/IcxDX4o8/E8qDS3540tNliw== "@types/http-errors@*": version "2.0.2" - resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.2.tgz#a86e00bbde8950364f8e7846687259ffcd96e8c2" + resolved "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.2.tgz" integrity sha512-lPG6KlZs88gef6aD85z3HNkztpj7w2R7HmR3gygjfXCQmsLloWNARFkMuzKiiY8FGdh1XDpgBdrSf4aKDiA7Kg== "@types/http-proxy@^1.17.8": version "1.17.12" - resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.12.tgz#86e849e9eeae0362548803c37a0a1afc616bd96b" + resolved "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.12.tgz" integrity sha512-kQtujO08dVtQ2wXAuSFfk9ASy3sug4+ogFR8Kd8UgP8PEuc1/G/8yjYRmp//PcDNJEUKOza/MrQu15bouEUCiw== dependencies: "@types/node" "*" @@ -2412,7 +2407,7 @@ "@types/jsdom@^20.0.0": version "20.0.1" - resolved "https://registry.yarnpkg.com/@types/jsdom/-/jsdom-20.0.1.tgz#07c14bc19bd2f918c1929541cdaacae894744808" + resolved "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz" integrity sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ== dependencies: "@types/node" "*" @@ -2421,17 +2416,17 @@ "@types/json-schema@*", "@types/json-schema@^7.0.12", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": version "7.0.13" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.13.tgz#02c24f4363176d2d18fc8b70b9f3c54aba178a85" + resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.13.tgz" integrity sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ== "@types/json5@^0.0.29": version "0.0.29" - resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== "@types/keyv@^3.1.4": version "3.1.4" - resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" + resolved "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz" integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg== dependencies: "@types/node" "*" @@ -2443,22 +2438,22 @@ "@types/mime@*": version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.2.tgz#c1ae807f13d308ee7511a5b81c74f327028e66e8" + resolved "https://registry.npmjs.org/@types/mime/-/mime-3.0.2.tgz" integrity sha512-Wj+fqpTLtTbG7c0tH47dkahefpLKEbB+xAZuLq7b4/IDHPl/n6VoXcyUQ2bypFlbSwvCr0y+bD4euTTqTJsPxQ== "@types/mime@^1": version "1.3.3" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.3.tgz#bbe64987e0eb05de150c305005055c7ad784a9ce" + resolved "https://registry.npmjs.org/@types/mime/-/mime-1.3.3.tgz" integrity sha512-Ys+/St+2VF4+xuY6+kDIXGxbNRO0mesVg0bbxEfB97Od1Vjpjx9KD1qxs64Gcb3CWPirk9Xe+PT4YiiHQ9T+eg== "@types/mixpanel-browser@^2.47.3": version "2.47.3" - resolved "https://registry.yarnpkg.com/@types/mixpanel-browser/-/mixpanel-browser-2.47.3.tgz#1c4c96c946aac102e8a4ed941a9ebaae9ff04f8a" + resolved "https://registry.npmjs.org/@types/mixpanel-browser/-/mixpanel-browser-2.47.3.tgz" integrity sha512-lum9ZdfLihJ89XoCrBjB8le/Vg6ohYSR2/3AdfLWGZdhUBEgftncDO9+0uW08FSN6SLqy2s9zCf55YV5sNLNYA== "@types/ms@*": version "0.7.32" - resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.32.tgz#f6cd08939ae3ad886fcc92ef7f0109dacddf61ab" + resolved "https://registry.npmjs.org/@types/ms/-/ms-0.7.32.tgz" integrity sha512-xPSg0jm4mqgEkNhowKgZFBNtwoEwF6gJ4Dhww+GFpm3IgtNseHQZ5IqdNwnquZEoANxyDAKDRAdVo4Z72VvD/g== "@types/node@*", "@types/node@^16.11.6": @@ -2468,17 +2463,17 @@ "@types/node@20.6.2": version "20.6.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.6.2.tgz#a065925409f59657022e9063275cd0b9bd7e1b12" + resolved "https://registry.npmjs.org/@types/node/-/node-20.6.2.tgz" integrity sha512-Y+/1vGBHV/cYk6OI1Na/LHzwnlNCAfU3ZNGrc1LdRe/LAIbdDPTTv/HU3M7yXN448aTVDq3eKRm2cg7iKLb8gw== "@types/node@^18.11.18": version "18.18.5" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.18.5.tgz#afc0fd975df946d6e1add5bbf98264225b212244" + resolved "https://registry.npmjs.org/@types/node/-/node-18.18.5.tgz" integrity sha512-4slmbtwV59ZxitY4ixUZdy1uRLf9eSIvBWPQxNjhHYWEtn0FryfKpyS2cvADYXTayWdKEIsJengncrVvkI4I6A== "@types/plist@^3.0.1": version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/plist/-/plist-3.0.3.tgz#8571d797ed09e0ee2700f7e40bbdec7fd80966ef" + resolved "https://registry.npmjs.org/@types/plist/-/plist-3.0.3.tgz" integrity sha512-DXkBoKc7jwUR0p439icInmXXMJNhoImdpOrrgA5/nDFK7LVtcJ9MyQNKhJEKpEztnHGWnNWMWLOIR62By0Ln0A== dependencies: "@types/node" "*" @@ -2491,17 +2486,17 @@ "@types/qs@*": version "6.9.8" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.8.tgz#f2a7de3c107b89b441e071d5472e6b726b4adf45" + resolved "https://registry.npmjs.org/@types/qs/-/qs-6.9.8.tgz" integrity sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg== "@types/range-parser@*": version "1.2.5" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.5.tgz#38bd1733ae299620771bd414837ade2e57757498" + resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.5.tgz" integrity sha512-xrO9OoVPqFuYyR/loIHjnbvvyRZREYKLjxV4+dY6v3FQR3stQ9ZxIGkaclF7YhI9hfjpuTbu14hZEy94qKLtOA== "@types/react-dom@^18.0.0", "@types/react-dom@^18.2.7": version "18.2.13" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.13.tgz#89cd7f9ec8b28c8b6f0392b9591671fb4a9e96b7" + resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.13.tgz" integrity sha512-eJIUv7rPP+EC45uNYp/ThhSpE16k22VJUknt5OLoH9tbXoi8bMhwLf5xRuWMywamNbWzhrSmU7IBJfPup1+3fw== dependencies: "@types/react" "*" @@ -2515,7 +2510,7 @@ "@types/react-test-renderer@^18.0.1": version "18.0.3" - resolved "https://registry.yarnpkg.com/@types/react-test-renderer/-/react-test-renderer-18.0.3.tgz#67922bf5e5f0096581b1efd67dcdeabdd400cfea" + resolved "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-18.0.3.tgz" integrity sha512-4wcNLnY6nIT+L6g94CpzL4CXX2P18JvKPU9CDlaHr3DnbP3GiaQLhDotJqjWlVqOcE4UhLRjp0MtxqwuNKONnA== dependencies: "@types/react" "*" @@ -2531,7 +2526,7 @@ "@types/react@^18.2.21": version "18.2.28" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.28.tgz#86877465c0fcf751659a36c769ecedfcfacee332" + resolved "https://registry.npmjs.org/@types/react/-/react-18.2.28.tgz" integrity sha512-ad4aa/RaaJS3hyGz0BGegdnSRXQBkd1CCYDCdNjBPg90UUpLgo+WlJqb9fMYUxtehmzF3PJaTWqRZjko6BRzBg== dependencies: "@types/prop-types" "*" @@ -2540,14 +2535,14 @@ "@types/responselike@^1.0.0": version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.1.tgz#1dd57e54509b3b95c7958e52709567077019d65d" + resolved "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.1.tgz" integrity sha512-TiGnitEDxj2X0j+98Eqk5lv/Cij8oHd32bU4D/Yw6AOq7vvTk0gSD2GPj0G/HkvhMoVsdlhYF4yqqlyPBTM6Sg== dependencies: "@types/node" "*" "@types/retry@0.12.0": version "0.12.0" - resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" + resolved "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz" integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== "@types/scheduler@*": @@ -2557,12 +2552,12 @@ "@types/semver@^7.3.12", "@types/semver@^7.5.0": version "7.5.3" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.3.tgz#9a726e116beb26c24f1ccd6850201e1246122e04" + resolved "https://registry.npmjs.org/@types/semver/-/semver-7.5.3.tgz" integrity sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw== "@types/send@*": version "0.17.2" - resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.2.tgz#af78a4495e3c2b79bfbdac3955fdd50e03cc98f2" + resolved "https://registry.npmjs.org/@types/send/-/send-0.17.2.tgz" integrity sha512-aAG6yRf6r0wQ29bkS+x97BIs64ZLxeE/ARwyS6wrldMm3C1MdKwCcnnEwMC1slI8wuxJOpiUH9MioC0A0i+GJw== dependencies: "@types/mime" "^1" @@ -2570,14 +2565,14 @@ "@types/serve-index@^1.9.1": version "1.9.2" - resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.2.tgz#cb26e775678a8526b73a5d980a147518740aaecd" + resolved "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.2.tgz" integrity sha512-asaEIoc6J+DbBKXtO7p2shWUpKacZOoMBEGBgPG91P8xhO53ohzHWGCs4ScZo5pQMf5ukQzVT9fhX1WzpHihig== dependencies: "@types/express" "*" "@types/serve-static@*", "@types/serve-static@^1.13.10": version "1.15.3" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.3.tgz#2cfacfd1fd4520bbc3e292cca432d5e8e2e3ee61" + resolved "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.3.tgz" integrity sha512-yVRvFsEMrv7s0lGhzrggJjNOSmZCdgCjw9xWrPr/kNNLp6FaDfMC1KaYl3TSJ0c58bECwNBMoQrZJ8hA8E1eFg== dependencies: "@types/http-errors" "*" @@ -2586,7 +2581,7 @@ "@types/sockjs@^0.3.33": version "0.3.34" - resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.34.tgz#43e10e549b36d2ba2589278f00f81b5d7ccda167" + resolved "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.34.tgz" integrity sha512-R+n7qBFnm/6jinlteC9DBL5dGiDGjWAvjo4viUanpnc/dG1y7uDoacXPIQ/PQEg1fI912SMHIa014ZjRpvDw4g== dependencies: "@types/node" "*" @@ -2598,24 +2593,24 @@ "@types/terser-webpack-plugin@^5.0.4": version "5.2.0" - resolved "https://registry.yarnpkg.com/@types/terser-webpack-plugin/-/terser-webpack-plugin-5.2.0.tgz#6aaec696593216917f9f03266bed222f8253483b" + resolved "https://registry.npmjs.org/@types/terser-webpack-plugin/-/terser-webpack-plugin-5.2.0.tgz" integrity sha512-iHDR2pRfFjGyDqCALX2tgUgFtGoQf2AJhKpC2XD1IMBQVJF2bny6WChGRDKj9eaZJl4F2RmvBhxJNtVPj7aTRw== dependencies: terser-webpack-plugin "*" "@types/tough-cookie@*": version "4.0.3" - resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.3.tgz#3d06b6769518450871fbc40770b7586334bdfd90" + resolved "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.3.tgz" integrity sha512-THo502dA5PzG/sfQH+42Lw3fvmYkceefOspdCwpHRul8ik2Jv1K8I5OZz1AT3/rs46kwgMCe9bSBmDLYkkOMGg== "@types/verror@^1.10.3": version "1.10.7" - resolved "https://registry.yarnpkg.com/@types/verror/-/verror-1.10.7.tgz#7e2ee21514355a7ae354fa151d96856d18531f72" + resolved "https://registry.npmjs.org/@types/verror/-/verror-1.10.7.tgz" integrity sha512-4c5F4T0qMSoXq1KHx7WV1FMuD2h0xdaFoJ7HSVWUfQ8w5YbqCwLOA8K7/yy1I+Txuzvm417dnPUaLmqazX1F7g== "@types/webpack-bundle-analyzer@^4.6.0": version "4.6.1" - resolved "https://registry.yarnpkg.com/@types/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.6.1.tgz#207adeda2ef8084ab3ec6ccdf27c74bfa826925d" + resolved "https://registry.npmjs.org/@types/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.6.1.tgz" integrity sha512-MQ9GBzu8N7bsjmE9xtWe9JUrRUsPljKxS8fd5EdSIU/x+/U0Ga8f0OsVJZTX1yWF87xZSt0Ai1Iaiwi+Gq+ugA== dependencies: "@types/node" "*" @@ -2624,7 +2619,7 @@ "@types/ws@^8.5.5": version "8.5.7" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.7.tgz#1ca585074fe5d2c81dec7a3d451f244a2a6d83cb" + resolved "https://registry.npmjs.org/@types/ws/-/ws-8.5.7.tgz" integrity sha512-6UrLjiDUvn40CMrAubXuIVtj2PEfKDffJS7ychvnPU44j+KVeXmdHHTgqcM/dxLUTHxlXHiFM8Skmb8ozGdTnQ== dependencies: "@types/node" "*" @@ -2643,14 +2638,14 @@ "@types/yauzl@^2.9.1": version "2.10.1" - resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.1.tgz#4e8f299f0934d60f36c74f59cb5a8483fd786691" + resolved "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.1.tgz" integrity sha512-CHzgNU3qYBnp/O4S3yv2tXPlvMTq0YWSTVg2/JYLqWZGHwwgJGAwd00poay/11asPq8wLFwHzubyInqHIFmmiw== dependencies: "@types/node" "*" "@typescript-eslint/eslint-plugin@^6.7.0": version "6.7.5" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.5.tgz#f4024b9f63593d0c2b5bd6e4ca027e6f30934d4f" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.5.tgz" integrity sha512-JhtAwTRhOUcP96D0Y6KYnwig/MRQbOoLGXTON2+LlyB/N35SP9j1boai2zzwXb7ypKELXMx3DVk9UTaEq1vHEw== dependencies: "@eslint-community/regexpp" "^4.5.1" @@ -2667,7 +2662,7 @@ "@typescript-eslint/parser@^6.7.0": version "6.7.5" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.7.5.tgz#8d7ca3d1fbd9d5a58cc4d30b2aa797a760137886" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.7.5.tgz" integrity sha512-bIZVSGx2UME/lmhLcjdVc7ePBwn7CLqKarUBL4me1C5feOd663liTGjMBGVcGr+BhnSLeP4SgwdvNnnkbIdkCw== dependencies: "@typescript-eslint/scope-manager" "6.7.5" @@ -2678,7 +2673,7 @@ "@typescript-eslint/scope-manager@5.62.0": version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz" integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== dependencies: "@typescript-eslint/types" "5.62.0" @@ -2686,7 +2681,7 @@ "@typescript-eslint/scope-manager@6.7.5": version "6.7.5" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.7.5.tgz#1cf33b991043886cd67f4f3600b8e122fc14e711" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.7.5.tgz" integrity sha512-GAlk3eQIwWOJeb9F7MKQ6Jbah/vx1zETSDw8likab/eFcqkjSD7BI75SDAeC5N2L0MmConMoPvTsmkrg71+B1A== dependencies: "@typescript-eslint/types" "6.7.5" @@ -2694,7 +2689,7 @@ "@typescript-eslint/type-utils@6.7.5": version "6.7.5" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.7.5.tgz#0a65949ec16588d8956f6d967f7d9c84ddb2d72a" + resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.7.5.tgz" integrity sha512-Gs0qos5wqxnQrvpYv+pf3XfcRXW6jiAn9zE/K+DlmYf6FcpxeNYN0AIETaPR7rHO4K2UY+D0CIbDP9Ut0U4m1g== dependencies: "@typescript-eslint/typescript-estree" "6.7.5" @@ -2704,17 +2699,17 @@ "@typescript-eslint/types@5.62.0": version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz" integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== "@typescript-eslint/types@6.7.5": version "6.7.5" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.7.5.tgz#4571320fb9cf669de9a95d9849f922c3af809790" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.5.tgz" integrity sha512-WboQBlOXtdj1tDFPyIthpKrUb+kZf2VroLZhxKa/VlwLlLyqv/PwUNgL30BlTVZV1Wu4Asu2mMYPqarSO4L5ZQ== "@typescript-eslint/typescript-estree@5.62.0": version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz" integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== dependencies: "@typescript-eslint/types" "5.62.0" @@ -2727,7 +2722,7 @@ "@typescript-eslint/typescript-estree@6.7.5": version "6.7.5" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.5.tgz#4578de1a26e9f24950f029a4f00d1bfe41f15a39" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.5.tgz" integrity sha512-NhJiJ4KdtwBIxrKl0BqG1Ur+uw7FiOnOThcYx9DpOGJ/Abc9z2xNzLeirCG02Ig3vkvrc2qFLmYSSsaITbKjlg== dependencies: "@typescript-eslint/types" "6.7.5" @@ -2740,7 +2735,7 @@ "@typescript-eslint/utils@6.7.5": version "6.7.5" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.7.5.tgz#ab847b53d6b65e029314b8247c2336843dba81ab" + resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.7.5.tgz" integrity sha512-pfRRrH20thJbzPPlPc4j0UNGvH1PjPlhlCMq4Yx7EGjV7lvEeGX0U6MJYe8+SyFutWgSHsdbJ3BXzZccYggezA== dependencies: "@eslint-community/eslint-utils" "^4.4.0" @@ -2753,7 +2748,7 @@ "@typescript-eslint/utils@^5.10.0": version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" + resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz" integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== dependencies: "@eslint-community/eslint-utils" "^4.2.0" @@ -2767,7 +2762,7 @@ "@typescript-eslint/visitor-keys@5.62.0": version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz" integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== dependencies: "@typescript-eslint/types" "5.62.0" @@ -2775,7 +2770,7 @@ "@typescript-eslint/visitor-keys@6.7.5": version "6.7.5" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.5.tgz#84c68d6ceb5b12d5246b918b84f2b79affd6c2f1" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.5.tgz" integrity sha512-3MaWdDZtLlsexZzDSdQWsFQ9l9nL8B80Z4fImSpyllFC/KLqWQRdEcB+gGGO+N3Q2uL40EsG66wZLsohPxNXvg== dependencies: "@typescript-eslint/types" "6.7.5" @@ -2829,7 +2824,7 @@ "@webassemblyjs/ast@1.11.6", "@webassemblyjs/ast@^1.11.5": version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.6.tgz#db046555d3c413f8966ca50a95176a0e2c642e24" + resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz" integrity sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q== dependencies: "@webassemblyjs/helper-numbers" "1.11.6" @@ -2837,22 +2832,22 @@ "@webassemblyjs/floating-point-hex-parser@1.11.6": version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz#dacbcb95aff135c8260f77fa3b4c5fea600a6431" + resolved "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz" integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw== "@webassemblyjs/helper-api-error@1.11.6": version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz#6132f68c4acd59dcd141c44b18cbebbd9f2fa768" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz" integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== "@webassemblyjs/helper-buffer@1.11.6": version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz#b66d73c43e296fd5e88006f18524feb0f2c7c093" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz" integrity sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA== "@webassemblyjs/helper-numbers@1.11.6": version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz#cbce5e7e0c1bd32cf4905ae444ef64cea919f1b5" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz" integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g== dependencies: "@webassemblyjs/floating-point-hex-parser" "1.11.6" @@ -2861,12 +2856,12 @@ "@webassemblyjs/helper-wasm-bytecode@1.11.6": version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz#bb2ebdb3b83aa26d9baad4c46d4315283acd51e9" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz" integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== "@webassemblyjs/helper-wasm-section@1.11.6": version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz#ff97f3863c55ee7f580fd5c41a381e9def4aa577" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz" integrity sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g== dependencies: "@webassemblyjs/ast" "1.11.6" @@ -2876,26 +2871,26 @@ "@webassemblyjs/ieee754@1.11.6": version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz#bb665c91d0b14fffceb0e38298c329af043c6e3a" + resolved "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz" integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg== dependencies: "@xtuc/ieee754" "^1.2.0" "@webassemblyjs/leb128@1.11.6": version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz#70e60e5e82f9ac81118bc25381a0b283893240d7" + resolved "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz" integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ== dependencies: "@xtuc/long" "4.2.2" "@webassemblyjs/utf8@1.11.6": version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#90f8bc34c561595fe156603be7253cdbcd0fab5a" + resolved "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz" integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== "@webassemblyjs/wasm-edit@^1.11.5": version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz#c72fa8220524c9b416249f3d94c2958dfe70ceab" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz" integrity sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw== dependencies: "@webassemblyjs/ast" "1.11.6" @@ -2909,7 +2904,7 @@ "@webassemblyjs/wasm-gen@1.11.6": version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz#fb5283e0e8b4551cc4e9c3c0d7184a65faf7c268" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz" integrity sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA== dependencies: "@webassemblyjs/ast" "1.11.6" @@ -2920,7 +2915,7 @@ "@webassemblyjs/wasm-opt@1.11.6": version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz#d9a22d651248422ca498b09aa3232a81041487c2" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz" integrity sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g== dependencies: "@webassemblyjs/ast" "1.11.6" @@ -2930,7 +2925,7 @@ "@webassemblyjs/wasm-parser@1.11.6", "@webassemblyjs/wasm-parser@^1.11.5": version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz#bb85378c527df824004812bbdb784eea539174a1" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz" integrity sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ== dependencies: "@webassemblyjs/ast" "1.11.6" @@ -2942,7 +2937,7 @@ "@webassemblyjs/wast-printer@1.11.6": version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz#a7bf8dd7e362aeb1668ff43f35cb849f188eff20" + resolved "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz" integrity sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A== dependencies: "@webassemblyjs/ast" "1.11.6" @@ -2950,42 +2945,42 @@ "@webpack-cli/configtest@^2.1.1": version "2.1.1" - resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-2.1.1.tgz#3b2f852e91dac6e3b85fb2a314fb8bef46d94646" + resolved "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz" integrity sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw== "@webpack-cli/info@^2.0.2": version "2.0.2" - resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-2.0.2.tgz#cc3fbf22efeb88ff62310cf885c5b09f44ae0fdd" + resolved "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz" integrity sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A== "@webpack-cli/serve@^2.0.5": version "2.0.5" - resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-2.0.5.tgz#325db42395cd49fe6c14057f9a900e427df8810e" + resolved "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz" integrity sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ== "@xmldom/xmldom@^0.8.8": version "0.8.10" - resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.8.10.tgz#a1337ca426aa61cef9fe15b5b28e340a72f6fa99" + resolved "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz" integrity sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw== "@xtuc/ieee754@^1.2.0": version "1.2.0" - resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + resolved "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz" integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== "@xtuc/long@4.2.2": version "4.2.2" - resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + resolved "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== abab@^2.0.6: version "2.0.6" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" + resolved "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz" integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== abbrev@^1.0.0: version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== abort-controller@^3.0.0: @@ -2997,7 +2992,7 @@ abort-controller@^3.0.0: accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: version "1.3.8" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz" integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== dependencies: mime-types "~2.1.34" @@ -3005,7 +3000,7 @@ accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: acorn-globals@^7.0.0: version "7.0.1" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-7.0.1.tgz#0dbf05c44fa7c94332914c02066d5beff62c40c3" + resolved "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz" integrity sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q== dependencies: acorn "^8.1.0" @@ -3013,7 +3008,7 @@ acorn-globals@^7.0.0: acorn-import-assertions@^1.9.0: version "1.9.0" - resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" + resolved "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz" integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== acorn-jsx@^5.3.2: @@ -3023,7 +3018,7 @@ acorn-jsx@^5.3.2: acorn-walk@^8.0.0, acorn-walk@^8.0.2, acorn-walk@^8.1.1: version "8.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz" integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== acorn@^8.0.4, acorn@^8.1.0, acorn@^8.4.1, acorn@^8.7.1, acorn@^8.8.1, acorn@^8.8.2, acorn@^8.9.0: @@ -3033,19 +3028,19 @@ acorn@^8.0.4, acorn@^8.1.0, acorn@^8.4.1, acorn@^8.7.1, acorn@^8.8.1, acorn@^8.8 address@^1.0.1: version "1.2.2" - resolved "https://registry.yarnpkg.com/address/-/address-1.2.2.tgz#2b5248dac5485a6390532c6a517fda2e3faac89e" + resolved "https://registry.npmjs.org/address/-/address-1.2.2.tgz" integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA== agent-base@6, agent-base@^6.0.2: version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== dependencies: debug "4" agentkeepalive@^4.2.1: version "4.5.0" - resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.5.0.tgz#2673ad1389b3c418c5a20c5d7364f93ca04be923" + resolved "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz" integrity sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew== dependencies: humanize-ms "^1.2.1" @@ -3060,19 +3055,19 @@ aggregate-error@^3.0.0: ajv-formats@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" + resolved "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz" integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== dependencies: ajv "^8.0.0" ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: version "3.5.2" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== ajv-keywords@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" + resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz" integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== dependencies: fast-deep-equal "^3.1.3" @@ -3089,7 +3084,7 @@ ajv@^6.10.0, ajv@^6.12.0, ajv@^6.12.4, ajv@^6.12.5: ajv@^8.0.0, ajv@^8.9.0: version "8.12.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz" integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== dependencies: fast-deep-equal "^3.1.1" @@ -3106,7 +3101,7 @@ ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: ansi-html-community@^0.0.8: version "0.0.8" - resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" + resolved "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz" integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== ansi-regex@^5.0.1: @@ -3145,7 +3140,7 @@ ansi-styles@^6.0.0: ansi-styles@^6.1.0: version "6.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== ansi-to-html@^0.7.2: @@ -3165,12 +3160,12 @@ anymatch@^3.0.3, anymatch@~3.1.2: app-builder-bin@4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/app-builder-bin/-/app-builder-bin-4.0.0.tgz#1df8e654bd1395e4a319d82545c98667d7eed2f0" + resolved "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-4.0.0.tgz" integrity sha512-xwdG0FJPQMe0M0UA4Tz0zEB8rBJTRA5a476ZawAqiBkMv16GRK5xpXThOjMaEOFnZ6zabejjG4J3da0SXG63KA== app-builder-lib@24.6.4: version "24.6.4" - resolved "https://registry.yarnpkg.com/app-builder-lib/-/app-builder-lib-24.6.4.tgz#5bf77dd89d3ee557bc615b9ddfaf383f3e51577b" + resolved "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-24.6.4.tgz" integrity sha512-m9931WXb83teb32N0rKg+ulbn6+Hl8NV5SUpVDOVz9MWOXfhV6AQtTdftf51zJJvCQnQugGtSqoLvgw6mdF/Rg== dependencies: "7zip-bin" "~5.1.1" @@ -3204,12 +3199,12 @@ app-builder-lib@24.6.4: "aproba@^1.0.3 || ^2.0.0": version "2.0.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" + resolved "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz" integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== are-we-there-yet@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz#679df222b278c64f2cdba1175cdc00b0d96164bd" + resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz" integrity sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg== dependencies: delegates "^1.0.0" @@ -3217,12 +3212,12 @@ are-we-there-yet@^3.0.0: arg@^4.1.0: version "4.1.3" - resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz" integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== argparse@^1.0.7: version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== dependencies: sprintf-js "~1.0.2" @@ -3234,21 +3229,21 @@ argparse@^2.0.1: aria-query@5.1.3: version "5.1.3" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e" + resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz" integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== dependencies: deep-equal "^2.0.5" aria-query@^5.0.0, aria-query@^5.1.3: version "5.3.0" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e" + resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz" integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== dependencies: dequal "^2.0.3" array-buffer-byte-length@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" + resolved "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz" integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== dependencies: call-bind "^1.0.2" @@ -3256,17 +3251,17 @@ array-buffer-byte-length@^1.0.0: array-flatten@1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== array-flatten@^2.1.2: version "2.1.2" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" + resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz" integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== array-includes@^3.1.6: version "3.1.7" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.7.tgz#8cd2e01b26f7a3086cbc87271593fe921c62abda" + resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz" integrity sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ== dependencies: call-bind "^1.0.2" @@ -3277,12 +3272,12 @@ array-includes@^3.1.6: array-union@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== array.prototype.find@^2.2.1: version "2.2.2" - resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.2.2.tgz#e862cf891e725d8f2a10e5e42d750629faaabd32" + resolved "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.2.2.tgz" integrity sha512-DRumkfW97iZGOfn+lIXbkVrXL04sfYKX+EfOodo8XboR5sxPDVvOjZTF/rysusa9lmhmSOeD6Vp6RKQP+eP4Tg== dependencies: call-bind "^1.0.2" @@ -3292,7 +3287,7 @@ array.prototype.find@^2.2.1: array.prototype.findlastindex@^1.2.2: version "1.2.3" - resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz#b37598438f97b579166940814e2c0493a4f50207" + resolved "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz" integrity sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA== dependencies: call-bind "^1.0.2" @@ -3303,7 +3298,7 @@ array.prototype.findlastindex@^1.2.2: array.prototype.flat@^1.3.1: version "1.3.2" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" + resolved "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz" integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== dependencies: call-bind "^1.0.2" @@ -3313,7 +3308,7 @@ array.prototype.flat@^1.3.1: array.prototype.flatmap@^1.3.1: version "1.3.2" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" + resolved "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz" integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== dependencies: call-bind "^1.0.2" @@ -3323,7 +3318,7 @@ array.prototype.flatmap@^1.3.1: array.prototype.tosorted@^1.1.1: version "1.1.2" - resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz#620eff7442503d66c799d95503f82b475745cefd" + resolved "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz" integrity sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg== dependencies: call-bind "^1.0.2" @@ -3334,7 +3329,7 @@ array.prototype.tosorted@^1.1.1: arraybuffer.prototype.slice@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz#98bd561953e3e74bb34938e77647179dfe6e9f12" + resolved "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz" integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw== dependencies: array-buffer-byte-length "^1.0.0" @@ -3352,19 +3347,19 @@ asap@~2.0.3: assert-plus@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + resolved "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== ast-metadata-inferer@^0.8.0: version "0.8.0" - resolved "https://registry.yarnpkg.com/ast-metadata-inferer/-/ast-metadata-inferer-0.8.0.tgz#0f94c3425e310d8da45823ab2161142e3f134343" + resolved "https://registry.npmjs.org/ast-metadata-inferer/-/ast-metadata-inferer-0.8.0.tgz" integrity sha512-jOMKcHht9LxYIEQu+RVd22vtgrPaVCtDRQ/16IGmurdzxvYbDd5ynxjnyrzLnieG96eTcAyaoj/wN/4/1FyyeA== dependencies: "@mdn/browser-compat-data" "^5.2.34" ast-types-flow@^0.0.7: version "0.0.7" - resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" + resolved "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz" integrity sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag== astral-regex@^2.0.0: @@ -3374,39 +3369,39 @@ astral-regex@^2.0.0: async-exit-hook@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/async-exit-hook/-/async-exit-hook-2.0.1.tgz#8bd8b024b0ec9b1c01cccb9af9db29bd717dfaf3" + resolved "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz" integrity sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw== async@^3.2.3: version "3.2.4" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" + resolved "https://registry.npmjs.org/async/-/async-3.2.4.tgz" integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== asynciterator.prototype@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz#8c5df0514936cdd133604dfcc9d3fb93f09b2b62" + resolved "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz" integrity sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg== dependencies: has-symbols "^1.0.3" asynckit@^0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== at-least-node@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + resolved "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== available-typed-arrays@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" + resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz" integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== axe-core@^4.6.2: version "4.8.2" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.8.2.tgz#2f6f3cde40935825cf4465e3c1c9e77b240ff6ae" + resolved "https://registry.npmjs.org/axe-core/-/axe-core-4.8.2.tgz" integrity sha512-/dlp0fxyM3R8YW7MFzaHWXrf4zzbr0vaYb23VBFCl83R7nWNPg/yaQw2Dc8jzCMmDVLhSdzH8MjrsuIUuvX+6g== axios@^0.21.4: @@ -3418,14 +3413,14 @@ axios@^0.21.4: axobject-query@^3.1.1: version "3.2.1" - resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.2.1.tgz#39c378a6e3b06ca679f29138151e45b2b32da62a" + resolved "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz" integrity sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg== dependencies: dequal "^2.0.3" babel-jest@^29.7.0: version "29.7.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5" + resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz" integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== dependencies: "@jest/transform" "^29.7.0" @@ -3438,7 +3433,7 @@ babel-jest@^29.7.0: babel-plugin-istanbul@^6.1.1: version "6.1.1" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" + resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz" integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" @@ -3449,7 +3444,7 @@ babel-plugin-istanbul@^6.1.1: babel-plugin-jest-hoist@^29.6.3: version "29.6.3" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz#aadbe943464182a8922c3c927c3067ff40d24626" + resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz" integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg== dependencies: "@babel/template" "^7.3.3" @@ -3459,7 +3454,7 @@ babel-plugin-jest-hoist@^29.6.3: babel-plugin-polyfill-corejs2@^0.4.6: version "0.4.6" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz#b2df0251d8e99f229a8e60fc4efa9a68b41c8313" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz" integrity sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q== dependencies: "@babel/compat-data" "^7.22.6" @@ -3468,7 +3463,7 @@ babel-plugin-polyfill-corejs2@^0.4.6: babel-plugin-polyfill-corejs3@^0.8.5: version "0.8.5" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.5.tgz#a75fa1b0c3fc5bd6837f9ec465c0f48031b8cab1" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.5.tgz" integrity sha512-Q6CdATeAvbScWPNLB8lzSO7fgUVBkQt6zLgNlfyeCr/EQaEQR+bWiBYYPYAFyE528BMjRhL+1QBMOI4jc/c5TA== dependencies: "@babel/helper-define-polyfill-provider" "^0.4.3" @@ -3476,14 +3471,14 @@ babel-plugin-polyfill-corejs3@^0.8.5: babel-plugin-polyfill-regenerator@^0.5.3: version "0.5.3" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz#d4c49e4b44614607c13fb769bcd85c72bb26a4a5" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz" integrity sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw== dependencies: "@babel/helper-define-polyfill-provider" "^0.4.3" babel-preset-current-node-syntax@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" + resolved "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz" integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== dependencies: "@babel/plugin-syntax-async-generators" "^7.8.4" @@ -3501,7 +3496,7 @@ babel-preset-current-node-syntax@^1.0.0: babel-preset-jest@^29.6.3: version "29.6.3" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz#fa05fa510e7d493896d7b0dd2033601c840f171c" + resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz" integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA== dependencies: babel-plugin-jest-hoist "^29.6.3" @@ -3524,17 +3519,17 @@ base64-js@^1.3.1, base64-js@^1.5.1: batch@0.6.1: version "0.6.1" - resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + resolved "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz" integrity sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw== big-integer@^1.6.44: version "1.6.51" - resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" + resolved "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz" integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== big.js@^5.2.2: version "5.2.2" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + resolved "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz" integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== binary-extensions@^2.0.0: @@ -3544,7 +3539,7 @@ binary-extensions@^2.0.0: bl@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz" integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== dependencies: buffer "^5.5.0" @@ -3553,14 +3548,14 @@ bl@^4.1.0: bluebird-lst@^1.0.9: version "1.0.9" - resolved "https://registry.yarnpkg.com/bluebird-lst/-/bluebird-lst-1.0.9.tgz#a64a0e4365658b9ab5fe875eb9dfb694189bb41c" + resolved "https://registry.npmjs.org/bluebird-lst/-/bluebird-lst-1.0.9.tgz" integrity sha512-7B1Rtx82hjnSD4PGLAjVWeYH3tHAcVUmChh85a3lltKQm6FresXh9ErQo6oAv6CqxttczC3/kEg8SY5NluPuUw== dependencies: bluebird "^3.5.5" bluebird@^3.5.5: version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== bn.js@^4.11.9: @@ -3570,7 +3565,7 @@ bn.js@^4.11.9: body-parser@1.20.1: version "1.20.1" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" + resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz" integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== dependencies: bytes "3.1.2" @@ -3588,7 +3583,7 @@ body-parser@1.20.1: bonjour-service@^1.0.11: version "1.1.1" - resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.1.1.tgz#960948fa0e0153f5d26743ab15baf8e33752c135" + resolved "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.1.tgz" integrity sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg== dependencies: array-flatten "^2.1.2" @@ -3598,17 +3593,17 @@ bonjour-service@^1.0.11: boolbase@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== boolean@^3.0.1: version "3.2.0" - resolved "https://registry.yarnpkg.com/boolean/-/boolean-3.2.0.tgz#9e5294af4e98314494cbb17979fa54ca159f116b" + resolved "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz" integrity sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw== bplist-parser@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/bplist-parser/-/bplist-parser-0.2.0.tgz#43a9d183e5bf9d545200ceac3e712f79ebbe8d0e" + resolved "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz" integrity sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw== dependencies: big-integer "^1.6.44" @@ -3623,7 +3618,7 @@ brace-expansion@^1.1.7: brace-expansion@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== dependencies: balanced-match "^1.0.0" @@ -3642,7 +3637,7 @@ brorand@^1.1.0: browserslist-config-erb@^0.0.3: version "0.0.3" - resolved "https://registry.yarnpkg.com/browserslist-config-erb/-/browserslist-config-erb-0.0.3.tgz#db7f06fe5b1ce2ab9f09e78ac4d5a9f572e188a4" + resolved "https://registry.npmjs.org/browserslist-config-erb/-/browserslist-config-erb-0.0.3.tgz" integrity sha512-y47DryCY92lxkKyRVMlaZvXAolIY7U33q9e4CS0MdWeJkoAht7OzsrkfdZFCBOP3H5q1EVUxS0L7VVsKM6gZCQ== browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.21.9, browserslist@^4.22.1: @@ -3657,31 +3652,31 @@ browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.21.10, browserslist@^ bs-logger@0.x: version "0.2.6" - resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" + resolved "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz" integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== dependencies: fast-json-stable-stringify "2.x" bser@2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + resolved "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz" integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== dependencies: node-int64 "^0.4.0" buffer-crc32@~0.2.3: version "0.2.13" - resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + resolved "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz" integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== buffer-equal@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.1.tgz#2f7651be5b1b3f057fcd6e7ee16cf34767077d90" + resolved "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.1.tgz" integrity sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg== buffer-from@^1.0.0: version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== buffer@6.0.3, buffer@^6.0.3: @@ -3694,7 +3689,7 @@ buffer@6.0.3, buffer@^6.0.3: buffer@^5.1.0, buffer@^5.5.0: version "5.7.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== dependencies: base64-js "^1.3.1" @@ -3702,7 +3697,7 @@ buffer@^5.1.0, buffer@^5.5.0: builder-util-runtime@9.2.1: version "9.2.1" - resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-9.2.1.tgz#3184dcdf7ed6c47afb8df733813224ced4f624fd" + resolved "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.2.1.tgz" integrity sha512-2rLv/uQD2x+dJ0J3xtsmI12AlRyk7p45TEbE/6o/fbb633e/S3pPgm+ct+JHsoY7r39dKHnGEFk/AASRFdnXmA== dependencies: debug "^4.3.4" @@ -3710,7 +3705,7 @@ builder-util-runtime@9.2.1: builder-util@24.5.0: version "24.5.0" - resolved "https://registry.yarnpkg.com/builder-util/-/builder-util-24.5.0.tgz#8683c9a7a1c5c9f9a4c4d2789ecca0e47dddd3f9" + resolved "https://registry.npmjs.org/builder-util/-/builder-util-24.5.0.tgz" integrity sha512-STnBmZN/M5vGcv01u/K8l+H+kplTaq4PAIn3yeuufUKSpcdro0DhJWxPI81k5XcNfC//bjM3+n9nr8F9uV4uAQ== dependencies: "7zip-bin" "~5.1.1" @@ -3732,24 +3727,24 @@ builder-util@24.5.0: bundle-name@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/bundle-name/-/bundle-name-3.0.0.tgz#ba59bcc9ac785fb67ccdbf104a2bf60c099f0e1a" + resolved "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz" integrity sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw== dependencies: run-applescript "^5.0.0" bytes@3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + resolved "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz" integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== bytes@3.1.2: version "3.1.2" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== cacache@^17.0.0: version "17.1.4" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-17.1.4.tgz#b3ff381580b47e85c6e64f801101508e26604b35" + resolved "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz" integrity sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A== dependencies: "@npmcli/fs" "^3.1.0" @@ -3767,12 +3762,12 @@ cacache@^17.0.0: cacheable-lookup@^5.0.3: version "5.0.4" - resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" + resolved "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz" integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== cacheable-request@^7.0.2: version "7.0.4" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.4.tgz#7a33ebf08613178b403635be7b899d3e69bbe817" + resolved "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz" integrity sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg== dependencies: clone-response "^1.0.2" @@ -3785,7 +3780,7 @@ cacheable-request@^7.0.2: call-bind@^1.0.0, call-bind@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== dependencies: function-bind "^1.1.1" @@ -3798,7 +3793,7 @@ callsites@^3.0.0: camel-case@^4.1.2: version "4.1.2" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" + resolved "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz" integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== dependencies: pascal-case "^3.1.2" @@ -3806,7 +3801,7 @@ camel-case@^4.1.2: camelcase@^5.3.1: version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== camelcase@^6.2.0: @@ -3816,7 +3811,7 @@ camelcase@^6.2.0: caniuse-api@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" + resolved "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz" integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== dependencies: browserslist "^4.0.0" @@ -3826,7 +3821,7 @@ caniuse-api@^3.0.0: caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001524: version "1.0.30001549" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001549.tgz#7d1a3dce7ea78c06ed72c32c2743ea364b3615aa" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001549.tgz" integrity sha512-qRp48dPYSCYaP+KurZLhDYdVE+yEyht/3NlmcJgVQ2VMGt6JL36ndQ/7rgspdZsJuxDPFIo/OzBT2+GmIJ53BA== caniuse-lite@^1.0.30001541: @@ -3845,7 +3840,7 @@ chalk@^2.4.2: chalk@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + resolved "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz" integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== dependencies: ansi-styles "^4.1.0" @@ -3861,7 +3856,7 @@ chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2: char-regex@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + resolved "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz" integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== "chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.3: @@ -3881,17 +3876,17 @@ char-regex@^1.0.2: chownr@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + resolved "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz" integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== chrome-trace-event@^1.0.2: version "1.0.3" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" + resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz" integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== chromium-pickle-js@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz#04a106672c18b085ab774d983dfa3ea138f22205" + resolved "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz" integrity sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw== ci-info@^3.2.0: @@ -3901,7 +3896,7 @@ ci-info@^3.2.0: cjs-module-lexer@^1.0.0: version "1.2.3" - resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz#6c370ab19f8a3394e318fe682686ec0ac684d107" + resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz" integrity sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ== classnames@^2.3.2: @@ -3911,7 +3906,7 @@ classnames@^2.3.2: clean-css@^5.2.2: version "5.3.2" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.2.tgz#70ecc7d4d4114921f5d298349ff86a31a9975224" + resolved "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz" integrity sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww== dependencies: source-map "~0.6.0" @@ -3930,7 +3925,7 @@ cli-cursor@^3.1.0: cli-spinners@^2.5.0: version "2.9.1" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.1.tgz#9c0b9dad69a6d47cbb4333c14319b060ed395a35" + resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.1.tgz" integrity sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ== cli-truncate@^2.1.0: @@ -3956,7 +3951,7 @@ client-only@^0.0.1: cliui@^8.0.1: version "8.0.1" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== dependencies: string-width "^4.2.0" @@ -3965,7 +3960,7 @@ cliui@^8.0.1: clone-deep@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + resolved "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz" integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== dependencies: is-plain-object "^2.0.4" @@ -3974,19 +3969,19 @@ clone-deep@^4.0.1: clone-response@^1.0.2: version "1.0.3" - resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3" + resolved "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz" integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA== dependencies: mimic-response "^1.0.0" clone@^1.0.2: version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz" integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== co@^4.6.0: version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz" integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== codemirror@^6.0.0: @@ -4004,7 +3999,7 @@ codemirror@^6.0.0: collect-v8-coverage@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#c0b29bcd33bcd0779a1344c2136051e6afd3d9e9" + resolved "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz" integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== color-convert@^1.9.0: @@ -4033,17 +4028,17 @@ color-name@~1.1.4: color-support@^1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + resolved "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz" integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== colord@^2.9.1: version "2.9.3" - resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43" + resolved "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz" integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== colorette@^2.0.10, colorette@^2.0.14: version "2.0.20" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" + resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz" integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== colorette@^2.0.16: @@ -4053,34 +4048,34 @@ colorette@^2.0.16: combined-stream@^1.0.8: version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies: delayed-stream "~1.0.0" commander@^10.0.1: version "10.0.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" + resolved "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz" integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== commander@^2.20.0: version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== commander@^5.0.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" + resolved "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== commander@^7.2.0: version "7.2.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== commander@^8.3.0: version "8.3.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" + resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz" integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== commander@^9.3.0: @@ -4095,24 +4090,24 @@ comment-parser@1.3.1: common-path-prefix@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz#7d007a7e07c58c4b4d5f433131a19141b29f11e0" + resolved "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz" integrity sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w== compare-version@^0.1.2: version "0.1.2" - resolved "https://registry.yarnpkg.com/compare-version/-/compare-version-0.1.2.tgz#0162ec2d9351f5ddd59a9202cba935366a725080" + resolved "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz" integrity sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A== compressible@~2.0.16: version "2.0.18" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + resolved "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz" integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== dependencies: mime-db ">= 1.43.0 < 2" compression@^1.7.4: version "1.7.4" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + resolved "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz" integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== dependencies: accepts "~1.3.5" @@ -4130,7 +4125,7 @@ concat-map@0.0.1: concurrently@^8.2.1: version "8.2.1" - resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-8.2.1.tgz#bcab9cacc38c23c503839583151e0fa96fd5b584" + resolved "https://registry.npmjs.org/concurrently/-/concurrently-8.2.1.tgz" integrity sha512-nVraf3aXOpIcNud5pB9M82p1tynmZkrSGQ1p6X/VY8cJ+2LMVqAgXsJxYYefACSHbTYlm92O1xuhdGTjwoEvbQ== dependencies: chalk "^4.1.2" @@ -4145,7 +4140,7 @@ concurrently@^8.2.1: config-file-ts@^0.2.4: version "0.2.4" - resolved "https://registry.yarnpkg.com/config-file-ts/-/config-file-ts-0.2.4.tgz#6c0741fbe118a7cf786c65f139030f0448a2cc99" + resolved "https://registry.npmjs.org/config-file-ts/-/config-file-ts-0.2.4.tgz" integrity sha512-cKSW0BfrSaAUnxpgvpXPLaaW/umg4bqg4k3GO1JqlRfpx+d5W0GDXznCMkWotJQek5Mmz1MJVChQnz3IVaeMZQ== dependencies: glob "^7.1.6" @@ -4153,29 +4148,29 @@ config-file-ts@^0.2.4: confusing-browser-globals@^1.0.10: version "1.0.11" - resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz#ae40e9b57cdd3915408a2805ebd3a5585608dc81" + resolved "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz" integrity sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA== connect-history-api-fallback@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz#647264845251a0daf25b97ce87834cace0f5f1c8" + resolved "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz" integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA== console-control-strings@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + resolved "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz" integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== content-disposition@0.5.4: version "0.5.4" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz" integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== dependencies: safe-buffer "5.2.1" content-type@~1.0.4: version "1.0.5" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz" integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== convert-source-map@^2.0.0: @@ -4185,12 +4180,12 @@ convert-source-map@^2.0.0: cookie-signature@1.0.6: version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== cookie@0.5.0, cookie@^0.5.0: version "0.5.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz" integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== copy-to-clipboard@^3.3.3: @@ -4202,29 +4197,29 @@ copy-to-clipboard@^3.3.3: core-js-compat@^3.31.0, core-js-compat@^3.32.2: version "3.33.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.33.0.tgz#24aa230b228406450b2277b7c8bfebae932df966" + resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.0.tgz" integrity sha512-0w4LcLXsVEuNkIqwjjf9rjCoPhK8uqA4tMRh4Ge26vfLtUutshn+aRJU21I9LCJlh2QQHfisNToLjw1XEJLTWw== dependencies: browserslist "^4.22.1" core-js-pure@^3.23.3: version "3.33.0" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.33.0.tgz#938a28754b4d82017a7a8cbd2727b1abecc63591" + resolved "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.33.0.tgz" integrity sha512-FKSIDtJnds/YFIEaZ4HszRX7hkxGpNKM7FC9aJ9WLJbSd3lD4vOltFuVIBLR8asSx9frkTSqL0dw90SKQxgKrg== core-js@^3.32.2: version "3.33.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.33.0.tgz#70366dbf737134761edb017990cf5ce6c6369c40" + resolved "https://registry.npmjs.org/core-js/-/core-js-3.33.0.tgz" integrity sha512-HoZr92+ZjFEKar5HS6MC776gYslNOKHt75mEBKWKnPeFDpZ6nH5OeF3S6HFT1mUAUZKrzkez05VboaX8myjSuw== core-util-is@1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== core-util-is@~1.0.0: version "1.0.3" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== cosmiconfig@^8.1.3: @@ -4239,14 +4234,14 @@ cosmiconfig@^8.1.3: crc@^3.8.0: version "3.8.0" - resolved "https://registry.yarnpkg.com/crc/-/crc-3.8.0.tgz#ad60269c2c856f8c299e2c4cc0de4556914056c6" + resolved "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz" integrity sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ== dependencies: buffer "^5.1.0" create-jest@^29.7.0: version "29.7.0" - resolved "https://registry.yarnpkg.com/create-jest/-/create-jest-29.7.0.tgz#a355c5b3cb1e1af02ba177fe7afd7feee49a5320" + resolved "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz" integrity sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q== dependencies: "@jest/types" "^29.6.3" @@ -4259,7 +4254,7 @@ create-jest@^29.7.0: create-require@^1.1.0: version "1.1.1" - resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz" integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== crelt@^1.0.5: @@ -4269,7 +4264,7 @@ crelt@^1.0.5: cross-env@^7.0.3: version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf" + resolved "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz" integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw== dependencies: cross-spawn "^7.0.1" @@ -4292,12 +4287,12 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: css-declaration-sorter@^6.3.1: version "6.4.1" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz#28beac7c20bad7f1775be3a7129d7eae409a3a71" + resolved "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz" integrity sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g== css-loader@^6.8.1: version "6.8.1" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.8.1.tgz#0f8f52699f60f5e679eab4ec0fcd68b8e8a50a88" + resolved "https://registry.npmjs.org/css-loader/-/css-loader-6.8.1.tgz" integrity sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g== dependencies: icss-utils "^5.1.0" @@ -4311,7 +4306,7 @@ css-loader@^6.8.1: css-minimizer-webpack-plugin@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-5.0.1.tgz#33effe662edb1a0bf08ad633c32fa75d0f7ec565" + resolved "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-5.0.1.tgz" integrity sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg== dependencies: "@jridgewell/trace-mapping" "^0.3.18" @@ -4323,7 +4318,7 @@ css-minimizer-webpack-plugin@^5.0.1: css-select@^4.1.3: version "4.3.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" + resolved "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz" integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== dependencies: boolbase "^1.0.0" @@ -4334,7 +4329,7 @@ css-select@^4.1.3: css-select@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" + resolved "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz" integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== dependencies: boolbase "^1.0.0" @@ -4345,7 +4340,7 @@ css-select@^5.1.0: css-tree@^2.2.1: version "2.3.1" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.3.1.tgz#10264ce1e5442e8572fc82fbe490644ff54b5c20" + resolved "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz" integrity sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw== dependencies: mdn-data "2.0.30" @@ -4353,7 +4348,7 @@ css-tree@^2.2.1: css-tree@~2.2.0: version "2.2.1" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.2.1.tgz#36115d382d60afd271e377f9c5f67d02bd48c032" + resolved "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz" integrity sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA== dependencies: mdn-data "2.0.28" @@ -4361,22 +4356,22 @@ css-tree@~2.2.0: css-what@^6.0.1, css-what@^6.1.0: version "6.1.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + resolved "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz" integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== css.escape@^1.5.1: version "1.5.1" - resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" + resolved "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz" integrity sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg== cssesc@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== cssnano-preset-default@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-6.0.1.tgz#2a93247140d214ddb9f46bc6a3562fa9177fe301" + resolved "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.0.1.tgz" integrity sha512-7VzyFZ5zEB1+l1nToKyrRkuaJIx0zi/1npjvZfbBwbtNTzhLtlvYraK/7/uqmX2Wb2aQtd983uuGw79jAjLSuQ== dependencies: css-declaration-sorter "^6.3.1" @@ -4411,12 +4406,12 @@ cssnano-preset-default@^6.0.1: cssnano-utils@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-4.0.0.tgz#d1da885ec04003ab19505ff0e62e029708d36b08" + resolved "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-4.0.0.tgz" integrity sha512-Z39TLP+1E0KUcd7LGyF4qMfu8ZufI0rDzhdyAMsa/8UyNUU8wpS0fhdBxbQbv32r64ea00h4878gommRVg2BHw== cssnano@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-6.0.1.tgz#87c38c4cd47049c735ab756d7e77ac3ca855c008" + resolved "https://registry.npmjs.org/cssnano/-/cssnano-6.0.1.tgz" integrity sha512-fVO1JdJ0LSdIGJq68eIxOqFpIJrZqXUsBt8fkrBcztCQqAjQD51OhZp7tc0ImcbwXD4k7ny84QTV90nZhmqbkg== dependencies: cssnano-preset-default "^6.0.1" @@ -4424,24 +4419,24 @@ cssnano@^6.0.1: csso@^5.0.5: version "5.0.5" - resolved "https://registry.yarnpkg.com/csso/-/csso-5.0.5.tgz#f9b7fe6cc6ac0b7d90781bb16d5e9874303e2ca6" + resolved "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz" integrity sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ== dependencies: css-tree "~2.2.0" cssom@^0.5.0: version "0.5.0" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.5.0.tgz#d254fa92cd8b6fbd83811b9fbaed34663cc17c36" + resolved "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz" integrity sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw== cssom@~0.3.6: version "0.3.8" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + resolved "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz" integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== cssstyle@^2.3.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" + resolved "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz" integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== dependencies: cssom "~0.3.6" @@ -4453,12 +4448,12 @@ csstype@^3.0.2: damerau-levenshtein@^1.0.8: version "1.0.8" - resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" + resolved "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz" integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== data-urls@^3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-3.0.2.tgz#9cf24a477ae22bcef5cd5f6f0bfbc1d2d3be9143" + resolved "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz" integrity sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ== dependencies: abab "^2.0.6" @@ -4479,7 +4474,7 @@ dateformat@^5.0.3: debug@2.6.9: version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" @@ -4493,31 +4488,31 @@ debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, d debug@^3.2.7: version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== dependencies: ms "^2.1.1" decimal.js@^10.4.2: version "10.4.3" - resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" + resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz" integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== decompress-response@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" + resolved "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz" integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== dependencies: mimic-response "^3.1.0" dedent@^1.0.0: version "1.5.1" - resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.1.tgz#4f3fc94c8b711e9bb2800d185cd6ad20f2a90aff" + resolved "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz" integrity sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg== deep-equal@^2.0.5: version "2.2.2" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.2.tgz#9b2635da569a13ba8e1cc159c2f744071b115daa" + resolved "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.2.tgz" integrity sha512-xjVyBf0w5vH0I42jdAZzOKVldmPgSulmiyPRywoyq7HXC9qdgo17kxJE+rdnif5Tz6+pIrpJI8dCpMNLIGkUiA== dependencies: array-buffer-byte-length "^1.0.0" @@ -4546,7 +4541,7 @@ deep-is@^0.1.3: deepmerge@4.3.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.0.tgz#65491893ec47756d44719ae520e0e2609233b59b" + resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.0.tgz" integrity sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og== deepmerge@^2.1.1: @@ -4561,7 +4556,7 @@ deepmerge@^4.2.2, deepmerge@^4.3.1: default-browser-id@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/default-browser-id/-/default-browser-id-3.0.0.tgz#bee7bbbef1f4e75d31f98f4d3f1556a14cea790c" + resolved "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz" integrity sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA== dependencies: bplist-parser "^0.2.0" @@ -4569,7 +4564,7 @@ default-browser-id@^3.0.0: default-browser@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/default-browser/-/default-browser-4.0.0.tgz#53c9894f8810bf86696de117a6ce9085a3cbc7da" + resolved "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz" integrity sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA== dependencies: bundle-name "^3.0.0" @@ -4579,26 +4574,26 @@ default-browser@^4.0.0: default-gateway@^6.0.3: version "6.0.3" - resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71" + resolved "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz" integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg== dependencies: execa "^5.0.0" defaults@^1.0.3: version "1.0.4" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" + resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz" integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== dependencies: clone "^1.0.2" defer-to-connect@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" + resolved "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz" integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== define-data-property@^1.0.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" + resolved "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz" integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== dependencies: get-intrinsic "^1.2.1" @@ -4607,17 +4602,17 @@ define-data-property@^1.0.1: define-lazy-prop@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + resolved "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz" integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== define-lazy-prop@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz#dbb19adfb746d7fc6d734a06b72f4a00d021255f" + resolved "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz" integrity sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg== define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0, define-properties@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz" integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== dependencies: define-data-property "^1.0.1" @@ -4626,52 +4621,52 @@ define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0, de delayed-stream@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== delegates@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz" integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== depd@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== depd@~1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== dequal@^2.0.3: version "2.0.3" - resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" + resolved "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz" integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== destroy@1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== detect-libc@^2.0.1: version "2.0.2" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.2.tgz#8ccf2ba9315350e1241b88d0ac3b0e1fbd99605d" + resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz" integrity sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw== detect-newline@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz" integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== detect-node@^2.0.4: version "2.1.0" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" + resolved "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz" integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== detect-port@^1.5.1: version "1.5.1" - resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.5.1.tgz#451ca9b6eaf20451acb0799b8ab40dff7718727b" + resolved "https://registry.npmjs.org/detect-port/-/detect-port-1.5.1.tgz" integrity sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ== dependencies: address "^1.0.1" @@ -4684,12 +4679,12 @@ diff-sequences@^29.6.3: diff@^4.0.1: version "4.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== dir-compare@^3.0.0: version "3.3.0" - resolved "https://registry.yarnpkg.com/dir-compare/-/dir-compare-3.3.0.tgz#2c749f973b5c4b5d087f11edaae730db31788416" + resolved "https://registry.npmjs.org/dir-compare/-/dir-compare-3.3.0.tgz" integrity sha512-J7/et3WlGUCxjdnD3HAAzQ6nsnc0WL6DD7WcwJb7c39iH1+AWfg+9OqzJNaI6PkBwBvm1mhZNL9iY/nRiZXlPg== dependencies: buffer-equal "^1.0.0" @@ -4697,14 +4692,14 @@ dir-compare@^3.0.0: dir-glob@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== dependencies: path-type "^4.0.0" dmg-builder@24.6.4: version "24.6.4" - resolved "https://registry.yarnpkg.com/dmg-builder/-/dmg-builder-24.6.4.tgz#e19b8305f7e1ea0b4faaa30382c81b9d6de39863" + resolved "https://registry.npmjs.org/dmg-builder/-/dmg-builder-24.6.4.tgz" integrity sha512-BNcHRc9CWEuI9qt0E655bUBU/j/3wUCYBVKGu1kVpbN5lcUdEJJJeiO0NHK3dgKmra6LUUZlo+mWqc+OCbi0zw== dependencies: app-builder-lib "24.6.4" @@ -4718,7 +4713,7 @@ dmg-builder@24.6.4: dmg-license@^1.0.11: version "1.0.11" - resolved "https://registry.yarnpkg.com/dmg-license/-/dmg-license-1.0.11.tgz#7b3bc3745d1b52be7506b4ee80cb61df6e4cd79a" + resolved "https://registry.npmjs.org/dmg-license/-/dmg-license-1.0.11.tgz" integrity sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q== dependencies: "@types/plist" "^3.0.1" @@ -4732,19 +4727,19 @@ dmg-license@^1.0.11: dns-equal@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" + resolved "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz" integrity sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg== dns-packet@^5.2.2: version "5.6.1" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.6.1.tgz#ae888ad425a9d1478a0674256ab866de1012cf2f" + resolved "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz" integrity sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw== dependencies: "@leichtgewicht/ip-codec" "^2.0.1" doctrine@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz" integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== dependencies: esutils "^2.0.2" @@ -4758,19 +4753,19 @@ doctrine@^3.0.0: dom-accessibility-api@^0.5.6, dom-accessibility-api@^0.5.9: version "0.5.16" - resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz#5a7429e6066eb3664d911e33fb0e45de8eb08453" + resolved "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz" integrity sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg== dom-converter@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" + resolved "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz" integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== dependencies: utila "~0.4" dom-serializer@^1.0.1: version "1.4.1" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" + resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz" integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== dependencies: domelementtype "^2.0.1" @@ -4779,7 +4774,7 @@ dom-serializer@^1.0.1: dom-serializer@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" + resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz" integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== dependencies: domelementtype "^2.3.0" @@ -4788,33 +4783,33 @@ dom-serializer@^2.0.0: domelementtype@^2.0.1, domelementtype@^2.2.0, domelementtype@^2.3.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz" integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== domexception@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-4.0.0.tgz#4ad1be56ccadc86fc76d033353999a8037d03673" + resolved "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz" integrity sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw== dependencies: webidl-conversions "^7.0.0" domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: version "4.3.1" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" + resolved "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz" integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== dependencies: domelementtype "^2.2.0" domhandler@^5.0.2, domhandler@^5.0.3: version "5.0.3" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" + resolved "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz" integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== dependencies: domelementtype "^2.3.0" domutils@^2.5.2, domutils@^2.8.0: version "2.8.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" + resolved "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz" integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== dependencies: dom-serializer "^1.0.1" @@ -4823,7 +4818,7 @@ domutils@^2.5.2, domutils@^2.8.0: domutils@^3.0.1: version "3.1.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.1.0.tgz#c47f551278d3dc4b0b1ab8cbb42d751a6f0d824e" + resolved "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz" integrity sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA== dependencies: dom-serializer "^2.0.0" @@ -4840,17 +4835,17 @@ dot-case@^3.0.4: dotenv-expand@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" + resolved "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz" integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== dotenv@^9.0.2: version "9.0.2" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-9.0.2.tgz#dacc20160935a37dea6364aa1bef819fb9b6ab05" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-9.0.2.tgz" integrity sha512-I9OvvrHp4pIARv4+x9iuewrWycX6CcZtoAu1XrzPxc5UygMJXJZYmBsynku8IkrJwgypE5DGNjDPmPRhDCptUg== duplexer@^0.1.2: version "0.1.2" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz" integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== eastasianwidth@^0.2.0: @@ -4860,19 +4855,19 @@ eastasianwidth@^0.2.0: ee-first@1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== ejs@^3.1.8: version "3.1.9" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.9.tgz#03c9e8777fe12686a9effcef22303ca3d8eeb361" + resolved "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz" integrity sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ== dependencies: jake "^10.8.5" electron-builder@^24.6.4: version "24.6.4" - resolved "https://registry.yarnpkg.com/electron-builder/-/electron-builder-24.6.4.tgz#c51271e49b9a02c9a3ec444f866b6008c4d98a1d" + resolved "https://registry.npmjs.org/electron-builder/-/electron-builder-24.6.4.tgz" integrity sha512-uNWQoU7pE7qOaIQ6CJHpBi44RJFVG8OHRBIadUxrsDJVwLLo8Nma3K/EEtx5/UyWAQYdcK4nVPYKoRqBb20hbA== dependencies: app-builder-lib "24.6.4" @@ -4889,7 +4884,7 @@ electron-builder@^24.6.4: electron-debug@^3.2.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/electron-debug/-/electron-debug-3.2.0.tgz#46a15b555c3b11872218c65ea01d058aa0814920" + resolved "https://registry.npmjs.org/electron-debug/-/electron-debug-3.2.0.tgz" integrity sha512-7xZh+LfUvJ52M9rn6N+tPuDw6oRAjxUj9SoxAZfJ0hVCXhZCsdkrSt7TgXOiWiEOBgEV8qwUIO/ScxllsPS7ow== dependencies: electron-is-dev "^1.1.0" @@ -4897,7 +4892,7 @@ electron-debug@^3.2.0: electron-devtools-installer@^3.2.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/electron-devtools-installer/-/electron-devtools-installer-3.2.0.tgz#acc48d24eb7033fe5af284a19667e73b78d406d0" + resolved "https://registry.npmjs.org/electron-devtools-installer/-/electron-devtools-installer-3.2.0.tgz" integrity sha512-t3UczsYugm4OAbqvdImMCImIMVdFzJAHgbwHpkl5jmfu1izVgUcP/mnrPqJIpEeCK1uZGpt+yHgWEN+9EwoYhQ== dependencies: rimraf "^3.0.2" @@ -4907,17 +4902,17 @@ electron-devtools-installer@^3.2.0: electron-is-accelerator@^0.1.0: version "0.1.2" - resolved "https://registry.yarnpkg.com/electron-is-accelerator/-/electron-is-accelerator-0.1.2.tgz#509e510c26a56b55e17f863a4b04e111846ab27b" + resolved "https://registry.npmjs.org/electron-is-accelerator/-/electron-is-accelerator-0.1.2.tgz" integrity sha512-fLGSAjXZtdn1sbtZxx52+krefmtNuVwnJCV2gNiVt735/ARUboMl8jnNC9fZEqQdlAv2ZrETfmBUsoQci5evJA== electron-is-dev@^1.1.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/electron-is-dev/-/electron-is-dev-1.2.0.tgz#2e5cea0a1b3ccf1c86f577cee77363ef55deb05e" + resolved "https://registry.npmjs.org/electron-is-dev/-/electron-is-dev-1.2.0.tgz" integrity sha512-R1oD5gMBPS7PVU8gJwH6CtT0e6VSoD0+SzSnYpNm+dBkcijgA+K7VAMHDfnRq/lkKPZArpzplTW6jfiMYosdzw== electron-localshortcut@^3.1.0: version "3.2.1" - resolved "https://registry.yarnpkg.com/electron-localshortcut/-/electron-localshortcut-3.2.1.tgz#cfc83a3eff5e28faf98ddcc87f80a2ce4f623cd3" + resolved "https://registry.npmjs.org/electron-localshortcut/-/electron-localshortcut-3.2.1.tgz" integrity sha512-DWvhKv36GsdXKnaFFhEiK8kZZA+24/yFLgtTwJJHc7AFgDjNRIBJZ/jq62Y/dWv9E4ypYwrVWN2bVrCYw1uv7Q== dependencies: debug "^4.0.1" @@ -4927,12 +4922,12 @@ electron-localshortcut@^3.1.0: electron-log@^4.4.8: version "4.4.8" - resolved "https://registry.yarnpkg.com/electron-log/-/electron-log-4.4.8.tgz#fcb9f714dbcaefb6ac7984c4683912c74730248a" + resolved "https://registry.npmjs.org/electron-log/-/electron-log-4.4.8.tgz" integrity sha512-QQ4GvrXO+HkgqqEOYbi+DHL7hj5JM+nHi/j+qrN9zeeXVKy8ZABgbu4CnG+BBqDZ2+tbeq9tUC4DZfIWFU5AZA== electron-publish@24.5.0: version "24.5.0" - resolved "https://registry.yarnpkg.com/electron-publish/-/electron-publish-24.5.0.tgz#492a4d7caa232e88ee3c18f5c3b4dc637e5e1b3a" + resolved "https://registry.npmjs.org/electron-publish/-/electron-publish-24.5.0.tgz" integrity sha512-zwo70suH15L15B4ZWNDoEg27HIYoPsGJUF7xevLJLSI7JUPC8l2yLBdLGwqueJ5XkDL7ucYyRZzxJVR8ElV9BA== dependencies: "@types/fs-extra" "^9.0.11" @@ -4950,7 +4945,7 @@ electron-to-chromium@^1.4.535: electron-updater@^6.1.4: version "6.1.4" - resolved "https://registry.yarnpkg.com/electron-updater/-/electron-updater-6.1.4.tgz#86f7e1fc4353f578456c34304b48df7d976cf348" + resolved "https://registry.npmjs.org/electron-updater/-/electron-updater-6.1.4.tgz" integrity sha512-yYAJc6RQjjV4WtInZVn+ZcLyXRhbVXoomKEfUUwDqIk5s2wxzLhWaor7lrNgxODyODhipjg4SVPMhJHi5EnsCA== dependencies: builder-util-runtime "9.2.1" @@ -4964,7 +4959,7 @@ electron-updater@^6.1.4: electron@26.2.1: version "26.2.1" - resolved "https://registry.yarnpkg.com/electron/-/electron-26.2.1.tgz#2ef86c03d9753647622bb9a53c4213fb290e5eac" + resolved "https://registry.npmjs.org/electron/-/electron-26.2.1.tgz" integrity sha512-SNT24Cf/wRvfcFZQoERXjzswUlg5ouqhIuA2t9x2L7VdTn+2Jbs0QXRtOfzcnOV/raVMz3e8ICyaU2GGeciKLg== dependencies: "@electron/get" "^2.0.0" @@ -4973,7 +4968,7 @@ electron@26.2.1: electronmon@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/electronmon/-/electronmon-2.0.2.tgz#082cb4c7cd5eee0602308c3253b17ecbef77aea8" + resolved "https://registry.npmjs.org/electronmon/-/electronmon-2.0.2.tgz" integrity sha512-Yw1CXEp5HJT9P6Sns3UP3Krwm5eb2JKqTRAVczKdsUa+U/dMTgONwKIHkPbKSSmtyTV+5JwobxkhFPiRgegObA== dependencies: chalk "^3.0.0" @@ -4996,7 +4991,7 @@ elliptic@^6.5.4: emittery@^0.13.1: version "0.13.1" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" + resolved "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz" integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== emoji-regex@^8.0.0: @@ -5011,31 +5006,31 @@ emoji-regex@^9.2.2: emojis-list@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + resolved "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz" integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== encodeurl@~1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== encoding@^0.1.13: version "0.1.13" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" + resolved "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz" integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== dependencies: iconv-lite "^0.6.2" end-of-stream@^1.1.0: version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== dependencies: once "^1.4.0" enhanced-resolve@^0.9.1: version "0.9.1" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz#4d6e689b3725f86090927ccc86cd9f1635b89e2e" + resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz" integrity sha512-kxpoMgrdtkXZ5h0SeraBS1iRntpTpQ3R8ussdb38+UAFnMGX5DDyJXePm+OCHOcoXvHDw7mc2erbJBpDnl7TPw== dependencies: graceful-fs "^4.1.2" @@ -5044,7 +5039,7 @@ enhanced-resolve@^0.9.1: enhanced-resolve@^5.0.0, enhanced-resolve@^5.12.0, enhanced-resolve@^5.15.0, enhanced-resolve@^5.7.0: version "5.15.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz#1af946c7d93603eb88e9896cee4904dc012e9c35" + resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz" integrity sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg== dependencies: graceful-fs "^4.2.4" @@ -5062,17 +5057,17 @@ entities@^4.2.0, entities@^4.4.0: env-paths@^2.2.0: version "2.2.1" - resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + resolved "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz" integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== envinfo@^7.7.3: version "7.10.0" - resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.10.0.tgz#55146e3909cc5fe63c22da63fb15b05aeac35b13" + resolved "https://registry.npmjs.org/envinfo/-/envinfo-7.10.0.tgz" integrity sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw== err-code@^2.0.2: version "2.0.3" - resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" + resolved "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz" integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== error-ex@^1.3.1: @@ -5084,14 +5079,14 @@ error-ex@^1.3.1: error-stack-parser@^2.0.6: version "2.1.4" - resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.1.4.tgz#229cb01cdbfa84440bfa91876285b94680188286" + resolved "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz" integrity sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ== dependencies: stackframe "^1.3.4" es-abstract@^1.22.1: version "1.22.2" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.2.tgz#90f7282d91d0ad577f505e423e52d4c1d93c1b8a" + resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz" integrity sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA== dependencies: array-buffer-byte-length "^1.0.0" @@ -5136,7 +5131,7 @@ es-abstract@^1.22.1: es-get-iterator@^1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.3.tgz#3ef87523c5d464d41084b2c3c9c214f1199763d6" + resolved "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz" integrity sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw== dependencies: call-bind "^1.0.2" @@ -5151,7 +5146,7 @@ es-get-iterator@^1.1.3: es-iterator-helpers@^1.0.12: version "1.0.15" - resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz#bd81d275ac766431d19305923707c3efd9f1ae40" + resolved "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz" integrity sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g== dependencies: asynciterator.prototype "^1.0.0" @@ -5171,12 +5166,12 @@ es-iterator-helpers@^1.0.12: es-module-lexer@^1.2.1: version "1.3.1" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.3.1.tgz#c1b0dd5ada807a3b3155315911f364dc4e909db1" + resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.1.tgz" integrity sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q== es-set-tostringtag@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" + resolved "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz" integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== dependencies: get-intrinsic "^1.1.3" @@ -5185,14 +5180,14 @@ es-set-tostringtag@^2.0.1: es-shim-unscopables@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" + resolved "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz" integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== dependencies: has "^1.0.3" es-to-primitive@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz" integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== dependencies: is-callable "^1.1.4" @@ -5201,7 +5196,7 @@ es-to-primitive@^1.2.1: es6-error@^4.1.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" + resolved "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz" integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== escalade@^3.1.1: @@ -5211,7 +5206,7 @@ escalade@^3.1.1: escape-html@~1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== escape-string-regexp@^1.0.5: @@ -5231,7 +5226,7 @@ escape-string-regexp@^4.0.0: escodegen@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17" + resolved "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz" integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w== dependencies: esprima "^4.0.1" @@ -5242,7 +5237,7 @@ escodegen@^2.0.0: eslint-config-airbnb-base@^15.0.0: version "15.0.0" - resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz#6b09add90ac79c2f8d723a2580e07f3925afd236" + resolved "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz" integrity sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig== dependencies: confusing-browser-globals "^1.0.10" @@ -5252,14 +5247,14 @@ eslint-config-airbnb-base@^15.0.0: eslint-config-airbnb-typescript@^17.1.0: version "17.1.0" - resolved "https://registry.yarnpkg.com/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-17.1.0.tgz#fda960eee4a510f092a9a1c139035ac588937ddc" + resolved "https://registry.npmjs.org/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-17.1.0.tgz" integrity sha512-GPxI5URre6dDpJ0CtcthSZVBAfI+Uw7un5OYNVxP2EYi3H81Jw701yFP7AU+/vCE7xBtFmjge7kfhhk4+RAiig== dependencies: eslint-config-airbnb-base "^15.0.0" eslint-config-airbnb@^19.0.4: version "19.0.4" - resolved "https://registry.yarnpkg.com/eslint-config-airbnb/-/eslint-config-airbnb-19.0.4.tgz#84d4c3490ad70a0ffa571138ebcdea6ab085fdc3" + resolved "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-19.0.4.tgz" integrity sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew== dependencies: eslint-config-airbnb-base "^15.0.0" @@ -5268,7 +5263,7 @@ eslint-config-airbnb@^19.0.4: eslint-config-erb@^4.1.0-0: version "4.1.0" - resolved "https://registry.yarnpkg.com/eslint-config-erb/-/eslint-config-erb-4.1.0.tgz#7ebc016bd52452a79b66a2462c751fa60172f17f" + resolved "https://registry.npmjs.org/eslint-config-erb/-/eslint-config-erb-4.1.0.tgz" integrity sha512-30Ysy1JJmxu+VElnNcBZLOsDRWHJh1exfCLMIwe1lscnby8WeTAWJNS0j+WgS9GzYm+5JoNeas90O1wq2bLnJQ== dependencies: "@typescript-eslint/eslint-plugin" "^6.7.0" @@ -5287,12 +5282,12 @@ eslint-config-erb@^4.1.0-0: eslint-config-prettier@^9.0.0: version "9.0.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz#eb25485946dd0c66cd216a46232dc05451518d1f" + resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz" integrity sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw== eslint-import-resolver-node@^0.3.7: version "0.3.9" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" + resolved "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz" integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== dependencies: debug "^3.2.7" @@ -5301,7 +5296,7 @@ eslint-import-resolver-node@^0.3.7: eslint-import-resolver-typescript@^3.6.0: version "3.6.1" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz#7b983680edd3f1c5bce1a5829ae0bc2d57fe9efa" + resolved "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz" integrity sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg== dependencies: debug "^4.3.4" @@ -5314,7 +5309,7 @@ eslint-import-resolver-typescript@^3.6.0: eslint-import-resolver-webpack@^0.13.7: version "0.13.7" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-webpack/-/eslint-import-resolver-webpack-0.13.7.tgz#49cd0108767b1f8ff81123c7e1ae362305aad47b" + resolved "https://registry.npmjs.org/eslint-import-resolver-webpack/-/eslint-import-resolver-webpack-0.13.7.tgz" integrity sha512-2a+meyMeABBRO4K53Oj1ygkmt5lhQS79Lmx2f684Qnv6gjvD4RLOM5jfPGTXwQ0A2K03WSoKt3HRQu/uBgxF7w== dependencies: array.prototype.find "^2.2.1" @@ -5331,14 +5326,14 @@ eslint-import-resolver-webpack@^0.13.7: eslint-module-utils@^2.7.4, eslint-module-utils@^2.8.0: version "2.8.0" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz#e439fee65fc33f6bba630ff621efc38ec0375c49" + resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz" integrity sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw== dependencies: debug "^3.2.7" eslint-plugin-compat@^4.2.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-compat/-/eslint-plugin-compat-4.2.0.tgz#eeaf80daa1afe495c88a47e9281295acae45c0aa" + resolved "https://registry.npmjs.org/eslint-plugin-compat/-/eslint-plugin-compat-4.2.0.tgz" integrity sha512-RDKSYD0maWy5r7zb5cWQS+uSPc26mgOzdORJ8hxILmWM7S/Ncwky7BcAtXVY5iRbKjBdHsWU8Yg7hfoZjtkv7w== dependencies: "@mdn/browser-compat-data" "^5.3.13" @@ -5351,7 +5346,7 @@ eslint-plugin-compat@^4.2.0: eslint-plugin-import@^2.28.1: version "2.28.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz#63b8b5b3c409bfc75ebaf8fb206b07ab435482c4" + resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz" integrity sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A== dependencies: array-includes "^3.1.6" @@ -5374,7 +5369,7 @@ eslint-plugin-import@^2.28.1: eslint-plugin-jest@^27.4.0: version "27.4.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-27.4.2.tgz#181d999ac67a9b6040db1d27935887cf5a2882ed" + resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.4.2.tgz" integrity sha512-3Nfvv3wbq2+PZlRTf2oaAWXWwbdBejFRBR2O8tAO67o+P8zno+QGbcDYaAXODlreXVg+9gvWhKKmG2rgfb8GEg== dependencies: "@typescript-eslint/utils" "^5.10.0" @@ -5394,7 +5389,7 @@ eslint-plugin-jsdoc@^40.0.0: eslint-plugin-jsx-a11y@6.7.1, eslint-plugin-jsx-a11y@^6.7.1: version "6.7.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz#fca5e02d115f48c9a597a6894d5bcec2f7a76976" + resolved "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz" integrity sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA== dependencies: "@babel/runtime" "^7.20.7" @@ -5416,7 +5411,7 @@ eslint-plugin-jsx-a11y@6.7.1, eslint-plugin-jsx-a11y@^6.7.1: eslint-plugin-prettier@^5.0.0: version "5.0.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.1.tgz#a3b399f04378f79f066379f544e42d6b73f11515" + resolved "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.1.tgz" integrity sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg== dependencies: prettier-linter-helpers "^1.0.0" @@ -5424,17 +5419,17 @@ eslint-plugin-prettier@^5.0.0: eslint-plugin-promise@^6.1.1: version "6.1.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz#269a3e2772f62875661220631bd4dafcb4083816" + resolved "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz" integrity sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig== eslint-plugin-react-hooks@^4.6.0: version "4.6.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" + resolved "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz" integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== eslint-plugin-react@^7.33.2: version "7.33.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz#69ee09443ffc583927eafe86ffebb470ee737608" + resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz" integrity sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw== dependencies: array-includes "^3.1.6" @@ -5456,7 +5451,7 @@ eslint-plugin-react@^7.33.2: eslint-scope@5.1.1, eslint-scope@^5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== dependencies: esrecurse "^4.3.0" @@ -5529,7 +5524,7 @@ espree@^9.6.0, espree@^9.6.1: esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== esquery@^1.4.2, esquery@^1.5.0: @@ -5548,7 +5543,7 @@ esrecurse@^4.3.0: estraverse@^4.1.1: version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: @@ -5568,7 +5563,7 @@ esutils@^2.0.2: etag@~1.8.1: version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== event-target-shim@^5.0.0: @@ -5578,12 +5573,12 @@ event-target-shim@^5.0.0: eventemitter3@^4.0.0: version "4.0.7" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== events@^3.2.0: version "3.3.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== execa@^5.0.0, execa@^5.1.1: @@ -5603,7 +5598,7 @@ execa@^5.0.0, execa@^5.1.1: execa@^7.1.1: version "7.2.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-7.2.0.tgz#657e75ba984f42a70f38928cedc87d6f2d4fe4e9" + resolved "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz" integrity sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA== dependencies: cross-spawn "^7.0.3" @@ -5618,7 +5613,7 @@ execa@^7.1.1: exit@^0.1.2: version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + resolved "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== expect@^29.0.0, expect@^29.7.0: @@ -5634,12 +5629,12 @@ expect@^29.0.0, expect@^29.7.0: exponential-backoff@^3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/exponential-backoff/-/exponential-backoff-3.1.1.tgz#64ac7526fe341ab18a39016cd22c787d01e00bf6" + resolved "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz" integrity sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw== express@^4.17.3: version "4.18.2" - resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" + resolved "https://registry.npmjs.org/express/-/express-4.18.2.tgz" integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== dependencies: accepts "~1.3.8" @@ -5676,7 +5671,7 @@ express@^4.17.3: extract-zip@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" + resolved "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz" integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg== dependencies: debug "^4.1.1" @@ -5687,7 +5682,7 @@ extract-zip@^2.0.1: extsprintf@^1.2.0: version "1.4.1" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" + resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz" integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: @@ -5697,12 +5692,12 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: fast-diff@^1.1.2: version "1.3.0" - resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" + resolved "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz" integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.1: version "3.3.1" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz" integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== dependencies: "@nodelib/fs.stat" "^2.0.2" @@ -5723,7 +5718,7 @@ fast-levenshtein@^2.0.6: fastest-levenshtein@^1.0.12: version "1.0.16" - resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" + resolved "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz" integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== fastq@^1.6.0: @@ -5735,14 +5730,14 @@ fastq@^1.6.0: faye-websocket@^0.11.3: version "0.11.4" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" + resolved "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz" integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== dependencies: websocket-driver ">=0.5.1" fb-watchman@^2.0.0: version "2.0.2" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" + resolved "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz" integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== dependencies: bser "2.1.1" @@ -5774,7 +5769,7 @@ fbjs@^3.0.0, fbjs@^3.0.1: fd-slicer@~1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" + resolved "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz" integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g== dependencies: pend "~1.2.0" @@ -5788,7 +5783,7 @@ file-entry-cache@^6.0.1: file-loader@^6.2.0: version "6.2.0" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" + resolved "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz" integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== dependencies: loader-utils "^2.0.0" @@ -5796,7 +5791,7 @@ file-loader@^6.2.0: filelist@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" + resolved "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz" integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== dependencies: minimatch "^5.0.1" @@ -5810,7 +5805,7 @@ fill-range@^7.0.1: finalhandler@1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" + resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz" integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== dependencies: debug "2.6.9" @@ -5823,12 +5818,12 @@ finalhandler@1.2.0: find-root@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" + resolved "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz" integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== dependencies: locate-path "^5.0.0" @@ -5853,7 +5848,7 @@ flat-cache@^3.0.4: flat@^5.0.2: version "5.0.2" - resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + resolved "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz" integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== flatted@^3.2.7: @@ -5876,14 +5871,14 @@ follow-redirects@^1.0.0, follow-redirects@^1.14.0: for-each@^0.3.3: version "0.3.3" - resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + resolved "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz" integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== dependencies: is-callable "^1.1.3" foreground-child@^3.1.0: version "3.1.1" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" + resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz" integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== dependencies: cross-spawn "^7.0.0" @@ -5891,7 +5886,7 @@ foreground-child@^3.1.0: form-data@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz" integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== dependencies: asynckit "^0.4.0" @@ -5914,17 +5909,17 @@ formik@^2.2.9: forwarded@0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== fresh@0.5.2: version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== fs-extra@^10.0.0, fs-extra@^10.1.0: version "10.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz" integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== dependencies: graceful-fs "^4.2.0" @@ -5933,7 +5928,7 @@ fs-extra@^10.0.0, fs-extra@^10.1.0: fs-extra@^8.1.0: version "8.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz" integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== dependencies: graceful-fs "^4.2.0" @@ -5942,7 +5937,7 @@ fs-extra@^8.1.0: fs-extra@^9.0.0, fs-extra@^9.0.1: version "9.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== dependencies: at-least-node "^1.0.0" @@ -5952,21 +5947,21 @@ fs-extra@^9.0.0, fs-extra@^9.0.1: fs-minipass@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz" integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== dependencies: minipass "^3.0.0" fs-minipass@^3.0.0: version "3.0.3" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-3.0.3.tgz#79a85981c4dc120065e96f62086bf6f9dc26cc54" + resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz" integrity sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw== dependencies: minipass "^7.0.3" fs-monkey@^1.0.4: version "1.0.5" - resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.5.tgz#fe450175f0db0d7ea758102e1d84096acb925788" + resolved "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz" integrity sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew== fs.realpath@^1.0.0: @@ -5981,12 +5976,12 @@ fsevents@^2.3.2, fsevents@~2.3.2: function-bind@^1.1.1: version "1.1.2" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== function.prototype.name@^1.1.5, function.prototype.name@^1.1.6: version "1.1.6" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" + resolved "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz" integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== dependencies: call-bind "^1.0.2" @@ -5996,12 +5991,12 @@ function.prototype.name@^1.1.5, function.prototype.name@^1.1.6: functions-have-names@^1.2.3: version "1.2.3" - resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + resolved "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== gauge@^4.0.3: version "4.0.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" + resolved "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz" integrity sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg== dependencies: aproba "^1.0.3 || ^2.0.0" @@ -6020,12 +6015,12 @@ gensync@^1.0.0-beta.2: get-caller-file@^2.0.5: version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz" integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== dependencies: function-bind "^1.1.1" @@ -6035,12 +6030,12 @@ get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@ get-package-type@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + resolved "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== get-stream@^5.1.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz" integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== dependencies: pump "^3.0.0" @@ -6052,7 +6047,7 @@ get-stream@^6.0.0, get-stream@^6.0.1: get-symbol-description@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + resolved "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz" integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== dependencies: call-bind "^1.0.2" @@ -6060,7 +6055,7 @@ get-symbol-description@^1.0.0: get-tsconfig@^4.5.0: version "4.7.2" - resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.7.2.tgz#0dcd6fb330391d46332f4c6c1bf89a6514c2ddce" + resolved "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.2.tgz" integrity sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A== dependencies: resolve-pkg-maps "^1.0.0" @@ -6081,12 +6076,12 @@ glob-parent@^6.0.2: glob-to-regexp@^0.4.1: version "0.4.1" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== glob@^10.2.2, glob@^10.3.7: version "10.3.10" - resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.10.tgz#0351ebb809fd187fe421ab96af83d3a70715df4b" + resolved "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz" integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== dependencies: foreground-child "^3.1.0" @@ -6109,7 +6104,7 @@ glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: global-agent@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/global-agent/-/global-agent-3.0.0.tgz#ae7cd31bd3583b93c5a16437a1afe27cc33a1ab6" + resolved "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz" integrity sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q== dependencies: boolean "^3.0.1" @@ -6133,14 +6128,14 @@ globals@^13.19.0: globalthis@^1.0.1, globalthis@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" + resolved "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz" integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== dependencies: define-properties "^1.1.3" globby@^11.1.0: version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== dependencies: array-union "^2.1.0" @@ -6157,14 +6152,14 @@ goober@^2.1.10: gopd@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + resolved "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz" integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== dependencies: get-intrinsic "^1.1.3" got@^11.7.0, got@^11.8.5: version "11.8.6" - resolved "https://registry.yarnpkg.com/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a" + resolved "https://registry.npmjs.org/got/-/got-11.8.6.tgz" integrity sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g== dependencies: "@sindresorhus/is" "^4.0.0" @@ -6191,24 +6186,24 @@ graphemer@^1.4.0: gzip-size@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" + resolved "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz" integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== dependencies: duplexer "^0.1.2" handle-thing@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" + resolved "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz" integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== harmony-reflect@^1.4.6: version "1.6.2" - resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.2.tgz#31ecbd32e648a34d030d86adb67d4d47547fe710" + resolved "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz" integrity sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g== has-bigints@^1.0.1, has-bigints@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz" integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== has-flag@^3.0.0: @@ -6223,36 +6218,36 @@ has-flag@^4.0.0: has-property-descriptors@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz" integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== dependencies: get-intrinsic "^1.1.1" has-proto@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" + resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz" integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== has-symbols@^1.0.2, has-symbols@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== has-tostringtag@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz" integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== dependencies: has-symbols "^1.0.2" has-unicode@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + resolved "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz" integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== has@^1.0.3: version "1.0.4" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.4.tgz#2eb2860e000011dae4f1406a86fe80e530fb2ec6" + resolved "https://registry.npmjs.org/has/-/has-1.0.4.tgz" integrity sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ== hash.js@^1.0.0, hash.js@^1.0.3: @@ -6265,7 +6260,7 @@ hash.js@^1.0.0, hash.js@^1.0.3: he@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== hmac-drbg@^1.0.1: @@ -6286,14 +6281,14 @@ hoist-non-react-statics@^3.3.0: hosted-git-info@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" + resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz" integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== dependencies: lru-cache "^6.0.0" hpack.js@^2.1.6: version "2.1.6" - resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + resolved "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz" integrity sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ== dependencies: inherits "^2.0.1" @@ -6303,24 +6298,24 @@ hpack.js@^2.1.6: html-encoding-sniffer@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz#2cb1a8cf0db52414776e5b2a7a04d5dd98158de9" + resolved "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz" integrity sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA== dependencies: whatwg-encoding "^2.0.0" html-entities@^2.1.0, html-entities@^2.3.2: version "2.4.0" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.4.0.tgz#edd0cee70402584c8c76cc2c0556db09d1f45061" + resolved "https://registry.npmjs.org/html-entities/-/html-entities-2.4.0.tgz" integrity sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ== html-escaper@^2.0.0: version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== html-minifier-terser@^6.0.2: version "6.1.0" - resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#bfc818934cc07918f6b3669f5774ecdfd48f32ab" + resolved "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz" integrity sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw== dependencies: camel-case "^4.1.2" @@ -6333,7 +6328,7 @@ html-minifier-terser@^6.0.2: html-webpack-plugin@^5.5.3: version "5.5.3" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz#72270f4a78e222b5825b296e5e3e1328ad525a3e" + resolved "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz" integrity sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg== dependencies: "@types/html-minifier-terser" "^6.0.0" @@ -6344,7 +6339,7 @@ html-webpack-plugin@^5.5.3: htmlparser2@^6.1.0: version "6.1.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" + resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz" integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== dependencies: domelementtype "^2.0.1" @@ -6354,17 +6349,17 @@ htmlparser2@^6.1.0: http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" + resolved "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz" integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== http-deceiver@^1.2.7: version "1.2.7" - resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + resolved "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz" integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== http-errors@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== dependencies: depd "2.0.0" @@ -6375,7 +6370,7 @@ http-errors@2.0.0: http-errors@~1.6.2: version "1.6.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== dependencies: depd "~1.1.2" @@ -6385,12 +6380,12 @@ http-errors@~1.6.2: http-parser-js@>=0.5.1: version "0.5.8" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.8.tgz#af23090d9ac4e24573de6f6aecc9d84a48bf20e3" + resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz" integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q== http-proxy-agent@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" + resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz" integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== dependencies: "@tootallnate/once" "2" @@ -6399,7 +6394,7 @@ http-proxy-agent@^5.0.0: http-proxy-middleware@^2.0.3: version "2.0.6" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz#e1a4dd6979572c7ab5a4e4b55095d1f32a74963f" + resolved "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz" integrity sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw== dependencies: "@types/http-proxy" "^1.17.8" @@ -6410,7 +6405,7 @@ http-proxy-middleware@^2.0.3: http-proxy@^1.18.1: version "1.18.1" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + resolved "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz" integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== dependencies: eventemitter3 "^4.0.0" @@ -6419,7 +6414,7 @@ http-proxy@^1.18.1: http2-wrapper@^1.0.0-beta.5.2: version "1.0.3" - resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" + resolved "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz" integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== dependencies: quick-lru "^5.1.1" @@ -6427,7 +6422,7 @@ http2-wrapper@^1.0.0-beta.5.2: https-proxy-agent@^5.0.0, https-proxy-agent@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== dependencies: agent-base "6" @@ -6440,12 +6435,12 @@ human-signals@^2.1.0: human-signals@^4.3.0: version "4.3.1" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-4.3.1.tgz#ab7f811e851fca97ffbd2c1fe9a958964de321b2" + resolved "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz" integrity sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ== humanize-ms@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + resolved "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz" integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== dependencies: ms "^2.0.0" @@ -6457,7 +6452,7 @@ husky@^8.0.1: iconv-corefoundation@^1.1.7: version "1.1.7" - resolved "https://registry.yarnpkg.com/iconv-corefoundation/-/iconv-corefoundation-1.1.7.tgz#31065e6ab2c9272154c8b0821151e2c88f1b002a" + resolved "https://registry.npmjs.org/iconv-corefoundation/-/iconv-corefoundation-1.1.7.tgz" integrity sha512-T10qvkw0zz4wnm560lOEg0PovVqUXuOFhhHAkixw8/sycy7TJt7v/RrkEKEQnAw2viPSJu6iAkErxnzR0g8PpQ== dependencies: cli-truncate "^2.1.0" @@ -6465,26 +6460,26 @@ iconv-corefoundation@^1.1.7: iconv-lite@0.4.24: version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: safer-buffer ">= 2.1.2 < 3" iconv-lite@0.6.3, iconv-lite@^0.6.2: version "0.6.3" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== dependencies: safer-buffer ">= 2.1.2 < 3.0.0" icss-utils@^5.0.0, icss-utils@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" + resolved "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz" integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== identity-obj-proxy@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14" + resolved "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz" integrity sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA== dependencies: harmony-reflect "^1.4.6" @@ -6501,7 +6496,7 @@ ignore@^5.2.0, ignore@^5.2.4: immediate@~3.0.5: version "3.0.6" - resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" + resolved "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz" integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== immutable@^4.0.0: @@ -6519,14 +6514,14 @@ import-fresh@^3.2.1, import-fresh@^3.3.0: import-from@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/import-from/-/import-from-3.0.0.tgz#055cfec38cd5a27d8057ca51376d7d3bf0891966" + resolved "https://registry.npmjs.org/import-from/-/import-from-3.0.0.tgz" integrity sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ== dependencies: resolve-from "^5.0.0" import-local@^3.0.2: version "3.1.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" + resolved "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz" integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== dependencies: pkg-dir "^4.2.0" @@ -6557,12 +6552,12 @@ inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, i inherits@2.0.3: version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== internal-slot@^1.0.4, internal-slot@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" + resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz" integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== dependencies: get-intrinsic "^1.2.0" @@ -6571,32 +6566,32 @@ internal-slot@^1.0.4, internal-slot@^1.0.5: interpret@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" + resolved "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz" integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== interpret@^3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-3.1.1.tgz#5be0ceed67ca79c6c4bc5cf0d7ee843dcea110c4" + resolved "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz" integrity sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ== ip@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.0.tgz#4cf4ab182fee2314c75ede1276f8c80b479936da" + resolved "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz" integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ== ipaddr.js@1.9.1: version "1.9.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== ipaddr.js@^2.0.1: version "2.1.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.1.0.tgz#2119bc447ff8c257753b196fc5f1ce08a4cdf39f" + resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz" integrity sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ== is-arguments@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz" integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== dependencies: call-bind "^1.0.2" @@ -6604,7 +6599,7 @@ is-arguments@^1.1.1: is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" + resolved "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz" integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== dependencies: call-bind "^1.0.2" @@ -6618,14 +6613,14 @@ is-arrayish@^0.2.1: is-async-function@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/is-async-function/-/is-async-function-2.0.0.tgz#8e4418efd3e5d3a6ebb0164c05ef5afb69aa9646" + resolved "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz" integrity sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA== dependencies: has-tostringtag "^1.0.0" is-bigint@^1.0.1: version "1.0.4" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz" integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== dependencies: has-bigints "^1.0.1" @@ -6639,7 +6634,7 @@ is-binary-path@~2.1.0: is-boolean-object@^1.1.0: version "1.1.2" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz" integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== dependencies: call-bind "^1.0.2" @@ -6647,38 +6642,38 @@ is-boolean-object@^1.1.0: is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: version "1.2.7" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== is-ci@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.1.tgz#db6ecbed1bd659c43dac0f45661e7674103d1867" + resolved "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz" integrity sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ== dependencies: ci-info "^3.2.0" is-core-module@^2.11.0, is-core-module@^2.13.0: version "2.13.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.0.tgz#bb52aa6e2cbd49a30c2ba68c42bf3435ba6072db" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz" integrity sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ== dependencies: has "^1.0.3" is-date-object@^1.0.1, is-date-object@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz" integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== dependencies: has-tostringtag "^1.0.0" is-docker@^2.0.0, is-docker@^2.1.1: version "2.2.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== is-docker@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200" + resolved "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz" integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== is-extglob@^2.1.1: @@ -6688,7 +6683,7 @@ is-extglob@^2.1.1: is-finalizationregistry@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz#c8749b65f17c133313e661b1289b95ad3dbd62e6" + resolved "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz" integrity sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw== dependencies: call-bind "^1.0.2" @@ -6705,12 +6700,12 @@ is-fullwidth-code-point@^4.0.0: is-generator-fn@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== is-generator-function@^1.0.10: version "1.0.10" - resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + resolved "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz" integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== dependencies: has-tostringtag "^1.0.0" @@ -6724,34 +6719,34 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: is-inside-container@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-inside-container/-/is-inside-container-1.0.0.tgz#e81fba699662eb31dbdaf26766a61d4814717ea4" + resolved "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz" integrity sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA== dependencies: is-docker "^3.0.0" is-interactive@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" + resolved "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz" integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== is-lambda@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" + resolved "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz" integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== is-map@^2.0.1, is-map@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" + resolved "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz" integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== is-negative-zero@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz" integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== is-number-object@^1.0.4: version "1.0.7" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz" integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== dependencies: has-tostringtag "^1.0.0" @@ -6768,29 +6763,29 @@ is-path-inside@^3.0.3: is-plain-obj@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" + resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz" integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== is-plain-object@^2.0.4: version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== dependencies: isobject "^3.0.1" is-plain-object@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" + resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz" integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== is-potential-custom-element-name@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" + resolved "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz" integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== is-regex@^1.1.4: version "1.1.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz" integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== dependencies: call-bind "^1.0.2" @@ -6798,12 +6793,12 @@ is-regex@^1.1.4: is-set@^2.0.1, is-set@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" + resolved "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz" integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== is-shared-array-buffer@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + resolved "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz" integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== dependencies: call-bind "^1.0.2" @@ -6815,50 +6810,50 @@ is-stream@^2.0.0: is-stream@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz" integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== is-string@^1.0.5, is-string@^1.0.7: version "1.0.7" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz" integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== dependencies: has-tostringtag "^1.0.0" is-symbol@^1.0.2, is-symbol@^1.0.3: version "1.0.4" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz" integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== dependencies: has-symbols "^1.0.2" is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.9: version "1.1.12" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" + resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz" integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== dependencies: which-typed-array "^1.1.11" is-unicode-supported@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== is-weakmap@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" + resolved "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz" integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== is-weakref@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz" integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== dependencies: call-bind "^1.0.2" is-weakset@^2.0.1: version "2.0.2" - resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.2.tgz#4569d67a747a1ce5a994dfd4ef6dcea76e7c0a1d" + resolved "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz" integrity sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg== dependencies: call-bind "^1.0.2" @@ -6866,29 +6861,29 @@ is-weakset@^2.0.1: is-wsl@^2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== dependencies: is-docker "^2.0.0" isarray@^2.0.5: version "2.0.5" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + resolved "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz" integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== isarray@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== isbinaryfile@^4.0.8: version "4.0.10" - resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.10.tgz#0c5b5e30c2557a2f06febd37b7322946aaee42b3" + resolved "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz" integrity sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw== isbinaryfile@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-5.0.0.tgz#034b7e54989dab8986598cbcea41f66663c65234" + resolved "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-5.0.0.tgz" integrity sha512-UDdnyGvMajJUWCkib7Cei/dvyJrrvo4FIrsvSFWdPpXSUorzXrDJ0S+X5Q4ZlasfPjca4yqCNNsjbCeiy8FFeg== isexe@^2.0.0: @@ -6898,17 +6893,17 @@ isexe@^2.0.0: isobject@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" + resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz" integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== istanbul-lib-instrument@^5.0.4: version "5.2.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" + resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz" integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== dependencies: "@babel/core" "^7.12.3" @@ -6919,7 +6914,7 @@ istanbul-lib-instrument@^5.0.4: istanbul-lib-instrument@^6.0.0: version "6.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz#71e87707e8041428732518c6fb5211761753fbdf" + resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz" integrity sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA== dependencies: "@babel/core" "^7.12.3" @@ -6930,7 +6925,7 @@ istanbul-lib-instrument@^6.0.0: istanbul-lib-report@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" + resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz" integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== dependencies: istanbul-lib-coverage "^3.0.0" @@ -6939,7 +6934,7 @@ istanbul-lib-report@^3.0.0: istanbul-lib-source-maps@^4.0.0: version "4.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" + resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz" integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== dependencies: debug "^4.1.1" @@ -6948,7 +6943,7 @@ istanbul-lib-source-maps@^4.0.0: istanbul-reports@^3.1.3: version "3.1.6" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.6.tgz#2544bcab4768154281a2f0870471902704ccaa1a" + resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz" integrity sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg== dependencies: html-escaper "^2.0.0" @@ -6956,7 +6951,7 @@ istanbul-reports@^3.1.3: iterator.prototype@^1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.2.tgz#5e29c8924f01916cb9335f1ff80619dcff22b0c0" + resolved "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz" integrity sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w== dependencies: define-properties "^1.2.1" @@ -6967,7 +6962,7 @@ iterator.prototype@^1.1.2: jackspeak@^2.3.5: version "2.3.6" - resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" + resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz" integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== dependencies: "@isaacs/cliui" "^8.0.2" @@ -6976,7 +6971,7 @@ jackspeak@^2.3.5: jake@^10.8.5: version "10.8.7" - resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.7.tgz#63a32821177940c33f356e0ba44ff9d34e1c7d8f" + resolved "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz" integrity sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w== dependencies: async "^3.2.3" @@ -6986,7 +6981,7 @@ jake@^10.8.5: jest-changed-files@^29.7.0: version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.7.0.tgz#1c06d07e77c78e1585d020424dedc10d6e17ac3a" + resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz" integrity sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w== dependencies: execa "^5.0.0" @@ -6995,7 +6990,7 @@ jest-changed-files@^29.7.0: jest-circus@^29.7.0: version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.7.0.tgz#b6817a45fcc835d8b16d5962d0c026473ee3668a" + resolved "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz" integrity sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw== dependencies: "@jest/environment" "^29.7.0" @@ -7021,7 +7016,7 @@ jest-circus@^29.7.0: jest-cli@^29.7.0: version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.7.0.tgz#5592c940798e0cae677eec169264f2d839a37995" + resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz" integrity sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg== dependencies: "@jest/core" "^29.7.0" @@ -7038,7 +7033,7 @@ jest-cli@^29.7.0: jest-config@^29.7.0: version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.7.0.tgz#bcbda8806dbcc01b1e316a46bb74085a84b0245f" + resolved "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz" integrity sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ== dependencies: "@babel/core" "^7.11.6" @@ -7076,14 +7071,14 @@ jest-diff@^29.7.0: jest-docblock@^29.7.0: version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.7.0.tgz#8fddb6adc3cdc955c93e2a87f61cfd350d5d119a" + resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz" integrity sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g== dependencies: detect-newline "^3.0.0" jest-each@^29.7.0: version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.7.0.tgz#162a9b3f2328bdd991beaabffbb74745e56577d1" + resolved "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz" integrity sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ== dependencies: "@jest/types" "^29.6.3" @@ -7094,7 +7089,7 @@ jest-each@^29.7.0: jest-environment-jsdom@^29.7.0: version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz#d206fa3551933c3fd519e5dfdb58a0f5139a837f" + resolved "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz" integrity sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA== dependencies: "@jest/environment" "^29.7.0" @@ -7108,7 +7103,7 @@ jest-environment-jsdom@^29.7.0: jest-environment-node@^29.7.0: version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.7.0.tgz#0b93e111dda8ec120bc8300e6d1fb9576e164376" + resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz" integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== dependencies: "@jest/environment" "^29.7.0" @@ -7125,7 +7120,7 @@ jest-get-type@^29.6.3: jest-haste-map@^29.7.0: version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.7.0.tgz#3c2396524482f5a0506376e6c858c3bbcc17b104" + resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz" integrity sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA== dependencies: "@jest/types" "^29.6.3" @@ -7144,7 +7139,7 @@ jest-haste-map@^29.7.0: jest-leak-detector@^29.7.0: version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz#5b7ec0dadfdfec0ca383dc9aa016d36b5ea4c728" + resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz" integrity sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw== dependencies: jest-get-type "^29.6.3" @@ -7177,7 +7172,7 @@ jest-message-util@^29.7.0: jest-mock@^29.7.0: version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.7.0.tgz#4e836cf60e99c6fcfabe9f99d017f3fdd50a6347" + resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz" integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== dependencies: "@jest/types" "^29.6.3" @@ -7186,17 +7181,17 @@ jest-mock@^29.7.0: jest-pnp-resolver@^1.2.2: version "1.2.3" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" + resolved "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz" integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== jest-regex-util@^29.6.3: version "29.6.3" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52" + resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz" integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== jest-resolve-dependencies@^29.7.0: version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz#1b04f2c095f37fc776ff40803dc92921b1e88428" + resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz" integrity sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA== dependencies: jest-regex-util "^29.6.3" @@ -7204,7 +7199,7 @@ jest-resolve-dependencies@^29.7.0: jest-resolve@^29.7.0: version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.7.0.tgz#64d6a8992dd26f635ab0c01e5eef4399c6bcbc30" + resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz" integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA== dependencies: chalk "^4.0.0" @@ -7219,7 +7214,7 @@ jest-resolve@^29.7.0: jest-runner@^29.7.0: version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.7.0.tgz#809af072d408a53dcfd2e849a4c976d3132f718e" + resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz" integrity sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ== dependencies: "@jest/console" "^29.7.0" @@ -7246,7 +7241,7 @@ jest-runner@^29.7.0: jest-runtime@^29.7.0: version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.7.0.tgz#efecb3141cf7d3767a3a0cc8f7c9990587d3d817" + resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz" integrity sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ== dependencies: "@jest/environment" "^29.7.0" @@ -7274,7 +7269,7 @@ jest-runtime@^29.7.0: jest-snapshot@^29.7.0: version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.7.0.tgz#c2c574c3f51865da1bb329036778a69bf88a6be5" + resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz" integrity sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw== dependencies: "@babel/core" "^7.11.6" @@ -7312,7 +7307,7 @@ jest-util@^29.0.0, jest-util@^29.7.0: jest-validate@^29.7.0: version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.7.0.tgz#7bf705511c64da591d46b15fce41400d52147d9c" + resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz" integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== dependencies: "@jest/types" "^29.6.3" @@ -7324,7 +7319,7 @@ jest-validate@^29.7.0: jest-watcher@^29.7.0: version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.7.0.tgz#7810d30d619c3a62093223ce6bb359ca1b28a2f2" + resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz" integrity sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g== dependencies: "@jest/test-result" "^29.7.0" @@ -7338,7 +7333,7 @@ jest-watcher@^29.7.0: jest-worker@^27.4.5: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz" integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== dependencies: "@types/node" "*" @@ -7347,7 +7342,7 @@ jest-worker@^27.4.5: jest-worker@^29.4.3, jest-worker@^29.7.0: version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz" integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== dependencies: "@types/node" "*" @@ -7357,7 +7352,7 @@ jest-worker@^29.4.3, jest-worker@^29.7.0: jest@^29.7.0: version "29.7.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-29.7.0.tgz#994676fc24177f088f1c5e3737f5697204ff2613" + resolved "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz" integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw== dependencies: "@jest/core" "^29.7.0" @@ -7372,7 +7367,7 @@ jest@^29.7.0: js-yaml@^3.13.1: version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== dependencies: argparse "^1.0.7" @@ -7392,7 +7387,7 @@ jsdoc-type-pratt-parser@~4.0.0: jsdom@^20.0.0: version "20.0.3" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-20.0.3.tgz#886a41ba1d4726f67a8858028c99489fed6ad4db" + resolved "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz" integrity sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ== dependencies: abab "^2.0.6" @@ -7429,7 +7424,7 @@ jsesc@^2.5.1: jsesc@~0.5.0: version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== json-buffer@3.0.1: @@ -7449,7 +7444,7 @@ json-schema-traverse@^0.4.1: json-schema-traverse@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== json-stable-stringify-without-jsonify@^1.0.1: @@ -7459,12 +7454,12 @@ json-stable-stringify-without-jsonify@^1.0.1: json-stringify-safe@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== json5@^1.0.1, json5@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + resolved "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz" integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== dependencies: minimist "^1.2.0" @@ -7476,14 +7471,14 @@ json5@^2.1.2, json5@^2.2.0, json5@^2.2.2, json5@^2.2.3: jsonfile@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz" integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== optionalDependencies: graceful-fs "^4.1.6" jsonfile@^6.0.1: version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== dependencies: universalify "^2.0.0" @@ -7492,7 +7487,7 @@ jsonfile@^6.0.1: "jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.3: version "3.3.5" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#4766bd05a8e2a11af222becd19e15575e52a853a" + resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz" integrity sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ== dependencies: array-includes "^3.1.6" @@ -7502,7 +7497,7 @@ jsonfile@^6.0.1: jszip@^3.1.0: version "3.10.1" - resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.10.1.tgz#34aee70eb18ea1faec2f589208a157d1feb091c2" + resolved "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz" integrity sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g== dependencies: lie "~3.3.0" @@ -7512,17 +7507,17 @@ jszip@^3.1.0: keyboardevent-from-electron-accelerator@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/keyboardevent-from-electron-accelerator/-/keyboardevent-from-electron-accelerator-2.0.0.tgz#ace21b1aa4e47148815d160057f9edb66567c50c" + resolved "https://registry.npmjs.org/keyboardevent-from-electron-accelerator/-/keyboardevent-from-electron-accelerator-2.0.0.tgz" integrity sha512-iQcmNA0M4ETMNi0kG/q0h/43wZk7rMeKYrXP7sqKIJbHkTU8Koowgzv+ieR/vWJbOwxx5nDC3UnudZ0aLSu4VA== keyboardevents-areequal@^0.2.1: version "0.2.2" - resolved "https://registry.yarnpkg.com/keyboardevents-areequal/-/keyboardevents-areequal-0.2.2.tgz#88191ec738ce9f7591c25e9056de928b40277194" + resolved "https://registry.npmjs.org/keyboardevents-areequal/-/keyboardevents-areequal-0.2.2.tgz" integrity sha512-Nv+Kr33T0mEjxR500q+I6IWisOQ0lK1GGOncV0kWE6n4KFmpcu7RUX5/2B0EUtX51Cb0HjZ9VJsSY3u4cBa0kw== keyv@^4.0.0: version "4.5.4" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz" integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== dependencies: json-buffer "3.0.1" @@ -7536,29 +7531,29 @@ keyv@^4.5.3: kind-of@^6.0.2: version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== kleur@^3.0.3: version "3.0.3" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== language-subtag-registry@~0.3.2: version "0.3.22" - resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz#2e1500861b2e457eba7e7ae86877cbd08fa1fd1d" + resolved "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz" integrity sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w== language-tags@=1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a" + resolved "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz" integrity sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ== dependencies: language-subtag-registry "~0.3.2" launch-editor@^2.6.0: version "2.6.1" - resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.6.1.tgz#f259c9ef95cbc9425620bbbd14b468fcdb4ffe3c" + resolved "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.1.tgz" integrity sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw== dependencies: picocolors "^1.0.0" @@ -7566,12 +7561,12 @@ launch-editor@^2.6.0: lazy-val@^1.0.4, lazy-val@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/lazy-val/-/lazy-val-1.0.5.tgz#6cf3b9f5bc31cee7ee3e369c0832b7583dcd923d" + resolved "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.5.tgz" integrity sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q== leven@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== levn@^0.4.1: @@ -7584,7 +7579,7 @@ levn@^0.4.1: lie@~3.3.0: version "3.3.0" - resolved "https://registry.yarnpkg.com/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a" + resolved "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz" integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ== dependencies: immediate "~3.0.5" @@ -7596,7 +7591,7 @@ lilconfig@2.0.5: lilconfig@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" + resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz" integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== lines-and-columns@^1.1.6: @@ -7640,12 +7635,12 @@ listr2@^4.0.5: loader-runner@^4.2.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" + resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz" integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== loader-utils@^1.4.2: version "1.4.2" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.2.tgz#29a957f3a63973883eb684f10ffd3d151fec01a3" + resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz" integrity sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg== dependencies: big.js "^5.2.2" @@ -7654,7 +7649,7 @@ loader-utils@^1.4.2: loader-utils@^2.0.0, loader-utils@^2.0.4: version "2.0.4" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" + resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz" integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== dependencies: big.js "^5.2.2" @@ -7663,7 +7658,7 @@ loader-utils@^2.0.0, loader-utils@^2.0.4: locate-path@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== dependencies: p-locate "^4.1.0" @@ -7687,27 +7682,27 @@ lodash.curry@^4.0.1: lodash.debounce@^4.0.8: version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + resolved "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz" integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== lodash.difference@^4.5.0: version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.difference/-/lodash.difference-4.5.0.tgz#9ccb4e505d486b91651345772885a2df27fd017c" + resolved "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz" integrity sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA== lodash.escape@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-4.0.1.tgz#c9044690c21e04294beaa517712fded1fa88de98" + resolved "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz" integrity sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw== lodash.escaperegexp@^4.1.2: version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz#64762c48618082518ac3df4ccf5d5886dae20347" + resolved "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz" integrity sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw== lodash.flatten@^4.4.0: version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" + resolved "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz" integrity sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g== lodash.flow@^3.3.0: @@ -7717,17 +7712,17 @@ lodash.flow@^3.3.0: lodash.invokemap@^4.6.0: version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.invokemap/-/lodash.invokemap-4.6.0.tgz#1748cda5d8b0ef8369c4eb3ec54c21feba1f2d62" + resolved "https://registry.npmjs.org/lodash.invokemap/-/lodash.invokemap-4.6.0.tgz" integrity sha512-CfkycNtMqgUlfjfdh2BhKO/ZXrP8ePOX5lEU/g0R3ItJcnuxWDwokMGKx1hWcfOikmyOVx6X9IwWnDGlgKl61w== lodash.isequal@^4.5.0: version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + resolved "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz" integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== lodash.memoize@4.x, lodash.memoize@^4.1.2: version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + resolved "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== lodash.merge@^4.6.2: @@ -7737,17 +7732,17 @@ lodash.merge@^4.6.2: lodash.pullall@^4.2.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.pullall/-/lodash.pullall-4.2.0.tgz#9d98b8518b7c965b0fae4099bd9fb7df8bbf38ba" + resolved "https://registry.npmjs.org/lodash.pullall/-/lodash.pullall-4.2.0.tgz" integrity sha512-VhqxBKH0ZxPpLhiu68YD1KnHmbhQJQctcipvmFnqIBDYzcIHzf3Zpu0tpeOKtR4x76p9yohc506eGdOjTmyIBg== lodash.uniq@^4.5.0: version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + resolved "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz" integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== lodash.uniqby@^4.7.0: version "4.7.0" - resolved "https://registry.yarnpkg.com/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz#d99c07a669e9e6d24e1362dfe266c67616af1302" + resolved "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz" integrity sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww== lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21: @@ -7757,7 +7752,7 @@ lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21: log-symbols@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== dependencies: chalk "^4.1.0" @@ -7789,7 +7784,7 @@ lower-case@^2.0.2: lowercase-keys@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" + resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz" integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== lru-cache@^5.1.1: @@ -7808,39 +7803,39 @@ lru-cache@^6.0.0: lru-cache@^7.7.1: version "7.18.3" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz" integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== "lru-cache@^9.1.1 || ^10.0.0": version "10.0.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.1.tgz#0a3be479df549cca0e5d693ac402ff19537a6b7a" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz" integrity sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g== lru_map@^0.3.3: version "0.3.3" - resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd" + resolved "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz" integrity sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ== lz-string@^1.5.0: version "1.5.0" - resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941" + resolved "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz" integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ== make-dir@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz" integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== dependencies: semver "^7.5.3" make-error@1.x, make-error@^1.1.1: version "1.3.6" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== make-fetch-happen@^11.0.3: version "11.1.1" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz#85ceb98079584a9523d4bf71d32996e7e208549f" + resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz" integrity sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w== dependencies: agentkeepalive "^4.2.1" @@ -7861,48 +7856,48 @@ make-fetch-happen@^11.0.3: makeerror@1.0.12: version "1.0.12" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" + resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz" integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== dependencies: tmpl "1.0.5" matcher@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/matcher/-/matcher-3.0.0.tgz#bd9060f4c5b70aa8041ccc6f80368760994f30ca" + resolved "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz" integrity sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng== dependencies: escape-string-regexp "^4.0.0" mdn-data@2.0.28: version "2.0.28" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.28.tgz#5ec48e7bef120654539069e1ae4ddc81ca490eba" + resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz" integrity sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g== mdn-data@2.0.30: version "2.0.30" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.30.tgz#ce4df6f80af6cfbe218ecd5c552ba13c4dfa08cc" + resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz" integrity sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA== media-typer@0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== memfs@^3.4.3: version "3.6.0" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.6.0.tgz#d7a2110f86f79dd950a8b6df6d57bc984aa185f6" + resolved "https://registry.npmjs.org/memfs/-/memfs-3.6.0.tgz" integrity sha512-EGowvkkgbMcIChjMTMkESFDbZeSh8xZ7kNSF0hAiAN4Jh6jgHCRS0Ga/+C8y6Au+oqpezRHCfPsmJ2+DwAgiwQ== dependencies: fs-monkey "^1.0.4" memory-fs@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.2.0.tgz#f2bb25368bc121e391c2520de92969caee0a0290" + resolved "https://registry.npmjs.org/memory-fs/-/memory-fs-0.2.0.tgz" integrity sha512-+y4mDxU4rvXXu5UDSGCGNiesFmwCHuefGMoPCO1WYucNYj7DsLqrFaa2fXVI0H+NNiPTwwzKwspn9yTZqUGqng== merge-descriptors@1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== merge-stream@^2.0.0: @@ -7912,12 +7907,12 @@ merge-stream@^2.0.0: merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== methods@~1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== micromatch@^4.0.0, micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: @@ -7930,24 +7925,24 @@ micromatch@^4.0.0, micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34: version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: mime-db "1.52.0" mime@1.6.0: version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== mime@^2.5.2: version "2.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" + resolved "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz" integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== mimic-fn@^2.1.0: @@ -7957,27 +7952,27 @@ mimic-fn@^2.1.0: mimic-fn@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz" integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== mimic-response@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz" integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== mimic-response@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" + resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz" integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== min-indent@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" + resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== mini-css-extract-plugin@^2.7.6: version "2.7.6" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.6.tgz#282a3d38863fddcd2e0c220aaed5b90bc156564d" + resolved "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.6.tgz" integrity sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw== dependencies: schema-utils "^4.0.0" @@ -8001,33 +7996,33 @@ minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: minimatch@^5.0.1, minimatch@^5.1.1: version "5.1.6" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz" integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== dependencies: brace-expansion "^2.0.1" minimatch@^9.0.1: version "9.0.3" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz" integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== dependencies: brace-expansion "^2.0.1" minimist@^1.2.0, minimist@^1.2.6: version "1.2.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== minipass-collect@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + resolved "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz" integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== dependencies: minipass "^3.0.0" minipass-fetch@^3.0.0: version "3.0.4" - resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-3.0.4.tgz#4d4d9b9f34053af6c6e597a64be8e66e42bf45b7" + resolved "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.4.tgz" integrity sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg== dependencies: minipass "^7.0.3" @@ -8038,45 +8033,45 @@ minipass-fetch@^3.0.0: minipass-flush@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + resolved "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz" integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== dependencies: minipass "^3.0.0" minipass-pipeline@^1.2.4: version "1.2.4" - resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" + resolved "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz" integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== dependencies: minipass "^3.0.0" minipass-sized@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" + resolved "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz" integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== dependencies: minipass "^3.0.0" minipass@^3.0.0: version "3.3.6" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" + resolved "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz" integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== dependencies: yallist "^4.0.0" minipass@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" + resolved "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz" integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== "minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.3: version "7.0.4" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c" + resolved "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz" integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== minizlib@^2.1.1, minizlib@^2.1.2: version "2.1.2" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + resolved "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz" integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== dependencies: minipass "^3.0.0" @@ -8089,24 +8084,24 @@ mixpanel-browser@^2.47.0: mkdirp@^0.5.1: version "0.5.6" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== dependencies: minimist "^1.2.6" mkdirp@^1.0.3: version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== mrmime@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/mrmime/-/mrmime-1.0.1.tgz#5f90c825fad4bdd41dc914eff5d1a8cfdaf24f27" + resolved "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz" integrity sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw== ms@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== ms@2.1.2: @@ -8116,12 +8111,12 @@ ms@2.1.2: ms@2.1.3, ms@^2.0.0, ms@^2.1.1: version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== multicast-dns@^7.2.5: version "7.2.5" - resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.5.tgz#77eb46057f4d7adbd16d9290fa7299f6fa64cced" + resolved "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz" integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg== dependencies: dns-packet "^5.2.2" @@ -8134,7 +8129,7 @@ nanoclone@^0.2.1: nanoid@^3.3.6: version "3.3.6" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz" integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== natural-compare@^1.4.0: @@ -8144,12 +8139,12 @@ natural-compare@^1.4.0: negotiator@0.6.3, negotiator@^0.6.3: version "0.6.3" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== neo-async@^2.6.2: version "2.6.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== no-case@^3.0.4: @@ -8162,7 +8157,7 @@ no-case@^3.0.4: node-abi@^3.45.0: version "3.50.0" - resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.50.0.tgz#bbee6943c8812d20e241539854d7b8003404d917" + resolved "https://registry.npmjs.org/node-abi/-/node-abi-3.50.0.tgz" integrity sha512-2Gxu7Eq7vnBIRfYSmqPruEllMM14FjOQFJSoqdGWthVn+tmwEXzmdPpya6cvvwf0uZA3F5N1fMFr9mijZBplFA== dependencies: semver "^7.3.5" @@ -8174,12 +8169,12 @@ node-abort-controller@^3.0.1: node-addon-api@^1.6.3: version "1.7.2" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-1.7.2.tgz#3df30b95720b53c24e59948b49532b662444f54d" + resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz" integrity sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg== node-api-version@^0.1.4: version "0.1.4" - resolved "https://registry.yarnpkg.com/node-api-version/-/node-api-version-0.1.4.tgz#1ed46a485e462d55d66b5aa1fe2821720dedf080" + resolved "https://registry.npmjs.org/node-api-version/-/node-api-version-0.1.4.tgz" integrity sha512-KGXihXdUChwJAOHO53bv9/vXcLmdUsZ6jIptbvYvkpKfth+r7jw44JkVxQFA3kX5nQjzjmGu1uAu/xNNLNlI5g== dependencies: semver "^7.3.5" @@ -8193,12 +8188,12 @@ node-fetch@^2.6.12: node-forge@^1: version "1.3.1" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" + resolved "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz" integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== node-gyp@^9.0.0: version "9.4.0" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-9.4.0.tgz#2a7a91c7cba4eccfd95e949369f27c9ba704f369" + resolved "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.0.tgz" integrity sha512-dMXsYP6gc9rRbejLXmTbVRYjAHw7ppswsKyMxuxJxxOHzluIO1rGp9TOQgjFJ+2MCqcOcQTOPB/8Xwhr+7s4Eg== dependencies: env-paths "^2.2.0" @@ -8215,7 +8210,7 @@ node-gyp@^9.0.0: node-int64@^0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz" integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== node-releases@^2.0.13: @@ -8225,14 +8220,14 @@ node-releases@^2.0.13: nopt@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-6.0.0.tgz#245801d8ebf409c6df22ab9d95b65e1309cdb16d" + resolved "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz" integrity sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g== dependencies: abbrev "^1.0.0" normalize-path@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz" integrity sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w== dependencies: remove-trailing-separator "^1.0.1" @@ -8244,7 +8239,7 @@ normalize-path@^3.0.0, normalize-path@~3.0.0: normalize-url@^6.0.1: version "6.1.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" + resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz" integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== npm-run-path@^4.0.1: @@ -8256,14 +8251,14 @@ npm-run-path@^4.0.1: npm-run-path@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.1.0.tgz#bc62f7f3f6952d9894bd08944ba011a6ee7b7e00" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz" integrity sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q== dependencies: path-key "^4.0.0" npmlog@^6.0.0: version "6.0.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830" + resolved "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz" integrity sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg== dependencies: are-we-there-yet "^3.0.0" @@ -8273,14 +8268,14 @@ npmlog@^6.0.0: nth-check@^2.0.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz" integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== dependencies: boolbase "^1.0.0" nwsapi@^2.2.2: version "2.2.7" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.7.tgz#738e0707d3128cb750dddcfe90e4610482df0f30" + resolved "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz" integrity sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ== object-assign@^4.1.0, object-assign@^4.1.1: @@ -8295,12 +8290,12 @@ object-inspect@^1.12.2: object-inspect@^1.12.3, object-inspect@^1.9.0: version "1.13.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.0.tgz#42695d3879e1cd5bda6df5062164d80c996e23e2" + resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.0.tgz" integrity sha512-HQ4J+ic8hKrgIt3mqk6cVOVrW2ozL4KdvHlqpBv9vDYWx9ysAgENAdvy4FoGF+KFdhR7nQTNm5J0ctAeOwn+3g== object-is@^1.1.5: version "1.1.5" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + resolved "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz" integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== dependencies: call-bind "^1.0.2" @@ -8308,12 +8303,12 @@ object-is@^1.1.5: object-keys@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== object.assign@^4.1.2, object.assign@^4.1.4: version "4.1.4" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" + resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz" integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== dependencies: call-bind "^1.0.2" @@ -8323,7 +8318,7 @@ object.assign@^4.1.2, object.assign@^4.1.4: object.entries@^1.1.5, object.entries@^1.1.6: version "1.1.7" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.7.tgz#2b47760e2a2e3a752f39dd874655c61a7f03c131" + resolved "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz" integrity sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA== dependencies: call-bind "^1.0.2" @@ -8332,7 +8327,7 @@ object.entries@^1.1.5, object.entries@^1.1.6: object.fromentries@^2.0.6: version "2.0.7" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.7.tgz#71e95f441e9a0ea6baf682ecaaf37fa2a8d7e616" + resolved "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz" integrity sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA== dependencies: call-bind "^1.0.2" @@ -8341,7 +8336,7 @@ object.fromentries@^2.0.6: object.groupby@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.1.tgz#d41d9f3c8d6c778d9cbac86b4ee9f5af103152ee" + resolved "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz" integrity sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ== dependencies: call-bind "^1.0.2" @@ -8351,7 +8346,7 @@ object.groupby@^1.0.0: object.hasown@^1.1.2: version "1.1.3" - resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.3.tgz#6a5f2897bb4d3668b8e79364f98ccf971bda55ae" + resolved "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz" integrity sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA== dependencies: define-properties "^1.2.0" @@ -8359,7 +8354,7 @@ object.hasown@^1.1.2: object.values@^1.1.6: version "1.1.7" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.7.tgz#617ed13272e7e1071b43973aa1655d9291b8442a" + resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz" integrity sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng== dependencies: call-bind "^1.0.2" @@ -8368,19 +8363,19 @@ object.values@^1.1.6: obuf@^1.0.0, obuf@^1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + resolved "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz" integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== on-finished@2.4.1: version "2.4.1" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== dependencies: ee-first "1.1.1" on-headers@~1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + resolved "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz" integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== once@^1.3.0, once@^1.3.1, once@^1.4.0: @@ -8399,14 +8394,14 @@ onetime@^5.1.0, onetime@^5.1.2: onetime@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" + resolved "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz" integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== dependencies: mimic-fn "^4.0.0" open@^8.0.9: version "8.4.2" - resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" + resolved "https://registry.npmjs.org/open/-/open-8.4.2.tgz" integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== dependencies: define-lazy-prop "^2.0.0" @@ -8415,7 +8410,7 @@ open@^8.0.9: open@^9.1.0: version "9.1.0" - resolved "https://registry.yarnpkg.com/open/-/open-9.1.0.tgz#684934359c90ad25742f5a26151970ff8c6c80b6" + resolved "https://registry.npmjs.org/open/-/open-9.1.0.tgz" integrity sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg== dependencies: default-browser "^4.0.0" @@ -8425,7 +8420,7 @@ open@^9.1.0: opener@^1.5.2: version "1.5.2" - resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" + resolved "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz" integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== optionator@^0.9.3: @@ -8442,7 +8437,7 @@ optionator@^0.9.3: ora@^5.1.0: version "5.4.1" - resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" + resolved "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz" integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== dependencies: bl "^4.1.0" @@ -8457,12 +8452,12 @@ ora@^5.1.0: p-cancelable@^2.0.0: version "2.1.1" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" + resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz" integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== p-limit@^2.2.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: p-try "^2.0.0" @@ -8476,7 +8471,7 @@ p-limit@^3.0.2, p-limit@^3.1.0: p-locate@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== dependencies: p-limit "^2.2.0" @@ -8497,7 +8492,7 @@ p-map@^4.0.0: p-retry@^4.5.0: version "4.6.2" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16" + resolved "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz" integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== dependencies: "@types/retry" "0.12.0" @@ -8505,17 +8500,17 @@ p-retry@^4.5.0: p-try@^2.0.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== pako@~1.0.2: version "1.0.11" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + resolved "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz" integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== param-case@^3.0.4: version "3.0.4" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" + resolved "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz" integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== dependencies: dot-case "^3.0.4" @@ -8540,19 +8535,19 @@ parse-json@^5.2.0: parse5@^7.0.0, parse5@^7.1.1: version "7.1.2" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32" + resolved "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz" integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== dependencies: entities "^4.4.0" parseurl@~1.3.2, parseurl@~1.3.3: version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== pascal-case@^3.1.2: version "3.1.2" - resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" + resolved "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz" integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== dependencies: no-case "^3.0.4" @@ -8575,17 +8570,17 @@ path-key@^3.0.0, path-key@^3.1.0: path-key@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" + resolved "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz" integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== path-parse@^1.0.7: version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== path-scurry@^1.10.1: version "1.10.1" - resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.1.tgz#9ba6bf5aa8500fe9fd67df4f0d9483b2b0bfc698" + resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz" integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ== dependencies: lru-cache "^9.1.1 || ^10.0.0" @@ -8593,7 +8588,7 @@ path-scurry@^1.10.1: path-to-regexp@0.1.7: version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz" integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== path-type@^4.0.0: @@ -8603,7 +8598,7 @@ path-type@^4.0.0: pend@~1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + resolved "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz" integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== picocolors@^1.0.0: @@ -8623,24 +8618,24 @@ pidtree@^0.5.0: pify@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== pirates@^4.0.4: version "4.0.6" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" + resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz" integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== pkg-dir@^4.2.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== dependencies: find-up "^4.0.0" plist@^3.0.4, plist@^3.0.5: version "3.1.0" - resolved "https://registry.yarnpkg.com/plist/-/plist-3.1.0.tgz#797a516a93e62f5bde55e0b9cc9c967f860893c9" + resolved "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz" integrity sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ== dependencies: "@xmldom/xmldom" "^0.8.8" @@ -8649,7 +8644,7 @@ plist@^3.0.4, plist@^3.0.5: postcss-calc@^9.0.0: version "9.0.1" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-9.0.1.tgz#a744fd592438a93d6de0f1434c572670361eb6c6" + resolved "https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.1.tgz" integrity sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ== dependencies: postcss-selector-parser "^6.0.11" @@ -8657,7 +8652,7 @@ postcss-calc@^9.0.0: postcss-colormin@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-6.0.0.tgz#d4250652e952e1c0aca70c66942da93d3cdeaafe" + resolved "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-6.0.0.tgz" integrity sha512-EuO+bAUmutWoZYgHn2T1dG1pPqHU6L4TjzPlu4t1wZGXQ/fxV16xg2EJmYi0z+6r+MGV1yvpx1BHkUaRrPa2bw== dependencies: browserslist "^4.21.4" @@ -8667,7 +8662,7 @@ postcss-colormin@^6.0.0: postcss-convert-values@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-6.0.0.tgz#ec94a954957e5c3f78f0e8f65dfcda95280b8996" + resolved "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.0.0.tgz" integrity sha512-U5D8QhVwqT++ecmy8rnTb+RL9n/B806UVaS3m60lqle4YDFcpbS3ae5bTQIh3wOGUSDHSEtMYLs/38dNG7EYFw== dependencies: browserslist "^4.21.4" @@ -8675,27 +8670,27 @@ postcss-convert-values@^6.0.0: postcss-discard-comments@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-6.0.0.tgz#9ca335e8b68919f301b24ba47dde226a42e535fe" + resolved "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-6.0.0.tgz" integrity sha512-p2skSGqzPMZkEQvJsgnkBhCn8gI7NzRH2683EEjrIkoMiwRELx68yoUJ3q3DGSGuQ8Ug9Gsn+OuDr46yfO+eFw== postcss-discard-duplicates@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.0.tgz#c26177a6c33070922e67e9a92c0fd23d443d1355" + resolved "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.0.tgz" integrity sha512-bU1SXIizMLtDW4oSsi5C/xHKbhLlhek/0/yCnoMQany9k3nPBq+Ctsv/9oMmyqbR96HYHxZcHyK2HR5P/mqoGA== postcss-discard-empty@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-6.0.0.tgz#06c1c4fce09e22d2a99e667c8550eb8a3a1b9aee" + resolved "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-6.0.0.tgz" integrity sha512-b+h1S1VT6dNhpcg+LpyiUrdnEZfICF0my7HAKgJixJLW7BnNmpRH34+uw/etf5AhOlIhIAuXApSzzDzMI9K/gQ== postcss-discard-overridden@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-6.0.0.tgz#49c5262db14e975e349692d9024442de7cd8e234" + resolved "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-6.0.0.tgz" integrity sha512-4VELwssYXDFigPYAZ8vL4yX4mUepF/oCBeeIT4OXsJPYOtvJumyz9WflmJWTfDwCUcpDR+z0zvCWBXgTx35SVw== postcss-merge-longhand@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-6.0.0.tgz#6f627b27db939bce316eaa97e22400267e798d69" + resolved "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-6.0.0.tgz" integrity sha512-4VSfd1lvGkLTLYcxFuISDtWUfFS4zXe0FpF149AyziftPFQIWxjvFSKhA4MIxMe4XM3yTDgQMbSNgzIVxChbIg== dependencies: postcss-value-parser "^4.2.0" @@ -8703,7 +8698,7 @@ postcss-merge-longhand@^6.0.0: postcss-merge-rules@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-6.0.1.tgz#39f165746404e646c0f5c510222ccde4824a86aa" + resolved "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.0.1.tgz" integrity sha512-a4tlmJIQo9SCjcfiCcCMg/ZCEe0XTkl/xK0XHBs955GWg9xDX3NwP9pwZ78QUOWB8/0XCjZeJn98Dae0zg6AAw== dependencies: browserslist "^4.21.4" @@ -8713,14 +8708,14 @@ postcss-merge-rules@^6.0.1: postcss-minify-font-values@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-6.0.0.tgz#68d4a028f9fa5f61701974724b2cc9445d8e6070" + resolved "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-6.0.0.tgz" integrity sha512-zNRAVtyh5E8ndZEYXA4WS8ZYsAp798HiIQ1V2UF/C/munLp2r1UGHwf1+6JFu7hdEhJFN+W1WJQKBrtjhFgEnA== dependencies: postcss-value-parser "^4.2.0" postcss-minify-gradients@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-6.0.0.tgz#22b5c88cc63091dadbad34e31ff958404d51d679" + resolved "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-6.0.0.tgz" integrity sha512-wO0F6YfVAR+K1xVxF53ueZJza3L+R3E6cp0VwuXJQejnNUH0DjcAFe3JEBeTY1dLwGa0NlDWueCA1VlEfiKgAA== dependencies: colord "^2.9.1" @@ -8729,7 +8724,7 @@ postcss-minify-gradients@^6.0.0: postcss-minify-params@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-6.0.0.tgz#2b3a85a9e3b990d7a16866f430f5fd1d5961b539" + resolved "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-6.0.0.tgz" integrity sha512-Fz/wMQDveiS0n5JPcvsMeyNXOIMrwF88n7196puSuQSWSa+/Ofc1gDOSY2xi8+A4PqB5dlYCKk/WfqKqsI+ReQ== dependencies: browserslist "^4.21.4" @@ -8738,19 +8733,19 @@ postcss-minify-params@^6.0.0: postcss-minify-selectors@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-6.0.0.tgz#5046c5e8680a586e5a0cad52cc9aa36d6be5bda2" + resolved "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-6.0.0.tgz" integrity sha512-ec/q9JNCOC2CRDNnypipGfOhbYPuUkewGwLnbv6omue/PSASbHSU7s6uSQ0tcFRVv731oMIx8k0SP4ZX6be/0g== dependencies: postcss-selector-parser "^6.0.5" postcss-modules-extract-imports@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d" + resolved "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz" integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== postcss-modules-local-by-default@^4.0.3: version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz#b08eb4f083050708998ba2c6061b50c2870ca524" + resolved "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz" integrity sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA== dependencies: icss-utils "^5.0.0" @@ -8759,61 +8754,61 @@ postcss-modules-local-by-default@^4.0.3: postcss-modules-scope@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06" + resolved "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz" integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg== dependencies: postcss-selector-parser "^6.0.4" postcss-modules-values@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" + resolved "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz" integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== dependencies: icss-utils "^5.0.0" postcss-normalize-charset@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-6.0.0.tgz#36cc12457259064969fb96f84df491652a4b0975" + resolved "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-6.0.0.tgz" integrity sha512-cqundwChbu8yO/gSWkuFDmKrCZ2vJzDAocheT2JTd0sFNA4HMGoKMfbk2B+J0OmO0t5GUkiAkSM5yF2rSLUjgQ== postcss-normalize-display-values@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.0.tgz#8d2961415078644d8c6bbbdaf9a2fdd60f546cd4" + resolved "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.0.tgz" integrity sha512-Qyt5kMrvy7dJRO3OjF7zkotGfuYALETZE+4lk66sziWSPzlBEt7FrUshV6VLECkI4EN8Z863O6Nci4NXQGNzYw== dependencies: postcss-value-parser "^4.2.0" postcss-normalize-positions@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-6.0.0.tgz#25b96df99a69f8925f730eaee0be74416865e301" + resolved "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-6.0.0.tgz" integrity sha512-mPCzhSV8+30FZyWhxi6UoVRYd3ZBJgTRly4hOkaSifo0H+pjDYcii/aVT4YE6QpOil15a5uiv6ftnY3rm0igPg== dependencies: postcss-value-parser "^4.2.0" postcss-normalize-repeat-style@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.0.tgz#ddf30ad8762feb5b1eb97f39f251acd7b8353299" + resolved "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.0.tgz" integrity sha512-50W5JWEBiOOAez2AKBh4kRFm2uhrT3O1Uwdxz7k24aKtbD83vqmcVG7zoIwo6xI2FZ/HDlbrCopXhLeTpQib1A== dependencies: postcss-value-parser "^4.2.0" postcss-normalize-string@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-6.0.0.tgz#948282647a51e409d69dde7910f0ac2ff97cb5d8" + resolved "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-6.0.0.tgz" integrity sha512-KWkIB7TrPOiqb8ZZz6homet2KWKJwIlysF5ICPZrXAylGe2hzX/HSf4NTX2rRPJMAtlRsj/yfkrWGavFuB+c0w== dependencies: postcss-value-parser "^4.2.0" postcss-normalize-timing-functions@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.0.tgz#5f13e650b8c43351989fc5de694525cc2539841c" + resolved "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.0.tgz" integrity sha512-tpIXWciXBp5CiFs8sem90IWlw76FV4oi6QEWfQwyeREVwUy39VSeSqjAT7X0Qw650yAimYW5gkl2Gd871N5SQg== dependencies: postcss-value-parser "^4.2.0" postcss-normalize-unicode@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-6.0.0.tgz#741b3310f874616bdcf07764f5503695d3604730" + resolved "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-6.0.0.tgz" integrity sha512-ui5crYkb5ubEUDugDc786L/Me+DXp2dLg3fVJbqyAl0VPkAeALyAijF2zOsnZyaS1HyfPuMH0DwyY18VMFVNkg== dependencies: browserslist "^4.21.4" @@ -8821,21 +8816,21 @@ postcss-normalize-unicode@^6.0.0: postcss-normalize-url@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-6.0.0.tgz#d0a31e962a16401fb7deb7754b397a323fb650b4" + resolved "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-6.0.0.tgz" integrity sha512-98mvh2QzIPbb02YDIrYvAg4OUzGH7s1ZgHlD3fIdTHLgPLRpv1ZTKJDnSAKr4Rt21ZQFzwhGMXxpXlfrUBKFHw== dependencies: postcss-value-parser "^4.2.0" postcss-normalize-whitespace@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.0.tgz#accb961caa42e25ca4179b60855b79b1f7129d4d" + resolved "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.0.tgz" integrity sha512-7cfE1AyLiK0+ZBG6FmLziJzqQCpTQY+8XjMhMAz8WSBSCsCNNUKujgIgjCAmDT3cJ+3zjTXFkoD15ZPsckArVw== dependencies: postcss-value-parser "^4.2.0" postcss-ordered-values@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-6.0.0.tgz#374704cdff25560d44061d17ba3c6308837a3218" + resolved "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-6.0.0.tgz" integrity sha512-K36XzUDpvfG/nWkjs6d1hRBydeIxGpKS2+n+ywlKPzx1nMYDYpoGbcjhj5AwVYJK1qV2/SDoDEnHzlPD6s3nMg== dependencies: cssnano-utils "^4.0.0" @@ -8843,7 +8838,7 @@ postcss-ordered-values@^6.0.0: postcss-reduce-initial@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-6.0.0.tgz#7d16e83e60e27e2fa42f56ec0b426f1da332eca7" + resolved "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-6.0.0.tgz" integrity sha512-s2UOnidpVuXu6JiiI5U+fV2jamAw5YNA9Fdi/GRK0zLDLCfXmSGqQtzpUPtfN66RtCbb9fFHoyZdQaxOB3WxVA== dependencies: browserslist "^4.21.4" @@ -8851,14 +8846,14 @@ postcss-reduce-initial@^6.0.0: postcss-reduce-transforms@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.0.tgz#28ff2601a6d9b96a2f039b3501526e1f4d584a46" + resolved "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.0.tgz" integrity sha512-FQ9f6xM1homnuy1wLe9lP1wujzxnwt1EwiigtWwuyf8FsqqXUDUp2Ulxf9A5yjlUOTdCJO6lonYjg1mgqIIi2w== dependencies: postcss-value-parser "^4.2.0" postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5: version "6.0.13" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz#d05d8d76b1e8e173257ef9d60b706a8e5e99bf1b" + resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz" integrity sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ== dependencies: cssesc "^3.0.0" @@ -8866,7 +8861,7 @@ postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.2, postcss-selecto postcss-svgo@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-6.0.0.tgz#7b18742d38d4505a0455bbe70d52b49f00eaf69d" + resolved "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-6.0.0.tgz" integrity sha512-r9zvj/wGAoAIodn84dR/kFqwhINp5YsJkLoujybWG59grR/IHx+uQ2Zo+IcOwM0jskfYX3R0mo+1Kip1VSNcvw== dependencies: postcss-value-parser "^4.2.0" @@ -8874,19 +8869,19 @@ postcss-svgo@^6.0.0: postcss-unique-selectors@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-6.0.0.tgz#c94e9b0f7bffb1203894e42294b5a1b3fb34fbe1" + resolved "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-6.0.0.tgz" integrity sha512-EPQzpZNxOxP7777t73RQpZE5e9TrnCrkvp7AH7a0l89JmZiPnS82y216JowHXwpBCQitfyxrof9TK3rYbi7/Yw== dependencies: postcss-selector-parser "^6.0.5" postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== postcss@^8.4.21, postcss@^8.4.24: version "8.4.31" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" + resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz" integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== dependencies: nanoid "^3.3.6" @@ -8900,14 +8895,14 @@ prelude-ls@^1.2.1: prettier-linter-helpers@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" + resolved "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz" integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== dependencies: fast-diff "^1.1.2" prettier@*, prettier@^3.0.3: version "3.0.3" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.0.3.tgz#432a51f7ba422d1469096c0fdc28e235db8f9643" + resolved "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz" integrity sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg== prettier@^2.5.1: @@ -8917,7 +8912,7 @@ prettier@^2.5.1: pretty-error@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-4.0.0.tgz#90a703f46dd7234adb46d0f84823e9d1cb8f10d6" + resolved "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz" integrity sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw== dependencies: lodash "^4.17.20" @@ -8925,7 +8920,7 @@ pretty-error@^4.0.0: pretty-format@^27.0.2: version "27.5.1" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz" integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== dependencies: ansi-regex "^5.0.1" @@ -8943,17 +8938,17 @@ pretty-format@^29.0.0, pretty-format@^29.7.0: process-nextick-args@~2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== progress@^2.0.3: version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== promise-retry@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" + resolved "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz" integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== dependencies: err-code "^2.0.2" @@ -8968,7 +8963,7 @@ promise@^7.1.1: prompts@^2.0.1: version "2.4.2" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + resolved "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz" integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== dependencies: kleur "^3.0.3" @@ -8990,7 +8985,7 @@ property-expr@^2.0.4: proxy-addr@~2.0.7: version "2.0.7" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + resolved "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz" integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== dependencies: forwarded "0.2.0" @@ -8998,12 +8993,12 @@ proxy-addr@~2.0.7: psl@^1.1.33: version "1.9.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" + resolved "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz" integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== pump@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + resolved "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz" integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== dependencies: end-of-stream "^1.1.0" @@ -9021,19 +9016,19 @@ pure-color@^1.2.0: pure-rand@^6.0.0: version "6.0.4" - resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.0.4.tgz#50b737f6a925468679bff00ad20eade53f37d5c7" + resolved "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.4.tgz" integrity sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA== qs@6.11.0: version "6.11.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" + resolved "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz" integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== dependencies: side-channel "^1.0.4" querystringify@^2.1.1: version "2.2.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + resolved "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz" integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== queue-microtask@1.2.3, queue-microtask@^1.2.2: @@ -9043,24 +9038,24 @@ queue-microtask@1.2.3, queue-microtask@^1.2.2: quick-lru@^5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" + resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz" integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== randombytes@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: safe-buffer "^5.1.0" range-parser@^1.2.1, range-parser@~1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== raw-body@2.5.1: version "2.5.1" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" + resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz" integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== dependencies: bytes "3.1.2" @@ -9106,7 +9101,7 @@ react-helmet@^6.1.0: react-fast-compare "^3.1.1" react-side-effect "^2.1.0" -react-hot-toast@^2.1.1, react-hot-toast@^2.4.1: +react-hot-toast@^2.1.1: version "2.4.1" resolved "https://registry.npmjs.org/react-hot-toast/-/react-hot-toast-2.4.1.tgz" integrity sha512-j8z+cQbWIM5LY37pR6uZR6D4LfseplqnuAO4co4u8917hBUvXlEqyP1ZzqVLcqoyUesZZv/ImreoCeHVDpE5pQ== @@ -9130,7 +9125,7 @@ react-is@^16.13.1, react-is@^16.7.0: react-is@^17.0.1: version "17.0.2" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" + resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== react-json-view@^1.21.3: @@ -9150,42 +9145,27 @@ react-lifecycles-compat@^3.0.4: react-refresh@^0.14.0: version "0.14.0" - resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.0.tgz#4e02825378a5f227079554d4284889354e5f553e" + resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz" integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ== -react-router-dom@6.15.0: - version "6.15.0" - resolved "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.15.0.tgz" - integrity sha512-aR42t0fs7brintwBGAv2+mGlCtgtFQeOzK0BM1/OiqEzRejOZtpMZepvgkscpMUnKb8YO84G7s3LsHnnDNonbQ== - dependencies: - "@remix-run/router" "1.8.0" - react-router "6.15.0" - react-router-dom@^6.16.0: version "6.16.0" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.16.0.tgz#86f24658da35eb66727e75ecbb1a029e33ee39d9" + resolved "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.16.0.tgz" integrity sha512-aTfBLv3mk/gaKLxgRDUPbPw+s4Y/O+ma3rEN1u8EgEpLpPe6gNjIsWt9rxushMHHMb7mSwxRGdGlGdvmFsyPIg== dependencies: "@remix-run/router" "1.9.0" react-router "6.16.0" -react-router@6.15.0: - version "6.15.0" - resolved "https://registry.npmjs.org/react-router/-/react-router-6.15.0.tgz" - integrity sha512-NIytlzvzLwJkCQj2HLefmeakxxWHWAP+02EGqWEZy+DgfHHKQMUoBBjUQLOtFInBMhWtb3hiUy6MfFgwLjXhqg== - dependencies: - "@remix-run/router" "1.8.0" - react-router@6.16.0: version "6.16.0" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.16.0.tgz#abbf3d5bdc9c108c9b822a18be10ee004096fb81" + resolved "https://registry.npmjs.org/react-router/-/react-router-6.16.0.tgz" integrity sha512-VT4Mmc4jj5YyjpOi5jOf0I+TYzGpvzERy4ckNSvSh2RArv8LLoCxlsZ2D+tc7zgjxcY34oTz2hZaeX5RVprKqA== dependencies: "@remix-run/router" "1.9.0" react-shallow-renderer@^16.15.0: version "16.15.0" - resolved "https://registry.yarnpkg.com/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz#48fb2cf9b23d23cde96708fe5273a7d3446f4457" + resolved "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz" integrity sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA== dependencies: object-assign "^4.1.1" @@ -9198,7 +9178,7 @@ react-side-effect@^2.1.0: react-test-renderer@^18.2.0: version "18.2.0" - resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-18.2.0.tgz#1dd912bd908ff26da5b9fca4fd1c489b9523d37e" + resolved "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-18.2.0.tgz" integrity sha512-JWD+aQ0lh2gvh4NM3bBM42Kx+XybOxCpgYK7F8ugAlpaTSnWsX+39Z4XkOykGZAHrjwwTZT3x3KxswVWxHPUqA== dependencies: react-is "^18.2.0" @@ -9238,7 +9218,7 @@ reactjs-popup@2.0.5: read-config-file@6.3.2: version "6.3.2" - resolved "https://registry.yarnpkg.com/read-config-file/-/read-config-file-6.3.2.tgz#556891aa6ffabced916ed57457cb192e61880411" + resolved "https://registry.npmjs.org/read-config-file/-/read-config-file-6.3.2.tgz" integrity sha512-M80lpCjnE6Wt6zb98DoW8WHR09nzMSpu8XHtPkiTHrJ5Az9CybfeQhTJ8D7saeBHpGhLPIVyA8lcL6ZmdKwY6Q== dependencies: config-file-ts "^0.2.4" @@ -9250,7 +9230,7 @@ read-config-file@6.3.2: readable-stream@^2.0.1, readable-stream@~2.3.6: version "2.3.8" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== dependencies: core-util-is "~1.0.0" @@ -9263,7 +9243,7 @@ readable-stream@^2.0.1, readable-stream@~2.3.6: readable-stream@^3.0.6, readable-stream@^3.4.0, readable-stream@^3.6.0: version "3.6.2" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== dependencies: inherits "^2.0.3" @@ -9279,14 +9259,14 @@ readdirp@~3.6.0: rechoir@^0.8.0: version "0.8.0" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.8.0.tgz#49f866e0d32146142da3ad8f0eff352b3215ff22" + resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz" integrity sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ== dependencies: resolve "^1.20.0" redent@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" + resolved "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz" integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== dependencies: indent-string "^4.0.0" @@ -9294,7 +9274,7 @@ redent@^3.0.0: reflect.getprototypeof@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz#aaccbf41aca3821b87bb71d9dcbc7ad0ba50a3f3" + resolved "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz" integrity sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw== dependencies: call-bind "^1.0.2" @@ -9306,14 +9286,14 @@ reflect.getprototypeof@^1.0.4: regenerate-unicode-properties@^10.1.0: version "10.1.1" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480" + resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz" integrity sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q== dependencies: regenerate "^1.4.2" regenerate@^1.4.2: version "1.4.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz" integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== regenerator-runtime@^0.14.0: @@ -9323,14 +9303,14 @@ regenerator-runtime@^0.14.0: regenerator-transform@^0.15.2: version "0.15.2" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz#5bbae58b522098ebdf09bca2f83838929001c7a4" + resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz" integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg== dependencies: "@babel/runtime" "^7.8.4" regexp.prototype.flags@^1.5.0, regexp.prototype.flags@^1.5.1: version "1.5.1" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e" + resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz" integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== dependencies: call-bind "^1.0.2" @@ -9339,7 +9319,7 @@ regexp.prototype.flags@^1.5.0, regexp.prototype.flags@^1.5.1: regexpu-core@^5.3.1: version "5.3.2" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" + resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz" integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== dependencies: "@babel/regjsgen" "^0.8.0" @@ -9351,24 +9331,24 @@ regexpu-core@^5.3.1: regjsparser@^0.9.1: version "0.9.1" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" + resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz" integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== dependencies: jsesc "~0.5.0" relateurl@^0.2.7: version "0.2.7" - resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + resolved "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz" integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog== remove-trailing-separator@^1.0.1: version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + resolved "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz" integrity sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw== renderkid@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-3.0.0.tgz#5fd823e4d6951d37358ecc9a58b1f06836b6268a" + resolved "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz" integrity sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg== dependencies: css-select "^4.1.3" @@ -9379,27 +9359,27 @@ renderkid@^3.0.0: require-directory@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== require-from-string@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + 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== requires-port@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== resolve-alpn@^1.0.0: version "1.2.1" - resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" + resolved "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz" integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== resolve-cwd@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz" integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== dependencies: resolve-from "^5.0.0" @@ -9411,22 +9391,22 @@ resolve-from@^4.0.0: resolve-from@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== resolve-pkg-maps@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" + resolved "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz" integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== resolve.exports@^2.0.0: version "2.0.2" - resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" + resolved "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz" integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== resolve@^1.14.2, resolve@^1.20.0, resolve@^1.22.4: version "1.22.8" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz" integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== dependencies: is-core-module "^2.13.0" @@ -9435,7 +9415,7 @@ resolve@^1.14.2, resolve@^1.20.0, resolve@^1.22.4: resolve@^2.0.0-next.4: version "2.0.0-next.5" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.5.tgz#6b0ec3107e671e52b68cd068ef327173b90dc03c" + resolved "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz" integrity sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA== dependencies: is-core-module "^2.13.0" @@ -9444,7 +9424,7 @@ resolve@^2.0.0-next.4: responselike@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc" + resolved "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz" integrity sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw== dependencies: lowercase-keys "^2.0.0" @@ -9459,12 +9439,12 @@ restore-cursor@^3.1.0: retry@^0.12.0: version "0.12.0" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + resolved "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz" integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== retry@^0.13.1: version "0.13.1" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" + resolved "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz" integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== reusify@^1.0.4: @@ -9486,14 +9466,14 @@ rimraf@^3.0.0, rimraf@^3.0.2: rimraf@^5.0.1: version "5.0.5" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-5.0.5.tgz#9be65d2d6e683447d2e9013da2bf451139a61ccf" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz" integrity sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A== dependencies: glob "^10.3.7" roarr@^2.15.3: version "2.15.4" - resolved "https://registry.yarnpkg.com/roarr/-/roarr-2.15.4.tgz#f5fe795b7b838ccfe35dc608e0282b9eba2e7afd" + resolved "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz" integrity sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A== dependencies: boolean "^3.0.1" @@ -9505,7 +9485,7 @@ roarr@^2.15.3: run-applescript@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/run-applescript/-/run-applescript-5.0.0.tgz#e11e1c932e055d5c6b40d98374e0268d9b11899c" + resolved "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz" integrity sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg== dependencies: execa "^5.0.0" @@ -9519,7 +9499,7 @@ run-parallel@^1.1.9: runtime-required@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/runtime-required/-/runtime-required-1.1.0.tgz#a000a50c2748dba123f4dac5105e66d4599519c4" + resolved "https://registry.npmjs.org/runtime-required/-/runtime-required-1.1.0.tgz" integrity sha512-yX97f5E0WfNpcQnfVjap6vzQcvErkYYCx6eTK4siqGEdC8lglwypUFgZVTX7ShvIlgfkC4XGFl9O1KTYcff0pw== rxjs@^7.5.5: @@ -9531,14 +9511,14 @@ rxjs@^7.5.5: rxjs@^7.8.1: version "7.8.1" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" + resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz" integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== dependencies: tslib "^2.1.0" safe-array-concat@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.1.tgz#91686a63ce3adbea14d61b14c99572a8ff84754c" + resolved "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz" integrity sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q== dependencies: call-bind "^1.0.2" @@ -9548,17 +9528,17 @@ safe-array-concat@^1.0.1: safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0: version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== safe-regex-test@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" + resolved "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz" integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== dependencies: call-bind "^1.0.2" @@ -9567,26 +9547,26 @@ safe-regex-test@^1.0.0: "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== sanitize-filename@^1.6.3: version "1.6.3" - resolved "https://registry.yarnpkg.com/sanitize-filename/-/sanitize-filename-1.6.3.tgz#755ebd752045931977e30b2025d340d7c9090378" + resolved "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz" integrity sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg== dependencies: truncate-utf8-bytes "^1.0.0" sass-loader@^13.3.2: version "13.3.2" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-13.3.2.tgz#460022de27aec772480f03de17f5ba88fa7e18c6" + resolved "https://registry.npmjs.org/sass-loader/-/sass-loader-13.3.2.tgz" integrity sha512-CQbKl57kdEv+KDLquhC+gE3pXt74LEAzm+tzywcA0/aHZuub8wTErbjAoNI57rPUWRYRNC5WUnNl8eGJNbDdwg== dependencies: neo-async "^2.6.2" sass@^1.67.0: version "1.69.3" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.69.3.tgz#f8a0c488697e6419519834a13335e7b65a609c11" + resolved "https://registry.npmjs.org/sass/-/sass-1.69.3.tgz" integrity sha512-X99+a2iGdXkdWn1akFPs0ZmelUzyAQfvqYc2P/MPTrJRuIRoTffGzT9W9nFqG00S+c8hXzVmgxhUuHFdrwxkhQ== dependencies: chokidar ">=3.0.0 <4.0.0" @@ -9604,12 +9584,12 @@ sass@^1.69.0: sax@^1.2.4: version "1.3.0" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.3.0.tgz#a5dbe77db3be05c9d1ee7785dbd3ea9de51593d0" + resolved "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz" integrity sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA== saxes@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-6.0.0.tgz#fe5b4a4768df4f14a201b1ba6a65c1f3d9988cc5" + resolved "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz" integrity sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA== dependencies: xmlchars "^2.2.0" @@ -9623,7 +9603,7 @@ scheduler@^0.23.0: schema-utils@^2.0.1: version "2.7.1" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz" integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== dependencies: "@types/json-schema" "^7.0.5" @@ -9632,7 +9612,7 @@ schema-utils@^2.0.1: schema-utils@^3.0.0, schema-utils@^3.1.1, schema-utils@^3.2.0: version "3.3.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== dependencies: "@types/json-schema" "^7.0.8" @@ -9641,7 +9621,7 @@ schema-utils@^3.0.0, schema-utils@^3.1.1, schema-utils@^3.2.0: schema-utils@^4.0.0, schema-utils@^4.0.1: version "4.2.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.2.0.tgz#70d7c93e153a273a805801882ebd3bff20d89c8b" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz" integrity sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw== dependencies: "@types/json-schema" "^7.0.9" @@ -9651,24 +9631,24 @@ schema-utils@^4.0.0, schema-utils@^4.0.1: select-hose@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + resolved "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz" integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== selfsigned@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.1.1.tgz#18a7613d714c0cd3385c48af0075abf3f266af61" + resolved "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz" integrity sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ== dependencies: node-forge "^1" semver-compare@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" + resolved "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz" integrity sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow== semver@^5.7.2: version "5.7.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== semver@^6.2.0, semver@^6.3.0, semver@^6.3.1: @@ -9685,7 +9665,7 @@ semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semve send@0.18.0: version "0.18.0" - resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" + resolved "https://registry.npmjs.org/send/-/send-0.18.0.tgz" integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== dependencies: debug "2.6.9" @@ -9704,21 +9684,21 @@ send@0.18.0: serialize-error@^7.0.1: version "7.0.1" - resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-7.0.1.tgz#f1360b0447f61ffb483ec4157c737fab7d778e18" + resolved "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz" integrity sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw== dependencies: type-fest "^0.13.1" serialize-javascript@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.1.tgz#b206efb27c3da0b0ab6b52f48d170b7996458e5c" + resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz" integrity sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w== dependencies: randombytes "^2.1.0" serve-index@^1.9.1: version "1.9.1" - resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + resolved "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz" integrity sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw== dependencies: accepts "~1.3.4" @@ -9731,7 +9711,7 @@ serve-index@^1.9.1: serve-static@1.15.0: version "1.15.0" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" + resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz" integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== dependencies: encodeurl "~1.0.2" @@ -9741,12 +9721,12 @@ serve-static@1.15.0: set-blocking@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== set-function-name@^2.0.0, set-function-name@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" + resolved "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz" integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== dependencies: define-data-property "^1.0.1" @@ -9760,12 +9740,12 @@ setimmediate@^1.0.5: setprototypeof@1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz" integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== setprototypeof@1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== sha3@^2.1.4: @@ -9777,7 +9757,7 @@ sha3@^2.1.4: shallow-clone@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + resolved "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz" integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== dependencies: kind-of "^6.0.2" @@ -9796,12 +9776,12 @@ shebang-regex@^3.0.0: shell-quote@^1.8.1: version "1.8.1" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" + resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz" integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== side-channel@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== dependencies: call-bind "^1.0.0" @@ -9815,19 +9795,19 @@ signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: signal-exit@^4.0.1: version "4.1.0" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz" integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== simple-update-notifier@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz#d70b92bdab7d6d90dfd73931195a30b6e3d7cebb" + resolved "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz" integrity sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w== dependencies: semver "^7.5.3" sirv@^2.0.3: version "2.0.3" - resolved "https://registry.yarnpkg.com/sirv/-/sirv-2.0.3.tgz#ca5868b87205a74bef62a469ed0296abceccd446" + resolved "https://registry.npmjs.org/sirv/-/sirv-2.0.3.tgz" integrity sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA== dependencies: "@polka/url" "^1.0.0-next.20" @@ -9836,7 +9816,7 @@ sirv@^2.0.3: sisteransi@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== slash@^3.0.0: @@ -9872,7 +9852,7 @@ slice-ansi@^5.0.0: smart-buffer@^4.0.2, smart-buffer@^4.2.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + resolved "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz" integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== snake-case@^3.0.4: @@ -9885,7 +9865,7 @@ snake-case@^3.0.4: sockjs@^0.3.24: version "0.3.24" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" + resolved "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz" integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== dependencies: faye-websocket "^0.11.3" @@ -9894,7 +9874,7 @@ sockjs@^0.3.24: socks-proxy-agent@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz#dc069ecf34436621acb41e3efa66ca1b5fed15b6" + resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz" integrity sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww== dependencies: agent-base "^6.0.2" @@ -9903,7 +9883,7 @@ socks-proxy-agent@^7.0.0: socks@^2.6.2: version "2.7.1" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.7.1.tgz#d8e651247178fde79c0663043e07240196857d55" + resolved "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz" integrity sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ== dependencies: ip "^2.0.0" @@ -9916,7 +9896,7 @@ socks@^2.6.2: source-map-support@0.5.13: version "0.5.13" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz" integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== dependencies: buffer-from "^1.0.0" @@ -9924,7 +9904,7 @@ source-map-support@0.5.13: source-map-support@^0.5.19, source-map-support@~0.5.20: version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== dependencies: buffer-from "^1.0.0" @@ -9932,17 +9912,17 @@ source-map-support@^0.5.19, source-map-support@~0.5.20: source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== source-map@^0.7.3, source-map@^0.7.4: version "0.7.4" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== spawn-command@0.0.2: version "0.0.2" - resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2.tgz#9544e1a43ca045f8531aac1a48cb29bdae62338e" + resolved "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz" integrity sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ== spdx-exceptions@^2.1.0: @@ -9965,7 +9945,7 @@ spdx-license-ids@^3.0.0: spdy-transport@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" + resolved "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz" integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== dependencies: debug "^4.1.0" @@ -9977,7 +9957,7 @@ spdy-transport@^3.0.0: spdy@^4.0.2: version "4.0.2" - resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" + resolved "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz" integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== dependencies: debug "^4.1.0" @@ -9988,17 +9968,17 @@ spdy@^4.0.2: sprintf-js@^1.1.2: version "1.1.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a" + resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz" integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA== sprintf-js@~1.0.2: version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== ssri@^10.0.0: version "10.0.5" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-10.0.5.tgz#e49efcd6e36385196cb515d3a2ad6c3f0265ef8c" + resolved "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz" integrity sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A== dependencies: minipass "^7.0.3" @@ -10012,27 +9992,27 @@ stack-utils@^2.0.3: stackframe@^1.3.4: version "1.3.4" - resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310" + resolved "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz" integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== stat-mode@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/stat-mode/-/stat-mode-1.0.0.tgz#68b55cb61ea639ff57136f36b216a291800d1465" + resolved "https://registry.npmjs.org/stat-mode/-/stat-mode-1.0.0.tgz" integrity sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg== statuses@2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== "statuses@>= 1.4.0 < 2": version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== stop-iteration-iterator@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz#6a60be0b4ee757d1ed5254858ec66b10c49285e4" + resolved "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz" integrity sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ== dependencies: internal-slot "^1.0.4" @@ -10044,22 +10024,13 @@ string-argv@^0.3.1: string-length@^4.0.1: version "4.0.2" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" + resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz" integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== dependencies: char-regex "^1.0.2" strip-ansi "^6.0.0" -"string-width-cjs@npm:string-width@^4.2.0": - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - 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" - -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -10079,7 +10050,7 @@ string-width@^5.0.0, string-width@^5.0.1, string-width@^5.1.2: string.prototype.matchall@^4.0.8: version "4.0.10" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz#a1553eb532221d4180c51581d6072cd65d1ee100" + resolved "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz" integrity sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ== dependencies: call-bind "^1.0.2" @@ -10094,7 +10065,7 @@ string.prototype.matchall@^4.0.8: string.prototype.trim@^1.2.8: version "1.2.8" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz#f9ac6f8af4bd55ddfa8895e6aea92a96395393bd" + resolved "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz" integrity sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ== dependencies: call-bind "^1.0.2" @@ -10103,7 +10074,7 @@ string.prototype.trim@^1.2.8: string.prototype.trimend@^1.0.7: version "1.0.7" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz#1bb3afc5008661d73e2dc015cd4853732d6c471e" + resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz" integrity sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA== dependencies: call-bind "^1.0.2" @@ -10112,7 +10083,7 @@ string.prototype.trimend@^1.0.7: string.prototype.trimstart@^1.0.7: version "1.0.7" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz#d4cdb44b83a4737ffbac2d406e405d43d0184298" + resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz" integrity sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg== dependencies: call-bind "^1.0.2" @@ -10121,26 +10092,19 @@ string.prototype.trimstart@^1.0.7: string_decoder@^1.1.1: version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== dependencies: safe-buffer "~5.2.0" string_decoder@~1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== dependencies: safe-buffer "~5.1.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -10156,12 +10120,12 @@ strip-ansi@^7.0.1: strip-bom@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== strip-bom@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz" integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== strip-final-newline@^2.0.0: @@ -10171,12 +10135,12 @@ strip-final-newline@^2.0.0: strip-final-newline@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" + resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz" integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== strip-indent@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" + resolved "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz" integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== dependencies: min-indent "^1.0.0" @@ -10188,7 +10152,7 @@ strip-json-comments@^3.1.1: style-loader@^3.3.3: version "3.3.3" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.3.tgz#bba8daac19930169c0c9c96706749a597ae3acff" + resolved "https://registry.npmjs.org/style-loader/-/style-loader-3.3.3.tgz" integrity sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw== style-mod@^4.0.0, style-mod@^4.1.0: @@ -10198,7 +10162,7 @@ style-mod@^4.0.0, style-mod@^4.1.0: stylehacks@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-6.0.0.tgz#9fdd7c217660dae0f62e14d51c89f6c01b3cb738" + resolved "https://registry.npmjs.org/stylehacks/-/stylehacks-6.0.0.tgz" integrity sha512-+UT589qhHPwz6mTlCLSt/vMNTJx8dopeJlZAlBMJPWA3ORqu6wmQY7FBXf+qD+FsqoBJODyqNxOUP3jdntFRdw== dependencies: browserslist "^4.21.4" @@ -10206,7 +10170,7 @@ stylehacks@^6.0.0: sumchecker@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/sumchecker/-/sumchecker-3.0.1.tgz#6377e996795abb0b6d348e9b3e1dfb24345a8e42" + resolved "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz" integrity sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg== dependencies: debug "^4.1.0" @@ -10227,7 +10191,7 @@ supports-color@^7.1.0: supports-color@^8.0.0, supports-color@^8.1.1: version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== dependencies: has-flag "^4.0.0" @@ -10239,7 +10203,7 @@ supports-color@^9.2.2: supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== svg-parser@^2.0.4: @@ -10249,7 +10213,7 @@ svg-parser@^2.0.4: svgo@^3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-3.0.2.tgz#5e99eeea42c68ee0dc46aa16da093838c262fe0a" + resolved "https://registry.npmjs.org/svgo/-/svgo-3.0.2.tgz" integrity sha512-Z706C1U2pb1+JGP48fbazf3KxHrWOsLme6Rv7imFBn5EnuanDW1GPaA/P1/dvObE670JDePC3mnj0k0B7P0jjQ== dependencies: "@trysound/sax" "0.2.0" @@ -10269,12 +10233,12 @@ swr@^2.2.4: symbol-tree@^3.2.4: version "3.2.4" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + resolved "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== synckit@^0.8.5: version "0.8.5" - resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.5.tgz#b7f4358f9bb559437f9f167eb6bc46b3c9818fa3" + resolved "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz" integrity sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q== dependencies: "@pkgr/utils" "^2.3.1" @@ -10282,17 +10246,17 @@ synckit@^0.8.5: tapable@^0.1.8: version "0.1.10" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.1.10.tgz#29c35707c2b70e50d07482b5d202e8ed446dafd4" + resolved "https://registry.npmjs.org/tapable/-/tapable-0.1.10.tgz" integrity sha512-jX8Et4hHg57mug1/079yitEKWGB3LCwoxByLsNim89LABq8NqgiX+6iYVOsq0vX8uJHkU+DZ5fnq95f800bEsQ== tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0: version "2.2.1" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== tar@^6.0.5, tar@^6.1.11, tar@^6.1.12, tar@^6.1.2: version "6.2.0" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.0.tgz#b14ce49a79cb1cd23bc9b016302dea5474493f73" + resolved "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz" integrity sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ== dependencies: chownr "^2.0.0" @@ -10304,7 +10268,7 @@ tar@^6.0.5, tar@^6.1.11, tar@^6.1.12, tar@^6.1.2: temp-file@^3.4.0: version "3.4.0" - resolved "https://registry.yarnpkg.com/temp-file/-/temp-file-3.4.0.tgz#766ea28911c683996c248ef1a20eea04d51652c7" + resolved "https://registry.npmjs.org/temp-file/-/temp-file-3.4.0.tgz" integrity sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg== dependencies: async-exit-hook "^2.0.1" @@ -10312,7 +10276,7 @@ temp-file@^3.4.0: terser-webpack-plugin@*, terser-webpack-plugin@^5.3.7, terser-webpack-plugin@^5.3.9: version "5.3.9" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz#832536999c51b46d468067f9e37662a3b96adfe1" + resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz" integrity sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA== dependencies: "@jridgewell/trace-mapping" "^0.3.17" @@ -10323,7 +10287,7 @@ terser-webpack-plugin@*, terser-webpack-plugin@^5.3.7, terser-webpack-plugin@^5. terser@^5.10.0, terser@^5.16.8: version "5.21.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.21.0.tgz#d2b27e92b5e56650bc83b6defa00a110f0b124b2" + resolved "https://registry.npmjs.org/terser/-/terser-5.21.0.tgz" integrity sha512-WtnFKrxu9kaoXuiZFSGrcAvvBqAdmKx0SFNmVNYdJamMu9yyN3I/QF0FbH4QcqJQ+y1CJnzxGIKH0cSj+FGYRw== dependencies: "@jridgewell/source-map" "^0.3.3" @@ -10333,7 +10297,7 @@ terser@^5.10.0, terser@^5.16.8: test-exclude@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz" integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== dependencies: "@istanbuljs/schema" "^0.1.2" @@ -10352,12 +10316,12 @@ through@^2.3.8: thunky@^1.0.2: version "1.1.0" - resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" + resolved "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz" integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== tiny-typed-emitter@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/tiny-typed-emitter/-/tiny-typed-emitter-2.1.0.tgz#b3b027fdd389ff81a152c8e847ee2f5be9fad7b5" + resolved "https://registry.npmjs.org/tiny-typed-emitter/-/tiny-typed-emitter-2.1.0.tgz" integrity sha512-qVtvMxeXbVej0cQWKqVSSAHmKZEHAvxdF8HEUBFWts8h+xEo5m/lEiPakuyZ3BnCBjOD8i24kzNOiOLLgsSxhA== tiny-warning@^1.0.2: @@ -10367,26 +10331,26 @@ tiny-warning@^1.0.2: titleize@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/titleize/-/titleize-3.0.0.tgz#71c12eb7fdd2558aa8a44b0be83b8a76694acd53" + resolved "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz" integrity sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ== tmp-promise@^3.0.2: version "3.0.3" - resolved "https://registry.yarnpkg.com/tmp-promise/-/tmp-promise-3.0.3.tgz#60a1a1cc98c988674fcbfd23b6e3367bdeac4ce7" + resolved "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz" integrity sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ== dependencies: tmp "^0.2.0" tmp@^0.2.0: version "0.2.1" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" + resolved "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz" integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== dependencies: rimraf "^3.0.0" tmpl@1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" + resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz" integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== to-fast-properties@^2.0.0: @@ -10408,7 +10372,7 @@ toggle-selection@^1.0.6: toidentifier@1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== toposort@^2.0.2: @@ -10418,12 +10382,12 @@ toposort@^2.0.2: totalist@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/totalist/-/totalist-3.0.1.tgz#ba3a3d600c915b1a97872348f79c127475f6acf8" + resolved "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz" integrity sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ== tough-cookie@^4.1.2: version "4.1.3" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.3.tgz#97b9adb0728b42280aa3d814b6b999b2ff0318bf" + resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz" integrity sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw== dependencies: psl "^1.1.33" @@ -10433,7 +10397,7 @@ tough-cookie@^4.1.2: tr46@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-3.0.0.tgz#555c4e297a950617e8eeddef633c87d4d9d6cbf9" + resolved "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz" integrity sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA== dependencies: punycode "^2.1.1" @@ -10445,24 +10409,24 @@ tr46@~0.0.3: tree-kill@^1.2.2: version "1.2.2" - resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" + resolved "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz" integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== truncate-utf8-bytes@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz#405923909592d56f78a5818434b0b78489ca5f2b" + resolved "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz" integrity sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ== dependencies: utf8-byte-length "^1.0.1" ts-api-utils@^1.0.1: version "1.0.3" - resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.0.3.tgz#f12c1c781d04427313dbac808f453f050e54a331" + resolved "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz" integrity sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg== ts-jest@^29.1.1: version "29.1.1" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.1.1.tgz#f58fe62c63caf7bfcc5cc6472082f79180f0815b" + resolved "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz" integrity sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA== dependencies: bs-logger "0.x" @@ -10476,7 +10440,7 @@ ts-jest@^29.1.1: ts-loader@^9.4.4: version "9.5.0" - resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.5.0.tgz#f0a51dda37cc4d8e43e6cb14edebbc599b0c3aa2" + resolved "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.0.tgz" integrity sha512-LLlB/pkB4q9mW2yLdFMnK3dEHbrBjeZTYguaaIfusyojBgAGf5kF+O6KcWqiGzWqHk0LBsoolrp4VftEURhybg== dependencies: chalk "^4.1.0" @@ -10487,7 +10451,7 @@ ts-loader@^9.4.4: ts-node@^10.9.1: version "10.9.1" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" + resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz" integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== dependencies: "@cspotcode/source-map-support" "^0.8.0" @@ -10506,7 +10470,7 @@ ts-node@^10.9.1: tsconfig-paths-webpack-plugin@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.1.0.tgz#3c6892c5e7319c146eee1e7302ed9e6f2be4f763" + resolved "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.1.0.tgz" integrity sha512-xWFISjviPydmtmgeUAuXp4N1fky+VCtfhOkDUFIv5ea7p4wuTomI4QTrXvFBX2S4jZsmyTSrStQl+E+4w+RzxA== dependencies: chalk "^4.1.0" @@ -10515,7 +10479,7 @@ tsconfig-paths-webpack-plugin@^4.1.0: tsconfig-paths@^3.14.2: version "3.14.2" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz#6e32f1f79412decd261f92d633a9dc1cfa99f088" + resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz" integrity sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g== dependencies: "@types/json5" "^0.0.29" @@ -10525,7 +10489,7 @@ tsconfig-paths@^3.14.2: tsconfig-paths@^4.1.2: version "4.2.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz#ef78e19039133446d244beac0fd6a1632e2d107c" + resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz" integrity sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg== dependencies: json5 "^2.2.2" @@ -10534,7 +10498,7 @@ tsconfig-paths@^4.1.2: tslib@^1.8.1: version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0: @@ -10544,12 +10508,12 @@ tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0: tslib@^2.4.1, "tslib@^2.4.1 || ^1.9.3", tslib@^2.5.0, tslib@^2.6.0: version "2.6.2" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== tsutils@^3.21.0: version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz" integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== dependencies: tslib "^1.8.1" @@ -10605,12 +10569,12 @@ type-check@^0.4.0, type-check@~0.4.0: type-detect@4.0.8: version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== type-fest@^0.13.1: version "0.13.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz" integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg== type-fest@^0.20.2: @@ -10625,7 +10589,7 @@ type-fest@^0.21.3: type-is@~1.6.18: version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== dependencies: media-typer "0.3.0" @@ -10633,7 +10597,7 @@ type-is@~1.6.18: typed-array-buffer@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" + resolved "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz" integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw== dependencies: call-bind "^1.0.2" @@ -10642,7 +10606,7 @@ typed-array-buffer@^1.0.0: typed-array-byte-length@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz#d787a24a995711611fb2b87a4052799517b230d0" + resolved "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz" integrity sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA== dependencies: call-bind "^1.0.2" @@ -10652,7 +10616,7 @@ typed-array-byte-length@^1.0.0: typed-array-byte-offset@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz#cbbe89b51fdef9cd6aaf07ad4707340abbc4ea0b" + resolved "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz" integrity sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg== dependencies: available-typed-arrays "^1.0.5" @@ -10663,7 +10627,7 @@ typed-array-byte-offset@^1.0.0: typed-array-length@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" + resolved "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz" integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== dependencies: call-bind "^1.0.2" @@ -10682,7 +10646,7 @@ typescript@^4.3.5: typescript@^5.2.2: version "5.2.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78" + resolved "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz" integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w== ua-parser-js@^1.0.35: @@ -10692,7 +10656,7 @@ ua-parser-js@^1.0.35: unbox-primitive@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz" integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== dependencies: call-bind "^1.0.2" @@ -10702,12 +10666,12 @@ unbox-primitive@^1.0.2: unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" + 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== unicode-match-property-ecmascript@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + resolved "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz" integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== dependencies: unicode-canonical-property-names-ecmascript "^2.0.0" @@ -10715,63 +10679,63 @@ unicode-match-property-ecmascript@^2.0.0: unicode-match-property-value-ecmascript@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" + resolved "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz" integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== unicode-property-aliases-ecmascript@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" + 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== unique-filename@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-3.0.0.tgz#48ba7a5a16849f5080d26c760c86cf5cf05770ea" + resolved "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz" integrity sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g== dependencies: unique-slug "^4.0.0" unique-slug@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-4.0.0.tgz#6bae6bb16be91351badd24cdce741f892a6532e3" + resolved "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz" integrity sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ== dependencies: imurmurhash "^0.1.4" universalify@^0.1.0: version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== universalify@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" + resolved "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz" integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== universalify@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz" integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== unixify@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/unixify/-/unixify-1.0.0.tgz#3a641c8c2ffbce4da683a5c70f03a462940c2090" + resolved "https://registry.npmjs.org/unixify/-/unixify-1.0.0.tgz" integrity sha512-6bc58dPYhCMHHuwxldQxO3RRNZ4eCogZ/st++0+fcC1nr0jiGUtAdBJ2qzmLQWSxbtz42pWt4QQMiZ9HvZf5cg== dependencies: normalize-path "^2.1.1" unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== untildify@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" + resolved "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz" integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== unzip-crx-3@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/unzip-crx-3/-/unzip-crx-3-0.2.0.tgz#d5324147b104a8aed9ae8639c95521f6f7cda292" + resolved "https://registry.npmjs.org/unzip-crx-3/-/unzip-crx-3-0.2.0.tgz" integrity sha512-0+JiUq/z7faJ6oifVB5nSwt589v1KCduqIJupNVDoWSXZtWDmjDGO3RAEOvwJ07w90aoXoP4enKsR7ecMrJtWQ== dependencies: jszip "^3.1.0" @@ -10795,7 +10759,7 @@ uri-js@^4.2.2: url-loader@^4.1.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-4.1.1.tgz#28505e905cae158cf07c92ca622d7f237e70a4e2" + resolved "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz" integrity sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA== dependencies: loader-utils "^2.0.0" @@ -10804,7 +10768,7 @@ url-loader@^4.1.1: url-parse@^1.5.3: version "1.5.10" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" + resolved "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz" integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== dependencies: querystringify "^2.1.1" @@ -10834,37 +10798,37 @@ use-sync-external-store@^1.2.0: utf8-byte-length@^1.0.1: version "1.0.4" - resolved "https://registry.yarnpkg.com/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz#f45f150c4c66eee968186505ab93fcbb8ad6bf61" + resolved "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz" integrity sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA== util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== utila@~0.4: version "0.4.0" - resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + resolved "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz" integrity sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA== utils-merge@1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== uuid@^8.3.2: version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== v8-compile-cache-lib@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + resolved "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz" integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== v8-to-istanbul@^9.0.1: version "9.1.3" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.1.3.tgz#ea456604101cd18005ac2cae3cdd1aa058a6306b" + resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.3.tgz" integrity sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg== dependencies: "@jridgewell/trace-mapping" "^0.3.12" @@ -10873,12 +10837,12 @@ v8-to-istanbul@^9.0.1: vary@~1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== verror@^1.10.0: version "1.10.1" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.1.tgz#4bf09eeccf4563b109ed4b3d458380c972b0cdeb" + resolved "https://registry.npmjs.org/verror/-/verror-1.10.1.tgz" integrity sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg== dependencies: assert-plus "^1.0.0" @@ -10901,21 +10865,21 @@ w3c-keyname@^2.2.4: w3c-xmlserializer@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz#aebdc84920d806222936e3cdce408e32488a3073" + resolved "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz" integrity sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw== dependencies: xml-name-validator "^4.0.0" walker@^1.0.8: version "1.0.8" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" + resolved "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz" integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== dependencies: makeerror "1.0.12" watchboy@^0.4.3: version "0.4.3" - resolved "https://registry.yarnpkg.com/watchboy/-/watchboy-0.4.3.tgz#4b766e7923d8122e5811a6b9736a8e3e5943838c" + resolved "https://registry.npmjs.org/watchboy/-/watchboy-0.4.3.tgz" integrity sha512-GHs1HxwvxSMBsqd/WfTOZhj5gBdMqf5HQpfgtKxDfZRxrlYPDdVLRB61LCeRzJaWANmvSIMlfmRVDwVmJFgAKA== dependencies: lodash.difference "^4.5.0" @@ -10925,7 +10889,7 @@ watchboy@^0.4.3: watchpack@^2.4.0: version "2.4.0" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" + resolved "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz" integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== dependencies: glob-to-regexp "^0.4.1" @@ -10933,14 +10897,14 @@ watchpack@^2.4.0: wbuf@^1.1.0, wbuf@^1.7.3: version "1.7.3" - resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + resolved "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz" integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== dependencies: minimalistic-assert "^1.0.0" wcwidth@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + resolved "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz" integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== dependencies: defaults "^1.0.3" @@ -10952,12 +10916,12 @@ webidl-conversions@^3.0.0: webidl-conversions@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz" integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== webpack-bundle-analyzer@^4.9.1: version "4.9.1" - resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.9.1.tgz#d00bbf3f17500c10985084f22f1a2bf45cb2f09d" + resolved "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.9.1.tgz" integrity sha512-jnd6EoYrf9yMxCyYDPj8eutJvtjQNp8PHmni/e/ulydHBWhT5J3menXt3HEkScsu9YqMAcG4CfFjs3rj5pVU1w== dependencies: "@discoveryjs/json-ext" "0.5.7" @@ -10980,7 +10944,7 @@ webpack-bundle-analyzer@^4.9.1: webpack-cli@^5.1.4: version "5.1.4" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-5.1.4.tgz#c8e046ba7eaae4911d7e71e2b25b776fcc35759b" + resolved "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz" integrity sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg== dependencies: "@discoveryjs/json-ext" "^0.5.0" @@ -10999,7 +10963,7 @@ webpack-cli@^5.1.4: webpack-dev-middleware@^5.3.1: version "5.3.3" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz#efae67c2793908e7311f1d9b06f2a08dcc97e51f" + resolved "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz" integrity sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA== dependencies: colorette "^2.0.10" @@ -11010,7 +10974,7 @@ webpack-dev-middleware@^5.3.1: webpack-dev-server@^4.15.1: version "4.15.1" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz#8944b29c12760b3a45bdaa70799b17cb91b03df7" + resolved "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz" integrity sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA== dependencies: "@types/bonjour" "^3.5.9" @@ -11046,7 +11010,7 @@ webpack-dev-server@^4.15.1: webpack-merge@^5.7.3, webpack-merge@^5.9.0: version "5.10.0" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.10.0.tgz#a3ad5d773241e9c682803abf628d4cd62b8a4177" + resolved "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz" integrity sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA== dependencies: clone-deep "^4.0.1" @@ -11055,12 +11019,12 @@ webpack-merge@^5.7.3, webpack-merge@^5.9.0: webpack-sources@^3.2.3: version "3.2.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" + resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz" integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== webpack@^5, webpack@^5.88.2: version "5.89.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.89.0.tgz#56b8bf9a34356e93a6625770006490bf3a7f32dc" + resolved "https://registry.npmjs.org/webpack/-/webpack-5.89.0.tgz" integrity sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw== dependencies: "@types/eslint-scope" "^3.7.3" @@ -11090,7 +11054,7 @@ webpack@^5, webpack@^5.88.2: websocket-driver@>=0.5.1, websocket-driver@^0.7.4: version "0.7.4" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz" integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== dependencies: http-parser-js ">=0.5.1" @@ -11099,24 +11063,24 @@ websocket-driver@>=0.5.1, websocket-driver@^0.7.4: websocket-extensions@>=0.1.1: version "0.1.4" - resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" + resolved "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz" integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== whatwg-encoding@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz#e7635f597fd87020858626805a2729fa7698ac53" + resolved "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz" integrity sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg== dependencies: iconv-lite "0.6.3" whatwg-mimetype@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7" + resolved "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz" integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q== whatwg-url@^11.0.0: version "11.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-11.0.0.tgz#0a849eebb5faf2119b901bb76fd795c2848d4018" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz" integrity sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ== dependencies: tr46 "^3.0.0" @@ -11132,7 +11096,7 @@ whatwg-url@^5.0.0: which-boxed-primitive@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== dependencies: is-bigint "^1.0.1" @@ -11143,7 +11107,7 @@ which-boxed-primitive@^1.0.2: which-builtin-type@^1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.1.3.tgz#b1b8443707cc58b6e9bf98d32110ff0c2cbd029b" + resolved "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz" integrity sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw== dependencies: function.prototype.name "^1.1.5" @@ -11161,7 +11125,7 @@ which-builtin-type@^1.1.3: which-collection@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" + resolved "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz" integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== dependencies: is-map "^2.0.1" @@ -11171,7 +11135,7 @@ which-collection@^1.0.1: which-typed-array@^1.1.11, which-typed-array@^1.1.9: version "1.1.11" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a" + resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz" integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== dependencies: available-typed-arrays "^1.0.5" @@ -11189,19 +11153,19 @@ which@^2.0.1, which@^2.0.2: wide-align@^1.1.5: version "1.1.5" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" + resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz" integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== dependencies: string-width "^1.0.2 || 2 || 3 || 4" wildcard@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.1.tgz#5ab10d02487198954836b6349f74fff961e10f67" + resolved "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz" integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + 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" @@ -11217,18 +11181,9 @@ wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^7.0.0: - 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" - wrap-ansi@^8.1.0: version "8.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz" integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== dependencies: ansi-styles "^6.1.0" @@ -11242,7 +11197,7 @@ wrappy@1: write-file-atomic@^4.0.2: version "4.0.2" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" + resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz" integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== dependencies: imurmurhash "^0.1.4" @@ -11250,37 +11205,37 @@ write-file-atomic@^4.0.2: ws@^7.3.1: version "7.5.9" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" + resolved "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz" integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== ws@^8.11.0, ws@^8.13.0: version "8.14.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.14.2.tgz#6c249a806eb2db7a20d26d51e7709eab7b2e6c7f" + resolved "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz" integrity sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g== xml-name-validator@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835" + resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz" integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== xmlbuilder@>=11.0.1, xmlbuilder@^15.1.1: version "15.1.1" - resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-15.1.1.tgz#9dcdce49eea66d8d10b42cae94a79c3c8d0c2ec5" + resolved "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz" integrity sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg== xmlchars@^2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + resolved "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== y18n@^5.0.5: version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== yaku@^0.16.6: version "0.16.7" - resolved "https://registry.yarnpkg.com/yaku/-/yaku-0.16.7.tgz#1d195c78aa9b5bf8479c895b9504fd4f0847984e" + resolved "https://registry.npmjs.org/yaku/-/yaku-0.16.7.tgz" integrity sha512-Syu3IB3rZvKvYk7yTiyl1bo/jiEFaaStrgv1V2TIJTqYPStSMQVO8EQjg/z+DRzLq/4LIIharNT3iH1hylEIRw== yallist@^3.0.2: @@ -11300,12 +11255,12 @@ yaml@^1.10.2: yargs-parser@^21.0.1, yargs-parser@^21.1.1: version "21.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== yargs@^17.0.1, yargs@^17.3.1, yargs@^17.6.2, yargs@^17.7.2: version "17.7.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz" integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== dependencies: cliui "^8.0.1" @@ -11318,7 +11273,7 @@ yargs@^17.0.1, yargs@^17.3.1, yargs@^17.6.2, yargs@^17.7.2: yauzl@^2.10.0: version "2.10.0" - resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" + resolved "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz" integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== dependencies: buffer-crc32 "~0.2.3" @@ -11326,7 +11281,7 @@ yauzl@^2.10.0: yn@3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz" integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== yocto-queue@^0.1.0: From e35736cdb9ae4c9aa024aba7e4bf05302ea7ae28 Mon Sep 17 00:00:00 2001 From: Bart Date: Sat, 21 Oct 2023 18:16:27 +0200 Subject: [PATCH 021/100] fix duplicate react-router-dom versions --- package.json | 3 ++- packages/ui/package.json | 2 +- packages/ui/vite.config.js | 2 +- yarn.lock | 4 ++-- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 7a695f5be..24aab3637 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ ], "resolutions": { "react": "^18.2.0", - "react-dom": "^18.2.0" + "react-dom": "^18.2.0", + "react-router-dom": "6.16.0" } } diff --git a/packages/ui/package.json b/packages/ui/package.json index f3d669f5e..b874092a7 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -16,7 +16,7 @@ "peerDependencies": { "react": "^18.2.0", "react-dom": "^18.2.0", - "react-router-dom": "6.15.0", + "react-router-dom": "6.16.0", "swr": "^2.2.4", "react-hot-toast": "^2.4.1" }, diff --git a/packages/ui/vite.config.js b/packages/ui/vite.config.js index 3c68efc25..e1140753a 100644 --- a/packages/ui/vite.config.js +++ b/packages/ui/vite.config.js @@ -25,7 +25,7 @@ export default defineConfig({ }, rollupOptions: { // Ensure to add external dependencies to avoid bundling them in your library - external: ["react"], + external: ["react", "react-router-dom"], output: { globals: { react: "React", diff --git a/yarn.lock b/yarn.lock index d832fad39..4911502c3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9148,9 +9148,9 @@ react-refresh@^0.14.0: resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz" integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ== -react-router-dom@^6.16.0: +react-router-dom@6.16.0, react-router-dom@^6.16.0: version "6.16.0" - resolved "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.16.0.tgz" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.16.0.tgz#86f24658da35eb66727e75ecbb1a029e33ee39d9" integrity sha512-aTfBLv3mk/gaKLxgRDUPbPw+s4Y/O+ma3rEN1u8EgEpLpPe6gNjIsWt9rxushMHHMb7mSwxRGdGlGdvmFsyPIg== dependencies: "@remix-run/router" "1.9.0" From 1fe30b1b12dc783a41200b3fd9ce75bdb365b197 Mon Sep 17 00:00:00 2001 From: Bart Date: Sat, 21 Oct 2023 19:17:37 +0200 Subject: [PATCH 022/100] remove api hooks context --- .../accounts/AccountAvatar/AccountAvatar.tsx | 2 +- .../AccountDetails/AccountDetails.tsx | 19 +- packages/ui/src/accounts/api.ts | 18 -- packages/ui/src/api.ts | 265 ++++++++++++++++++ .../src/blocks/BlockDetails/BlockDetails.tsx | 7 +- .../FlowserUsageRequirements.tsx | 7 +- .../ui/src/contexts/api-hooks.context.tsx | 81 ------ packages/ui/src/contexts/flow.context.tsx | 5 +- packages/ui/src/contexts/projects.context.tsx | 5 +- .../src/contexts/service-registry.context.tsx | 16 +- .../ui/src/contexts/snapshots.context.tsx | 7 +- .../ContractDetails/ContractDetails.tsx | 5 +- .../src/events/EventDetails/EventDetails.tsx | 5 +- packages/ui/src/hooks/use-analytics.ts | 5 +- .../InteractionHistory/InteractionHistory.tsx | 10 +- .../InteractionLabel/InteractionLabel.tsx | 5 +- .../InteractionOutcomeDisplay.tsx | 5 +- .../AddressBuilder/AddressBuilder.tsx | 3 +- .../contexts/definition.context.tsx | 5 +- .../contexts/templates.context.tsx | 5 +- packages/ui/src/logs/Logs.tsx | 15 +- .../ProjectListPage/ProjectListPage.tsx | 5 +- .../ProjectSettings/ProjectSettings.tsx | 5 +- .../TransactionDetails/TransactionDetails.tsx | 5 +- .../TransactionDetailsTabs.tsx | 5 +- 25 files changed, 339 insertions(+), 176 deletions(-) delete mode 100644 packages/ui/src/accounts/api.ts create mode 100644 packages/ui/src/api.ts delete mode 100644 packages/ui/src/contexts/api-hooks.context.tsx diff --git a/packages/ui/src/accounts/AccountAvatar/AccountAvatar.tsx b/packages/ui/src/accounts/AccountAvatar/AccountAvatar.tsx index 5d2facae9..8d01b38f0 100644 --- a/packages/ui/src/accounts/AccountAvatar/AccountAvatar.tsx +++ b/packages/ui/src/accounts/AccountAvatar/AccountAvatar.tsx @@ -19,7 +19,7 @@ import avatar14 from "./avatars/14.jpg"; import avatar15 from "./avatars/15.jpg"; import avatar16 from "./avatars/16.jpg"; import { Spinner } from "../../common/loaders/Spinner/Spinner"; -import { useGetAddressIndex } from "../api"; +import { useGetAddressIndex } from "../../api"; const avatarUrls = [ avatar1, diff --git a/packages/ui/src/accounts/AccountDetails/AccountDetails.tsx b/packages/ui/src/accounts/AccountDetails/AccountDetails.tsx index fef27de4b..3f5ca1716 100644 --- a/packages/ui/src/accounts/AccountDetails/AccountDetails.tsx +++ b/packages/ui/src/accounts/AccountDetails/AccountDetails.tsx @@ -1,7 +1,6 @@ import React, { FunctionComponent } from "react"; import classes from "./AccountDetails.module.scss"; import FullScreenLoading from "../../common/loaders/FullScreenLoading/FullScreenLoading"; -import { useFlowserHooksApi } from "../../contexts/api-hooks.context"; import { DetailsCard, DetailsCardColumn, @@ -17,6 +16,13 @@ import { AccountKeysTable } from "../AccountKeysTable/AccountKeysTable"; import { CadenceEditor } from "../../common/code/CadenceEditor/CadenceEditor"; import { BaseTabItem } from "../../common/tabs/BaseTabs/BaseTabs"; import { DateDisplay } from "../../common/time/DateDisplay/DateDisplay"; +import { + useGetAccount, + useGetContractsByAccount, + useGetKeysByAccount, + useGetStoragesByAccount, + useGetTransactionsByAccount, +} from "../../api"; type AccountDetailsProps = { accountId: string; @@ -26,12 +32,11 @@ export const AccountDetails: FunctionComponent = ( props ) => { const { accountId } = props; - const api = useFlowserHooksApi(); - const { data: account, isLoading } = api.useGetAccount(accountId); - const { data: transactions } = api.useGetTransactionsByAccount(accountId); - const { data: contracts } = api.useGetContractsByAccount(accountId); - const { data: keys } = api.useGetKeysByAccount(accountId); - const { data: storageItems } = api.useGetStoragesByAccount(accountId); + const { data: account, isLoading } = useGetAccount(accountId); + const { data: transactions } = useGetTransactionsByAccount(accountId); + const { data: contracts } = useGetContractsByAccount(accountId); + const { data: keys } = useGetKeysByAccount(accountId); + const { data: storageItems } = useGetStoragesByAccount(accountId); if (isLoading || !account) { return ; diff --git a/packages/ui/src/accounts/api.ts b/packages/ui/src/accounts/api.ts deleted file mode 100644 index 8311470ea..000000000 --- a/packages/ui/src/accounts/api.ts +++ /dev/null @@ -1,18 +0,0 @@ -import useSWR, { SWRResponse } from "swr"; -import { FlowAccount } from "@onflowser/api"; -import { useServiceRegistry } from "../contexts/service-registry.context"; - -export function useGetAccounts(): SWRResponse { - const { accountIndex } = useServiceRegistry(); - return useSWR("accounts", () => accountIndex.findAll(), { - refreshInterval: 1000, - }); -} - -export function useGetAddressIndex(options: { - address: string; - chainId: "flow-emulator"; -}): SWRResponse { - // TODO(restructure): Implement - return useSWR("account-index", () => 0) -} diff --git a/packages/ui/src/api.ts b/packages/ui/src/api.ts new file mode 100644 index 000000000..963b4a2d1 --- /dev/null +++ b/packages/ui/src/api.ts @@ -0,0 +1,265 @@ +import useSWR, { SWRResponse } from "swr"; +import { + FlowAccount, + FlowAccountKey, + FlowAccountStorage, + FlowBlock, FlowCliInfo, + FlowContract, + FlowEvent, + FlowserProject, FlowserUsageRequirement, + FlowStateSnapshot, + FlowTransaction, InteractionTemplate, + ManagedProcessOutput, ParsedInteractionOrError +} from '@onflowser/api'; +import { useServiceRegistry } from "./contexts/service-registry.context"; +import { InteractionDefinition } from './interactions/core/core-types'; + +export function useGetAccounts(): SWRResponse { + const { accountIndex } = useServiceRegistry(); + return useSWR("accounts", () => accountIndex.findAll(), { + refreshInterval: 1000, + }); +} + +export function useGetAccount( + id: string +): SWRResponse { + const { accountIndex } = useServiceRegistry(); + return useSWR(`account/${id}`, () => accountIndex.findOneById(id), { + refreshInterval: 1000, + }); +} + +export function useGetKeysByAccount(id: string): SWRResponse { + const { accountIndex } = useServiceRegistry(); + return useSWR( + `account/${id}`, + () => accountIndex.findOneById(id).then((res) => res?.keys ?? []), + { + refreshInterval: 1000, + } + ); +} + +export function useGetStoragesByAccount( + id: string +): SWRResponse { + const { accountStorageIndex } = useServiceRegistry(); + return useSWR( + `${id}/storages`, + () => + accountStorageIndex + .findAll() + .then((res) => res.filter((e) => e.address === id)), + { + refreshInterval: 1000, + } + ); +} + +export function useGetContractsByAccount( + address: string +): SWRResponse { + const { contractIndex } = useServiceRegistry(); + return useSWR( + `contracts`, + () => + contractIndex + .findAll() + .then((res) => res.filter((e) => e.address === address)), + { + refreshInterval: 1000, + } + ); +} + +export function useGetTransactions(): SWRResponse { + const { transactionsIndex } = useServiceRegistry(); + return useSWR(`transactions`, () => transactionsIndex.findAll(), { + refreshInterval: 1000, + }); +} + +export function useGetTransaction( + id: string +): SWRResponse { + const { transactionsIndex } = useServiceRegistry(); + return useSWR(`transaction/${id}`, () => transactionsIndex.findOneById(id), { + refreshInterval: 1000, + }); +} + +export function useGetTransactionsByAccount( + address: string +): SWRResponse { + const { transactionsIndex } = useServiceRegistry(); + return useSWR( + `${address}/transactions`, + () => + transactionsIndex + .findAll() + .then((res) => + res.filter( + (e) => + e.authorizers.includes(address) || + e.payer === address || + e.proposalKey.address === address + ) + ), + { + refreshInterval: 1000, + } + ); +} + +export function useGetTransactionsByBlock( + blockId: string +): SWRResponse { + const { transactionsIndex } = useServiceRegistry(); + return useSWR( + `${blockId}/transactions`, + () => + transactionsIndex + .findAll() + .then((res) => res.filter((e) => e.blockId === blockId)), + { + refreshInterval: 1000, + } + ); +} + +export function useGetBlock(id: string): SWRResponse { + const { blocksIndex } = useServiceRegistry(); + + return useSWR(`blocks/${id}`, () => blocksIndex.findOneById(id), { + refreshInterval: 1000, + }); +} + +export function useGetBlocks(): SWRResponse { + const { blocksIndex } = useServiceRegistry(); + + return useSWR(`blocks`, () => blocksIndex.findAll(), { + refreshInterval: 1000, + }); +} + +export function useGetContracts(): SWRResponse { + const { contractIndex } = useServiceRegistry(); + + return useSWR(`contracts`, () => contractIndex.findAll(), { + refreshInterval: 1000, + }); +} + +export function useGetContract( + id: string +): SWRResponse { + const { contractIndex } = useServiceRegistry(); + + return useSWR(`contracts/${id}`, () => contractIndex.findOneById(id), { + refreshInterval: 1000, + }); +} + +export function useGetEvents(): SWRResponse { + const { eventsIndex } = useServiceRegistry(); + + return useSWR(`events`, () => eventsIndex.findAll(), { + refreshInterval: 1000, + }); +} + +export function useGetEventsByTransaction( + id: string +): SWRResponse { + const { eventsIndex } = useServiceRegistry(); + + return useSWR( + `${id}/events`, + () => + eventsIndex + .findAll() + .then((res) => res.filter((e) => e.transactionId === id)), + { + refreshInterval: 1000, + } + ); +} + +export function useGetOutputsByProcess( + id: string +): SWRResponse { + const { processOutputIndex } = useServiceRegistry(); + + return useSWR( + `${id}/outputs`, + () => + processOutputIndex + .findAll() + .then((res) => res.filter((e) => e.processId === id)), + { + refreshInterval: 1000, + } + ); +} + +export function useGetEvent(id: string): SWRResponse { + const { eventsIndex } = useServiceRegistry(); + + return useSWR(`events/${id}`, () => eventsIndex.findOneById(id), { + refreshInterval: 1000, + }); +} + +export function useGetStateSnapshots(): SWRResponse { + const { snapshotService } = useServiceRegistry(); + + return useSWR(`snapshots`, () => snapshotService.findAll(), { + refreshInterval: 1000, + }); +} + +export function useGetAddressIndex(options: { + address: string; + chainId: "flow-emulator"; +}): SWRResponse { + // TODO(restructure): Implement + return useSWR("account-index", () => 0); +} + +export function useGetFlowserProjects(): SWRResponse { + return useSWR("projects", () => []); +} + +export function useGetFlowserProject( + id: string +): SWRResponse { + return useSWR(`projects/${id}`, () => undefined); +} + +export function useGetFlowJson(): SWRResponse { + return useSWR(`flow-json`, () => ""); +} + +export function useGetFlowCliInfo(): SWRResponse { + return useSWR(`flow-cli`, () => ({})); +} + +export function useGetParsedInteraction( + request: InteractionDefinition +): SWRResponse { + // We are not using `sourceCode` as the cache key, + // to avoid the flickering UI effect that's caused + // by undefined parsed interaction every time the source code changes. + return useSWR(`parsed-interaction`, () => ({})); + +} + +export function useGetInteractionTemplates(): SWRResponse { + return useSWR(`interaction-templates`, () => ([])); +} + +export function useGetFlowserUsageRequirements(): SWRResponse { + return useSWR(`usage-requirements`, () => ([])); +} diff --git a/packages/ui/src/blocks/BlockDetails/BlockDetails.tsx b/packages/ui/src/blocks/BlockDetails/BlockDetails.tsx index bd93078be..87d7358c1 100644 --- a/packages/ui/src/blocks/BlockDetails/BlockDetails.tsx +++ b/packages/ui/src/blocks/BlockDetails/BlockDetails.tsx @@ -1,7 +1,6 @@ import React, { FunctionComponent } from "react"; import classes from "./BlockDetails.module.scss"; import FullScreenLoading from "../../common/loaders/FullScreenLoading/FullScreenLoading"; -import { useFlowserHooksApi } from "../../contexts/api-hooks.context"; import { FlowUtils } from "../../utils/flow-utils"; import { DetailsCard, @@ -12,15 +11,15 @@ import { StyledTabs } from "../../common/tabs/StyledTabs/StyledTabs"; import { TransactionsTable } from "../../transactions/TransactionsTable/TransactionsTable"; import { ProjectLink } from "../../common/links/ProjectLink"; import { DateDisplay } from "../../common/time/DateDisplay/DateDisplay"; +import { useGetBlock, useGetTransactionsByBlock } from "../../api"; type BlockDetailsProps = { blockId: string; }; export const BlockDetails: FunctionComponent = (props) => { - const api = useFlowserHooksApi(); - const { isLoading, data: block } = api.useGetBlock(props.blockId); - const { data: transactions } = api.useGetTransactionsByBlock(props.blockId); + const { isLoading, data: block } = useGetBlock(props.blockId); + const { data: transactions } = useGetTransactionsByBlock(props.blockId); if (isLoading || !block) { return ; diff --git a/packages/ui/src/common/misc/FlowserUsageRequirements/FlowserUsageRequirements.tsx b/packages/ui/src/common/misc/FlowserUsageRequirements/FlowserUsageRequirements.tsx index a95c62a60..a635f45d1 100644 --- a/packages/ui/src/common/misc/FlowserUsageRequirements/FlowserUsageRequirements.tsx +++ b/packages/ui/src/common/misc/FlowserUsageRequirements/FlowserUsageRequirements.tsx @@ -1,17 +1,16 @@ import React from "react"; import { ActionDialog } from "../../overlays/dialogs/action/ActionDialog"; -import { useFlowserHooksApi } from "../../../contexts/api-hooks.context"; import { ReactElement } from "react"; import classes from "./FlowserUsageRequirements.module.scss"; import { FlowserUsageRequirement, FlowserUsageRequirementType, } from "@onflowser/api"; +import { useGetFlowserUsageRequirements } from "../../../api"; export function FlowserUsageRequirements(): ReactElement | null { - const api = useFlowserHooksApi(); - const { data: missingRequirements } = api.useGetFlowserUsageRequirements(); - const showModal = missingRequirements.length > 0; + const { data: missingRequirements } = useGetFlowserUsageRequirements(); + const showModal = missingRequirements && missingRequirements.length > 0; if (!showModal) { return null; diff --git a/packages/ui/src/contexts/api-hooks.context.tsx b/packages/ui/src/contexts/api-hooks.context.tsx deleted file mode 100644 index 7cdeaf52b..000000000 --- a/packages/ui/src/contexts/api-hooks.context.tsx +++ /dev/null @@ -1,81 +0,0 @@ -import { createContext, ReactNode, useContext } from "react"; -import { InteractionDefinition } from "../interactions/core/core-types"; -import { SWRResponse } from "swr"; -import { - FlowAccount, - FlowAccountKey, - FlowAccountStorage, - FlowBlock, - FlowCliInfo, - FlowContract, - FlowEvent, - FlowserProject, - FlowserUsageRequirement, - FlowStateSnapshot, - FlowTransaction, - InteractionTemplate, - ManagedProcessOutput, - ParsedInteractionOrError, -} from "@onflowser/api"; - -type FlowserHooksApi = { - useGetAccounts(): SWRResponse; - useGetAccount(id: string): SWRResponse; - useGetKeysByAccount(address: string): SWRResponse; - useGetStoragesByAccount(address: string): SWRResponse; - useGetBlocks(): SWRResponse; - useGetBlock(id: string): SWRResponse; - // TODO(restructure): Test polling of not found resources - useGetTransaction(id: string): SWRResponse; - useGetTransactions(): SWRResponse; - useGetTransactionsByAccount(address: string): SWRResponse; - useGetTransactionsByBlock(id: string): SWRResponse; - useGetContracts(): SWRResponse; - useGetContract(id: string): SWRResponse; - useGetContractsByAccount(address: string): SWRResponse; - useGetStateSnapshots(): SWRResponse; - useGetEvents(): SWRResponse; - useGetEvent(id: string): SWRResponse; - useGetEventsByTransaction(id: string): SWRResponse; - useGetOutputsByProcess(id: string): SWRResponse; - useGetFlowserProjects(): SWRResponse; - useGetFlowserProject(id: string): SWRResponse; - useGetFlowserUsageRequirements(): SWRResponse; - useGetInteractionTemplates(): SWRResponse; - // TODO(restructure): See below note - // We are not using `sourceCode` as the cache key, - // to avoid the flickering UI effect that's caused - // by undefined parsed interaction every time the source code changes. - useGetParsedInteraction( - request: InteractionDefinition - ): SWRResponse; - useGetFlowCliInfo(): SWRResponse; - useGetFlowJson(): SWRResponse; -}; - -const FlowserHooksApiContext = createContext( - undefined as never -); - -type FlowserHooksApiProviderProps = { - children: ReactNode; - hooks: FlowserHooksApi; -}; - -export function FlowserHooksApiProvider(props: FlowserHooksApiProviderProps) { - return ( - - {props.children} - - ); -} - -export function useFlowserHooksApi() { - const context = useContext(FlowserHooksApiContext); - - if (context === undefined) { - throw new Error("FlowserHooksApi context not found"); - } - - return context; -} diff --git a/packages/ui/src/contexts/flow.context.tsx b/packages/ui/src/contexts/flow.context.tsx index 66a529efd..4b4352e3a 100644 --- a/packages/ui/src/contexts/flow.context.tsx +++ b/packages/ui/src/contexts/flow.context.tsx @@ -1,7 +1,7 @@ import React, { createContext, ReactElement, useEffect } from "react"; -import { useFlowserHooksApi } from "./api-hooks.context"; import * as fcl from "@onflow/fcl"; import { useProjectManager } from "./projects.context"; +import { useGetFlowJson } from "../api"; const FlowConfigContext = createContext({}); @@ -13,9 +13,8 @@ export function FlowConfigProvider({ }: { children: ReactElement; }): ReactElement { - const api = useFlowserHooksApi(); const { currentProject } = useProjectManager(); - const { data: flowJSON } = api.useGetFlowJson(); + const { data: flowJSON } = useGetFlowJson(); useEffect(() => { if (currentProject && flowJSON) { diff --git a/packages/ui/src/contexts/projects.context.tsx b/packages/ui/src/contexts/projects.context.tsx index 9dfe6b7cb..74432e4eb 100644 --- a/packages/ui/src/contexts/projects.context.tsx +++ b/packages/ui/src/contexts/projects.context.tsx @@ -1,7 +1,6 @@ import React, { createContext, ReactElement, useContext } from "react"; import toast from "react-hot-toast"; import { useConfirmDialog } from "./confirm-dialog.context"; -import { useFlowserHooksApi } from "./api-hooks.context"; import { AnalyticEvent, useAnalytics } from "../hooks/use-analytics"; import { useNavigate } from "react-router-dom"; import { Helmet } from "react-helmet"; @@ -9,6 +8,7 @@ import { useErrorHandler } from "../hooks/use-error-handler"; import { useCurrentProjectId } from "../hooks/use-current-project-id"; import { FlowserProject } from "@onflowser/api"; import { useServiceRegistry } from "./service-registry.context"; +import { useGetFlowserProject } from "../api"; export type ProjectsManager = { currentProject: FlowserProject | undefined; @@ -39,10 +39,9 @@ export function ProjectsManagerProvider({ const navigate = useNavigate(); const { handleError } = useErrorHandler(ProjectsManagerProvider.name); const { showDialog, hideDialog } = useConfirmDialog(); - const api = useFlowserHooksApi(); const currentProjectId = useCurrentProjectId(); const { data: currentProject, mutate: refetchCurrentProject } = - api.useGetFlowserProject(currentProjectId); + useGetFlowserProject(currentProjectId); const confirmProjectRemove = async (project: FlowserProject) => { track(AnalyticEvent.PROJECT_REMOVED, { projectName: project.name }); diff --git a/packages/ui/src/contexts/service-registry.context.tsx b/packages/ui/src/contexts/service-registry.context.tsx index 89d15e74b..5ce2144ef 100644 --- a/packages/ui/src/contexts/service-registry.context.tsx +++ b/packages/ui/src/contexts/service-registry.context.tsx @@ -1,8 +1,14 @@ import { createContext, ReactNode, useContext } from "react"; import { FlowAccount, + FlowAccountStorage, + FlowBlock, + FlowContract, + FlowEvent, FlowserProject, - IResourceIndexReader + FlowStateSnapshot, + FlowTransaction, + IResourceIndexReader, ManagedProcessOutput } from '@onflowser/api'; interface IWalletService { @@ -11,7 +17,7 @@ interface IWalletService { createAccount(): Promise; } -interface ISnapshotService { +interface ISnapshotService extends IResourceIndexReader { // TODO(restructure): Provide request/response type create(request: any): Promise; checkoutBlock(request: any): Promise; @@ -44,6 +50,12 @@ type ServiceRegistry = { analyticsService: IAnalyticsService; monitoringService: IMonitoringService; accountIndex: IResourceIndexReader; + accountStorageIndex: IResourceIndexReader; + contractIndex: IResourceIndexReader; + transactionsIndex: IResourceIndexReader; + blocksIndex: IResourceIndexReader; + eventsIndex: IResourceIndexReader; + processOutputIndex: IResourceIndexReader; }; const ServiceRegistryContext = createContext( diff --git a/packages/ui/src/contexts/snapshots.context.tsx b/packages/ui/src/contexts/snapshots.context.tsx index aa23e1895..eacad7345 100644 --- a/packages/ui/src/contexts/snapshots.context.tsx +++ b/packages/ui/src/contexts/snapshots.context.tsx @@ -8,7 +8,6 @@ import React, { } from "react"; import toast from "react-hot-toast"; import { useConfirmDialog } from "./confirm-dialog.context"; -import { useFlowserHooksApi } from "./api-hooks.context"; import { useErrorHandler } from "../hooks/use-error-handler"; import { AnalyticEvent, useAnalytics } from "../hooks/use-analytics"; import { FlowUtils } from "../utils/flow-utils"; @@ -16,6 +15,7 @@ import { SnapshotDialog } from "../common/overlays/dialogs/snapshot/SnapshotDial import { useProjectManager } from "./projects.context"; import { FlowBlock, FlowStateSnapshot } from "@onflowser/api"; import { useServiceRegistry } from "./service-registry.context"; +import { useGetBlocks, useGetStateSnapshots } from "../api"; export type SnapshotsManager = { createSnapshot: () => void; @@ -37,9 +37,8 @@ export function SnapshotsManagerProvider({ const { handleError } = useErrorHandler(SnapshotsManagerProvider.name); const { showDialog } = useConfirmDialog(); const { currentProject } = useProjectManager(); - const api = useFlowserHooksApi(); - const { data: blocks, mutate } = api.useGetBlocks(); - const { data: stateSnapshots } = api.useGetStateSnapshots(); + const { data: blocks, mutate } = useGetBlocks(); + const { data: stateSnapshots } = useGetStateSnapshots(); const snapshotLookupByBlockId = useMemo( () => new Map(stateSnapshots?.map((snapshot) => [snapshot.blockId, snapshot])), diff --git a/packages/ui/src/contracts/ContractDetails/ContractDetails.tsx b/packages/ui/src/contracts/ContractDetails/ContractDetails.tsx index 398090864..ac10402dd 100644 --- a/packages/ui/src/contracts/ContractDetails/ContractDetails.tsx +++ b/packages/ui/src/contracts/ContractDetails/ContractDetails.tsx @@ -1,6 +1,5 @@ import React, { FunctionComponent } from "react"; import FullScreenLoading from "../../common/loaders/FullScreenLoading/FullScreenLoading"; -import { useFlowserHooksApi } from "../../contexts/api-hooks.context"; import classes from "./ContractDetails.module.scss"; import { DetailsCard, @@ -11,6 +10,7 @@ import { CadenceEditor } from "../../common/code/CadenceEditor/CadenceEditor"; import { DateDisplay } from "../../common/time/DateDisplay/DateDisplay"; import { ProjectLink } from "../../common/links/ProjectLink"; import { IdeLink } from "../../common/links/IdeLink"; +import { useGetContract } from "../../api"; type ContractDetailsProps = { contractId: string; @@ -20,8 +20,7 @@ export const ContractDetails: FunctionComponent = ( props ) => { const { contractId } = props; - const api = useFlowserHooksApi(); - const { isLoading, data: contract } = api.useGetContract(contractId); + const { isLoading, data: contract } = useGetContract(contractId); if (isLoading || !contract) { return ; diff --git a/packages/ui/src/events/EventDetails/EventDetails.tsx b/packages/ui/src/events/EventDetails/EventDetails.tsx index 821824aa5..7c45e980c 100644 --- a/packages/ui/src/events/EventDetails/EventDetails.tsx +++ b/packages/ui/src/events/EventDetails/EventDetails.tsx @@ -1,6 +1,5 @@ import React, { FunctionComponent } from "react"; import FullScreenLoading from "../../common/loaders/FullScreenLoading/FullScreenLoading"; -import { useFlowserHooksApi } from "../../contexts/api-hooks.context"; import classes from "./EventDetails.module.scss"; import { DetailsCard, @@ -15,6 +14,7 @@ import Value from "../../common/misc/Value/Value"; import { EventOriginLink } from "../EventOriginLink/EventOriginLink"; import { EventUtils } from "../utils"; import { BaseCard } from "../../common/cards/BaseCard/BaseCard"; +import { useGetEvent } from "../../api"; type EventDetailsProps = { eventId: string; @@ -22,8 +22,7 @@ type EventDetailsProps = { export const EventDetails: FunctionComponent = (props) => { const { eventId } = props; - const api = useFlowserHooksApi(); - const { data: event } = api.useGetEvent(eventId); + const { data: event } = useGetEvent(eventId); if (!event) { return ; diff --git a/packages/ui/src/hooks/use-analytics.ts b/packages/ui/src/hooks/use-analytics.ts index eb40472f6..c158d72d2 100644 --- a/packages/ui/src/hooks/use-analytics.ts +++ b/packages/ui/src/hooks/use-analytics.ts @@ -1,8 +1,8 @@ import { useEffect } from "react"; import { useLocalStorage } from "@uidotdev/usehooks"; -import { useFlowserHooksApi } from "../contexts/api-hooks.context"; import { useCurrentProjectId } from "./use-current-project-id"; import { useServiceRegistry } from "../contexts/service-registry.context"; +import { useGetFlowserProject } from "../api"; export enum AnalyticEvent { PAGE_VIEW = "page_view", @@ -35,9 +35,8 @@ export function useAnalytics(): Analytics { "consent-analytics", undefined ); - const api = useFlowserHooksApi(); const currentProjectId = useCurrentProjectId(); - const { data: currentProject } = api.useGetFlowserProject(currentProjectId); + const { data: currentProject } = useGetFlowserProject(currentProjectId); useEffect(() => { if (isConsented) { diff --git a/packages/ui/src/interactions/components/InteractionHistory/InteractionHistory.tsx b/packages/ui/src/interactions/components/InteractionHistory/InteractionHistory.tsx index ae3dba11f..3b83ee92c 100644 --- a/packages/ui/src/interactions/components/InteractionHistory/InteractionHistory.tsx +++ b/packages/ui/src/interactions/components/InteractionHistory/InteractionHistory.tsx @@ -1,6 +1,5 @@ import React, { ReactElement } from "react"; import classes from "./InteractionHistory.module.scss"; -import { useFlowserHooksApi } from "../../../contexts/api-hooks.context"; import { FlowserIcon } from "../../../common/icons/FlowserIcon"; import { SizedBox } from "../../../common/misc/SizedBox/SizedBox"; import { Spinner } from "../../../common/loaders/Spinner/Spinner"; @@ -11,10 +10,10 @@ import { FlowserMenu } from "../../../common/overlays/Menu/Menu"; import { GrcpStatusIcon } from "../../../common/status/GrcpStatus"; import { useSnapshotsManager } from "../../../contexts/snapshots.context"; import { FlowBlock, FlowTransaction } from "@onflowser/api"; +import { useGetBlocks, useGetTransactionsByBlock } from "../../../api"; export function InteractionHistory(): ReactElement { - const api = useFlowserHooksApi(); - const { data: blocks } = api.useGetBlocks(); + const { data: blocks } = useGetBlocks(); // There should always be at least one (initial) block. if (!blocks || blocks.length === 0) { @@ -42,10 +41,9 @@ function BlockItem(props: BlockItemProps) { const { block } = props; const menuIconSize = 15; - const api = useFlowserHooksApi(); const { checkoutBlock } = useSnapshotsManager(); const { create, setFocused } = useInteractionRegistry(); - const { data } = api.useGetTransactionsByAccount( + const { data } = useGetTransactionsByBlock( block.id // TODO(restructure): Add this option // { @@ -54,7 +52,7 @@ function BlockItem(props: BlockItemProps) { // pollingInterval: 0, // } ); - const firstTransaction = data[0]; + const firstTransaction = data?.[0]; const transactionName = useTransactionName({ transaction: firstTransaction, diff --git a/packages/ui/src/interactions/components/InteractionLabel/InteractionLabel.tsx b/packages/ui/src/interactions/components/InteractionLabel/InteractionLabel.tsx index 32f4153e4..8b9675e7d 100644 --- a/packages/ui/src/interactions/components/InteractionLabel/InteractionLabel.tsx +++ b/packages/ui/src/interactions/components/InteractionLabel/InteractionLabel.tsx @@ -1,10 +1,10 @@ import React, { ReactElement } from "react"; import { InteractionIcon } from "../InteractionIcon/InteractionIcon"; import { SizedBox } from "../../../common/misc/SizedBox/SizedBox"; -import { useFlowserHooksApi } from "../../../contexts/api-hooks.context"; import { Spinner } from "../../../common/loaders/Spinner/Spinner"; import classes from "./InteractionLabel.module.scss"; import { InteractionDefinition } from "../../core/core-types"; +import { useGetParsedInteraction } from "../../../api"; type InteractionLabelProps = { interaction: InteractionDefinition; @@ -12,8 +12,7 @@ type InteractionLabelProps = { export function InteractionLabel(props: InteractionLabelProps): ReactElement { const { interaction } = props; - const api = useFlowserHooksApi(); - const { data } = api.useGetParsedInteraction(interaction); + const { data } = useGetParsedInteraction(interaction); return (
diff --git a/packages/ui/src/interactions/components/InteractionOutcomeDisplay/InteractionOutcomeDisplay.tsx b/packages/ui/src/interactions/components/InteractionOutcomeDisplay/InteractionOutcomeDisplay.tsx index 057a3285c..f607b197b 100644 --- a/packages/ui/src/interactions/components/InteractionOutcomeDisplay/InteractionOutcomeDisplay.tsx +++ b/packages/ui/src/interactions/components/InteractionOutcomeDisplay/InteractionOutcomeDisplay.tsx @@ -2,7 +2,6 @@ import React, { ReactElement, useEffect, useState } from "react"; import { useInteractionOutcomeManager } from "../../contexts/outcome.context"; import { ScriptError } from "../../../common/status/ErrorMessage"; import { JsonView } from "../../../common/code/JsonView/JsonView"; -import { useFlowserHooksApi } from "../../../contexts/api-hooks.context"; import classes from "./InteractionOutcomeDisplay.module.scss"; import { BaseTabItem } from "../../../common/tabs/BaseTabs/BaseTabs"; import { Callout } from "../../../common/misc/Callout/Callout"; @@ -14,6 +13,7 @@ import { StyledTabs } from "../../../common/tabs/StyledTabs/StyledTabs"; import { TransactionDetailsTabs } from "../../../transactions/TransactionDetailsTabs/TransactionDetailsTabs"; import { ScriptOutcome, TransactionOutcome } from "../../core/core-types"; import { InteractionKind } from "@onflowser/api"; +import { useGetTransaction } from "../../../api"; export function InteractionOutcomeDisplay(): ReactElement { const { outcome } = useInteractionOutcomeManager(); @@ -96,8 +96,7 @@ function EmptyState() { function TransactionOutcomeDisplay(props: { outcome: TransactionOutcome }) { const { outcome } = props; - const api = useFlowserHooksApi(); - const { data: transaction } = api.useGetTransaction(outcome.transactionId!); + const { data: transaction } = useGetTransaction(outcome.transactionId!); if (!transaction) { return ; diff --git a/packages/ui/src/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.tsx b/packages/ui/src/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.tsx index 596d1409c..052a0f18c 100644 --- a/packages/ui/src/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.tsx +++ b/packages/ui/src/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.tsx @@ -1,7 +1,6 @@ import React, { ReactElement, useEffect, useState } from "react"; import classes from "./AddressBuilder.module.scss"; import { CadenceValueBuilder } from "../interface"; -import { useFlowserHooksApi } from "../../../../contexts/api-hooks.context"; import { AccountAvatar } from "../../../../accounts/AccountAvatar/AccountAvatar"; import { AccountName } from "../../../../accounts/AccountName/AccountName"; import { FlowserIcon } from "../../../../common/icons/FlowserIcon"; @@ -10,10 +9,10 @@ import { Spinner } from "../../../../common/loaders/Spinner/Spinner"; import { FclValueUtils } from "@onflowser/core"; import { FlowAccount } from "@onflowser/api"; import { useServiceRegistry } from "../../../../contexts/service-registry.context"; +import { useGetAccounts } from "../../../../api"; export function AddressBuilder(props: CadenceValueBuilder): ReactElement { const { disabled, value, setValue, addressBuilderOptions } = props; - const { useGetAccounts } = useFlowserHooksApi(); const { data, mutate } = useGetAccounts(); const { walletService } = useServiceRegistry(); const managedAccounts = addressBuilderOptions?.showManagedAccountsOnly diff --git a/packages/ui/src/interactions/contexts/definition.context.tsx b/packages/ui/src/interactions/contexts/definition.context.tsx index 1026f0d84..9ccb93880 100644 --- a/packages/ui/src/interactions/contexts/definition.context.tsx +++ b/packages/ui/src/interactions/contexts/definition.context.tsx @@ -5,13 +5,13 @@ import React, { useContext, } from "react"; import { useInteractionRegistry } from "./interaction-registry.context"; -import { useFlowserHooksApi } from "../../contexts/api-hooks.context"; import { FclValueLookupByIdentifier, InteractionDefinition, } from "../core/core-types"; import { ParsedInteraction } from "@onflowser/api"; import { FclValue } from "@onflowser/core"; +import { useGetParsedInteraction } from '../../api'; type InteractionDefinitionManager = InteractionParameterBuilder & { isParsing: boolean; @@ -34,8 +34,7 @@ export function InteractionDefinitionManagerProvider(props: { }): ReactElement { const { definition } = props; const { update } = useInteractionRegistry(); - const api = useFlowserHooksApi(); - const { data, isLoading } = api.useGetParsedInteraction(definition); + const { data, isLoading } = useGetParsedInteraction(definition); const fclValuesByIdentifier = definition.fclValuesByIdentifier; function partialUpdate(newDefinition: Partial) { diff --git a/packages/ui/src/interactions/contexts/templates.context.tsx b/packages/ui/src/interactions/contexts/templates.context.tsx index 57033d86e..439474cbc 100644 --- a/packages/ui/src/interactions/contexts/templates.context.tsx +++ b/packages/ui/src/interactions/contexts/templates.context.tsx @@ -1,8 +1,8 @@ import React, { createContext, ReactElement, useContext, useMemo } from "react"; -import { useFlowserHooksApi } from "../../contexts/api-hooks.context"; import { InteractionDefinition } from "../core/core-types"; import { FclValue } from "@onflowser/core"; import { useLocalStorage } from "@uidotdev/usehooks"; +import { useGetInteractionTemplates } from "../../api"; type InteractionTemplatesRegistry = { templates: InteractionDefinitionTemplate[]; @@ -39,8 +39,7 @@ const Context = createContext(undefined as never); export function TemplatesRegistryProvider(props: { children: React.ReactNode; }): ReactElement { - const api = useFlowserHooksApi(); - const { data: projectTemplatesData } = api.useGetInteractionTemplates(); + const { data: projectTemplatesData } = useGetInteractionTemplates(); const [customTemplates, setRawTemplates] = useLocalStorage< RawInteractionDefinitionTemplate[] >("interactions", []); diff --git a/packages/ui/src/logs/Logs.tsx b/packages/ui/src/logs/Logs.tsx index ed4539f08..08dacc284 100644 --- a/packages/ui/src/logs/Logs.tsx +++ b/packages/ui/src/logs/Logs.tsx @@ -10,15 +10,15 @@ import classes from "./Logs.module.scss"; import { CaretIcon } from "../common/icons/CaretIcon/CaretIcon"; import { useFilterData } from "../hooks/use-filter-data"; import { useMouseMove } from "../hooks/use-mouse-move"; -import { useFlowserHooksApi } from "../contexts/api-hooks.context"; import { toast } from "react-hot-toast"; import classNames from "classnames"; import { SimpleButton } from "../common/buttons/SimpleButton/SimpleButton"; import { Callout } from "../common/misc/Callout/Callout"; -import { SearchInput } from "../common/inputs/SearchInput/SearchInput"; +import { SearchInput } from "../common/inputs"; import { ManagedProcessOutput, ProcessOutputSource } from "@onflowser/api"; import AnsiHtmlConvert from "ansi-to-html"; import { FlowserIcon } from "../common/icons/FlowserIcon"; +import { useGetOutputsByProcess } from "../api"; type LogsProps = { className?: string; @@ -84,11 +84,11 @@ export function Logs(props: LogsProps): ReactElement { scrollToBottom(); }, [logs]); - const onCaretChange = useCallback((isExpanded) => { - if (isExpanded === false) { - changeLogDrawerSize("small"); - } else { + const onCaretChange = useCallback((isExpanded: boolean) => { + if (isExpanded) { changeLogDrawerSize("tiny"); + } else { + changeLogDrawerSize("small"); } }, []); @@ -250,8 +250,7 @@ function useRelevantLogs(options: { searchTerm: string | undefined; tailSize: number; }) { - const api = useFlowserHooksApi(); - const { data: emulatorLogs } = api.useGetOutputsByProcess(emulatorProcessId); + const { data: emulatorLogs } = useGetOutputsByProcess(emulatorProcessId); const { filteredData: logs } = useFilterData( emulatorLogs ?? [], options.searchTerm diff --git a/packages/ui/src/projects/ProjectListPage/ProjectListPage.tsx b/packages/ui/src/projects/ProjectListPage/ProjectListPage.tsx index 8284af1d4..54bd5c916 100644 --- a/packages/ui/src/projects/ProjectListPage/ProjectListPage.tsx +++ b/packages/ui/src/projects/ProjectListPage/ProjectListPage.tsx @@ -4,7 +4,6 @@ import IconButton from "../../common/buttons/IconButton/IconButton"; import longLogo from "../../assets/long_logo.png"; import trash from "../../common/icons/assets/trash.svg"; import classes from "./ProjectListPage.module.scss"; -import { useFlowserHooksApi } from "../../contexts/api-hooks.context"; import classNames from "classnames"; import { useProjectManager } from "../../contexts/projects.context"; import { SimpleButton } from "../../common/buttons/SimpleButton/SimpleButton"; @@ -12,6 +11,7 @@ import { ConsentDialog } from "../../common/overlays/dialogs/consent/ConsentDial import { useAnalytics } from "../../hooks/use-analytics"; import { FlowserIcon } from "../../common/icons/FlowserIcon"; import { TextUtils } from "../../utils/text-utils"; +import { useGetFlowserProjects } from "../../api"; type ProjectTab = { id: string; @@ -85,8 +85,7 @@ export const ProjectListPage: FunctionComponent = () => { }; function ProjectsListContent() { - const api = useFlowserHooksApi(); - const { data: projects } = api.useGetFlowserProjects(); + const { data: projects } = useGetFlowserProjects(); const { startProject, removeProject } = useProjectManager(); const showProjectList = projects && projects.length > 0; diff --git a/packages/ui/src/projects/ProjectSettings/ProjectSettings.tsx b/packages/ui/src/projects/ProjectSettings/ProjectSettings.tsx index 07b6e37c6..e2ece3953 100644 --- a/packages/ui/src/projects/ProjectSettings/ProjectSettings.tsx +++ b/packages/ui/src/projects/ProjectSettings/ProjectSettings.tsx @@ -6,7 +6,6 @@ import Button from "../../common/buttons/Button/Button"; import FullScreenLoading from "../../common/loaders/FullScreenLoading/FullScreenLoading"; import { toast } from "react-hot-toast"; import classNames from "classnames"; -import { useFlowserHooksApi } from "../../contexts/api-hooks.context"; import { FlowUtils } from "../../utils/flow-utils"; import * as yup from "yup"; import { useErrorHandler } from "../../hooks/use-error-handler"; @@ -28,6 +27,7 @@ import { SignatureAlgorithm, } from "@onflowser/api"; import { useServiceRegistry } from "../../contexts/service-registry.context"; +import { useGetFlowCliInfo } from "../../api"; const projectSchema = yup.object().shape({ name: yup.string().required("Required"), @@ -45,12 +45,11 @@ export const ProjectSettings: FunctionComponent = ( const { projectsService } = useServiceRegistry(); const [isLoading, setIsLoading] = useState(true); - const api = useFlowserHooksApi(); const { track } = useAnalytics(); const { pickDirectory } = useFilePicker(); const { startProject, removeProject, createProject, updateProject } = useProjectManager(); - const { data: flowCliInfo } = api.useGetFlowCliInfo(); + const { data: flowCliInfo } = useGetFlowCliInfo(); const { handleError } = useErrorHandler(ProjectSettings.name); const isExistingProject = Boolean(projectId); diff --git a/packages/ui/src/transactions/TransactionDetails/TransactionDetails.tsx b/packages/ui/src/transactions/TransactionDetails/TransactionDetails.tsx index 7be9e93e9..0187e033f 100644 --- a/packages/ui/src/transactions/TransactionDetails/TransactionDetails.tsx +++ b/packages/ui/src/transactions/TransactionDetails/TransactionDetails.tsx @@ -1,10 +1,10 @@ import React, { FunctionComponent } from "react"; import classes from "./TransactionDetails.module.scss"; import FullScreenLoading from "../../common/loaders/FullScreenLoading/FullScreenLoading"; -import { useFlowserHooksApi } from "../../contexts/api-hooks.context"; import { TransactionOverview } from "../TransactionOverview/TransactionOverview"; import { SizedBox } from "../../common/misc/SizedBox/SizedBox"; import { TransactionDetailsTabs } from "../TransactionDetailsTabs/TransactionDetailsTabs"; +import { useGetTransaction } from "../../api"; type TransactionDetailsProps = { transactionId: string; @@ -14,8 +14,7 @@ export const TransactionDetails: FunctionComponent = ( props ) => { const { transactionId } = props; - const api = useFlowserHooksApi(); - const { data: transaction, isLoading } = api.useGetTransaction(transactionId); + const { data: transaction, isLoading } = useGetTransaction(transactionId); if (isLoading || !transaction) { return ; diff --git a/packages/ui/src/transactions/TransactionDetailsTabs/TransactionDetailsTabs.tsx b/packages/ui/src/transactions/TransactionDetailsTabs/TransactionDetailsTabs.tsx index 94f9bb7f4..39857a333 100644 --- a/packages/ui/src/transactions/TransactionDetailsTabs/TransactionDetailsTabs.tsx +++ b/packages/ui/src/transactions/TransactionDetailsTabs/TransactionDetailsTabs.tsx @@ -8,10 +8,10 @@ import { StyledTabs, StyledTabsProps, } from "../../common/tabs/StyledTabs/StyledTabs"; -import { useFlowserHooksApi } from "../../contexts/api-hooks.context"; import { TransactionOverview } from "../TransactionOverview/TransactionOverview"; import { FlowTransaction } from "@onflowser/api"; import FullScreenLoading from "../../common/loaders/FullScreenLoading/FullScreenLoading"; +import { useGetEventsByTransaction } from "../../api"; type TransactionDetailsTabsProps = Omit & { transaction: FlowTransaction; @@ -24,8 +24,7 @@ export function TransactionDetailsTabs( ): ReactElement { const { transaction, includeOverviewTab, includeScriptTab, ...tabProps } = props; - const api = useFlowserHooksApi(); - const { data: events } = api.useGetEventsByTransaction(transaction.id); + const { data: events } = useGetEventsByTransaction(transaction.id); const tabs: BaseTabItem[] = []; From f93dcbaec73f556f22005b307c68b0a107782583 Mon Sep 17 00:00:00 2001 From: Bart Date: Sat, 21 Oct 2023 19:25:03 +0200 Subject: [PATCH 023/100] fix svg component loading --- packages/ui/src/projects/ProjectListPage/ProjectListPage.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/ui/src/projects/ProjectListPage/ProjectListPage.tsx b/packages/ui/src/projects/ProjectListPage/ProjectListPage.tsx index 54bd5c916..4cdb6591b 100644 --- a/packages/ui/src/projects/ProjectListPage/ProjectListPage.tsx +++ b/packages/ui/src/projects/ProjectListPage/ProjectListPage.tsx @@ -2,7 +2,6 @@ import React, { FunctionComponent, ReactElement, useState } from "react"; import { Link, useNavigate, useLocation } from "react-router-dom"; import IconButton from "../../common/buttons/IconButton/IconButton"; import longLogo from "../../assets/long_logo.png"; -import trash from "../../common/icons/assets/trash.svg"; import classes from "./ProjectListPage.module.scss"; import classNames from "classnames"; import { useProjectManager } from "../../contexts/projects.context"; @@ -115,7 +114,7 @@ function ProjectsListContent() { className={classes.projectTrashcan} onClick={() => removeProject(project)} > - trash icon + ))} From ba5805153820954b37bbdbcabd37fe8e9a699d55 Mon Sep 17 00:00:00 2001 From: Bart Date: Sat, 21 Oct 2023 19:29:09 +0200 Subject: [PATCH 024/100] add missing electron app --- .../configs/webpack.config.renderer.dev.ts | 32 +- .../configs/webpack.config.renderer.prod.ts | 26 +- apps/electron/.eslintrc.js | 1 + apps/electron/package.json | 14 +- apps/electron/release/app/yarn.lock | 4 + apps/electron/src/main/flowser.ts | 184 ++++++++++ apps/electron/src/main/main.ts | 51 ++- apps/electron/src/main/menu.ts | 162 ++++----- apps/electron/src/main/preload.ts | 17 +- apps/electron/src/renderer/App.css | 62 ---- apps/electron/src/renderer/App.scss | 40 +++ apps/electron/src/renderer/App.tsx | 148 ++++++-- .../components/loaders/ExitLoader.tsx | 15 + .../components/loaders/Loader.module.scss | 40 +++ .../components/loaders/UpdateLoader.tsx | 23 ++ apps/electron/src/renderer/index.tsx | 9 +- apps/electron/src/renderer/ipc-index.ts | 29 ++ apps/electron/src/renderer/router.tsx | 319 ++++++++++++++++++ .../src/services/analytics.service.ts | 45 +++ .../src/services/app-update.service.ts | 80 +++++ .../src/services/fingerprint.service.ts | 15 + apps/electron/src/services/logger.service.ts | 31 ++ .../src/services/sentry-main.service.ts | 26 ++ .../src/services/sentry-renderer.service.ts | 30 ++ 24 files changed, 1148 insertions(+), 255 deletions(-) create mode 100644 apps/electron/release/app/yarn.lock create mode 100644 apps/electron/src/main/flowser.ts delete mode 100644 apps/electron/src/renderer/App.css create mode 100644 apps/electron/src/renderer/App.scss create mode 100644 apps/electron/src/renderer/components/loaders/ExitLoader.tsx create mode 100644 apps/electron/src/renderer/components/loaders/Loader.module.scss create mode 100644 apps/electron/src/renderer/components/loaders/UpdateLoader.tsx create mode 100644 apps/electron/src/renderer/ipc-index.ts create mode 100644 apps/electron/src/renderer/router.tsx create mode 100644 apps/electron/src/services/analytics.service.ts create mode 100644 apps/electron/src/services/app-update.service.ts create mode 100644 apps/electron/src/services/fingerprint.service.ts create mode 100644 apps/electron/src/services/logger.service.ts create mode 100644 apps/electron/src/services/sentry-main.service.ts create mode 100644 apps/electron/src/services/sentry-renderer.service.ts diff --git a/apps/electron/.erb/configs/webpack.config.renderer.dev.ts b/apps/electron/.erb/configs/webpack.config.renderer.dev.ts index a6ca87e90..2d6eeb35e 100644 --- a/apps/electron/.erb/configs/webpack.config.renderer.dev.ts +++ b/apps/electron/.erb/configs/webpack.config.renderer.dev.ts @@ -32,8 +32,8 @@ if ( ) { console.log( chalk.black.bgYellow.bold( - 'The DLL files are missing. Sit back while we build them for you with "npm run build-dll"', - ), + 'The DLL files are missing. Sit back while we build them for you with "npm run build-dll"' + ) ); execSync('npm run postinstall'); } @@ -94,23 +94,17 @@ const configuration: webpack.Configuration = { type: 'asset/resource', }, // SVG + // https://react-svgr.com/docs/webpack/#use-svgr-and-asset-svg-in-the-same-project { - test: /\.svg$/, - use: [ - { - loader: '@svgr/webpack', - options: { - prettier: false, - svgo: false, - svgoConfig: { - plugins: [{ removeViewBox: false }], - }, - titleProp: true, - ref: true, - }, - }, - 'file-loader', - ], + test: /\.svg$/i, + type: 'asset', + resourceQuery: /url/, // *.svg?url + }, + { + test: /\.svg$/i, + issuer: /\.[jt]sx?$/, + resourceQuery: { not: [/url/] }, // exclude react component if *.svg?url + use: ['@svgr/webpack'], }, ], }, @@ -193,7 +187,7 @@ const configuration: webpack.Configuration = { let args = ['run', 'start:main']; if (process.env.MAIN_ARGS) { args = args.concat( - ['--', ...process.env.MAIN_ARGS.matchAll(/"[^"]+"|[^\s"]+/g)].flat(), + ['--', ...process.env.MAIN_ARGS.matchAll(/"[^"]+"|[^\s"]+/g)].flat() ); } spawn('npm', args, { diff --git a/apps/electron/.erb/configs/webpack.config.renderer.prod.ts b/apps/electron/.erb/configs/webpack.config.renderer.prod.ts index 3cebf30d4..72ac6fd2d 100644 --- a/apps/electron/.erb/configs/webpack.config.renderer.prod.ts +++ b/apps/electron/.erb/configs/webpack.config.renderer.prod.ts @@ -70,23 +70,17 @@ const configuration: webpack.Configuration = { type: 'asset/resource', }, // SVG + // https://react-svgr.com/docs/webpack/#use-svgr-and-asset-svg-in-the-same-project { - test: /\.svg$/, - use: [ - { - loader: '@svgr/webpack', - options: { - prettier: false, - svgo: false, - svgoConfig: { - plugins: [{ removeViewBox: false }], - }, - titleProp: true, - ref: true, - }, - }, - 'file-loader', - ], + test: /\.svg$/i, + type: 'asset', + resourceQuery: /url/, // *.svg?url + }, + { + test: /\.svg$/i, + issuer: /\.[jt]sx?$/, + resourceQuery: { not: [/url/] }, // exclude react component if *.svg?url + use: ['@svgr/webpack'], }, ], }, diff --git a/apps/electron/.eslintrc.js b/apps/electron/.eslintrc.js index 85a1aa65f..9f98c6d41 100644 --- a/apps/electron/.eslintrc.js +++ b/apps/electron/.eslintrc.js @@ -13,6 +13,7 @@ module.exports = { '@typescript-eslint/no-shadow': 'error', 'no-unused-vars': 'off', '@typescript-eslint/no-unused-vars': 'error', + 'import/prefer-default-export': 'off', }, parserOptions: { ecmaVersion: 2022, diff --git a/apps/electron/package.json b/apps/electron/package.json index a25801fca..5330c602a 100644 --- a/apps/electron/package.json +++ b/apps/electron/package.json @@ -1,4 +1,6 @@ { + "name": "@onflowser/electron", + "version": "3.0.0", "description": "A foundation for scalable desktop apps", "keywords": [ "electron", @@ -42,6 +44,7 @@ "lint": "cross-env NODE_ENV=development eslint . --ext .js,.jsx,.ts,.tsx", "package": "ts-node ./.erb/scripts/clean.js dist && npm run build && electron-builder build --publish never && npm run build:dll", "rebuild": "electron-rebuild --parallel --types prod,dev,optional --module-dir release/app", + "dev": "npm run start", "start": "ts-node ./.erb/scripts/check-port-in-use.js && npm run start:renderer", "start:main": "cross-env NODE_ENV=development electronmon -r ts-node/register/transpile-only .", "start:preload": "cross-env NODE_ENV=development TS_NODE_TRANSPILE_ONLY=true webpack --config ./.erb/configs/webpack.config.preload.dev.ts", @@ -96,22 +99,29 @@ } }, "dependencies": { + "@fingerprintjs/fingerprintjs": "^4.1.0", + "@sentry/electron": "^4.13.0", "electron-debug": "^3.2.0", "electron-log": "^4.4.8", "electron-updater": "^6.1.4", + "mixpanel-browser": "^2.47.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "react-router-dom": "^6.16.0" + "react-hot-toast": "^2.1.1", + "react-router-dom": "^6.16.0", + "swr": "^2.2.4" }, "devDependencies": { "@electron/notarize": "^2.1.0", "@electron/rebuild": "^3.3.0", + "@onflowser/ui": "*", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.11", "@svgr/webpack": "^8.1.0", "@teamsupercell/typings-for-css-modules-loader": "^2.5.2", "@testing-library/jest-dom": "^6.1.3", "@testing-library/react": "^14.0.0", "@types/jest": "^29.5.5", + "@types/mixpanel-browser": "^2.47.3", "@types/node": "20.6.2", "@types/react": "^18.2.21", "@types/react-dom": "^18.2.7", @@ -128,7 +138,7 @@ "css-loader": "^6.8.1", "css-minimizer-webpack-plugin": "^5.0.1", "detect-port": "^1.5.1", - "electron": "^26.2.1", + "electron": "26.2.1", "electron-builder": "^24.6.4", "electron-devtools-installer": "^3.2.0", "electronmon": "^2.0.2", diff --git a/apps/electron/release/app/yarn.lock b/apps/electron/release/app/yarn.lock new file mode 100644 index 000000000..fb57ccd13 --- /dev/null +++ b/apps/electron/release/app/yarn.lock @@ -0,0 +1,4 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + diff --git a/apps/electron/src/main/flowser.ts b/apps/electron/src/main/flowser.ts new file mode 100644 index 000000000..a0bfb9145 --- /dev/null +++ b/apps/electron/src/main/flowser.ts @@ -0,0 +1,184 @@ +import { + FlowAccountStorageService, + FlowGatewayService, + FlowIndexerService, + IFlowserLogger, + InMemoryIndex, +} from '@onflowser/core'; +import { + FlowAccount, + FlowAccountStorage, + FlowBlock, + FlowContract, + FlowEvent, + FlowTransaction, +} from '@onflowser/api'; +import { + AsyncIntervalScheduler, + FlowInteractionsService, + GoBindingsService, +} from '@onflowser/nodejs'; + +export type FlowserIndexes = { + accountStorage: InMemoryIndex; + contract: InMemoryIndex; + block: InMemoryIndex; + event: InMemoryIndex; + transaction: InMemoryIndex; + account: InMemoryIndex; +}; + +export class Flowser { + static instance: Flowser; + private readonly flowGatewayService: FlowGatewayService; + private readonly flowIndexerService: FlowIndexerService; + private readonly flowAccountStorageService: FlowAccountStorageService; + private readonly goBindingsService: GoBindingsService; + private readonly flowInteractionsService: FlowInteractionsService; + private readonly logger: IFlowserLogger; + private readonly indexes: FlowserIndexes; + private scheduler: AsyncIntervalScheduler; + + constructor() { + this.flowGatewayService = new FlowGatewayService(); + this.logger = new WebLogger(); + this.indexes = { + transaction: new InMemoryIndex(), + block: new InMemoryIndex(), + account: new InMemoryIndex(), + event: new InMemoryIndex(), + contract: new InMemoryIndex(), + accountStorage: new InMemoryIndex(), + }; + this.flowAccountStorageService = new FlowAccountStorageService( + this.flowGatewayService + ); + this.goBindingsService = new GoBindingsService(); + this.flowInteractionsService = new FlowInteractionsService( + this.goBindingsService + ); + this.flowIndexerService = new FlowIndexerService( + this.logger, + this.indexes.transaction, + this.indexes.account, + this.indexes.block, + this.indexes.event, + this.indexes.contract, + this.indexes.accountStorage, + this.flowAccountStorageService, + this.flowGatewayService, + this.flowInteractionsService + ); + this.scheduler = new AsyncIntervalScheduler({ + name: 'Blockchain processing', + pollingIntervalInMs: 500, + functionToExecute: () => this.flowIndexerService.processBlockchainData(), + }); + } + + static create(): Flowser { + if (!this.instance) { + this.instance = new Flowser() + } + return this.instance; + } + + getIndexes(): FlowserIndexes { + return this.indexes; + } + + startProcessing() { + return this.scheduler.start(); + } + + configure() { + this.flowGatewayService.configure({ + restServerAddress: 'http://localhost:8888', + flowJSON: { + contracts: { + ExampleNFT: 'cadence/contracts/exampleNFT/ExampleNFT.cdc', + FungibleToken: { + source: '', + aliases: { + emulator: 'ee82856bf20e2aa6', + }, + }, + MetadataViews: { + source: '', + aliases: { + emulator: 'f8d6e0586b0a20c7', + }, + }, + NonFungibleToken: { + source: '', + aliases: { + emulator: 'f8d6e0586b0a20c7', + }, + }, + ViewResolver: 'cadence/contracts/standards/ViewResolver.cdc', + }, + networks: { + emulator: '127.0.0.1:3569', + mainnet: 'access.mainnet.nodes.onflow.org:9000', + sandboxnet: 'access.sandboxnet.nodes.onflow.org:9000', + testnet: 'access.devnet.nodes.onflow.org:9000', + }, + accounts: { + default: { + address: 'f669cb8d41ce0c74', + key: '2e09fac1b3b8e128c67b2e57ba59ec8506ff8326053812135a954b4d3291096f', + }, + 'emulator-account': { + address: 'f8d6e0586b0a20c7', + key: 'd2c3686da84d61c13627bdf2127866fe358165734f5470be792e6771901d2856', + }, + exampleNFT: { + address: '192440c99cb17282', + key: '58cfc56dcbbfa8bfb7b9898586793b0710dfebe8a0358774044968abc9acc8c2', + }, + standards: { + address: 'fd43f9148d4b725d', + key: '28946711cc802634ca4520c0f8b113e065c519dc02306a05ecb204a896ee80ed', + }, + '0x01cf0e2f2f715450': { + address: '0x01cf0e2f2f715450', + key: '95b367208187ecc83a3e6c9aba61ad0edc00af3e0d678c60b39fe13ccfc5d75b', + }, + '0x179b6b1cb6755e31': { + address: '0x179b6b1cb6755e31', + key: 'f1f066337d4e853311807fd94bed599739d7cede8c6e6585414703eb0e0345ed', + }, + }, + deployments: { + emulator: { + default: [], + exampleNFT: ['ExampleNFT'], + standards: ['ViewResolver'], + }, + }, + }, + }); + } +} + +class WebLogger implements IFlowserLogger { + debug(message: any): void { + console.debug(message); + } + + error(message: any, error?: unknown): void { + console.error(message, error); + } + + log(message: any): void { + console.log(message); + } + + verbose(message: any): void { + console.debug(message); + } + + warn(message: any): void { + console.warn(message); + } +} diff --git a/apps/electron/src/main/main.ts b/apps/electron/src/main/main.ts index 05b44eb4f..f21deb67e 100644 --- a/apps/electron/src/main/main.ts +++ b/apps/electron/src/main/main.ts @@ -9,11 +9,19 @@ * `./src/main.js` using webpack. This gives us some performance wins. */ import path from 'path'; -import { app, BrowserWindow, shell, ipcMain } from 'electron'; +import { + app, + BrowserWindow, + shell, + ipcMain, + dialog, + IpcMainInvokeEvent, +} from 'electron'; import { autoUpdater } from 'electron-updater'; import log from 'electron-log'; import MenuBuilder from './menu'; import { resolveHtmlPath } from './util'; +import { Flowser, FlowserIndexes } from './flowser'; class AppUpdater { constructor() { @@ -25,11 +33,38 @@ class AppUpdater { let mainWindow: BrowserWindow | null = null; -ipcMain.on('ipc-example', async (event, arg) => { - const msgTemplate = (pingPong: string) => `IPC test: ${pingPong}`; - console.log(msgTemplate(arg)); - event.reply('ipc-example', msgTemplate('pong')); -}); +ipcMain.handle('showDirectoryPicker', showDirectoryPicker); +ipcMain.handle('index:get-all', getAllFromIndex); + +Flowser.create().configure(); +Flowser.create().startProcessing(); + +async function getAllFromIndex(event: IpcMainInvokeEvent, ...args: any[]) { + console.log('Received event', event, args); + const [indexName] = args; + + const indexes = Flowser.create().getIndexes(); + + if (typeof indexName !== 'string') { + throw new Error('Invalid argument'); + } + + if (indexName in indexes) { + return await indexes[indexName as keyof FlowserIndexes].findAll(); + } else { + throw new Error('Index not found: ' + indexName); + } +} + +async function showDirectoryPicker() { + const result = await dialog.showOpenDialog({ + properties: ['openDirectory', 'createDirectory'], + }); + if (result.canceled) { + return undefined; + } + return result.filePaths[0]; +} if (process.env.NODE_ENV === 'production') { const sourceMapSupport = require('source-map-support'); @@ -51,7 +86,7 @@ const installExtensions = async () => { return installer .default( extensions.map((name) => installer[name]), - forceDownload, + forceDownload ) .catch(console.log); }; @@ -110,6 +145,8 @@ const createWindow = async () => { // Remove this if your app does not use auto updates // eslint-disable-next-line new AppUpdater(); + + // TODO(restructure): Start and navigate to temporary project }; /** diff --git a/apps/electron/src/main/menu.ts b/apps/electron/src/main/menu.ts index ba0fb7709..82657c43c 100644 --- a/apps/electron/src/main/menu.ts +++ b/apps/electron/src/main/menu.ts @@ -5,17 +5,21 @@ import { BrowserWindow, MenuItemConstructorOptions, } from 'electron'; +import { AppUpdateService } from '../services/app-update.service'; interface DarwinMenuItemConstructorOptions extends MenuItemConstructorOptions { selector?: string; submenu?: DarwinMenuItemConstructorOptions[] | Menu; } +// TODO(restructure): Add option to open a file/project from menu export default class MenuBuilder { mainWindow: BrowserWindow; + private appUpdateService: AppUpdateService; constructor(mainWindow: BrowserWindow) { this.mainWindow = mainWindow; + this.appUpdateService = new AppUpdateService(); } buildMenu(): Menu { @@ -54,27 +58,13 @@ export default class MenuBuilder { buildDarwinTemplate(): MenuItemConstructorOptions[] { const subMenuAbout: DarwinMenuItemConstructorOptions = { - label: 'Electron', + label: 'Flowser', submenu: [ { - label: 'About ElectronReact', + label: 'About Flowser', selector: 'orderFrontStandardAboutPanel:', }, - { type: 'separator' }, - { label: 'Services', submenu: [] }, - { type: 'separator' }, - { - label: 'Hide ElectronReact', - accelerator: 'Command+H', - selector: 'hide:', - }, - { - label: 'Hide Others', - accelerator: 'Command+Shift+H', - selector: 'hideOtherApplications:', - }, - { label: 'Show All', selector: 'unhideAllApplications:' }, - { type: 'separator' }, + this.checkForUpdatesMenuItem(), { label: 'Quit', accelerator: 'Command+Q', @@ -87,17 +77,9 @@ export default class MenuBuilder { const subMenuEdit: DarwinMenuItemConstructorOptions = { label: 'Edit', submenu: [ - { label: 'Undo', accelerator: 'Command+Z', selector: 'undo:' }, - { label: 'Redo', accelerator: 'Shift+Command+Z', selector: 'redo:' }, - { type: 'separator' }, { label: 'Cut', accelerator: 'Command+X', selector: 'cut:' }, { label: 'Copy', accelerator: 'Command+C', selector: 'copy:' }, { label: 'Paste', accelerator: 'Command+V', selector: 'paste:' }, - { - label: 'Select All', - accelerator: 'Command+A', - selector: 'selectAll:', - }, ], }; const subMenuViewDev: MenuItemConstructorOptions = { @@ -151,65 +133,23 @@ export default class MenuBuilder { { label: 'Bring All to Front', selector: 'arrangeInFront:' }, ], }; - const subMenuHelp: MenuItemConstructorOptions = { - label: 'Help', - submenu: [ - { - label: 'Learn More', - click() { - shell.openExternal('https://electronjs.org'); - }, - }, - { - label: 'Documentation', - click() { - shell.openExternal( - 'https://github.com/electron/electron/tree/main/docs#readme', - ); - }, - }, - { - label: 'Community Discussions', - click() { - shell.openExternal('https://www.electronjs.org/community'); - }, - }, - { - label: 'Search Issues', - click() { - shell.openExternal('https://github.com/electron/electron/issues'); - }, - }, - ], - }; - const subMenuView = process.env.NODE_ENV === 'development' || process.env.DEBUG_PROD === 'true' ? subMenuViewDev : subMenuViewProd; - return [subMenuAbout, subMenuEdit, subMenuView, subMenuWindow, subMenuHelp]; + return [ + subMenuAbout, + subMenuEdit, + subMenuView, + subMenuWindow, + this.learnMoreMenuItem(), + ]; } buildDefaultTemplate() { const templateDefault = [ - { - label: '&File', - submenu: [ - { - label: '&Open', - accelerator: 'Ctrl+O', - }, - { - label: '&Close', - accelerator: 'Ctrl+W', - click: () => { - this.mainWindow.close(); - }, - }, - ], - }, { label: '&View', submenu: @@ -228,7 +168,7 @@ export default class MenuBuilder { accelerator: 'F11', click: () => { this.mainWindow.setFullScreen( - !this.mainWindow.isFullScreen(), + !this.mainWindow.isFullScreen() ); }, }, @@ -246,45 +186,57 @@ export default class MenuBuilder { accelerator: 'F11', click: () => { this.mainWindow.setFullScreen( - !this.mainWindow.isFullScreen(), + !this.mainWindow.isFullScreen() ); }, }, ], }, + this.learnMoreMenuItem(), { - label: 'Help', - submenu: [ - { - label: 'Learn More', - click() { - shell.openExternal('https://electronjs.org'); - }, - }, - { - label: 'Documentation', - click() { - shell.openExternal( - 'https://github.com/electron/electron/tree/main/docs#readme', - ); - }, - }, - { - label: 'Community Discussions', - click() { - shell.openExternal('https://www.electronjs.org/community'); - }, - }, - { - label: 'Search Issues', - click() { - shell.openExternal('https://github.com/electron/electron/issues'); - }, - }, - ], + label: 'Updates', + submenu: [this.checkForUpdatesMenuItem()], }, ]; return templateDefault; } + + learnMoreMenuItem(): MenuItemConstructorOptions { + return { + label: 'Help', + submenu: [ + { + label: 'Github', + click: () => + shell.openExternal('https://github.com/onflowser/flowser'), + }, + { + label: 'Website', + click: () => shell.openExternal('https://flowser.dev'), + }, + { + label: 'Discord', + click: () => shell.openExternal('https://discord.gg/JAnzkV2J'), + }, + ], + }; + } + + checkForUpdatesMenuItem(): MenuItemConstructorOptions { + return { + label: 'Check for updates', + click: async (menuItem) => { + menuItem.enabled = false; + try { + await this.appUpdateService.checkForUpdatesAndNotify({ + silent: false, + targetWindow: this.mainWindow, + }); + } finally { + menuItem.enabled = true; + } + }, + }; + } } diff --git a/apps/electron/src/main/preload.ts b/apps/electron/src/main/preload.ts index 9133a7922..69313a378 100644 --- a/apps/electron/src/main/preload.ts +++ b/apps/electron/src/main/preload.ts @@ -2,10 +2,25 @@ /* eslint no-unused-vars: off */ import { contextBridge, ipcRenderer, IpcRendererEvent } from 'electron'; -export type Channels = 'ipc-example'; +export type Channels = 'index:get-all'; const electronHandler = { + platformAdapter: { + showDirectoryPicker: () => ipcRenderer.invoke('showDirectoryPicker'), + handleExit: (callback: () => void) => ipcRenderer.on('exit', callback), + handleUpdateDownloadStart: (callback: () => void) => + ipcRenderer.on('update-download-start', callback), + handleUpdateDownloadEnd: (callback: () => void) => + ipcRenderer.on('update-download-end', callback), + handleUpdateDownloadProgress: (callback: (percentage: number) => void) => + ipcRenderer.on('update-download-progress', (event, value) => + callback(value as unknown as number) + ), + }, ipcRenderer: { + invoke(channel: Channels, ...args: unknown[]) { + return ipcRenderer.invoke(channel, ...args); + }, sendMessage(channel: Channels, ...args: unknown[]) { ipcRenderer.send(channel, ...args); }, diff --git a/apps/electron/src/renderer/App.css b/apps/electron/src/renderer/App.css deleted file mode 100644 index 616d9a48a..000000000 --- a/apps/electron/src/renderer/App.css +++ /dev/null @@ -1,62 +0,0 @@ -/* - * @NOTE: Prepend a `~` to css file paths that are in your node_modules - * See https://github.com/webpack-contrib/sass-loader#imports - */ -body { - position: relative; - color: white; - height: 100vh; - background: linear-gradient( - 200.96deg, - #fedc2a -29.09%, - #dd5789 51.77%, - #7a2c9e 129.35% - ); - font-family: sans-serif; - overflow-y: hidden; - display: flex; - justify-content: center; - align-items: center; -} - -button { - background-color: white; - padding: 10px 20px; - border-radius: 10px; - border: none; - appearance: none; - font-size: 1.3rem; - box-shadow: 0px 8px 28px -6px rgba(24, 39, 75, 0.12), - 0px 18px 88px -4px rgba(24, 39, 75, 0.14); - transition: all ease-in 0.1s; - cursor: pointer; - opacity: 0.9; -} - -button:hover { - transform: scale(1.05); - opacity: 1; -} - -li { - list-style: none; -} - -a { - text-decoration: none; - height: fit-content; - width: fit-content; - margin: 10px; -} - -a:hover { - opacity: 1; - text-decoration: none; -} - -.Hello { - display: flex; - justify-content: center; - align-items: center; - margin: 20px 0; -} diff --git a/apps/electron/src/renderer/App.scss b/apps/electron/src/renderer/App.scss new file mode 100644 index 000000000..12deab970 --- /dev/null +++ b/apps/electron/src/renderer/App.scss @@ -0,0 +1,40 @@ +@import "../../../../packages/ui/src/styles/colors"; +@import "../../../../packages/ui/src/styles/typography"; + +* { + margin: 0; + padding: 0; + box-sizing: content-box; + outline: none; + + &:focus-visible { + outline: 2px solid $blue; + } +} + +html, +body { + background: $gray-110; + font-family: $font-family-inter; + font-size: $font-size-normal; + font-style: normal; + font-weight: normal; + letter-spacing: $character-spacing-small; + line-height: $line-spacing-m; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + + min-height: 100%; + height: 100%; + + scroll-behavior: smooth; + + &::-webkit-scrollbar { + display: none; + } +} + +a { + text-decoration: none; + color: $blue; +} diff --git a/apps/electron/src/renderer/App.tsx b/apps/electron/src/renderer/App.tsx index e7b8ee100..35e3d37a9 100644 --- a/apps/electron/src/renderer/App.tsx +++ b/apps/electron/src/renderer/App.tsx @@ -1,39 +1,117 @@ -import icon from '../../assets/icon.svg'; -import './App.css'; +import React, { useState } from 'react'; +import { ExitLoader } from './components/loaders/ExitLoader'; +import { ConfirmDialogProvider } from '@onflowser/ui/src/contexts/confirm-dialog.context'; +import { FilePickerProvider } from '@onflowser/ui/src/contexts/platform-adapter.context'; +import { useAnalytics } from '@onflowser/ui/src/hooks/use-analytics'; +import { ConsentDialog } from '@onflowser/ui/src/common/overlays/dialogs/consent/ConsentDialog'; +import { Toaster } from 'react-hot-toast'; +import './App.scss'; +import { ServiceRegistryProvider } from '@onflowser/ui/src/contexts/service-registry.context'; +import { + FlowAccount, + FlowAccountStorage, + FlowBlock, + FlowContract, + FlowEvent, + FlowTransaction, +} from '@onflowser/api'; +import { FlowserUsageRequirements } from '@onflowser/ui/src/common/misc/FlowserUsageRequirements/FlowserUsageRequirements'; +import { IpcIndex } from './ipc-index'; +import { FlowserRouter } from './router'; +import { UpdateLoader } from './components/loaders/UpdateLoader'; +import { AnalyticsService } from '../services/analytics.service'; +import { FlowserIndexes } from '../main/flowser'; -export default function App() { +const indexes: FlowserIndexes = { + accountStorage: new IpcIndex('accountStorage'), + contract: new IpcIndex('contract'), + transaction: new IpcIndex('transaction'), + account: new IpcIndex('account'), + block: new IpcIndex('block'), + event: new IpcIndex('event'), +}; + +const analyticsService = new AnalyticsService(); + +export function App() { + const [isExiting, setIsExiting] = useState(false); + const [appUpdateDownloadPercentage, setAppUpdateDownloadPercentage] = + useState(0); + const isUpdating = ![0, 100].includes(appUpdateDownloadPercentage); + + window.electron.platformAdapter.handleExit(() => { + setIsExiting(true); + }); + + window.electron.platformAdapter.handleUpdateDownloadProgress((percentage) => { + setAppUpdateDownloadPercentage(percentage); + }); + + window.electron.platformAdapter.handleUpdateDownloadStart(() => { + setAppUpdateDownloadPercentage(0); + }); + window.electron.platformAdapter.handleUpdateDownloadEnd(() => { + setAppUpdateDownloadPercentage(100); + }); + + return ( + <> + {isExiting && } + {isUpdating && ( + + )} + + + + + {/**/} + + + + + + + + ); +} + +function ConsentAnalytics() { + const { isConsented, setIsConsented } = useAnalytics(); + if (isConsented !== undefined) { + return null; + } return ( - + ); } diff --git a/apps/electron/src/renderer/components/loaders/ExitLoader.tsx b/apps/electron/src/renderer/components/loaders/ExitLoader.tsx new file mode 100644 index 000000000..24ee446dc --- /dev/null +++ b/apps/electron/src/renderer/components/loaders/ExitLoader.tsx @@ -0,0 +1,15 @@ +import { Spinner } from "../../../../../../packages/ui/src/common/loaders/Spinner/Spinner"; +import React, { ReactElement } from "react"; +import classes from "./Loader.module.scss"; + +export function ExitLoader(): ReactElement { + return ( + <> +
+
+ + Flowser is exiting +
+ + ); +} diff --git a/apps/electron/src/renderer/components/loaders/Loader.module.scss b/apps/electron/src/renderer/components/loaders/Loader.module.scss new file mode 100644 index 000000000..f95671c6a --- /dev/null +++ b/apps/electron/src/renderer/components/loaders/Loader.module.scss @@ -0,0 +1,40 @@ +@import "../../../../../../packages/ui/src/styles/colors"; +@import "../../../../../../packages/ui/src/styles/spacings"; +@import '../../../../../../packages/ui/src/styles/animations'; +@import "../../../../../../packages/ui/src/styles/typography"; + +.background { + @include fadeInAnimation(0.4s); + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: $gray-110; + opacity: 0.5; +} + +.root { + @include fadeInAnimation(0.4s); + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + backdrop-filter: blur(2px); + z-index: 100; + + .loader { + @include pulse(1s) + } + + .title { + color: $color-light-gray; + font-size: $font-size-large; + margin-top: $spacing-base; + } +} diff --git a/apps/electron/src/renderer/components/loaders/UpdateLoader.tsx b/apps/electron/src/renderer/components/loaders/UpdateLoader.tsx new file mode 100644 index 000000000..44fa11238 --- /dev/null +++ b/apps/electron/src/renderer/components/loaders/UpdateLoader.tsx @@ -0,0 +1,23 @@ +import { Spinner } from "../../../../../../packages/ui/src/common/loaders/Spinner/Spinner"; +import React, { ReactElement } from "react"; +import classes from "./Loader.module.scss"; + +export type UpdateLoaderProps = { + loadingPercentage: number; +}; + +export function UpdateLoader({ + loadingPercentage, +}: UpdateLoaderProps): ReactElement { + return ( + <> +
+
+ + + Installing update ({Math.round(loadingPercentage)}%) + +
+ + ); +} diff --git a/apps/electron/src/renderer/index.tsx b/apps/electron/src/renderer/index.tsx index 064a05784..453fd2165 100644 --- a/apps/electron/src/renderer/index.tsx +++ b/apps/electron/src/renderer/index.tsx @@ -1,13 +1,6 @@ import { createRoot } from 'react-dom/client'; -import App from './App'; +import { App } from './App'; const container = document.getElementById('root') as HTMLElement; const root = createRoot(container); root.render(); - -// calling IPC exposed from preload script -window.electron.ipcRenderer.once('ipc-example', (arg) => { - // eslint-disable-next-line no-console - console.log(arg); -}); -window.electron.ipcRenderer.sendMessage('ipc-example', ['ping']); diff --git a/apps/electron/src/renderer/ipc-index.ts b/apps/electron/src/renderer/ipc-index.ts new file mode 100644 index 000000000..af3b47432 --- /dev/null +++ b/apps/electron/src/renderer/ipc-index.ts @@ -0,0 +1,29 @@ +import { IdentifiableResource } from '@onflowser/api'; +import { InMemoryIndex } from '@onflowser/core'; +import { FlowserIndexes } from '../main/flowser'; + +export class IpcIndex< + Resource extends IdentifiableResource +> extends InMemoryIndex { + constructor(private readonly indexName: keyof FlowserIndexes) { + super(); + + // TODO(restructure): Maybe manually handle this from react app instead + this.syncOnInterval(); + } + + syncOnInterval() { + setInterval(() => this.sync(), 1000); + } + + async sync() { + const resources = await window.electron.ipcRenderer.invoke( + 'index:get-all', + this.indexName + ); + + await Promise.allSettled( + resources.map((resource: Resource) => this.add(resource)) + ); + } +} diff --git a/apps/electron/src/renderer/router.tsx b/apps/electron/src/renderer/router.tsx new file mode 100644 index 000000000..40cbf374b --- /dev/null +++ b/apps/electron/src/renderer/router.tsx @@ -0,0 +1,319 @@ +import React, { ReactElement, ReactNode, useEffect } from 'react'; +import { + createHashRouter, + Navigate, + Outlet, + RouteObject, + RouterProvider, + useLocation, + useParams, +} from 'react-router-dom'; +import { ProjectLayout } from '@onflowser/ui/src/common/layouts/ProjectLayout/ProjectLayout'; +import { ProjectsManagerProvider } from '@onflowser/ui/src/contexts/projects.context'; +import { InteractionsPage } from '@onflowser/ui/src/interactions/InteractionsPage'; +import { InteractionRegistryProvider } from '@onflowser/ui/src/interactions/contexts/interaction-registry.context'; +import { ProjectSettings } from '@onflowser/ui/src/projects/ProjectSettings/ProjectSettings'; +import { TransactionsTable } from '@onflowser/ui/src/transactions/TransactionsTable/TransactionsTable'; +import { TransactionDetails } from '@onflowser/ui/src/transactions/TransactionDetails/TransactionDetails'; +import { BlockDetails } from '@onflowser/ui/src/blocks/BlockDetails/BlockDetails'; +import { BlocksTable } from '@onflowser/ui/src/blocks/BlocksTable/BlocksTable'; +import { AccountDetails } from '@onflowser/ui/src/accounts/AccountDetails/AccountDetails'; +import { AccountsTable } from '@onflowser/ui/src/accounts/AccountsTable/AccountsTable'; +import { ProjectListPage } from '@onflowser/ui/src/projects/ProjectListPage/ProjectListPage'; +import { ContractsTable } from '@onflowser/ui/src/contracts/ContractsTable/ContractsTable'; +import { ContractDetails } from '@onflowser/ui/src/contracts/ContractDetails/ContractDetails'; +import { EventsTable } from '@onflowser/ui/src/events/EventsTable/EventsTable'; +import { createCrumbHandle } from '@onflowser/ui/src/common/misc/Breadcrumbs/Breadcrumbs'; +import { TemplatesRegistryProvider } from '@onflowser/ui/src/interactions/contexts/templates.context'; +import { BasicLayout } from '@onflowser/ui/src/common/layouts/BasicLayout/BasicLayout'; +import { EventDetails } from '@onflowser/ui/src/events/EventDetails/EventDetails'; +import { FlowConfigProvider } from '@onflowser/ui/src/contexts/flow.context'; +import { SnapshotsManagerProvider } from '@onflowser/ui/src/contexts/snapshots.context'; +import FullScreenLoading from '@onflowser/ui/src/common/loaders/FullScreenLoading/FullScreenLoading'; +import { useServiceRegistry } from '@onflowser/ui/src/contexts/service-registry.context'; +import { AnalyticEvent } from '@onflowser/ui/src/hooks/use-analytics'; +import './App.scss'; +import { + useGetAccounts, + useGetBlocks, + useGetContracts, + useGetEvents, + useGetTransactions, +} from '@onflowser/ui/src/api'; + +function BrowserRouterEvents(props: { children: ReactNode }): ReactElement { + const location = useLocation(); + const { analyticsService } = useServiceRegistry(); + + useEffect(() => { + analyticsService.track(AnalyticEvent.PAGE_VIEW, { + location, + }); + }, [location]); + + useEffect(() => { + // scroll to the top on every route change + window.scrollTo(0, 0); + }, [location]); + + return <>{props.children}; +} + +function ProjectSettingsPage() { + const { projectId } = useParams(); + + return ; +} + +function TransactionsTablePage() { + const { data } = useGetTransactions(); + + if (!data) { + return ; + } + + return ; +} + +function TransactionDetailsPage() { + const { transactionId } = useParams(); + + return ; +} + +function BlocksTablePage() { + const { data } = useGetBlocks(); + + if (!data) { + return ; + } + + return ; +} + +function BlockDetailsPage() { + const { blockId } = useParams(); + + return ; +} + +export function AccountsTablePage() { + const { data } = useGetAccounts(); + + if (!data) { + return ; + } + + return ; +} + +function AccountDetailsPage() { + const { accountId } = useParams(); + + return ; +} + +function ContractsTablePage() { + const { data } = useGetContracts(); + + if (!data) { + return ; + } + + return ; +} + +function ContractDetailsPage() { + const { contractId } = useParams(); + + return ; +} + +function EventsTablePage() { + const { data } = useGetEvents(); + + if (!data) { + return ; + } + + return ; +} + +function EventDetailsPage() { + const { eventId } = useParams(); + + return ; +} + +const routes: RouteObject[] = [ + { + index: true, + element: , + }, + { + path: 'projects', + element: ( + + + + + + + + + + ), + handle: createCrumbHandle({ + crumbName: 'Projects', + }), + children: [ + { + index: true, + element: , + }, + { + path: 'create', + element: ( + + + + ), + handle: createCrumbHandle({ + crumbName: 'Create', + }), + }, + { + path: ':projectId', + element: ( + + + + + + + + ), + children: [ + { + index: true, + element: , + }, + { + path: 'settings', + element: , + }, + { + path: 'accounts', + handle: createCrumbHandle({ + crumbName: 'Accounts', + }), + children: [ + { + index: true, + element: , + }, + { + path: ':accountId', + element: , + handle: createCrumbHandle({ + crumbName: 'Details', + }), + }, + ], + }, + { + path: 'blocks', + handle: createCrumbHandle({ + crumbName: 'Blocks', + }), + children: [ + { + index: true, + element: , + }, + { + path: ':blockId', + element: , + handle: createCrumbHandle({ + crumbName: 'Details', + }), + }, + ], + }, + { + path: 'transactions', + handle: createCrumbHandle({ + crumbName: 'Transactions', + }), + children: [ + { + index: true, + element: , + }, + { + path: ':transactionId', + element: , + handle: createCrumbHandle({ + crumbName: 'Details', + }), + }, + ], + }, + { + path: 'contracts', + handle: createCrumbHandle({ + crumbName: 'Contracts', + }), + children: [ + { + index: true, + element: , + }, + { + path: ':contractId', + element: , + handle: createCrumbHandle({ + crumbName: 'Details', + }), + }, + ], + }, + { + path: 'events', + handle: createCrumbHandle({ + crumbName: 'Events', + }), + children: [ + { + index: true, + element: , + }, + { + path: ':eventId', + element: , + handle: createCrumbHandle({ + crumbName: 'Details', + }), + }, + ], + }, + { + path: 'interactions', + children: [ + { + index: true, + element: , + }, + ], + }, + ], + }, + ], + }, +]; + +const hashRouter = createHashRouter(routes); + +export function FlowserRouter(): ReactElement { + return ; +} diff --git a/apps/electron/src/services/analytics.service.ts b/apps/electron/src/services/analytics.service.ts new file mode 100644 index 000000000..952112fa3 --- /dev/null +++ b/apps/electron/src/services/analytics.service.ts @@ -0,0 +1,45 @@ +import mixpanel, { Dict } from 'mixpanel-browser'; +import { FingerprintService } from './fingerprint.service'; + +const enableAnalytics = process.env.NODE_ENV === "production"; + +export class AnalyticsService { + private fingerprintService: FingerprintService; + + constructor() { + this.fingerprintService = new FingerprintService(); + this.init(); + } + async init(): Promise { + mixpanel.init("1b358339dc3d7476217983016b83fcab", { + debug: !enableAnalytics, + }); + + try { + mixpanel.identify(await this.fingerprintService.getUserFingerprintId()); + } catch (e) { + console.error("Failed to identify user", e); + } + } + + disable(): void { + mixpanel.opt_out_tracking(); + } + + enable(): void { + mixpanel.opt_in_tracking(); + } + + track(event: string, properties: Dict = {}): void { + if (!enableAnalytics) { + console.log("Analytics disabled. Skipping event ", event); + return; + } + + try { + mixpanel.track(event, properties); + } catch (e) { + console.error("Mixpanel error:", e); + } + } +} diff --git a/apps/electron/src/services/app-update.service.ts b/apps/electron/src/services/app-update.service.ts new file mode 100644 index 000000000..55884d042 --- /dev/null +++ b/apps/electron/src/services/app-update.service.ts @@ -0,0 +1,80 @@ +import { autoUpdater } from 'electron-updater'; +import { BrowserWindow, dialog } from 'electron'; + +export type RegisterListenersOptions = { + silent?: boolean; + targetWindow: BrowserWindow; +}; + +export class AppUpdateService { + async checkForUpdatesAndNotify( + options: RegisterListenersOptions + ): Promise { + this.registerListeners(options); + await autoUpdater.checkForUpdatesAndNotify(); + } + + private registerListeners(options?: RegisterListenersOptions) { + const { webContents } = options?.targetWindow ?? {}; + autoUpdater.autoDownload = false; + + autoUpdater.on('checking-for-update', () => { + console.log('Checking for update...'); + }); + + autoUpdater.on('download-progress', (progress) => { + console.log(`Download speed ${progress.bytesPerSecond}`); + console.log( + `Downloaded ${progress.percent}% (${progress.transferred}/${progress.total})` + ); + webContents?.send('update-download-progress', progress.percent); + }); + + autoUpdater.once('update-available', () => { + dialog + .showMessageBox({ + type: 'info', + title: 'Found Updates', + message: 'Found updates, do you want update now?', + buttons: ['Yes', 'No'], + }) + .then((buttonIndex) => { + if (buttonIndex.response === 0) { + webContents?.send('update-download-start'); + autoUpdater.downloadUpdate(); + } + }); + }); + + autoUpdater.once('update-not-available', () => { + if (!options?.silent) { + dialog.showMessageBox({ + title: 'No Updates', + message: 'Current version is up-to-date.', + }); + } + }); + + autoUpdater.once('update-downloaded', () => { + webContents?.send('update-download-end'); + dialog + .showMessageBox({ + title: 'Install Updates', + message: 'Updates downloaded, application will be quit for update...', + }) + .then(() => { + setImmediate(() => autoUpdater.quitAndInstall()); + }); + }); + + autoUpdater.on('error', (error) => { + console.log('Error in auto-updater:', error); + if (!options?.silent) { + dialog.showErrorBox( + 'Update error', + error == null ? 'unknown' : (error.stack || error).toString() + ); + } + }); + } +} diff --git a/apps/electron/src/services/fingerprint.service.ts b/apps/electron/src/services/fingerprint.service.ts new file mode 100644 index 000000000..6c02d750b --- /dev/null +++ b/apps/electron/src/services/fingerprint.service.ts @@ -0,0 +1,15 @@ +import FingerprintJS from '@fingerprintjs/fingerprintjs'; + +export class FingerprintService { + // Alternative fingerprinting idea: + // At the very beginning generate an uuid and store it permanently. + // Every subsequent time the app is opened, reuse the persisted uuid. + async getUserFingerprintId(): Promise { + const fingerprint = await FingerprintJS.load(); + const { visitorId, confidence } = await fingerprint.get({ debug: false }); + console.log( + `Identifying user ${visitorId} with confidence ${confidence.score}` + ); + return visitorId; + } +} diff --git a/apps/electron/src/services/logger.service.ts b/apps/electron/src/services/logger.service.ts new file mode 100644 index 000000000..ab45694ca --- /dev/null +++ b/apps/electron/src/services/logger.service.ts @@ -0,0 +1,31 @@ +import { LoggerService } from "@nestjs/common"; +import logger from "electron-log"; + +// Log file location: +// - Linux: ~/.config/{app name}/logs/{process type}.log +// - macOS: ~/Library/Logs/{app name}/{process type}.log +// - Windows: %USERPROFILE%\AppData\Roaming\{app name}\logs\{process type}.log + +// See https://github.com/megahertz/electron-log + +export class Logger implements LoggerService { + log(message: unknown, ...optionalParams: unknown[]): void { + logger.log(message, ...optionalParams); + } + + error(message: unknown, ...optionalParams: unknown[]): void { + logger.error(message, ...optionalParams); + } + + warn(message: unknown, ...optionalParams: unknown[]): void { + logger.warn(message, ...optionalParams); + } + + debug?(message: unknown, ...optionalParams: unknown[]): void { + logger.debug(message, ...optionalParams); + } + + verbose?(message: unknown, ...optionalParams: unknown[]): void { + logger.verbose(message, ...optionalParams); + } +} diff --git a/apps/electron/src/services/sentry-main.service.ts b/apps/electron/src/services/sentry-main.service.ts new file mode 100644 index 000000000..2feb11b52 --- /dev/null +++ b/apps/electron/src/services/sentry-main.service.ts @@ -0,0 +1,26 @@ +import * as Sentry from '@sentry/electron'; +import { FingerprintService } from './fingerprint.service'; + +const enableAnalytics = process.env.NODE_ENV === 'production'; + +export class SentryMainService { + private fingerprintService: FingerprintService; + constructor() { + this.fingerprintService = new FingerprintService(); + } + async init(): Promise { + if (!enableAnalytics) { + return; + } + Sentry.init({ + dsn: 'https://38a653b591734e0bbe2695a321f554d9@o1430444.ingest.sentry.io/6781494', + }); + try { + Sentry.setUser({ + id: await this.fingerprintService.getUserFingerprintId(), + }); + } catch (e) { + console.log('Failed to identify user:', e); + } + } +} diff --git a/apps/electron/src/services/sentry-renderer.service.ts b/apps/electron/src/services/sentry-renderer.service.ts new file mode 100644 index 000000000..be06022c9 --- /dev/null +++ b/apps/electron/src/services/sentry-renderer.service.ts @@ -0,0 +1,30 @@ +import * as Sentry from '@sentry/electron/renderer'; +import { FingerprintService } from './fingerprint.service'; + +const enableAnalytics = process.env.NODE_ENV === 'production'; + +export class SentryRendererService { + private fingerprintService: FingerprintService; + constructor() { + this.fingerprintService = new FingerprintService(); + } + async init(): Promise { + if (!enableAnalytics) { + return; + } + Sentry.init({ + dsn: 'https://38a653b591734e0bbe2695a321f554d9@o1430444.ingest.sentry.io/6781494', + }); + try { + Sentry.setUser({ + id: await this.fingerprintService.getUserFingerprintId(), + }); + } catch (e) { + console.log('Failed to identify user:', e); + } + } + + captureError(error: unknown, options?: Record): void { + Sentry.captureException(error, options); + } +} From 8a88d8dda6a840c5248a2f717749ce4ca6e8bf2a Mon Sep 17 00:00:00 2001 From: Bart Date: Sun, 22 Oct 2023 11:56:07 +0200 Subject: [PATCH 025/100] add workspace management logic --- apps/electron/.eslintrc.js | 4 + apps/electron/src/main/ipc/events.ts | 10 ++ apps/electron/src/main/ipc/handlers.ts | 42 +++++++ apps/electron/src/main/main.ts | 20 ++-- apps/electron/src/main/preload.ts | 21 +++- apps/electron/src/renderer/App.tsx | 4 +- apps/electron/src/renderer/ipc-index.ts | 2 +- apps/electron/src/renderer/router.tsx | 14 +-- .../flowser-app.service.ts} | 44 +++++--- .../src/services/workspace.service.ts | 86 ++++++++++++++ packages/api/src/resources.ts | 2 +- packages/nodejs/src/index.ts | 2 + .../AccountStorage/AccountStorage.tsx | 2 +- packages/ui/src/api.ts | 10 +- ...{ProjectLayout.tsx => WorkspaceLayout.tsx} | 2 +- packages/ui/src/common/links/ProjectLink.tsx | 4 +- .../common/misc/Breadcrumbs/Breadcrumbs.tsx | 4 +- .../misc/SideNavigation/SideNavigation.tsx | 10 +- .../dialogs/snapshot/SnapshotDialog.tsx | 4 +- packages/ui/src/contexts/flow.context.tsx | 10 +- .../src/contexts/service-registry.context.tsx | 20 ++-- .../ui/src/contexts/snapshots.context.tsx | 16 +-- ...ects.context.tsx => workspace.context.tsx} | 106 +++++++++--------- packages/ui/src/hooks/use-analytics.ts | 4 +- .../ui/src/hooks/use-current-project-id.ts | 10 +- .../ui/src/projects/FormFields/FormFields.tsx | 6 +- .../ProjectListPage/ProjectListPage.tsx | 16 ++- .../ProjectSettings/ProjectSettings.tsx | 32 +++--- 28 files changed, 345 insertions(+), 162 deletions(-) create mode 100644 apps/electron/src/main/ipc/events.ts create mode 100644 apps/electron/src/main/ipc/handlers.ts rename apps/electron/src/{main/flowser.ts => services/flowser-app.service.ts} (78%) create mode 100644 apps/electron/src/services/workspace.service.ts rename packages/ui/src/common/layouts/ProjectLayout/{ProjectLayout.tsx => WorkspaceLayout.tsx} (94%) rename packages/ui/src/contexts/{projects.context.tsx => workspace.context.tsx} (50%) diff --git a/apps/electron/.eslintrc.js b/apps/electron/.eslintrc.js index 9f98c6d41..b8446213c 100644 --- a/apps/electron/.eslintrc.js +++ b/apps/electron/.eslintrc.js @@ -14,6 +14,10 @@ module.exports = { 'no-unused-vars': 'off', '@typescript-eslint/no-unused-vars': 'error', 'import/prefer-default-export': 'off', + 'class-methods-use-this': 'off', + 'lines-between-class-members': 'off', + 'no-use-before-define': 'off', + 'max-classes-per-file': 'off', }, parserOptions: { ecmaVersion: 2022, diff --git a/apps/electron/src/main/ipc/events.ts b/apps/electron/src/main/ipc/events.ts new file mode 100644 index 000000000..dcb6232e3 --- /dev/null +++ b/apps/electron/src/main/ipc/events.ts @@ -0,0 +1,10 @@ +export enum FlowserIpcEvent { + WORKSPACES_CLOSE = 'WORKSPACES_CLOSE', + WORKSPACES_OPEN = 'WORKSPACES_OPEN', + WORKSPACES_CREATE = 'WORKSPACES_CREATE', + WORKSPACES_UPDATE = 'WORKSPACES_UPDATE', + WORKSPACES_LIST = 'WORKSPACES_LIST', + WORKSPACES_FIND_BY_ID = 'WORKSPACES_FIND_BY_ID', + WORKSPACES_REMOVE = 'WORKSPACES_REMOVE', + WORKSPACES_DEFAULT_SETTINGS = 'WORKSPACES_DEFAULT_SETTINGS', +} diff --git a/apps/electron/src/main/ipc/handlers.ts b/apps/electron/src/main/ipc/handlers.ts new file mode 100644 index 000000000..36ec88e19 --- /dev/null +++ b/apps/electron/src/main/ipc/handlers.ts @@ -0,0 +1,42 @@ +import { ipcMain, IpcMainInvokeEvent } from 'electron'; +import { FlowserWorkspace } from '@onflowser/api'; +import { FlowserIpcEvent } from './events'; +import { FlowserAppService } from '../../services/flowser-app.service'; + +export function registerHandlers(flowserAppService: FlowserAppService) { + const { workspaceService } = flowserAppService; + + ipcMain.handle(FlowserIpcEvent.WORKSPACES_LIST, () => + workspaceService.list(), + ); + ipcMain.handle( + FlowserIpcEvent.WORKSPACES_REMOVE, + (e: IpcMainInvokeEvent, id: string) => workspaceService.remove(id), + ); + ipcMain.handle( + FlowserIpcEvent.WORKSPACES_CLOSE, + (e: IpcMainInvokeEvent, id: string) => workspaceService.close(id), + ); + ipcMain.handle( + FlowserIpcEvent.WORKSPACES_OPEN, + (e: IpcMainInvokeEvent, id: string) => workspaceService.open(id), + ); + ipcMain.handle( + FlowserIpcEvent.WORKSPACES_CREATE, + (e: IpcMainInvokeEvent, createdWorkspace: FlowserWorkspace) => + workspaceService.create(createdWorkspace), + ); + ipcMain.handle( + FlowserIpcEvent.WORKSPACES_UPDATE, + (e: IpcMainInvokeEvent, updatedWorkspace: FlowserWorkspace) => + workspaceService.update(updatedWorkspace), + ); + ipcMain.handle( + FlowserIpcEvent.WORKSPACES_FIND_BY_ID, + (e: IpcMainInvokeEvent, id: string) => workspaceService.findById(id), + ); + ipcMain.handle( + FlowserIpcEvent.WORKSPACES_DEFAULT_SETTINGS, + (e: IpcMainInvokeEvent) => workspaceService.getDefaultSettings(), + ); +} diff --git a/apps/electron/src/main/main.ts b/apps/electron/src/main/main.ts index f21deb67e..86011eb12 100644 --- a/apps/electron/src/main/main.ts +++ b/apps/electron/src/main/main.ts @@ -21,7 +21,11 @@ import { autoUpdater } from 'electron-updater'; import log from 'electron-log'; import MenuBuilder from './menu'; import { resolveHtmlPath } from './util'; -import { Flowser, FlowserIndexes } from './flowser'; +import { + FlowserAppService, + FlowserIndexes, +} from '../services/flowser-app.service'; +import { registerHandlers } from './ipc/handlers'; class AppUpdater { constructor() { @@ -36,14 +40,12 @@ let mainWindow: BrowserWindow | null = null; ipcMain.handle('showDirectoryPicker', showDirectoryPicker); ipcMain.handle('index:get-all', getAllFromIndex); -Flowser.create().configure(); -Flowser.create().startProcessing(); +const flowserAppService = FlowserAppService.create(); async function getAllFromIndex(event: IpcMainInvokeEvent, ...args: any[]) { - console.log('Received event', event, args); const [indexName] = args; - const indexes = Flowser.create().getIndexes(); + const { indexes } = FlowserAppService.create(); if (typeof indexName !== 'string') { throw new Error('Invalid argument'); @@ -51,9 +53,8 @@ async function getAllFromIndex(event: IpcMainInvokeEvent, ...args: any[]) { if (indexName in indexes) { return await indexes[indexName as keyof FlowserIndexes].findAll(); - } else { - throw new Error('Index not found: ' + indexName); } + throw new Error(`Index not found: ${indexName}`); } async function showDirectoryPicker() { @@ -86,7 +87,7 @@ const installExtensions = async () => { return installer .default( extensions.map((name) => installer[name]), - forceDownload + forceDownload, ) .catch(console.log); }; @@ -165,6 +166,9 @@ app .whenReady() .then(() => { createWindow(); + registerHandlers(flowserAppService); + flowserAppService.configure(); + flowserAppService.startProcessing(); app.on('activate', () => { // On macOS it's common to re-create a window in the app when the // dock icon is clicked and there are no other windows open. diff --git a/apps/electron/src/main/preload.ts b/apps/electron/src/main/preload.ts index 69313a378..207e36010 100644 --- a/apps/electron/src/main/preload.ts +++ b/apps/electron/src/main/preload.ts @@ -1,6 +1,8 @@ // Disable no-unused-vars, broken for spread args /* eslint no-unused-vars: off */ import { contextBridge, ipcRenderer, IpcRendererEvent } from 'electron'; +import { FlowserWorkspace } from '@onflowser/api'; +import { FlowserIpcEvent } from './ipc/events'; export type Channels = 'index:get-all'; @@ -14,7 +16,7 @@ const electronHandler = { ipcRenderer.on('update-download-end', callback), handleUpdateDownloadProgress: (callback: (percentage: number) => void) => ipcRenderer.on('update-download-progress', (event, value) => - callback(value as unknown as number) + callback(value as unknown as number), ), }, ipcRenderer: { @@ -37,6 +39,23 @@ const electronHandler = { ipcRenderer.once(channel, (_event, ...args) => func(...args)); }, }, + workspaces: { + open: (id: string) => + ipcRenderer.invoke(FlowserIpcEvent.WORKSPACES_OPEN, id), + close: (id: string) => + ipcRenderer.invoke(FlowserIpcEvent.WORKSPACES_CLOSE, id), + list: () => ipcRenderer.invoke(FlowserIpcEvent.WORKSPACES_LIST), + create: (createdWorkspace: FlowserWorkspace) => + ipcRenderer.invoke(FlowserIpcEvent.WORKSPACES_CREATE, createdWorkspace), + update: (updatedWorkspace: FlowserWorkspace) => + ipcRenderer.invoke(FlowserIpcEvent.WORKSPACES_UPDATE, updatedWorkspace), + findById: (id: string) => + ipcRenderer.invoke(FlowserIpcEvent.WORKSPACES_FIND_BY_ID, id), + remove: (id: string) => + ipcRenderer.invoke(FlowserIpcEvent.WORKSPACES_REMOVE, id), + getDefaultSettings: () => + ipcRenderer.invoke(FlowserIpcEvent.WORKSPACES_DEFAULT_SETTINGS), + }, }; contextBridge.exposeInMainWorld('electron', electronHandler); diff --git a/apps/electron/src/renderer/App.tsx b/apps/electron/src/renderer/App.tsx index 35e3d37a9..9807c2c9e 100644 --- a/apps/electron/src/renderer/App.tsx +++ b/apps/electron/src/renderer/App.tsx @@ -20,7 +20,7 @@ import { IpcIndex } from './ipc-index'; import { FlowserRouter } from './router'; import { UpdateLoader } from './components/loaders/UpdateLoader'; import { AnalyticsService } from '../services/analytics.service'; -import { FlowserIndexes } from '../main/flowser'; +import { FlowserIndexes } from '../services/flowser-app.service'; const indexes: FlowserIndexes = { accountStorage: new IpcIndex('accountStorage'), @@ -72,7 +72,7 @@ export function App() { processOutputIndex: undefined as never, monitoringService: undefined as never, analyticsService, - projectsService: undefined as never, + workspaceService: window.electron.workspaces, snapshotService: undefined as never, walletService: undefined as never, }} diff --git a/apps/electron/src/renderer/ipc-index.ts b/apps/electron/src/renderer/ipc-index.ts index af3b47432..4cd46b8e1 100644 --- a/apps/electron/src/renderer/ipc-index.ts +++ b/apps/electron/src/renderer/ipc-index.ts @@ -1,6 +1,6 @@ import { IdentifiableResource } from '@onflowser/api'; import { InMemoryIndex } from '@onflowser/core'; -import { FlowserIndexes } from '../main/flowser'; +import { FlowserIndexes } from '../services/flowser-app.service'; export class IpcIndex< Resource extends IdentifiableResource diff --git a/apps/electron/src/renderer/router.tsx b/apps/electron/src/renderer/router.tsx index 40cbf374b..5d764943f 100644 --- a/apps/electron/src/renderer/router.tsx +++ b/apps/electron/src/renderer/router.tsx @@ -8,8 +8,8 @@ import { useLocation, useParams, } from 'react-router-dom'; -import { ProjectLayout } from '@onflowser/ui/src/common/layouts/ProjectLayout/ProjectLayout'; -import { ProjectsManagerProvider } from '@onflowser/ui/src/contexts/projects.context'; +import { WorkspaceLayout } from '@onflowser/ui/src/common/layouts/ProjectLayout/WorkspaceLayout'; +import { WorkspaceManagerProvider } from '@onflowser/ui/src/contexts/workspace.context'; import { InteractionsPage } from '@onflowser/ui/src/interactions/InteractionsPage'; import { InteractionRegistryProvider } from '@onflowser/ui/src/interactions/contexts/interaction-registry.context'; import { ProjectSettings } from '@onflowser/ui/src/projects/ProjectSettings/ProjectSettings'; @@ -153,7 +153,7 @@ const routes: RouteObject[] = [ { path: 'projects', element: ( - + @@ -161,7 +161,7 @@ const routes: RouteObject[] = [ - + ), handle: createCrumbHandle({ crumbName: 'Projects', @@ -183,15 +183,15 @@ const routes: RouteObject[] = [ }), }, { - path: ':projectId', + path: ':workspaceId', element: ( - + - + ), children: [ { diff --git a/apps/electron/src/main/flowser.ts b/apps/electron/src/services/flowser-app.service.ts similarity index 78% rename from apps/electron/src/main/flowser.ts rename to apps/electron/src/services/flowser-app.service.ts index a0bfb9145..ab0cf4c9b 100644 --- a/apps/electron/src/main/flowser.ts +++ b/apps/electron/src/services/flowser-app.service.ts @@ -17,7 +17,10 @@ import { AsyncIntervalScheduler, FlowInteractionsService, GoBindingsService, + FlowEmulatorService, + ProcessManagerService, } from '@onflowser/nodejs'; +import { WorkspaceService } from './workspace.service'; export type FlowserIndexes = { accountStorage: InMemoryIndex; @@ -28,15 +31,19 @@ export type FlowserIndexes = { account: InMemoryIndex; }; -export class Flowser { - static instance: Flowser; - private readonly flowGatewayService: FlowGatewayService; - private readonly flowIndexerService: FlowIndexerService; - private readonly flowAccountStorageService: FlowAccountStorageService; - private readonly goBindingsService: GoBindingsService; - private readonly flowInteractionsService: FlowInteractionsService; - private readonly logger: IFlowserLogger; - private readonly indexes: FlowserIndexes; +// TODO(restructure): Should this be more like a service registry instead? +export class FlowserAppService { + static instance: FlowserAppService; + public readonly flowGatewayService: FlowGatewayService; + public readonly flowIndexerService: FlowIndexerService; + public readonly flowAccountStorageService: FlowAccountStorageService; + public readonly processManagerService: ProcessManagerService; + public readonly flowEmulatorService: FlowEmulatorService; + public readonly workspaceService: WorkspaceService; + public readonly goBindingsService: GoBindingsService; + public readonly flowInteractionsService: FlowInteractionsService; + public readonly logger: IFlowserLogger; + public readonly indexes: FlowserIndexes; private scheduler: AsyncIntervalScheduler; constructor() { @@ -51,12 +58,17 @@ export class Flowser { accountStorage: new InMemoryIndex(), }; this.flowAccountStorageService = new FlowAccountStorageService( - this.flowGatewayService + this.flowGatewayService, ); this.goBindingsService = new GoBindingsService(); this.flowInteractionsService = new FlowInteractionsService( - this.goBindingsService + this.goBindingsService, + ); + this.processManagerService = new ProcessManagerService(); + this.flowEmulatorService = new FlowEmulatorService( + this.processManagerService, ); + this.workspaceService = new WorkspaceService(this.flowEmulatorService); this.flowIndexerService = new FlowIndexerService( this.logger, this.indexes.transaction, @@ -67,7 +79,7 @@ export class Flowser { this.indexes.accountStorage, this.flowAccountStorageService, this.flowGatewayService, - this.flowInteractionsService + this.flowInteractionsService, ); this.scheduler = new AsyncIntervalScheduler({ name: 'Blockchain processing', @@ -76,17 +88,13 @@ export class Flowser { }); } - static create(): Flowser { + static create(): FlowserAppService { if (!this.instance) { - this.instance = new Flowser() + this.instance = new FlowserAppService(); } return this.instance; } - getIndexes(): FlowserIndexes { - return this.indexes; - } - startProcessing() { return this.scheduler.start(); } diff --git a/apps/electron/src/services/workspace.service.ts b/apps/electron/src/services/workspace.service.ts new file mode 100644 index 000000000..21ba7dbd6 --- /dev/null +++ b/apps/electron/src/services/workspace.service.ts @@ -0,0 +1,86 @@ +import { FlowserWorkspace } from '@onflowser/api'; +import { FlowEmulatorService } from '@onflowser/nodejs'; +import { app } from 'electron'; +import path from 'path'; +import fs from 'fs/promises'; +import { randomUUID } from "crypto"; + +export class WorkspaceService { + private readonly openWorkspaces: Map; + + constructor(private readonly flowEmulatorService: FlowEmulatorService) { + this.openWorkspaces = new Map(); + } + + async close(id: string): Promise { + this.openWorkspaces.delete(id); + } + + async open(id: string): Promise { + const workspace = await this.findById(id); + if (!workspace) { + throw new Error('Workspace not found'); + } + this.openWorkspaces.set(id, workspace); + } + + async list(): Promise { + try { + const file = await fs.readFile(this.getStorageFilePath(), { + encoding: 'utf-8', + }); + return JSON.parse(file) as FlowserWorkspace[]; + } catch (e) { + // TODO(restructure): Return empty list only in case file is not found + return []; + } + } + + async create(createdWorkspace: FlowserWorkspace) { + const existingWorkspaces = await this.list(); + + await this.saveWorkspaces([...existingWorkspaces, createdWorkspace]); + } + + async update(updatedWorkspace: FlowserWorkspace) { + const existingWorkspaces = await this.list(); + + await this.saveWorkspaces( + existingWorkspaces.map((existingWorkspace) => + existingWorkspace.id === updatedWorkspace.id + ? updatedWorkspace + : existingWorkspace, + ), + ); + } + + async findById(id: string): Promise { + const existingWorkspaces = await this.list(); + return existingWorkspaces.find((e) => e.id === id); + } + + async getDefaultSettings(): Promise { + return { + createdAt: new Date(), + updatedAt: new Date(), + deletedAt: undefined, + emulator: this.flowEmulatorService.getDefaultConfig(), + gateway: undefined, + id: randomUUID(), + name: 'My awesome project', + }; + } + + async remove(id: string): Promise { + const existingWorkspaces = await this.list(); + await this.saveWorkspaces(existingWorkspaces.filter((e) => e.id !== id)); + } + + private async saveWorkspaces(workspaces: FlowserWorkspace[]) { + await fs.writeFile(this.getStorageFilePath(), JSON.stringify(workspaces)); + } + + private getStorageFilePath() { + return path.join(app.getPath('userData'), 'flowser.json'); + } +} diff --git a/packages/api/src/resources.ts b/packages/api/src/resources.ts index 19c387a1b..1e19ef56f 100644 --- a/packages/api/src/resources.ts +++ b/packages/api/src/resources.ts @@ -303,7 +303,7 @@ export enum ProcessOutputSource { UNRECOGNIZED = -1, } -export interface FlowserProject extends TimestampedResource { +export interface FlowserWorkspace extends TimestampedResource { id: string; name: string; emulator: FlowEmulatorConfig | undefined; diff --git a/packages/nodejs/src/index.ts b/packages/nodejs/src/index.ts index c44e3bfe9..eeec68f7a 100644 --- a/packages/nodejs/src/index.ts +++ b/packages/nodejs/src/index.ts @@ -4,3 +4,5 @@ export * from "./flow-interactions.service"; export * from "./flow-emulator.service"; export * from "./flow-config.service"; export * from "./flow-cli.service"; +export * from "./processes/process-manager.service" +export * from "./processes/managed-process" diff --git a/packages/ui/src/accounts/AccountStorage/AccountStorage.tsx b/packages/ui/src/accounts/AccountStorage/AccountStorage.tsx index 469f7a150..6390e75f9 100644 --- a/packages/ui/src/accounts/AccountStorage/AccountStorage.tsx +++ b/packages/ui/src/accounts/AccountStorage/AccountStorage.tsx @@ -5,7 +5,7 @@ import { PublicPrivateStorageCard } from "../PublicPrivateStorageCard/PublicPriv import { InternalStorageCard } from "../InternalStorageCard/InternalStorageCard"; import classNames from "classnames"; import classes from "./AccountStorage.module.scss"; -import { scrollableElementId } from "../../common/layouts/ProjectLayout/ProjectLayout"; +import { scrollableElementId } from "../../common/layouts/ProjectLayout/WorkspaceLayout"; import { FlowStorageDomain, FlowAccountStorage } from "@onflowser/api"; type AccountStorageProps = { diff --git a/packages/ui/src/api.ts b/packages/ui/src/api.ts index 963b4a2d1..7f5fc4438 100644 --- a/packages/ui/src/api.ts +++ b/packages/ui/src/api.ts @@ -6,7 +6,7 @@ import { FlowBlock, FlowCliInfo, FlowContract, FlowEvent, - FlowserProject, FlowserUsageRequirement, + FlowserWorkspace, FlowserUsageRequirement, FlowStateSnapshot, FlowTransaction, InteractionTemplate, ManagedProcessOutput, ParsedInteractionOrError @@ -228,13 +228,15 @@ export function useGetAddressIndex(options: { return useSWR("account-index", () => 0); } -export function useGetFlowserProjects(): SWRResponse { - return useSWR("projects", () => []); +export function useGetWorkspaces(): SWRResponse { + const { workspaceService } = useServiceRegistry(); + + return useSWR("workspaces", () =>workspaceService.list()); } export function useGetFlowserProject( id: string -): SWRResponse { +): SWRResponse { return useSWR(`projects/${id}`, () => undefined); } diff --git a/packages/ui/src/common/layouts/ProjectLayout/ProjectLayout.tsx b/packages/ui/src/common/layouts/ProjectLayout/WorkspaceLayout.tsx similarity index 94% rename from packages/ui/src/common/layouts/ProjectLayout/ProjectLayout.tsx rename to packages/ui/src/common/layouts/ProjectLayout/WorkspaceLayout.tsx index 0004d9ccb..635390537 100644 --- a/packages/ui/src/common/layouts/ProjectLayout/ProjectLayout.tsx +++ b/packages/ui/src/common/layouts/ProjectLayout/WorkspaceLayout.tsx @@ -13,7 +13,7 @@ type ProjectLayoutProps = { export const scrollableElementId = "flowser-scroll"; // TODO(restructure): Move this to app folder -export function ProjectLayout(props: ProjectLayoutProps) { +export function WorkspaceLayout(props: ProjectLayoutProps) { const location = useLocation(); const showMargin = !location.pathname.endsWith("interactions"); diff --git a/packages/ui/src/common/links/ProjectLink.tsx b/packages/ui/src/common/links/ProjectLink.tsx index fbea23c46..c4f519e4d 100644 --- a/packages/ui/src/common/links/ProjectLink.tsx +++ b/packages/ui/src/common/links/ProjectLink.tsx @@ -1,13 +1,13 @@ import React from "react"; import { NavLink, NavLinkProps, To } from "react-router-dom"; import { ReactElement } from "react"; -import { useCurrentProjectId } from "../../hooks/use-current-project-id"; +import { useCurrentWorkspaceId } from "../../hooks/use-current-project-id"; type ProjectLinkProps = NavLinkProps; // TODO(restructure): Move this to app folder? export function ProjectLink(props: ProjectLinkProps): ReactElement { - const projectId = useCurrentProjectId(); + const projectId = useCurrentWorkspaceId(); const { to, ...otherProps } = props; return ( @@ -42,7 +42,7 @@ export function SideNavigation(props: SideNavigationProps): ReactElement { to="/" name="Exit" icon={FlowserIcon.Exit} - onClick={switchProject} + onClick={closeWorkspace} />
@@ -55,7 +55,7 @@ function Link(props: { icon: React.FunctionComponent>; onClick?: () => void; }) { - const projectId = useCurrentProjectId(); + const projectId = useCurrentWorkspaceId(); const fullTargetUrl = buildProjectUrl({ projectId, subPath: props.to, diff --git a/packages/ui/src/common/overlays/dialogs/snapshot/SnapshotDialog.tsx b/packages/ui/src/common/overlays/dialogs/snapshot/SnapshotDialog.tsx index 77c15f2be..a57c510fb 100644 --- a/packages/ui/src/common/overlays/dialogs/snapshot/SnapshotDialog.tsx +++ b/packages/ui/src/common/overlays/dialogs/snapshot/SnapshotDialog.tsx @@ -5,7 +5,7 @@ import toast from "react-hot-toast"; import { Input } from "../../../inputs/Input/Input"; import { ActionDialog } from "../action/ActionDialog"; import { useErrorHandler } from "../../../../hooks/use-error-handler"; -import { useCurrentProjectId } from "../../../../hooks/use-current-project-id"; +import { useCurrentWorkspaceId } from "../../../../hooks/use-current-project-id"; import { useServiceRegistry } from "../../../../contexts/service-registry.context"; export type SnapshotDialogProps = { @@ -14,7 +14,7 @@ export type SnapshotDialogProps = { }; export const SnapshotDialog: FC = ({ show, setShow }) => { - const projectId = useCurrentProjectId(); + const projectId = useCurrentWorkspaceId(); const { handleError } = useErrorHandler(SnapshotDialog.name); const { snapshotService } = useServiceRegistry(); const [loading, setLoading] = useState(false); diff --git a/packages/ui/src/contexts/flow.context.tsx b/packages/ui/src/contexts/flow.context.tsx index 4b4352e3a..171f1fb86 100644 --- a/packages/ui/src/contexts/flow.context.tsx +++ b/packages/ui/src/contexts/flow.context.tsx @@ -1,6 +1,6 @@ import React, { createContext, ReactElement, useEffect } from "react"; import * as fcl from "@onflow/fcl"; -import { useProjectManager } from "./projects.context"; +import { useProjectManager } from "./workspace.context"; import { useGetFlowJson } from "../api"; const FlowConfigContext = createContext({}); @@ -13,12 +13,12 @@ export function FlowConfigProvider({ }: { children: ReactElement; }): ReactElement { - const { currentProject } = useProjectManager(); + const { currentWorkspace } = useProjectManager(); const { data: flowJSON } = useGetFlowJson(); useEffect(() => { - if (currentProject && flowJSON) { - const accessNodePort = currentProject.emulator?.restServerPort ?? 8888; + if (currentWorkspace && flowJSON) { + const accessNodePort = currentWorkspace.emulator?.restServerPort ?? 8888; fcl .config({ "app.detail.icon": `http://localhost:6061/icon.png`, @@ -30,7 +30,7 @@ export function FlowConfigProvider({ flowJSON: JSON.parse(flowJSON), }); } - }, [currentProject, flowJSON]); + }, [currentWorkspace, flowJSON]); return ( diff --git a/packages/ui/src/contexts/service-registry.context.tsx b/packages/ui/src/contexts/service-registry.context.tsx index 5ce2144ef..97a9aa6bf 100644 --- a/packages/ui/src/contexts/service-registry.context.tsx +++ b/packages/ui/src/contexts/service-registry.context.tsx @@ -5,7 +5,7 @@ import { FlowBlock, FlowContract, FlowEvent, - FlowserProject, + FlowserWorkspace, FlowStateSnapshot, FlowTransaction, IResourceIndexReader, ManagedProcessOutput @@ -24,13 +24,15 @@ interface ISnapshotService extends IResourceIndexReader { rollback(request: any): Promise; } -interface IProjectService { - remove(projectId: string): Promise; - // TODO(restructure): Can we remove these methods - unUseCurrentProject(): Promise; - useProject(projectId: string): Promise; - getSingle(projectId: string): Promise; - getDefaultProjectInfo(): Promise; +interface IWorkspaceService { + remove(id: string): Promise; + close(id: string): Promise; + create(workspace: FlowserWorkspace): Promise; + update(workspace: FlowserWorkspace): Promise; + open(id: string): Promise; + list(): Promise; + findById(id: string): Promise; + getDefaultSettings(): Promise; } interface IAnalyticsService { @@ -46,7 +48,7 @@ interface IMonitoringService { type ServiceRegistry = { walletService: IWalletService; snapshotService: ISnapshotService; - projectsService: IProjectService; + workspaceService: IWorkspaceService; analyticsService: IAnalyticsService; monitoringService: IMonitoringService; accountIndex: IResourceIndexReader; diff --git a/packages/ui/src/contexts/snapshots.context.tsx b/packages/ui/src/contexts/snapshots.context.tsx index eacad7345..f5e194099 100644 --- a/packages/ui/src/contexts/snapshots.context.tsx +++ b/packages/ui/src/contexts/snapshots.context.tsx @@ -12,7 +12,7 @@ import { useErrorHandler } from "../hooks/use-error-handler"; import { AnalyticEvent, useAnalytics } from "../hooks/use-analytics"; import { FlowUtils } from "../utils/flow-utils"; import { SnapshotDialog } from "../common/overlays/dialogs/snapshot/SnapshotDialog"; -import { useProjectManager } from "./projects.context"; +import { useProjectManager } from "./workspace.context"; import { FlowBlock, FlowStateSnapshot } from "@onflowser/api"; import { useServiceRegistry } from "./service-registry.context"; import { useGetBlocks, useGetStateSnapshots } from "../api"; @@ -36,7 +36,7 @@ export function SnapshotsManagerProvider({ const { track } = useAnalytics(); const { handleError } = useErrorHandler(SnapshotsManagerProvider.name); const { showDialog } = useConfirmDialog(); - const { currentProject } = useProjectManager(); + const { currentWorkspace } = useProjectManager(); const { data: blocks, mutate } = useGetBlocks(); const { data: stateSnapshots } = useGetStateSnapshots(); const snapshotLookupByBlockId = useMemo( @@ -49,7 +49,7 @@ export function SnapshotsManagerProvider({ function createSnapshot() { track(AnalyticEvent.CREATE_SNAPSHOT); - const { snapshot } = currentProject?.emulator ?? {}; + const { snapshot } = currentWorkspace?.emulator ?? {}; if (!snapshot) { toast( "Snapshots can only be created when enabling the 'snapshot' option in settings", @@ -63,7 +63,7 @@ export function SnapshotsManagerProvider({ } function checkoutSnapshot(snapshot: FlowStateSnapshot) { - const isSnapshotEnabled = currentProject?.emulator?.snapshot; + const isSnapshotEnabled = currentWorkspace?.emulator?.snapshot; if (!isSnapshotEnabled) { toast.error( "Can't jump to block, because 'snapshot' option is not enabled in project settings" @@ -85,14 +85,14 @@ export function SnapshotsManagerProvider({ const onConfirm = async () => { track(AnalyticEvent.CHECKOUT_SNAPSHOT); - if (!currentProject) { + if (!currentWorkspace) { throw new Error("Expected project to be defined"); } try { await snapshotService.checkoutBlock({ blockId: snapshot.blockId, - projectId: currentProject.id, + projectId: currentWorkspace.id, }); mutate(); toast.success( @@ -131,7 +131,7 @@ export function SnapshotsManagerProvider({ toast("Blockchain state is already at this block, doing nothing."); return; } - if (!currentProject) { + if (!currentWorkspace) { throw new Error("Expected project to be defined"); } @@ -184,7 +184,7 @@ export function SnapshotsManagerProvider({ rollbackToBlock(targetBlock); }, - [currentProject, blocks, snapshotLookupByBlockId] + [currentWorkspace, blocks, snapshotLookupByBlockId] ); return ( diff --git a/packages/ui/src/contexts/projects.context.tsx b/packages/ui/src/contexts/workspace.context.tsx similarity index 50% rename from packages/ui/src/contexts/projects.context.tsx rename to packages/ui/src/contexts/workspace.context.tsx index 74432e4eb..9ac8a04cc 100644 --- a/packages/ui/src/contexts/projects.context.tsx +++ b/packages/ui/src/contexts/workspace.context.tsx @@ -5,54 +5,54 @@ import { AnalyticEvent, useAnalytics } from "../hooks/use-analytics"; import { useNavigate } from "react-router-dom"; import { Helmet } from "react-helmet"; import { useErrorHandler } from "../hooks/use-error-handler"; -import { useCurrentProjectId } from "../hooks/use-current-project-id"; -import { FlowserProject } from "@onflowser/api"; +import { useCurrentWorkspaceId } from "../hooks/use-current-project-id"; +import { FlowserWorkspace } from "@onflowser/api"; import { useServiceRegistry } from "./service-registry.context"; import { useGetFlowserProject } from "../api"; -export type ProjectsManager = { - currentProject: FlowserProject | undefined; - switchProject: () => Promise; - startProject: ( - project: FlowserProject, - options?: StartProjectOptions +export type WorkspaceManager = { + currentWorkspace: FlowserWorkspace | undefined; + closeWorkspace: () => Promise; + openWorkspace: ( + workspace: FlowserWorkspace, + options?: OpenWorkspaceOptions ) => Promise; - removeProject: (project: FlowserProject) => void; - updateProject: (project: FlowserProject) => Promise; - createProject: (project: FlowserProject) => Promise; + removeWorkspace: (workspace: FlowserWorkspace) => void; + updateWorkspace: (workspace: FlowserWorkspace) => Promise; + createWorkspace: (workspace: FlowserWorkspace) => Promise; }; -type StartProjectOptions = { replaceCurrentPage: boolean }; +type OpenWorkspaceOptions = { replaceCurrentPage: boolean }; -const ProjectsManagerContext = createContext( - {} as ProjectsManager +const WorkspaceManagerContext = createContext( + {} as WorkspaceManager ); -export function ProjectsManagerProvider({ +export function WorkspaceManagerProvider({ children, }: { children: ReactElement; }): ReactElement { - const { projectsService } = useServiceRegistry(); + const { workspaceService } = useServiceRegistry(); const { track } = useAnalytics(); const navigate = useNavigate(); - const { handleError } = useErrorHandler(ProjectsManagerProvider.name); + const { handleError } = useErrorHandler(WorkspaceManagerProvider.name); const { showDialog, hideDialog } = useConfirmDialog(); - const currentProjectId = useCurrentProjectId(); - const { data: currentProject, mutate: refetchCurrentProject } = - useGetFlowserProject(currentProjectId); + const currentWorkspaceId = useCurrentWorkspaceId(); + const { data: currentWorkspace, mutate: refetchCurrentWorkspace } = + useGetFlowserProject(currentWorkspaceId); - const confirmProjectRemove = async (project: FlowserProject) => { + const confirmProjectRemove = async (project: FlowserWorkspace) => { track(AnalyticEvent.PROJECT_REMOVED, { projectName: project.name }); try { - await toast.promise(projectsService.remove(project.id), { + await toast.promise(workspaceService.remove(project.id), { loading: "Deleting project", error: `Failed to delete project "${project.name}"`, success: `Project "${project.name}" deleted!`, }); - refetchCurrentProject(); + refetchCurrentWorkspace(); navigate("/projects", { replace: true, }); @@ -63,7 +63,7 @@ export function ProjectsManagerProvider({ } }; - function removeProject(project: FlowserProject) { + function removeWorkspace(project: FlowserWorkspace) { showDialog({ title: "Delete project", body: Are you sure you want to delete this project?, @@ -73,11 +73,11 @@ export function ProjectsManagerProvider({ }); } - async function switchProject() { + async function closeWorkspace() { const execute = async () => { try { - await projectsService.unUseCurrentProject(); - refetchCurrentProject(); + await workspaceService.close(currentWorkspaceId); + refetchCurrentWorkspace(); } catch (e) { // nothing critical happened, ignore the error console.warn("Couldn't stop the emulator: ", e); @@ -94,17 +94,17 @@ export function ProjectsManagerProvider({ }); } - async function startProject( - project: FlowserProject, - options?: StartProjectOptions + async function openWorkspace( + project: FlowserWorkspace, + options?: OpenWorkspaceOptions ) { try { - await toast.promise(projectsService.useProject(project.id), { + await toast.promise(workspaceService.open(project.id), { loading: "Starting project...", success: "Project started!", error: "Something went wrong, please try again!", }); - refetchCurrentProject(); + refetchCurrentWorkspace(); track(AnalyticEvent.PROJECT_STARTED); navigate(`/projects/${project.id}`, { replace: options?.replaceCurrentPage, @@ -117,41 +117,41 @@ export function ProjectsManagerProvider({ } } - async function createProject( - project: FlowserProject - ): Promise { - // TODO(restructure): Implement - return project; + async function createWorkspace( + workspace: FlowserWorkspace + ): Promise { + await workspaceService.create(workspace) + return workspace; } - async function updateProject( - project: FlowserProject - ): Promise { - // TODO(restructure): Implement - return project; + async function updateWorkspace( + workspace: FlowserWorkspace + ): Promise { + await workspaceService.update(workspace) + return workspace; } return ( - - {currentProject ? `Flowser - ${currentProject?.name}` : "Flowser"} + {currentWorkspace ? `Flowser - ${currentWorkspace?.name}` : "Flowser"} {children} - + ); } -export function useProjectManager(): ProjectsManager { - return useContext(ProjectsManagerContext); +export function useProjectManager(): WorkspaceManager { + return useContext(WorkspaceManagerContext); } diff --git a/packages/ui/src/hooks/use-analytics.ts b/packages/ui/src/hooks/use-analytics.ts index c158d72d2..d0fb20c39 100644 --- a/packages/ui/src/hooks/use-analytics.ts +++ b/packages/ui/src/hooks/use-analytics.ts @@ -1,6 +1,6 @@ import { useEffect } from "react"; import { useLocalStorage } from "@uidotdev/usehooks"; -import { useCurrentProjectId } from "./use-current-project-id"; +import { useCurrentWorkspaceId } from "./use-current-project-id"; import { useServiceRegistry } from "../contexts/service-registry.context"; import { useGetFlowserProject } from "../api"; @@ -35,7 +35,7 @@ export function useAnalytics(): Analytics { "consent-analytics", undefined ); - const currentProjectId = useCurrentProjectId(); + const currentProjectId = useCurrentWorkspaceId(); const { data: currentProject } = useGetFlowserProject(currentProjectId); useEffect(() => { diff --git a/packages/ui/src/hooks/use-current-project-id.ts b/packages/ui/src/hooks/use-current-project-id.ts index fa5c62b81..0c857d0de 100644 --- a/packages/ui/src/hooks/use-current-project-id.ts +++ b/packages/ui/src/hooks/use-current-project-id.ts @@ -1,11 +1,11 @@ import { useParams } from "react-router-dom"; -export function useCurrentProjectId(): string { - const { projectId } = useParams(); +export function useCurrentWorkspaceId(): string { + const { workspaceId } = useParams(); - // if (!projectId) { - // throw new Error("Project ID not found in URL"); + // if (!workspaceId) { + // throw new Error("Workspace ID not found in URL"); // } - return projectId ?? ""; + return workspaceId ?? ""; } diff --git a/packages/ui/src/projects/FormFields/FormFields.tsx b/packages/ui/src/projects/FormFields/FormFields.tsx index e37af087a..cd361ee37 100644 --- a/packages/ui/src/projects/FormFields/FormFields.tsx +++ b/packages/ui/src/projects/FormFields/FormFields.tsx @@ -6,7 +6,7 @@ import classNames from "classnames"; import classes from "./FormFields.module.scss"; import ToggleButton from "../../common/buttons/ToggleButton/ToggleButton"; import { FormikErrors } from "formik"; -import { FlowserProject } from '@onflowser/api'; +import { FlowserWorkspace } from '@onflowser/api'; export type FieldProps = InputProps & { label?: string; @@ -15,8 +15,8 @@ export type FieldProps = InputProps & { className?: string; formik: { handleChange: (e: React.ChangeEvent) => void; - values: FlowserProject; - errors: FormikErrors; + values: FlowserWorkspace; + errors: FormikErrors; setFieldValue: ( field: string, value: unknown, diff --git a/packages/ui/src/projects/ProjectListPage/ProjectListPage.tsx b/packages/ui/src/projects/ProjectListPage/ProjectListPage.tsx index 4cdb6591b..f74e3319b 100644 --- a/packages/ui/src/projects/ProjectListPage/ProjectListPage.tsx +++ b/packages/ui/src/projects/ProjectListPage/ProjectListPage.tsx @@ -4,13 +4,13 @@ import IconButton from "../../common/buttons/IconButton/IconButton"; import longLogo from "../../assets/long_logo.png"; import classes from "./ProjectListPage.module.scss"; import classNames from "classnames"; -import { useProjectManager } from "../../contexts/projects.context"; +import { useProjectManager } from "../../contexts/workspace.context"; import { SimpleButton } from "../../common/buttons/SimpleButton/SimpleButton"; import { ConsentDialog } from "../../common/overlays/dialogs/consent/ConsentDialog"; import { useAnalytics } from "../../hooks/use-analytics"; import { FlowserIcon } from "../../common/icons/FlowserIcon"; import { TextUtils } from "../../utils/text-utils"; -import { useGetFlowserProjects } from "../../api"; +import { useGetWorkspaces } from "../../api"; type ProjectTab = { id: string; @@ -84,10 +84,14 @@ export const ProjectListPage: FunctionComponent = () => { }; function ProjectsListContent() { - const { data: projects } = useGetFlowserProjects(); - const { startProject, removeProject } = useProjectManager(); + const { data: projects, error } = useGetWorkspaces(); + const { openWorkspace, removeWorkspace } = useProjectManager(); const showProjectList = projects && projects.length > 0; + if (error) { + return
{error.message}
+ } + if (!showProjectList) { return (
@@ -103,7 +107,7 @@ function ProjectsListContent() {
  • startProject(project)} + onClick={() => openWorkspace(project)} > {project.name} @@ -112,7 +116,7 @@ function ProjectsListContent() { removeProject(project)} + onClick={() => removeWorkspace(project)} > diff --git a/packages/ui/src/projects/ProjectSettings/ProjectSettings.tsx b/packages/ui/src/projects/ProjectSettings/ProjectSettings.tsx index e2ece3953..64bbc1dad 100644 --- a/packages/ui/src/projects/ProjectSettings/ProjectSettings.tsx +++ b/packages/ui/src/projects/ProjectSettings/ProjectSettings.tsx @@ -9,7 +9,7 @@ import classNames from "classnames"; import { FlowUtils } from "../../utils/flow-utils"; import * as yup from "yup"; import { useErrorHandler } from "../../hooks/use-error-handler"; -import { useProjectManager } from "../../contexts/projects.context"; +import { useProjectManager } from "../../contexts/workspace.context"; import { SettingsSection } from "../SettingsSection/SettingsSection"; import { RadioField, @@ -22,7 +22,7 @@ import { useFilePicker } from "../../contexts/platform-adapter.context"; import { AnalyticEvent, useAnalytics } from "../../hooks/use-analytics"; import { FlowEmulatorConfig, - FlowserProject, + FlowserWorkspace, HashAlgorithm, SignatureAlgorithm, } from "@onflowser/api"; @@ -42,29 +42,29 @@ export const ProjectSettings: FunctionComponent = ( props ) => { const { projectId } = props; - const { projectsService } = useServiceRegistry(); + const { workspaceService } = useServiceRegistry(); const [isLoading, setIsLoading] = useState(true); const { track } = useAnalytics(); const { pickDirectory } = useFilePicker(); - const { startProject, removeProject, createProject, updateProject } = + const { openWorkspace, removeWorkspace, createWorkspace, updateWorkspace } = useProjectManager(); const { data: flowCliInfo } = useGetFlowCliInfo(); const { handleError } = useErrorHandler(ProjectSettings.name); const isExistingProject = Boolean(projectId); - const formik = useFormik({ + const formik = useFormik({ validationSchema: projectSchema, validateOnChange: false, // Initial value is set in a hook bellow. - initialValues: {} as FlowserProject, - onSubmit: async () => { + initialValues: {} as FlowserWorkspace, + onSubmit: () => toast.promise(saveAndStartProject(), { loading: "Running project", success: "Project started", error: "Failed to projects project", - }); - }, + }) + , }); async function saveAndStartProject() { @@ -72,18 +72,18 @@ export const ProjectSettings: FunctionComponent = ( track(AnalyticEvent.PROJECT_CREATED); } - let updatedProject: FlowserProject; + let updatedProject: FlowserWorkspace; try { updatedProject = isExistingProject - ? await updateProject(formik.values) - : await createProject(formik.values); + ? await updateWorkspace(formik.values) + : await createWorkspace(formik.values); } catch (e) { handleError(e); window.scrollTo(0, 0); throw e; } - await startProject(updatedProject, { + await openWorkspace(updatedProject, { replaceCurrentPage: true, }); } @@ -110,7 +110,7 @@ export const ProjectSettings: FunctionComponent = ( async function loadExistingProject(id: string) { try { - const existingProject = await projectsService.getSingle(id); + const existingProject = await workspaceService.findById(id); if (existingProject) { formik.setValues(existingProject, false); } @@ -124,7 +124,7 @@ export const ProjectSettings: FunctionComponent = ( async function loadDefaultProject() { try { - const defaultProject = await projectsService.getDefaultProjectInfo(); + const defaultProject = await workspaceService.getDefaultSettings(); if (defaultProject) { formik.setValues(defaultProject, false); } @@ -339,7 +339,7 @@ export const ProjectSettings: FunctionComponent = (
    From eac27fcc0ef4fca35f31156abce3148aa0ee6365 Mon Sep 17 00:00:00 2001 From: Bart Date: Sun, 22 Oct 2023 13:06:39 +0200 Subject: [PATCH 029/100] enable consent dialog --- apps/electron/src/renderer/App.tsx | 2 +- .../overlays/dialogs/consent/ConsentDialog.module.scss | 1 + .../src/common/overlays/dialogs/consent/ConsentDialog.tsx | 4 ++-- packages/ui/src/contexts/platform-adapter.context.tsx | 8 ++++---- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/apps/electron/src/renderer/App.tsx b/apps/electron/src/renderer/App.tsx index 9807c2c9e..a97560c28 100644 --- a/apps/electron/src/renderer/App.tsx +++ b/apps/electron/src/renderer/App.tsx @@ -81,7 +81,7 @@ export function App() { - {/**/} +
    - Flowser logo +

    We would appreciate your help!

    diff --git a/packages/ui/src/contexts/platform-adapter.context.tsx b/packages/ui/src/contexts/platform-adapter.context.tsx index 586225131..5fff4cf04 100644 --- a/packages/ui/src/contexts/platform-adapter.context.tsx +++ b/packages/ui/src/contexts/platform-adapter.context.tsx @@ -9,7 +9,7 @@ export type FilePicker = { pickDirectory?: () => Promise; }; -const PlatformAdapterContext = createContext( +const FilePickerAdapterContext = createContext( undefined as never ); @@ -22,14 +22,14 @@ export function FilePickerProvider({ ...values }: FilePickerProviderProps): ReactElement { return ( - + {children} - + ); } export function useFilePicker(): FilePicker { - const context = useContext(PlatformAdapterContext); + const context = useContext(FilePickerAdapterContext); if (!context) { throw new Error("Platform adapter context not found"); } From 8113a628bc48a2bebfa6af3b3fa35d00c3f3c113 Mon Sep 17 00:00:00 2001 From: Bart Date: Sun, 22 Oct 2023 13:10:52 +0200 Subject: [PATCH 030/100] improve ipc file structure --- apps/electron/src/main/ipc/events.ts | 2 + apps/electron/src/main/ipc/handlers.ts | 13 ++++- apps/electron/src/main/ipc/invokers.ts | 40 +++++++++++++++ apps/electron/src/main/preload.ts | 65 ++----------------------- apps/electron/src/renderer/ipc-index.ts | 9 ++-- apps/electron/src/renderer/preload.d.ts | 4 +- 6 files changed, 62 insertions(+), 71 deletions(-) create mode 100644 apps/electron/src/main/ipc/invokers.ts diff --git a/apps/electron/src/main/ipc/events.ts b/apps/electron/src/main/ipc/events.ts index dcb6232e3..a1bc27fa5 100644 --- a/apps/electron/src/main/ipc/events.ts +++ b/apps/electron/src/main/ipc/events.ts @@ -7,4 +7,6 @@ export enum FlowserIpcEvent { WORKSPACES_FIND_BY_ID = 'WORKSPACES_FIND_BY_ID', WORKSPACES_REMOVE = 'WORKSPACES_REMOVE', WORKSPACES_DEFAULT_SETTINGS = 'WORKSPACES_DEFAULT_SETTINGS', + + INDEX_GET_ALL = "INDEX_GET_ALL" } diff --git a/apps/electron/src/main/ipc/handlers.ts b/apps/electron/src/main/ipc/handlers.ts index 36ec88e19..ec450242e 100644 --- a/apps/electron/src/main/ipc/handlers.ts +++ b/apps/electron/src/main/ipc/handlers.ts @@ -1,10 +1,13 @@ import { ipcMain, IpcMainInvokeEvent } from 'electron'; import { FlowserWorkspace } from '@onflowser/api'; import { FlowserIpcEvent } from './events'; -import { FlowserAppService } from '../../services/flowser-app.service'; +import { + FlowserAppService, + FlowserIndexes, +} from '../../services/flowser-app.service'; export function registerHandlers(flowserAppService: FlowserAppService) { - const { workspaceService } = flowserAppService; + const { workspaceService, indexes } = flowserAppService; ipcMain.handle(FlowserIpcEvent.WORKSPACES_LIST, () => workspaceService.list(), @@ -39,4 +42,10 @@ export function registerHandlers(flowserAppService: FlowserAppService) { FlowserIpcEvent.WORKSPACES_DEFAULT_SETTINGS, (e: IpcMainInvokeEvent) => workspaceService.getDefaultSettings(), ); + + ipcMain.handle( + FlowserIpcEvent.INDEX_GET_ALL, + (event: IpcMainInvokeEvent, indexName: keyof FlowserIndexes) => + indexes[indexName].findAll(), + ); } diff --git a/apps/electron/src/main/ipc/invokers.ts b/apps/electron/src/main/ipc/invokers.ts new file mode 100644 index 000000000..d5551b0a0 --- /dev/null +++ b/apps/electron/src/main/ipc/invokers.ts @@ -0,0 +1,40 @@ +import { ipcRenderer } from 'electron'; +import { FlowserWorkspace } from '@onflowser/api'; +import { FlowserIpcEvent } from './events'; +import { FlowserIndexes } from '../../services/flowser-app.service'; + +export const electronInvokers = { + platformAdapter: { + showDirectoryPicker: () => ipcRenderer.invoke('showDirectoryPicker'), + handleExit: (callback: () => void) => ipcRenderer.on('exit', callback), + handleUpdateDownloadStart: (callback: () => void) => + ipcRenderer.on('update-download-start', callback), + handleUpdateDownloadEnd: (callback: () => void) => + ipcRenderer.on('update-download-end', callback), + handleUpdateDownloadProgress: (callback: (percentage: number) => void) => + ipcRenderer.on('update-download-progress', (event, value) => + callback(value as unknown as number), + ), + }, + workspaces: { + open: (id: string) => + ipcRenderer.invoke(FlowserIpcEvent.WORKSPACES_OPEN, id), + close: (id: string) => + ipcRenderer.invoke(FlowserIpcEvent.WORKSPACES_CLOSE, id), + list: () => ipcRenderer.invoke(FlowserIpcEvent.WORKSPACES_LIST), + create: (createdWorkspace: FlowserWorkspace) => + ipcRenderer.invoke(FlowserIpcEvent.WORKSPACES_CREATE, createdWorkspace), + update: (updatedWorkspace: FlowserWorkspace) => + ipcRenderer.invoke(FlowserIpcEvent.WORKSPACES_UPDATE, updatedWorkspace), + findById: (id: string) => + ipcRenderer.invoke(FlowserIpcEvent.WORKSPACES_FIND_BY_ID, id), + remove: (id: string) => + ipcRenderer.invoke(FlowserIpcEvent.WORKSPACES_REMOVE, id), + getDefaultSettings: () => + ipcRenderer.invoke(FlowserIpcEvent.WORKSPACES_DEFAULT_SETTINGS), + }, + indexes: { + getAll: (indexName: keyof FlowserIndexes) => + ipcRenderer.invoke(FlowserIpcEvent.INDEX_GET_ALL, indexName), + }, +}; diff --git a/apps/electron/src/main/preload.ts b/apps/electron/src/main/preload.ts index 207e36010..b7bfcd2ca 100644 --- a/apps/electron/src/main/preload.ts +++ b/apps/electron/src/main/preload.ts @@ -1,63 +1,6 @@ -// Disable no-unused-vars, broken for spread args -/* eslint no-unused-vars: off */ -import { contextBridge, ipcRenderer, IpcRendererEvent } from 'electron'; -import { FlowserWorkspace } from '@onflowser/api'; -import { FlowserIpcEvent } from './ipc/events'; +import { contextBridge } from 'electron'; +import { electronInvokers } from './ipc/invokers'; -export type Channels = 'index:get-all'; +contextBridge.exposeInMainWorld('electron', electronInvokers); -const electronHandler = { - platformAdapter: { - showDirectoryPicker: () => ipcRenderer.invoke('showDirectoryPicker'), - handleExit: (callback: () => void) => ipcRenderer.on('exit', callback), - handleUpdateDownloadStart: (callback: () => void) => - ipcRenderer.on('update-download-start', callback), - handleUpdateDownloadEnd: (callback: () => void) => - ipcRenderer.on('update-download-end', callback), - handleUpdateDownloadProgress: (callback: (percentage: number) => void) => - ipcRenderer.on('update-download-progress', (event, value) => - callback(value as unknown as number), - ), - }, - ipcRenderer: { - invoke(channel: Channels, ...args: unknown[]) { - return ipcRenderer.invoke(channel, ...args); - }, - sendMessage(channel: Channels, ...args: unknown[]) { - ipcRenderer.send(channel, ...args); - }, - on(channel: Channels, func: (...args: unknown[]) => void) { - const subscription = (_event: IpcRendererEvent, ...args: unknown[]) => - func(...args); - ipcRenderer.on(channel, subscription); - - return () => { - ipcRenderer.removeListener(channel, subscription); - }; - }, - once(channel: Channels, func: (...args: unknown[]) => void) { - ipcRenderer.once(channel, (_event, ...args) => func(...args)); - }, - }, - workspaces: { - open: (id: string) => - ipcRenderer.invoke(FlowserIpcEvent.WORKSPACES_OPEN, id), - close: (id: string) => - ipcRenderer.invoke(FlowserIpcEvent.WORKSPACES_CLOSE, id), - list: () => ipcRenderer.invoke(FlowserIpcEvent.WORKSPACES_LIST), - create: (createdWorkspace: FlowserWorkspace) => - ipcRenderer.invoke(FlowserIpcEvent.WORKSPACES_CREATE, createdWorkspace), - update: (updatedWorkspace: FlowserWorkspace) => - ipcRenderer.invoke(FlowserIpcEvent.WORKSPACES_UPDATE, updatedWorkspace), - findById: (id: string) => - ipcRenderer.invoke(FlowserIpcEvent.WORKSPACES_FIND_BY_ID, id), - remove: (id: string) => - ipcRenderer.invoke(FlowserIpcEvent.WORKSPACES_REMOVE, id), - getDefaultSettings: () => - ipcRenderer.invoke(FlowserIpcEvent.WORKSPACES_DEFAULT_SETTINGS), - }, -}; - -contextBridge.exposeInMainWorld('electron', electronHandler); - -export type ElectronHandler = typeof electronHandler; +export type ElectronInvokers = typeof electronInvokers; diff --git a/apps/electron/src/renderer/ipc-index.ts b/apps/electron/src/renderer/ipc-index.ts index 4cd46b8e1..dcb2e9364 100644 --- a/apps/electron/src/renderer/ipc-index.ts +++ b/apps/electron/src/renderer/ipc-index.ts @@ -3,7 +3,7 @@ import { InMemoryIndex } from '@onflowser/core'; import { FlowserIndexes } from '../services/flowser-app.service'; export class IpcIndex< - Resource extends IdentifiableResource + Resource extends IdentifiableResource, > extends InMemoryIndex { constructor(private readonly indexName: keyof FlowserIndexes) { super(); @@ -17,13 +17,10 @@ export class IpcIndex< } async sync() { - const resources = await window.electron.ipcRenderer.invoke( - 'index:get-all', - this.indexName - ); + const resources = await window.electron.indexes.getAll(this.indexName); await Promise.allSettled( - resources.map((resource: Resource) => this.add(resource)) + resources.map((resource: Resource) => this.add(resource)), ); } } diff --git a/apps/electron/src/renderer/preload.d.ts b/apps/electron/src/renderer/preload.d.ts index 53cc2d7b1..e8ca941bc 100644 --- a/apps/electron/src/renderer/preload.d.ts +++ b/apps/electron/src/renderer/preload.d.ts @@ -1,9 +1,9 @@ -import { ElectronHandler } from '../main/preload'; +import { ElectronInvokers } from '../main/preload'; declare global { // eslint-disable-next-line no-unused-vars interface Window { - electron: ElectronHandler; + electron: ElectronInvokers; } } From 13240bb4eabd434b9e89fbfe814e54429f721998 Mon Sep 17 00:00:00 2001 From: Bart Date: Sun, 22 Oct 2023 14:17:28 +0200 Subject: [PATCH 031/100] handle interaction parsing --- apps/electron/src/main/ipc/events.ts | 5 +++- apps/electron/src/main/ipc/handlers.ts | 25 ++++++++++++++++++- apps/electron/src/main/ipc/invokers.ts | 6 +++++ apps/electron/src/renderer/App.tsx | 2 ++ .../src/services/workspace.service.ts | 6 ++++- internal/misc/interacton_test.go | 21 ++++++++++++++-- packages/core/src/flow-indexer.service.ts | 2 +- packages/nodejs/.gitignore | 1 + .../nodejs/build-go-bindings.sh | 4 +-- packages/nodejs/package.json | 6 ++++- .../nodejs/src/flow-interactions.service.ts | 6 ++--- packages/nodejs/src/go-bindings.service.ts | 14 ++++++++--- packages/ui/src/api.ts | 25 +++++++++++++++---- .../src/contexts/service-registry.context.tsx | 20 ++++++++++++--- .../ui/src/contexts/workspace.context.tsx | 4 +-- packages/ui/src/hooks/use-analytics.ts | 4 +-- .../InteractionLabel/InteractionLabel.tsx | 14 +++++++---- 17 files changed, 132 insertions(+), 33 deletions(-) create mode 100644 packages/nodejs/.gitignore rename build-go-bindings.sh => packages/nodejs/build-go-bindings.sh (91%) diff --git a/apps/electron/src/main/ipc/events.ts b/apps/electron/src/main/ipc/events.ts index a1bc27fa5..1d77c48c0 100644 --- a/apps/electron/src/main/ipc/events.ts +++ b/apps/electron/src/main/ipc/events.ts @@ -8,5 +8,8 @@ export enum FlowserIpcEvent { WORKSPACES_REMOVE = 'WORKSPACES_REMOVE', WORKSPACES_DEFAULT_SETTINGS = 'WORKSPACES_DEFAULT_SETTINGS', - INDEX_GET_ALL = "INDEX_GET_ALL" + INDEX_GET_ALL = 'INDEX_GET_ALL', + + INTERACTIONS_PARSE = 'INTERACTIONS_PARSE', + INTERACTIONS_LIST_TEMPLATES = 'INTERACTIONS_LIST_TEMPLATES', } diff --git a/apps/electron/src/main/ipc/handlers.ts b/apps/electron/src/main/ipc/handlers.ts index ec450242e..5036b949f 100644 --- a/apps/electron/src/main/ipc/handlers.ts +++ b/apps/electron/src/main/ipc/handlers.ts @@ -7,8 +7,10 @@ import { } from '../../services/flowser-app.service'; export function registerHandlers(flowserAppService: FlowserAppService) { - const { workspaceService, indexes } = flowserAppService; + const { workspaceService, indexes, flowInteractionsService } = + flowserAppService; + // Workspaces ipcMain.handle(FlowserIpcEvent.WORKSPACES_LIST, () => workspaceService.list(), ); @@ -43,9 +45,30 @@ export function registerHandlers(flowserAppService: FlowserAppService) { (e: IpcMainInvokeEvent) => workspaceService.getDefaultSettings(), ); + // Indexes ipcMain.handle( FlowserIpcEvent.INDEX_GET_ALL, (event: IpcMainInvokeEvent, indexName: keyof FlowserIndexes) => indexes[indexName].findAll(), ); + + // Interactions + ipcMain.handle( + FlowserIpcEvent.INTERACTIONS_PARSE, + (event: IpcMainInvokeEvent, sourceCode: string) => + flowInteractionsService.parse(sourceCode), + ); + ipcMain.handle( + FlowserIpcEvent.INTERACTIONS_LIST_TEMPLATES, + async (event: IpcMainInvokeEvent) => { + // There will be only 1 open workspace for now. + // TODO(restructure): Handle this differently + const openWorkspaces = await workspaceService.getOpenWorkspaces(); + return flowInteractionsService.getTemplates({ + // TODO(restructure): Move `workingDirectoryPath` to top-level + workspacePath: openWorkspaces[0].emulator!.workingDirectoryPath, + }); + }, + ); + } diff --git a/apps/electron/src/main/ipc/invokers.ts b/apps/electron/src/main/ipc/invokers.ts index d5551b0a0..036440ce0 100644 --- a/apps/electron/src/main/ipc/invokers.ts +++ b/apps/electron/src/main/ipc/invokers.ts @@ -16,6 +16,12 @@ export const electronInvokers = { callback(value as unknown as number), ), }, + interactions: { + parse: (sourceCode: string) => + ipcRenderer.invoke(FlowserIpcEvent.INTERACTIONS_PARSE, sourceCode), + getTemplates: () => + ipcRenderer.invoke(FlowserIpcEvent.INTERACTIONS_LIST_TEMPLATES), + }, workspaces: { open: (id: string) => ipcRenderer.invoke(FlowserIpcEvent.WORKSPACES_OPEN, id), diff --git a/apps/electron/src/renderer/App.tsx b/apps/electron/src/renderer/App.tsx index a97560c28..6c847d493 100644 --- a/apps/electron/src/renderer/App.tsx +++ b/apps/electron/src/renderer/App.tsx @@ -63,6 +63,8 @@ export function App() { ; @@ -12,6 +12,10 @@ export class WorkspaceService { this.openWorkspaces = new Map(); } + async getOpenWorkspaces(): Promise { + return Array.from(this.openWorkspaces.values()); + } + async close(id: string): Promise { this.openWorkspaces.delete(id); } diff --git a/internal/misc/interacton_test.go b/internal/misc/interacton_test.go index ed0bc1b84..1f839f6ef 100644 --- a/internal/misc/interacton_test.go +++ b/internal/misc/interacton_test.go @@ -1,16 +1,33 @@ package misc import ( + "fmt" "testing" "github.com/onflow/cadence/runtime/parser" ) +func TestUnknownInteraction(t *testing.T) { + interaction := parseAndBuildInteraction("lorem ipsum") + + if interaction.Kind != InteractionKindUnknown { + t.Error("Expected transaction kind unknown") + } + + if len(interaction.Parameters) != 0 { + t.Error("Expected empty parameters list") + } + + if interaction.Transaction != nil { + t.Error("Expected null transaction") + } +} + func TestSimpleInteraction(t *testing.T) { interaction := parseAndBuildInteraction("transaction (addr: Address) {}") if interaction.Kind != InteractionKindTransaction { - t.Error("Expected transaction kind") + t.Error("Expected transaction kind transaction") } if len(interaction.Parameters) != 1 { @@ -138,7 +155,7 @@ func parseAndBuildInteraction(code string) *Interaction { program, err := parser.ParseProgram(nil, []byte(code), parser.Config{}) if err != nil { - panic(err) + fmt.Printf("Interaction parsing error: %s\n", err) } return buildInteraction(program) diff --git a/packages/core/src/flow-indexer.service.ts b/packages/core/src/flow-indexer.service.ts index 52a4e62b9..0b7cc4365 100644 --- a/packages/core/src/flow-indexer.service.ts +++ b/packages/core/src/flow-indexer.service.ts @@ -393,7 +393,7 @@ export class FlowIndexerService { private async reIndexAllAccountStorage() { const allAccounts = await this.accountIndex.findAll(); this.logger.debug( - `Processing storages for accounts: ${allAccounts.join(", ")}` + `Processing storages for accounts: ${allAccounts.map(e => e.address).join(", ")}` ); await Promise.all( allAccounts.map((account: flowserResource.FlowAccount) => diff --git a/packages/nodejs/.gitignore b/packages/nodejs/.gitignore new file mode 100644 index 000000000..ba077a403 --- /dev/null +++ b/packages/nodejs/.gitignore @@ -0,0 +1 @@ +bin diff --git a/build-go-bindings.sh b/packages/nodejs/build-go-bindings.sh similarity index 91% rename from build-go-bindings.sh rename to packages/nodejs/build-go-bindings.sh index 4682ed055..1d2a0c61d 100644 --- a/build-go-bindings.sh +++ b/packages/nodejs/build-go-bindings.sh @@ -1,5 +1,5 @@ -EXEC_PATH=dist/go-bindings/bin/internal -SOURCE_PATH=./internal/main.go +EXEC_PATH=bin/internal +SOURCE_PATH=../../internal/main.go # Technically, only 64bit architectures are supported, since # Cadence can't be built for 32bit arch due to constant overflows: diff --git a/packages/nodejs/package.json b/packages/nodejs/package.json index 08d639c29..4d67fdf9c 100644 --- a/packages/nodejs/package.json +++ b/packages/nodejs/package.json @@ -4,8 +4,12 @@ "description": "", "main": "./src/index.ts", "types": "./src/index.ts", - "scripts": {}, + "scripts": { + "dev": "npm run build-bin", + "build-bin": "sh build-go-bindings.sh" + }, "keywords": [], + "files": ["./bin"], "author": "", "license": "ISC", "dependencies": { diff --git a/packages/nodejs/src/flow-interactions.service.ts b/packages/nodejs/src/flow-interactions.service.ts index dda286f21..ae63cded4 100644 --- a/packages/nodejs/src/flow-interactions.service.ts +++ b/packages/nodejs/src/flow-interactions.service.ts @@ -19,7 +19,7 @@ interface InteractionTemplate_Source { } type GetInteractionTemplatesOptions = { - projectRootPath: string; + workspacePath: string; }; export class FlowInteractionsService implements IFlowInteractions { @@ -29,11 +29,11 @@ export class FlowInteractionsService implements IFlowInteractions { return this.goBindings.getParsedInteraction({ sourceCode }); } - public async getInteractionTemplates( + public async getTemplates( options: GetInteractionTemplatesOptions ): Promise { const potentialCadenceFilePaths = await this.findAllCadenceFiles( - options.projectRootPath + options.workspacePath ); const templates = await Promise.all( potentialCadenceFilePaths.map((potentialCadenceFilePath) => diff --git a/packages/nodejs/src/go-bindings.service.ts b/packages/nodejs/src/go-bindings.service.ts index 6378cf8d1..4aa1cb8f4 100644 --- a/packages/nodejs/src/go-bindings.service.ts +++ b/packages/nodejs/src/go-bindings.service.ts @@ -36,10 +36,18 @@ export class GoBindingsService { stdIn: request.sourceCode, }); - return JSON.parse(response.raw); + const parsedResponse = JSON.parse(response.raw); + + // Go code encodes the parameters as null when there is a parsing error. + // Default to an empty array to match the expected structure. + if (parsedResponse.interaction && parsedResponse.interaction.parameters === null) { + parsedResponse.interaction.parameters = []; + } + + return parsedResponse; } - public async getAddressIndex( + public async getIndexOfAddress( request: GetAddressIndexRequest ): Promise { const response = await this.execute({ @@ -86,7 +94,7 @@ export class GoBindingsService { // - https://github.com/epsitec-sa/hazardous#what-is-the-real-purpose-of-asarunpacked // - https://github.com/electron/electron/issues/6262#issuecomment-273312942 return path - .join(__dirname, "bin", this.getExecutableName()) + .join(__dirname, "..", "bin", this.getExecutableName()) .replace(`app.asar${path.sep}`, `app.asar.unpacked${path.sep}`); } diff --git a/packages/ui/src/api.ts b/packages/ui/src/api.ts index 7f5fc4438..1551c72a4 100644 --- a/packages/ui/src/api.ts +++ b/packages/ui/src/api.ts @@ -13,6 +13,7 @@ import { } from '@onflowser/api'; import { useServiceRegistry } from "./contexts/service-registry.context"; import { InteractionDefinition } from './interactions/core/core-types'; +import { useEffect } from "react"; export function useGetAccounts(): SWRResponse { const { accountIndex } = useServiceRegistry(); @@ -234,10 +235,12 @@ export function useGetWorkspaces(): SWRResponse { return useSWR("workspaces", () =>workspaceService.list()); } -export function useGetFlowserProject( +export function useGetWorkspace( id: string ): SWRResponse { - return useSWR(`projects/${id}`, () => undefined); + const { workspaceService } = useServiceRegistry(); + + return useSWR(`projects/${id}`, () => workspaceService.findById(id)); } export function useGetFlowJson(): SWRResponse { @@ -245,23 +248,35 @@ export function useGetFlowJson(): SWRResponse { } export function useGetFlowCliInfo(): SWRResponse { - return useSWR(`flow-cli`, () => ({})); + const { flowService } = useServiceRegistry(); + + return useSWR(`flow-cli`, () => flowService.getFlowCliInfo()); } export function useGetParsedInteraction( request: InteractionDefinition ): SWRResponse { + const { interactionsService } = useServiceRegistry(); + // We are not using `sourceCode` as the cache key, // to avoid the flickering UI effect that's caused // by undefined parsed interaction every time the source code changes. - return useSWR(`parsed-interaction`, () => ({})); + const state = useSWR(`parsed-interaction/${request.id}`, () => (interactionsService.parse(request.code))); + + useEffect(() => { + state.mutate(); + }, [request.code]); + return state; } export function useGetInteractionTemplates(): SWRResponse { - return useSWR(`interaction-templates`, () => ([])); + const { interactionsService } = useServiceRegistry(); + + return useSWR(`interaction-templates`, () => (interactionsService.getTemplates())); } export function useGetFlowserUsageRequirements(): SWRResponse { + // TODO(restructure): Implement and move to electron dir only return useSWR(`usage-requirements`, () => ([])); } diff --git a/packages/ui/src/contexts/service-registry.context.tsx b/packages/ui/src/contexts/service-registry.context.tsx index 97a9aa6bf..b252c54f4 100644 --- a/packages/ui/src/contexts/service-registry.context.tsx +++ b/packages/ui/src/contexts/service-registry.context.tsx @@ -2,14 +2,14 @@ import { createContext, ReactNode, useContext } from "react"; import { FlowAccount, FlowAccountStorage, - FlowBlock, + FlowBlock, FlowCliInfo, FlowContract, FlowEvent, FlowserWorkspace, FlowStateSnapshot, - FlowTransaction, - IResourceIndexReader, ManagedProcessOutput -} from '@onflowser/api'; + FlowTransaction, InteractionTemplate, + IResourceIndexReader, ManagedProcessOutput, ParsedInteractionOrError +} from "@onflowser/api"; interface IWalletService { // TODO(restructure): Provide request/response type @@ -35,6 +35,16 @@ interface IWorkspaceService { getDefaultSettings(): Promise; } +interface IInteractionService { + parse(sourceCode: string): Promise; + getTemplates(): Promise; +} + +interface IFlowService { + getIndexOfAddress(address: string): Promise; + getFlowCliInfo(): Promise; +} + interface IAnalyticsService { disable(): void; enable(): void; @@ -46,6 +56,8 @@ interface IMonitoringService { } type ServiceRegistry = { + interactionsService: IInteractionService; + flowService: IFlowService; walletService: IWalletService; snapshotService: ISnapshotService; workspaceService: IWorkspaceService; diff --git a/packages/ui/src/contexts/workspace.context.tsx b/packages/ui/src/contexts/workspace.context.tsx index 9ac8a04cc..b14b12e27 100644 --- a/packages/ui/src/contexts/workspace.context.tsx +++ b/packages/ui/src/contexts/workspace.context.tsx @@ -8,7 +8,7 @@ import { useErrorHandler } from "../hooks/use-error-handler"; import { useCurrentWorkspaceId } from "../hooks/use-current-project-id"; import { FlowserWorkspace } from "@onflowser/api"; import { useServiceRegistry } from "./service-registry.context"; -import { useGetFlowserProject } from "../api"; +import { useGetWorkspace } from "../api"; export type WorkspaceManager = { currentWorkspace: FlowserWorkspace | undefined; @@ -41,7 +41,7 @@ export function WorkspaceManagerProvider({ const { showDialog, hideDialog } = useConfirmDialog(); const currentWorkspaceId = useCurrentWorkspaceId(); const { data: currentWorkspace, mutate: refetchCurrentWorkspace } = - useGetFlowserProject(currentWorkspaceId); + useGetWorkspace(currentWorkspaceId); const confirmProjectRemove = async (project: FlowserWorkspace) => { track(AnalyticEvent.PROJECT_REMOVED, { projectName: project.name }); diff --git a/packages/ui/src/hooks/use-analytics.ts b/packages/ui/src/hooks/use-analytics.ts index d0fb20c39..14699c52d 100644 --- a/packages/ui/src/hooks/use-analytics.ts +++ b/packages/ui/src/hooks/use-analytics.ts @@ -2,7 +2,7 @@ import { useEffect } from "react"; import { useLocalStorage } from "@uidotdev/usehooks"; import { useCurrentWorkspaceId } from "./use-current-project-id"; import { useServiceRegistry } from "../contexts/service-registry.context"; -import { useGetFlowserProject } from "../api"; +import { useGetWorkspace } from "../api"; export enum AnalyticEvent { PAGE_VIEW = "page_view", @@ -36,7 +36,7 @@ export function useAnalytics(): Analytics { undefined ); const currentProjectId = useCurrentWorkspaceId(); - const { data: currentProject } = useGetFlowserProject(currentProjectId); + const { data: currentProject } = useGetWorkspace(currentProjectId); useEffect(() => { if (isConsented) { diff --git a/packages/ui/src/interactions/components/InteractionLabel/InteractionLabel.tsx b/packages/ui/src/interactions/components/InteractionLabel/InteractionLabel.tsx index 8b9675e7d..2b2ddc9e5 100644 --- a/packages/ui/src/interactions/components/InteractionLabel/InteractionLabel.tsx +++ b/packages/ui/src/interactions/components/InteractionLabel/InteractionLabel.tsx @@ -14,14 +14,18 @@ export function InteractionLabel(props: InteractionLabelProps): ReactElement { const { interaction } = props; const { data } = useGetParsedInteraction(interaction); + if (!data) { + return ; + } + + if (!data.interaction) { + return
    {data.error}
    + } + return (
    - {data ? ( - - ) : ( - - )} +
    {interaction.name} From 56d93fac70ed404168f145d4daaf7e62771a4ab4 Mon Sep 17 00:00:00 2001 From: Bart Date: Sun, 22 Oct 2023 14:34:11 +0200 Subject: [PATCH 032/100] implement flow services --- apps/electron/src/main/ipc/events.ts | 4 ++ apps/electron/src/main/ipc/handlers.ts | 22 ++++++- apps/electron/src/main/ipc/invokers.ts | 61 ++++++++++++------- apps/electron/src/renderer/App.tsx | 2 +- .../src/services/flowser-app.service.ts | 3 + packages/nodejs/src/go-bindings.service.ts | 6 +- .../accounts/AccountAvatar/AccountAvatar.tsx | 5 +- packages/ui/src/api.ts | 13 ++-- .../src/contexts/service-registry.context.tsx | 6 +- 9 files changed, 78 insertions(+), 44 deletions(-) diff --git a/apps/electron/src/main/ipc/events.ts b/apps/electron/src/main/ipc/events.ts index 1d77c48c0..9be3371ee 100644 --- a/apps/electron/src/main/ipc/events.ts +++ b/apps/electron/src/main/ipc/events.ts @@ -12,4 +12,8 @@ export enum FlowserIpcEvent { INTERACTIONS_PARSE = 'INTERACTIONS_PARSE', INTERACTIONS_LIST_TEMPLATES = 'INTERACTIONS_LIST_TEMPLATES', + + FLOW_GET_INDEX_OF_ADDRESS = "FLOW_GET_INDEX_OF_ADDRESS", + FLOW_GET_CLI_INFO = "FLOW_GET_CLI_INFO", + } diff --git a/apps/electron/src/main/ipc/handlers.ts b/apps/electron/src/main/ipc/handlers.ts index 5036b949f..c8a99fc89 100644 --- a/apps/electron/src/main/ipc/handlers.ts +++ b/apps/electron/src/main/ipc/handlers.ts @@ -7,8 +7,13 @@ import { } from '../../services/flowser-app.service'; export function registerHandlers(flowserAppService: FlowserAppService) { - const { workspaceService, indexes, flowInteractionsService } = - flowserAppService; + const { + workspaceService, + indexes, + flowInteractionsService, + flowCliService, + goBindingsService, + } = flowserAppService; // Workspaces ipcMain.handle(FlowserIpcEvent.WORKSPACES_LIST, () => @@ -71,4 +76,17 @@ export function registerHandlers(flowserAppService: FlowserAppService) { }, ); + // Flow + ipcMain.handle( + FlowserIpcEvent.FLOW_GET_INDEX_OF_ADDRESS, + (event: IpcMainInvokeEvent, address: string) => + goBindingsService.getIndexOfAddress({ + hexAddress: address, + chainId: 'flow-emulator', + }), + ); + ipcMain.handle( + FlowserIpcEvent.FLOW_GET_CLI_INFO, + (event: IpcMainInvokeEvent) => flowCliService.getVersion(), + ); } diff --git a/apps/electron/src/main/ipc/invokers.ts b/apps/electron/src/main/ipc/invokers.ts index 036440ce0..eadbffd78 100644 --- a/apps/electron/src/main/ipc/invokers.ts +++ b/apps/electron/src/main/ipc/invokers.ts @@ -1,8 +1,43 @@ import { ipcRenderer } from 'electron'; import { FlowserWorkspace } from '@onflowser/api'; +import { + IFlowService, + IInteractionService, + IWorkspaceService, +} from '@onflowser/ui/src/contexts/service-registry.context'; import { FlowserIpcEvent } from './events'; import { FlowserIndexes } from '../../services/flowser-app.service'; +const flow: IFlowService = { + getIndexOfAddress: (address: string) => + ipcRenderer.invoke(FlowserIpcEvent.FLOW_GET_INDEX_OF_ADDRESS, address), + getFlowCliInfo: () => ipcRenderer.invoke(FlowserIpcEvent.FLOW_GET_CLI_INFO), +}; + +const interactions: IInteractionService = { + parse: (sourceCode: string) => + ipcRenderer.invoke(FlowserIpcEvent.INTERACTIONS_PARSE, sourceCode), + getTemplates: () => + ipcRenderer.invoke(FlowserIpcEvent.INTERACTIONS_LIST_TEMPLATES), +}; + +const workspaces: IWorkspaceService = { + open: (id: string) => ipcRenderer.invoke(FlowserIpcEvent.WORKSPACES_OPEN, id), + close: (id: string) => + ipcRenderer.invoke(FlowserIpcEvent.WORKSPACES_CLOSE, id), + list: () => ipcRenderer.invoke(FlowserIpcEvent.WORKSPACES_LIST), + create: (createdWorkspace: FlowserWorkspace) => + ipcRenderer.invoke(FlowserIpcEvent.WORKSPACES_CREATE, createdWorkspace), + update: (updatedWorkspace: FlowserWorkspace) => + ipcRenderer.invoke(FlowserIpcEvent.WORKSPACES_UPDATE, updatedWorkspace), + findById: (id: string) => + ipcRenderer.invoke(FlowserIpcEvent.WORKSPACES_FIND_BY_ID, id), + remove: (id: string) => + ipcRenderer.invoke(FlowserIpcEvent.WORKSPACES_REMOVE, id), + getDefaultSettings: () => + ipcRenderer.invoke(FlowserIpcEvent.WORKSPACES_DEFAULT_SETTINGS), +}; + export const electronInvokers = { platformAdapter: { showDirectoryPicker: () => ipcRenderer.invoke('showDirectoryPicker'), @@ -16,31 +51,11 @@ export const electronInvokers = { callback(value as unknown as number), ), }, - interactions: { - parse: (sourceCode: string) => - ipcRenderer.invoke(FlowserIpcEvent.INTERACTIONS_PARSE, sourceCode), - getTemplates: () => - ipcRenderer.invoke(FlowserIpcEvent.INTERACTIONS_LIST_TEMPLATES), - }, - workspaces: { - open: (id: string) => - ipcRenderer.invoke(FlowserIpcEvent.WORKSPACES_OPEN, id), - close: (id: string) => - ipcRenderer.invoke(FlowserIpcEvent.WORKSPACES_CLOSE, id), - list: () => ipcRenderer.invoke(FlowserIpcEvent.WORKSPACES_LIST), - create: (createdWorkspace: FlowserWorkspace) => - ipcRenderer.invoke(FlowserIpcEvent.WORKSPACES_CREATE, createdWorkspace), - update: (updatedWorkspace: FlowserWorkspace) => - ipcRenderer.invoke(FlowserIpcEvent.WORKSPACES_UPDATE, updatedWorkspace), - findById: (id: string) => - ipcRenderer.invoke(FlowserIpcEvent.WORKSPACES_FIND_BY_ID, id), - remove: (id: string) => - ipcRenderer.invoke(FlowserIpcEvent.WORKSPACES_REMOVE, id), - getDefaultSettings: () => - ipcRenderer.invoke(FlowserIpcEvent.WORKSPACES_DEFAULT_SETTINGS), - }, + interactions, + workspaces, indexes: { getAll: (indexName: keyof FlowserIndexes) => ipcRenderer.invoke(FlowserIpcEvent.INDEX_GET_ALL, indexName), }, + flow, }; diff --git a/apps/electron/src/renderer/App.tsx b/apps/electron/src/renderer/App.tsx index 6c847d493..74ffe1468 100644 --- a/apps/electron/src/renderer/App.tsx +++ b/apps/electron/src/renderer/App.tsx @@ -63,7 +63,7 @@ export function App() { { + ): Promise { const response = await this.execute({ command: "get-address-index", arguments: [request.chainId, request.hexAddress], }); - return { index: Number(response.raw) }; + return Number(response.raw) } private execute(request: ExecuteGoBinRequest): Promise { @@ -78,7 +78,7 @@ export class GoBindingsService { childProcess.on("close", (code) => { if (code !== 0) { - reject(`Interaction parser exited with code: ${code}`); + reject(`Go executable exited with code: ${code}`); } else { resolve({ raw: rawResponse }); } diff --git a/packages/ui/src/accounts/AccountAvatar/AccountAvatar.tsx b/packages/ui/src/accounts/AccountAvatar/AccountAvatar.tsx index 8d01b38f0..df8eb77d1 100644 --- a/packages/ui/src/accounts/AccountAvatar/AccountAvatar.tsx +++ b/packages/ui/src/accounts/AccountAvatar/AccountAvatar.tsx @@ -51,10 +51,7 @@ export function AccountAvatar({ address, className, }: AccountAvatarProps): ReactElement | null { - const { data: addressIndex } = useGetAddressIndex({ - address, - chainId: "flow-emulator", - }); + const { data: addressIndex } = useGetAddressIndex(address); const avatarUrl = useMemo(() => { const isServiceAccount = [ diff --git a/packages/ui/src/api.ts b/packages/ui/src/api.ts index 1551c72a4..313e1b54c 100644 --- a/packages/ui/src/api.ts +++ b/packages/ui/src/api.ts @@ -221,14 +221,6 @@ export function useGetStateSnapshots(): SWRResponse { }); } -export function useGetAddressIndex(options: { - address: string; - chainId: "flow-emulator"; -}): SWRResponse { - // TODO(restructure): Implement - return useSWR("account-index", () => 0); -} - export function useGetWorkspaces(): SWRResponse { const { workspaceService } = useServiceRegistry(); @@ -253,6 +245,11 @@ export function useGetFlowCliInfo(): SWRResponse { return useSWR(`flow-cli`, () => flowService.getFlowCliInfo()); } +export function useGetAddressIndex(address: string): SWRResponse { + const { flowService } = useServiceRegistry(); + return useSWR(`account-index/${address}`, () => flowService.getIndexOfAddress(address)); +} + export function useGetParsedInteraction( request: InteractionDefinition ): SWRResponse { diff --git a/packages/ui/src/contexts/service-registry.context.tsx b/packages/ui/src/contexts/service-registry.context.tsx index b252c54f4..55a2a03d2 100644 --- a/packages/ui/src/contexts/service-registry.context.tsx +++ b/packages/ui/src/contexts/service-registry.context.tsx @@ -24,7 +24,7 @@ interface ISnapshotService extends IResourceIndexReader { rollback(request: any): Promise; } -interface IWorkspaceService { +export interface IWorkspaceService { remove(id: string): Promise; close(id: string): Promise; create(workspace: FlowserWorkspace): Promise; @@ -35,12 +35,12 @@ interface IWorkspaceService { getDefaultSettings(): Promise; } -interface IInteractionService { +export interface IInteractionService { parse(sourceCode: string): Promise; getTemplates(): Promise; } -interface IFlowService { +export interface IFlowService { getIndexOfAddress(address: string): Promise; getFlowCliInfo(): Promise; } From 6dd7b7ee59dbba92475b52b34ca0252814d40b54 Mon Sep 17 00:00:00 2001 From: Bart Date: Sun, 22 Oct 2023 14:43:16 +0200 Subject: [PATCH 033/100] fix interaction templates retrieval --- apps/electron/src/main/ipc/handlers.ts | 3 +-- packages/api/src/resources.ts | 2 +- packages/nodejs/src/flow-emulator.service.ts | 15 ++++++++------- packages/nodejs/src/go-bindings.service.ts | 4 ---- 4 files changed, 10 insertions(+), 14 deletions(-) diff --git a/apps/electron/src/main/ipc/handlers.ts b/apps/electron/src/main/ipc/handlers.ts index c8a99fc89..45e038a2a 100644 --- a/apps/electron/src/main/ipc/handlers.ts +++ b/apps/electron/src/main/ipc/handlers.ts @@ -70,8 +70,7 @@ export function registerHandlers(flowserAppService: FlowserAppService) { // TODO(restructure): Handle this differently const openWorkspaces = await workspaceService.getOpenWorkspaces(); return flowInteractionsService.getTemplates({ - // TODO(restructure): Move `workingDirectoryPath` to top-level - workspacePath: openWorkspaces[0].emulator!.workingDirectoryPath, + workspacePath: openWorkspaces[0].filesystemPath, }); }, ); diff --git a/packages/api/src/resources.ts b/packages/api/src/resources.ts index 1e19ef56f..12c21adde 100644 --- a/packages/api/src/resources.ts +++ b/packages/api/src/resources.ts @@ -306,6 +306,7 @@ export enum ProcessOutputSource { export interface FlowserWorkspace extends TimestampedResource { id: string; name: string; + filesystemPath: string; emulator: FlowEmulatorConfig | undefined; gateway: FlowGatewayConfig | undefined; } @@ -315,7 +316,6 @@ export interface FlowGatewayConfig { } export interface FlowEmulatorConfig { - workingDirectoryPath: string; verboseLogging: boolean; logFormat: string; restServerPort: number; diff --git a/packages/nodejs/src/flow-emulator.service.ts b/packages/nodejs/src/flow-emulator.service.ts index 5e2474e24..19fb37568 100644 --- a/packages/nodejs/src/flow-emulator.service.ts +++ b/packages/nodejs/src/flow-emulator.service.ts @@ -13,14 +13,17 @@ export enum FlowEmulatorEvent { APIS_STARTED = "APIS_STARTED", } +type StartEmulatorRequest = { + workspacePath: string; + config: FlowEmulatorConfig; +} + export class FlowEmulatorService extends EventEmitter { public static readonly processId = "emulator"; private process: ManagedProcess | undefined; - private config: FlowEmulatorConfig; constructor(private processManagerService: ProcessManagerService) { super(); - this.config = this.getDefaultConfig(); } async stopAndCleanup() { @@ -28,15 +31,15 @@ export class FlowEmulatorService extends EventEmitter { this.processManagerService.get(FlowEmulatorService.processId)?.clearLogs(); } - async start(config: FlowEmulatorConfig) { + async start(request: StartEmulatorRequest) { this.process = new ManagedProcess({ id: FlowEmulatorService.processId, name: "Flow emulator", command: { name: "flow", - args: ["emulator", ...this.getProcessFlags(config)], + args: ["emulator", ...this.getProcessFlags(request.config)], options: { - cwd: config.workingDirectoryPath, + cwd: request.workspacePath, }, }, }); @@ -53,8 +56,6 @@ export class FlowEmulatorService extends EventEmitter { public getDefaultConfig(): FlowEmulatorConfig { // Some default values vary from the ones used in Flow CLI. return { - // TODO(restructure): Would it make sense to store dir path in a separate struct? - workingDirectoryPath: "", verboseLogging: false, enableRestDebug: false, restServerPort: 8888, diff --git a/packages/nodejs/src/go-bindings.service.ts b/packages/nodejs/src/go-bindings.service.ts index d731061fb..d5c6faca7 100644 --- a/packages/nodejs/src/go-bindings.service.ts +++ b/packages/nodejs/src/go-bindings.service.ts @@ -12,10 +12,6 @@ export interface GetAddressIndexRequest { hexAddress: string; } -export interface GetAddressIndexResponse { - index: number; -} - type ExecuteGoBinRequest = { command: string; arguments: string[]; From 4d130a69d1d35589da3e6ce175cf879ab042ed22 Mon Sep 17 00:00:00 2001 From: Bart Date: Sun, 22 Oct 2023 19:42:19 +0200 Subject: [PATCH 034/100] update electron config, package go executables in electron --- apps/electron/package.json | 27 ++++++++++++------- apps/electron/release/app/package-lock.json | 8 +++--- apps/electron/release/app/package.json | 12 ++++----- .../src/services/flowser-app.service.ts | 5 +++- package.json | 11 +++++--- packages/nodejs/build-go-bindings.sh | 9 ++++--- packages/nodejs/package.json | 2 +- packages/nodejs/src/go-bindings.service.ts | 27 ++++++++++--------- 8 files changed, 60 insertions(+), 41 deletions(-) diff --git a/apps/electron/package.json b/apps/electron/package.json index 5330c602a..af9b5b402 100644 --- a/apps/electron/package.json +++ b/apps/electron/package.json @@ -1,7 +1,7 @@ { "name": "@onflowser/electron", "version": "3.0.0", - "description": "A foundation for scalable desktop apps", + "description": "Supercharged development on Flow blockchain ⚡", "keywords": [ "electron", "boilerplate", @@ -181,8 +181,8 @@ "webpack-merge": "^5.9.0" }, "build": { - "productName": "ElectronReact", - "appId": "org.erb.ElectronReact", + "productName": "Flowser", + "appId": "dev.flowser.app", "asar": true, "asarUnpack": "**\\*.{node,dll}", "files": [ @@ -236,17 +236,26 @@ "output": "release/build" }, "extraResources": [ - "./assets/**" + "./assets/**", + { + "from": "../../packages/nodejs/bin/flowser-internal-amd64-darwin", + "to": "." + }, + { + "from": "../../packages/nodejs/bin/flowser-internal-amd64-linux", + "to": "." + }, + { + "from": "../../packages/nodejs/bin/flowser-internal-amd64.exe", + "to": "." + } ], "publish": { "provider": "github", - "owner": "electron-react-boilerplate", - "repo": "electron-react-boilerplate" + "owner": "onflowser", + "repo": "flowser" } }, - "collective": { - "url": "https://opencollective.com/electron-react-boilerplate-594" - }, "devEngines": { "node": ">=14.x", "npm": ">=7.x" diff --git a/apps/electron/release/app/package-lock.json b/apps/electron/release/app/package-lock.json index 351a9dab9..5c56204c4 100644 --- a/apps/electron/release/app/package-lock.json +++ b/apps/electron/release/app/package-lock.json @@ -1,12 +1,12 @@ { - "name": "electron-react-boilerplate", - "version": "4.6.0", + "name": "flowser", + "version": "3.1.0", "lockfileVersion": 2, "requires": true, "packages": { "": { - "name": "electron-react-boilerplate", - "version": "4.6.0", + "name": "flowser", + "version": "3.1.0", "hasInstallScript": true, "license": "MIT" } diff --git a/apps/electron/release/app/package.json b/apps/electron/release/app/package.json index de2f9ac9c..4ea1c8466 100644 --- a/apps/electron/release/app/package.json +++ b/apps/electron/release/app/package.json @@ -1,12 +1,12 @@ { - "name": "electron-react-boilerplate", - "version": "4.6.0", - "description": "A foundation for scalable desktop apps", + "name": "flowser", + "version": "3.1.0", + "description": "Supercharged development on Flow blockchain ⚡", "license": "MIT", "author": { - "name": "Electron React Boilerplate Maintainers", - "email": "electronreactboilerplate@gmail.com", - "url": "https://github.com/electron-react-boilerplate" + "name": "Flowser", + "email": "bart@flowser.dev", + "url": "https://github.com/onflowser/flowser" }, "main": "./dist/main/main.js", "scripts": { diff --git a/apps/electron/src/services/flowser-app.service.ts b/apps/electron/src/services/flowser-app.service.ts index d9312d2f1..f9402c738 100644 --- a/apps/electron/src/services/flowser-app.service.ts +++ b/apps/electron/src/services/flowser-app.service.ts @@ -62,7 +62,10 @@ export class FlowserAppService { this.flowAccountStorageService = new FlowAccountStorageService( this.flowGatewayService, ); - this.goBindingsService = new GoBindingsService(); + this.goBindingsService = new GoBindingsService({ + // TODO(restructure): Test if this works on windows/linux + binDirPath: process.resourcesPath, + }); this.flowInteractionsService = new FlowInteractionsService( this.goBindingsService, ); diff --git a/package.json b/package.json index 24aab3637..fdfda90c4 100644 --- a/package.json +++ b/package.json @@ -39,10 +39,13 @@ "node": ">=14.0.0" }, "packageManager": "yarn@1.22.19", - "workspaces": [ - "packages/*", - "apps/*" - ], + "workspaces": { + "packages": [ + "packages/*", + "apps/*" + ], + "nohoist": ["apps/electron"] + }, "resolutions": { "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/packages/nodejs/build-go-bindings.sh b/packages/nodejs/build-go-bindings.sh index 1d2a0c61d..cb71307c4 100644 --- a/packages/nodejs/build-go-bindings.sh +++ b/packages/nodejs/build-go-bindings.sh @@ -1,4 +1,5 @@ -EXEC_PATH=bin/internal +EXEC_PATH=bin +BIN_PREFIX=flowser-internal SOURCE_PATH=../../internal/main.go # Technically, only 64bit architectures are supported, since @@ -10,11 +11,11 @@ SOURCE_PATH=../../internal/main.go # https://freshman.tech/snippets/go/cross-compile-go-programs # Windows -GOOS=windows GOARCH=amd64 go build -o "${EXEC_PATH}-amd64.exe" "${SOURCE_PATH}" +GOOS=windows GOARCH=amd64 go build -o "${EXEC_PATH}/${BIN_PREFIX}-amd64.exe" "${SOURCE_PATH}" # MacOS -GOOS=darwin GOARCH=amd64 go build -o "${EXEC_PATH}-amd64-darwin" "${SOURCE_PATH}" +GOOS=darwin GOARCH=amd64 go build -o "${EXEC_PATH}/${BIN_PREFIX}-amd64-darwin" "${SOURCE_PATH}" # Linux -GOOS=linux GOARCH=amd64 go build -o "${EXEC_PATH}-amd64-linux" "${SOURCE_PATH}" +GOOS=linux GOARCH=amd64 go build -o "${EXEC_PATH}/${BIN_PREFIX}-amd64-linux" "${SOURCE_PATH}" diff --git a/packages/nodejs/package.json b/packages/nodejs/package.json index 4d67fdf9c..bcc9adc4d 100644 --- a/packages/nodejs/package.json +++ b/packages/nodejs/package.json @@ -9,7 +9,7 @@ "build-bin": "sh build-go-bindings.sh" }, "keywords": [], - "files": ["./bin"], + "files": ["bin"], "author": "", "license": "ISC", "dependencies": { diff --git a/packages/nodejs/src/go-bindings.service.ts b/packages/nodejs/src/go-bindings.service.ts index d5c6faca7..828510748 100644 --- a/packages/nodejs/src/go-bindings.service.ts +++ b/packages/nodejs/src/go-bindings.service.ts @@ -22,7 +22,18 @@ type ExecuteGoBinResponse = { raw: string; }; +type GoBindingsConfig = { + // Path to the directory, which contains the compiled Go binding file(s). + binDirPath: string; +} + export class GoBindingsService { + private config: GoBindingsConfig; + + constructor(config: GoBindingsConfig) { + this.config = config; + } + public async getParsedInteraction( request: GetParsedInteractionRequest ): Promise { @@ -83,25 +94,17 @@ export class GoBindingsService { } private getExecutablePath(): string { - // When running this within electron env, - // make sure to reference the executable in unpacked asar folder. - // This is a hacky solution, but it's also the simplest one for now. - // For more context, see: - // - https://github.com/epsitec-sa/hazardous#what-is-the-real-purpose-of-asarunpacked - // - https://github.com/electron/electron/issues/6262#issuecomment-273312942 - return path - .join(__dirname, "..", "bin", this.getExecutableName()) - .replace(`app.asar${path.sep}`, `app.asar.unpacked${path.sep}`); + return path.join(this.config.binDirPath, this.getExecutableName()) } private getExecutableName(): string { switch (os.platform()) { case "darwin": - return "internal-amd64-darwin"; + return "flowser-internal-amd64-darwin"; case "linux": - return "internal-amd64-linux"; + return "flowser-internal-amd64-linux"; case "win32": - return "internal-amd64.exe"; + return "flowser-internal-amd64.exe"; default: throw new Error(`Unsupported platform: ${os.platform()}`); } From 3ae6ee0e8dacd027bc929d1ec6e89b8deb0aa956 Mon Sep 17 00:00:00 2001 From: Bart Date: Sun, 22 Oct 2023 19:49:23 +0200 Subject: [PATCH 035/100] move electron builder config to yaml file --- apps/electron/electron-builder.yml | 60 +++++++++++++++++++++++ apps/electron/package.json | 76 ------------------------------ 2 files changed, 60 insertions(+), 76 deletions(-) create mode 100644 apps/electron/electron-builder.yml diff --git a/apps/electron/electron-builder.yml b/apps/electron/electron-builder.yml new file mode 100644 index 000000000..b6faa2ab8 --- /dev/null +++ b/apps/electron/electron-builder.yml @@ -0,0 +1,60 @@ +productName: Flowser +appId: dev.flowser.app +asar: true +asarUnpack: "**\\*.{node,dll}" +files: + - dist + - node_modules + - package.json +afterSign: ".erb/scripts/notarize.js" + +mac: + target: + target: default + arch: + - arm64 + - x64 + type: distribution + hardenedRuntime: true + entitlements: assets/entitlements.mac.plist + entitlementsInherit: assets/entitlements.mac.plist + gatekeeperAssess: false + +dmg: + contents: + - x: 130 + y: 220 + - x: 410 + y: 220 + type: link + path: "/Applications" + +win: + target: + - nsis + +linux: + target: + - AppImage + category: Development + +directories: + app: release/app + buildResources: assets + output: release/build + +extraResources: + - "./assets/**" + # To reference files outside the electron directory we need to use the FileSet API. + # See: https://github.com/electron-userland/electron-builder/issues/2693 + - from: "../../packages/nodejs/bin/flowser-internal-amd64-darwin" + to: "." + - from: "../../packages/nodejs/bin/flowser-internal-amd64-linux" + to: "." + - from: "../../packages/nodejs/bin/flowser-internal-amd64.exe" + to: "." + +publish: + provider: github + owner: onflowser + repo: flowser diff --git a/apps/electron/package.json b/apps/electron/package.json index af9b5b402..c0062e026 100644 --- a/apps/electron/package.json +++ b/apps/electron/package.json @@ -180,82 +180,6 @@ "webpack-dev-server": "^4.15.1", "webpack-merge": "^5.9.0" }, - "build": { - "productName": "Flowser", - "appId": "dev.flowser.app", - "asar": true, - "asarUnpack": "**\\*.{node,dll}", - "files": [ - "dist", - "node_modules", - "package.json" - ], - "afterSign": ".erb/scripts/notarize.js", - "mac": { - "target": { - "target": "default", - "arch": [ - "arm64", - "x64" - ] - }, - "type": "distribution", - "hardenedRuntime": true, - "entitlements": "assets/entitlements.mac.plist", - "entitlementsInherit": "assets/entitlements.mac.plist", - "gatekeeperAssess": false - }, - "dmg": { - "contents": [ - { - "x": 130, - "y": 220 - }, - { - "x": 410, - "y": 220, - "type": "link", - "path": "/Applications" - } - ] - }, - "win": { - "target": [ - "nsis" - ] - }, - "linux": { - "target": [ - "AppImage" - ], - "category": "Development" - }, - "directories": { - "app": "release/app", - "buildResources": "assets", - "output": "release/build" - }, - "extraResources": [ - "./assets/**", - { - "from": "../../packages/nodejs/bin/flowser-internal-amd64-darwin", - "to": "." - }, - { - "from": "../../packages/nodejs/bin/flowser-internal-amd64-linux", - "to": "." - }, - { - "from": "../../packages/nodejs/bin/flowser-internal-amd64.exe", - "to": "." - } - ], - "publish": { - "provider": "github", - "owner": "onflowser", - "repo": "flowser" - } - }, "devEngines": { "node": ">=14.x", "npm": ">=7.x" From 6cd1e6b75f95445fef2506c7ea97299b884a283a Mon Sep 17 00:00:00 2001 From: Bart Date: Sun, 22 Oct 2023 20:03:05 +0200 Subject: [PATCH 036/100] fix binary files path in development --- apps/electron/src/services/flowser-app.service.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/apps/electron/src/services/flowser-app.service.ts b/apps/electron/src/services/flowser-app.service.ts index f9402c738..64ad3a4af 100644 --- a/apps/electron/src/services/flowser-app.service.ts +++ b/apps/electron/src/services/flowser-app.service.ts @@ -21,6 +21,7 @@ import { ProcessManagerService, FlowCliService, } from '@onflowser/nodejs'; +import path from 'path'; import { WorkspaceService } from './workspace.service'; export type FlowserIndexes = { @@ -64,7 +65,10 @@ export class FlowserAppService { ); this.goBindingsService = new GoBindingsService({ // TODO(restructure): Test if this works on windows/linux - binDirPath: process.resourcesPath, + binDirPath: + process.env.NODE_ENV === 'development' + ? path.join(__dirname, '../../../../', 'packages', 'nodejs', 'bin') + : process.resourcesPath, }); this.flowInteractionsService = new FlowInteractionsService( this.goBindingsService, From 22c46e6bcdea1407dc543190ce53a13fcc1785e9 Mon Sep 17 00:00:00 2001 From: Bart Date: Sun, 22 Oct 2023 21:49:33 +0200 Subject: [PATCH 037/100] consolidate fcl interactions (first pass) --- apps/electron/src/main/ipc/events.ts | 8 +- apps/electron/src/main/ipc/handlers.ts | 134 ++++++++++-------- apps/electron/src/main/ipc/invokers.ts | 9 ++ apps/electron/src/renderer/App.tsx | 1 - apps/electron/src/renderer/router.tsx | 17 +-- .../src/services/flowser-app.service.ts | 12 ++ packages/api/src/resources.ts | 16 ++- packages/core/src/fcl-value.ts | 8 +- packages/core/src/flow-gateway.service.ts | 10 +- packages/core/src/flow-indexer.service.ts | 17 ++- packages/nodejs/src/index.ts | 1 + packages/nodejs/src/wallet.service.ts | 62 ++------ packages/ui/src/contexts/flow.context.tsx | 40 ------ .../src/contexts/service-registry.context.tsx | 26 +++- .../ExecutionSettings/ExecutionSettings.tsx | 2 +- .../InteractionLabel/InteractionLabel.tsx | 7 +- .../AddressBuilder/AddressBuilder.tsx | 16 +-- .../interactions/contexts/outcome.context.tsx | 127 ++++++----------- 18 files changed, 224 insertions(+), 289 deletions(-) delete mode 100644 packages/ui/src/contexts/flow.context.tsx diff --git a/apps/electron/src/main/ipc/events.ts b/apps/electron/src/main/ipc/events.ts index 9be3371ee..c43613dff 100644 --- a/apps/electron/src/main/ipc/events.ts +++ b/apps/electron/src/main/ipc/events.ts @@ -13,7 +13,9 @@ export enum FlowserIpcEvent { INTERACTIONS_PARSE = 'INTERACTIONS_PARSE', INTERACTIONS_LIST_TEMPLATES = 'INTERACTIONS_LIST_TEMPLATES', - FLOW_GET_INDEX_OF_ADDRESS = "FLOW_GET_INDEX_OF_ADDRESS", - FLOW_GET_CLI_INFO = "FLOW_GET_CLI_INFO", - + FLOW_GET_INDEX_OF_ADDRESS = 'FLOW_GET_INDEX_OF_ADDRESS', + FLOW_GET_CLI_INFO = 'FLOW_GET_CLI_INFO', + FLOW_SEND_TRANSACTION = 'FLOW_SEND_TRANSACTION', + FLOW_EXECUTE_SCRIPT = 'FLOW_EXECUTE_SCRIPT', + FLOW_CREATE_ACCOUNT = 'FLOW_CREATE_ACCOUNT', } diff --git a/apps/electron/src/main/ipc/handlers.ts b/apps/electron/src/main/ipc/handlers.ts index 45e038a2a..fcf61a5b7 100644 --- a/apps/electron/src/main/ipc/handlers.ts +++ b/apps/electron/src/main/ipc/handlers.ts @@ -1,11 +1,20 @@ import { ipcMain, IpcMainInvokeEvent } from 'electron'; import { FlowserWorkspace } from '@onflowser/api'; +import { + ExecuteScriptRequest, + SendTransactionRequest, +} from '@onflowser/ui/src/contexts/service-registry.context'; import { FlowserIpcEvent } from './events'; import { FlowserAppService, FlowserIndexes, } from '../../services/flowser-app.service'; +type EventListener = ( + event: IpcMainInvokeEvent, + ...args: any[] +) => Promise | any; + export function registerHandlers(flowserAppService: FlowserAppService) { const { workspaceService, @@ -13,59 +22,45 @@ export function registerHandlers(flowserAppService: FlowserAppService) { flowInteractionsService, flowCliService, goBindingsService, + flowGatewayService, + walletService, } = flowserAppService; - // Workspaces - ipcMain.handle(FlowserIpcEvent.WORKSPACES_LIST, () => - workspaceService.list(), - ); - ipcMain.handle( - FlowserIpcEvent.WORKSPACES_REMOVE, - (e: IpcMainInvokeEvent, id: string) => workspaceService.remove(id), - ); - ipcMain.handle( - FlowserIpcEvent.WORKSPACES_CLOSE, - (e: IpcMainInvokeEvent, id: string) => workspaceService.close(id), - ); - ipcMain.handle( - FlowserIpcEvent.WORKSPACES_OPEN, - (e: IpcMainInvokeEvent, id: string) => workspaceService.open(id), - ); - ipcMain.handle( - FlowserIpcEvent.WORKSPACES_CREATE, - (e: IpcMainInvokeEvent, createdWorkspace: FlowserWorkspace) => - workspaceService.create(createdWorkspace), - ); - ipcMain.handle( - FlowserIpcEvent.WORKSPACES_UPDATE, - (e: IpcMainInvokeEvent, updatedWorkspace: FlowserWorkspace) => - workspaceService.update(updatedWorkspace), - ); - ipcMain.handle( - FlowserIpcEvent.WORKSPACES_FIND_BY_ID, - (e: IpcMainInvokeEvent, id: string) => workspaceService.findById(id), - ); - ipcMain.handle( - FlowserIpcEvent.WORKSPACES_DEFAULT_SETTINGS, - (e: IpcMainInvokeEvent) => workspaceService.getDefaultSettings(), - ); + const handlers: Record = { + [FlowserIpcEvent.WORKSPACES_CLOSE]: (e: IpcMainInvokeEvent, id: string) => + workspaceService.close(id), + [FlowserIpcEvent.WORKSPACES_OPEN]: (e: IpcMainInvokeEvent, id: string) => + workspaceService.open(id), + [FlowserIpcEvent.WORKSPACES_CREATE]: ( + e: IpcMainInvokeEvent, + createdWorkspace: FlowserWorkspace, + ) => workspaceService.create(createdWorkspace), + [FlowserIpcEvent.WORKSPACES_UPDATE]: ( + e: IpcMainInvokeEvent, + updatedWorkspace: FlowserWorkspace, + ) => workspaceService.update(updatedWorkspace), + [FlowserIpcEvent.WORKSPACES_LIST]: () => workspaceService.list(), + [FlowserIpcEvent.WORKSPACES_FIND_BY_ID]: ( + e: IpcMainInvokeEvent, + id: string, + ) => workspaceService.findById(id), + [FlowserIpcEvent.WORKSPACES_REMOVE]: (e: IpcMainInvokeEvent, id: string) => + workspaceService.remove(id), + [FlowserIpcEvent.WORKSPACES_DEFAULT_SETTINGS]: (e: IpcMainInvokeEvent) => + workspaceService.getDefaultSettings(), - // Indexes - ipcMain.handle( - FlowserIpcEvent.INDEX_GET_ALL, - (event: IpcMainInvokeEvent, indexName: keyof FlowserIndexes) => - indexes[indexName].findAll(), - ); + [FlowserIpcEvent.INDEX_GET_ALL]: ( + event: IpcMainInvokeEvent, + indexName: keyof FlowserIndexes, + ) => indexes[indexName].findAll(), - // Interactions - ipcMain.handle( - FlowserIpcEvent.INTERACTIONS_PARSE, - (event: IpcMainInvokeEvent, sourceCode: string) => - flowInteractionsService.parse(sourceCode), - ); - ipcMain.handle( - FlowserIpcEvent.INTERACTIONS_LIST_TEMPLATES, - async (event: IpcMainInvokeEvent) => { + [FlowserIpcEvent.INTERACTIONS_PARSE]: ( + event: IpcMainInvokeEvent, + sourceCode: string, + ) => flowInteractionsService.parse(sourceCode), + [FlowserIpcEvent.INTERACTIONS_LIST_TEMPLATES]: async ( + event: IpcMainInvokeEvent, + ) => { // There will be only 1 open workspace for now. // TODO(restructure): Handle this differently const openWorkspaces = await workspaceService.getOpenWorkspaces(); @@ -73,19 +68,40 @@ export function registerHandlers(flowserAppService: FlowserAppService) { workspacePath: openWorkspaces[0].filesystemPath, }); }, - ); - // Flow - ipcMain.handle( - FlowserIpcEvent.FLOW_GET_INDEX_OF_ADDRESS, - (event: IpcMainInvokeEvent, address: string) => + [FlowserIpcEvent.FLOW_GET_INDEX_OF_ADDRESS]: ( + event: IpcMainInvokeEvent, + address: string, + ) => goBindingsService.getIndexOfAddress({ hexAddress: address, chainId: 'flow-emulator', }), - ); - ipcMain.handle( - FlowserIpcEvent.FLOW_GET_CLI_INFO, - (event: IpcMainInvokeEvent) => flowCliService.getVersion(), - ); + [FlowserIpcEvent.FLOW_GET_CLI_INFO]: (event: IpcMainInvokeEvent) => + flowCliService.getVersion(), + [FlowserIpcEvent.FLOW_SEND_TRANSACTION]: ( + event: IpcMainInvokeEvent, + request: SendTransactionRequest, + ) => walletService.sendTransaction(request), + [FlowserIpcEvent.FLOW_EXECUTE_SCRIPT]: ( + event: IpcMainInvokeEvent, + request: ExecuteScriptRequest, + ) => flowGatewayService.executeScript(request), + [FlowserIpcEvent.FLOW_CREATE_ACCOUNT]: async ( + event: IpcMainInvokeEvent, + ) => { + // There will be only 1 open workspace for now. + // TODO(restructure): Handle this differently + const openWorkspaces = await workspaceService.getOpenWorkspaces(); + return walletService.createAccount({ + workspacePath: openWorkspaces[0].filesystemPath, + }); + }, + }; + + for (const eventName in handlers) { + const handler = handlers[eventName as FlowserIpcEvent]; + + ipcMain.handle(eventName, handler); + } } diff --git a/apps/electron/src/main/ipc/invokers.ts b/apps/electron/src/main/ipc/invokers.ts index eadbffd78..b1b6812ad 100644 --- a/apps/electron/src/main/ipc/invokers.ts +++ b/apps/electron/src/main/ipc/invokers.ts @@ -1,9 +1,11 @@ import { ipcRenderer } from 'electron'; import { FlowserWorkspace } from '@onflowser/api'; import { + ExecuteScriptRequest, IFlowService, IInteractionService, IWorkspaceService, + SendTransactionRequest, } from '@onflowser/ui/src/contexts/service-registry.context'; import { FlowserIpcEvent } from './events'; import { FlowserIndexes } from '../../services/flowser-app.service'; @@ -12,6 +14,13 @@ const flow: IFlowService = { getIndexOfAddress: (address: string) => ipcRenderer.invoke(FlowserIpcEvent.FLOW_GET_INDEX_OF_ADDRESS, address), getFlowCliInfo: () => ipcRenderer.invoke(FlowserIpcEvent.FLOW_GET_CLI_INFO), + sendTransaction: ( + request: SendTransactionRequest, + ): Promise<{ transactionId: string }> => + ipcRenderer.invoke(FlowserIpcEvent.FLOW_SEND_TRANSACTION, request), + executeScript: (request: ExecuteScriptRequest): Promise => + ipcRenderer.invoke(FlowserIpcEvent.FLOW_EXECUTE_SCRIPT, request), + createAccount: () => ipcRenderer.invoke(FlowserIpcEvent.FLOW_CREATE_ACCOUNT), }; const interactions: IInteractionService = { diff --git a/apps/electron/src/renderer/App.tsx b/apps/electron/src/renderer/App.tsx index 74ffe1468..6b0698c2a 100644 --- a/apps/electron/src/renderer/App.tsx +++ b/apps/electron/src/renderer/App.tsx @@ -76,7 +76,6 @@ export function App() { analyticsService, workspaceService: window.electron.workspaces, snapshotService: undefined as never, - walletService: undefined as never, }} > diff --git a/apps/electron/src/renderer/router.tsx b/apps/electron/src/renderer/router.tsx index f9a107e28..ebcfe2fc5 100644 --- a/apps/electron/src/renderer/router.tsx +++ b/apps/electron/src/renderer/router.tsx @@ -25,7 +25,6 @@ import { createCrumbHandle } from '@onflowser/ui/src/common/misc/Breadcrumbs/Bre import { TemplatesRegistryProvider } from '@onflowser/ui/src/interactions/contexts/templates.context'; import { BasicLayout } from '@onflowser/ui/src/common/layouts/BasicLayout/BasicLayout'; import { EventDetails } from '@onflowser/ui/src/events/EventDetails/EventDetails'; -import { FlowConfigProvider } from '@onflowser/ui/src/contexts/flow.context'; import { SnapshotsManagerProvider } from '@onflowser/ui/src/contexts/snapshots.context'; import FullScreenLoading from '@onflowser/ui/src/common/loaders/FullScreenLoading/FullScreenLoading'; import { useServiceRegistry } from '@onflowser/ui/src/contexts/service-registry.context'; @@ -38,8 +37,8 @@ import { useGetEvents, useGetTransactions, } from '@onflowser/ui/src/api'; -import { WorkspaceList } from "@onflowser/ui/src/workspaces/WorkspaceList/WorkspaceList"; -import { WorkspaceSettings } from "@onflowser/ui/src/workspaces/WorkspaceSettings/WorkspaceSettings"; +import { WorkspaceList } from '@onflowser/ui/src/workspaces/WorkspaceList/WorkspaceList'; +import { WorkspaceSettings } from '@onflowser/ui/src/workspaces/WorkspaceSettings/WorkspaceSettings'; function BrowserRouterEvents(props: { children: ReactNode }): ReactElement { const location = useLocation(); @@ -154,13 +153,11 @@ const routes: RouteObject[] = [ path: 'projects', element: ( - - - - - - - + + + + + ), handle: createCrumbHandle({ diff --git a/apps/electron/src/services/flowser-app.service.ts b/apps/electron/src/services/flowser-app.service.ts index 64ad3a4af..a4333476c 100644 --- a/apps/electron/src/services/flowser-app.service.ts +++ b/apps/electron/src/services/flowser-app.service.ts @@ -20,6 +20,8 @@ import { FlowEmulatorService, ProcessManagerService, FlowCliService, + WalletService, + FlowConfigService, } from '@onflowser/nodejs'; import path from 'path'; import { WorkspaceService } from './workspace.service'; @@ -45,9 +47,11 @@ export class FlowserAppService { public readonly goBindingsService: GoBindingsService; public readonly flowInteractionsService: FlowInteractionsService; public readonly flowCliService: FlowCliService; + public readonly walletService: WalletService; public readonly logger: IFlowserLogger; public readonly indexes: FlowserIndexes; private scheduler: AsyncIntervalScheduler; + private flowConfigService: FlowConfigService; constructor() { this.flowGatewayService = new FlowGatewayService(); @@ -91,6 +95,14 @@ export class FlowserAppService { this.flowGatewayService, this.flowInteractionsService, ); + this.flowConfigService = new FlowConfigService(this.logger); + this.walletService = new WalletService( + this.logger, + this.flowCliService, + this.flowGatewayService, + this.flowConfigService, + this.indexes.account, + ); this.scheduler = new AsyncIntervalScheduler({ name: 'Blockchain processing', pollingIntervalInMs: 500, diff --git a/packages/api/src/resources.ts b/packages/api/src/resources.ts index 12c21adde..b9e832c58 100644 --- a/packages/api/src/resources.ts +++ b/packages/api/src/resources.ts @@ -1,3 +1,5 @@ +import { FclValue } from "@onflowser/core"; + export enum CadenceTypeKind { CADENCE_TYPE_UNKNOWN = 0, CADENCE_TYPE_FIXED_POINT_NUMBER = 1, @@ -11,7 +13,7 @@ export enum CadenceTypeKind { } export enum InteractionKind { - INTERACTION_UNKNOWN = 1, + INTERACTION_UNKNOWN = 0, INTERACTION_SCRIPT = 1, INTERACTION_TRANSACTION = 2, } @@ -38,7 +40,7 @@ export interface CadenceInteraction_Transaction { export interface CadenceParameter { identifier: string; - type: CadenceType | undefined; + type: CadenceType; } export interface TimestampedResource { @@ -173,7 +175,7 @@ export interface FlowTransaction extends TimestampedResource { payer: string; proposalKey: TransactionProposalKey; status: TransactionStatus; - arguments: FlowTransactionArgument[]; + arguments: FclArgumentWithMetadata[]; authorizers: string[]; envelopeSignatures: SignableObject[]; payloadSignatures: SignableObject[]; @@ -185,11 +187,11 @@ export interface TransactionProposalKey { sequenceNumber: number; } -export interface FlowTransactionArgument { +export interface FclArgumentWithMetadata { identifier: string; - type: CadenceType | undefined; - valueAsJson: string; -} + value: FclValue; + type: CadenceType; +}; export interface CadenceType { kind: CadenceTypeKind; diff --git a/packages/core/src/fcl-value.ts b/packages/core/src/fcl-value.ts index 906b1f82f..ff2e8dc43 100644 --- a/packages/core/src/fcl-value.ts +++ b/packages/core/src/fcl-value.ts @@ -1,4 +1,4 @@ -import { CadenceType, CadenceTypeKind } from "@onflowser/api"; +import { CadenceType, CadenceTypeKind, FclArgumentWithMetadata } from "@onflowser/api"; // https://developers.flow.com/tooling/fcl-js/api#argumentfunction export type FclArgBuilder = (value: FclValue, type: unknown) => void; @@ -31,12 +31,6 @@ export type FclTextualValue = string; export type FclAddressValue = `0x${string}`; export type FclOptionalValue = FclRequiredValue | undefined; -export type FclArgumentWithMetadata = { - identifier: string; - value: FclValue; - type: CadenceType; -}; - export class FclValueUtils { private static readonly decimalNumberPattern = /[0-9]+\.[0-9]+/; diff --git a/packages/core/src/flow-gateway.service.ts b/packages/core/src/flow-gateway.service.ts index 0a16734f3..57127bca6 100644 --- a/packages/core/src/flow-gateway.service.ts +++ b/packages/core/src/flow-gateway.service.ts @@ -1,11 +1,11 @@ import { FclArgBuilder, - FclArgumentWithMetadata, - FclTypeLookup, - FclValueUtils, + FclTypeLookup, FclValue, + FclValueUtils } from "./fcl-value"; import * as fcl from "@onflow/fcl"; import axios from "axios"; +import { FclArgumentWithMetadata } from "@onflowser/api"; // https://docs.onflow.org/fcl/reference/api/#collectionguaranteeobject export type FlowCollectionGuarantee = { @@ -55,7 +55,7 @@ export type FlowCollection = { export type FlowTypeAnnotatedValue = { // https://developers.flow.com/tooling/fcl-js/api#ftype type: string; - value: Record; + value: FclValue; }; // https://docs.onflow.org/fcl/reference/api/#proposalkeyobject @@ -157,7 +157,7 @@ export class FlowGatewayService { }); } - public async executeScript(options: ExecuteFlowScriptOptions) { + public async executeScript(options: ExecuteFlowScriptOptions): Promise { return await fcl.query({ cadence: options.cadence, args: (arg: FclArgBuilder, t: FclTypeLookup) => { diff --git a/packages/core/src/flow-indexer.service.ts b/packages/core/src/flow-indexer.service.ts index 0b7cc4365..496f1a10e 100644 --- a/packages/core/src/flow-indexer.service.ts +++ b/packages/core/src/flow-indexer.service.ts @@ -11,6 +11,7 @@ import { FlowAccountStorageService } from "./flow-storage.service"; import { FlowApiStatus, FlowGatewayService } from "./flow-gateway.service"; import { ensurePrefixedAddress } from "./utils"; import { IFlowserLogger } from './logger'; +import { FclValue } from "./fcl-value"; // See https://developers.flow.com/cadence/language/core-events enum FlowCoreEventType { @@ -613,18 +614,22 @@ export class FlowIndexerService { // our own system of representing types with `CadenceType` message. function fromTypeAnnotatedFclArguments( object: flowResource.FlowTypeAnnotatedValue - ): unknown { + ): FclValue { const { type, value } = object; // Available type values are listed here: // https://developers.flow.com/tooling/fcl-js/api#ftype switch (type) { case "Dictionary": - return value.map((entry: any) => ({ + // TODO(restructure): Double check this + // @ts-ignore + return value?.map((entry: any) => ({ key: fromTypeAnnotatedFclArguments(entry.key), value: fromTypeAnnotatedFclArguments(entry.value), })); case "Array": - return value.map((element: any) => + // TODO(restructure): Double check this + // @ts-ignore + return value?.map((element: any) => fromTypeAnnotatedFclArguments(element) ); case "Path": @@ -649,12 +654,10 @@ export class FlowIndexerService { ), arguments: parsedInteraction.interaction?.parameters.map( - (parameter, index): flowserResource.FlowTransactionArgument => ({ + (parameter, index): flowserResource.FclArgumentWithMetadata => ({ identifier: parameter.identifier, type: parameter.type, - valueAsJson: JSON.stringify( - fromTypeAnnotatedFclArguments(transaction.args[index]) - ), + value: fromTypeAnnotatedFclArguments(transaction.args[index]), }) ) ?? [], proposalKey: { diff --git a/packages/nodejs/src/index.ts b/packages/nodejs/src/index.ts index eeec68f7a..fc731e13e 100644 --- a/packages/nodejs/src/index.ts +++ b/packages/nodejs/src/index.ts @@ -4,5 +4,6 @@ export * from "./flow-interactions.service"; export * from "./flow-emulator.service"; export * from "./flow-config.service"; export * from "./flow-cli.service"; +export * from "./wallet.service"; export * from "./processes/process-manager.service" export * from "./processes/managed-process" diff --git a/packages/nodejs/src/wallet.service.ts b/packages/nodejs/src/wallet.service.ts index ecef5ed2e..54853a1ba 100644 --- a/packages/nodejs/src/wallet.service.ts +++ b/packages/nodejs/src/wallet.service.ts @@ -3,8 +3,6 @@ import { SHA3 } from "sha3"; import { FlowCliService, KeyWithWeight } from "./flow-cli.service"; import { ensurePrefixedAddress, IFlowserLogger } from "@onflowser/core"; import { - FclArgumentWithMetadata, - FclValueUtils, FlowAuthorizationFunction, FlowGatewayService, } from "@onflowser/core"; @@ -12,10 +10,9 @@ import * as flowserResource from "@onflowser/api"; import { FlowAccountKey, FlowAccount, - FlowTransactionArgument, HashAlgorithm, IResourceIndex, - SignatureAlgorithm, + SignatureAlgorithm, FclArgumentWithMetadata } from "@onflowser/api"; import { FlowConfigService } from "./flow-config.service"; @@ -27,7 +24,7 @@ export interface SendTransactionRequest { proposerAddress: string; payerAddress: string; authorizerAddresses: string[]; - arguments: FlowTransactionArgument[]; + arguments: FclArgumentWithMetadata[]; } export interface SendTransactionResponse { @@ -35,7 +32,7 @@ export interface SendTransactionResponse { } type CreateAccountRequest = { - projectRootPath: string; + workspacePath: string; }; const ec: EC = new EC("p256"); @@ -81,30 +78,6 @@ export class WalletService { } const authorizationFunctionsByAddress = new Map(authorizationFunctions); - const fclArguments = request.arguments.map( - (arg): FclArgumentWithMetadata => { - const { identifier, type, valueAsJson } = arg; - - if (!type) { - throw new Error("Expecting argument type"); - } - - const parsedValue = JSON.parse(valueAsJson); - const value = - parsedValue === "" && type.optional ? undefined : parsedValue; - - if (!FclValueUtils.isFclValue(value)) { - throw new Error("Value not a fcl value"); - } - - return { - identifier, - type, - value, - }; - } - ); - return this.flowGateway.sendTransaction({ cadence: request.cadence, proposer: getAuthFunction(request.proposerAddress), @@ -112,7 +85,7 @@ export class WalletService { authorizations: request.authorizerAddresses.map((address) => getAuthFunction(address) ), - arguments: fclArguments, + arguments: request.arguments, }); } @@ -176,16 +149,7 @@ export class WalletService { }; const account: FlowAccount = { - balance: 0, - blockId: "", - code: "", - createdAt: undefined, - deletedAt: undefined, - isDefaultAccount: false, - tags: [], - updatedAt: undefined, - id: accountAddress, - address: accountAddress, + ...this.createDefaultAccount(accountAddress), // TODO(restructure): Add logic for generating tags // https://github.com/onflowser/flowser/pull/197/files#diff-de96e521dbe8391acff7b4c46768d9f51d90d5e30378600a41a57d14bb173f75L97-L116 keys: [key], @@ -220,11 +184,11 @@ export class WalletService { // multiple keys with (possibly) different weights. const generatedKeyPairs = await Promise.all([ this.cliService.generateKey({ - projectRootPath: options.projectRootPath, + projectRootPath: options.workspacePath, }), ]); const generatedAccount = await this.cliService.createAccount({ - projectRootPath: options.projectRootPath, + projectRootPath: options.workspacePath, keys: generatedKeyPairs.map( (key): KeyWithWeight => ({ weight: defaultKeyWeight, @@ -234,8 +198,8 @@ export class WalletService { }); const accountAddress = ensurePrefixedAddress(generatedAccount.address); - await this.accountIndex.update({ - id: accountAddress, + await this.accountIndex.add({ + ...this.createDefaultAccount(accountAddress), keys: generatedKeyPairs.map((generatedKey) => { return { ...this.createDefaultKey(accountAddress), @@ -245,7 +209,7 @@ export class WalletService { publicKey: generatedKey.public, privateKey: generatedKey.private, }; - }), + }) }); // TODO(restructure): Update flow.json and regenerate accounts on next run? @@ -318,15 +282,15 @@ export class WalletService { }; } - private createDefaultAccount(): FlowAccount { + private createDefaultAccount(address: string): FlowAccount { return { - address: "", + id: address, + address, balance: 0, blockId: "", code: "", createdAt: undefined, deletedAt: undefined, - id: "", isDefaultAccount: false, keys: [], tags: [], diff --git a/packages/ui/src/contexts/flow.context.tsx b/packages/ui/src/contexts/flow.context.tsx deleted file mode 100644 index 171f1fb86..000000000 --- a/packages/ui/src/contexts/flow.context.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import React, { createContext, ReactElement, useEffect } from "react"; -import * as fcl from "@onflow/fcl"; -import { useProjectManager } from "./workspace.context"; -import { useGetFlowJson } from "../api"; - -const FlowConfigContext = createContext({}); - -/** - * Manages FCL-JS configuration for the whole app. - */ -export function FlowConfigProvider({ - children, -}: { - children: ReactElement; -}): ReactElement { - const { currentWorkspace } = useProjectManager(); - const { data: flowJSON } = useGetFlowJson(); - - useEffect(() => { - if (currentWorkspace && flowJSON) { - const accessNodePort = currentWorkspace.emulator?.restServerPort ?? 8888; - fcl - .config({ - "app.detail.icon": `http://localhost:6061/icon.png`, - "app.detail.title": "Flowser", - "accessNode.api": `http://localhost:${accessNodePort}`, - "flow.network": "local", - }) - .load({ - flowJSON: JSON.parse(flowJSON), - }); - } - }, [currentWorkspace, flowJSON]); - - return ( - - {children} - - ); -} diff --git a/packages/ui/src/contexts/service-registry.context.tsx b/packages/ui/src/contexts/service-registry.context.tsx index 55a2a03d2..f5217d551 100644 --- a/packages/ui/src/contexts/service-registry.context.tsx +++ b/packages/ui/src/contexts/service-registry.context.tsx @@ -1,5 +1,6 @@ import { createContext, ReactNode, useContext } from "react"; import { + FclArgumentWithMetadata, FlowAccount, FlowAccountStorage, FlowBlock, FlowCliInfo, @@ -10,12 +11,7 @@ import { FlowTransaction, InteractionTemplate, IResourceIndexReader, ManagedProcessOutput, ParsedInteractionOrError } from "@onflowser/api"; - -interface IWalletService { - // TODO(restructure): Provide request/response type - sendTransaction(request: any): Promise; - createAccount(): Promise; -} +import { FlowAuthorizationFunction } from "@onflowser/core"; interface ISnapshotService extends IResourceIndexReader { // TODO(restructure): Provide request/response type @@ -40,7 +36,24 @@ export interface IInteractionService { getTemplates(): Promise; } +export type SendTransactionRequest = { + // TODO(restructure): These should probably be of type FlowAuthorizationFunction when generalizing for web version + cadence: string; + proposerAddress: string; + payerAddress: string; + authorizerAddresses: string[]; + arguments: FclArgumentWithMetadata[]; +}; + +export type ExecuteScriptRequest = { + cadence: string; + arguments: FclArgumentWithMetadata[]; +}; + export interface IFlowService { + sendTransaction(request: SendTransactionRequest): Promise<{ transactionId: string }>; + executeScript(request: ExecuteScriptRequest): Promise; + createAccount(): Promise; getIndexOfAddress(address: string): Promise; getFlowCliInfo(): Promise; } @@ -58,7 +71,6 @@ interface IMonitoringService { type ServiceRegistry = { interactionsService: IInteractionService; flowService: IFlowService; - walletService: IWalletService; snapshotService: ISnapshotService; workspaceService: IWorkspaceService; analyticsService: IAnalyticsService; diff --git a/packages/ui/src/interactions/components/ExecutionSettings/ExecutionSettings.tsx b/packages/ui/src/interactions/components/ExecutionSettings/ExecutionSettings.tsx index 638f0b6a8..0ce614db1 100644 --- a/packages/ui/src/interactions/components/ExecutionSettings/ExecutionSettings.tsx +++ b/packages/ui/src/interactions/components/ExecutionSettings/ExecutionSettings.tsx @@ -287,7 +287,7 @@ function AuthorizerSettings() { function setProposerByIndex(address: FclValue, index: number) { if (!FclValueUtils.isFclAddressValue(address)) { - throw new Error("Expected address value"); + throw new Error(`Expected address value, found: ${address}`); } const newAuthorizers = [...authorizerAddresses]; newAuthorizers[index] = address; diff --git a/packages/ui/src/interactions/components/InteractionLabel/InteractionLabel.tsx b/packages/ui/src/interactions/components/InteractionLabel/InteractionLabel.tsx index 2b2ddc9e5..8acbe7ce1 100644 --- a/packages/ui/src/interactions/components/InteractionLabel/InteractionLabel.tsx +++ b/packages/ui/src/interactions/components/InteractionLabel/InteractionLabel.tsx @@ -5,6 +5,7 @@ import { Spinner } from "../../../common/loaders/Spinner/Spinner"; import classes from "./InteractionLabel.module.scss"; import { InteractionDefinition } from "../../core/core-types"; import { useGetParsedInteraction } from "../../../api"; +import { InteractionKind } from "@onflowser/api"; type InteractionLabelProps = { interaction: InteractionDefinition; @@ -18,14 +19,10 @@ export function InteractionLabel(props: InteractionLabelProps): ReactElement { return ; } - if (!data.interaction) { - return
    {data.error}
    - } - return (
    - +
    {interaction.name} diff --git a/packages/ui/src/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.tsx b/packages/ui/src/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.tsx index 052a0f18c..61e94c05e 100644 --- a/packages/ui/src/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.tsx +++ b/packages/ui/src/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.tsx @@ -1,4 +1,4 @@ -import React, { ReactElement, useEffect, useState } from "react"; +import React, { ReactElement, useEffect, useMemo, useState } from "react"; import classes from "./AddressBuilder.module.scss"; import { CadenceValueBuilder } from "../interface"; import { AccountAvatar } from "../../../../accounts/AccountAvatar/AccountAvatar"; @@ -14,12 +14,12 @@ import { useGetAccounts } from "../../../../api"; export function AddressBuilder(props: CadenceValueBuilder): ReactElement { const { disabled, value, setValue, addressBuilderOptions } = props; const { data, mutate } = useGetAccounts(); - const { walletService } = useServiceRegistry(); - const managedAccounts = addressBuilderOptions?.showManagedAccountsOnly + const { flowService } = useServiceRegistry(); + const managedAccounts = useMemo(() => addressBuilderOptions?.showManagedAccountsOnly ? data?.filter((account) => - account.keys.some((key) => key.privateKey !== "") - ) - : data; + account.keys.some((key) => key.privateKey !== "") + ) + : data, [addressBuilderOptions?.showManagedAccountsOnly, data]); // TODO(polish): Don't trigger this hook on every rerender // See: https://www.notion.so/flowser/Looks-like-polling-data-isn-t-properly-mutated-and-doesn-t-retrigger-the-useEffect-call-fb84a35b33fb4e6e8518c11cb30bd14d?pvs=4 @@ -31,10 +31,10 @@ export function AddressBuilder(props: CadenceValueBuilder): ReactElement { if (!FclValueUtils.isFclAddressValue(value) && defaultAccount) { setValue(defaultAccount.address); } - }); + }, [managedAccounts]); async function createNewAccount() { - await walletService.createAccount(); + await flowService.createAccount(); await mutate(); } diff --git a/packages/ui/src/interactions/contexts/outcome.context.tsx b/packages/ui/src/interactions/contexts/outcome.context.tsx index 565aaf0e2..1e04e02d9 100644 --- a/packages/ui/src/interactions/contexts/outcome.context.tsx +++ b/packages/ui/src/interactions/contexts/outcome.context.tsx @@ -3,22 +3,14 @@ import React, { ReactElement, ReactNode, useContext, - useMemo, + useState } from "react"; import { CommonUtils } from "../../utils/common-utils"; -import * as fcl from "@onflow/fcl"; import { useInteractionDefinitionManager } from "./definition.context"; import toast from "react-hot-toast"; import { InteractionDefinition, InteractionOutcome } from "../core/core-types"; -import { FlowTransactionArgument, InteractionKind } from "@onflowser/api"; -import { - FclArgBuilder, - FclArgumentWithMetadata, - FclTypeLookup, - FclValueUtils, -} from "@onflowser/core"; +import { FclArgumentWithMetadata, InteractionKind } from "@onflowser/api"; import { useServiceRegistry } from "../../contexts/service-registry.context"; -import useSWR from "swr"; type InteractionOutcomeManager = { outcome: InteractionOutcome | undefined; @@ -32,37 +24,27 @@ export function InteractionOutcomeManagerProvider(props: { }): ReactElement { const { definition, fclValuesByIdentifier, parsedInteraction } = useInteractionDefinitionManager(); - const { walletService } = useServiceRegistry(); - const { data, mutate } = useSWR( - `/interactions/execute/${JSON.stringify(definition)}`, - async () => { - if (!definition) { - throw new Error("Assertion error: Expected interaction value"); - } - if (!parsedInteraction) { - throw new Error("Interaction not parsed yet"); - } - switch (parsedInteraction.kind) { - case InteractionKind.INTERACTION_SCRIPT: - return executeScript(definition); - case InteractionKind.INTERACTION_TRANSACTION: - return executeTransaction(definition); - default: - // TODO(feature-interact-screen): If there are syntax errors, interaction will be treated as "unknown" - throw new Error( - `Can't execute interaction: ${parsedInteraction.kind}` - ); - } - } - ); - - const outcome = useMemo( - () => data ?? definition.initialOutcome, - [definition, data] - ); + const { flowService } = useServiceRegistry(); + const [outcome, setOutcome] = useState(); async function execute() { - await mutate(); + if (!definition) { + throw new Error("Assertion error: Expected interaction value"); + } + if (!parsedInteraction) { + throw new Error("Interaction not parsed yet"); + } + switch (parsedInteraction.kind) { + case InteractionKind.INTERACTION_SCRIPT: + return setOutcome(await executeScript(definition)); + case InteractionKind.INTERACTION_TRANSACTION: + return setOutcome(await executeTransaction(definition)); + default: + // TODO(feature-interact-screen): If there are syntax errors, interaction will be treated as "unknown" + throw new Error( + `Can't execute interaction: ${parsedInteraction.kind}` + ); + } } async function executeTransaction( @@ -72,9 +54,6 @@ export function InteractionOutcomeManagerProvider(props: { if (!transactionOptions) { throw new Error("Transaction options must be set"); } - if (!parsedInteraction) { - throw new Error("Interaction not parsed yet"); - } let hasErrors = false; const unspecifiedAuthorizers = transactionOptions.authorizerAddresses .map((value, index) => ({ value, index })) @@ -99,26 +78,12 @@ export function InteractionOutcomeManagerProvider(props: { return undefined; } try { - const result = await walletService.sendTransaction({ + const result = await flowService.sendTransaction({ cadence: definition.code, authorizerAddresses: transactionOptions.authorizerAddresses, proposerAddress: transactionOptions.proposerAddress, payerAddress: transactionOptions.payerAddress, - arguments: parsedInteraction.parameters.map( - (parameter): FlowTransactionArgument => { - if (!parameter.type) { - throw new Error("Expecting parameter type"); - } - return { - valueAsJson: - JSON.stringify( - fclValuesByIdentifier.get(parameter.identifier) - ) ?? "", - type: parameter.type, - identifier: parameter.identifier, - }; - } - ), + arguments: serializeParameters(), }); return { transaction: { @@ -136,30 +101,11 @@ export function InteractionOutcomeManagerProvider(props: { } } - async function executeScript(definition: InteractionDefinition) { + async function executeScript(definition: InteractionDefinition): Promise { try { - const result = await fcl.query({ + const result = await flowService.executeScript({ cadence: definition.code, - args: (arg: FclArgBuilder, t: FclTypeLookup) => { - if (!parsedInteraction) { - throw new Error("Interaction not parsed yet"); - } - const fclArguments = parsedInteraction.parameters.map( - (parameter): FclArgumentWithMetadata => { - if (!parameter.type) { - throw new Error("Expecting parameter type"); - } - return { - value: fclValuesByIdentifier.get(parameter.identifier), - type: parameter.type, - identifier: parameter.identifier, - }; - } - ); - const argumentFunction = - FclValueUtils.getArgumentFunction(fclArguments); - return argumentFunction(arg, t); - }, + arguments: serializeParameters() }); return { script: { @@ -181,6 +127,27 @@ export function InteractionOutcomeManagerProvider(props: { } } + function serializeParameters(): FclArgumentWithMetadata[] { + if (!parsedInteraction) { + throw new Error("Interaction not parsed yet"); + } + return parsedInteraction.parameters.map( + (parameter): FclArgumentWithMetadata => { + if (!parameter.type) { + throw new Error("Expecting parameter type"); + } + const value = fclValuesByIdentifier.get(parameter.identifier); + const reMappedValue = + value === "" && parameter.type.optional ? undefined : value; + return { + value: reMappedValue, + type: parameter.type, + identifier: parameter.identifier, + }; + } + ) + } + return ( {props.children} From c76053a3eefe5ed363afc0e2e8b80358a9f161cf Mon Sep 17 00:00:00 2001 From: Bart Date: Mon, 23 Oct 2023 10:28:18 +0200 Subject: [PATCH 038/100] fix initial indexing --- packages/core/src/flow-indexer.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/src/flow-indexer.service.ts b/packages/core/src/flow-indexer.service.ts index 496f1a10e..89e96d338 100644 --- a/packages/core/src/flow-indexer.service.ts +++ b/packages/core/src/flow-indexer.service.ts @@ -104,7 +104,7 @@ export class FlowIndexerService { const lastIndexedBlock = this.findLatestBlock(allBlocks); const nextBlockHeightToProcess = lastIndexedBlock ? lastIndexedBlock.blockHeight + 1 - : latestBlock.height; + : 0; const latestUnprocessedBlockHeight = latestBlock.height; return { From c7813f79b0ba9927ca4d04734a3ed644be5a62a1 Mon Sep 17 00:00:00 2001 From: Bart Date: Mon, 23 Oct 2023 10:28:29 +0200 Subject: [PATCH 039/100] sort resources by created date by default --- apps/electron/src/renderer/ipc-index.ts | 14 ++++++++++++-- packages/api/src/resources.ts | 2 +- packages/core/src/flow-storage.service.ts | 6 ++++++ .../ValueBuilder/AddressBuilder/AddressBuilder.tsx | 2 -- .../src/interactions/hooks/use-transaction-name.ts | 9 ++++----- 5 files changed, 23 insertions(+), 10 deletions(-) diff --git a/apps/electron/src/renderer/ipc-index.ts b/apps/electron/src/renderer/ipc-index.ts index dcb2e9364..1e9607b43 100644 --- a/apps/electron/src/renderer/ipc-index.ts +++ b/apps/electron/src/renderer/ipc-index.ts @@ -1,9 +1,12 @@ -import { IdentifiableResource } from '@onflowser/api'; +import { IdentifiableResource, TimestampedResource } from '@onflowser/api'; import { InMemoryIndex } from '@onflowser/core'; import { FlowserIndexes } from '../services/flowser-app.service'; +type IdentifiableAndTimestampedResource = IdentifiableResource & + TimestampedResource; + export class IpcIndex< - Resource extends IdentifiableResource, + Resource extends IdentifiableAndTimestampedResource, > extends InMemoryIndex { constructor(private readonly indexName: keyof FlowserIndexes) { super(); @@ -12,6 +15,13 @@ export class IpcIndex< this.syncOnInterval(); } + async findAll(): Promise { + const allResources = await super.findAll(); + return allResources.sort( + (a, b) => b.createdAt.getTime() - a.createdAt.getTime(), + ); + } + syncOnInterval() { setInterval(() => this.sync(), 1000); } diff --git a/packages/api/src/resources.ts b/packages/api/src/resources.ts index b9e832c58..ebc0d648e 100644 --- a/packages/api/src/resources.ts +++ b/packages/api/src/resources.ts @@ -140,7 +140,7 @@ export enum FlowStorageDomain { STORAGE_DOMAIN_STORAGE = 3, } -export interface FlowAccountStorage { +export interface FlowAccountStorage extends TimestampedResource { id: string; address: string; domain: FlowStorageDomain; diff --git a/packages/core/src/flow-storage.service.ts b/packages/core/src/flow-storage.service.ts index 3a2a44ecb..95f13c254 100644 --- a/packages/core/src/flow-storage.service.ts +++ b/packages/core/src/flow-storage.service.ts @@ -53,6 +53,9 @@ export class FlowAccountStorageService { domain: this.getStorageDomainFromPath(item.path), path: item.path, targetPath: item.targetPath, + createdAt: new Date(), + updatedAt: new Date(), + deletedAt: undefined }) ), ...flowAccountStorage.storagePathItems.map( @@ -66,6 +69,9 @@ export class FlowAccountStorageService { domain: this.getStorageDomainFromPath(item.path), path: item.path, targetPath: "", + createdAt: new Date(), + updatedAt: new Date(), + deletedAt: undefined }) ), ]; diff --git a/packages/ui/src/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.tsx b/packages/ui/src/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.tsx index 61e94c05e..9b2db2909 100644 --- a/packages/ui/src/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.tsx +++ b/packages/ui/src/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.tsx @@ -21,8 +21,6 @@ export function AddressBuilder(props: CadenceValueBuilder): ReactElement { ) : data, [addressBuilderOptions?.showManagedAccountsOnly, data]); - // TODO(polish): Don't trigger this hook on every rerender - // See: https://www.notion.so/flowser/Looks-like-polling-data-isn-t-properly-mutated-and-doesn-t-retrigger-the-useEffect-call-fb84a35b33fb4e6e8518c11cb30bd14d?pvs=4 useEffect(() => { const serviceAddress = "0xf8d6e0586b0a20c7"; const defaultAccount = diff --git a/packages/ui/src/interactions/hooks/use-transaction-name.ts b/packages/ui/src/interactions/hooks/use-transaction-name.ts index 2c86f31d7..fcf3a548f 100644 --- a/packages/ui/src/interactions/hooks/use-transaction-name.ts +++ b/packages/ui/src/interactions/hooks/use-transaction-name.ts @@ -3,6 +3,7 @@ import { useMemo } from "react"; import { useTemplatesRegistry } from "../contexts/templates.context"; import { InteractionUtils } from "../core/core-utils"; import { FlowTransaction } from "@onflowser/api"; +import { FclValue } from "@onflowser/core"; type UseInteractionNameProps = { transaction: FlowTransaction | undefined; @@ -115,9 +116,7 @@ function getStandardInteractionName( } } -function getArgumentValueById(transaction: FlowTransaction, id: string) { - return JSON.parse( - transaction.arguments.find((argument) => argument.identifier === id) - ?.valueAsJson ?? "" - ); +function getArgumentValueById(transaction: FlowTransaction, id: string): FclValue { + return transaction.arguments.find((argument) => argument.identifier === id) + ?.value } From aa4b1de7f84aa507c26b5d0988c0929be40d7948 Mon Sep 17 00:00:00 2001 From: Bart Date: Mon, 23 Oct 2023 10:35:31 +0200 Subject: [PATCH 040/100] remove unnecessary toasts --- .../ui/src/contexts/workspace.context.tsx | 36 +++++++------------ .../WorkspaceSettings/WorkspaceSettings.tsx | 10 ++---- 2 files changed, 14 insertions(+), 32 deletions(-) diff --git a/packages/ui/src/contexts/workspace.context.tsx b/packages/ui/src/contexts/workspace.context.tsx index b14b12e27..47997b270 100644 --- a/packages/ui/src/contexts/workspace.context.tsx +++ b/packages/ui/src/contexts/workspace.context.tsx @@ -43,16 +43,16 @@ export function WorkspaceManagerProvider({ const { data: currentWorkspace, mutate: refetchCurrentWorkspace } = useGetWorkspace(currentWorkspaceId); - const confirmProjectRemove = async (project: FlowserWorkspace) => { + const confirmWorkspaceRemove = async (project: FlowserWorkspace) => { track(AnalyticEvent.PROJECT_REMOVED, { projectName: project.name }); try { await toast.promise(workspaceService.remove(project.id), { loading: "Deleting project", error: `Failed to delete project "${project.name}"`, - success: `Project "${project.name}" deleted!`, + success: `Project "${project.name}" removed!`, }); - refetchCurrentWorkspace(); + await refetchCurrentWorkspace(); navigate("/projects", { replace: true, }); @@ -67,31 +67,23 @@ export function WorkspaceManagerProvider({ showDialog({ title: "Delete project", body: Are you sure you want to delete this project?, - onConfirm: () => confirmProjectRemove(project), + onConfirm: () => confirmWorkspaceRemove(project), confirmButtonLabel: "DELETE", cancelButtonLabel: "CANCEL", }); } async function closeWorkspace() { - const execute = async () => { - try { - await workspaceService.close(currentWorkspaceId); - refetchCurrentWorkspace(); - } catch (e) { - // nothing critical happened, ignore the error - console.warn("Couldn't stop the emulator: ", e); - } + try { // TODO(restructure): Do we need to clear the local cache? + await workspaceService.close(currentWorkspaceId); + await refetchCurrentWorkspace(); navigate("/projects", { replace: true, }); - }; - await toast.promise(execute(), { - loading: "Closing project...", - success: "Project closed!", - error: "Something went wrong, please try again!", - }); + } catch (e) { + handleError(e); + } } async function openWorkspace( @@ -99,12 +91,8 @@ export function WorkspaceManagerProvider({ options?: OpenWorkspaceOptions ) { try { - await toast.promise(workspaceService.open(project.id), { - loading: "Starting project...", - success: "Project started!", - error: "Something went wrong, please try again!", - }); - refetchCurrentWorkspace(); + await workspaceService.open(project.id); + await refetchCurrentWorkspace(); track(AnalyticEvent.PROJECT_STARTED); navigate(`/projects/${project.id}`, { replace: options?.replaceCurrentPage, diff --git a/packages/ui/src/workspaces/WorkspaceSettings/WorkspaceSettings.tsx b/packages/ui/src/workspaces/WorkspaceSettings/WorkspaceSettings.tsx index 41bdc738b..42ebfa8b2 100644 --- a/packages/ui/src/workspaces/WorkspaceSettings/WorkspaceSettings.tsx +++ b/packages/ui/src/workspaces/WorkspaceSettings/WorkspaceSettings.tsx @@ -58,16 +58,10 @@ export const WorkspaceSettings: FunctionComponent = ( validateOnChange: false, // Initial value is set in a hook bellow. initialValues: {} as FlowserWorkspace, - onSubmit: () => - toast.promise(saveAndStartProject(), { - loading: "Running project", - success: "Project started", - error: "Failed to projects project", - }) - , + onSubmit: () => saveAndOpenWorkspace() }); - async function saveAndStartProject() { + async function saveAndOpenWorkspace() { if (!isExistingProject) { track(AnalyticEvent.PROJECT_CREATED); } From 31e78825e8ce94ae84647280d4c51b3102a72616 Mon Sep 17 00:00:00 2001 From: Bart Date: Mon, 23 Oct 2023 11:19:44 +0200 Subject: [PATCH 041/100] start/stop emulator on workspace lifecycle events, fix index syncing --- apps/electron/.eslintrc.js | 2 + apps/electron/src/main/ipc/handlers.ts | 14 ++-- apps/electron/src/main/ipc/invokers.ts | 5 +- apps/electron/src/main/main.ts | 5 +- apps/electron/src/renderer/App.tsx | 5 +- apps/electron/src/renderer/ipc-index.ts | 8 +- .../src/services/blockchain-index.service.ts | 34 +++++++++ .../src/services/flowser-app.service.ts | 73 +++++++++++-------- .../src/services/workspace.service.ts | 43 ++++++++--- packages/api/src/capabilities.ts | 1 + packages/api/src/resources.ts | 12 +-- packages/core/src/in-memory-index.ts | 11 ++- 12 files changed, 144 insertions(+), 69 deletions(-) create mode 100644 apps/electron/src/services/blockchain-index.service.ts diff --git a/apps/electron/.eslintrc.js b/apps/electron/.eslintrc.js index b8446213c..14f6791e0 100644 --- a/apps/electron/.eslintrc.js +++ b/apps/electron/.eslintrc.js @@ -18,6 +18,8 @@ module.exports = { 'lines-between-class-members': 'off', 'no-use-before-define': 'off', 'max-classes-per-file': 'off', + 'no-useless-constructor': 'off', + 'no-empty-function': 'off', }, parserOptions: { ecmaVersion: 2022, diff --git a/apps/electron/src/main/ipc/handlers.ts b/apps/electron/src/main/ipc/handlers.ts index fcf61a5b7..0b16c8506 100644 --- a/apps/electron/src/main/ipc/handlers.ts +++ b/apps/electron/src/main/ipc/handlers.ts @@ -5,10 +5,8 @@ import { SendTransactionRequest, } from '@onflowser/ui/src/contexts/service-registry.context'; import { FlowserIpcEvent } from './events'; -import { - FlowserAppService, - FlowserIndexes, -} from '../../services/flowser-app.service'; +import { FlowserAppService } from '../../services/flowser-app.service'; +import { BlockchainIndexes } from '../../services/blockchain-index.service'; type EventListener = ( event: IpcMainInvokeEvent, @@ -18,7 +16,7 @@ type EventListener = ( export function registerHandlers(flowserAppService: FlowserAppService) { const { workspaceService, - indexes, + blockchainIndexService, flowInteractionsService, flowCliService, goBindingsService, @@ -39,7 +37,7 @@ export function registerHandlers(flowserAppService: FlowserAppService) { e: IpcMainInvokeEvent, updatedWorkspace: FlowserWorkspace, ) => workspaceService.update(updatedWorkspace), - [FlowserIpcEvent.WORKSPACES_LIST]: () => workspaceService.list(), + [FlowserIpcEvent.WORKSPACES_LIST]: () => workspaceService.findAll(), [FlowserIpcEvent.WORKSPACES_FIND_BY_ID]: ( e: IpcMainInvokeEvent, id: string, @@ -51,8 +49,8 @@ export function registerHandlers(flowserAppService: FlowserAppService) { [FlowserIpcEvent.INDEX_GET_ALL]: ( event: IpcMainInvokeEvent, - indexName: keyof FlowserIndexes, - ) => indexes[indexName].findAll(), + indexName: keyof BlockchainIndexes, + ) => blockchainIndexService.indexes[indexName].findAll(), [FlowserIpcEvent.INTERACTIONS_PARSE]: ( event: IpcMainInvokeEvent, diff --git a/apps/electron/src/main/ipc/invokers.ts b/apps/electron/src/main/ipc/invokers.ts index b1b6812ad..604c82008 100644 --- a/apps/electron/src/main/ipc/invokers.ts +++ b/apps/electron/src/main/ipc/invokers.ts @@ -8,7 +8,8 @@ import { SendTransactionRequest, } from '@onflowser/ui/src/contexts/service-registry.context'; import { FlowserIpcEvent } from './events'; -import { FlowserIndexes } from '../../services/flowser-app.service'; + +import { BlockchainIndexes } from '../../services/blockchain-index.service'; const flow: IFlowService = { getIndexOfAddress: (address: string) => @@ -63,7 +64,7 @@ export const electronInvokers = { interactions, workspaces, indexes: { - getAll: (indexName: keyof FlowserIndexes) => + getAll: (indexName: keyof BlockchainIndexes) => ipcRenderer.invoke(FlowserIpcEvent.INDEX_GET_ALL, indexName), }, flow, diff --git a/apps/electron/src/main/main.ts b/apps/electron/src/main/main.ts index 86011eb12..4a2c3c53f 100644 --- a/apps/electron/src/main/main.ts +++ b/apps/electron/src/main/main.ts @@ -23,9 +23,10 @@ import MenuBuilder from './menu'; import { resolveHtmlPath } from './util'; import { FlowserAppService, - FlowserIndexes, + } from '../services/flowser-app.service'; import { registerHandlers } from './ipc/handlers'; +import { BlockchainIndexes } from "../services/blockchain-index.service"; class AppUpdater { constructor() { @@ -52,7 +53,7 @@ async function getAllFromIndex(event: IpcMainInvokeEvent, ...args: any[]) { } if (indexName in indexes) { - return await indexes[indexName as keyof FlowserIndexes].findAll(); + return await indexes[indexName as keyof BlockchainIndexes].findAll(); } throw new Error(`Index not found: ${indexName}`); } diff --git a/apps/electron/src/renderer/App.tsx b/apps/electron/src/renderer/App.tsx index 6b0698c2a..93a0a0998 100644 --- a/apps/electron/src/renderer/App.tsx +++ b/apps/electron/src/renderer/App.tsx @@ -20,9 +20,10 @@ import { IpcIndex } from './ipc-index'; import { FlowserRouter } from './router'; import { UpdateLoader } from './components/loaders/UpdateLoader'; import { AnalyticsService } from '../services/analytics.service'; -import { FlowserIndexes } from '../services/flowser-app.service'; -const indexes: FlowserIndexes = { +import { BlockchainIndexes } from "../services/blockchain-index.service"; + +const indexes: BlockchainIndexes = { accountStorage: new IpcIndex('accountStorage'), contract: new IpcIndex('contract'), transaction: new IpcIndex('transaction'), diff --git a/apps/electron/src/renderer/ipc-index.ts b/apps/electron/src/renderer/ipc-index.ts index 1e9607b43..9ae810798 100644 --- a/apps/electron/src/renderer/ipc-index.ts +++ b/apps/electron/src/renderer/ipc-index.ts @@ -1,6 +1,7 @@ import { IdentifiableResource, TimestampedResource } from '@onflowser/api'; import { InMemoryIndex } from '@onflowser/core'; -import { FlowserIndexes } from '../services/flowser-app.service'; + +import { BlockchainIndexes } from '../services/blockchain-index.service'; type IdentifiableAndTimestampedResource = IdentifiableResource & TimestampedResource; @@ -8,7 +9,7 @@ type IdentifiableAndTimestampedResource = IdentifiableResource & export class IpcIndex< Resource extends IdentifiableAndTimestampedResource, > extends InMemoryIndex { - constructor(private readonly indexName: keyof FlowserIndexes) { + constructor(private readonly indexName: keyof BlockchainIndexes) { super(); // TODO(restructure): Maybe manually handle this from react app instead @@ -29,6 +30,9 @@ export class IpcIndex< async sync() { const resources = await window.electron.indexes.getAll(this.indexName); + // Clear in case the other index was also cleared. + await this.clear(); + await Promise.allSettled( resources.map((resource: Resource) => this.add(resource)), ); diff --git a/apps/electron/src/services/blockchain-index.service.ts b/apps/electron/src/services/blockchain-index.service.ts new file mode 100644 index 000000000..dca49b2fa --- /dev/null +++ b/apps/electron/src/services/blockchain-index.service.ts @@ -0,0 +1,34 @@ +import { + FlowAccount, + FlowAccountStorage, + FlowBlock, + FlowContract, + FlowEvent, + FlowTransaction, + IdentifiableResource, + IResourceIndex, + TimestampedResource, +} from '@onflowser/api'; + +export type BlockchainIndexes = { + accountStorage: IResourceIndex; + contract: IResourceIndex; + block: IResourceIndex; + event: IResourceIndex; + transaction: IResourceIndex; + account: IResourceIndex; +}; + +export class BlockchainIndexService { + constructor(public readonly indexes: BlockchainIndexes) {} + + clear() { + this.findAll().forEach((index) => index.clear()); + } + + private findAll(): IResourceIndex< + IdentifiableResource & TimestampedResource + >[] { + return Object.values(this.indexes); + } +} diff --git a/apps/electron/src/services/flowser-app.service.ts b/apps/electron/src/services/flowser-app.service.ts index a4333476c..2baa9c4aa 100644 --- a/apps/electron/src/services/flowser-app.service.ts +++ b/apps/electron/src/services/flowser-app.service.ts @@ -15,25 +15,17 @@ import { } from '@onflowser/api'; import { AsyncIntervalScheduler, + FlowCliService, + FlowConfigService, + FlowEmulatorService, FlowInteractionsService, GoBindingsService, - FlowEmulatorService, ProcessManagerService, - FlowCliService, WalletService, - FlowConfigService, } from '@onflowser/nodejs'; import path from 'path'; -import { WorkspaceService } from './workspace.service'; - -export type FlowserIndexes = { - accountStorage: InMemoryIndex; - contract: InMemoryIndex; - block: InMemoryIndex; - event: InMemoryIndex; - transaction: InMemoryIndex; - account: InMemoryIndex; -}; +import { WorkspaceEvent, WorkspaceService } from './workspace.service'; +import { BlockchainIndexService } from './blockchain-index.service'; // TODO(restructure): Should this be more like a service registry instead? export class FlowserAppService { @@ -49,21 +41,13 @@ export class FlowserAppService { public readonly flowCliService: FlowCliService; public readonly walletService: WalletService; public readonly logger: IFlowserLogger; - public readonly indexes: FlowserIndexes; + public readonly blockchainIndexService: BlockchainIndexService; + private readonly flowConfigService: FlowConfigService; private scheduler: AsyncIntervalScheduler; - private flowConfigService: FlowConfigService; constructor() { this.flowGatewayService = new FlowGatewayService(); this.logger = new WebLogger(); - this.indexes = { - transaction: new InMemoryIndex(), - block: new InMemoryIndex(), - account: new InMemoryIndex(), - event: new InMemoryIndex(), - contract: new InMemoryIndex(), - accountStorage: new InMemoryIndex(), - }; this.flowAccountStorageService = new FlowAccountStorageService( this.flowGatewayService, ); @@ -83,14 +67,22 @@ export class FlowserAppService { this.processManagerService, ); this.workspaceService = new WorkspaceService(this.flowEmulatorService); + this.blockchainIndexService = new BlockchainIndexService({ + transaction: new InMemoryIndex(), + block: new InMemoryIndex(), + account: new InMemoryIndex(), + event: new InMemoryIndex(), + contract: new InMemoryIndex(), + accountStorage: new InMemoryIndex(), + }); this.flowIndexerService = new FlowIndexerService( this.logger, - this.indexes.transaction, - this.indexes.account, - this.indexes.block, - this.indexes.event, - this.indexes.contract, - this.indexes.accountStorage, + this.blockchainIndexService.indexes.transaction, + this.blockchainIndexService.indexes.account, + this.blockchainIndexService.indexes.block, + this.blockchainIndexService.indexes.event, + this.blockchainIndexService.indexes.contract, + this.blockchainIndexService.indexes.accountStorage, this.flowAccountStorageService, this.flowGatewayService, this.flowInteractionsService, @@ -101,13 +93,14 @@ export class FlowserAppService { this.flowCliService, this.flowGatewayService, this.flowConfigService, - this.indexes.account, + this.blockchainIndexService.indexes.account, ); this.scheduler = new AsyncIntervalScheduler({ name: 'Blockchain processing', pollingIntervalInMs: 500, functionToExecute: () => this.flowIndexerService.processBlockchainData(), }); + this.registerListeners(); } static create(): FlowserAppService { @@ -121,6 +114,26 @@ export class FlowserAppService { return this.scheduler.start(); } + private registerListeners() { + this.workspaceService.on( + WorkspaceEvent.WORKSPACE_OPEN, + async (workspaceId) => { + const workspace = + await this.workspaceService.findByIdOrThrow(workspaceId); + if (workspace.emulator) { + await this.flowEmulatorService.start({ + workspacePath: workspace.filesystemPath, + config: workspace.emulator, + }); + } + }, + ); + this.workspaceService.on(WorkspaceEvent.WORKSPACE_CLOSE, async () => { + await this.flowEmulatorService.stopAndCleanup(); + this.blockchainIndexService.clear(); + }); + } + configure() { this.flowGatewayService.configure({ restServerAddress: 'http://localhost:8888', diff --git a/apps/electron/src/services/workspace.service.ts b/apps/electron/src/services/workspace.service.ts index 0413d0128..266cd5ae0 100644 --- a/apps/electron/src/services/workspace.service.ts +++ b/apps/electron/src/services/workspace.service.ts @@ -4,20 +4,31 @@ import { app } from 'electron'; import path from 'path'; import fs from 'fs/promises'; import { randomUUID } from 'crypto'; +import EventEmitter from 'events'; -export class WorkspaceService { - private readonly openWorkspaces: Map; +export enum WorkspaceEvent { + WORKSPACE_OPEN = 'WORKSPACE_OPEN', + WORKSPACE_CLOSE = 'WORKSPACE_CLOSE', +} + +export class WorkspaceService extends EventEmitter { + private readonly openWorkspaceIds: Set; constructor(private readonly flowEmulatorService: FlowEmulatorService) { - this.openWorkspaces = new Map(); + super(); + this.openWorkspaceIds = new Set(); } async getOpenWorkspaces(): Promise { - return Array.from(this.openWorkspaces.values()); + const allWorkspaces = await this.findAll(); + return allWorkspaces.filter((workspace) => + this.openWorkspaceIds.has(workspace.id), + ); } async close(id: string): Promise { - this.openWorkspaces.delete(id); + this.openWorkspaceIds.delete(id); + this.emit(WorkspaceEvent.WORKSPACE_CLOSE, id); } async open(id: string): Promise { @@ -25,10 +36,11 @@ export class WorkspaceService { if (!workspace) { throw new Error('Workspace not found'); } - this.openWorkspaces.set(id, workspace); + this.openWorkspaceIds.add(workspace.id); + this.emit(WorkspaceEvent.WORKSPACE_OPEN, id); } - async list(): Promise { + async findAll(): Promise { try { const file = await fs.readFile(this.getStorageFilePath(), { encoding: 'utf-8', @@ -41,13 +53,13 @@ export class WorkspaceService { } async create(createdWorkspace: FlowserWorkspace) { - const existingWorkspaces = await this.list(); + const existingWorkspaces = await this.findAll(); await this.saveWorkspaces([...existingWorkspaces, createdWorkspace]); } async update(updatedWorkspace: FlowserWorkspace) { - const existingWorkspaces = await this.list(); + const existingWorkspaces = await this.findAll(); await this.saveWorkspaces( existingWorkspaces.map((existingWorkspace) => @@ -59,12 +71,21 @@ export class WorkspaceService { } async findById(id: string): Promise { - const existingWorkspaces = await this.list(); + const existingWorkspaces = await this.findAll(); return existingWorkspaces.find((e) => e.id === id); } + async findByIdOrThrow(id: string): Promise { + const workspace = await this.findById(id); + if (!workspace) { + throw new Error(`Workspace ${id} not found`); + } + return workspace; + } + async getDefaultSettings(): Promise { return { + filesystemPath: '', createdAt: new Date(), updatedAt: new Date(), deletedAt: undefined, @@ -76,7 +97,7 @@ export class WorkspaceService { } async remove(id: string): Promise { - const existingWorkspaces = await this.list(); + const existingWorkspaces = await this.findAll(); await this.saveWorkspaces(existingWorkspaces.filter((e) => e.id !== id)); } diff --git a/packages/api/src/capabilities.ts b/packages/api/src/capabilities.ts index f077daad6..dd453cfaf 100644 --- a/packages/api/src/capabilities.ts +++ b/packages/api/src/capabilities.ts @@ -17,6 +17,7 @@ export interface IResourceIndexWriter { add(resource: Resource): Promise; update(resource: RequireOnly): Promise; delete(resource: RequireOnly): Promise; + clear(): Promise; } export interface IResourceIndex diff --git a/packages/api/src/resources.ts b/packages/api/src/resources.ts index ebc0d648e..83013b90c 100644 --- a/packages/api/src/resources.ts +++ b/packages/api/src/resources.ts @@ -53,11 +53,7 @@ export interface IdentifiableResource { id: string; } -export interface BlockScopedResource { - blockId: string; -} - -export interface FlowAccount extends TimestampedResource { +export interface FlowAccount extends TimestampedResource, IdentifiableResource { // ID is equal to the address. id: string; address: string; @@ -107,7 +103,7 @@ export interface FlowAccountKey { revoked: boolean; } -export interface FlowContract extends TimestampedResource { +export interface FlowContract extends TimestampedResource, IdentifiableResource { // ID is the combination of `address` and `name`. id: string; address: string; @@ -140,7 +136,7 @@ export enum FlowStorageDomain { STORAGE_DOMAIN_STORAGE = 3, } -export interface FlowAccountStorage extends TimestampedResource { +export interface FlowAccountStorage extends TimestampedResource, IdentifiableResource { id: string; address: string; domain: FlowStorageDomain; @@ -150,7 +146,7 @@ export interface FlowAccountStorage extends TimestampedResource { targetPath: string; } -export interface FlowBlock extends TimestampedResource { +export interface FlowBlock extends TimestampedResource, IdentifiableResource { id: string; height: number; parentId: string; diff --git a/packages/core/src/in-memory-index.ts b/packages/core/src/in-memory-index.ts index 711113355..f52bb9557 100644 --- a/packages/core/src/in-memory-index.ts +++ b/packages/core/src/in-memory-index.ts @@ -1,12 +1,11 @@ import { IdentifiableResource, - IResourceIndexReader, - IResourceIndexWriter, - RequireOnly, + IResourceIndex, + RequireOnly } from "@onflowser/api"; export class InMemoryIndex - implements IResourceIndexReader, IResourceIndexWriter + implements IResourceIndex { private readonly lookup: Map; @@ -47,4 +46,8 @@ export class InMemoryIndex async findOneById(id: string): Promise { return this.lookup.get(id); } + + async clear(): Promise { + this.lookup.clear(); + } } From 7b53bea2252df0238cd1c193aa2a19bf09d6fdc9 Mon Sep 17 00:00:00 2001 From: Bart Date: Mon, 23 Oct 2023 12:20:34 +0200 Subject: [PATCH 042/100] cleanup snapshots service, fix workspace lifecycle management --- apps/electron/src/main/main.ts | 33 +---- apps/electron/src/renderer/App.tsx | 6 +- .../src/services/flowser-app.service.ts | 120 ++++++------------ packages/api/src/resources.ts | 2 - packages/core/src/flow-snapshots.service.ts | 61 ++++----- packages/nodejs/src/flow-config.service.ts | 10 +- packages/nodejs/src/flow-emulator.service.ts | 2 - 7 files changed, 74 insertions(+), 160 deletions(-) diff --git a/apps/electron/src/main/main.ts b/apps/electron/src/main/main.ts index 4a2c3c53f..4e38ddd70 100644 --- a/apps/electron/src/main/main.ts +++ b/apps/electron/src/main/main.ts @@ -9,24 +9,13 @@ * `./src/main.js` using webpack. This gives us some performance wins. */ import path from 'path'; -import { - app, - BrowserWindow, - shell, - ipcMain, - dialog, - IpcMainInvokeEvent, -} from 'electron'; +import { app, BrowserWindow, shell, ipcMain, dialog } from 'electron'; import { autoUpdater } from 'electron-updater'; import log from 'electron-log'; import MenuBuilder from './menu'; import { resolveHtmlPath } from './util'; -import { - FlowserAppService, - -} from '../services/flowser-app.service'; +import { FlowserAppService } from '../services/flowser-app.service'; import { registerHandlers } from './ipc/handlers'; -import { BlockchainIndexes } from "../services/blockchain-index.service"; class AppUpdater { constructor() { @@ -38,26 +27,11 @@ class AppUpdater { let mainWindow: BrowserWindow | null = null; +// TODO(restructure): Move to ipc folder ipcMain.handle('showDirectoryPicker', showDirectoryPicker); -ipcMain.handle('index:get-all', getAllFromIndex); const flowserAppService = FlowserAppService.create(); -async function getAllFromIndex(event: IpcMainInvokeEvent, ...args: any[]) { - const [indexName] = args; - - const { indexes } = FlowserAppService.create(); - - if (typeof indexName !== 'string') { - throw new Error('Invalid argument'); - } - - if (indexName in indexes) { - return await indexes[indexName as keyof BlockchainIndexes].findAll(); - } - throw new Error(`Index not found: ${indexName}`); -} - async function showDirectoryPicker() { const result = await dialog.showOpenDialog({ properties: ['openDirectory', 'createDirectory'], @@ -168,7 +142,6 @@ app .then(() => { createWindow(); registerHandlers(flowserAppService); - flowserAppService.configure(); flowserAppService.startProcessing(); app.on('activate', () => { // On macOS it's common to re-create a window in the app when the diff --git a/apps/electron/src/renderer/App.tsx b/apps/electron/src/renderer/App.tsx index 93a0a0998..cd8ffab09 100644 --- a/apps/electron/src/renderer/App.tsx +++ b/apps/electron/src/renderer/App.tsx @@ -21,7 +21,8 @@ import { FlowserRouter } from './router'; import { UpdateLoader } from './components/loaders/UpdateLoader'; import { AnalyticsService } from '../services/analytics.service'; -import { BlockchainIndexes } from "../services/blockchain-index.service"; +import { BlockchainIndexes } from '../services/blockchain-index.service'; +import { SentryRendererService } from '../services/sentry-renderer.service'; const indexes: BlockchainIndexes = { accountStorage: new IpcIndex('accountStorage'), @@ -33,6 +34,7 @@ const indexes: BlockchainIndexes = { }; const analyticsService = new AnalyticsService(); +const monitoringService = new SentryRendererService(); export function App() { const [isExiting, setIsExiting] = useState(false); @@ -73,7 +75,7 @@ export function App() { blocksIndex: indexes.block, transactionsIndex: indexes.transaction, processOutputIndex: undefined as never, - monitoringService: undefined as never, + monitoringService, analyticsService, workspaceService: window.electron.workspaces, snapshotService: undefined as never, diff --git a/apps/electron/src/services/flowser-app.service.ts b/apps/electron/src/services/flowser-app.service.ts index 2baa9c4aa..6688810c3 100644 --- a/apps/electron/src/services/flowser-app.service.ts +++ b/apps/electron/src/services/flowser-app.service.ts @@ -2,6 +2,7 @@ import { FlowAccountStorageService, FlowGatewayService, FlowIndexerService, + FlowSnapshotsService, IFlowserLogger, InMemoryIndex, } from '@onflowser/core'; @@ -27,7 +28,6 @@ import path from 'path'; import { WorkspaceEvent, WorkspaceService } from './workspace.service'; import { BlockchainIndexService } from './blockchain-index.service'; -// TODO(restructure): Should this be more like a service registry instead? export class FlowserAppService { static instance: FlowserAppService; public readonly flowGatewayService: FlowGatewayService; @@ -42,7 +42,8 @@ export class FlowserAppService { public readonly walletService: WalletService; public readonly logger: IFlowserLogger; public readonly blockchainIndexService: BlockchainIndexService; - private readonly flowConfigService: FlowConfigService; + public readonly flowSnapshotsService: FlowSnapshotsService; + public readonly flowConfigService: FlowConfigService; private scheduler: AsyncIntervalScheduler; constructor() { @@ -66,6 +67,7 @@ export class FlowserAppService { this.flowEmulatorService = new FlowEmulatorService( this.processManagerService, ); + this.flowSnapshotsService = new FlowSnapshotsService(); this.workspaceService = new WorkspaceService(this.flowEmulatorService); this.blockchainIndexService = new BlockchainIndexService({ transaction: new InMemoryIndex(), @@ -117,90 +119,48 @@ export class FlowserAppService { private registerListeners() { this.workspaceService.on( WorkspaceEvent.WORKSPACE_OPEN, - async (workspaceId) => { - const workspace = - await this.workspaceService.findByIdOrThrow(workspaceId); - if (workspace.emulator) { - await this.flowEmulatorService.start({ - workspacePath: workspace.filesystemPath, - config: workspace.emulator, - }); - } - }, + this.onWorkspaceOpen.bind(this), + ); + this.workspaceService.on( + WorkspaceEvent.WORKSPACE_CLOSE, + this.onWorkspaceClose.bind(this), ); - this.workspaceService.on(WorkspaceEvent.WORKSPACE_CLOSE, async () => { - await this.flowEmulatorService.stopAndCleanup(); - this.blockchainIndexService.clear(); - }); } - configure() { + private async onWorkspaceOpen(workspaceId: string) { + const workspace = await this.workspaceService.findByIdOrThrow(workspaceId); + + await this.flowConfigService.configure({ + workspacePath: workspace.filesystemPath, + }); + this.flowGatewayService.configure({ restServerAddress: 'http://localhost:8888', - flowJSON: { - contracts: { - ExampleNFT: 'cadence/contracts/exampleNFT/ExampleNFT.cdc', - FungibleToken: { - source: '', - aliases: { - emulator: 'ee82856bf20e2aa6', - }, - }, - MetadataViews: { - source: '', - aliases: { - emulator: 'f8d6e0586b0a20c7', - }, - }, - NonFungibleToken: { - source: '', - aliases: { - emulator: 'f8d6e0586b0a20c7', - }, - }, - ViewResolver: 'cadence/contracts/standards/ViewResolver.cdc', - }, - networks: { - emulator: '127.0.0.1:3569', - mainnet: 'access.mainnet.nodes.onflow.org:9000', - sandboxnet: 'access.sandboxnet.nodes.onflow.org:9000', - testnet: 'access.devnet.nodes.onflow.org:9000', - }, - accounts: { - default: { - address: 'f669cb8d41ce0c74', - key: '2e09fac1b3b8e128c67b2e57ba59ec8506ff8326053812135a954b4d3291096f', - }, - 'emulator-account': { - address: 'f8d6e0586b0a20c7', - key: 'd2c3686da84d61c13627bdf2127866fe358165734f5470be792e6771901d2856', - }, - exampleNFT: { - address: '192440c99cb17282', - key: '58cfc56dcbbfa8bfb7b9898586793b0710dfebe8a0358774044968abc9acc8c2', - }, - standards: { - address: 'fd43f9148d4b725d', - key: '28946711cc802634ca4520c0f8b113e065c519dc02306a05ecb204a896ee80ed', - }, - '0x01cf0e2f2f715450': { - address: '0x01cf0e2f2f715450', - key: '95b367208187ecc83a3e6c9aba61ad0edc00af3e0d678c60b39fe13ccfc5d75b', - }, - '0x179b6b1cb6755e31': { - address: '0x179b6b1cb6755e31', - key: 'f1f066337d4e853311807fd94bed599739d7cede8c6e6585414703eb0e0345ed', - }, - }, - deployments: { - emulator: { - default: [], - exampleNFT: ['ExampleNFT'], - standards: ['ViewResolver'], - }, - }, - }, + flowJSON: this.flowConfigService.getFlowJSON(), }); + + if (workspace.emulator) { + await this.flowEmulatorService.start({ + workspacePath: workspace.filesystemPath, + config: workspace.emulator, + }); + } + + if (workspace.emulator) { + this.flowSnapshotsService.configure({ + adminServerPort: workspace.emulator.adminServerPort, + }); + } else { + this.flowSnapshotsService.configure({ + adminServerPort: + this.flowEmulatorService.getDefaultConfig().adminServerPort, + }); + } + } + + private async onWorkspaceClose() { + await this.flowEmulatorService.stopAndCleanup(); + this.blockchainIndexService.clear(); } } diff --git a/packages/api/src/resources.ts b/packages/api/src/resources.ts index 83013b90c..0468ee218 100644 --- a/packages/api/src/resources.ts +++ b/packages/api/src/resources.ts @@ -295,10 +295,8 @@ export interface ManagedProcessOutput { } export enum ProcessOutputSource { - OUTPUT_SOURCE_UNSPECIFIED = 0, OUTPUT_SOURCE_STDOUT = 1, OUTPUT_SOURCE_STDERR = 2, - UNRECOGNIZED = -1, } export interface FlowserWorkspace extends TimestampedResource { diff --git a/packages/core/src/flow-snapshots.service.ts b/packages/core/src/flow-snapshots.service.ts index 17f587a18..3ed3b846d 100644 --- a/packages/core/src/flow-snapshots.service.ts +++ b/packages/core/src/flow-snapshots.service.ts @@ -1,16 +1,5 @@ import axios, { Method } from "axios"; - -type CreateSnapshotRequest = { - name: string; -}; - -type JumpToBlockHeightRequest = { - height: number; -}; - -type JumpToSnapshotRequest = { - name: string; -}; +import { FlowEmulatorConfig } from "@onflowser/api"; type ListSnapshotsResponse = { names: string[]; @@ -22,36 +11,28 @@ type SnapshotInfoResponse = { height: number; }; -export class FlowSnapshotsService { - constructor() {} +type FlowSnapshotsConfig = Pick; - async rollback(blockHeight: number) { - await this.jumpToHeight({ - height: blockHeight, - }); - - // const blockIdsUntilTargetHeight = allBlocks - // .filter((block) => block.blockHeight > blockHeight) - // .map((block) => block.blockId); +export class FlowSnapshotsService { + private config: FlowSnapshotsConfig - // TODO(restructure): Invalidate data associated with the above blocks + constructor() { + this.config = { + adminServerPort: 8080 + } } - async checkout(snapshotId: string) { - await this.jumpToSnapshot({ - name: snapshotId, - }); - - // TODO(restructure): Invalidate (all) blockchain data + configure(config: FlowSnapshotsConfig) { + this.config = config; } - private async create( - request: CreateSnapshotRequest + public async create( + name: string ): Promise { // https://github.com/onflow/flow-emulator/blob/0ca87170b7792b68941da368a839b9b74615d659/server/utils/emulator.go#L208-L233 const response = await this.emulatorRequest({ method: "post", - endpoint: `/snapshots?name=${request.name}`, + endpoint: `/snapshots?name=${name}`, }); if (response.status !== 200) { @@ -61,11 +42,11 @@ export class FlowSnapshotsService { return response.data; } - private async jumpToHeight(request: JumpToBlockHeightRequest): Promise { + public async jumpToHeight(height: number): Promise { // https://github.com/onflow/flow-emulator/blob/0ca87170b7792b68941da368a839b9b74615d659/server/utils/emulator.go#L118-L136 const response = await this.emulatorRequest({ method: "post", - endpoint: `/rollback?height=${request.height}`, + endpoint: `/rollback?height=${height}`, }); if (response.status !== 200) { @@ -73,13 +54,13 @@ export class FlowSnapshotsService { } } - private async jumpToSnapshot( - request: JumpToSnapshotRequest + public async jumpToSnapshot( + name: string ): Promise { // https://github.com/onflow/flow-emulator/blob/0ca87170b7792b68941da368a839b9b74615d659/server/utils/emulator.go#L183-L206 const response = await this.emulatorRequest({ method: "put", - endpoint: `/snapshots/${request.name}`, + endpoint: `/snapshots/${name}`, }); if (response.status === 404) { @@ -93,7 +74,7 @@ export class FlowSnapshotsService { return response.data; } - private async listSnapshots(): Promise { + public async findAll(): Promise { // https://github.com/onflow/flow-emulator/blob/0ca87170b7792b68941da368a839b9b74615d659/server/utils/emulator.go#L138-L156 const response = await this.emulatorRequest({ method: "get", @@ -116,9 +97,11 @@ export class FlowSnapshotsService { method: Method; endpoint: string; }) { + const { adminServerPort } = this.config; + return axios.request({ method: options.method, - url: `http://localhost:8080/emulator${options.endpoint}`, + url: `http://localhost:${adminServerPort}/emulator${options.endpoint}`, // Prevent axios from throwing on certain http response codes // https://github.com/axios/axios/issues/41 validateStatus: () => true, diff --git a/packages/nodejs/src/flow-config.service.ts b/packages/nodejs/src/flow-config.service.ts index fe8e529ea..9e1009189 100644 --- a/packages/nodejs/src/flow-config.service.ts +++ b/packages/nodejs/src/flow-config.service.ts @@ -55,7 +55,7 @@ type FlowNetworkConfig = NetworkKey: string; }; -type FlowCliConfig = { +type FlowJSON = { contracts?: FlowContractsConfig; deployments?: FlowDeploymentsConfig; accounts?: FlowAccountsConfig; @@ -80,12 +80,12 @@ export type FlowAbstractContractConfig = { }; type FlowConfigServiceConfig = { - workingDirectoryPath: string; + workspacePath: string; }; export class FlowConfigService { private fileListenerController: AbortController | undefined; - private config: FlowCliConfig | undefined; + private config: FlowJSON | undefined; private configFileName = "flow.json"; private workingDirectoryPath: string | undefined; @@ -93,7 +93,7 @@ export class FlowConfigService { } public async configure(config: FlowConfigServiceConfig) { - this.workingDirectoryPath = config.workingDirectoryPath; + this.workingDirectoryPath = config.workspacePath; await this.reload(); } @@ -102,7 +102,7 @@ export class FlowConfigService { this.detachListeners(); } - public getRawConfig(): FlowCliConfig | undefined { + public getFlowJSON(): FlowJSON | undefined { return this.config; } diff --git a/packages/nodejs/src/flow-emulator.service.ts b/packages/nodejs/src/flow-emulator.service.ts index 19fb37568..11f25f7eb 100644 --- a/packages/nodejs/src/flow-emulator.service.ts +++ b/packages/nodejs/src/flow-emulator.service.ts @@ -49,8 +49,6 @@ export class FlowEmulatorService extends EventEmitter { await Promise.race([this.waitUntilApisStarted(), this.throwIfErrored()]); this.emit(FlowEmulatorEvent.APIS_STARTED); - - // TODO(restructure): Re-index all state } public getDefaultConfig(): FlowEmulatorConfig { From a3a5bcecc0b8e8d954df376a4fe9643b65a2fe8c Mon Sep 17 00:00:00 2001 From: Bart Date: Tue, 24 Oct 2023 11:53:15 +0200 Subject: [PATCH 043/100] migrate snapshots --- apps/electron/src/main/ipc/events.ts | 6 ++ apps/electron/src/main/ipc/handlers.ts | 16 +++++ apps/electron/src/main/ipc/invokers.ts | 12 ++++ apps/electron/src/renderer/App.tsx | 2 +- .../src/services/file-storage.service.ts | 38 +++++++++++ .../src/services/flowser-app.service.ts | 24 ++++++- .../src/services/workspace.service.ts | 27 +++----- packages/api/src/resources.ts | 3 +- packages/core/src/flow-snapshots.service.ts | 64 ++++++++++++++++--- packages/core/src/persistent-storage.ts | 5 ++ packages/ui/src/api.ts | 4 -- .../dialogs/snapshot/SnapshotDialog.tsx | 13 ++-- .../src/contexts/service-registry.context.tsx | 15 ++--- .../ui/src/contexts/snapshots.context.tsx | 15 ++--- 14 files changed, 182 insertions(+), 62 deletions(-) create mode 100644 apps/electron/src/services/file-storage.service.ts create mode 100644 packages/core/src/persistent-storage.ts diff --git a/apps/electron/src/main/ipc/events.ts b/apps/electron/src/main/ipc/events.ts index c43613dff..53a117bcc 100644 --- a/apps/electron/src/main/ipc/events.ts +++ b/apps/electron/src/main/ipc/events.ts @@ -13,9 +13,15 @@ export enum FlowserIpcEvent { INTERACTIONS_PARSE = 'INTERACTIONS_PARSE', INTERACTIONS_LIST_TEMPLATES = 'INTERACTIONS_LIST_TEMPLATES', + // TODO(restructure): Rename to RESOURCE_ACTION format FLOW_GET_INDEX_OF_ADDRESS = 'FLOW_GET_INDEX_OF_ADDRESS', FLOW_GET_CLI_INFO = 'FLOW_GET_CLI_INFO', FLOW_SEND_TRANSACTION = 'FLOW_SEND_TRANSACTION', FLOW_EXECUTE_SCRIPT = 'FLOW_EXECUTE_SCRIPT', FLOW_CREATE_ACCOUNT = 'FLOW_CREATE_ACCOUNT', + + SNAPSHOTS_ROLLBACK_TO_HEIGHT = 'SNAPSHOTS_ROLLBACK_TO_HEIGHT', + SNAPSHOTS_JUMP_TO = 'SNAPSHOTS_JUMP_TO', + SNAPSHOTS_LIST = 'SNAPSHOTS_LIST', + SNAPSHOTS_CREATE = 'SNAPSHOTS_CREATE', } diff --git a/apps/electron/src/main/ipc/handlers.ts b/apps/electron/src/main/ipc/handlers.ts index 0b16c8506..bc82c932d 100644 --- a/apps/electron/src/main/ipc/handlers.ts +++ b/apps/electron/src/main/ipc/handlers.ts @@ -22,6 +22,7 @@ export function registerHandlers(flowserAppService: FlowserAppService) { goBindingsService, flowGatewayService, walletService, + flowSnapshotsService, } = flowserAppService; const handlers: Record = { @@ -95,6 +96,21 @@ export function registerHandlers(flowserAppService: FlowserAppService) { workspacePath: openWorkspaces[0].filesystemPath, }); }, + + [FlowserIpcEvent.SNAPSHOTS_LIST]: (event: IpcMainInvokeEvent) => + flowSnapshotsService.findAll(), + [FlowserIpcEvent.SNAPSHOTS_CREATE]: ( + event: IpcMainInvokeEvent, + name: string, + ) => flowSnapshotsService.create(name), + [FlowserIpcEvent.SNAPSHOTS_JUMP_TO]: ( + event: IpcMainInvokeEvent, + id: string, + ) => flowSnapshotsService.jumpTo(id), + [FlowserIpcEvent.SNAPSHOTS_ROLLBACK_TO_HEIGHT]: ( + event: IpcMainInvokeEvent, + height: number, + ) => flowSnapshotsService.rollbackToHeight(height), }; for (const eventName in handlers) { diff --git a/apps/electron/src/main/ipc/invokers.ts b/apps/electron/src/main/ipc/invokers.ts index 604c82008..2feedbc00 100644 --- a/apps/electron/src/main/ipc/invokers.ts +++ b/apps/electron/src/main/ipc/invokers.ts @@ -4,6 +4,7 @@ import { ExecuteScriptRequest, IFlowService, IInteractionService, + ISnapshotService, IWorkspaceService, SendTransactionRequest, } from '@onflowser/ui/src/contexts/service-registry.context'; @@ -48,6 +49,16 @@ const workspaces: IWorkspaceService = { ipcRenderer.invoke(FlowserIpcEvent.WORKSPACES_DEFAULT_SETTINGS), }; +const snapshots: ISnapshotService = { + list: () => ipcRenderer.invoke(FlowserIpcEvent.SNAPSHOTS_LIST), + create: (name: string) => + ipcRenderer.invoke(FlowserIpcEvent.SNAPSHOTS_CREATE, name), + jumpTo: (id: string) => + ipcRenderer.invoke(FlowserIpcEvent.SNAPSHOTS_JUMP_TO, id), + rollbackToHeight: (height: number) => + ipcRenderer.invoke(FlowserIpcEvent.SNAPSHOTS_ROLLBACK_TO_HEIGHT, height), +}; + export const electronInvokers = { platformAdapter: { showDirectoryPicker: () => ipcRenderer.invoke('showDirectoryPicker'), @@ -63,6 +74,7 @@ export const electronInvokers = { }, interactions, workspaces, + snapshots, indexes: { getAll: (indexName: keyof BlockchainIndexes) => ipcRenderer.invoke(FlowserIpcEvent.INDEX_GET_ALL, indexName), diff --git a/apps/electron/src/renderer/App.tsx b/apps/electron/src/renderer/App.tsx index cd8ffab09..dc3ca65c9 100644 --- a/apps/electron/src/renderer/App.tsx +++ b/apps/electron/src/renderer/App.tsx @@ -78,7 +78,7 @@ export function App() { monitoringService, analyticsService, workspaceService: window.electron.workspaces, - snapshotService: undefined as never, + snapshotService: window.electron.snapshots, }} > diff --git a/apps/electron/src/services/file-storage.service.ts b/apps/electron/src/services/file-storage.service.ts new file mode 100644 index 000000000..33b2c22f9 --- /dev/null +++ b/apps/electron/src/services/file-storage.service.ts @@ -0,0 +1,38 @@ +import { PersistentStorage } from '@onflowser/core/src/persistent-storage'; +import fs from 'fs/promises'; +import path from 'path'; +import { app } from 'electron'; + +export class FileStorageService implements PersistentStorage { + private fileName: string | undefined; + + constructor(fileName?: string) { + this.fileName = fileName; + } + + setFileName(context: string) { + this.fileName = context; + } + + async read(): Promise { + try { + return await fs.readFile(this.getStorageFilePath(), { + encoding: 'utf-8', + }); + } catch (error) { + // Assume file not found error + return undefined; + } + } + + async write(data: string): Promise { + await fs.writeFile(this.getStorageFilePath(), data); + } + + private getStorageFilePath() { + if (this.fileName === undefined) { + throw new Error('File name is not set'); + } + return path.join(app.getPath('userData'), `${this.fileName}`); + } +} diff --git a/apps/electron/src/services/flowser-app.service.ts b/apps/electron/src/services/flowser-app.service.ts index 6688810c3..3acd43f92 100644 --- a/apps/electron/src/services/flowser-app.service.ts +++ b/apps/electron/src/services/flowser-app.service.ts @@ -2,6 +2,7 @@ import { FlowAccountStorageService, FlowGatewayService, FlowIndexerService, + FlowSnapshotsEvent, FlowSnapshotsService, IFlowserLogger, InMemoryIndex, @@ -27,6 +28,7 @@ import { import path from 'path'; import { WorkspaceEvent, WorkspaceService } from './workspace.service'; import { BlockchainIndexService } from './blockchain-index.service'; +import { FileStorageService } from './file-storage.service'; export class FlowserAppService { static instance: FlowserAppService; @@ -45,6 +47,7 @@ export class FlowserAppService { public readonly flowSnapshotsService: FlowSnapshotsService; public readonly flowConfigService: FlowConfigService; private scheduler: AsyncIntervalScheduler; + private flowSnapshotsStorageService: FileStorageService; constructor() { this.flowGatewayService = new FlowGatewayService(); @@ -67,8 +70,14 @@ export class FlowserAppService { this.flowEmulatorService = new FlowEmulatorService( this.processManagerService, ); - this.flowSnapshotsService = new FlowSnapshotsService(); - this.workspaceService = new WorkspaceService(this.flowEmulatorService); + this.flowSnapshotsStorageService = new FileStorageService(); + this.flowSnapshotsService = new FlowSnapshotsService( + this.flowSnapshotsStorageService, + ); + this.workspaceService = new WorkspaceService( + this.flowEmulatorService, + new FileStorageService('flowser-workspaces.json'), + ); this.blockchainIndexService = new BlockchainIndexService({ transaction: new InMemoryIndex(), block: new InMemoryIndex(), @@ -125,6 +134,12 @@ export class FlowserAppService { WorkspaceEvent.WORKSPACE_CLOSE, this.onWorkspaceClose.bind(this), ); + this.flowSnapshotsService.on(FlowSnapshotsEvent.ROLLBACK_TO_HEIGHT, () => + this.blockchainIndexService.clear(), + ); + this.flowSnapshotsService.on(FlowSnapshotsEvent.JUMP_TO, () => + this.blockchainIndexService.clear(), + ); } private async onWorkspaceOpen(workspaceId: string) { @@ -146,6 +161,11 @@ export class FlowserAppService { }); } + // Separately store of each workspaces' data. + this.flowSnapshotsStorageService.setFileName( + `flowser-snapshots-${workspaceId}.json`, + ); + if (workspace.emulator) { this.flowSnapshotsService.configure({ adminServerPort: workspace.emulator.adminServerPort, diff --git a/apps/electron/src/services/workspace.service.ts b/apps/electron/src/services/workspace.service.ts index 266cd5ae0..f977e5205 100644 --- a/apps/electron/src/services/workspace.service.ts +++ b/apps/electron/src/services/workspace.service.ts @@ -1,10 +1,8 @@ import { FlowserWorkspace } from '@onflowser/api'; import { FlowEmulatorService } from '@onflowser/nodejs'; -import { app } from 'electron'; -import path from 'path'; -import fs from 'fs/promises'; import { randomUUID } from 'crypto'; import EventEmitter from 'events'; +import { PersistentStorage } from '@onflowser/core/src/persistent-storage'; export enum WorkspaceEvent { WORKSPACE_OPEN = 'WORKSPACE_OPEN', @@ -14,7 +12,10 @@ export enum WorkspaceEvent { export class WorkspaceService extends EventEmitter { private readonly openWorkspaceIds: Set; - constructor(private readonly flowEmulatorService: FlowEmulatorService) { + constructor( + private readonly flowEmulatorService: FlowEmulatorService, + private readonly storage: PersistentStorage, + ) { super(); this.openWorkspaceIds = new Set(); } @@ -41,15 +42,9 @@ export class WorkspaceService extends EventEmitter { } async findAll(): Promise { - try { - const file = await fs.readFile(this.getStorageFilePath(), { - encoding: 'utf-8', - }); - return JSON.parse(file) as FlowserWorkspace[]; - } catch (e) { - // TODO(restructure): Return empty list only in case file is not found - return []; - } + const existing = await this.storage.read(); + + return JSON.parse(existing ?? '[]'); } async create(createdWorkspace: FlowserWorkspace) { @@ -102,10 +97,6 @@ export class WorkspaceService extends EventEmitter { } private async saveWorkspaces(workspaces: FlowserWorkspace[]) { - await fs.writeFile(this.getStorageFilePath(), JSON.stringify(workspaces)); - } - - private getStorageFilePath() { - return path.join(app.getPath('userData'), 'flowser.json'); + await this.storage.write(JSON.stringify(workspaces)); } } diff --git a/packages/api/src/resources.ts b/packages/api/src/resources.ts index 0468ee218..35d8ddf29 100644 --- a/packages/api/src/resources.ts +++ b/packages/api/src/resources.ts @@ -257,9 +257,8 @@ export interface FlowEvent extends TimestampedResource { export interface FlowStateSnapshot { id: string; - description: string; blockId: string; - projectId: string; + blockHeight: number; } export interface ManagedProcess { diff --git a/packages/core/src/flow-snapshots.service.ts b/packages/core/src/flow-snapshots.service.ts index 3ed3b846d..8b2cbf2cd 100644 --- a/packages/core/src/flow-snapshots.service.ts +++ b/packages/core/src/flow-snapshots.service.ts @@ -1,5 +1,7 @@ import axios, { Method } from "axios"; -import { FlowEmulatorConfig } from "@onflowser/api"; +import { FlowEmulatorConfig, FlowStateSnapshot } from "@onflowser/api"; +import { PersistentStorage } from "./persistent-storage"; +import EventEmitter from "events"; type ListSnapshotsResponse = { names: string[]; @@ -13,10 +15,16 @@ type SnapshotInfoResponse = { type FlowSnapshotsConfig = Pick; -export class FlowSnapshotsService { +export enum FlowSnapshotsEvent { + ROLLBACK_TO_HEIGHT = "ROLLBACK_TO_HEIGHT", + JUMP_TO = "JUMP_TO" +} + +export class FlowSnapshotsService extends EventEmitter { private config: FlowSnapshotsConfig - constructor() { + constructor(private readonly storage: PersistentStorage) { + super(); this.config = { adminServerPort: 8080 } @@ -39,10 +47,16 @@ export class FlowSnapshotsService { throw new Error("Failed creating snapshot"); } + await this.persistSingle({ + id: name, + blockId: response.data.blockId, + blockHeight: response.data.height + }) + return response.data; } - public async jumpToHeight(height: number): Promise { + public async rollbackToHeight(height: number): Promise { // https://github.com/onflow/flow-emulator/blob/0ca87170b7792b68941da368a839b9b74615d659/server/utils/emulator.go#L118-L136 const response = await this.emulatorRequest({ method: "post", @@ -52,15 +66,17 @@ export class FlowSnapshotsService { if (response.status !== 200) { throw new Error("Failed to jump to height"); } + + this.emit(FlowSnapshotsEvent.ROLLBACK_TO_HEIGHT, height) } - public async jumpToSnapshot( - name: string + public async jumpTo( + id: string ): Promise { // https://github.com/onflow/flow-emulator/blob/0ca87170b7792b68941da368a839b9b74615d659/server/utils/emulator.go#L183-L206 const response = await this.emulatorRequest({ method: "put", - endpoint: `/snapshots/${name}`, + endpoint: `/snapshots/${id}`, }); if (response.status === 404) { @@ -71,10 +87,24 @@ export class FlowSnapshotsService { throw new Error("Failed to jump to snapshot"); } + this.emit(FlowSnapshotsEvent.JUMP_TO, id) + return response.data; } - public async findAll(): Promise { + public async findAll(): Promise { + const [persistedSnapshots, emulatorSnapshots] = await Promise.all([ + this.findAllPersisted(), + this.findAllOnEmulator() + ]); + + const validSnapshotIdLookup = new Set(emulatorSnapshots.names); + + // Ensure we exclude the ones that were deleted without using Flowser. + return persistedSnapshots.filter(snapshot => validSnapshotIdLookup.has(snapshot.id)) + } + + private async findAllOnEmulator(): Promise { // https://github.com/onflow/flow-emulator/blob/0ca87170b7792b68941da368a839b9b74615d659/server/utils/emulator.go#L138-L156 const response = await this.emulatorRequest({ method: "get", @@ -93,6 +123,24 @@ export class FlowSnapshotsService { return response.data ? { names: response.data } : emptyResponse; } + private async findAllPersisted(): Promise { + const rawValue = await this.storage.read(); + return JSON.parse(rawValue ?? '[]') + } + + private async persistSingle(snapshot: FlowStateSnapshot) { + const existing = await this.findAllPersisted(); + // TODO(restructure): Do we need to do some kind of deduplication? + await this.persistAll([ + ...existing, + snapshot + ]) + } + + private async persistAll(snapshots: FlowStateSnapshot[]) { + await this.storage.write(JSON.stringify(snapshots)); + } + private emulatorRequest(options: { method: Method; endpoint: string; diff --git a/packages/core/src/persistent-storage.ts b/packages/core/src/persistent-storage.ts new file mode 100644 index 000000000..0950deece --- /dev/null +++ b/packages/core/src/persistent-storage.ts @@ -0,0 +1,5 @@ +export interface PersistentStorage { + // Returns `undefined` if storage is empty. + read(): Promise; + write(data: string): Promise; +} diff --git a/packages/ui/src/api.ts b/packages/ui/src/api.ts index 313e1b54c..ed7666a25 100644 --- a/packages/ui/src/api.ts +++ b/packages/ui/src/api.ts @@ -235,10 +235,6 @@ export function useGetWorkspace( return useSWR(`projects/${id}`, () => workspaceService.findById(id)); } -export function useGetFlowJson(): SWRResponse { - return useSWR(`flow-json`, () => ""); -} - export function useGetFlowCliInfo(): SWRResponse { const { flowService } = useServiceRegistry(); diff --git a/packages/ui/src/common/overlays/dialogs/snapshot/SnapshotDialog.tsx b/packages/ui/src/common/overlays/dialogs/snapshot/SnapshotDialog.tsx index a57c510fb..2e03d5c21 100644 --- a/packages/ui/src/common/overlays/dialogs/snapshot/SnapshotDialog.tsx +++ b/packages/ui/src/common/overlays/dialogs/snapshot/SnapshotDialog.tsx @@ -2,7 +2,7 @@ import React, { FC, useState } from "react"; import Button from "../../../buttons/Button/Button"; import classes from "./SnapshotDialog.module.scss"; import toast from "react-hot-toast"; -import { Input } from "../../../inputs/Input/Input"; +import { Input } from "../../../inputs"; import { ActionDialog } from "../action/ActionDialog"; import { useErrorHandler } from "../../../../hooks/use-error-handler"; import { useCurrentWorkspaceId } from "../../../../hooks/use-current-project-id"; @@ -18,7 +18,7 @@ export const SnapshotDialog: FC = ({ show, setShow }) => { const { handleError } = useErrorHandler(SnapshotDialog.name); const { snapshotService } = useServiceRegistry(); const [loading, setLoading] = useState(false); - const [description, setDescription] = useState(""); + const [name, setName] = useState(""); function onClose() { setShow(false); @@ -30,10 +30,7 @@ export const SnapshotDialog: FC = ({ show, setShow }) => { } setLoading(true); try { - await snapshotService.create({ - description, - projectId, - }); + await snapshotService.create(name); toast.success("Snapshot created"); onClose(); } catch (e) { @@ -73,8 +70,8 @@ export const SnapshotDialog: FC = ({ show, setShow }) => {

    setDescription(e.target.value)} + value={name} + onChange={(e) => setName(e.target.value)} /> ); diff --git a/packages/ui/src/contexts/service-registry.context.tsx b/packages/ui/src/contexts/service-registry.context.tsx index f5217d551..3216cc4de 100644 --- a/packages/ui/src/contexts/service-registry.context.tsx +++ b/packages/ui/src/contexts/service-registry.context.tsx @@ -11,13 +11,12 @@ import { FlowTransaction, InteractionTemplate, IResourceIndexReader, ManagedProcessOutput, ParsedInteractionOrError } from "@onflowser/api"; -import { FlowAuthorizationFunction } from "@onflowser/core"; -interface ISnapshotService extends IResourceIndexReader { - // TODO(restructure): Provide request/response type - create(request: any): Promise; - checkoutBlock(request: any): Promise; - rollback(request: any): Promise; +export interface ISnapshotService { + list(): Promise; + create(name: string): Promise; + jumpTo(name: string): Promise; + rollbackToHeight(height: number): Promise; } export interface IWorkspaceService { @@ -37,7 +36,7 @@ export interface IInteractionService { } export type SendTransactionRequest = { - // TODO(restructure): These should probably be of type FlowAuthorizationFunction when generalizing for web version + // TODO(web): These should probably be of type FlowAuthorizationFunction when generalizing for web version cadence: string; proposerAddress: string; payerAddress: string; @@ -101,7 +100,7 @@ export function ServiceRegistryProvider(props: ServiceRegistryProviderProps) { ); } -export function useServiceRegistry() { +export function useServiceRegistry(): ServiceRegistry { const context = useContext(ServiceRegistryContext); if (context === undefined) { diff --git a/packages/ui/src/contexts/snapshots.context.tsx b/packages/ui/src/contexts/snapshots.context.tsx index f5e194099..2f444f731 100644 --- a/packages/ui/src/contexts/snapshots.context.tsx +++ b/packages/ui/src/contexts/snapshots.context.tsx @@ -37,7 +37,7 @@ export function SnapshotsManagerProvider({ const { handleError } = useErrorHandler(SnapshotsManagerProvider.name); const { showDialog } = useConfirmDialog(); const { currentWorkspace } = useProjectManager(); - const { data: blocks, mutate } = useGetBlocks(); + const { data: blocks } = useGetBlocks(); const { data: stateSnapshots } = useGetStateSnapshots(); const snapshotLookupByBlockId = useMemo( () => @@ -90,11 +90,7 @@ export function SnapshotsManagerProvider({ } try { - await snapshotService.checkoutBlock({ - blockId: snapshot.blockId, - projectId: currentWorkspace.id, - }); - mutate(); + await snapshotService.jumpTo(snapshot.id); toast.success( `Moved to block: ${FlowUtils.getShortedBlockId(snapshot.blockId)}` ); @@ -108,7 +104,7 @@ export function SnapshotsManagerProvider({ body: ( Do you want to move the emulator blockchain state to the snapshot{" "} - {snapshot.description}? + {snapshot.id}? ), confirmButtonLabel: "JUMP", @@ -136,10 +132,7 @@ export function SnapshotsManagerProvider({ } try { - await snapshotService.rollback({ - blockHeight: targetBlock.height, - }); - mutate(); + await snapshotService.rollbackToHeight(targetBlock.height); toast.success( `Moved to block: ${FlowUtils.getShortedBlockId(targetBlock.id)}` ); From e4adcf2226414014b0cf83433bd0790b45c797b2 Mon Sep 17 00:00:00 2001 From: Bart Date: Tue, 24 Oct 2023 11:57:55 +0200 Subject: [PATCH 044/100] remove obsolete service --- .../src/services/flowser-app.service.ts | 2 ++ apps/electron/src/services/logger.service.ts | 31 ------------------- 2 files changed, 2 insertions(+), 31 deletions(-) delete mode 100644 apps/electron/src/services/logger.service.ts diff --git a/apps/electron/src/services/flowser-app.service.ts b/apps/electron/src/services/flowser-app.service.ts index 3acd43f92..41cb0c5c6 100644 --- a/apps/electron/src/services/flowser-app.service.ts +++ b/apps/electron/src/services/flowser-app.service.ts @@ -30,6 +30,7 @@ import { WorkspaceEvent, WorkspaceService } from './workspace.service'; import { BlockchainIndexService } from './blockchain-index.service'; import { FileStorageService } from './file-storage.service'; +// Root service that ties all the pieces together and orchestrates them. export class FlowserAppService { static instance: FlowserAppService; public readonly flowGatewayService: FlowGatewayService; @@ -184,6 +185,7 @@ export class FlowserAppService { } } +// TODO(restructure): Expose flowser logs to the user? class WebLogger implements IFlowserLogger { debug(message: any): void { console.debug(message); diff --git a/apps/electron/src/services/logger.service.ts b/apps/electron/src/services/logger.service.ts deleted file mode 100644 index ab45694ca..000000000 --- a/apps/electron/src/services/logger.service.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { LoggerService } from "@nestjs/common"; -import logger from "electron-log"; - -// Log file location: -// - Linux: ~/.config/{app name}/logs/{process type}.log -// - macOS: ~/Library/Logs/{app name}/{process type}.log -// - Windows: %USERPROFILE%\AppData\Roaming\{app name}\logs\{process type}.log - -// See https://github.com/megahertz/electron-log - -export class Logger implements LoggerService { - log(message: unknown, ...optionalParams: unknown[]): void { - logger.log(message, ...optionalParams); - } - - error(message: unknown, ...optionalParams: unknown[]): void { - logger.error(message, ...optionalParams); - } - - warn(message: unknown, ...optionalParams: unknown[]): void { - logger.warn(message, ...optionalParams); - } - - debug?(message: unknown, ...optionalParams: unknown[]): void { - logger.debug(message, ...optionalParams); - } - - verbose?(message: unknown, ...optionalParams: unknown[]): void { - logger.verbose(message, ...optionalParams); - } -} From 52e0e3891ab302bba0c767a904c5cabff9f5d967 Mon Sep 17 00:00:00 2001 From: Bart Date: Wed, 25 Oct 2023 16:45:47 +0200 Subject: [PATCH 045/100] tie processing scheduler to workspace lifecycle --- apps/electron/src/main/main.ts | 1 - apps/electron/src/services/flowser-app.service.ts | 13 ++++++------- packages/nodejs/src/async-interval-scheduler.ts | 7 ++++--- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/apps/electron/src/main/main.ts b/apps/electron/src/main/main.ts index 4e38ddd70..eda8f3ab5 100644 --- a/apps/electron/src/main/main.ts +++ b/apps/electron/src/main/main.ts @@ -142,7 +142,6 @@ app .then(() => { createWindow(); registerHandlers(flowserAppService); - flowserAppService.startProcessing(); app.on('activate', () => { // On macOS it's common to re-create a window in the app when the // dock icon is clicked and there are no other windows open. diff --git a/apps/electron/src/services/flowser-app.service.ts b/apps/electron/src/services/flowser-app.service.ts index 41cb0c5c6..dcb96bb7d 100644 --- a/apps/electron/src/services/flowser-app.service.ts +++ b/apps/electron/src/services/flowser-app.service.ts @@ -47,8 +47,8 @@ export class FlowserAppService { public readonly blockchainIndexService: BlockchainIndexService; public readonly flowSnapshotsService: FlowSnapshotsService; public readonly flowConfigService: FlowConfigService; - private scheduler: AsyncIntervalScheduler; - private flowSnapshotsStorageService: FileStorageService; + private readonly flowSnapshotsStorageService: FileStorageService; + private processingScheduler: AsyncIntervalScheduler; constructor() { this.flowGatewayService = new FlowGatewayService(); @@ -107,7 +107,7 @@ export class FlowserAppService { this.flowConfigService, this.blockchainIndexService.indexes.account, ); - this.scheduler = new AsyncIntervalScheduler({ + this.processingScheduler = new AsyncIntervalScheduler({ name: 'Blockchain processing', pollingIntervalInMs: 500, functionToExecute: () => this.flowIndexerService.processBlockchainData(), @@ -122,10 +122,6 @@ export class FlowserAppService { return this.instance; } - startProcessing() { - return this.scheduler.start(); - } - private registerListeners() { this.workspaceService.on( WorkspaceEvent.WORKSPACE_OPEN, @@ -155,6 +151,8 @@ export class FlowserAppService { flowJSON: this.flowConfigService.getFlowJSON(), }); + this.processingScheduler.start(); + if (workspace.emulator) { await this.flowEmulatorService.start({ workspacePath: workspace.filesystemPath, @@ -182,6 +180,7 @@ export class FlowserAppService { private async onWorkspaceClose() { await this.flowEmulatorService.stopAndCleanup(); this.blockchainIndexService.clear(); + this.processingScheduler.stop(); } } diff --git a/packages/nodejs/src/async-interval-scheduler.ts b/packages/nodejs/src/async-interval-scheduler.ts index 1620a84c2..3c81364cb 100644 --- a/packages/nodejs/src/async-interval-scheduler.ts +++ b/packages/nodejs/src/async-interval-scheduler.ts @@ -20,12 +20,13 @@ export class AsyncIntervalScheduler { this.isRunning = false; } - async start(): Promise { + start(): void { if (this.isRunning) { return; } this.isRunning = true; - await this.pollIfRunning(); + // We don't want to await the end of processing. + this.pollExecutionIfRunning(); } stop(): void { @@ -33,7 +34,7 @@ export class AsyncIntervalScheduler { this.isRunning = false; } - private async pollIfRunning() { + private async pollExecutionIfRunning() { const { functionToExecute, name, pollingIntervalInMs } = this.options; while (this.isRunning) { const startTime = new Date(); From 4eea0326884ba0ffdd605800f68959d022d326cb Mon Sep 17 00:00:00 2001 From: Bart Date: Wed, 25 Oct 2023 16:57:18 +0200 Subject: [PATCH 046/100] list emulator logs --- apps/electron/src/main/ipc/events.ts | 2 ++ apps/electron/src/main/ipc/handlers.ts | 6 ++++ apps/electron/src/main/ipc/invokers.ts | 7 +++++ apps/electron/src/renderer/App.tsx | 2 +- .../src/processes/process-manager.service.ts | 29 ++----------------- packages/ui/src/api.ts | 9 +++--- .../src/contexts/service-registry.context.tsx | 6 +++- 7 files changed, 28 insertions(+), 33 deletions(-) diff --git a/apps/electron/src/main/ipc/events.ts b/apps/electron/src/main/ipc/events.ts index 53a117bcc..75d5f759d 100644 --- a/apps/electron/src/main/ipc/events.ts +++ b/apps/electron/src/main/ipc/events.ts @@ -24,4 +24,6 @@ export enum FlowserIpcEvent { SNAPSHOTS_JUMP_TO = 'SNAPSHOTS_JUMP_TO', SNAPSHOTS_LIST = 'SNAPSHOTS_LIST', SNAPSHOTS_CREATE = 'SNAPSHOTS_CREATE', + + PROCESS_LOGS_LIST = 'PROCESS_LOGS_LIST', } diff --git a/apps/electron/src/main/ipc/handlers.ts b/apps/electron/src/main/ipc/handlers.ts index bc82c932d..61f5ec4f5 100644 --- a/apps/electron/src/main/ipc/handlers.ts +++ b/apps/electron/src/main/ipc/handlers.ts @@ -23,6 +23,7 @@ export function registerHandlers(flowserAppService: FlowserAppService) { flowGatewayService, walletService, flowSnapshotsService, + processManagerService, } = flowserAppService; const handlers: Record = { @@ -111,6 +112,11 @@ export function registerHandlers(flowserAppService: FlowserAppService) { event: IpcMainInvokeEvent, height: number, ) => flowSnapshotsService.rollbackToHeight(height), + + [FlowserIpcEvent.PROCESS_LOGS_LIST]: ( + event: IpcMainInvokeEvent, + processId: string, + ) => processManagerService.findAllLogsByProcess(processId), }; for (const eventName in handlers) { diff --git a/apps/electron/src/main/ipc/invokers.ts b/apps/electron/src/main/ipc/invokers.ts index 2feedbc00..b07e81dbd 100644 --- a/apps/electron/src/main/ipc/invokers.ts +++ b/apps/electron/src/main/ipc/invokers.ts @@ -4,6 +4,7 @@ import { ExecuteScriptRequest, IFlowService, IInteractionService, + IProcessManagerService, ISnapshotService, IWorkspaceService, SendTransactionRequest, @@ -59,6 +60,11 @@ const snapshots: ISnapshotService = { ipcRenderer.invoke(FlowserIpcEvent.SNAPSHOTS_ROLLBACK_TO_HEIGHT, height), }; +const processManagerService: IProcessManagerService = { + findAllLogsByProcessId: (processId: string) => + ipcRenderer.invoke(FlowserIpcEvent.PROCESS_LOGS_LIST, processId), +}; + export const electronInvokers = { platformAdapter: { showDirectoryPicker: () => ipcRenderer.invoke('showDirectoryPicker'), @@ -75,6 +81,7 @@ export const electronInvokers = { interactions, workspaces, snapshots, + processManagerService, indexes: { getAll: (indexName: keyof BlockchainIndexes) => ipcRenderer.invoke(FlowserIpcEvent.INDEX_GET_ALL, indexName), diff --git a/apps/electron/src/renderer/App.tsx b/apps/electron/src/renderer/App.tsx index dc3ca65c9..5e32a884f 100644 --- a/apps/electron/src/renderer/App.tsx +++ b/apps/electron/src/renderer/App.tsx @@ -74,7 +74,7 @@ export function App() { eventsIndex: indexes.event, blocksIndex: indexes.block, transactionsIndex: indexes.transaction, - processOutputIndex: undefined as never, + processManagerService: window.electron.processManagerService, monitoringService, analyticsService, workspaceService: window.electron.workspaces, diff --git a/packages/nodejs/src/processes/process-manager.service.ts b/packages/nodejs/src/processes/process-manager.service.ts index 200573f37..12541d6e4 100644 --- a/packages/nodejs/src/processes/process-manager.service.ts +++ b/packages/nodejs/src/processes/process-manager.service.ts @@ -27,37 +27,14 @@ export class ProcessManagerService extends EventEmitter { process.exit(0); } - findAllProcessesNewerThanTimestamp(timestamp: Date): ManagedProcess[] { - return this.getAll().filter((process) => { - const isUpdatedLater = process.updatedAt.getTime() > timestamp.getTime(); - const isCreatedLater = process.createdAt.getTime() > timestamp.getTime(); - return isUpdatedLater || isCreatedLater; - }); - } - - findAllLogsNewerThanTimestamp(timestamp: Date): ManagedProcessOutput[] { - const processes = this.getAll(); - const logsByProcesses = processes.map((process) => - this.findAllLogsByProcessIdNewerThanTimestamp(process.id, timestamp) - ); - const allLogs = logsByProcesses.flat(); - return allLogs.sort( - (a, b) => - new Date(a.createdAt).getTime() - new Date(b.createdAt).getTime() - ); - } - - findAllLogsByProcessIdNewerThanTimestamp( + findAllLogsByProcess( processId: string, - timestamp: Date ): ManagedProcessOutput[] { const process = this.processLookupById.get(processId); if (!process) { - return []; + throw new Error("Process not found") } - return process.output?.filter( - (log) => new Date(log.createdAt).getTime() > timestamp.getTime() - ); + return process.output; } getAll() { diff --git a/packages/ui/src/api.ts b/packages/ui/src/api.ts index ed7666a25..5fc3e7544 100644 --- a/packages/ui/src/api.ts +++ b/packages/ui/src/api.ts @@ -191,14 +191,13 @@ export function useGetEventsByTransaction( export function useGetOutputsByProcess( id: string ): SWRResponse { - const { processOutputIndex } = useServiceRegistry(); + const { processManagerService } = useServiceRegistry(); return useSWR( `${id}/outputs`, () => - processOutputIndex - .findAll() - .then((res) => res.filter((e) => e.processId === id)), + processManagerService + .findAllLogsByProcessId(id), { refreshInterval: 1000, } @@ -216,7 +215,7 @@ export function useGetEvent(id: string): SWRResponse { export function useGetStateSnapshots(): SWRResponse { const { snapshotService } = useServiceRegistry(); - return useSWR(`snapshots`, () => snapshotService.findAll(), { + return useSWR(`snapshots`, () => snapshotService.list(), { refreshInterval: 1000, }); } diff --git a/packages/ui/src/contexts/service-registry.context.tsx b/packages/ui/src/contexts/service-registry.context.tsx index 3216cc4de..975f93d03 100644 --- a/packages/ui/src/contexts/service-registry.context.tsx +++ b/packages/ui/src/contexts/service-registry.context.tsx @@ -67,6 +67,10 @@ interface IMonitoringService { captureError(error: unknown, options?: Record): void; } +export interface IProcessManagerService { + findAllLogsByProcessId(processId: string): Promise; +} + type ServiceRegistry = { interactionsService: IInteractionService; flowService: IFlowService; @@ -74,13 +78,13 @@ type ServiceRegistry = { workspaceService: IWorkspaceService; analyticsService: IAnalyticsService; monitoringService: IMonitoringService; + processManagerService: IProcessManagerService; accountIndex: IResourceIndexReader; accountStorageIndex: IResourceIndexReader; contractIndex: IResourceIndexReader; transactionsIndex: IResourceIndexReader; blocksIndex: IResourceIndexReader; eventsIndex: IResourceIndexReader; - processOutputIndex: IResourceIndexReader; }; const ServiceRegistryContext = createContext( From 411a34f9538a0ee2c51840c2a4b6dcce1b0bb666 Mon Sep 17 00:00:00 2001 From: Bart Date: Wed, 25 Oct 2023 17:16:52 +0200 Subject: [PATCH 047/100] fix old type usages --- .../InteractionHistory/InteractionHistory.tsx | 2 +- .../ValueBuilder/AddressBuilder/AddressBuilder.tsx | 10 +++++----- .../TransactionSource/TransactionSource.tsx | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/ui/src/interactions/components/InteractionHistory/InteractionHistory.tsx b/packages/ui/src/interactions/components/InteractionHistory/InteractionHistory.tsx index 3b83ee92c..b394c641c 100644 --- a/packages/ui/src/interactions/components/InteractionHistory/InteractionHistory.tsx +++ b/packages/ui/src/interactions/components/InteractionHistory/InteractionHistory.tsx @@ -68,7 +68,7 @@ function BlockItem(props: BlockItemProps) { fclValuesByIdentifier: new Map( firstTransaction.arguments.map((arg) => [ arg.identifier, - JSON.parse(arg.valueAsJson), + arg.value ]) ), initialOutcome: { diff --git a/packages/ui/src/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.tsx b/packages/ui/src/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.tsx index 9b2db2909..ef8d7e783 100644 --- a/packages/ui/src/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.tsx +++ b/packages/ui/src/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.tsx @@ -15,7 +15,7 @@ export function AddressBuilder(props: CadenceValueBuilder): ReactElement { const { disabled, value, setValue, addressBuilderOptions } = props; const { data, mutate } = useGetAccounts(); const { flowService } = useServiceRegistry(); - const managedAccounts = useMemo(() => addressBuilderOptions?.showManagedAccountsOnly + const accountsToShow = useMemo(() => addressBuilderOptions?.showManagedAccountsOnly ? data?.filter((account) => account.keys.some((key) => key.privateKey !== "") ) @@ -24,12 +24,12 @@ export function AddressBuilder(props: CadenceValueBuilder): ReactElement { useEffect(() => { const serviceAddress = "0xf8d6e0586b0a20c7"; const defaultAccount = - managedAccounts?.find((account) => account.address === serviceAddress) ?? - managedAccounts?.[0]; + accountsToShow?.find((account) => account.address === serviceAddress) ?? + accountsToShow?.[0]; if (!FclValueUtils.isFclAddressValue(value) && defaultAccount) { setValue(defaultAccount.address); } - }, [managedAccounts]); + }, [accountsToShow]); async function createNewAccount() { await flowService.createAccount(); @@ -39,7 +39,7 @@ export function AddressBuilder(props: CadenceValueBuilder): ReactElement { return (
    - {managedAccounts?.map((account) => ( + {accountsToShow?.map((account) => ( = ({ fclValuesByIdentifier: new Map( transaction.arguments.map((arg) => [ arg.identifier, - JSON.parse(arg.valueAsJson), + arg.value ]) ), initialOutcome: { @@ -61,7 +61,7 @@ export const TransactionSource: FC = ({ From 348b205c90f224ff6fd7ac049a243d356218b259 Mon Sep 17 00:00:00 2001 From: Bart Date: Wed, 25 Oct 2023 17:24:31 +0200 Subject: [PATCH 048/100] fix account re-indexing --- packages/core/src/flow-indexer.service.ts | 12 ++++++------ packages/nodejs/src/wallet.service.ts | 10 +++++++--- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/packages/core/src/flow-indexer.service.ts b/packages/core/src/flow-indexer.service.ts index 89e96d338..92f3396be 100644 --- a/packages/core/src/flow-indexer.service.ts +++ b/packages/core/src/flow-indexer.service.ts @@ -307,7 +307,7 @@ export class FlowIndexerService { }) { const { event, block } = options; this.logger.debug( - `handling event: ${event.type} ${JSON.stringify(event.data)}` + `Processing event: ${event.type} ${JSON.stringify(event.data)}` ); const isTokenWithdrawnEvent = (eventId: string) => @@ -320,16 +320,16 @@ export class FlowIndexerService { case FlowCoreEventType.ACCOUNT_CREATED: return this.reIndexAccount({ address, - block: block, + block, }); case FlowCoreEventType.ACCOUNT_KEY_ADDED: case FlowCoreEventType.ACCOUNT_KEY_REMOVED: - return this.reIndexAccount({ address, block: block }); + return this.reIndexAccount({ address, block }); case FlowCoreEventType.ACCOUNT_CONTRACT_ADDED: case FlowCoreEventType.ACCOUNT_CONTRACT_UPDATED: case FlowCoreEventType.ACCOUNT_CONTRACT_REMOVED: // TODO: Stop re-fetching all contracts and instead use event.data.contract to get the removed/updated/added contract - return this.reIndexAccount({ address, block: block }); + return this.reIndexAccount({ address, block }); } switch (true) { @@ -337,10 +337,10 @@ export class FlowIndexerService { // New emulator accounts are initialized // with a default Flow balance coming from null address. return event.data.from - ? this.reIndexAccount(event.data.from) + ? this.reIndexAccount({address: event.data.from, block}) : undefined; case isTokenDepositedEvent(event.type): - return this.reIndexAccount(event.data.to); + return this.reIndexAccount({address: event.data.to, block}); } } diff --git a/packages/nodejs/src/wallet.service.ts b/packages/nodejs/src/wallet.service.ts index 54853a1ba..4138071ed 100644 --- a/packages/nodejs/src/wallet.service.ts +++ b/packages/nodejs/src/wallet.service.ts @@ -95,7 +95,11 @@ export class WalletService { ): Promise { const storedAccount = await this.accountIndex.findOneById(address); - if (!storedAccount.keys) { + if (!storedAccount) { + throw new Error("Account not found") + } + + if (storedAccount.keys.length === 0) { throw new Error("Keys not loaded for account"); } @@ -289,12 +293,12 @@ export class WalletService { balance: 0, blockId: "", code: "", - createdAt: undefined, + createdAt: new Date(), deletedAt: undefined, isDefaultAccount: false, keys: [], tags: [], - updatedAt: undefined, + updatedAt: new Date(), }; } } From 7239ea2a531ff9eb6d4a8a0303ecb259af5ae6c8 Mon Sep 17 00:00:00 2001 From: Bart Date: Wed, 25 Oct 2023 17:58:29 +0200 Subject: [PATCH 049/100] fix svg loading --- .../configs/webpack.config.renderer.dev.ts | 20 +++- .../configs/webpack.config.renderer.prod.ts | 108 ++++++++++-------- 2 files changed, 76 insertions(+), 52 deletions(-) diff --git a/apps/electron/.erb/configs/webpack.config.renderer.dev.ts b/apps/electron/.erb/configs/webpack.config.renderer.dev.ts index 2d6eeb35e..e6aee9f85 100644 --- a/apps/electron/.erb/configs/webpack.config.renderer.dev.ts +++ b/apps/electron/.erb/configs/webpack.config.renderer.dev.ts @@ -32,8 +32,8 @@ if ( ) { console.log( chalk.black.bgYellow.bold( - 'The DLL files are missing. Sit back while we build them for you with "npm run build-dll"' - ) + 'The DLL files are missing. Sit back while we build them for you with "npm run build-dll"', + ), ); execSync('npm run postinstall'); } @@ -104,7 +104,19 @@ const configuration: webpack.Configuration = { test: /\.svg$/i, issuer: /\.[jt]sx?$/, resourceQuery: { not: [/url/] }, // exclude react component if *.svg?url - use: ['@svgr/webpack'], + // https://github.com/gregberge/svgr/issues/142 + use: [ + { + loader: '@svgr/webpack', + options: { + // Disable SVGO, since that tool stripes viewBox attribute + // and I can't figure out how to disable that. + // https://react-svgr.com/docs/options/#svgo + // https://github.com/gregberge/svgr/discussions/735 + svgo: false, + }, + }, + ], }, ], }, @@ -187,7 +199,7 @@ const configuration: webpack.Configuration = { let args = ['run', 'start:main']; if (process.env.MAIN_ARGS) { args = args.concat( - ['--', ...process.env.MAIN_ARGS.matchAll(/"[^"]+"|[^\s"]+/g)].flat() + ['--', ...process.env.MAIN_ARGS.matchAll(/"[^"]+"|[^\s"]+/g)].flat(), ); } spawn('npm', args, { diff --git a/apps/electron/.erb/configs/webpack.config.renderer.prod.ts b/apps/electron/.erb/configs/webpack.config.renderer.prod.ts index 72ac6fd2d..bc2acf822 100644 --- a/apps/electron/.erb/configs/webpack.config.renderer.prod.ts +++ b/apps/electron/.erb/configs/webpack.config.renderer.prod.ts @@ -2,38 +2,38 @@ * Build config for electron renderer process */ -import path from 'path'; -import webpack from 'webpack'; -import HtmlWebpackPlugin from 'html-webpack-plugin'; -import MiniCssExtractPlugin from 'mini-css-extract-plugin'; -import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer'; -import CssMinimizerPlugin from 'css-minimizer-webpack-plugin'; -import { merge } from 'webpack-merge'; -import TerserPlugin from 'terser-webpack-plugin'; -import baseConfig from './webpack.config.base'; -import webpackPaths from './webpack.paths'; -import checkNodeEnv from '../scripts/check-node-env'; -import deleteSourceMaps from '../scripts/delete-source-maps'; +import path from "path"; +import webpack from "webpack"; +import HtmlWebpackPlugin from "html-webpack-plugin"; +import MiniCssExtractPlugin from "mini-css-extract-plugin"; +import { BundleAnalyzerPlugin } from "webpack-bundle-analyzer"; +import CssMinimizerPlugin from "css-minimizer-webpack-plugin"; +import { merge } from "webpack-merge"; +import TerserPlugin from "terser-webpack-plugin"; +import baseConfig from "./webpack.config.base"; +import webpackPaths from "./webpack.paths"; +import checkNodeEnv from "../scripts/check-node-env"; +import deleteSourceMaps from "../scripts/delete-source-maps"; -checkNodeEnv('production'); +checkNodeEnv("production"); deleteSourceMaps(); const configuration: webpack.Configuration = { - devtool: 'source-map', + devtool: "source-map", - mode: 'production', + mode: "production", - target: ['web', 'electron-renderer'], + target: ["web", "electron-renderer"], - entry: [path.join(webpackPaths.srcRendererPath, 'index.tsx')], + entry: [path.join(webpackPaths.srcRendererPath, "index.tsx")], output: { path: webpackPaths.distRendererPath, - publicPath: './', - filename: 'renderer.js', + publicPath: "./", + filename: "renderer.js", library: { - type: 'umd', - }, + type: "umd" + } }, module: { @@ -43,51 +43,63 @@ const configuration: webpack.Configuration = { use: [ MiniCssExtractPlugin.loader, { - loader: 'css-loader', + loader: "css-loader", options: { modules: true, sourceMap: true, - importLoaders: 1, - }, + importLoaders: 1 + } }, - 'sass-loader', + "sass-loader" ], - include: /\.module\.s?(c|a)ss$/, + include: /\.module\.s?(c|a)ss$/ }, { test: /\.s?(a|c)ss$/, - use: [MiniCssExtractPlugin.loader, 'css-loader', 'sass-loader'], - exclude: /\.module\.s?(c|a)ss$/, + use: [MiniCssExtractPlugin.loader, "css-loader", "sass-loader"], + exclude: /\.module\.s?(c|a)ss$/ }, // Fonts { test: /\.(woff|woff2|eot|ttf|otf)$/i, - type: 'asset/resource', + type: "asset/resource" }, // Images { test: /\.(png|jpg|jpeg|gif)$/i, - type: 'asset/resource', + type: "asset/resource" }, // SVG // https://react-svgr.com/docs/webpack/#use-svgr-and-asset-svg-in-the-same-project { test: /\.svg$/i, - type: 'asset', - resourceQuery: /url/, // *.svg?url + type: "asset", + resourceQuery: /url/ // *.svg?url }, { test: /\.svg$/i, issuer: /\.[jt]sx?$/, resourceQuery: { not: [/url/] }, // exclude react component if *.svg?url - use: ['@svgr/webpack'], - }, - ], + // https://github.com/gregberge/svgr/issues/142 + use: [ + { + loader: "@svgr/webpack", + options: { + // Disable SVGO, since that tool stripes viewBox attribute + // and I can't figure out how to disable that. + // https://react-svgr.com/docs/options/#svgo + // https://github.com/gregberge/svgr/discussions/735 + svgo: false + } + } + ] + } + ] }, optimization: { minimize: true, - minimizer: [new TerserPlugin(), new CssMinimizerPlugin()], + minimizer: [new TerserPlugin(), new CssMinimizerPlugin()] }, plugins: [ @@ -101,35 +113,35 @@ const configuration: webpack.Configuration = { * development checks */ new webpack.EnvironmentPlugin({ - NODE_ENV: 'production', - DEBUG_PROD: false, + NODE_ENV: "production", + DEBUG_PROD: false }), new MiniCssExtractPlugin({ - filename: 'style.css', + filename: "style.css" }), new BundleAnalyzerPlugin({ - analyzerMode: process.env.ANALYZE === 'true' ? 'server' : 'disabled', - analyzerPort: 8889, + analyzerMode: process.env.ANALYZE === "true" ? "server" : "disabled", + analyzerPort: 8889 }), new HtmlWebpackPlugin({ - filename: 'index.html', - template: path.join(webpackPaths.srcRendererPath, 'index.ejs'), + filename: "index.html", + template: path.join(webpackPaths.srcRendererPath, "index.ejs"), minify: { collapseWhitespace: true, removeAttributeQuotes: true, - removeComments: true, + removeComments: true }, isBrowser: false, - isDevelopment: false, + isDevelopment: false }), new webpack.DefinePlugin({ - 'process.type': '"renderer"', - }), - ], + "process.type": "\"renderer\"" + }) + ] }; export default merge(baseConfig, configuration); From b4e2778b049d795e9ddec847372dafba7e3e35d1 Mon Sep 17 00:00:00 2001 From: Bart Date: Wed, 25 Oct 2023 18:01:15 +0200 Subject: [PATCH 050/100] fix help message --- packages/ui/src/logs/Logs.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/ui/src/logs/Logs.tsx b/packages/ui/src/logs/Logs.tsx index 08dacc284..1f31c1b42 100644 --- a/packages/ui/src/logs/Logs.tsx +++ b/packages/ui/src/logs/Logs.tsx @@ -237,8 +237,7 @@ function NoLogsHelpBanner() { description={

    - To view emulator logs within Flowser, you need to enable managed - emulator (started by Flowser itself) in project settings. + Flowser can only show logs, when emulator is run by Flowser itself. Make sure you aren't running the flow emulator command yourself.

    } From 132ca2f5d24cfb96ba8924df71003ddeebfe314f Mon Sep 17 00:00:00 2001 From: Bart Date: Thu, 26 Oct 2023 10:41:45 +0200 Subject: [PATCH 051/100] fix body overflow --- packages/nodejs/src/wallet.service.ts | 14 -------------- .../misc/SideNavigation/SideNavigation.module.scss | 7 ++++++- .../common/misc/SideNavigation/SideNavigation.tsx | 6 +++--- 3 files changed, 9 insertions(+), 18 deletions(-) diff --git a/packages/nodejs/src/wallet.service.ts b/packages/nodejs/src/wallet.service.ts index 4138071ed..e4cbed8c1 100644 --- a/packages/nodejs/src/wallet.service.ts +++ b/packages/nodejs/src/wallet.service.ts @@ -215,20 +215,6 @@ export class WalletService { }; }) }); - - // TODO(restructure): Update flow.json and regenerate accounts on next run? - // I don't think, so we can instead persist these accounts with snapshots. - // For now, we just write new accounts to flow.json, - // but they don't get recreated on the next emulator run. - // See: https://github.com/onflow/flow-emulator/issues/405 - // await this.flowConfig.updateAccounts([ - // { - // // TODO(custom-wallet): Come up with a human-readable name generation - // name: accountEntity.address, - // address: accountEntity.address, - // privateKey: singlePrivateKey, - // }, - // ]); } // Returns whether the account exists on the current blockchain. diff --git a/packages/ui/src/common/misc/SideNavigation/SideNavigation.module.scss b/packages/ui/src/common/misc/SideNavigation/SideNavigation.module.scss index 0f8142e33..0eba3fef5 100644 --- a/packages/ui/src/common/misc/SideNavigation/SideNavigation.module.scss +++ b/packages/ui/src/common/misc/SideNavigation/SideNavigation.module.scss @@ -10,13 +10,18 @@ align-items: center; border-right: 1px solid $gray-80; + .linksWrapper { + display: flex; + flex-direction: column; + row-gap: $spacing-base; + } + .inactiveLink { background: $gray-100; opacity: 0.5; width: 50px; height: 50px; border-radius: 15px; - margin-bottom: 20px; display: flex; justify-content: center; align-items: center; diff --git a/packages/ui/src/common/misc/SideNavigation/SideNavigation.tsx b/packages/ui/src/common/misc/SideNavigation/SideNavigation.tsx index 5fa4530dd..c40193553 100644 --- a/packages/ui/src/common/misc/SideNavigation/SideNavigation.tsx +++ b/packages/ui/src/common/misc/SideNavigation/SideNavigation.tsx @@ -18,9 +18,9 @@ export function SideNavigation(props: SideNavigationProps): ReactElement { return (
    -
    +
    - +
    -
    +
    Date: Thu, 26 Oct 2023 11:05:39 +0200 Subject: [PATCH 052/100] make side navigation responsive for smaller windows --- .../common/misc/SideNavigation/SideNavigation.module.scss | 7 ++++++- .../ui/src/common/misc/SideNavigation/SideNavigation.tsx | 2 ++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/ui/src/common/misc/SideNavigation/SideNavigation.module.scss b/packages/ui/src/common/misc/SideNavigation/SideNavigation.module.scss index 0eba3fef5..4786f3139 100644 --- a/packages/ui/src/common/misc/SideNavigation/SideNavigation.module.scss +++ b/packages/ui/src/common/misc/SideNavigation/SideNavigation.module.scss @@ -1,14 +1,19 @@ @import "../../../styles/colors"; @import "../../../styles/spacings"; +@import "../../../styles/scrollbars"; .root { display: flex; flex-direction: column; justify-content: space-between; + row-gap: $spacing-base; background: $gray-110; - padding: $spacing-base 0; align-items: center; border-right: 1px solid $gray-80; + overflow-y: scroll; + height: 100%; + + @include hiddenScrollbars(); .linksWrapper { display: flex; diff --git a/packages/ui/src/common/misc/SideNavigation/SideNavigation.tsx b/packages/ui/src/common/misc/SideNavigation/SideNavigation.tsx index c40193553..ec7b6bba2 100644 --- a/packages/ui/src/common/misc/SideNavigation/SideNavigation.tsx +++ b/packages/ui/src/common/misc/SideNavigation/SideNavigation.tsx @@ -19,6 +19,7 @@ export function SideNavigation(props: SideNavigationProps): ReactElement { return (
    + +
    ); From f1b660d724642088a10aa444dca5aba87affb932 Mon Sep 17 00:00:00 2001 From: Bart Date: Thu, 26 Oct 2023 11:21:25 +0200 Subject: [PATCH 053/100] handle emulator API errors --- packages/core/src/flow-snapshots.service.ts | 28 +++++++++++++++------ 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/packages/core/src/flow-snapshots.service.ts b/packages/core/src/flow-snapshots.service.ts index 8b2cbf2cd..7372632f6 100644 --- a/packages/core/src/flow-snapshots.service.ts +++ b/packages/core/src/flow-snapshots.service.ts @@ -141,18 +141,30 @@ export class FlowSnapshotsService extends EventEmitter { await this.storage.write(JSON.stringify(snapshots)); } - private emulatorRequest(options: { + private async emulatorRequest(options: { method: Method; endpoint: string; }) { const { adminServerPort } = this.config; - return axios.request({ - method: options.method, - url: `http://localhost:${adminServerPort}/emulator${options.endpoint}`, - // Prevent axios from throwing on certain http response codes - // https://github.com/axios/axios/issues/41 - validateStatus: () => true, - }); + try { + return await axios.request({ + method: options.method, + url: `http://localhost:${adminServerPort}/emulator${options.endpoint}`, + // Prevent axios from throwing on certain http response codes + // https://github.com/axios/axios/issues/41 + validateStatus: () => true, + }); + } catch (error) { + if (!axios.isAxiosError(error)) { + throw error; + } + + if (error.code === "ECONNREFUSED") { + throw new Error("Emulator offline") + } + + throw error; + } } } From 8dea2c0dc1466e86698d4b1e0a9ee49d519927f6 Mon Sep 17 00:00:00 2001 From: Bart Date: Thu, 26 Oct 2023 11:27:15 +0200 Subject: [PATCH 054/100] fix side nav height --- .../src/common/layouts/ProjectLayout/ProjectLayout.module.scss | 1 + .../ui/src/common/misc/SideNavigation/SideNavigation.module.scss | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/ui/src/common/layouts/ProjectLayout/ProjectLayout.module.scss b/packages/ui/src/common/layouts/ProjectLayout/ProjectLayout.module.scss index 70fa8059e..5d53bc5a3 100644 --- a/packages/ui/src/common/layouts/ProjectLayout/ProjectLayout.module.scss +++ b/packages/ui/src/common/layouts/ProjectLayout/ProjectLayout.module.scss @@ -8,6 +8,7 @@ $side-nav-width: 80px; display: flex; .sideNavigation { + height: 100vh; width: $side-nav-width; } diff --git a/packages/ui/src/common/misc/SideNavigation/SideNavigation.module.scss b/packages/ui/src/common/misc/SideNavigation/SideNavigation.module.scss index 4786f3139..2721badc8 100644 --- a/packages/ui/src/common/misc/SideNavigation/SideNavigation.module.scss +++ b/packages/ui/src/common/misc/SideNavigation/SideNavigation.module.scss @@ -11,7 +11,6 @@ align-items: center; border-right: 1px solid $gray-80; overflow-y: scroll; - height: 100%; @include hiddenScrollbars(); From 6b5c507d233de6110fff741a8a5ca2d57fb40095 Mon Sep 17 00:00:00 2001 From: Bart Date: Thu, 26 Oct 2023 12:25:23 +0200 Subject: [PATCH 055/100] improve FlowEvent types for core events --- packages/core/src/flow-gateway.service.ts | 58 ++++++++++++++++++++--- 1 file changed, 52 insertions(+), 6 deletions(-) diff --git a/packages/core/src/flow-gateway.service.ts b/packages/core/src/flow-gateway.service.ts index 57127bca6..3f3a5a68b 100644 --- a/packages/core/src/flow-gateway.service.ts +++ b/packages/core/src/flow-gateway.service.ts @@ -94,17 +94,63 @@ export type FlowTransaction = { payloadSignatures: FlowSignableObject[]; }; -// https://docs.onflow.org/fcl/reference/api/#event-object -export type FlowEvent = { +// https://developers.flow.com/cadence/language/crypto#signing-algorithms +export enum FlowSignatureAlgorithm { + // Enum values must be kept unchanged. + ECDSA_P256 = "1", + ECDSA_secp256k1 = "2", + BLS_BLS12_381 = "3", +} + +// https://developers.flow.com/cadence/language/core-events +export enum FlowCoreEventType { + ACCOUNT_CREATED = "flow.AccountCreated", + ACCOUNT_KEY_ADDED = "flow.AccountKeyAdded", + ACCOUNT_KEY_REMOVED = "flow.AccountKeyRemoved", + ACCOUNT_CONTRACT_ADDED = "flow.AccountContractAdded", + ACCOUNT_CONTRACT_UPDATED = "flow.AccountContractUpdated", + ACCOUNT_CONTRACT_REMOVED = "flow.AccountContractRemoved", + // TODO(account-linking): Add account inbox events + // https://developers.flow.com/cadence/language/core-events#inbox-value-published +} + +type FlowEventInternal = { transactionId: string; - type: string; + type: Type; transactionIndex: number; eventIndex: number; - // Data contains arbitrary key-value pairs emitted from transactions. - // Information about cadence types is not returned from fcl-js. - data: Record; + data: Data }; + +// https://developers.flow.com/cadence/language/core-events#account-key-added +type FlowKeyEvent = FlowEventInternal + +// https://developers.flow.com/cadence/language/core-events#account-contract-added +type FlowContractEvent = FlowEventInternal + +// https://developers.flow.com/cadence/language/core-events#account-created +type FlowAccountEvent = FlowEventInternal; + +type FlowAnyEvent = FlowEventInternal> + +// https://docs.onflow.org/fcl/reference/api/#event-object +export type FlowEvent = FlowAnyEvent | FlowKeyEvent | FlowAccountEvent | FlowContractEvent; + // https://developers.flow.com/next/tooling/fcl-js/api#authorization-function export type FlowAuthorizationFunction = () => unknown; From 009e4f92fb50a6ad17002009efe9cd8ca3f0a236 Mon Sep 17 00:00:00 2001 From: Bart Date: Thu, 26 Oct 2023 13:49:24 +0200 Subject: [PATCH 056/100] store keys in separate index, handle key event updates, fix managed account creation --- apps/electron/src/renderer/App.tsx | 3 + apps/electron/src/renderer/ipc-index.ts | 2 +- .../src/services/blockchain-index.service.ts | 17 +- .../src/services/flowser-app.service.ts | 25 +-- packages/api/src/capabilities.ts | 8 +- packages/api/src/resources.ts | 9 +- packages/core/src/flow-gateway.service.ts | 12 +- packages/core/src/flow-indexer.service.ts | 168 +++++++++------- packages/core/src/in-memory-index.ts | 10 +- packages/nodejs/src/flow-cli.service.ts | 4 +- .../src/processes/process-manager.service.ts | 4 +- packages/nodejs/src/wallet.service.ts | 184 ++++-------------- .../AccountKeysTable/AccountKeysTable.tsx | 2 +- .../accounts/AccountsTable/AccountsTable.tsx | 4 - packages/ui/src/api.ts | 27 ++- .../src/contexts/service-registry.context.tsx | 3 +- .../AddressBuilder/AddressBuilder.tsx | 10 +- 17 files changed, 209 insertions(+), 283 deletions(-) diff --git a/apps/electron/src/renderer/App.tsx b/apps/electron/src/renderer/App.tsx index 5e32a884f..c9a3577d8 100644 --- a/apps/electron/src/renderer/App.tsx +++ b/apps/electron/src/renderer/App.tsx @@ -9,6 +9,7 @@ import './App.scss'; import { ServiceRegistryProvider } from '@onflowser/ui/src/contexts/service-registry.context'; import { FlowAccount, + FlowAccountKey, FlowAccountStorage, FlowBlock, FlowContract, @@ -31,6 +32,7 @@ const indexes: BlockchainIndexes = { account: new IpcIndex('account'), block: new IpcIndex('block'), event: new IpcIndex('event'), + accountKey: new IpcIndex('accountKey'), }; const analyticsService = new AnalyticsService(); @@ -73,6 +75,7 @@ export function App() { contractIndex: indexes.contract, eventsIndex: indexes.event, blocksIndex: indexes.block, + accountKeyIndex: indexes.accountKey, transactionsIndex: indexes.transaction, processManagerService: window.electron.processManagerService, monitoringService, diff --git a/apps/electron/src/renderer/ipc-index.ts b/apps/electron/src/renderer/ipc-index.ts index 9ae810798..825c43fd2 100644 --- a/apps/electron/src/renderer/ipc-index.ts +++ b/apps/electron/src/renderer/ipc-index.ts @@ -34,7 +34,7 @@ export class IpcIndex< await this.clear(); await Promise.allSettled( - resources.map((resource: Resource) => this.add(resource)), + resources.map((resource: Resource) => this.create(resource)), ); } } diff --git a/apps/electron/src/services/blockchain-index.service.ts b/apps/electron/src/services/blockchain-index.service.ts index dca49b2fa..00a79eaa2 100644 --- a/apps/electron/src/services/blockchain-index.service.ts +++ b/apps/electron/src/services/blockchain-index.service.ts @@ -1,6 +1,7 @@ import { FlowAccount, FlowAccountStorage, + FlowAccountKey, FlowBlock, FlowContract, FlowEvent, @@ -9,10 +10,12 @@ import { IResourceIndex, TimestampedResource, } from '@onflowser/api'; +import { InMemoryIndex } from '@onflowser/core'; export type BlockchainIndexes = { accountStorage: IResourceIndex; contract: IResourceIndex; + accountKey: IResourceIndex; block: IResourceIndex; event: IResourceIndex; transaction: IResourceIndex; @@ -20,7 +23,19 @@ export type BlockchainIndexes = { }; export class BlockchainIndexService { - constructor(public readonly indexes: BlockchainIndexes) {} + public readonly indexes: BlockchainIndexes; + + constructor() { + this.indexes = { + accountKey: new InMemoryIndex(), + transaction: new InMemoryIndex(), + block: new InMemoryIndex(), + account: new InMemoryIndex(), + event: new InMemoryIndex(), + contract: new InMemoryIndex(), + accountStorage: new InMemoryIndex(), + }; + } clear() { this.findAll().forEach((index) => index.clear()); diff --git a/apps/electron/src/services/flowser-app.service.ts b/apps/electron/src/services/flowser-app.service.ts index dcb96bb7d..47f6206d7 100644 --- a/apps/electron/src/services/flowser-app.service.ts +++ b/apps/electron/src/services/flowser-app.service.ts @@ -5,16 +5,7 @@ import { FlowSnapshotsEvent, FlowSnapshotsService, IFlowserLogger, - InMemoryIndex, } from '@onflowser/core'; -import { - FlowAccount, - FlowAccountStorage, - FlowBlock, - FlowContract, - FlowEvent, - FlowTransaction, -} from '@onflowser/api'; import { AsyncIntervalScheduler, FlowCliService, @@ -66,7 +57,7 @@ export class FlowserAppService { this.flowInteractionsService = new FlowInteractionsService( this.goBindingsService, ); - this.processManagerService = new ProcessManagerService(); + this.processManagerService = new ProcessManagerService(this.logger); this.flowCliService = new FlowCliService(this.processManagerService); this.flowEmulatorService = new FlowEmulatorService( this.processManagerService, @@ -79,14 +70,7 @@ export class FlowserAppService { this.flowEmulatorService, new FileStorageService('flowser-workspaces.json'), ); - this.blockchainIndexService = new BlockchainIndexService({ - transaction: new InMemoryIndex(), - block: new InMemoryIndex(), - account: new InMemoryIndex(), - event: new InMemoryIndex(), - contract: new InMemoryIndex(), - accountStorage: new InMemoryIndex(), - }); + this.blockchainIndexService = new BlockchainIndexService(); this.flowIndexerService = new FlowIndexerService( this.logger, this.blockchainIndexService.indexes.transaction, @@ -94,6 +78,7 @@ export class FlowserAppService { this.blockchainIndexService.indexes.block, this.blockchainIndexService.indexes.event, this.blockchainIndexService.indexes.contract, + this.blockchainIndexService.indexes.accountKey, this.blockchainIndexService.indexes.accountStorage, this.flowAccountStorageService, this.flowGatewayService, @@ -101,11 +86,9 @@ export class FlowserAppService { ); this.flowConfigService = new FlowConfigService(this.logger); this.walletService = new WalletService( - this.logger, this.flowCliService, this.flowGatewayService, - this.flowConfigService, - this.blockchainIndexService.indexes.account, + this.blockchainIndexService.indexes.accountKey, ); this.processingScheduler = new AsyncIntervalScheduler({ name: 'Blockchain processing', diff --git a/packages/api/src/capabilities.ts b/packages/api/src/capabilities.ts index dd453cfaf..67465ed29 100644 --- a/packages/api/src/capabilities.ts +++ b/packages/api/src/capabilities.ts @@ -14,7 +14,8 @@ export interface IResourceIndexReader { } export interface IResourceIndexWriter { - add(resource: Resource): Promise; + create(resource: Resource): Promise; + upsert(resource: Resource): Promise; update(resource: RequireOnly): Promise; delete(resource: RequireOnly): Promise; clear(): Promise; @@ -23,8 +24,3 @@ export interface IResourceIndexWriter { export interface IResourceIndex extends IResourceIndexReader, IResourceIndexWriter {} - -// TODO(restructure): Consider defining resource-specific interfaces for fetchers -export interface IResourceFetcher { - fetchById(id: string): Promise; -} diff --git a/packages/api/src/resources.ts b/packages/api/src/resources.ts index 35d8ddf29..983960a30 100644 --- a/packages/api/src/resources.ts +++ b/packages/api/src/resources.ts @@ -57,12 +57,10 @@ export interface FlowAccount extends TimestampedResource, IdentifiableResource { // ID is equal to the address. id: string; address: string; - blockId: string; balance: number; code: string; isDefaultAccount: boolean; tags: FlowAccountTag[]; - keys: FlowAccountKey[]; } export interface FlowAccountTag { @@ -89,13 +87,12 @@ export enum HashAlgorithm { KECCAK_256 = "KECCAK_256", } -export interface FlowAccountKey { +export interface FlowAccountKey extends TimestampedResource, IdentifiableResource { id: string; index: number; - accountAddress: string; - blockId: string; + address: string; publicKey: string; - privateKey: string; + privateKey?: string; signAlgo: SignatureAlgorithm | undefined; hashAlgo: HashAlgorithm | undefined; weight: number; diff --git a/packages/core/src/flow-gateway.service.ts b/packages/core/src/flow-gateway.service.ts index 3f3a5a68b..969d26c49 100644 --- a/packages/core/src/flow-gateway.service.ts +++ b/packages/core/src/flow-gateway.service.ts @@ -114,7 +114,7 @@ export enum FlowCoreEventType { // https://developers.flow.com/cadence/language/core-events#inbox-value-published } -type FlowEventInternal = { +type FlowEventInternal = { transactionId: string; type: Type; transactionIndex: number; @@ -124,7 +124,7 @@ type FlowEventInternal = { // https://developers.flow.com/cadence/language/core-events#account-key-added -type FlowKeyEvent = FlowEventInternal // https://developers.flow.com/cadence/language/core-events#account-contract-added -type FlowContractEvent = FlowEventInternal // https://developers.flow.com/cadence/language/core-events#account-created -type FlowAccountEvent = FlowEventInternal; +export type FlowAccountEvent = FlowEventInternal; -type FlowAnyEvent = FlowEventInternal> +export type FlowAnyEvent = FlowEventInternal<`A.${string}.${string}.${string}`, Record> // https://docs.onflow.org/fcl/reference/api/#event-object -export type FlowEvent = FlowAnyEvent | FlowKeyEvent | FlowAccountEvent | FlowContractEvent; +export type FlowEvent = FlowAnyEvent | FlowAccountKeyEvent | FlowAccountEvent | FlowAccountContractEvent; // https://developers.flow.com/next/tooling/fcl-js/api#authorization-function export type FlowAuthorizationFunction = () => unknown; diff --git a/packages/core/src/flow-indexer.service.ts b/packages/core/src/flow-indexer.service.ts index 92f3396be..bf756f5b0 100644 --- a/packages/core/src/flow-indexer.service.ts +++ b/packages/core/src/flow-indexer.service.ts @@ -8,7 +8,7 @@ import { } from "@onflowser/api"; import { IFlowInteractions } from "./flow-interactions.service"; import { FlowAccountStorageService } from "./flow-storage.service"; -import { FlowApiStatus, FlowGatewayService } from "./flow-gateway.service"; +import { FlowApiStatus, FlowGatewayService, FlowAccountKeyEvent } from "./flow-gateway.service"; import { ensurePrefixedAddress } from "./utils"; import { IFlowserLogger } from './logger'; import { FclValue } from "./fcl-value"; @@ -52,6 +52,7 @@ export class FlowIndexerService { private blockIndex: IResourceIndex, private eventIndex: IResourceIndex, private contractIndex: IResourceIndex, + private accountKeyIndex: IResourceIndex, private accountStorageIndex: IResourceIndex, private flowStorageService: FlowAccountStorageService, private flowGatewayService: FlowGatewayService, @@ -171,7 +172,7 @@ export class FlowIndexerService { private async processBlockData(data: BlockData) { const blockPromise = this.blockIndex - .add(this.createBlockEntity({ block: data.block })) + .create(this.createBlockEntity({ block: data.block })) .catch((e: unknown) => this.logger.error("block save error", e) ); @@ -189,7 +190,7 @@ export class FlowIndexerService { const eventPromises = Promise.all( data.events.map((flowEvent) => this.eventIndex - .add( + .create( this.createEventEntity({ event: flowEvent, }) @@ -204,7 +205,7 @@ export class FlowIndexerService { blockPromise, transactionPromises, eventPromises, - this.processNewEvents({ + this.processEventBatch({ events: data.events, block: data.block, }) @@ -261,36 +262,17 @@ export class FlowIndexerService { }; } - private async processNewEvents(options: { + private async processEventBatch(options: { events: flowResource.FlowEvent[]; block: flowResource.FlowBlock; }) { const { events, block } = options; - // Process new accounts first, so other events can reference them. - const accountCreatedEvents = events.filter( - (event) => event.type === FlowCoreEventType.ACCOUNT_CREATED - ); - const restEvents = events.filter( - (event) => event.type !== FlowCoreEventType.ACCOUNT_CREATED - ); - await Promise.all( - accountCreatedEvents.map((flowEvent) => - this.processStandardEvents({ event: flowEvent, block }).catch((e) => { - this.logger.error( - `flow.AccountCreated event handling error: ${ - e.message - } (${JSON.stringify(flowEvent)})`, - e.stack - ); - }) - ) - ); await Promise.all( - restEvents.map((flowEvent) => - this.processStandardEvents({ event: flowEvent, block: block }).catch( + events.map((flowEvent) => + this.processSingleEvent({ event: flowEvent, block: block }).catch( (e) => { this.logger.error( - `${flowEvent.type} event handling error: ${ + `Event handling error: ${ e.message } (${JSON.stringify(flowEvent)})`, e.stack @@ -301,49 +283,83 @@ export class FlowIndexerService { ); } - private async processStandardEvents(options: { + private async processSingleEvent(options: { event: flowResource.FlowEvent; block: flowResource.FlowBlock; }) { const { event, block } = options; this.logger.debug( - `Processing event: ${event.type} ${JSON.stringify(event.data)}` + `Processing event: ${JSON.stringify(event)}` ); - const isTokenWithdrawnEvent = (eventId: string) => + const isFlowTokenWithdrawnEvent = (eventId: string) => /A\..*\.FlowToken\.TokensWithdrawn/.test(eventId); - const isTokenDepositedEvent = (eventId: string) => + const isFlowTokenDepositedEvent = (eventId: string) => /A\..*\.FlowToken\.TokensDeposited/.test(eventId); const address = ensurePrefixedAddress(event.data.address); switch (event.type) { case FlowCoreEventType.ACCOUNT_CREATED: - return this.reIndexAccount({ + return this.createAccount({ address, block, }); case FlowCoreEventType.ACCOUNT_KEY_ADDED: + return this.processAccountKeyAddedEvent(event); case FlowCoreEventType.ACCOUNT_KEY_REMOVED: - return this.reIndexAccount({ address, block }); + return this.processAccountKeyRemovedEvent(event); case FlowCoreEventType.ACCOUNT_CONTRACT_ADDED: case FlowCoreEventType.ACCOUNT_CONTRACT_UPDATED: case FlowCoreEventType.ACCOUNT_CONTRACT_REMOVED: // TODO: Stop re-fetching all contracts and instead use event.data.contract to get the removed/updated/added contract - return this.reIndexAccount({ address, block }); + // return this.createAccount({ address, block }); } switch (true) { - case isTokenWithdrawnEvent(event.type): + case isFlowTokenWithdrawnEvent(event.type): + const tokenWithdrawnData = event.data as {from: string; amount: number} // New emulator accounts are initialized // with a default Flow balance coming from null address. - return event.data.from - ? this.reIndexAccount({address: event.data.from, block}) + return tokenWithdrawnData.from + ? this.updateAccountBalance(tokenWithdrawnData.from) : undefined; - case isTokenDepositedEvent(event.type): - return this.reIndexAccount({address: event.data.to, block}); + case isFlowTokenDepositedEvent(event.type): + const tokenDepositedData = event.data as {to: string; amount: number} + return this.updateAccountBalance(tokenDepositedData.to); } } + private async processAccountKeyAddedEvent(event: FlowAccountKeyEvent) { + const publicKey = this.decodeUint8PublicKey(event.data.publicKey.publicKey); + const account = await this.flowGatewayService.getAccount(event.data.address); + const key = account.keys.find(key => key.publicKey === publicKey); + + if (key === undefined) { + throw new Error("Cannot find key from event") + } + + // Use `upsert` instead of `create` because a key + // may have already been created by wallet service. + // In that case we want to update everything except for the `privateKey field. + return this.accountKeyIndex.upsert(this.createKeyEntity({ + key, + address: account.address + })) + } + + private async processAccountKeyRemovedEvent(event: FlowAccountKeyEvent) { + const publicKey = this.decodeUint8PublicKey(event.data.publicKey.publicKey); + const keyId = this.buildKeyId({ + address: event.data.address, + publicKey: publicKey + }); + await this.accountKeyIndex.delete({id: keyId}) + } + + private decodeUint8PublicKey(encodedKey: string[]) { + return Buffer.from(new Uint8Array(encodedKey.map(Number))).toString("hex"); + } + private async processNewTransaction(options: { block: flowResource.FlowBlock; transaction: flowResource.FlowTransaction; @@ -357,28 +373,36 @@ export class FlowIndexerService { `Unexpected interaction parsing error: ${parsedInteraction.error}` ); } - return this.transactionIndex.add( + return this.transactionIndex.create( this.createTransactionEntity({ ...options, parsedInteraction }) ); } - private async reIndexAccount(options: { + private async updateAccountBalance(address: string) { + const flowAccount = await this.flowGatewayService.getAccount(address); + // Use `upsert` instead of `create` because we are processing a batch + // of events (which may include "account created" event) in parallel. + await this.accountIndex.upsert(this.createAccountEntity(flowAccount)) + } + + private async createAccount(options: { address: string; block: flowResource.FlowBlock; }) { const { address, block } = options; const flowAccount = await this.flowGatewayService.getAccount(address); - const flowserAccount = this.createAccountEntity({ - account: flowAccount, - block: block, - }); await Promise.all([ - this.accountIndex.add(flowserAccount), - // TODO(restructure): Should we store keys/contracts within the account index or a separate one? + // We need to use `upsert` instead of `create`, + // mainly because this account was possibly already created by wallet service. + this.accountIndex.upsert(this.createAccountEntity(flowAccount)), + Promise.all(flowAccount.keys.map(key => this.accountKeyIndex.create(this.createKeyEntity({ + address, + key + })))), Promise.all( Object.keys(flowAccount.contracts).map((name) => - this.contractIndex.add( + this.contractIndex.create( this.createContractEntity({ account: flowAccount, block: block, @@ -408,7 +432,7 @@ export class FlowIndexerService { address ); return Promise.all( - storages.map((storage) => this.accountStorageIndex.add(storage)) + storages.map((storage) => this.accountStorageIndex.upsert(storage)) ); } @@ -433,7 +457,7 @@ export class FlowIndexerService { this.getAllWellKnownAddresses() .filter(address => this.accountIndex.findOneById(address) !== undefined) .map((address) => - this.reIndexAccount({ + this.createAccount({ address, block: nonExistingBlock, }).catch(error => { @@ -474,31 +498,18 @@ export class FlowIndexerService { ]; } - private createAccountEntity(options: { - account: flowResource.FlowAccount; - block: flowResource.FlowBlock; - }): flowserResource.FlowAccount { - const { account, block } = options; - + private createAccountEntity(account: flowResource.FlowAccount): flowserResource.FlowAccount { const address = ensurePrefixedAddress(account.address); return { id: address, balance: account.balance, address, - blockId: block.id, // TODO(restructure): Add logic for generating tags // https://github.com/onflowser/flowser/pull/197/files#diff-de96e521dbe8391acff7b4c46768d9f51d90d5e30378600a41a57d14bb173f75L97-L116 tags: [], isDefaultAccount: this.getAllWellKnownAddresses().includes(address), code: account.code, - keys: account.keys.map((flowKey) => - this.createKeyEntity({ - account: account, - key: flowKey, - block: block, - }) - ), // TODO(restructure): Maybe the index should be the one dealing with these dates createdAt: new Date(), updatedAt: new Date(), @@ -507,11 +518,10 @@ export class FlowIndexerService { } private createKeyEntity(options: { - account: flowResource.FlowAccount; + address:string; key: flowResource.FlowKey; - block: flowResource.FlowBlock; }): flowserResource.FlowAccountKey { - const { account, key, block } = options; + const { address, key } = options; const signAlgoLookup = new Map([ [0, SignatureAlgorithm.ECDSA_P256], @@ -523,23 +533,35 @@ export class FlowIndexerService { [1, HashAlgorithm.SHA3_256], ]); - const accountAddress = ensurePrefixedAddress(account.address); - return { - id: `${accountAddress}.${key.index}`, + id: this.buildKeyId({ + address, + publicKey: key.publicKey + }), index: key.index, - accountAddress, + address: address, publicKey: key.publicKey, signAlgo: signAlgoLookup.get(key.signAlgo), hashAlgo: hashAlgoLookup.get(key.hashAlgo), weight: key.weight, sequenceNumber: key.sequenceNumber, revoked: key.revoked, - blockId: block.id, - privateKey: "", + // Do not include `privateKey` field here, + // otherwise it may override private key that was created by wallet service. + createdAt: new Date(), + deletedAt: undefined, + updatedAt: new Date(), }; } + private buildKeyId(options: { + address: string; + publicKey: string + }) { + const accountAddress = ensurePrefixedAddress(options.address); + return `${accountAddress}.${options.publicKey}` + } + private createEventEntity(options: { event: ExtendedFlowEvent; }): flowserResource.FlowEvent { diff --git a/packages/core/src/in-memory-index.ts b/packages/core/src/in-memory-index.ts index f52bb9557..77d3dd722 100644 --- a/packages/core/src/in-memory-index.ts +++ b/packages/core/src/in-memory-index.ts @@ -13,7 +13,7 @@ export class InMemoryIndex this.lookup = new Map(); } - async add(resource: Resource): Promise { + async create(resource: Resource): Promise { if (this.lookup.has(resource.id)) { throw new Error("Resource already exists"); } else { @@ -21,6 +21,14 @@ export class InMemoryIndex } } + async upsert(resource: Resource): Promise { + if (this.lookup.has(resource.id)) { + await this.update(resource); + } else { + await this.create(resource); + } + } + async delete(resource: RequireOnly): Promise { if (!this.lookup.has(resource.id)) { throw new Error("Resource not found"); diff --git a/packages/nodejs/src/flow-cli.service.ts b/packages/nodejs/src/flow-cli.service.ts index cbff99133..f1179cc36 100644 --- a/packages/nodejs/src/flow-cli.service.ts +++ b/packages/nodejs/src/flow-cli.service.ts @@ -5,6 +5,7 @@ import { import { ProcessManagerService } from "./processes/process-manager.service"; import { randomUUID } from "crypto"; import { HashAlgorithm, SignatureAlgorithm } from "@onflowser/api"; +import { IFlowserLogger } from "@onflowser/core"; export type GeneratedKey = { derivationPath: string; @@ -196,10 +197,9 @@ export class FlowCliService { } if (flag.value !== undefined) { - const shouldBeWrappedInQuotes = typeof flag.value !== "number"; return [ flag.key, - shouldBeWrappedInQuotes ? `"${flag.value}"` : String(flag.value), + String(flag.value), ]; } diff --git a/packages/nodejs/src/processes/process-manager.service.ts b/packages/nodejs/src/processes/process-manager.service.ts index 12541d6e4..e1fa88f50 100644 --- a/packages/nodejs/src/processes/process-manager.service.ts +++ b/packages/nodejs/src/processes/process-manager.service.ts @@ -4,6 +4,7 @@ import { ManagedProcessOutput, } from "./managed-process"; import { EventEmitter } from "node:events"; +import { IFlowserLogger } from "@onflowser/core"; export enum ProcessManagerEvent { PROCESS_ADDED = "process_added", @@ -13,7 +14,7 @@ export enum ProcessManagerEvent { export class ProcessManagerService extends EventEmitter { private readonly processLookupById: Map; - constructor() { + constructor(private readonly logger: IFlowserLogger) { super(); this.processLookupById = new Map(); @@ -51,6 +52,7 @@ export class ProcessManagerService extends EventEmitter { async start(process: ManagedProcess) { const isExisting = this.processLookupById.has(process.id); + this.logger.debug(`Running command '${process.options.command.name} ${process.options.command.args?.join("|")}'`) if (isExisting) { await this.startExisting(process.id); } else { diff --git a/packages/nodejs/src/wallet.service.ts b/packages/nodejs/src/wallet.service.ts index e4cbed8c1..3d3520c26 100644 --- a/packages/nodejs/src/wallet.service.ts +++ b/packages/nodejs/src/wallet.service.ts @@ -1,6 +1,6 @@ import { ec as EC } from "elliptic"; import { SHA3 } from "sha3"; -import { FlowCliService, KeyWithWeight } from "./flow-cli.service"; +import { FlowCliService } from "./flow-cli.service"; import { ensurePrefixedAddress, IFlowserLogger } from "@onflowser/core"; import { FlowAuthorizationFunction, @@ -8,13 +8,10 @@ import { } from "@onflowser/core"; import * as flowserResource from "@onflowser/api"; import { - FlowAccountKey, - FlowAccount, HashAlgorithm, IResourceIndex, SignatureAlgorithm, FclArgumentWithMetadata } from "@onflowser/api"; -import { FlowConfigService } from "./flow-config.service"; const fcl = require("@onflow/fcl"); @@ -40,14 +37,13 @@ const ec: EC = new EC("p256"); // https://developers.flow.com/tooling/flow-cli/accounts/create-accounts#key-weight const defaultKeyWeight = 1000; +// TODO(restructure): Should we import existing accounts from flow.json? export class WalletService { constructor( - private readonly logger: IFlowserLogger, private readonly cliService: FlowCliService, private readonly flowGateway: FlowGatewayService, - private readonly flowConfig: FlowConfigService, - private accountIndex: IResourceIndex + private accountKeysIndex: IResourceIndex ) {} public async sendTransaction( @@ -93,28 +89,14 @@ export class WalletService { private async withAuthorization( address: string ): Promise { - const storedAccount = await this.accountIndex.findOneById(address); + const allKeys = await this.accountKeysIndex.findAll(); + const accountPrivateKeys = allKeys.filter(key => Boolean(key.privateKey)); - if (!storedAccount) { - throw new Error("Account not found") + if (accountPrivateKeys.length === 0) { + throw new Error(`Private keys not found for account: ${address}`); } - if (storedAccount.keys.length === 0) { - throw new Error("Keys not loaded for account"); - } - - const credentialsWithPrivateKeys = storedAccount.keys.filter((key) => - Boolean(key.privateKey) - ); - const isManagedAccount = credentialsWithPrivateKeys.length > 0; - - if (!isManagedAccount) { - throw new Error( - `Authorizer account ${address} isn't managed by Flowser.` - ); - } - - const credentialToUse = credentialsWithPrivateKeys[0]; + const credentialToUse = accountPrivateKeys[0]; const authn: FlowAuthorizationFunction = ( fclAccount: Record = {} @@ -141,99 +123,40 @@ export class WalletService { return authn; } - public async importAccountsFromConfig() { - const accountsConfig = this.flowConfig.getAccounts(); - await Promise.all( - accountsConfig.map(async (accountConfig) => { - const accountAddress = ensurePrefixedAddress(accountConfig.address); - - const key: FlowAccountKey = { - ...this.createDefaultKey(accountAddress), - privateKey: accountConfig.privateKey, - }; - - const account: FlowAccount = { - ...this.createDefaultAccount(accountAddress), - // TODO(restructure): Add logic for generating tags - // https://github.com/onflowser/flowser/pull/197/files#diff-de96e521dbe8391acff7b4c46768d9f51d90d5e30378600a41a57d14bb173f75L97-L116 - keys: [key], - }; - - try { - const isOnNetwork = await this.isAccountCreatedOnNetwork( - accountAddress - ); - - if (!isOnNetwork) { - // Ideally we could create this account on the blockchain, but: - // - we would need to retrieve the public key from the private key we store in flow.json - // - seems like flow team doesn't recommend doing this: https://github.com/onflow/flow-emulator/issues/405 - this.logger.debug( - `Account ${accountAddress} is not created on the network, skipping import.` - ); - return; - } - - await this.accountIndex.add(account); - } catch (e: unknown) { - this.logger.error("Managed account import failed", e); - } - }) - ); - } - public async createAccount(options: CreateAccountRequest): Promise { - // For now, we only support a single key per account, - // but we could as well add support for attaching - // multiple keys with (possibly) different weights. - const generatedKeyPairs = await Promise.all([ - this.cliService.generateKey({ - projectRootPath: options.workspacePath, - }), - ]); + const signatureAlgorithm = SignatureAlgorithm.ECDSA_P256; + const hashAlgorithm = HashAlgorithm.SHA2_256; + const generatedKeyPair = await this.cliService.generateKey({ + projectRootPath: options.workspacePath, + signatureAlgorithm, + }); const generatedAccount = await this.cliService.createAccount({ projectRootPath: options.workspacePath, - keys: generatedKeyPairs.map( - (key): KeyWithWeight => ({ + keys: [ + { weight: defaultKeyWeight, - publicKey: key.public, - }) - ), + publicKey: generatedKeyPair.public, + } + ], }); const accountAddress = ensurePrefixedAddress(generatedAccount.address); - await this.accountIndex.add({ - ...this.createDefaultAccount(accountAddress), - keys: generatedKeyPairs.map((generatedKey) => { - return { - ...this.createDefaultKey(accountAddress), - index: generatedAccount.keys.findIndex( - (key) => key === generatedKey.public - ), - publicKey: generatedKey.public, - privateKey: generatedKey.private, - }; - }) - }); - } - - // Returns whether the account exists on the current blockchain. - private async isAccountCreatedOnNetwork(address: string): Promise { - try { - // Check if account is found on the blockchain. - // Will throw if not found. - await this.flowGateway.getAccount(address); - return true; - } catch (error: unknown) { - const isNotFoundError = String(error).includes( - "could not find account with address" - ); - if (isNotFoundError) { - return false; - } - - throw error; - } + await this.accountKeysIndex.create({ + address: accountAddress, + hashAlgo: hashAlgorithm, + // TODO(restructure): Reuse the same function as in indexer service + id: `${accountAddress}.${generatedKeyPair.public}`, + index: 0, + privateKey: generatedKeyPair.private, + publicKey: generatedKeyPair.public, + revoked: false, + sequenceNumber: 0, + signAlgo: signatureAlgorithm, + updatedAt: new Date(), + weight: 1000, + createdAt: new Date(), + deletedAt: undefined, + }) } private signWithPrivateKey(privateKey: string, message: string) { @@ -250,41 +173,4 @@ export class WalletService { sha.update(Buffer.from(msg, "hex")); return sha.digest(); } - - private createDefaultKey(accountAddress: string): FlowAccountKey { - const keyIndex = 0; - return { - // TODO(restructure): Define util functions for generating IDs / initializing resources? - id: `${accountAddress}.${keyIndex}`, - index: 0, - accountAddress, - blockId: "NULL", - // Public key is not stored in flow.json, - // so just use empty value for now. - // This should be updated by the aggregator service once it's picked up. - publicKey: "", - privateKey: "", - signAlgo: SignatureAlgorithm.ECDSA_P256, - hashAlgo: HashAlgorithm.SHA2_256, - weight: 1000, - sequenceNumber: 0, - revoked: false, - }; - } - - private createDefaultAccount(address: string): FlowAccount { - return { - id: address, - address, - balance: 0, - blockId: "", - code: "", - createdAt: new Date(), - deletedAt: undefined, - isDefaultAccount: false, - keys: [], - tags: [], - updatedAt: new Date(), - }; - } } diff --git a/packages/ui/src/accounts/AccountKeysTable/AccountKeysTable.tsx b/packages/ui/src/accounts/AccountKeysTable/AccountKeysTable.tsx index b689d7e07..6c82e6258 100644 --- a/packages/ui/src/accounts/AccountKeysTable/AccountKeysTable.tsx +++ b/packages/ui/src/accounts/AccountKeysTable/AccountKeysTable.tsx @@ -12,7 +12,7 @@ import { FlowAccountKey } from "@onflowser/api"; const columnsHelper = createColumnHelper(); const columns = [ - columnsHelper.accessor("accountAddress", { + columnsHelper.accessor("address", { header: () => , cell: (info) => (
    diff --git a/packages/ui/src/accounts/AccountsTable/AccountsTable.tsx b/packages/ui/src/accounts/AccountsTable/AccountsTable.tsx index 2b84b6756..4d4814b43 100644 --- a/packages/ui/src/accounts/AccountsTable/AccountsTable.tsx +++ b/packages/ui/src/accounts/AccountsTable/AccountsTable.tsx @@ -43,10 +43,6 @@ const columns = [ {TextUtils.readableNumber(info.getValue())} FLOW ), }), - columnHelper.accessor("keys", { - header: () => , - cell: (info) => {info.getValue().length ?? 0}, - }), // TODO(restructure): Provide this info // columnHelper.accessor("transactions", { // header: () => , diff --git a/packages/ui/src/api.ts b/packages/ui/src/api.ts index 5fc3e7544..59c267a48 100644 --- a/packages/ui/src/api.ts +++ b/packages/ui/src/api.ts @@ -31,11 +31,28 @@ export function useGetAccount( }); } -export function useGetKeysByAccount(id: string): SWRResponse { - const { accountIndex } = useServiceRegistry(); +export function useGetKeysByAccount( + address: string +): SWRResponse { + const { accountKeyIndex } = useServiceRegistry(); return useSWR( - `account/${id}`, - () => accountIndex.findOneById(id).then((res) => res?.keys ?? []), + `${address}/keys`, + () => + accountKeyIndex + .findAll() + .then((res) => res.filter((e) => e.address === address)), + { + refreshInterval: 1000, + } + ); +} + +export function useGetKeys(): SWRResponse { + const { accountKeyIndex } = useServiceRegistry(); + return useSWR( + `keys`, + () => + accountKeyIndex.findAll(), { refreshInterval: 1000, } @@ -63,7 +80,7 @@ export function useGetContractsByAccount( ): SWRResponse { const { contractIndex } = useServiceRegistry(); return useSWR( - `contracts`, + `${address}/contracts`, () => contractIndex .findAll() diff --git a/packages/ui/src/contexts/service-registry.context.tsx b/packages/ui/src/contexts/service-registry.context.tsx index 975f93d03..0ffc58e8a 100644 --- a/packages/ui/src/contexts/service-registry.context.tsx +++ b/packages/ui/src/contexts/service-registry.context.tsx @@ -1,7 +1,7 @@ import { createContext, ReactNode, useContext } from "react"; import { FclArgumentWithMetadata, - FlowAccount, + FlowAccount, FlowAccountKey, FlowAccountStorage, FlowBlock, FlowCliInfo, FlowContract, @@ -85,6 +85,7 @@ type ServiceRegistry = { transactionsIndex: IResourceIndexReader; blocksIndex: IResourceIndexReader; eventsIndex: IResourceIndexReader; + accountKeyIndex: IResourceIndexReader; }; const ServiceRegistryContext = createContext( diff --git a/packages/ui/src/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.tsx b/packages/ui/src/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.tsx index ef8d7e783..c3e113185 100644 --- a/packages/ui/src/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.tsx +++ b/packages/ui/src/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.tsx @@ -9,16 +9,16 @@ import { Spinner } from "../../../../common/loaders/Spinner/Spinner"; import { FclValueUtils } from "@onflowser/core"; import { FlowAccount } from "@onflowser/api"; import { useServiceRegistry } from "../../../../contexts/service-registry.context"; -import { useGetAccounts } from "../../../../api"; +import { useGetAccounts, useGetKeys } from "../../../../api"; export function AddressBuilder(props: CadenceValueBuilder): ReactElement { const { disabled, value, setValue, addressBuilderOptions } = props; const { data, mutate } = useGetAccounts(); const { flowService } = useServiceRegistry(); + const { data: allKeys } = useGetKeys(); + const accountsWithPrivateKeysLookup = new Set(allKeys?.filter(key => Boolean(key.privateKey)).map(key => key.address)); const accountsToShow = useMemo(() => addressBuilderOptions?.showManagedAccountsOnly - ? data?.filter((account) => - account.keys.some((key) => key.privateKey !== "") - ) + ? data?.filter((account) => accountsWithPrivateKeysLookup.has(account.address)) : data, [addressBuilderOptions?.showManagedAccountsOnly, data]); useEffect(() => { @@ -74,7 +74,7 @@ function AccountButton(props: AccountButtonProps) {
    From c7fc563f29b12003615bceb4a88c8476d6ff8287 Mon Sep 17 00:00:00 2001 From: Bart Date: Fri, 27 Oct 2023 11:09:15 +0200 Subject: [PATCH 057/100] fix details tab scroll interference, fix block details bug --- .../AccountDetails/AccountDetails.module.scss | 4 ++++ .../src/accounts/AccountDetails/AccountDetails.tsx | 2 +- .../ui/src/blocks/BlockDetails/BlockDetails.tsx | 2 +- .../ui/src/common/tabs/StyledTabs/StyledTabs.tsx | 13 +++++++------ .../ui/src/common/time/DateDisplay/DateDisplay.tsx | 5 +++-- .../TransactionDetails.module.scss | 4 ++++ .../TransactionDetails/TransactionDetails.tsx | 1 + 7 files changed, 21 insertions(+), 10 deletions(-) diff --git a/packages/ui/src/accounts/AccountDetails/AccountDetails.module.scss b/packages/ui/src/accounts/AccountDetails/AccountDetails.module.scss index a827147f2..0c43db7a6 100644 --- a/packages/ui/src/accounts/AccountDetails/AccountDetails.module.scss +++ b/packages/ui/src/accounts/AccountDetails/AccountDetails.module.scss @@ -18,4 +18,8 @@ margin-left: $spacing-s; } + .tabContent { + overflow: unset; + } + } diff --git a/packages/ui/src/accounts/AccountDetails/AccountDetails.tsx b/packages/ui/src/accounts/AccountDetails/AccountDetails.tsx index 3f5ca1716..c94c8768e 100644 --- a/packages/ui/src/accounts/AccountDetails/AccountDetails.tsx +++ b/packages/ui/src/accounts/AccountDetails/AccountDetails.tsx @@ -119,7 +119,7 @@ export const AccountDetails: FunctionComponent = (
    - +
    ); }; diff --git a/packages/ui/src/blocks/BlockDetails/BlockDetails.tsx b/packages/ui/src/blocks/BlockDetails/BlockDetails.tsx index 87d7358c1..d4bf8a880 100644 --- a/packages/ui/src/blocks/BlockDetails/BlockDetails.tsx +++ b/packages/ui/src/blocks/BlockDetails/BlockDetails.tsx @@ -21,7 +21,7 @@ export const BlockDetails: FunctionComponent = (props) => { const { isLoading, data: block } = useGetBlock(props.blockId); const { data: transactions } = useGetTransactionsByBlock(props.blockId); - if (isLoading || !block) { + if (isLoading || !block || !transactions) { return ; } diff --git a/packages/ui/src/common/tabs/StyledTabs/StyledTabs.tsx b/packages/ui/src/common/tabs/StyledTabs/StyledTabs.tsx index d20b097fe..58cbb4986 100644 --- a/packages/ui/src/common/tabs/StyledTabs/StyledTabs.tsx +++ b/packages/ui/src/common/tabs/StyledTabs/StyledTabs.tsx @@ -1,19 +1,20 @@ import classes from "./StyledTabs.module.scss"; import { BaseTabs, BaseTabsProps } from "../BaseTabs/BaseTabs"; import React, { ReactElement } from "react"; +import classNames from "classnames"; export type StyledTabsProps = BaseTabsProps; export function StyledTabs(props: StyledTabsProps): ReactElement { return ( ); } diff --git a/packages/ui/src/common/time/DateDisplay/DateDisplay.tsx b/packages/ui/src/common/time/DateDisplay/DateDisplay.tsx index 2b300945a..724fd926c 100644 --- a/packages/ui/src/common/time/DateDisplay/DateDisplay.tsx +++ b/packages/ui/src/common/time/DateDisplay/DateDisplay.tsx @@ -3,9 +3,10 @@ import classes from "./DateDisplay.module.scss"; import { TextUtils } from "../../../utils/text-utils"; type DateDisplayProps = { - date: string; + date: string | Date; }; export function DateDisplay(props: DateDisplayProps): ReactElement { - return {TextUtils.longDate(props.date)}; + const formattedDate = typeof props.date === "string" ? props.date : props.date.toISOString() + return {TextUtils.longDate(formattedDate)}; } diff --git a/packages/ui/src/transactions/TransactionDetails/TransactionDetails.module.scss b/packages/ui/src/transactions/TransactionDetails/TransactionDetails.module.scss index 6d6f9d33d..f42dc1d38 100644 --- a/packages/ui/src/transactions/TransactionDetails/TransactionDetails.module.scss +++ b/packages/ui/src/transactions/TransactionDetails/TransactionDetails.module.scss @@ -4,4 +4,8 @@ .root { display: flex; flex-direction: column; + + .tabContent { + overflow: unset; + } } diff --git a/packages/ui/src/transactions/TransactionDetails/TransactionDetails.tsx b/packages/ui/src/transactions/TransactionDetails/TransactionDetails.tsx index 0187e033f..dc2f1afed 100644 --- a/packages/ui/src/transactions/TransactionDetails/TransactionDetails.tsx +++ b/packages/ui/src/transactions/TransactionDetails/TransactionDetails.tsx @@ -25,6 +25,7 @@ export const TransactionDetails: FunctionComponent = ( Date: Fri, 27 Oct 2023 11:10:45 +0200 Subject: [PATCH 058/100] improve help message --- .../interactions/components/ValueBuilder/ValueBuilder.tsx | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/ui/src/interactions/components/ValueBuilder/ValueBuilder.tsx b/packages/ui/src/interactions/components/ValueBuilder/ValueBuilder.tsx index d4830746b..4dab4bab1 100644 --- a/packages/ui/src/interactions/components/ValueBuilder/ValueBuilder.tsx +++ b/packages/ui/src/interactions/components/ValueBuilder/ValueBuilder.tsx @@ -43,12 +43,10 @@ function UnknownType() { return ( } - title="Unknown data type" + title="Unsupported data type" description={
    -

    This is either a non-existing type or a user-defined one.

    -

    Check the official Cadence documentation bellow for more info.

    - + For now, we only support built-in Cadence data types.
    } From 5eb357d158817ec5a3ad30e3dfc6ec3c1ec605e8 Mon Sep 17 00:00:00 2001 From: Bart Date: Fri, 27 Oct 2023 11:19:03 +0200 Subject: [PATCH 059/100] again start generating account tags --- packages/api/src/resources.ts | 1 - packages/core/src/flow-indexer.service.ts | 30 ++++++++++++++++--- .../accounts/AccountsTable/AccountsTable.tsx | 22 ++++++-------- 3 files changed, 35 insertions(+), 18 deletions(-) diff --git a/packages/api/src/resources.ts b/packages/api/src/resources.ts index 983960a30..72051dcf1 100644 --- a/packages/api/src/resources.ts +++ b/packages/api/src/resources.ts @@ -59,7 +59,6 @@ export interface FlowAccount extends TimestampedResource, IdentifiableResource { address: string; balance: number; code: string; - isDefaultAccount: boolean; tags: FlowAccountTag[]; } diff --git a/packages/core/src/flow-indexer.service.ts b/packages/core/src/flow-indexer.service.ts index bf756f5b0..a63fc3eba 100644 --- a/packages/core/src/flow-indexer.service.ts +++ b/packages/core/src/flow-indexer.service.ts @@ -501,14 +501,36 @@ export class FlowIndexerService { private createAccountEntity(account: flowResource.FlowAccount): flowserResource.FlowAccount { const address = ensurePrefixedAddress(account.address); + const tags: flowserResource.FlowAccountTag[] = []; + + const isDefaultAccount = this.getAllWellKnownAddresses().includes(address); + + if (isDefaultAccount) { + tags.push({ + name: "Default", + description: "This account was created automatically by the emulator." + }) + } + + const isServiceAccount = [ + "0xf8d6e0586b0a20c7", + "0x0000000000000001", // When using monotonic addresses setting + ].includes(address); + + // https://developers.flow.com/concepts/flow-token/concepts#flow-service-account + if (isServiceAccount) { + tags.push({ + name: "Service", + description: + "A special account in Flow that has special permissions to manage system contracts. It is able to mint tokens, set fees, and update network-level contracts.", + }); + } + return { id: address, balance: account.balance, address, - // TODO(restructure): Add logic for generating tags - // https://github.com/onflowser/flowser/pull/197/files#diff-de96e521dbe8391acff7b4c46768d9f51d90d5e30378600a41a57d14bb173f75L97-L116 - tags: [], - isDefaultAccount: this.getAllWellKnownAddresses().includes(address), + tags, code: account.code, // TODO(restructure): Maybe the index should be the one dealing with these dates createdAt: new Date(), diff --git a/packages/ui/src/accounts/AccountsTable/AccountsTable.tsx b/packages/ui/src/accounts/AccountsTable/AccountsTable.tsx index 4d4814b43..96772d73f 100644 --- a/packages/ui/src/accounts/AccountsTable/AccountsTable.tsx +++ b/packages/ui/src/accounts/AccountsTable/AccountsTable.tsx @@ -9,6 +9,7 @@ import { BaseBadge } from "../../common/misc/BaseBadge/BaseBadge"; import classes from "./AccountsTable.module.scss"; import { Tooltip } from "../../common/overlays/Tooltip/Tooltip"; import { FlowAccount } from "@onflowser/api"; +import { TimeAgo } from "../../common/time/TimeAgo/TimeAgo"; const columnHelper = createColumnHelper(); @@ -43,19 +44,14 @@ const columns = [ {TextUtils.readableNumber(info.getValue())} FLOW ), }), - // TODO(restructure): Provide this info - // columnHelper.accessor("transactions", { - // header: () => , - // cell: (info) => {info.getValue().length ?? 0}, - // }), - // columnHelper.accessor("createdAt", { - // header: () => , - // cell: (info) => ( - // - // - // - // ), - // }), + columnHelper.accessor("createdAt", { + header: () => , + cell: (info) => ( + + + + ), + }), ]; type AccountsTableProps = { From ff5365244d1481ff909b7367818b758501952a59 Mon Sep 17 00:00:00 2001 From: Bart Date: Fri, 27 Oct 2023 11:55:42 +0200 Subject: [PATCH 060/100] fix lifecycle timestamp management --- apps/electron/src/renderer/App.tsx | 20 +++++----- apps/electron/src/renderer/ipc-index-cache.ts | 32 +++++++++++++++ apps/electron/src/renderer/ipc-index.ts | 40 ------------------- .../src/services/workspace.service.ts | 1 - packages/api/src/capabilities.ts | 24 ++++++----- packages/api/src/resources.ts | 1 - packages/core/src/flow-indexer.service.ts | 33 ++++----------- packages/core/src/flow-storage.service.ts | 14 ++----- packages/core/src/in-memory-index.ts | 22 ++++++---- packages/nodejs/src/flow-cli.service.ts | 1 - packages/nodejs/src/wallet.service.ts | 5 +-- 11 files changed, 82 insertions(+), 111 deletions(-) create mode 100644 apps/electron/src/renderer/ipc-index-cache.ts delete mode 100644 apps/electron/src/renderer/ipc-index.ts diff --git a/apps/electron/src/renderer/App.tsx b/apps/electron/src/renderer/App.tsx index c9a3577d8..938fb0572 100644 --- a/apps/electron/src/renderer/App.tsx +++ b/apps/electron/src/renderer/App.tsx @@ -17,22 +17,20 @@ import { FlowTransaction, } from '@onflowser/api'; import { FlowserUsageRequirements } from '@onflowser/ui/src/common/misc/FlowserUsageRequirements/FlowserUsageRequirements'; -import { IpcIndex } from './ipc-index'; +import { IpcIndexCache } from './ipc-index-cache'; import { FlowserRouter } from './router'; import { UpdateLoader } from './components/loaders/UpdateLoader'; import { AnalyticsService } from '../services/analytics.service'; - -import { BlockchainIndexes } from '../services/blockchain-index.service'; import { SentryRendererService } from '../services/sentry-renderer.service'; -const indexes: BlockchainIndexes = { - accountStorage: new IpcIndex('accountStorage'), - contract: new IpcIndex('contract'), - transaction: new IpcIndex('transaction'), - account: new IpcIndex('account'), - block: new IpcIndex('block'), - event: new IpcIndex('event'), - accountKey: new IpcIndex('accountKey'), +const indexes = { + accountStorage: new IpcIndexCache('accountStorage'), + contract: new IpcIndexCache('contract'), + transaction: new IpcIndexCache('transaction'), + account: new IpcIndexCache('account'), + block: new IpcIndexCache('block'), + event: new IpcIndexCache('event'), + accountKey: new IpcIndexCache('accountKey'), }; const analyticsService = new AnalyticsService(); diff --git a/apps/electron/src/renderer/ipc-index-cache.ts b/apps/electron/src/renderer/ipc-index-cache.ts new file mode 100644 index 000000000..1b88e73dc --- /dev/null +++ b/apps/electron/src/renderer/ipc-index-cache.ts @@ -0,0 +1,32 @@ +import { IndexableResource, IResourceIndexReader } from '@onflowser/api'; +import { BlockchainIndexes } from '../services/blockchain-index.service'; + +export class IpcIndexCache + implements IResourceIndexReader +{ + private cachedResources: Resource[]; + + constructor(private readonly indexName: keyof BlockchainIndexes) { + this.cachedResources = []; + // TODO(restructure): Maybe manually handle this from react app instead + this.syncOnInterval(); + } + + async findOneById(id: string): Promise { + return this.cachedResources.find((resource) => resource.id === id); + } + + async findAll(): Promise { + return this.cachedResources.sort( + (a, b) => b.createdAt.getTime() - a.createdAt.getTime(), + ); + } + + syncOnInterval() { + setInterval(() => this.sync(), 1000); + } + + async sync() { + this.cachedResources = await window.electron.indexes.getAll(this.indexName); + } +} diff --git a/apps/electron/src/renderer/ipc-index.ts b/apps/electron/src/renderer/ipc-index.ts deleted file mode 100644 index 825c43fd2..000000000 --- a/apps/electron/src/renderer/ipc-index.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { IdentifiableResource, TimestampedResource } from '@onflowser/api'; -import { InMemoryIndex } from '@onflowser/core'; - -import { BlockchainIndexes } from '../services/blockchain-index.service'; - -type IdentifiableAndTimestampedResource = IdentifiableResource & - TimestampedResource; - -export class IpcIndex< - Resource extends IdentifiableAndTimestampedResource, -> extends InMemoryIndex { - constructor(private readonly indexName: keyof BlockchainIndexes) { - super(); - - // TODO(restructure): Maybe manually handle this from react app instead - this.syncOnInterval(); - } - - async findAll(): Promise { - const allResources = await super.findAll(); - return allResources.sort( - (a, b) => b.createdAt.getTime() - a.createdAt.getTime(), - ); - } - - syncOnInterval() { - setInterval(() => this.sync(), 1000); - } - - async sync() { - const resources = await window.electron.indexes.getAll(this.indexName); - - // Clear in case the other index was also cleared. - await this.clear(); - - await Promise.allSettled( - resources.map((resource: Resource) => this.create(resource)), - ); - } -} diff --git a/apps/electron/src/services/workspace.service.ts b/apps/electron/src/services/workspace.service.ts index f977e5205..c1be6bb46 100644 --- a/apps/electron/src/services/workspace.service.ts +++ b/apps/electron/src/services/workspace.service.ts @@ -83,7 +83,6 @@ export class WorkspaceService extends EventEmitter { filesystemPath: '', createdAt: new Date(), updatedAt: new Date(), - deletedAt: undefined, emulator: this.flowEmulatorService.getDefaultConfig(), gateway: undefined, id: randomUUID(), diff --git a/packages/api/src/capabilities.ts b/packages/api/src/capabilities.ts index 67465ed29..dee3b5a7e 100644 --- a/packages/api/src/capabilities.ts +++ b/packages/api/src/capabilities.ts @@ -1,4 +1,4 @@ -import { IdentifiableResource } from "./resources"; +import { IdentifiableResource, TimestampedResource } from "./resources"; export type RequireOnly = Pick< Resource, @@ -6,21 +6,27 @@ export type RequireOnly = Pick< > & Partial>; -export interface IResourceIndexReader { +export type IndexableResource = IdentifiableResource & TimestampedResource; + +export interface IResourceIndexReader { findOneById(id: string): Promise; findAll(): Promise; - // TODO(restructure): Add searching capabilities + // TODO(global-search): Add searching capabilities // search(): Promise; } -export interface IResourceIndexWriter { - create(resource: Resource): Promise; - upsert(resource: Resource): Promise; - update(resource: RequireOnly): Promise; - delete(resource: RequireOnly): Promise; +// Index is responsible for managing lifecycle timestamps, +// so consumers shouldn't be passing in timestamps themselves. +export type OmitTimestamps = Omit + +export interface IResourceIndexWriter { + create(resource: OmitTimestamps): Promise; + upsert(resource: OmitTimestamps): Promise; + update(resource: OmitTimestamps>): Promise; + delete(resource: OmitTimestamps>): Promise; clear(): Promise; } -export interface IResourceIndex +export interface IResourceIndex extends IResourceIndexReader, IResourceIndexWriter {} diff --git a/packages/api/src/resources.ts b/packages/api/src/resources.ts index 72051dcf1..f63a9ef01 100644 --- a/packages/api/src/resources.ts +++ b/packages/api/src/resources.ts @@ -46,7 +46,6 @@ export interface CadenceParameter { export interface TimestampedResource { createdAt: Date; updatedAt: Date; - deletedAt: Date | undefined; } export interface IdentifiableResource { diff --git a/packages/core/src/flow-indexer.service.ts b/packages/core/src/flow-indexer.service.ts index a63fc3eba..7352f1fa8 100644 --- a/packages/core/src/flow-indexer.service.ts +++ b/packages/core/src/flow-indexer.service.ts @@ -4,7 +4,7 @@ import { IResourceIndex, HashAlgorithm, SignatureAlgorithm, - ParsedInteractionOrError, + ParsedInteractionOrError, OmitTimestamps } from "@onflowser/api"; import { IFlowInteractions } from "./flow-interactions.service"; import { FlowAccountStorageService } from "./flow-storage.service"; @@ -498,7 +498,7 @@ export class FlowIndexerService { ]; } - private createAccountEntity(account: flowResource.FlowAccount): flowserResource.FlowAccount { + private createAccountEntity(account: flowResource.FlowAccount): OmitTimestamps { const address = ensurePrefixedAddress(account.address); const tags: flowserResource.FlowAccountTag[] = []; @@ -532,17 +532,13 @@ export class FlowIndexerService { address, tags, code: account.code, - // TODO(restructure): Maybe the index should be the one dealing with these dates - createdAt: new Date(), - updatedAt: new Date(), - deletedAt: undefined, }; } private createKeyEntity(options: { address:string; key: flowResource.FlowKey; - }): flowserResource.FlowAccountKey { + }): OmitTimestamps { const { address, key } = options; const signAlgoLookup = new Map([ @@ -570,9 +566,6 @@ export class FlowIndexerService { revoked: key.revoked, // Do not include `privateKey` field here, // otherwise it may override private key that was created by wallet service. - createdAt: new Date(), - deletedAt: undefined, - updatedAt: new Date(), }; } @@ -586,7 +579,7 @@ export class FlowIndexerService { private createEventEntity(options: { event: ExtendedFlowEvent; - }): flowserResource.FlowEvent { + }): OmitTimestamps { const { event } = options; return { id: `${event.transactionId}.${event.eventIndex}`, @@ -596,15 +589,12 @@ export class FlowIndexerService { blockId: event.blockId, eventIndex: event.eventIndex, data: event.data, - createdAt: new Date(), - updatedAt: new Date(), - deletedAt: undefined, }; } private createBlockEntity(options: { block: flowResource.FlowBlock; - }): flowserResource.FlowBlock { + }): OmitTimestamps { const { block } = options; return { id: block.id, @@ -617,9 +607,6 @@ export class FlowIndexerService { timestamp: new Date(block.timestamp), blockHeight: block.height, parentId: block.parentId, - createdAt: new Date(), - updatedAt: new Date(), - deletedAt: undefined, }; } @@ -628,7 +615,7 @@ export class FlowIndexerService { account: flowResource.FlowAccount; name: string; code: string; - }): flowserResource.FlowContract { + }): OmitTimestamps { const { account, block, name, code } = options; return { id: `${account.address}.${name}`, @@ -638,9 +625,6 @@ export class FlowIndexerService { localConfig: undefined, name: name, code: code, - createdAt: new Date(), - updatedAt: new Date(), - deletedAt: undefined, }; } @@ -649,7 +633,7 @@ export class FlowIndexerService { transaction: flowResource.FlowTransaction; transactionStatus: flowResource.FlowTransactionStatus; parsedInteraction: ParsedInteractionOrError; - }): flowserResource.FlowTransaction { + }): OmitTimestamps { const { block, transaction, transactionStatus, parsedInteraction } = options; @@ -719,9 +703,6 @@ export class FlowIndexerService { grcpStatus: this.reMapGrcpStatus(transactionStatus.statusCode), executionStatus: transactionStatus.status, }, - createdAt: new Date(), - updatedAt: new Date(), - deletedAt: undefined, }; } diff --git a/packages/core/src/flow-storage.service.ts b/packages/core/src/flow-storage.service.ts index 95f13c254..3f86b8d6d 100644 --- a/packages/core/src/flow-storage.service.ts +++ b/packages/core/src/flow-storage.service.ts @@ -3,7 +3,7 @@ import { ensurePrefixedAddress } from "./utils"; import { FlowStorageDomain, CadenceTypeKind, - FlowAccountStorage, + FlowAccountStorage, OmitTimestamps } from "@onflowser/api"; /** @@ -38,12 +38,12 @@ export class FlowAccountStorageService { public async getAccountStorageItems( address: string - ): Promise { + ): Promise[]> { const flowAccountStorage = await this.fetchStorageByAddress(address); return [ ...flowAccountStorage.capabilityPathItems.map( - (item): FlowAccountStorage => ({ + (item): OmitTimestamps => ({ id: `${ensurePrefixedAddress(item.address)}.${item.path}`, address: ensurePrefixedAddress(item.address), // Temporarily store the data type in untyped field, refactor later. @@ -53,13 +53,10 @@ export class FlowAccountStorageService { domain: this.getStorageDomainFromPath(item.path), path: item.path, targetPath: item.targetPath, - createdAt: new Date(), - updatedAt: new Date(), - deletedAt: undefined }) ), ...flowAccountStorage.storagePathItems.map( - (item): FlowAccountStorage => ({ + (item): OmitTimestamps => ({ id: `${ensurePrefixedAddress(item.address)}.${item.path}`, address: ensurePrefixedAddress(item.address), // Temporarily store the data type in untyped field, refactor later. @@ -69,9 +66,6 @@ export class FlowAccountStorageService { domain: this.getStorageDomainFromPath(item.path), path: item.path, targetPath: "", - createdAt: new Date(), - updatedAt: new Date(), - deletedAt: undefined }) ), ]; diff --git a/packages/core/src/in-memory-index.ts b/packages/core/src/in-memory-index.ts index 77d3dd722..6e8ac175e 100644 --- a/packages/core/src/in-memory-index.ts +++ b/packages/core/src/in-memory-index.ts @@ -1,10 +1,10 @@ import { - IdentifiableResource, - IResourceIndex, + IndexableResource, + IResourceIndex, OmitTimestamps, RequireOnly } from "@onflowser/api"; -export class InMemoryIndex +export class InMemoryIndex implements IResourceIndex { private readonly lookup: Map; @@ -13,15 +13,20 @@ export class InMemoryIndex this.lookup = new Map(); } - async create(resource: Resource): Promise { + async create(resource: OmitTimestamps): Promise { if (this.lookup.has(resource.id)) { throw new Error("Resource already exists"); } else { - this.lookup.set(resource.id, resource); + // @ts-ignore Not entirely sure what this type error is about. + this.lookup.set(resource.id, { + ...resource, + createdAt: new Date(), + updatedAt: new Date(), + }); } } - async upsert(resource: Resource): Promise { + async upsert(resource: OmitTimestamps): Promise { if (this.lookup.has(resource.id)) { await this.update(resource); } else { @@ -29,14 +34,14 @@ export class InMemoryIndex } } - async delete(resource: RequireOnly): Promise { + async delete(resource: OmitTimestamps>): Promise { if (!this.lookup.has(resource.id)) { throw new Error("Resource not found"); } this.lookup.delete(resource.id); } - async update(resource: RequireOnly): Promise { + async update(resource: OmitTimestamps>): Promise { const existingResource = this.lookup.get(resource.id); if (!existingResource) { throw new Error("Resource not found"); @@ -44,6 +49,7 @@ export class InMemoryIndex this.lookup.set(resource.id, { ...existingResource, ...resource, + updatedAt: new Date(), }); } diff --git a/packages/nodejs/src/flow-cli.service.ts b/packages/nodejs/src/flow-cli.service.ts index f1179cc36..929b5ae1e 100644 --- a/packages/nodejs/src/flow-cli.service.ts +++ b/packages/nodejs/src/flow-cli.service.ts @@ -5,7 +5,6 @@ import { import { ProcessManagerService } from "./processes/process-manager.service"; import { randomUUID } from "crypto"; import { HashAlgorithm, SignatureAlgorithm } from "@onflowser/api"; -import { IFlowserLogger } from "@onflowser/core"; export type GeneratedKey = { derivationPath: string; diff --git a/packages/nodejs/src/wallet.service.ts b/packages/nodejs/src/wallet.service.ts index 3d3520c26..ed407080c 100644 --- a/packages/nodejs/src/wallet.service.ts +++ b/packages/nodejs/src/wallet.service.ts @@ -1,7 +1,7 @@ import { ec as EC } from "elliptic"; import { SHA3 } from "sha3"; import { FlowCliService } from "./flow-cli.service"; -import { ensurePrefixedAddress, IFlowserLogger } from "@onflowser/core"; +import { ensurePrefixedAddress } from "@onflowser/core"; import { FlowAuthorizationFunction, FlowGatewayService, @@ -152,10 +152,7 @@ export class WalletService { revoked: false, sequenceNumber: 0, signAlgo: signatureAlgorithm, - updatedAt: new Date(), weight: 1000, - createdAt: new Date(), - deletedAt: undefined, }) } From a017c3707bc8093b8a5f01bfa1be69dc0996cafb Mon Sep 17 00:00:00 2001 From: Bart Date: Fri, 27 Oct 2023 12:07:53 +0200 Subject: [PATCH 061/100] resolve some todos --- apps/electron/src/main/ipc/events.ts | 13 +++++---- apps/electron/src/main/ipc/handlers.ts | 29 ++++++++++++++----- apps/electron/src/main/ipc/invokers.ts | 15 +++++----- apps/electron/src/main/main.ts | 20 ++----------- apps/electron/src/renderer/App.tsx | 10 +++---- .../src/services/flowser-app.service.ts | 1 - packages/nodejs/src/flow-cli.service.ts | 4 +-- packages/nodejs/src/flow-emulator.service.ts | 2 +- .../nodejs/src/processes/managed-process.ts | 6 ++-- .../src/processes/process-manager.service.ts | 6 +++- .../layouts/BasicLayout/BasicLayout.tsx | 1 - .../layouts/ProjectLayout/WorkspaceLayout.tsx | 1 - packages/ui/src/common/links/ProjectLink.tsx | 1 - .../misc/SideNavigation/SideNavigation.tsx | 1 - .../ui/src/contexts/workspace.context.tsx | 1 - .../InteractionHistory/InteractionHistory.tsx | 6 ---- 16 files changed, 54 insertions(+), 63 deletions(-) diff --git a/apps/electron/src/main/ipc/events.ts b/apps/electron/src/main/ipc/events.ts index 75d5f759d..71f0e107e 100644 --- a/apps/electron/src/main/ipc/events.ts +++ b/apps/electron/src/main/ipc/events.ts @@ -1,4 +1,6 @@ export enum FlowserIpcEvent { + APP_DIRECTORY_PICKER_SHOW = 'APP_DIRECTORY_PICKER_SHOW', + WORKSPACES_CLOSE = 'WORKSPACES_CLOSE', WORKSPACES_OPEN = 'WORKSPACES_OPEN', WORKSPACES_CREATE = 'WORKSPACES_CREATE', @@ -13,12 +15,11 @@ export enum FlowserIpcEvent { INTERACTIONS_PARSE = 'INTERACTIONS_PARSE', INTERACTIONS_LIST_TEMPLATES = 'INTERACTIONS_LIST_TEMPLATES', - // TODO(restructure): Rename to RESOURCE_ACTION format - FLOW_GET_INDEX_OF_ADDRESS = 'FLOW_GET_INDEX_OF_ADDRESS', - FLOW_GET_CLI_INFO = 'FLOW_GET_CLI_INFO', - FLOW_SEND_TRANSACTION = 'FLOW_SEND_TRANSACTION', - FLOW_EXECUTE_SCRIPT = 'FLOW_EXECUTE_SCRIPT', - FLOW_CREATE_ACCOUNT = 'FLOW_CREATE_ACCOUNT', + FLOW_CLI_GET_INFO = 'FLOW_CLI_GET_INFO', + FLOW_TRANSACTION_SEND = 'FLOW_TRANSACTION_SEND', + FLOW_SCRIPT_EXECUTE = 'FLOW_SCRIPT_EXECUTE', + FLOW_ACCOUNT_GET_INDEX = 'FLOW_ACCOUNT_GET_INDEX', + FLOW_ACCOUNT_CREATE = 'FLOW_ACCOUNT_CREATE', SNAPSHOTS_ROLLBACK_TO_HEIGHT = 'SNAPSHOTS_ROLLBACK_TO_HEIGHT', SNAPSHOTS_JUMP_TO = 'SNAPSHOTS_JUMP_TO', diff --git a/apps/electron/src/main/ipc/handlers.ts b/apps/electron/src/main/ipc/handlers.ts index 61f5ec4f5..8abc55a9e 100644 --- a/apps/electron/src/main/ipc/handlers.ts +++ b/apps/electron/src/main/ipc/handlers.ts @@ -1,4 +1,4 @@ -import { ipcMain, IpcMainInvokeEvent } from 'electron'; +import { dialog, ipcMain, IpcMainInvokeEvent } from 'electron'; import { FlowserWorkspace } from '@onflowser/api'; import { ExecuteScriptRequest, @@ -13,7 +13,7 @@ type EventListener = ( ...args: any[] ) => Promise | any; -export function registerHandlers(flowserAppService: FlowserAppService) { +export function registerHandlers() { const { workspaceService, blockchainIndexService, @@ -24,9 +24,22 @@ export function registerHandlers(flowserAppService: FlowserAppService) { walletService, flowSnapshotsService, processManagerService, - } = flowserAppService; + } = FlowserAppService.create(); + + async function showDirectoryPicker() { + const result = await dialog.showOpenDialog({ + properties: ['openDirectory', 'createDirectory'], + }); + if (result.canceled) { + return undefined; + } + return result.filePaths[0]; + } const handlers: Record = { + [FlowserIpcEvent.APP_DIRECTORY_PICKER_SHOW]: (e: IpcMainInvokeEvent) => + showDirectoryPicker(), + [FlowserIpcEvent.WORKSPACES_CLOSE]: (e: IpcMainInvokeEvent, id: string) => workspaceService.close(id), [FlowserIpcEvent.WORKSPACES_OPEN]: (e: IpcMainInvokeEvent, id: string) => @@ -69,7 +82,7 @@ export function registerHandlers(flowserAppService: FlowserAppService) { }); }, - [FlowserIpcEvent.FLOW_GET_INDEX_OF_ADDRESS]: ( + [FlowserIpcEvent.FLOW_ACCOUNT_GET_INDEX]: ( event: IpcMainInvokeEvent, address: string, ) => @@ -77,17 +90,17 @@ export function registerHandlers(flowserAppService: FlowserAppService) { hexAddress: address, chainId: 'flow-emulator', }), - [FlowserIpcEvent.FLOW_GET_CLI_INFO]: (event: IpcMainInvokeEvent) => + [FlowserIpcEvent.FLOW_CLI_GET_INFO]: (event: IpcMainInvokeEvent) => flowCliService.getVersion(), - [FlowserIpcEvent.FLOW_SEND_TRANSACTION]: ( + [FlowserIpcEvent.FLOW_TRANSACTION_SEND]: ( event: IpcMainInvokeEvent, request: SendTransactionRequest, ) => walletService.sendTransaction(request), - [FlowserIpcEvent.FLOW_EXECUTE_SCRIPT]: ( + [FlowserIpcEvent.FLOW_SCRIPT_EXECUTE]: ( event: IpcMainInvokeEvent, request: ExecuteScriptRequest, ) => flowGatewayService.executeScript(request), - [FlowserIpcEvent.FLOW_CREATE_ACCOUNT]: async ( + [FlowserIpcEvent.FLOW_ACCOUNT_CREATE]: async ( event: IpcMainInvokeEvent, ) => { // There will be only 1 open workspace for now. diff --git a/apps/electron/src/main/ipc/invokers.ts b/apps/electron/src/main/ipc/invokers.ts index b07e81dbd..fc4e57c35 100644 --- a/apps/electron/src/main/ipc/invokers.ts +++ b/apps/electron/src/main/ipc/invokers.ts @@ -15,15 +15,15 @@ import { BlockchainIndexes } from '../../services/blockchain-index.service'; const flow: IFlowService = { getIndexOfAddress: (address: string) => - ipcRenderer.invoke(FlowserIpcEvent.FLOW_GET_INDEX_OF_ADDRESS, address), - getFlowCliInfo: () => ipcRenderer.invoke(FlowserIpcEvent.FLOW_GET_CLI_INFO), + ipcRenderer.invoke(FlowserIpcEvent.FLOW_ACCOUNT_GET_INDEX, address), + getFlowCliInfo: () => ipcRenderer.invoke(FlowserIpcEvent.FLOW_CLI_GET_INFO), sendTransaction: ( request: SendTransactionRequest, ): Promise<{ transactionId: string }> => - ipcRenderer.invoke(FlowserIpcEvent.FLOW_SEND_TRANSACTION, request), + ipcRenderer.invoke(FlowserIpcEvent.FLOW_TRANSACTION_SEND, request), executeScript: (request: ExecuteScriptRequest): Promise => - ipcRenderer.invoke(FlowserIpcEvent.FLOW_EXECUTE_SCRIPT, request), - createAccount: () => ipcRenderer.invoke(FlowserIpcEvent.FLOW_CREATE_ACCOUNT), + ipcRenderer.invoke(FlowserIpcEvent.FLOW_SCRIPT_EXECUTE, request), + createAccount: () => ipcRenderer.invoke(FlowserIpcEvent.FLOW_ACCOUNT_CREATE), }; const interactions: IInteractionService = { @@ -66,8 +66,9 @@ const processManagerService: IProcessManagerService = { }; export const electronInvokers = { - platformAdapter: { - showDirectoryPicker: () => ipcRenderer.invoke('showDirectoryPicker'), + app: { + showDirectoryPicker: () => + ipcRenderer.invoke(FlowserIpcEvent.APP_DIRECTORY_PICKER_SHOW), handleExit: (callback: () => void) => ipcRenderer.on('exit', callback), handleUpdateDownloadStart: (callback: () => void) => ipcRenderer.on('update-download-start', callback), diff --git a/apps/electron/src/main/main.ts b/apps/electron/src/main/main.ts index eda8f3ab5..b3a6493b8 100644 --- a/apps/electron/src/main/main.ts +++ b/apps/electron/src/main/main.ts @@ -9,12 +9,11 @@ * `./src/main.js` using webpack. This gives us some performance wins. */ import path from 'path'; -import { app, BrowserWindow, shell, ipcMain, dialog } from 'electron'; +import { app, BrowserWindow, shell } from 'electron'; import { autoUpdater } from 'electron-updater'; import log from 'electron-log'; import MenuBuilder from './menu'; import { resolveHtmlPath } from './util'; -import { FlowserAppService } from '../services/flowser-app.service'; import { registerHandlers } from './ipc/handlers'; class AppUpdater { @@ -27,21 +26,6 @@ class AppUpdater { let mainWindow: BrowserWindow | null = null; -// TODO(restructure): Move to ipc folder -ipcMain.handle('showDirectoryPicker', showDirectoryPicker); - -const flowserAppService = FlowserAppService.create(); - -async function showDirectoryPicker() { - const result = await dialog.showOpenDialog({ - properties: ['openDirectory', 'createDirectory'], - }); - if (result.canceled) { - return undefined; - } - return result.filePaths[0]; -} - if (process.env.NODE_ENV === 'production') { const sourceMapSupport = require('source-map-support'); sourceMapSupport.install(); @@ -141,7 +125,7 @@ app .whenReady() .then(() => { createWindow(); - registerHandlers(flowserAppService); + registerHandlers(); app.on('activate', () => { // On macOS it's common to re-create a window in the app when the // dock icon is clicked and there are no other windows open. diff --git a/apps/electron/src/renderer/App.tsx b/apps/electron/src/renderer/App.tsx index 938fb0572..9daeefd4f 100644 --- a/apps/electron/src/renderer/App.tsx +++ b/apps/electron/src/renderer/App.tsx @@ -42,18 +42,18 @@ export function App() { useState(0); const isUpdating = ![0, 100].includes(appUpdateDownloadPercentage); - window.electron.platformAdapter.handleExit(() => { + window.electron.app.handleExit(() => { setIsExiting(true); }); - window.electron.platformAdapter.handleUpdateDownloadProgress((percentage) => { + window.electron.app.handleUpdateDownloadProgress((percentage) => { setAppUpdateDownloadPercentage(percentage); }); - window.electron.platformAdapter.handleUpdateDownloadStart(() => { + window.electron.app.handleUpdateDownloadStart(() => { setAppUpdateDownloadPercentage(0); }); - window.electron.platformAdapter.handleUpdateDownloadEnd(() => { + window.electron.app.handleUpdateDownloadEnd(() => { setAppUpdateDownloadPercentage(100); }); @@ -84,7 +84,7 @@ export function App() { > diff --git a/apps/electron/src/services/flowser-app.service.ts b/apps/electron/src/services/flowser-app.service.ts index 47f6206d7..da6a18593 100644 --- a/apps/electron/src/services/flowser-app.service.ts +++ b/apps/electron/src/services/flowser-app.service.ts @@ -167,7 +167,6 @@ export class FlowserAppService { } } -// TODO(restructure): Expose flowser logs to the user? class WebLogger implements IFlowserLogger { debug(message: any): void { console.debug(message); diff --git a/packages/nodejs/src/flow-cli.service.ts b/packages/nodejs/src/flow-cli.service.ts index 929b5ae1e..165db9efc 100644 --- a/packages/nodejs/src/flow-cli.service.ts +++ b/packages/nodejs/src/flow-cli.service.ts @@ -74,7 +74,7 @@ export class FlowCliService { constructor(private processManagerService: ProcessManagerService) {} async init(options: InitOptions) { - const childProcess = new ManagedProcess({ + const childProcess = this.processManagerService.initManagedProcess({ id: FlowCliService.processId, name: "Flow init", command: { @@ -178,7 +178,7 @@ export class FlowCliService { } private async runAndGetOutput(options: RunCliCommandOptions) { - const childProcess = new ManagedProcess({ + const childProcess = this.processManagerService.initManagedProcess({ id: randomUUID(), name: options.name, command: { diff --git a/packages/nodejs/src/flow-emulator.service.ts b/packages/nodejs/src/flow-emulator.service.ts index 11f25f7eb..8a4390b99 100644 --- a/packages/nodejs/src/flow-emulator.service.ts +++ b/packages/nodejs/src/flow-emulator.service.ts @@ -32,7 +32,7 @@ export class FlowEmulatorService extends EventEmitter { } async start(request: StartEmulatorRequest) { - this.process = new ManagedProcess({ + this.process = this.processManagerService.initManagedProcess({ id: FlowEmulatorService.processId, name: "Flow emulator", command: { diff --git a/packages/nodejs/src/processes/managed-process.ts b/packages/nodejs/src/processes/managed-process.ts index d061302b4..123245462 100644 --- a/packages/nodejs/src/processes/managed-process.ts +++ b/packages/nodejs/src/processes/managed-process.ts @@ -5,6 +5,7 @@ import { } from "child_process"; import { randomUUID } from "crypto"; import { EventEmitter } from "node:events"; +import { IFlowserLogger } from "@onflowser/core"; export type ManagedProcessOptions = { id?: string; @@ -51,7 +52,7 @@ export class ManagedProcess extends EventEmitter { public createdAt: Date; public updatedAt: Date; - constructor(options: ManagedProcessOptions) { + constructor(private readonly logger: IFlowserLogger, options: ManagedProcessOptions) { super(); this.id = options.id ?? randomUUID(); this.name = options.name; @@ -75,8 +76,7 @@ export class ManagedProcess extends EventEmitter { throw new Error("Process is already running"); } - // TODO(restructure): Inject logger provider - console.debug( + this.logger.debug( `Starting ${this.name} with command: ${command.name} ${command.args?.join( " " )}` diff --git a/packages/nodejs/src/processes/process-manager.service.ts b/packages/nodejs/src/processes/process-manager.service.ts index e1fa88f50..71624e9d7 100644 --- a/packages/nodejs/src/processes/process-manager.service.ts +++ b/packages/nodejs/src/processes/process-manager.service.ts @@ -1,7 +1,7 @@ import { ManagedProcess, ProcessOutputSource, - ManagedProcessOutput, + ManagedProcessOutput, ManagedProcessOptions } from "./managed-process"; import { EventEmitter } from "node:events"; import { IFlowserLogger } from "@onflowser/core"; @@ -28,6 +28,10 @@ export class ProcessManagerService extends EventEmitter { process.exit(0); } + initManagedProcess(options: ManagedProcessOptions) { + return new ManagedProcess(this.logger, options); + } + findAllLogsByProcess( processId: string, ): ManagedProcessOutput[] { diff --git a/packages/ui/src/common/layouts/BasicLayout/BasicLayout.tsx b/packages/ui/src/common/layouts/BasicLayout/BasicLayout.tsx index a5867f389..78858f488 100644 --- a/packages/ui/src/common/layouts/BasicLayout/BasicLayout.tsx +++ b/packages/ui/src/common/layouts/BasicLayout/BasicLayout.tsx @@ -2,7 +2,6 @@ import React, { FC, ReactNode } from "react"; import { Breadcrumbs } from "../../misc/Breadcrumbs/Breadcrumbs"; import classes from "./BasicLayout.module.scss"; -// TODO(restructure): Move this to app folder export const BasicLayout: FC<{ children: ReactNode }> = (props) => { return (
    diff --git a/packages/ui/src/common/layouts/ProjectLayout/WorkspaceLayout.tsx b/packages/ui/src/common/layouts/ProjectLayout/WorkspaceLayout.tsx index 635390537..9d7881342 100644 --- a/packages/ui/src/common/layouts/ProjectLayout/WorkspaceLayout.tsx +++ b/packages/ui/src/common/layouts/ProjectLayout/WorkspaceLayout.tsx @@ -12,7 +12,6 @@ type ProjectLayoutProps = { export const scrollableElementId = "flowser-scroll"; -// TODO(restructure): Move this to app folder export function WorkspaceLayout(props: ProjectLayoutProps) { const location = useLocation(); const showMargin = !location.pathname.endsWith("interactions"); diff --git a/packages/ui/src/common/links/ProjectLink.tsx b/packages/ui/src/common/links/ProjectLink.tsx index c4f519e4d..eb5eda667 100644 --- a/packages/ui/src/common/links/ProjectLink.tsx +++ b/packages/ui/src/common/links/ProjectLink.tsx @@ -5,7 +5,6 @@ import { useCurrentWorkspaceId } from "../../hooks/use-current-project-id"; type ProjectLinkProps = NavLinkProps; -// TODO(restructure): Move this to app folder? export function ProjectLink(props: ProjectLinkProps): ReactElement { const projectId = useCurrentWorkspaceId(); const { to, ...otherProps } = props; diff --git a/packages/ui/src/common/misc/SideNavigation/SideNavigation.tsx b/packages/ui/src/common/misc/SideNavigation/SideNavigation.tsx index ec7b6bba2..bce4ec557 100644 --- a/packages/ui/src/common/misc/SideNavigation/SideNavigation.tsx +++ b/packages/ui/src/common/misc/SideNavigation/SideNavigation.tsx @@ -12,7 +12,6 @@ type SideNavigationProps = { className?: string; }; -// TODO(restructure): Move this to app folder export function SideNavigation(props: SideNavigationProps): ReactElement { const { closeWorkspace } = useProjectManager(); diff --git a/packages/ui/src/contexts/workspace.context.tsx b/packages/ui/src/contexts/workspace.context.tsx index 47997b270..c9d23d1d7 100644 --- a/packages/ui/src/contexts/workspace.context.tsx +++ b/packages/ui/src/contexts/workspace.context.tsx @@ -75,7 +75,6 @@ export function WorkspaceManagerProvider({ async function closeWorkspace() { try { - // TODO(restructure): Do we need to clear the local cache? await workspaceService.close(currentWorkspaceId); await refetchCurrentWorkspace(); navigate("/projects", { diff --git a/packages/ui/src/interactions/components/InteractionHistory/InteractionHistory.tsx b/packages/ui/src/interactions/components/InteractionHistory/InteractionHistory.tsx index b394c641c..51bad307c 100644 --- a/packages/ui/src/interactions/components/InteractionHistory/InteractionHistory.tsx +++ b/packages/ui/src/interactions/components/InteractionHistory/InteractionHistory.tsx @@ -45,12 +45,6 @@ function BlockItem(props: BlockItemProps) { const { create, setFocused } = useInteractionRegistry(); const { data } = useGetTransactionsByBlock( block.id - // TODO(restructure): Add this option - // { - // // Assume that every transaction is packaged into a separate block. - // // So once a block exists, no transactions can be appended to it. - // pollingInterval: 0, - // } ); const firstTransaction = data?.[0]; From 56258ec51940ea185fbfa659d4141658934f7d7a Mon Sep 17 00:00:00 2001 From: Bart Date: Fri, 27 Oct 2023 12:30:30 +0200 Subject: [PATCH 062/100] graceful process shutdown --- apps/electron/src/main/main.ts | 34 ++++++++++++++++++- .../src/services/flowser-app.service.ts | 14 +++++++- .../nodejs/src/processes/managed-process.ts | 1 + .../src/processes/process-manager.service.ts | 16 +++++++-- 4 files changed, 61 insertions(+), 4 deletions(-) diff --git a/apps/electron/src/main/main.ts b/apps/electron/src/main/main.ts index b3a6493b8..19bd1e41e 100644 --- a/apps/electron/src/main/main.ts +++ b/apps/electron/src/main/main.ts @@ -9,12 +9,13 @@ * `./src/main.js` using webpack. This gives us some performance wins. */ import path from 'path'; -import { app, BrowserWindow, shell } from 'electron'; +import { app, BrowserWindow, dialog, shell } from 'electron'; import { autoUpdater } from 'electron-updater'; import log from 'electron-log'; import MenuBuilder from './menu'; import { resolveHtmlPath } from './util'; import { registerHandlers } from './ipc/handlers'; +import { FlowserAppService } from '../services/flowser-app.service'; class AppUpdater { constructor() { @@ -133,3 +134,34 @@ app }); }) .catch(console.log); + +app.on('before-quit', async (e) => { + const flowserAppService = FlowserAppService.create(); + + // After we call app.quit(), before-quit is fired once more, + // so we need to exit early if the cleanup already completed to avoid infinite recursion. + if (flowserAppService.isCleanupComplete()) { + return; + } + + // Prevent app termination before cleanup is done + e.preventDefault(); + try { + // On macOS the user could first close the app by clicking on "X" + // (which would destroy the window) and later quit the app from app bar. + // If we trigger any method on destroyed window, electron throws an error. + if (!mainWindow?.isDestroyed()) { + // Notify renderer process + mainWindow?.webContents.send('exit'); + } + + await flowserAppService.cleanup(); + } catch (error: unknown) { + await dialog.showMessageBox({ + message: `Couldn't shutdown successfully: ${String(error)}`, + type: 'error', + }); + } finally { + app.quit(); + } +}); diff --git a/apps/electron/src/services/flowser-app.service.ts b/apps/electron/src/services/flowser-app.service.ts index da6a18593..426131821 100644 --- a/apps/electron/src/services/flowser-app.service.ts +++ b/apps/electron/src/services/flowser-app.service.ts @@ -57,7 +57,10 @@ export class FlowserAppService { this.flowInteractionsService = new FlowInteractionsService( this.goBindingsService, ); - this.processManagerService = new ProcessManagerService(this.logger); + this.processManagerService = new ProcessManagerService(this.logger, { + // We are manually handling shutdown before the app closes + gracefulShutdown: true, + }); this.flowCliService = new FlowCliService(this.processManagerService); this.flowEmulatorService = new FlowEmulatorService( this.processManagerService, @@ -105,6 +108,15 @@ export class FlowserAppService { return this.instance; } + public isCleanupComplete(): boolean { + return this.processManagerService.isStoppedAll(); + } + + public async cleanup(): Promise { + this.processingScheduler.stop(); + await this.processManagerService.stopAll(); + } + private registerListeners() { this.workspaceService.on( WorkspaceEvent.WORKSPACE_OPEN, diff --git a/packages/nodejs/src/processes/managed-process.ts b/packages/nodejs/src/processes/managed-process.ts index 123245462..c0b03d98b 100644 --- a/packages/nodejs/src/processes/managed-process.ts +++ b/packages/nodejs/src/processes/managed-process.ts @@ -107,6 +107,7 @@ export class ManagedProcess extends EventEmitter { reject(error); }); if (!isKilledSuccessfully) { + this.logger.debug(`Process ${this.name} (${this.id}) didn't shutdown given SIGINT`) // If the SIGINT signal doesn't work, force kill with SIGINT this.childProcess.kill("SIGKILL"); } diff --git a/packages/nodejs/src/processes/process-manager.service.ts b/packages/nodejs/src/processes/process-manager.service.ts index 71624e9d7..2e854e6b0 100644 --- a/packages/nodejs/src/processes/process-manager.service.ts +++ b/packages/nodejs/src/processes/process-manager.service.ts @@ -11,19 +11,30 @@ export enum ProcessManagerEvent { PROCESS_UPDATED = "process_updated", } +type ProcessManagerOptions = { + // False if consumer wants to handle process termination on exit themselves. + gracefulShutdown: boolean; +} + export class ProcessManagerService extends EventEmitter { private readonly processLookupById: Map; - constructor(private readonly logger: IFlowserLogger) { + constructor(private readonly logger: IFlowserLogger, options: ProcessManagerOptions) { super(); this.processLookupById = new Map(); + if (options.gracefulShutdown) { + this.handleGracefullyShutdown(); + } + } + + private handleGracefullyShutdown() { // Gracefully shutdown child process in case parent receives a kill signal process.once("SIGINT", this.onTerminate.bind(this)); process.once("SIGTERM", this.onTerminate.bind(this)); } - async onTerminate() { + private async onTerminate() { await this.stopAll(); process.exit(0); } @@ -116,6 +127,7 @@ export class ProcessManagerService extends EventEmitter { } async stopAll() { + this.logger.debug(`Stopping ${this.getAll().length} processes`) await Promise.all(this.getAll().map((process) => process.stop())); } From 0acd0664954582722fa17cda6518a941ee9b00a5 Mon Sep 17 00:00:00 2001 From: Bart Date: Fri, 27 Oct 2023 13:12:52 +0200 Subject: [PATCH 063/100] handle temporary workspaces --- apps/electron/src/main/main.ts | 61 ++++++++++++++++++- .../src/services/workspace.service.ts | 39 ++++++++++-- 2 files changed, 92 insertions(+), 8 deletions(-) diff --git a/apps/electron/src/main/main.ts b/apps/electron/src/main/main.ts index 19bd1e41e..483856c5a 100644 --- a/apps/electron/src/main/main.ts +++ b/apps/electron/src/main/main.ts @@ -12,6 +12,7 @@ import path from 'path'; import { app, BrowserWindow, dialog, shell } from 'electron'; import { autoUpdater } from 'electron-updater'; import log from 'electron-log'; +import crypto from 'crypto'; import MenuBuilder from './menu'; import { resolveHtmlPath } from './util'; import { registerHandlers } from './ipc/handlers'; @@ -107,7 +108,58 @@ const createWindow = async () => { // eslint-disable-next-line new AppUpdater(); - // TODO(restructure): Start and navigate to temporary project + registerHandlers(); + + await maybeOpenTemporaryWorkspace(mainWindow); +}; + +const maybeOpenTemporaryWorkspace = async (window: BrowserWindow) => { + try { + const { workspaceService } = FlowserAppService.create(); + const { hasSwitch, getSwitchValue } = app.commandLine; + + // This flag must stay unchanged, since Flow CLI depends on it. + const workspacePathFlag = 'project-path'; + + const shouldOpenWorkspace = hasSwitch(workspacePathFlag); + + if (shouldOpenWorkspace) { + const filesystemPath = getSwitchValue(workspacePathFlag); + const parsedPath = path.parse(filesystemPath); + const id = crypto + .createHash('sha256') + .update(path.normalize(filesystemPath)) + .digest() + .toString('base64url'); + + await workspaceService.createTemporary({ + id, + name: parsedPath.name, + filesystemPath, + emulator: undefined, + gateway: undefined, + createdAt: new Date(), + updatedAt: new Date(), + }); + + await workspaceService.open(id); + + // Our react-router instance is configured to use hash-based navigation: + // https://reactrouter.com/en/main/routers/create-hash-router. + await window.loadURL(`${resolveHtmlPath('index.html')}#/projects/${id}`); + } + } catch (e: unknown) { + const result = await dialog.showMessageBox(window, { + message: `Failed to start project`, + detail: isErrorWithMessage(e) ? e.message : undefined, + type: 'error', + buttons: ['Quit'], + }); + const quitClicked = result.response === 0; + if (quitClicked) { + app.exit(1); + } + } }; /** @@ -126,7 +178,6 @@ app .whenReady() .then(() => { createWindow(); - registerHandlers(); app.on('activate', () => { // On macOS it's common to re-create a window in the app when the // dock icon is clicked and there are no other windows open. @@ -165,3 +216,9 @@ app.on('before-quit', async (e) => { app.quit(); } }); + +type ErrorWithMessage = { message: string }; + +function isErrorWithMessage(error: unknown): error is ErrorWithMessage { + return typeof error === 'object' && error !== null && 'message' in error; +} diff --git a/apps/electron/src/services/workspace.service.ts b/apps/electron/src/services/workspace.service.ts index c1be6bb46..020ad769b 100644 --- a/apps/electron/src/services/workspace.service.ts +++ b/apps/electron/src/services/workspace.service.ts @@ -11,6 +11,7 @@ export enum WorkspaceEvent { export class WorkspaceService extends EventEmitter { private readonly openWorkspaceIds: Set; + private readonly temporaryWorkspaceLookup: Map; constructor( private readonly flowEmulatorService: FlowEmulatorService, @@ -18,6 +19,7 @@ export class WorkspaceService extends EventEmitter { ) { super(); this.openWorkspaceIds = new Set(); + this.temporaryWorkspaceLookup = new Map(); } async getOpenWorkspaces(): Promise { @@ -42,21 +44,26 @@ export class WorkspaceService extends EventEmitter { } async findAll(): Promise { - const existing = await this.storage.read(); + const persisted = await this.readPersisted(); + const temporary = Array.from(this.temporaryWorkspaceLookup.values()); + return [...persisted, ...temporary]; + } - return JSON.parse(existing ?? '[]'); + // Temporary workspaces are not persisted to disk. + async createTemporary(createdWorkspace: FlowserWorkspace) { + this.temporaryWorkspaceLookup.set(createdWorkspace.id, createdWorkspace); } async create(createdWorkspace: FlowserWorkspace) { const existingWorkspaces = await this.findAll(); - await this.saveWorkspaces([...existingWorkspaces, createdWorkspace]); + await this.saveAll([...existingWorkspaces, createdWorkspace]); } async update(updatedWorkspace: FlowserWorkspace) { const existingWorkspaces = await this.findAll(); - await this.saveWorkspaces( + await this.saveAll( existingWorkspaces.map((existingWorkspace) => existingWorkspace.id === updatedWorkspace.id ? updatedWorkspace @@ -92,10 +99,30 @@ export class WorkspaceService extends EventEmitter { async remove(id: string): Promise { const existingWorkspaces = await this.findAll(); - await this.saveWorkspaces(existingWorkspaces.filter((e) => e.id !== id)); + await this.saveAll(existingWorkspaces.filter((e) => e.id !== id)); + } + + private async saveAll(workspaces: FlowserWorkspace[]) { + const temporary = workspaces.filter((w) => + this.temporaryWorkspaceLookup.has(w.id), + ); + + temporary.forEach((w) => this.temporaryWorkspaceLookup.set(w.id, w)); + + const persistable = workspaces.filter( + (w) => !this.temporaryWorkspaceLookup.has(w.id), + ); + + await this.persist(persistable); + } + + private async readPersisted(): Promise { + const existing = await this.storage.read(); + + return JSON.parse(existing ?? '[]'); } - private async saveWorkspaces(workspaces: FlowserWorkspace[]) { + private async persist(workspaces: FlowserWorkspace[]) { await this.storage.write(JSON.stringify(workspaces)); } } From 17725057ad6e4197baa505a455b87b0e3048ee15 Mon Sep 17 00:00:00 2001 From: Bart Date: Sat, 28 Oct 2023 20:54:13 +0200 Subject: [PATCH 064/100] handle transaction not found after rollback --- .../InteractionOutcomeDisplay.module.scss | 4 ++++ .../InteractionOutcomeDisplay.tsx | 15 +++++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/packages/ui/src/interactions/components/InteractionOutcomeDisplay/InteractionOutcomeDisplay.module.scss b/packages/ui/src/interactions/components/InteractionOutcomeDisplay/InteractionOutcomeDisplay.module.scss index 5246be264..07d3a12ea 100644 --- a/packages/ui/src/interactions/components/InteractionOutcomeDisplay/InteractionOutcomeDisplay.module.scss +++ b/packages/ui/src/interactions/components/InteractionOutcomeDisplay/InteractionOutcomeDisplay.module.scss @@ -13,4 +13,8 @@ padding: 0; } + .errorWrapper { + height: 100%; + } + } diff --git a/packages/ui/src/interactions/components/InteractionOutcomeDisplay/InteractionOutcomeDisplay.tsx b/packages/ui/src/interactions/components/InteractionOutcomeDisplay/InteractionOutcomeDisplay.tsx index f607b197b..b32b25a39 100644 --- a/packages/ui/src/interactions/components/InteractionOutcomeDisplay/InteractionOutcomeDisplay.tsx +++ b/packages/ui/src/interactions/components/InteractionOutcomeDisplay/InteractionOutcomeDisplay.tsx @@ -14,6 +14,7 @@ import { TransactionDetailsTabs } from "../../../transactions/TransactionDetails import { ScriptOutcome, TransactionOutcome } from "../../core/core-types"; import { InteractionKind } from "@onflowser/api"; import { useGetTransaction } from "../../../api"; +import { ErrorMessage } from "../../../common/errors/ErrorMessage"; export function InteractionOutcomeDisplay(): ReactElement { const { outcome } = useInteractionOutcomeManager(); @@ -96,12 +97,22 @@ function EmptyState() { function TransactionOutcomeDisplay(props: { outcome: TransactionOutcome }) { const { outcome } = props; - const { data: transaction } = useGetTransaction(outcome.transactionId!); + const { isLoading, data: transaction } = useGetTransaction(outcome.transactionId!); - if (!transaction) { + if (isLoading) { return ; } + if (!transaction) { + // This happens if rollback is performed to a block before this transaction. + return ( + + ) + } + return ( Date: Sun, 29 Oct 2023 15:12:38 +0100 Subject: [PATCH 065/100] stop storing managed private keys within index --- apps/electron/src/main/ipc/events.ts | 4 +- apps/electron/src/main/ipc/handlers.ts | 5 +- apps/electron/src/main/ipc/invokers.ts | 9 +- apps/electron/src/renderer/App.tsx | 1 + .../src/services/file-storage.service.ts | 4 +- .../src/services/flowser-app.service.ts | 21 ++++- packages/api/src/resources.ts | 7 +- packages/core/src/flow-gateway.service.ts | 2 +- packages/core/src/flow-indexer.service.ts | 11 +-- packages/nodejs/src/wallet.service.ts | 91 ++++++++++++------- .../AccountKeysTable/AccountKeysTable.tsx | 19 +++- packages/ui/src/api.ts | 11 ++- .../src/contexts/service-registry.context.tsx | 10 +- .../AddressBuilder/AddressBuilder.tsx | 8 +- 14 files changed, 136 insertions(+), 67 deletions(-) diff --git a/apps/electron/src/main/ipc/events.ts b/apps/electron/src/main/ipc/events.ts index 71f0e107e..8b3bf7c64 100644 --- a/apps/electron/src/main/ipc/events.ts +++ b/apps/electron/src/main/ipc/events.ts @@ -19,7 +19,9 @@ export enum FlowserIpcEvent { FLOW_TRANSACTION_SEND = 'FLOW_TRANSACTION_SEND', FLOW_SCRIPT_EXECUTE = 'FLOW_SCRIPT_EXECUTE', FLOW_ACCOUNT_GET_INDEX = 'FLOW_ACCOUNT_GET_INDEX', - FLOW_ACCOUNT_CREATE = 'FLOW_ACCOUNT_CREATE', + + WALLET_ACCOUNT_CREATE = 'WALLET_ACCOUNT_CREATE', + WALLET_KEY_LIST = 'WALLET_KEY_LIST', SNAPSHOTS_ROLLBACK_TO_HEIGHT = 'SNAPSHOTS_ROLLBACK_TO_HEIGHT', SNAPSHOTS_JUMP_TO = 'SNAPSHOTS_JUMP_TO', diff --git a/apps/electron/src/main/ipc/handlers.ts b/apps/electron/src/main/ipc/handlers.ts index 8abc55a9e..c9fdcd7ac 100644 --- a/apps/electron/src/main/ipc/handlers.ts +++ b/apps/electron/src/main/ipc/handlers.ts @@ -100,7 +100,10 @@ export function registerHandlers() { event: IpcMainInvokeEvent, request: ExecuteScriptRequest, ) => flowGatewayService.executeScript(request), - [FlowserIpcEvent.FLOW_ACCOUNT_CREATE]: async ( + + [FlowserIpcEvent.WALLET_KEY_LIST]: (event: IpcMainInvokeEvent) => + walletService.listKeyPairs(), + [FlowserIpcEvent.WALLET_ACCOUNT_CREATE]: async ( event: IpcMainInvokeEvent, ) => { // There will be only 1 open workspace for now. diff --git a/apps/electron/src/main/ipc/invokers.ts b/apps/electron/src/main/ipc/invokers.ts index fc4e57c35..dfcd7ae74 100644 --- a/apps/electron/src/main/ipc/invokers.ts +++ b/apps/electron/src/main/ipc/invokers.ts @@ -6,6 +6,7 @@ import { IInteractionService, IProcessManagerService, ISnapshotService, + IWalletService, IWorkspaceService, SendTransactionRequest, } from '@onflowser/ui/src/contexts/service-registry.context'; @@ -23,7 +24,12 @@ const flow: IFlowService = { ipcRenderer.invoke(FlowserIpcEvent.FLOW_TRANSACTION_SEND, request), executeScript: (request: ExecuteScriptRequest): Promise => ipcRenderer.invoke(FlowserIpcEvent.FLOW_SCRIPT_EXECUTE, request), - createAccount: () => ipcRenderer.invoke(FlowserIpcEvent.FLOW_ACCOUNT_CREATE), +}; + +const wallet: IWalletService = { + createAccount: () => + ipcRenderer.invoke(FlowserIpcEvent.WALLET_ACCOUNT_CREATE), + listKeyPairs: () => ipcRenderer.invoke(FlowserIpcEvent.WALLET_KEY_LIST), }; const interactions: IInteractionService = { @@ -87,5 +93,6 @@ export const electronInvokers = { getAll: (indexName: keyof BlockchainIndexes) => ipcRenderer.invoke(FlowserIpcEvent.INDEX_GET_ALL, indexName), }, + wallet, flow, }; diff --git a/apps/electron/src/renderer/App.tsx b/apps/electron/src/renderer/App.tsx index 9daeefd4f..292f57f1f 100644 --- a/apps/electron/src/renderer/App.tsx +++ b/apps/electron/src/renderer/App.tsx @@ -66,6 +66,7 @@ export function App() { { diff --git a/apps/electron/src/services/flowser-app.service.ts b/apps/electron/src/services/flowser-app.service.ts index 426131821..2c2e35228 100644 --- a/apps/electron/src/services/flowser-app.service.ts +++ b/apps/electron/src/services/flowser-app.service.ts @@ -39,6 +39,7 @@ export class FlowserAppService { public readonly flowSnapshotsService: FlowSnapshotsService; public readonly flowConfigService: FlowConfigService; private readonly flowSnapshotsStorageService: FileStorageService; + private readonly walletStorageService: FileStorageService; private processingScheduler: AsyncIntervalScheduler; constructor() { @@ -88,10 +89,11 @@ export class FlowserAppService { this.flowInteractionsService, ); this.flowConfigService = new FlowConfigService(this.logger); + this.walletStorageService = new FileStorageService(); this.walletService = new WalletService( this.flowCliService, this.flowGatewayService, - this.blockchainIndexService.indexes.accountKey, + this.walletStorageService, ); this.processingScheduler = new AsyncIntervalScheduler({ name: 'Blockchain processing', @@ -126,14 +128,21 @@ export class FlowserAppService { WorkspaceEvent.WORKSPACE_CLOSE, this.onWorkspaceClose.bind(this), ); - this.flowSnapshotsService.on(FlowSnapshotsEvent.ROLLBACK_TO_HEIGHT, () => - this.blockchainIndexService.clear(), + this.flowSnapshotsService.on( + FlowSnapshotsEvent.ROLLBACK_TO_HEIGHT, + this.onRollbackToBlockHeight.bind(this), ); - this.flowSnapshotsService.on(FlowSnapshotsEvent.JUMP_TO, () => - this.blockchainIndexService.clear(), + this.flowSnapshotsService.on( + FlowSnapshotsEvent.JUMP_TO, + this.onRollbackToBlockHeight.bind(this), ); } + private async onRollbackToBlockHeight() { + this.blockchainIndexService.clear(); + await this.walletService.synchronizeKeys(); + } + private async onWorkspaceOpen(workspaceId: string) { const workspace = await this.workspaceService.findByIdOrThrow(workspaceId); @@ -159,6 +168,8 @@ export class FlowserAppService { this.flowSnapshotsStorageService.setFileName( `flowser-snapshots-${workspaceId}.json`, ); + this.walletStorageService.setFileName(`flowser-wallet-${workspaceId}.json`); + await this.walletService.synchronizeKeys(); if (workspace.emulator) { this.flowSnapshotsService.configure({ diff --git a/packages/api/src/resources.ts b/packages/api/src/resources.ts index f63a9ef01..5c8dc9002 100644 --- a/packages/api/src/resources.ts +++ b/packages/api/src/resources.ts @@ -90,7 +90,6 @@ export interface FlowAccountKey extends TimestampedResource, IdentifiableResourc index: number; address: string; publicKey: string; - privateKey?: string; signAlgo: SignatureAlgorithm | undefined; hashAlgo: HashAlgorithm | undefined; weight: number; @@ -98,6 +97,12 @@ export interface FlowAccountKey extends TimestampedResource, IdentifiableResourc revoked: boolean; } +export type ManagedKeyPair = { + address: string; + publicKey: string; + privateKey: string; +} + export interface FlowContract extends TimestampedResource, IdentifiableResource { // ID is the combination of `address` and `name`. id: string; diff --git a/packages/core/src/flow-gateway.service.ts b/packages/core/src/flow-gateway.service.ts index 969d26c49..9f123d702 100644 --- a/packages/core/src/flow-gateway.service.ts +++ b/packages/core/src/flow-gateway.service.ts @@ -151,7 +151,7 @@ export type FlowAnyEvent = FlowEventInternal<`A.${string}.${string}.${string}`, // https://docs.onflow.org/fcl/reference/api/#event-object export type FlowEvent = FlowAnyEvent | FlowAccountKeyEvent | FlowAccountEvent | FlowAccountContractEvent; -// https://developers.flow.com/next/tooling/fcl-js/api#authorization-function +// https://developers.flow.com/tools/clients/fcl-js/api#authorization-function export type FlowAuthorizationFunction = () => unknown; type SendFlowTransactionOptions = { diff --git a/packages/core/src/flow-indexer.service.ts b/packages/core/src/flow-indexer.service.ts index 7352f1fa8..87b2b9008 100644 --- a/packages/core/src/flow-indexer.service.ts +++ b/packages/core/src/flow-indexer.service.ts @@ -338,10 +338,7 @@ export class FlowIndexerService { throw new Error("Cannot find key from event") } - // Use `upsert` instead of `create` because a key - // may have already been created by wallet service. - // In that case we want to update everything except for the `privateKey field. - return this.accountKeyIndex.upsert(this.createKeyEntity({ + return this.accountKeyIndex.create(this.createKeyEntity({ key, address: account.address })) @@ -393,8 +390,8 @@ export class FlowIndexerService { const flowAccount = await this.flowGatewayService.getAccount(address); await Promise.all([ - // We need to use `upsert` instead of `create`, - // mainly because this account was possibly already created by wallet service. + // Use `upsert` instead of `create` because we are processing a batch + // of events (which may include "token balance updated" event) in parallel. this.accountIndex.upsert(this.createAccountEntity(flowAccount)), Promise.all(flowAccount.keys.map(key => this.accountKeyIndex.create(this.createKeyEntity({ address, @@ -564,8 +561,6 @@ export class FlowIndexerService { weight: key.weight, sequenceNumber: key.sequenceNumber, revoked: key.revoked, - // Do not include `privateKey` field here, - // otherwise it may override private key that was created by wallet service. }; } diff --git a/packages/nodejs/src/wallet.service.ts b/packages/nodejs/src/wallet.service.ts index ed407080c..d30b12691 100644 --- a/packages/nodejs/src/wallet.service.ts +++ b/packages/nodejs/src/wallet.service.ts @@ -1,17 +1,15 @@ import { ec as EC } from "elliptic"; import { SHA3 } from "sha3"; import { FlowCliService } from "./flow-cli.service"; -import { ensurePrefixedAddress } from "@onflowser/core"; +import { ensurePrefixedAddress, FlowKey } from "@onflowser/core"; import { FlowAuthorizationFunction, FlowGatewayService, } from "@onflowser/core"; -import * as flowserResource from "@onflowser/api"; import { - HashAlgorithm, - IResourceIndex, - SignatureAlgorithm, FclArgumentWithMetadata + FclArgumentWithMetadata } from "@onflowser/api"; +import { PersistentStorage } from "@onflowser/core/src/persistent-storage"; const fcl = require("@onflow/fcl"); @@ -37,13 +35,19 @@ const ec: EC = new EC("p256"); // https://developers.flow.com/tooling/flow-cli/accounts/create-accounts#key-weight const defaultKeyWeight = 1000; +export type ManagedKeyPair = { + address: string; + publicKey: string; + privateKey: string; +} + // TODO(restructure): Should we import existing accounts from flow.json? export class WalletService { constructor( private readonly cliService: FlowCliService, private readonly flowGateway: FlowGatewayService, - private accountKeysIndex: IResourceIndex + private readonly storageService: PersistentStorage, ) {} public async sendTransaction( @@ -89,31 +93,37 @@ export class WalletService { private async withAuthorization( address: string ): Promise { - const allKeys = await this.accountKeysIndex.findAll(); - const accountPrivateKeys = allKeys.filter(key => Boolean(key.privateKey)); + const managedKeyPairs = await this.listKeyPairs(); - if (accountPrivateKeys.length === 0) { + if (managedKeyPairs.length === 0) { throw new Error(`Private keys not found for account: ${address}`); } - const credentialToUse = accountPrivateKeys[0]; + const managedKeyToUse = managedKeyPairs[0]; + + const account = await this.flowGateway.getAccount(address); + const associatedPublicKey = account.keys.find(key => key.publicKey === managedKeyToUse.publicKey); + + if (!associatedPublicKey) { + throw new Error(`Associated public key not found for account: ${account}`) + } const authn: FlowAuthorizationFunction = ( fclAccount: Record = {} ) => ({ ...fclAccount, - tempId: `${address}-${credentialToUse.index}`, + tempId: `${address}-${managedKeyToUse.privateKey}`, addr: fcl.sansPrefix(address), - keyId: credentialToUse.index, + keyId: associatedPublicKey.index, signingFunction: (signable: any) => { - if (!credentialToUse.privateKey) { + if (!managedKeyToUse.privateKey) { throw new Error("Private key not found"); } return { addr: fcl.withPrefix(address), - keyId: credentialToUse.index, + keyId: associatedPublicKey.index, signature: this.signWithPrivateKey( - credentialToUse.privateKey, + managedKeyToUse.privateKey, signable.message ), }; @@ -123,12 +133,22 @@ export class WalletService { return authn; } + public async synchronizeKeys() { + const managedKeyPairs = await this.listKeyPairs(); + const associatedAccounts = await Promise.allSettled(managedKeyPairs.map(keyPair => this.flowGateway.getAccount(keyPair.address))); + const validKeyPairLookupByPublicKey = new Set(associatedAccounts.map((account) => { + if (account.status === "fulfilled") { + return account.value.keys.map(key => key.publicKey) + } else { + return []; + } + }).flat()); + await this.writeKeyPairs(managedKeyPairs.filter(keyPair => validKeyPairLookupByPublicKey.has(keyPair.publicKey))) + } + public async createAccount(options: CreateAccountRequest): Promise { - const signatureAlgorithm = SignatureAlgorithm.ECDSA_P256; - const hashAlgorithm = HashAlgorithm.SHA2_256; const generatedKeyPair = await this.cliService.generateKey({ projectRootPath: options.workspacePath, - signatureAlgorithm, }); const generatedAccount = await this.cliService.createAccount({ projectRootPath: options.workspacePath, @@ -139,21 +159,16 @@ export class WalletService { } ], }); - const accountAddress = ensurePrefixedAddress(generatedAccount.address); - - await this.accountKeysIndex.create({ - address: accountAddress, - hashAlgo: hashAlgorithm, - // TODO(restructure): Reuse the same function as in indexer service - id: `${accountAddress}.${generatedKeyPair.public}`, - index: 0, - privateKey: generatedKeyPair.private, - publicKey: generatedKeyPair.public, - revoked: false, - sequenceNumber: 0, - signAlgo: signatureAlgorithm, - weight: 1000, - }) + + const existingKeyPairs = await this.listKeyPairs(); + await this.writeKeyPairs([ + ...existingKeyPairs, + { + address: ensurePrefixedAddress(generatedAccount.address), + privateKey: generatedKeyPair.private, + publicKey: generatedKeyPair.public + } + ]) } private signWithPrivateKey(privateKey: string, message: string) { @@ -170,4 +185,14 @@ export class WalletService { sha.update(Buffer.from(msg, "hex")); return sha.digest(); } + + public async listKeyPairs() { + const data = await this.storageService.read(); + return JSON.parse(data ?? "[]") as ManagedKeyPair[]; + } + + private async writeKeyPairs(keyPairs: ManagedKeyPair[]) { + console.log("Writing keys", keyPairs) + await this.storageService.write(JSON.stringify(keyPairs)); + } } diff --git a/packages/ui/src/accounts/AccountKeysTable/AccountKeysTable.tsx b/packages/ui/src/accounts/AccountKeysTable/AccountKeysTable.tsx index 6c82e6258..35d5d2a09 100644 --- a/packages/ui/src/accounts/AccountKeysTable/AccountKeysTable.tsx +++ b/packages/ui/src/accounts/AccountKeysTable/AccountKeysTable.tsx @@ -8,6 +8,7 @@ import { FlowUtils } from "../../utils/flow-utils"; import React, { ReactElement } from "react"; import { BaseTable } from "../../common/misc/BaseTable/BaseTable"; import { FlowAccountKey } from "@onflowser/api"; +import { useGetManagedKeys } from "../../api"; const columnsHelper = createColumnHelper(); @@ -17,9 +18,7 @@ const columns = [ cell: (info) => (
    - {info.row.original.privateKey && ( - - )} +
    WEIGHT: {info.row.original.weight} SEQ. NUMBER: {info.row.original.sequenceNumber} @@ -40,6 +39,20 @@ const columns = [ }), ]; +function PrivateKeyDisplay(props: {targetKey: FlowAccountKey}) { + const {data: managedKeys} = useGetManagedKeys(); + + const managedKeyPair = managedKeys?.find(key => key.address === props.targetKey.address && key.publicKey === props.targetKey.publicKey); + + if (!managedKeyPair) { + return null; + } + + return ( + + ) +} + function KeyDisplay(props: { label: string; keyValue: string }) { return (
    diff --git a/packages/ui/src/api.ts b/packages/ui/src/api.ts index 59c267a48..39536fbb0 100644 --- a/packages/ui/src/api.ts +++ b/packages/ui/src/api.ts @@ -9,7 +9,8 @@ import { FlowserWorkspace, FlowserUsageRequirement, FlowStateSnapshot, FlowTransaction, InteractionTemplate, - ManagedProcessOutput, ParsedInteractionOrError + ManagedProcessOutput, ParsedInteractionOrError, + ManagedKeyPair } from '@onflowser/api'; import { useServiceRegistry } from "./contexts/service-registry.context"; import { InteractionDefinition } from './interactions/core/core-types'; @@ -47,12 +48,12 @@ export function useGetKeysByAccount( ); } -export function useGetKeys(): SWRResponse { - const { accountKeyIndex } = useServiceRegistry(); +export function useGetManagedKeys(): SWRResponse { + const { walletService } = useServiceRegistry(); return useSWR( - `keys`, + `managed-keys`, () => - accountKeyIndex.findAll(), + walletService.listKeyPairs(), { refreshInterval: 1000, } diff --git a/packages/ui/src/contexts/service-registry.context.tsx b/packages/ui/src/contexts/service-registry.context.tsx index 0ffc58e8a..f4603b273 100644 --- a/packages/ui/src/contexts/service-registry.context.tsx +++ b/packages/ui/src/contexts/service-registry.context.tsx @@ -9,7 +9,8 @@ import { FlowserWorkspace, FlowStateSnapshot, FlowTransaction, InteractionTemplate, - IResourceIndexReader, ManagedProcessOutput, ParsedInteractionOrError + IResourceIndexReader, ManagedProcessOutput, ParsedInteractionOrError, + ManagedKeyPair } from "@onflowser/api"; export interface ISnapshotService { @@ -52,11 +53,15 @@ export type ExecuteScriptRequest = { export interface IFlowService { sendTransaction(request: SendTransactionRequest): Promise<{ transactionId: string }>; executeScript(request: ExecuteScriptRequest): Promise; - createAccount(): Promise; getIndexOfAddress(address: string): Promise; getFlowCliInfo(): Promise; } +export interface IWalletService { + createAccount(): Promise; + listKeyPairs(): Promise; +} + interface IAnalyticsService { disable(): void; enable(): void; @@ -74,6 +79,7 @@ export interface IProcessManagerService { type ServiceRegistry = { interactionsService: IInteractionService; flowService: IFlowService; + walletService: IWalletService; snapshotService: ISnapshotService; workspaceService: IWorkspaceService; analyticsService: IAnalyticsService; diff --git a/packages/ui/src/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.tsx b/packages/ui/src/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.tsx index c3e113185..1be9a2201 100644 --- a/packages/ui/src/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.tsx +++ b/packages/ui/src/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.tsx @@ -9,13 +9,13 @@ import { Spinner } from "../../../../common/loaders/Spinner/Spinner"; import { FclValueUtils } from "@onflowser/core"; import { FlowAccount } from "@onflowser/api"; import { useServiceRegistry } from "../../../../contexts/service-registry.context"; -import { useGetAccounts, useGetKeys } from "../../../../api"; +import { useGetAccounts, useGetManagedKeys } from "../../../../api"; export function AddressBuilder(props: CadenceValueBuilder): ReactElement { const { disabled, value, setValue, addressBuilderOptions } = props; const { data, mutate } = useGetAccounts(); - const { flowService } = useServiceRegistry(); - const { data: allKeys } = useGetKeys(); + const { walletService } = useServiceRegistry(); + const { data: allKeys } = useGetManagedKeys(); const accountsWithPrivateKeysLookup = new Set(allKeys?.filter(key => Boolean(key.privateKey)).map(key => key.address)); const accountsToShow = useMemo(() => addressBuilderOptions?.showManagedAccountsOnly ? data?.filter((account) => accountsWithPrivateKeysLookup.has(account.address)) @@ -32,7 +32,7 @@ export function AddressBuilder(props: CadenceValueBuilder): ReactElement { }, [accountsToShow]); async function createNewAccount() { - await flowService.createAccount(); + await walletService.createAccount(); await mutate(); } From 87151f7e6798500962a62f82b220675352568ef2 Mon Sep 17 00:00:00 2001 From: Bart Date: Sun, 29 Oct 2023 15:38:21 +0100 Subject: [PATCH 066/100] fix automatic persistence --- packages/nodejs/src/flow-emulator.service.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/nodejs/src/flow-emulator.service.ts b/packages/nodejs/src/flow-emulator.service.ts index 8a4390b99..9f7795d2e 100644 --- a/packages/nodejs/src/flow-emulator.service.ts +++ b/packages/nodejs/src/flow-emulator.service.ts @@ -142,7 +142,10 @@ export class FlowEmulatorService extends EventEmitter { flag("service-hash-algo", config.serviceHashAlgorithm), flag("rest-debug", config.enableRestDebug), flag("grpc-debug", config.enableGrpcDebug), - flag("persist", config.persist), + // Automatically enable persistence when snapshot option is used. + // Only required until below flow-emulator issue is resolved: + // https://github.com/onflow/flow-emulator/issues/490 + flag("persist", config.persist || config.snapshot), flag("snapshot", config.snapshot), flag("dbpath", config.databasePath), flag("simple-addresses", config.useSimpleAddresses), From fb1c7e0a4a925cb9f6b00d6ae19aaf48bc7ce16f Mon Sep 17 00:00:00 2001 From: Bart Date: Sun, 29 Oct 2023 15:49:02 +0100 Subject: [PATCH 067/100] synchronize snapshot index --- apps/electron/src/services/flowser-app.service.ts | 6 ++++-- packages/api/src/resources.ts | 2 +- packages/core/src/flow-snapshots.service.ts | 13 +++++++++++-- .../nodejs/src/processes/process-manager.service.ts | 1 - packages/nodejs/src/wallet.service.ts | 3 +-- 5 files changed, 17 insertions(+), 8 deletions(-) diff --git a/apps/electron/src/services/flowser-app.service.ts b/apps/electron/src/services/flowser-app.service.ts index 2c2e35228..847916983 100644 --- a/apps/electron/src/services/flowser-app.service.ts +++ b/apps/electron/src/services/flowser-app.service.ts @@ -140,7 +140,7 @@ export class FlowserAppService { private async onRollbackToBlockHeight() { this.blockchainIndexService.clear(); - await this.walletService.synchronizeKeys(); + await this.walletService.synchronizeIndex(); } private async onWorkspaceOpen(workspaceId: string) { @@ -168,8 +168,10 @@ export class FlowserAppService { this.flowSnapshotsStorageService.setFileName( `flowser-snapshots-${workspaceId}.json`, ); + await this.flowSnapshotsService.synchronizeIndex(); + this.walletStorageService.setFileName(`flowser-wallet-${workspaceId}.json`); - await this.walletService.synchronizeKeys(); + await this.walletService.synchronizeIndex(); if (workspace.emulator) { this.flowSnapshotsService.configure({ diff --git a/packages/api/src/resources.ts b/packages/api/src/resources.ts index 5c8dc9002..d4d982487 100644 --- a/packages/api/src/resources.ts +++ b/packages/api/src/resources.ts @@ -140,7 +140,7 @@ export interface FlowAccountStorage extends TimestampedResource, IdentifiableRes id: string; address: string; domain: FlowStorageDomain; - // TODO(restructure): Split data into multiple type-specific fields + // TODO(restructure-followup): Split data into multiple type-specific fields data: any; path: string; targetPath: string; diff --git a/packages/core/src/flow-snapshots.service.ts b/packages/core/src/flow-snapshots.service.ts index 7372632f6..6c46f3318 100644 --- a/packages/core/src/flow-snapshots.service.ts +++ b/packages/core/src/flow-snapshots.service.ts @@ -43,6 +43,10 @@ export class FlowSnapshotsService extends EventEmitter { endpoint: `/snapshots?name=${name}`, }); + if (response.status === 409) { + throw new Error("Snapshot already exists") + } + if (response.status !== 200) { throw new Error("Failed creating snapshot"); } @@ -92,7 +96,7 @@ export class FlowSnapshotsService extends EventEmitter { return response.data; } - public async findAll(): Promise { + public async synchronizeIndex() { const [persistedSnapshots, emulatorSnapshots] = await Promise.all([ this.findAllPersisted(), this.findAllOnEmulator() @@ -101,7 +105,12 @@ export class FlowSnapshotsService extends EventEmitter { const validSnapshotIdLookup = new Set(emulatorSnapshots.names); // Ensure we exclude the ones that were deleted without using Flowser. - return persistedSnapshots.filter(snapshot => validSnapshotIdLookup.has(snapshot.id)) + await this.persistAll(persistedSnapshots.filter(snapshot => validSnapshotIdLookup.has(snapshot.id))) + } + + public async findAll(): Promise { + // Only valid snapshots (after synchronization) should be persisted. + return this.findAllPersisted(); } private async findAllOnEmulator(): Promise { diff --git a/packages/nodejs/src/processes/process-manager.service.ts b/packages/nodejs/src/processes/process-manager.service.ts index 2e854e6b0..2ae5b14b6 100644 --- a/packages/nodejs/src/processes/process-manager.service.ts +++ b/packages/nodejs/src/processes/process-manager.service.ts @@ -67,7 +67,6 @@ export class ProcessManagerService extends EventEmitter { async start(process: ManagedProcess) { const isExisting = this.processLookupById.has(process.id); - this.logger.debug(`Running command '${process.options.command.name} ${process.options.command.args?.join("|")}'`) if (isExisting) { await this.startExisting(process.id); } else { diff --git a/packages/nodejs/src/wallet.service.ts b/packages/nodejs/src/wallet.service.ts index d30b12691..03d7e53ff 100644 --- a/packages/nodejs/src/wallet.service.ts +++ b/packages/nodejs/src/wallet.service.ts @@ -133,7 +133,7 @@ export class WalletService { return authn; } - public async synchronizeKeys() { + public async synchronizeIndex() { const managedKeyPairs = await this.listKeyPairs(); const associatedAccounts = await Promise.allSettled(managedKeyPairs.map(keyPair => this.flowGateway.getAccount(keyPair.address))); const validKeyPairLookupByPublicKey = new Set(associatedAccounts.map((account) => { @@ -192,7 +192,6 @@ export class WalletService { } private async writeKeyPairs(keyPairs: ManagedKeyPair[]) { - console.log("Writing keys", keyPairs) await this.storageService.write(JSON.stringify(keyPairs)); } } From ccbf22f202d3a9f4c5a4ad89081d3a7e7e4d9074 Mon Sep 17 00:00:00 2001 From: Bart Date: Sun, 29 Oct 2023 16:08:18 +0100 Subject: [PATCH 068/100] setup & run prettier --- package.json | 2 +- packages/api/.prettierrc | 1 + packages/api/package.json | 8 +- packages/api/src/capabilities.ts | 5 +- packages/api/src/resources.ts | 20 +- packages/core/.prettierrc | 1 + packages/core/package.json | 8 +- packages/core/src/fcl-value.ts | 22 +- packages/core/src/flow-gateway.service.ts | 76 +- packages/core/src/flow-indexer.service.ts | 190 ++-- packages/core/src/flow-snapshots.service.ts | 43 +- packages/core/src/flow-storage.service.ts | 11 +- packages/core/src/in-memory-index.ts | 13 +- packages/core/src/index.ts | 2 +- packages/core/src/utils.ts | 12 +- packages/nodejs/.prettierrc | 1 + packages/nodejs/package.json | 14 +- .../nodejs/src/async-interval-scheduler.ts | 2 +- packages/nodejs/src/flow-cli.service.ts | 11 +- packages/nodejs/src/flow-config.service.ts | 19 +- packages/nodejs/src/flow-emulator.service.ts | 6 +- .../nodejs/src/flow-interactions.service.ts | 16 +- packages/nodejs/src/go-bindings.service.ts | 15 +- packages/nodejs/src/index.ts | 4 +- .../nodejs/src/processes/managed-process.ts | 27 +- .../src/processes/process-manager.service.ts | 26 +- packages/nodejs/src/wallet.service.ts | 78 +- packages/ui/.prettierrc | 1 + packages/ui/package.json | 20 +- .../accounts/AccountAvatar/avatars/README.md | 7 +- .../AccountDetails/AccountDetails.module.scss | 1 - .../AccountDetails/AccountDetails.tsx | 2 +- .../AccountKeysTable/AccountKeysTable.tsx | 14 +- .../AccountStorage/AccountStorage.tsx | 8 +- .../InternalStorageCard.module.scss | 2 +- .../InternalStorageCard.tsx | 4 +- .../PublicPrivateStorageCard.module.scss | 2 +- .../StorageDataTypes/StorageDataTypes.tsx | 4 +- packages/ui/src/api.ts | 99 +- packages/ui/src/assets.d.ts | 14 +- .../BlocksTable/BlocksTable.module.scss | 15 +- .../ui/src/blocks/BlocksTable/BlocksTable.tsx | 2 +- .../ActionButton/ActionButton.module.scss | 9 +- .../common/buttons/Button/Button.module.scss | 3 +- .../ui/src/common/buttons/Button/Button.tsx | 2 +- .../buttons/IconButton/IconButton.module.scss | 6 +- .../RadioButton/RadioButton.module.scss | 4 +- .../SimpleButton/SimpleButton.module.scss | 4 +- .../ToggleButton/ToggleButton.module.scss | 6 +- .../cards/BaseCard/BaseCard.module.scss | 13 +- .../code/CadenceEditor/cadence-editor.css | 16 +- .../common/code/JsonView/JsonView.module.scss | 2 +- .../common/errors/ErrorMessage.module.scss | 8 +- .../icons/CaretIcon/CaretIcon.module.scss | 12 +- .../src/common/inputs/Input/Input.module.scss | 8 +- .../SelectInput/SelectInput.module.scss | 8 +- .../ProjectLayout/ProjectLayout.module.scss | 1 - .../FullScreenLoading.module.scss | 10 +- .../loaders/Spinner/Spinner.module.scss | 2 +- .../misc/BaseBadge/BaseBadge.module.scss | 4 +- .../misc/BaseTable/BaseTable.module.scss | 1 - .../src/common/misc/BaseTable/BaseTable.tsx | 10 +- .../common/misc/Breadcrumbs/Breadcrumbs.tsx | 2 +- .../common/misc/Callout/Callout.module.scss | 2 +- .../misc/LineSeparator/LineSeparator.tsx | 2 +- packages/ui/src/common/misc/Value/Value.tsx | 2 +- .../dialogs/action/ActionDialog.module.scss | 2 +- .../dialogs/base/BaseDialog.module.scss | 4 +- .../dialogs/snapshot/SnapshotDialog.tsx | 2 +- .../common/status/ErrorMessage.module.scss | 2 +- .../ui/src/common/status/ErrorMessage.tsx | 2 +- .../ui/src/common/status/ExecutionStatus.tsx | 2 +- .../status/TransactionStatusBadge.module.scss | 6 +- .../common/tabs/BaseTabs/BaseTabs.module.scss | 8 +- .../tabs/StyledTabs/StyledTabs.module.scss | 3 +- .../src/common/tabs/StyledTabs/StyledTabs.tsx | 15 +- .../common/time/DateDisplay/DateDisplay.tsx | 7 +- .../src/contexts/platform-adapter.context.tsx | 4 +- .../src/contexts/service-registry.context.tsx | 23 +- .../ui/src/contexts/snapshots.context.tsx | 14 +- .../ui/src/contexts/workspace.context.tsx | 14 +- .../ContractDetails/ContractDetails.tsx | 4 +- .../ContractsTable/ContractsTable.tsx | 2 +- .../EventOriginLink/EventOriginLink.tsx | 2 +- .../EventsTable/EventsTable.module.scss | 4 +- .../ui/src/events/EventsTable/EventsTable.tsx | 9 +- packages/ui/src/hooks/use-analytics.ts | 2 +- packages/ui/src/hooks/use-error-handler.ts | 2 +- packages/ui/src/hooks/use-filter-data.ts | 4 +- .../interactions/InteractionsPage.module.scss | 5 +- .../ui/src/interactions/InteractionsPage.tsx | 2 +- .../ExecutionSettings.module.scss | 4 +- .../InteractionHistory/InteractionHistory.tsx | 9 +- .../InteractionIcon.module.scss | 3 +- .../InteractionIcon/InteractionIcon.tsx | 2 +- .../InteractionLabel/InteractionLabel.tsx | 8 +- .../InteractionOutcomeDisplay.module.scss | 1 - .../InteractionOutcomeDisplay.tsx | 6 +- .../InteractionTemplates.tsx | 6 +- .../components/ParamBuilder/ParamBuilder.tsx | 2 +- .../AddressBuilder/AddressBuilder.module.scss | 2 +- .../AddressBuilder/AddressBuilder.tsx | 20 +- .../ArrayBuilder/ArrayBuilder.module.scss | 2 +- .../ValueBuilder/BoolBuilder/BoolBuilder.tsx | 2 +- .../DictionaryBuilder/DictionaryBuilder.tsx | 12 +- .../FixedPointNumberBuilder.tsx | 2 +- .../ValueBuilder/PathBuilder/PathBuilder.tsx | 4 +- .../contexts/definition.context.tsx | 2 +- .../contexts/interaction-registry.context.tsx | 14 +- .../interactions/contexts/outcome.context.tsx | 22 +- .../contexts/templates.context.tsx | 16 +- .../ui/src/interactions/core/core-types.ts | 2 +- .../ui/src/interactions/core/core-utils.ts | 2 +- .../hooks/use-transaction-name.ts | 19 +- packages/ui/src/logs/Logs.module.scss | 14 +- packages/ui/src/logs/Logs.tsx | 12 +- packages/ui/src/styles/animations.scss | 28 +- packages/ui/src/styles/colors.scss | 41 +- packages/ui/src/styles/rules.scss | 2 - packages/ui/src/styles/scrollbars.scss | 9 +- .../TransactionDetails/TransactionDetails.tsx | 2 +- .../TransactionDetailsTabs.tsx | 4 +- .../TransactionOverview.tsx | 2 +- .../TransactionSource/TransactionSource.tsx | 7 +- packages/ui/src/utils/flow-utils.ts | 6 +- packages/ui/src/utils/text-utils.ts | 2 +- .../FormFields/FormFields.module.scss | 10 +- .../src/workspaces/FormFields/FormFields.tsx | 4 +- .../SettingsSection.module.scss | 3 +- .../WorkspaceList/WorkspaceList.tsx | 2 +- .../WorkspaceSettings/WorkspaceSettings.tsx | 10 +- packages/ui/tsconfig.json | 8 +- turbo.json | 1 + yarn.lock | 843 ++++++++++++------ 134 files changed, 1358 insertions(+), 923 deletions(-) create mode 100644 packages/api/.prettierrc create mode 100644 packages/core/.prettierrc create mode 100644 packages/nodejs/.prettierrc create mode 100644 packages/ui/.prettierrc diff --git a/package.json b/package.json index fdfda90c4..98adf1cea 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "dev": "turbo run dev --parallel", "compile": "turbo run compile", "lint": "turbo run lint", - "format": "prettier --write \"**/*.{ts,tsx,md}\"" + "format": "turbo run format" }, "repository": { "type": "git", diff --git a/packages/api/.prettierrc b/packages/api/.prettierrc new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/packages/api/.prettierrc @@ -0,0 +1 @@ +{} diff --git a/packages/api/package.json b/packages/api/package.json index d7d39711e..c856419af 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -1,7 +1,12 @@ { "name": "@onflowser/api", "version": "1.0.0", - "files": ["src"], + "files": [ + "src" + ], + "scripts": { + "format": "prettier . --write" + }, "main": "./src/index.ts", "types": "./src/index.ts", "keywords": [], @@ -11,6 +16,7 @@ "@onflowser/config": "*" }, "devDependencies": { + "prettier": "3.0.3", "typescript": "^4.3.5" } } diff --git a/packages/api/src/capabilities.ts b/packages/api/src/capabilities.ts index dee3b5a7e..dafaa1a05 100644 --- a/packages/api/src/capabilities.ts +++ b/packages/api/src/capabilities.ts @@ -17,7 +17,10 @@ export interface IResourceIndexReader { // Index is responsible for managing lifecycle timestamps, // so consumers shouldn't be passing in timestamps themselves. -export type OmitTimestamps = Omit +export type OmitTimestamps = Omit< + Resource, + keyof TimestampedResource +>; export interface IResourceIndexWriter { create(resource: OmitTimestamps): Promise; diff --git a/packages/api/src/resources.ts b/packages/api/src/resources.ts index d4d982487..c6ea54533 100644 --- a/packages/api/src/resources.ts +++ b/packages/api/src/resources.ts @@ -85,7 +85,9 @@ export enum HashAlgorithm { KECCAK_256 = "KECCAK_256", } -export interface FlowAccountKey extends TimestampedResource, IdentifiableResource { +export interface FlowAccountKey + extends TimestampedResource, + IdentifiableResource { id: string; index: number; address: string; @@ -101,9 +103,11 @@ export type ManagedKeyPair = { address: string; publicKey: string; privateKey: string; -} +}; -export interface FlowContract extends TimestampedResource, IdentifiableResource { +export interface FlowContract + extends TimestampedResource, + IdentifiableResource { // ID is the combination of `address` and `name`. id: string; address: string; @@ -136,7 +140,9 @@ export enum FlowStorageDomain { STORAGE_DOMAIN_STORAGE = 3, } -export interface FlowAccountStorage extends TimestampedResource, IdentifiableResource { +export interface FlowAccountStorage + extends TimestampedResource, + IdentifiableResource { id: string; address: string; domain: FlowStorageDomain; @@ -187,7 +193,7 @@ export interface FclArgumentWithMetadata { identifier: string; value: FclValue; type: CadenceType; -}; +} export interface CadenceType { kind: CadenceTypeKind; @@ -306,9 +312,7 @@ export interface FlowserWorkspace extends TimestampedResource { gateway: FlowGatewayConfig | undefined; } -export interface FlowGatewayConfig { - -} +export interface FlowGatewayConfig {} export interface FlowEmulatorConfig { verboseLogging: boolean; diff --git a/packages/core/.prettierrc b/packages/core/.prettierrc new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/packages/core/.prettierrc @@ -0,0 +1 @@ +{} diff --git a/packages/core/package.json b/packages/core/package.json index 5e72b3896..b0324f437 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -5,21 +5,23 @@ "main": "./src/index.ts", "types": "./src/index.ts", "scripts": { - "build": "tsc" + "build": "tsc", + "format": "prettier . --write" }, "keywords": [], "author": "", "license": "ISC", "dependencies": { - "@onflowser/config": "*", - "@onflowser/api": "*", "@onflow/fcl": "^1.6.0", + "@onflowser/api": "*", + "@onflowser/config": "*", "axios": "^0.21.4", "node-abort-controller": "^3.0.1" }, "devDependencies": { "@types/jest": "^29.5.5", "@types/node": "^16.11.6", + "prettier": "3.0.3", "typescript": "^4.3.5" } } diff --git a/packages/core/src/fcl-value.ts b/packages/core/src/fcl-value.ts index ff2e8dc43..d3bdb3e4b 100644 --- a/packages/core/src/fcl-value.ts +++ b/packages/core/src/fcl-value.ts @@ -1,11 +1,15 @@ -import { CadenceType, CadenceTypeKind, FclArgumentWithMetadata } from "@onflowser/api"; +import { + CadenceType, + CadenceTypeKind, + FclArgumentWithMetadata, +} from "@onflowser/api"; // https://developers.flow.com/tooling/fcl-js/api#argumentfunction export type FclArgBuilder = (value: FclValue, type: unknown) => void; export type FclTypeLookup = Record unknown>; export type FclArgumentFunction = ( arg: FclArgBuilder, - t: FclTypeLookup + t: FclTypeLookup, ) => unknown[]; export type FclValue = FclRequiredValue | FclOptionalValue; @@ -50,7 +54,7 @@ export class FclValueUtils { // See: https://developers.flow.com/tooling/fcl-js/api#ftype private static getFclType( t: FclTypeLookup, - cadenceType: CadenceType + cadenceType: CadenceType, ): unknown { switch (cadenceType.kind) { case CadenceTypeKind.CADENCE_TYPE_FIXED_POINT_NUMBER: @@ -89,17 +93,21 @@ export class FclValueUtils { arg.every((e) => e instanceof Object && "key" in e && "value" in e) ); } + static isFclArrayValue(arg: unknown): arg is FclArrayValue { return arg instanceof Array; } + static isFclPathValue(arg: unknown): arg is FclPathValue { return arg instanceof Object && "domain" in arg && "identifier" in arg; } + static isFclBoolValue(arg: unknown): arg is FclBoolValue { return typeof arg === "boolean"; } + static isFclFixedPointNumberValue( - arg: unknown + arg: unknown, ): arg is FclFixedPointNumberValue { return ( typeof arg === "string" && @@ -108,6 +116,7 @@ export class FclValueUtils { !Number.isNaN(Number(arg)) ); } + static isFclIntegerNumberValue(arg: unknown): arg is FclIntegerNumberValue { return ( typeof arg === "string" && @@ -116,12 +125,15 @@ export class FclValueUtils { !Number.isNaN(Number(arg)) ); } + static isFclTextualValue(arg: unknown): arg is FclTextualValue { return typeof arg === "string"; } + static isFclAddressValue(arg: unknown): arg is FclAddressValue { return typeof arg === "string" && arg.startsWith("0x"); } + static isFclRequiredValue(arg: unknown): arg is FclRequiredValue { return ( this.isFclDictionaryValue(arg) || @@ -133,9 +145,11 @@ export class FclValueUtils { this.isFclAddressValue(arg) ); } + static isFclOptionalValue(arg: unknown): arg is FclOptionalValue { return arg === undefined || this.isFclRequiredValue(arg); } + static isFclValue(arg: unknown): arg is FclValue { return this.isFclOptionalValue(arg) || this.isFclRequiredValue(arg); } diff --git a/packages/core/src/flow-gateway.service.ts b/packages/core/src/flow-gateway.service.ts index 9f123d702..82b1f8cc5 100644 --- a/packages/core/src/flow-gateway.service.ts +++ b/packages/core/src/flow-gateway.service.ts @@ -1,7 +1,8 @@ import { FclArgBuilder, - FclTypeLookup, FclValue, - FclValueUtils + FclTypeLookup, + FclValue, + FclValueUtils, } from "./fcl-value"; import * as fcl from "@onflow/fcl"; import axios from "axios"; @@ -119,37 +120,54 @@ type FlowEventInternal = { type: Type; transactionIndex: number; eventIndex: number; - data: Data + data: Data; }; - // https://developers.flow.com/cadence/language/core-events#account-key-added -export type FlowAccountKeyEvent = FlowEventInternal +>; // https://developers.flow.com/cadence/language/core-events#account-contract-added -export type FlowAccountContractEvent = FlowEventInternal +export type FlowAccountContractEvent = FlowEventInternal< + | FlowCoreEventType.ACCOUNT_CONTRACT_UPDATED + | FlowCoreEventType.ACCOUNT_CONTRACT_ADDED + | FlowCoreEventType.ACCOUNT_CONTRACT_REMOVED, + { + address: string; + codeHash: string[]; + // Contract name + contract: string; + } +>; // https://developers.flow.com/cadence/language/core-events#account-created -export type FlowAccountEvent = FlowEventInternal; +export type FlowAccountEvent = FlowEventInternal< + FlowCoreEventType.ACCOUNT_CREATED, + { address: string } +>; -export type FlowAnyEvent = FlowEventInternal<`A.${string}.${string}.${string}`, Record> +export type FlowAnyEvent = FlowEventInternal< + `A.${string}.${string}.${string}`, + Record +>; // https://docs.onflow.org/fcl/reference/api/#event-object -export type FlowEvent = FlowAnyEvent | FlowAccountKeyEvent | FlowAccountEvent | FlowAccountContractEvent; +export type FlowEvent = + | FlowAnyEvent + | FlowAccountKeyEvent + | FlowAccountEvent + | FlowAccountContractEvent; // https://developers.flow.com/tools/clients/fcl-js/api#authorization-function export type FlowAuthorizationFunction = () => unknown; @@ -203,12 +221,14 @@ export class FlowGatewayService { }); } - public async executeScript(options: ExecuteFlowScriptOptions): Promise { + public async executeScript( + options: ExecuteFlowScriptOptions, + ): Promise { return await fcl.query({ cadence: options.cadence, args: (arg: FclArgBuilder, t: FclTypeLookup) => { const argumentFunction = FclValueUtils.getArgumentFunction( - options.arguments + options.arguments, ); return argumentFunction(arg, t); }, @@ -221,13 +241,13 @@ export class FlowGatewayService { * https://developers.flow.com/tooling/fcl-js/transactions */ public async sendTransaction( - options: SendFlowTransactionOptions + options: SendFlowTransactionOptions, ): Promise<{ transactionId: string }> { const transactionId = await fcl.mutate({ cadence: options.cadence, args: (arg: FclArgBuilder, t: FclTypeLookup) => { const argumentFunction = FclValueUtils.getArgumentFunction( - options.arguments + options.arguments, ); return argumentFunction(arg, t); }, @@ -241,7 +261,7 @@ export class FlowGatewayService { } public getTxStatusSubscription( - transactionId: string + transactionId: string, ): FlowTxStatusSubscription { return fcl.tx(transactionId); } @@ -272,7 +292,7 @@ export class FlowGatewayService { } public async getTransactionStatusById( - transactionId: string + transactionId: string, ): Promise { return fcl.send([fcl.getTransactionStatus(transactionId)]).then(fcl.decode); } diff --git a/packages/core/src/flow-indexer.service.ts b/packages/core/src/flow-indexer.service.ts index 87b2b9008..0eba848e1 100644 --- a/packages/core/src/flow-indexer.service.ts +++ b/packages/core/src/flow-indexer.service.ts @@ -4,13 +4,18 @@ import { IResourceIndex, HashAlgorithm, SignatureAlgorithm, - ParsedInteractionOrError, OmitTimestamps + ParsedInteractionOrError, + OmitTimestamps, } from "@onflowser/api"; import { IFlowInteractions } from "./flow-interactions.service"; import { FlowAccountStorageService } from "./flow-storage.service"; -import { FlowApiStatus, FlowGatewayService, FlowAccountKeyEvent } from "./flow-gateway.service"; +import { + FlowApiStatus, + FlowGatewayService, + FlowAccountKeyEvent, +} from "./flow-gateway.service"; import { ensurePrefixedAddress } from "./utils"; -import { IFlowserLogger } from './logger'; +import { IFlowserLogger } from "./logger"; import { FclValue } from "./fcl-value"; // See https://developers.flow.com/cadence/language/core-events @@ -136,7 +141,7 @@ export class FlowIndexerService { try { blockData.transactions.map((transaction) => - this.subscribeToTransactionStatusUpdates(transaction.id) + this.subscribeToTransactionStatusUpdates(transaction.id), ); } catch (e) { this.logger.error("Transaction status update failed", e); @@ -144,7 +149,7 @@ export class FlowIndexerService { } private async subscribeToTransactionStatusUpdates( - transactionId: string + transactionId: string, ): Promise { const unsubscribe = this.flowGatewayService .getTxStatusSubscription(transactionId) @@ -156,7 +161,7 @@ export class FlowIndexerService { grcpStatus: this.reMapGrcpStatus(newStatus.statusCode), executionStatus: newStatus.status, }, - }) + }), ); try { await this.flowGatewayService @@ -173,9 +178,7 @@ export class FlowIndexerService { private async processBlockData(data: BlockData) { const blockPromise = this.blockIndex .create(this.createBlockEntity({ block: data.block })) - .catch((e: unknown) => - this.logger.error("block save error", e) - ); + .catch((e: unknown) => this.logger.error("block save error", e)); const transactionPromises = Promise.all( data.transactions.map((transaction) => this.processNewTransaction({ @@ -183,9 +186,9 @@ export class FlowIndexerService { transaction: transaction, transactionStatus: transaction.status, }).catch((e: any) => - this.logger.error(`transaction save error: ${e.message}`, e.stack) - ) - ) + this.logger.error(`transaction save error: ${e.message}`, e.stack), + ), + ), ); const eventPromises = Promise.all( data.events.map((flowEvent) => @@ -193,12 +196,12 @@ export class FlowIndexerService { .create( this.createEventEntity({ event: flowEvent, - }) + }), ) .catch((e: any) => - this.logger.error(`event save error: ${e.message}`, e.stack) - ) - ) + this.logger.error(`event save error: ${e.message}`, e.stack), + ), + ), ); return Promise.all([ @@ -208,7 +211,7 @@ export class FlowIndexerService { this.processEventBatch({ events: data.events, block: data.block, - }) + }), ]); } @@ -216,8 +219,8 @@ export class FlowIndexerService { const block = await this.flowGatewayService.getBlockByHeight(height); const collections = await Promise.all( block.collectionGuarantees.map(async (guarantee) => - this.flowGatewayService.getCollectionById(guarantee.collectionId) - ) + this.flowGatewayService.getCollectionById(guarantee.collectionId), + ), ); const transactionIds = collections .map((collection) => collection.transactionIds) @@ -225,13 +228,13 @@ export class FlowIndexerService { const transactionFutures = Promise.all( transactionIds.map((txId) => - this.flowGatewayService.getTransactionById(txId) - ) + this.flowGatewayService.getTransactionById(txId), + ), ); const transactionStatusesFutures = Promise.all( transactionIds.map((txId) => - this.flowGatewayService.getTransactionStatusById(txId) - ) + this.flowGatewayService.getTransactionStatusById(txId), + ), ); const [transactions, statuses] = await Promise.all([ @@ -250,7 +253,7 @@ export class FlowIndexerService { ...event, transactionId: tx.id, blockId: tx.referenceBlockId, - })) + })), ) .flat(); @@ -272,14 +275,14 @@ export class FlowIndexerService { this.processSingleEvent({ event: flowEvent, block: block }).catch( (e) => { this.logger.error( - `Event handling error: ${ - e.message - } (${JSON.stringify(flowEvent)})`, - e.stack + `Event handling error: ${e.message} (${JSON.stringify( + flowEvent, + )})`, + e.stack, ); - } - ) - ) + }, + ), + ), ); } @@ -288,9 +291,7 @@ export class FlowIndexerService { block: flowResource.FlowBlock; }) { const { event, block } = options; - this.logger.debug( - `Processing event: ${JSON.stringify(event)}` - ); + this.logger.debug(`Processing event: ${JSON.stringify(event)}`); const isFlowTokenWithdrawnEvent = (eventId: string) => /A\..*\.FlowToken\.TokensWithdrawn/.test(eventId); @@ -311,46 +312,53 @@ export class FlowIndexerService { case FlowCoreEventType.ACCOUNT_CONTRACT_ADDED: case FlowCoreEventType.ACCOUNT_CONTRACT_UPDATED: case FlowCoreEventType.ACCOUNT_CONTRACT_REMOVED: - // TODO: Stop re-fetching all contracts and instead use event.data.contract to get the removed/updated/added contract - // return this.createAccount({ address, block }); + // TODO: Stop re-fetching all contracts and instead use event.data.contract to get the removed/updated/added contract + // return this.createAccount({ address, block }); } switch (true) { case isFlowTokenWithdrawnEvent(event.type): - const tokenWithdrawnData = event.data as {from: string; amount: number} + const tokenWithdrawnData = event.data as { + from: string; + amount: number; + }; // New emulator accounts are initialized // with a default Flow balance coming from null address. return tokenWithdrawnData.from ? this.updateAccountBalance(tokenWithdrawnData.from) : undefined; case isFlowTokenDepositedEvent(event.type): - const tokenDepositedData = event.data as {to: string; amount: number} + const tokenDepositedData = event.data as { to: string; amount: number }; return this.updateAccountBalance(tokenDepositedData.to); } } private async processAccountKeyAddedEvent(event: FlowAccountKeyEvent) { const publicKey = this.decodeUint8PublicKey(event.data.publicKey.publicKey); - const account = await this.flowGatewayService.getAccount(event.data.address); - const key = account.keys.find(key => key.publicKey === publicKey); + const account = await this.flowGatewayService.getAccount( + event.data.address, + ); + const key = account.keys.find((key) => key.publicKey === publicKey); if (key === undefined) { - throw new Error("Cannot find key from event") + throw new Error("Cannot find key from event"); } - return this.accountKeyIndex.create(this.createKeyEntity({ - key, - address: account.address - })) + return this.accountKeyIndex.create( + this.createKeyEntity({ + key, + address: account.address, + }), + ); } private async processAccountKeyRemovedEvent(event: FlowAccountKeyEvent) { const publicKey = this.decodeUint8PublicKey(event.data.publicKey.publicKey); const keyId = this.buildKeyId({ address: event.data.address, - publicKey: publicKey + publicKey: publicKey, }); - await this.accountKeyIndex.delete({id: keyId}) + await this.accountKeyIndex.delete({ id: keyId }); } private decodeUint8PublicKey(encodedKey: string[]) { @@ -363,15 +371,15 @@ export class FlowIndexerService { transactionStatus: flowResource.FlowTransactionStatus; }) { const parsedInteraction = await this.flowInteractionsService.parse( - options.transaction.script + options.transaction.script, ); if (parsedInteraction.error) { this.logger.error( - `Unexpected interaction parsing error: ${parsedInteraction.error}` + `Unexpected interaction parsing error: ${parsedInteraction.error}`, ); } return this.transactionIndex.create( - this.createTransactionEntity({ ...options, parsedInteraction }) + this.createTransactionEntity({ ...options, parsedInteraction }), ); } @@ -379,7 +387,7 @@ export class FlowIndexerService { const flowAccount = await this.flowGatewayService.getAccount(address); // Use `upsert` instead of `create` because we are processing a batch // of events (which may include "account created" event) in parallel. - await this.accountIndex.upsert(this.createAccountEntity(flowAccount)) + await this.accountIndex.upsert(this.createAccountEntity(flowAccount)); } private async createAccount(options: { @@ -393,10 +401,16 @@ export class FlowIndexerService { // Use `upsert` instead of `create` because we are processing a batch // of events (which may include "token balance updated" event) in parallel. this.accountIndex.upsert(this.createAccountEntity(flowAccount)), - Promise.all(flowAccount.keys.map(key => this.accountKeyIndex.create(this.createKeyEntity({ - address, - key - })))), + Promise.all( + flowAccount.keys.map((key) => + this.accountKeyIndex.create( + this.createKeyEntity({ + address, + key, + }), + ), + ), + ), Promise.all( Object.keys(flowAccount.contracts).map((name) => this.contractIndex.create( @@ -405,9 +419,9 @@ export class FlowIndexerService { block: block, name, code: flowAccount.contracts[name], - }) - ) - ) + }), + ), + ), ), ]); } @@ -415,21 +429,22 @@ export class FlowIndexerService { private async reIndexAllAccountStorage() { const allAccounts = await this.accountIndex.findAll(); this.logger.debug( - `Processing storages for accounts: ${allAccounts.map(e => e.address).join(", ")}` + `Processing storages for accounts: ${allAccounts + .map((e) => e.address) + .join(", ")}`, ); await Promise.all( allAccounts.map((account: flowserResource.FlowAccount) => - this.reIndexAccountStorage(account.address) - ) + this.reIndexAccountStorage(account.address), + ), ); } private async reIndexAccountStorage(address: string) { - const storages = await this.flowStorageService.getAccountStorageItems( - address - ); + const storages = + await this.flowStorageService.getAccountStorageItems(address); return Promise.all( - storages.map((storage) => this.accountStorageIndex.upsert(storage)) + storages.map((storage) => this.accountStorageIndex.upsert(storage)), ); } @@ -452,17 +467,19 @@ export class FlowIndexerService { await Promise.all( this.getAllWellKnownAddresses() - .filter(address => this.accountIndex.findOneById(address) !== undefined) + .filter( + (address) => this.accountIndex.findOneById(address) !== undefined, + ) .map((address) => this.createAccount({ address, block: nonExistingBlock, - }).catch(error => { + }).catch((error) => { // Most likely an account not found error monotonic/non-monotonic addresses. // Can be safely ignored. // TODO(restructure): Smarter handling of monotonic/non-monotonic addresses - }) - ) + }), + ), ); } @@ -495,7 +512,9 @@ export class FlowIndexerService { ]; } - private createAccountEntity(account: flowResource.FlowAccount): OmitTimestamps { + private createAccountEntity( + account: flowResource.FlowAccount, + ): OmitTimestamps { const address = ensurePrefixedAddress(account.address); const tags: flowserResource.FlowAccountTag[] = []; @@ -505,8 +524,8 @@ export class FlowIndexerService { if (isDefaultAccount) { tags.push({ name: "Default", - description: "This account was created automatically by the emulator." - }) + description: "This account was created automatically by the emulator.", + }); } const isServiceAccount = [ @@ -533,7 +552,7 @@ export class FlowIndexerService { } private createKeyEntity(options: { - address:string; + address: string; key: flowResource.FlowKey; }): OmitTimestamps { const { address, key } = options; @@ -551,7 +570,7 @@ export class FlowIndexerService { return { id: this.buildKeyId({ address, - publicKey: key.publicKey + publicKey: key.publicKey, }), index: key.index, address: address, @@ -564,12 +583,9 @@ export class FlowIndexerService { }; } - private buildKeyId(options: { - address: string; - publicKey: string - }) { + private buildKeyId(options: { address: string; publicKey: string }) { const accountAddress = ensurePrefixedAddress(options.address); - return `${accountAddress}.${options.publicKey}` + return `${accountAddress}.${options.publicKey}`; } private createEventEntity(options: { @@ -636,7 +652,7 @@ export class FlowIndexerService { // But we don't need the type info since we already have // our own system of representing types with `CadenceType` message. function fromTypeAnnotatedFclArguments( - object: flowResource.FlowTypeAnnotatedValue + object: flowResource.FlowTypeAnnotatedValue, ): FclValue { const { type, value } = object; // Available type values are listed here: @@ -653,7 +669,7 @@ export class FlowIndexerService { // TODO(restructure): Double check this // @ts-ignore return value?.map((element: any) => - fromTypeAnnotatedFclArguments(element) + fromTypeAnnotatedFclArguments(element), ); case "Path": case "PublicPath": @@ -673,25 +689,25 @@ export class FlowIndexerService { referenceBlockId: transaction.referenceBlockId, gasLimit: transaction.gasLimit, authorizers: transaction.authorizers.map((address) => - ensurePrefixedAddress(address) + ensurePrefixedAddress(address), ), arguments: parsedInteraction.interaction?.parameters.map( (parameter, index): flowserResource.FclArgumentWithMetadata => ({ identifier: parameter.identifier, type: parameter.type, - value: fromTypeAnnotatedFclArguments(transaction.args[index]), - }) + value: fromTypeAnnotatedFclArguments(transaction.args[index]), + }), ) ?? [], proposalKey: { ...transaction.proposalKey, address: ensurePrefixedAddress(transaction.proposalKey.address), }, envelopeSignatures: this.deserializeSignableObjects( - transaction.envelopeSignatures + transaction.envelopeSignatures, ), payloadSignatures: this.deserializeSignableObjects( - transaction.payloadSignatures + transaction.payloadSignatures, ), status: { errorMessage: transactionStatus.errorMessage, @@ -708,7 +724,7 @@ export class FlowIndexerService { } private deserializeSignableObjects( - signableObjects: flowResource.FlowSignableObject[] + signableObjects: flowResource.FlowSignableObject[], ): flowserResource.SignableObject[] { return signableObjects.map((signable) => ({ ...signable, diff --git a/packages/core/src/flow-snapshots.service.ts b/packages/core/src/flow-snapshots.service.ts index 6c46f3318..83f3d5b97 100644 --- a/packages/core/src/flow-snapshots.service.ts +++ b/packages/core/src/flow-snapshots.service.ts @@ -17,26 +17,24 @@ type FlowSnapshotsConfig = Pick; export enum FlowSnapshotsEvent { ROLLBACK_TO_HEIGHT = "ROLLBACK_TO_HEIGHT", - JUMP_TO = "JUMP_TO" + JUMP_TO = "JUMP_TO", } export class FlowSnapshotsService extends EventEmitter { - private config: FlowSnapshotsConfig + private config: FlowSnapshotsConfig; constructor(private readonly storage: PersistentStorage) { super(); this.config = { - adminServerPort: 8080 - } + adminServerPort: 8080, + }; } configure(config: FlowSnapshotsConfig) { this.config = config; } - public async create( - name: string - ): Promise { + public async create(name: string): Promise { // https://github.com/onflow/flow-emulator/blob/0ca87170b7792b68941da368a839b9b74615d659/server/utils/emulator.go#L208-L233 const response = await this.emulatorRequest({ method: "post", @@ -44,7 +42,7 @@ export class FlowSnapshotsService extends EventEmitter { }); if (response.status === 409) { - throw new Error("Snapshot already exists") + throw new Error("Snapshot already exists"); } if (response.status !== 200) { @@ -54,8 +52,8 @@ export class FlowSnapshotsService extends EventEmitter { await this.persistSingle({ id: name, blockId: response.data.blockId, - blockHeight: response.data.height - }) + blockHeight: response.data.height, + }); return response.data; } @@ -71,12 +69,10 @@ export class FlowSnapshotsService extends EventEmitter { throw new Error("Failed to jump to height"); } - this.emit(FlowSnapshotsEvent.ROLLBACK_TO_HEIGHT, height) + this.emit(FlowSnapshotsEvent.ROLLBACK_TO_HEIGHT, height); } - public async jumpTo( - id: string - ): Promise { + public async jumpTo(id: string): Promise { // https://github.com/onflow/flow-emulator/blob/0ca87170b7792b68941da368a839b9b74615d659/server/utils/emulator.go#L183-L206 const response = await this.emulatorRequest({ method: "put", @@ -91,7 +87,7 @@ export class FlowSnapshotsService extends EventEmitter { throw new Error("Failed to jump to snapshot"); } - this.emit(FlowSnapshotsEvent.JUMP_TO, id) + this.emit(FlowSnapshotsEvent.JUMP_TO, id); return response.data; } @@ -99,13 +95,17 @@ export class FlowSnapshotsService extends EventEmitter { public async synchronizeIndex() { const [persistedSnapshots, emulatorSnapshots] = await Promise.all([ this.findAllPersisted(), - this.findAllOnEmulator() + this.findAllOnEmulator(), ]); const validSnapshotIdLookup = new Set(emulatorSnapshots.names); // Ensure we exclude the ones that were deleted without using Flowser. - await this.persistAll(persistedSnapshots.filter(snapshot => validSnapshotIdLookup.has(snapshot.id))) + await this.persistAll( + persistedSnapshots.filter((snapshot) => + validSnapshotIdLookup.has(snapshot.id), + ), + ); } public async findAll(): Promise { @@ -134,16 +134,13 @@ export class FlowSnapshotsService extends EventEmitter { private async findAllPersisted(): Promise { const rawValue = await this.storage.read(); - return JSON.parse(rawValue ?? '[]') + return JSON.parse(rawValue ?? "[]"); } private async persistSingle(snapshot: FlowStateSnapshot) { const existing = await this.findAllPersisted(); // TODO(restructure): Do we need to do some kind of deduplication? - await this.persistAll([ - ...existing, - snapshot - ]) + await this.persistAll([...existing, snapshot]); } private async persistAll(snapshots: FlowStateSnapshot[]) { @@ -170,7 +167,7 @@ export class FlowSnapshotsService extends EventEmitter { } if (error.code === "ECONNREFUSED") { - throw new Error("Emulator offline") + throw new Error("Emulator offline"); } throw error; diff --git a/packages/core/src/flow-storage.service.ts b/packages/core/src/flow-storage.service.ts index 3f86b8d6d..1726abcec 100644 --- a/packages/core/src/flow-storage.service.ts +++ b/packages/core/src/flow-storage.service.ts @@ -3,7 +3,8 @@ import { ensurePrefixedAddress } from "./utils"; import { FlowStorageDomain, CadenceTypeKind, - FlowAccountStorage, OmitTimestamps + FlowAccountStorage, + OmitTimestamps, } from "@onflowser/api"; /** @@ -37,7 +38,7 @@ export class FlowAccountStorageService { constructor(private readonly flowGatewayService: FlowGatewayService) {} public async getAccountStorageItems( - address: string + address: string, ): Promise[]> { const flowAccountStorage = await this.fetchStorageByAddress(address); @@ -53,7 +54,7 @@ export class FlowAccountStorageService { domain: this.getStorageDomainFromPath(item.path), path: item.path, targetPath: item.targetPath, - }) + }), ), ...flowAccountStorage.storagePathItems.map( (item): OmitTimestamps => ({ @@ -66,13 +67,13 @@ export class FlowAccountStorageService { domain: this.getStorageDomainFromPath(item.path), path: item.path, targetPath: "", - }) + }), ), ]; } private async fetchStorageByAddress( - address: string + address: string, ): Promise { const cadence = ` pub struct CapabilityPathItem { diff --git a/packages/core/src/in-memory-index.ts b/packages/core/src/in-memory-index.ts index 6e8ac175e..2cb3f01b4 100644 --- a/packages/core/src/in-memory-index.ts +++ b/packages/core/src/in-memory-index.ts @@ -1,7 +1,8 @@ import { IndexableResource, - IResourceIndex, OmitTimestamps, - RequireOnly + IResourceIndex, + OmitTimestamps, + RequireOnly, } from "@onflowser/api"; export class InMemoryIndex @@ -34,14 +35,18 @@ export class InMemoryIndex } } - async delete(resource: OmitTimestamps>): Promise { + async delete( + resource: OmitTimestamps>, + ): Promise { if (!this.lookup.has(resource.id)) { throw new Error("Resource not found"); } this.lookup.delete(resource.id); } - async update(resource: OmitTimestamps>): Promise { + async update( + resource: OmitTimestamps>, + ): Promise { const existingResource = this.lookup.get(resource.id); if (!existingResource) { throw new Error("Resource not found"); diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index cd2b03094..8bffbbb02 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -1,7 +1,7 @@ export * from "./fcl-value"; export * from "./utils"; export * from "./in-memory-index"; -export * from "./logger" +export * from "./logger"; export * from "./flow-gateway.service"; export * from "./flow-snapshots.service"; diff --git a/packages/core/src/utils.ts b/packages/core/src/utils.ts index 7aa09fe17..793031cd2 100644 --- a/packages/core/src/utils.ts +++ b/packages/core/src/utils.ts @@ -1,5 +1,5 @@ export function isDefined( - value: Value | null | undefined + value: Value | null | undefined, ): value is Value { return value !== null && value !== undefined; } @@ -38,13 +38,13 @@ export function computeEntitiesDiff(props: { props.newEntities.map((entity) => [ stringifyPrimaryKey(props.primaryKey, entity), entity, - ]) + ]), ); const oldEntitiesLookup = new Map( props.oldEntities.map((entity) => [ stringifyPrimaryKey(props.primaryKey, entity), entity, - ]) + ]), ); const created = []; @@ -75,7 +75,7 @@ export function computeEntitiesDiff(props: { function stringifyPrimaryKey( primaryKey: PrimaryKey, - entity: Entity + entity: Entity, ): string { // Single primary key. if (typeof primaryKey === "string") { @@ -98,7 +98,7 @@ type ProcessEntitiesDiffOptions = { }; export async function processEntitiesDiff( - opts: ProcessEntitiesDiffOptions + opts: ProcessEntitiesDiffOptions, ) { const promises = []; for (const entity of opts.diff.created) { @@ -115,7 +115,7 @@ export async function processEntitiesDiff( function areDeepEqualEntities( firstEntity: Entity, - secondEntity: Entity + secondEntity: Entity, ) { // Entities may have createdAt and updatedAt fields (if they are a subclass of PollingEntity) // We shouldn't compare those fields, because we are interested only in other attributes diff --git a/packages/nodejs/.prettierrc b/packages/nodejs/.prettierrc new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/packages/nodejs/.prettierrc @@ -0,0 +1 @@ +{} diff --git a/packages/nodejs/package.json b/packages/nodejs/package.json index bcc9adc4d..cb8c08b33 100644 --- a/packages/nodejs/package.json +++ b/packages/nodejs/package.json @@ -6,20 +6,24 @@ "types": "./src/index.ts", "scripts": { "dev": "npm run build-bin", - "build-bin": "sh build-go-bindings.sh" + "build-bin": "sh build-go-bindings.sh", + "format": "prettier . --write" }, "keywords": [], - "files": ["bin"], + "files": [ + "bin" + ], "author": "", "license": "ISC", "dependencies": { - "@onflowser/config": "*", "@onflow/fcl": "^1.6.0", + "@onflowser/config": "*", "elliptic": "^6.5.4" }, "devDependencies": { + "@types/elliptic": "^6.4.14", "@types/node": "^16.11.6", - "typescript": "^4.3.5", - "@types/elliptic": "^6.4.14" + "prettier": "3.0.3", + "typescript": "^4.3.5" } } diff --git a/packages/nodejs/src/async-interval-scheduler.ts b/packages/nodejs/src/async-interval-scheduler.ts index 3c81364cb..292efad62 100644 --- a/packages/nodejs/src/async-interval-scheduler.ts +++ b/packages/nodejs/src/async-interval-scheduler.ts @@ -51,7 +51,7 @@ export class AsyncIntervalScheduler { await new Promise((resolve) => { this.runningTimeoutId = setTimeout( resolve, - pollingIntervalInMs - runTimeInMs + pollingIntervalInMs - runTimeInMs, ); }); } else { diff --git a/packages/nodejs/src/flow-cli.service.ts b/packages/nodejs/src/flow-cli.service.ts index 165db9efc..eb38ab2af 100644 --- a/packages/nodejs/src/flow-cli.service.ts +++ b/packages/nodejs/src/flow-cli.service.ts @@ -146,7 +146,7 @@ export class FlowCliService { flowFlags: ["version"], }); const stdout = output.filter( - (log) => log.source === ProcessOutputSource.OUTPUT_SOURCE_STDOUT + (log) => log.source === ProcessOutputSource.OUTPUT_SOURCE_STDOUT, ); const versionLog = stdout.find((log) => log.data.startsWith("Version")); // This should only happen with a test build, @@ -162,14 +162,14 @@ export class FlowCliService { } private async runAndGetJsonOutput( - options: RunCliCommandOptions + options: RunCliCommandOptions, ): Promise { const output = await this.runAndGetOutput({ ...options, flowFlags: [...options.flowFlags, "--output", "json"], }); const lineWithData = output.find( - (outputLine) => outputLine.data.length > 0 + (outputLine) => outputLine.data.length > 0, ); if (!lineWithData) { throw new Error("Output line with JSON data not found"); @@ -196,10 +196,7 @@ export class FlowCliService { } if (flag.value !== undefined) { - return [ - flag.key, - String(flag.value), - ]; + return [flag.key, String(flag.value)]; } return []; diff --git a/packages/nodejs/src/flow-config.service.ts b/packages/nodejs/src/flow-config.service.ts index 9e1009189..55a18a7a9 100644 --- a/packages/nodejs/src/flow-config.service.ts +++ b/packages/nodejs/src/flow-config.service.ts @@ -2,7 +2,7 @@ import { readFile, writeFile, watch } from "fs/promises"; import * as path from "path"; import { AbortController } from "node-abort-controller"; import * as fs from "fs"; -import { IFlowserLogger, isObject } from '@onflowser/core'; +import { IFlowserLogger, isObject } from "@onflowser/core"; type FlowAddress = string; @@ -89,8 +89,7 @@ export class FlowConfigService { private configFileName = "flow.json"; private workingDirectoryPath: string | undefined; - constructor (private readonly logger: IFlowserLogger) { - } + constructor(private readonly logger: IFlowserLogger) {} public async configure(config: FlowConfigServiceConfig) { this.workingDirectoryPath = config.workspacePath; @@ -122,12 +121,12 @@ export class FlowConfigService { ([name, accountConfig]): FlowAbstractAccountConfig => { if (!accountConfig.address) { throw this.missingConfigError( - `accounts.${accountConfig.address}.address` + `accounts.${accountConfig.address}.address`, ); } if (!accountConfig.key) { throw this.missingConfigError( - `accounts.${accountConfig.address}.key` + `accounts.${accountConfig.address}.key`, ); } return { @@ -135,7 +134,7 @@ export class FlowConfigService { address: accountConfig.address, privateKey: this.getPrivateKey(accountConfig.key), }; - } + }, ); } @@ -147,7 +146,7 @@ export class FlowConfigService { (nameKey) => ({ name: nameKey, filePath: this.getContractFilePath(nameKey), - }) + }), ); return contractNamesAndPaths @@ -157,7 +156,7 @@ export class FlowConfigService { name: contract.name, relativePath: contract.filePath, absolutePath: this.buildProjectPath(contract.filePath), - }) + }), ); } @@ -171,7 +170,7 @@ export class FlowConfigService { } public async updateAccounts( - newOrUpdatedAccounts: FlowAbstractAccountConfig[] + newOrUpdatedAccounts: FlowAbstractAccountConfig[], ): Promise { if (!this.config?.accounts) { throw new Error("Accounts config not loaded"); @@ -230,7 +229,7 @@ export class FlowConfigService { private async save() { await this.writeProjectFile( this.configFileName, - JSON.stringify(this.config, null, 4) + JSON.stringify(this.config, null, 4), ); } diff --git a/packages/nodejs/src/flow-emulator.service.ts b/packages/nodejs/src/flow-emulator.service.ts index 9f7795d2e..1b5030f51 100644 --- a/packages/nodejs/src/flow-emulator.service.ts +++ b/packages/nodejs/src/flow-emulator.service.ts @@ -16,7 +16,7 @@ export enum FlowEmulatorEvent { type StartEmulatorRequest = { workspacePath: string; config: FlowEmulatorConfig; -} +}; export class FlowEmulatorService extends EventEmitter { public static readonly processId = "emulator"; @@ -90,7 +90,7 @@ export class FlowEmulatorService extends EventEmitter { return this.process.output.some( (output) => output.source === ProcessOutputSource.OUTPUT_SOURCE_STDOUT && - output.data.includes("Started") + output.data.includes("Started"), ); }; while (!hasStarted()) { @@ -106,7 +106,7 @@ export class FlowEmulatorService extends EventEmitter { return this.process.output.find( (output) => output.source === ProcessOutputSource.OUTPUT_SOURCE_STDERR && - output.data !== "" + output.data !== "", ); }; let retries = 5; diff --git a/packages/nodejs/src/flow-interactions.service.ts b/packages/nodejs/src/flow-interactions.service.ts index ae63cded4..44e4101d0 100644 --- a/packages/nodejs/src/flow-interactions.service.ts +++ b/packages/nodejs/src/flow-interactions.service.ts @@ -30,21 +30,21 @@ export class FlowInteractionsService implements IFlowInteractions { } public async getTemplates( - options: GetInteractionTemplatesOptions + options: GetInteractionTemplatesOptions, ): Promise { const potentialCadenceFilePaths = await this.findAllCadenceFiles( - options.workspacePath + options.workspacePath, ); const templates = await Promise.all( potentialCadenceFilePaths.map((potentialCadenceFilePath) => - this.buildMaybeTemplate(potentialCadenceFilePath) - ) + this.buildMaybeTemplate(potentialCadenceFilePath), + ), ); return templates.filter(isDefined); } private async buildMaybeTemplate( - filePath: string + filePath: string, ): Promise { const [fileContent, fileStats] = await Promise.all([ fs.readFile(filePath), @@ -87,14 +87,14 @@ export class FlowInteractionsService implements IFlowInteractions { const ignoredDirNames = new Set(["node_modules"]); const potentialDirPaths = filePaths.filter( - (path) => !/\.[a-z]+/.test(path) + (path) => !/\.[a-z]+/.test(path), ); const descendantCadencePaths = await Promise.all( potentialDirPaths .filter((potentialDirPath) => !ignoredDirNames.has(potentialDirPath)) .map((potentialDirPath) => - this.findAllCadenceFiles(path.join(rootDirPath, potentialDirPath)) - ) + this.findAllCadenceFiles(path.join(rootDirPath, potentialDirPath)), + ), ); const cadenceFilePaths = filePaths diff --git a/packages/nodejs/src/go-bindings.service.ts b/packages/nodejs/src/go-bindings.service.ts index 828510748..609c801c2 100644 --- a/packages/nodejs/src/go-bindings.service.ts +++ b/packages/nodejs/src/go-bindings.service.ts @@ -25,7 +25,7 @@ type ExecuteGoBinResponse = { type GoBindingsConfig = { // Path to the directory, which contains the compiled Go binding file(s). binDirPath: string; -} +}; export class GoBindingsService { private config: GoBindingsConfig; @@ -35,7 +35,7 @@ export class GoBindingsService { } public async getParsedInteraction( - request: GetParsedInteractionRequest + request: GetParsedInteractionRequest, ): Promise { const response = await this.execute({ command: "get-parsed-interaction", @@ -47,7 +47,10 @@ export class GoBindingsService { // Go code encodes the parameters as null when there is a parsing error. // Default to an empty array to match the expected structure. - if (parsedResponse.interaction && parsedResponse.interaction.parameters === null) { + if ( + parsedResponse.interaction && + parsedResponse.interaction.parameters === null + ) { parsedResponse.interaction.parameters = []; } @@ -55,14 +58,14 @@ export class GoBindingsService { } public async getIndexOfAddress( - request: GetAddressIndexRequest + request: GetAddressIndexRequest, ): Promise { const response = await this.execute({ command: "get-address-index", arguments: [request.chainId, request.hexAddress], }); - return Number(response.raw) + return Number(response.raw); } private execute(request: ExecuteGoBinRequest): Promise { @@ -94,7 +97,7 @@ export class GoBindingsService { } private getExecutablePath(): string { - return path.join(this.config.binDirPath, this.getExecutableName()) + return path.join(this.config.binDirPath, this.getExecutableName()); } private getExecutableName(): string { diff --git a/packages/nodejs/src/index.ts b/packages/nodejs/src/index.ts index fc731e13e..572117ac6 100644 --- a/packages/nodejs/src/index.ts +++ b/packages/nodejs/src/index.ts @@ -5,5 +5,5 @@ export * from "./flow-emulator.service"; export * from "./flow-config.service"; export * from "./flow-cli.service"; export * from "./wallet.service"; -export * from "./processes/process-manager.service" -export * from "./processes/managed-process" +export * from "./processes/process-manager.service"; +export * from "./processes/managed-process"; diff --git a/packages/nodejs/src/processes/managed-process.ts b/packages/nodejs/src/processes/managed-process.ts index c0b03d98b..fb97e35d7 100644 --- a/packages/nodejs/src/processes/managed-process.ts +++ b/packages/nodejs/src/processes/managed-process.ts @@ -52,7 +52,10 @@ export class ManagedProcess extends EventEmitter { public createdAt: Date; public updatedAt: Date; - constructor(private readonly logger: IFlowserLogger, options: ManagedProcessOptions) { + constructor( + private readonly logger: IFlowserLogger, + options: ManagedProcessOptions, + ) { super(); this.id = options.id ?? randomUUID(); this.name = options.name; @@ -78,8 +81,8 @@ export class ManagedProcess extends EventEmitter { this.logger.debug( `Starting ${this.name} with command: ${command.name} ${command.args?.join( - " " - )}` + " ", + )}`, ); return new Promise((resolve, reject) => { @@ -107,7 +110,9 @@ export class ManagedProcess extends EventEmitter { reject(error); }); if (!isKilledSuccessfully) { - this.logger.debug(`Process ${this.name} (${this.id}) didn't shutdown given SIGINT`) + this.logger.debug( + `Process ${this.name} (${this.id}) didn't shutdown given SIGINT`, + ); // If the SIGINT signal doesn't work, force kill with SIGINT this.childProcess.kill("SIGKILL"); } @@ -118,7 +123,7 @@ export class ManagedProcess extends EventEmitter { const rejectionTimeoutSec = 6; setTimeout(() => { const timeoutError = new Error( - `Couldn't kill process ${this.id} (pid=${this.childProcess?.pid}) within ${rejectionTimeoutSec}s timeout` + `Couldn't kill process ${this.id} (pid=${this.childProcess?.pid}) within ${rejectionTimeoutSec}s timeout`, ); reject(timeoutError); }, rejectionTimeoutSec * 1000); @@ -139,21 +144,21 @@ export class ManagedProcess extends EventEmitter { }); this.childProcess.once("exit", (code, signal) => { console.debug( - `Process ${this.id} exited (code=${code}, signal=${signal})` + `Process ${this.id} exited (code=${code}, signal=${signal})`, ); this.setState( code !== null && code > 0 ? ManagedProcessState.MANAGED_PROCESS_STATE_ERROR - : ManagedProcessState.MANAGED_PROCESS_STATE_NOT_RUNNING + : ManagedProcessState.MANAGED_PROCESS_STATE_NOT_RUNNING, ); this.detachEventListeners(); }); this.childProcess.stdout.on("data", (data) => - this.handleData(ProcessOutputSource.OUTPUT_SOURCE_STDOUT, data) + this.handleData(ProcessOutputSource.OUTPUT_SOURCE_STDOUT, data), ); this.childProcess.stderr.on("data", (data) => - this.handleData(ProcessOutputSource.OUTPUT_SOURCE_STDERR, data) + this.handleData(ProcessOutputSource.OUTPUT_SOURCE_STDERR, data), ); } @@ -177,7 +182,7 @@ export class ManagedProcess extends EventEmitter { data: line, createdAt, updatedAt: createdAt, - }) + }), ); this.output.push(...logs); @@ -185,7 +190,7 @@ export class ManagedProcess extends EventEmitter { private setState(newState: ManagedProcessState) { console.debug( - `Process ${this.id} state changed from ${this.state} to ${newState}` + `Process ${this.id} state changed from ${this.state} to ${newState}`, ); this.updatedAt = new Date(); this.state = newState; diff --git a/packages/nodejs/src/processes/process-manager.service.ts b/packages/nodejs/src/processes/process-manager.service.ts index 2ae5b14b6..1f309e8c3 100644 --- a/packages/nodejs/src/processes/process-manager.service.ts +++ b/packages/nodejs/src/processes/process-manager.service.ts @@ -1,7 +1,8 @@ import { ManagedProcess, ProcessOutputSource, - ManagedProcessOutput, ManagedProcessOptions + ManagedProcessOutput, + ManagedProcessOptions, } from "./managed-process"; import { EventEmitter } from "node:events"; import { IFlowserLogger } from "@onflowser/core"; @@ -14,12 +15,15 @@ export enum ProcessManagerEvent { type ProcessManagerOptions = { // False if consumer wants to handle process termination on exit themselves. gracefulShutdown: boolean; -} +}; export class ProcessManagerService extends EventEmitter { private readonly processLookupById: Map; - constructor(private readonly logger: IFlowserLogger, options: ProcessManagerOptions) { + constructor( + private readonly logger: IFlowserLogger, + options: ProcessManagerOptions, + ) { super(); this.processLookupById = new Map(); @@ -43,12 +47,10 @@ export class ProcessManagerService extends EventEmitter { return new ManagedProcess(this.logger, options); } - findAllLogsByProcess( - processId: string, - ): ManagedProcessOutput[] { + findAllLogsByProcess(processId: string): ManagedProcessOutput[] { const process = this.processLookupById.get(processId); if (!process) { - throw new Error("Process not found") + throw new Error("Process not found"); } return process.output; } @@ -57,7 +59,7 @@ export class ProcessManagerService extends EventEmitter { const allProcesses = [...this.processLookupById.values()]; return allProcesses.sort( (a, b) => - new Date(a.updatedAt).getTime() - new Date(b.updatedAt).getTime() + new Date(a.updatedAt).getTime() - new Date(b.updatedAt).getTime(), ); } @@ -97,7 +99,7 @@ export class ProcessManagerService extends EventEmitter { * If process exists with non-zero exit code, an error is thrown. */ async runUntilTermination( - process: ManagedProcess + process: ManagedProcess, ): Promise { await this.start(process); await process.waitOnExit(); @@ -108,14 +110,14 @@ export class ProcessManagerService extends EventEmitter { ) { const errorOutput = process.output.filter( (outputLine) => - outputLine.source == ProcessOutputSource.OUTPUT_SOURCE_STDERR + outputLine.source == ProcessOutputSource.OUTPUT_SOURCE_STDERR, ); const errorMessage = errorOutput .map((errorLine) => errorLine.data) .filter((lineData) => lineData.length > 0) .join(" ... "); throw new Error( - `Managed process exited with code: ${process.childProcess.exitCode} (${errorMessage})` + `Managed process exited with code: ${process.childProcess.exitCode} (${errorMessage})`, ); } return process.output; @@ -126,7 +128,7 @@ export class ProcessManagerService extends EventEmitter { } async stopAll() { - this.logger.debug(`Stopping ${this.getAll().length} processes`) + this.logger.debug(`Stopping ${this.getAll().length} processes`); await Promise.all(this.getAll().map((process) => process.stop())); } diff --git a/packages/nodejs/src/wallet.service.ts b/packages/nodejs/src/wallet.service.ts index 03d7e53ff..e23f856a1 100644 --- a/packages/nodejs/src/wallet.service.ts +++ b/packages/nodejs/src/wallet.service.ts @@ -1,14 +1,9 @@ import { ec as EC } from "elliptic"; import { SHA3 } from "sha3"; import { FlowCliService } from "./flow-cli.service"; -import { ensurePrefixedAddress, FlowKey } from "@onflowser/core"; -import { - FlowAuthorizationFunction, - FlowGatewayService, -} from "@onflowser/core"; -import { - FclArgumentWithMetadata -} from "@onflowser/api"; +import { ensurePrefixedAddress } from "@onflowser/core"; +import { FlowAuthorizationFunction, FlowGatewayService } from "@onflowser/core"; +import { FclArgumentWithMetadata } from "@onflowser/api"; import { PersistentStorage } from "@onflowser/core/src/persistent-storage"; const fcl = require("@onflow/fcl"); @@ -39,11 +34,10 @@ export type ManagedKeyPair = { address: string; publicKey: string; privateKey: string; -} +}; // TODO(restructure): Should we import existing accounts from flow.json? export class WalletService { - constructor( private readonly cliService: FlowCliService, private readonly flowGateway: FlowGatewayService, @@ -51,7 +45,7 @@ export class WalletService { ) {} public async sendTransaction( - request: SendTransactionRequest + request: SendTransactionRequest, ): Promise { const uniqueRoleAddresses = new Set([ request.proposerAddress, @@ -63,16 +57,14 @@ export class WalletService { async (address): Promise<[string, FlowAuthorizationFunction]> => [ address, await this.withAuthorization(address), - ] - ) + ], + ), ); function getAuthFunction(address: string) { const authFunction = authorizationFunctionsByAddress.get(address); if (authFunction === undefined) { - throw new Error( - `Authorization function not found for: ${address}` - ); + throw new Error(`Authorization function not found for: ${address}`); } return authFunction; } @@ -83,7 +75,7 @@ export class WalletService { proposer: getAuthFunction(request.proposerAddress), payer: getAuthFunction(request.payerAddress), authorizations: request.authorizerAddresses.map((address) => - getAuthFunction(address) + getAuthFunction(address), ), arguments: request.arguments, }); @@ -91,7 +83,7 @@ export class WalletService { // Returns undefined if provided account doesn't exist. private async withAuthorization( - address: string + address: string, ): Promise { const managedKeyPairs = await this.listKeyPairs(); @@ -102,14 +94,18 @@ export class WalletService { const managedKeyToUse = managedKeyPairs[0]; const account = await this.flowGateway.getAccount(address); - const associatedPublicKey = account.keys.find(key => key.publicKey === managedKeyToUse.publicKey); + const associatedPublicKey = account.keys.find( + (key) => key.publicKey === managedKeyToUse.publicKey, + ); if (!associatedPublicKey) { - throw new Error(`Associated public key not found for account: ${account}`) + throw new Error( + `Associated public key not found for account: ${account}`, + ); } const authn: FlowAuthorizationFunction = ( - fclAccount: Record = {} + fclAccount: Record = {}, ) => ({ ...fclAccount, tempId: `${address}-${managedKeyToUse.privateKey}`, @@ -124,7 +120,7 @@ export class WalletService { keyId: associatedPublicKey.index, signature: this.signWithPrivateKey( managedKeyToUse.privateKey, - signable.message + signable.message, ), }; }, @@ -135,15 +131,27 @@ export class WalletService { public async synchronizeIndex() { const managedKeyPairs = await this.listKeyPairs(); - const associatedAccounts = await Promise.allSettled(managedKeyPairs.map(keyPair => this.flowGateway.getAccount(keyPair.address))); - const validKeyPairLookupByPublicKey = new Set(associatedAccounts.map((account) => { - if (account.status === "fulfilled") { - return account.value.keys.map(key => key.publicKey) - } else { - return []; - } - }).flat()); - await this.writeKeyPairs(managedKeyPairs.filter(keyPair => validKeyPairLookupByPublicKey.has(keyPair.publicKey))) + const associatedAccounts = await Promise.allSettled( + managedKeyPairs.map((keyPair) => + this.flowGateway.getAccount(keyPair.address), + ), + ); + const validKeyPairLookupByPublicKey = new Set( + associatedAccounts + .map((account) => { + if (account.status === "fulfilled") { + return account.value.keys.map((key) => key.publicKey); + } else { + return []; + } + }) + .flat(), + ); + await this.writeKeyPairs( + managedKeyPairs.filter((keyPair) => + validKeyPairLookupByPublicKey.has(keyPair.publicKey), + ), + ); } public async createAccount(options: CreateAccountRequest): Promise { @@ -156,7 +164,7 @@ export class WalletService { { weight: defaultKeyWeight, publicKey: generatedKeyPair.public, - } + }, ], }); @@ -166,9 +174,9 @@ export class WalletService { { address: ensurePrefixedAddress(generatedAccount.address), privateKey: generatedKeyPair.private, - publicKey: generatedKeyPair.public - } - ]) + publicKey: generatedKeyPair.public, + }, + ]); } private signWithPrivateKey(privateKey: string, message: string) { diff --git a/packages/ui/.prettierrc b/packages/ui/.prettierrc new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/packages/ui/.prettierrc @@ -0,0 +1 @@ +{} diff --git a/packages/ui/package.json b/packages/ui/package.json index b874092a7..2060f5693 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -3,29 +3,29 @@ "version": "0.0.0", "types": "./src/index.ts", "scripts": { - "build": "vite build" + "build": "vite build", + "format": "prettier . --write" }, "devDependencies": { "@onflowser/config": "*", "@types/react": "^18.2.0", + "@types/react-helmet": "^6.1.7", + "prettier": "3.0.3", "sass": "^1.69.0", "typescript": "^4.9.5", - "vite-plugin-svgr": "^4.1.0", - "@types/react-helmet": "^6.1.7" + "vite-plugin-svgr": "^4.1.0" }, "peerDependencies": { "react": "^18.2.0", "react-dom": "^18.2.0", + "react-hot-toast": "^2.4.1", "react-router-dom": "6.16.0", - "swr": "^2.2.4", - "react-hot-toast": "^2.4.1" + "swr": "^2.2.4" }, "dependencies": { - "yup": "^0.32.11", - "@szhsin/react-menu": "4.0.3", - "formik": "^2.2.9", "@codemirror/legacy-modes": "^6.1.0", "@onflowser/api": "*", + "@szhsin/react-menu": "4.0.3", "@tanstack/react-table": "^8.5.11", "@uidotdev/usehooks": "^2.3.1", "@uiw/codemirror-extensions-basic-setup": "^4.12.4", @@ -36,11 +36,13 @@ "copy-to-clipboard": "^3.3.3", "date-fns": "^2.30.0", "dateformat": "^5.0.3", + "formik": "^2.2.9", "mixpanel-browser": "^2.47.0", "react-helmet": "^6.1.0", "react-icons": "^4.11.0", "react-json-view": "^1.21.3", "react-timeago": "^7.2.0", - "reactjs-popup": "2.0.5" + "reactjs-popup": "2.0.5", + "yup": "^0.32.11" } } diff --git a/packages/ui/src/accounts/AccountAvatar/avatars/README.md b/packages/ui/src/accounts/AccountAvatar/avatars/README.md index a7d48d1ab..68b9c1ddc 100644 --- a/packages/ui/src/accounts/AccountAvatar/avatars/README.md +++ b/packages/ui/src/accounts/AccountAvatar/avatars/README.md @@ -1,10 +1,9 @@ -Toy Faces Library - 3D Avatars ------------------------- +## Toy Faces Library - 3D Avatars + from amritpaldesign.com Licenses Explained: https://amritpaldesign.com/licenses -Thanks for your support ;) --------------------------- +## Thanks for your support ;) Please contact me if you have any questions via amrit@amritpaldesign.com diff --git a/packages/ui/src/accounts/AccountDetails/AccountDetails.module.scss b/packages/ui/src/accounts/AccountDetails/AccountDetails.module.scss index 0c43db7a6..be81f5c25 100644 --- a/packages/ui/src/accounts/AccountDetails/AccountDetails.module.scss +++ b/packages/ui/src/accounts/AccountDetails/AccountDetails.module.scss @@ -21,5 +21,4 @@ .tabContent { overflow: unset; } - } diff --git a/packages/ui/src/accounts/AccountDetails/AccountDetails.tsx b/packages/ui/src/accounts/AccountDetails/AccountDetails.tsx index c94c8768e..ab0b950cd 100644 --- a/packages/ui/src/accounts/AccountDetails/AccountDetails.tsx +++ b/packages/ui/src/accounts/AccountDetails/AccountDetails.tsx @@ -29,7 +29,7 @@ type AccountDetailsProps = { }; export const AccountDetails: FunctionComponent = ( - props + props, ) => { const { accountId } = props; const { data: account, isLoading } = useGetAccount(accountId); diff --git a/packages/ui/src/accounts/AccountKeysTable/AccountKeysTable.tsx b/packages/ui/src/accounts/AccountKeysTable/AccountKeysTable.tsx index 35d5d2a09..4c274e939 100644 --- a/packages/ui/src/accounts/AccountKeysTable/AccountKeysTable.tsx +++ b/packages/ui/src/accounts/AccountKeysTable/AccountKeysTable.tsx @@ -39,18 +39,20 @@ const columns = [ }), ]; -function PrivateKeyDisplay(props: {targetKey: FlowAccountKey}) { - const {data: managedKeys} = useGetManagedKeys(); +function PrivateKeyDisplay(props: { targetKey: FlowAccountKey }) { + const { data: managedKeys } = useGetManagedKeys(); - const managedKeyPair = managedKeys?.find(key => key.address === props.targetKey.address && key.publicKey === props.targetKey.publicKey); + const managedKeyPair = managedKeys?.find( + (key) => + key.address === props.targetKey.address && + key.publicKey === props.targetKey.publicKey, + ); if (!managedKeyPair) { return null; } - return ( - - ) + return ; } function KeyDisplay(props: { label: string; keyValue: string }) { diff --git a/packages/ui/src/accounts/AccountStorage/AccountStorage.tsx b/packages/ui/src/accounts/AccountStorage/AccountStorage.tsx index 6390e75f9..255c3a300 100644 --- a/packages/ui/src/accounts/AccountStorage/AccountStorage.tsx +++ b/packages/ui/src/accounts/AccountStorage/AccountStorage.tsx @@ -18,7 +18,7 @@ export function AccountStorage(props: AccountStorageProps): ReactElement { const urlQueryParams = useUrlQuery(); const focusedStorageId = urlQueryParams.get("focusedStorageId"); const [expandedCardIds, setExpandedCardIds] = useState( - new Set(focusedStorageId ? [focusedStorageId] : []) + new Set(focusedStorageId ? [focusedStorageId] : []), ); useEffect(() => { @@ -60,13 +60,13 @@ export function AccountStorage(props: AccountStorageProps): ReactElement { }; const privateStorageItems = storageItems.filter( - (item) => item.domain === FlowStorageDomain.STORAGE_DOMAIN_PRIVATE + (item) => item.domain === FlowStorageDomain.STORAGE_DOMAIN_PRIVATE, ); const publicStorageItems = storageItems.filter( - (item) => item.domain === FlowStorageDomain.STORAGE_DOMAIN_PUBLIC + (item) => item.domain === FlowStorageDomain.STORAGE_DOMAIN_PUBLIC, ); const internalStorageItems = storageItems.filter( - (item) => item.domain === FlowStorageDomain.STORAGE_DOMAIN_STORAGE + (item) => item.domain === FlowStorageDomain.STORAGE_DOMAIN_STORAGE, ); const privateAndPublicStorageItems = [ diff --git a/packages/ui/src/accounts/InternalStorageCard/InternalStorageCard.module.scss b/packages/ui/src/accounts/InternalStorageCard/InternalStorageCard.module.scss index a5eab9370..2075698c1 100644 --- a/packages/ui/src/accounts/InternalStorageCard/InternalStorageCard.module.scss +++ b/packages/ui/src/accounts/InternalStorageCard/InternalStorageCard.module.scss @@ -11,7 +11,7 @@ background-color: transparentize($gray-110, 0.5); &.introAnimation { - @include addNewContentAnimation(.4s); + @include addNewContentAnimation(0.4s); } .header { diff --git a/packages/ui/src/accounts/InternalStorageCard/InternalStorageCard.tsx b/packages/ui/src/accounts/InternalStorageCard/InternalStorageCard.tsx index 54dc62c4e..441bf3b5a 100644 --- a/packages/ui/src/accounts/InternalStorageCard/InternalStorageCard.tsx +++ b/packages/ui/src/accounts/InternalStorageCard/InternalStorageCard.tsx @@ -5,7 +5,7 @@ import { SimpleButton } from "../../common/buttons/SimpleButton/SimpleButton"; import { JsonView } from "../../common/code/JsonView/JsonView"; import { StorageDataTypes } from "../StorageDataTypes/StorageDataTypes"; import { FlowUtils } from "../../utils/flow-utils"; -import { FlowAccountStorage } from '@onflowser/api'; +import { FlowAccountStorage } from "@onflowser/api"; type ExtendableStorageCardProps = { storageItem: FlowAccountStorage; @@ -23,7 +23,7 @@ export function InternalStorageCard({ const extendClass = classNames(className, { [classes.root]: true, [classes.gridItemExtended]: isExpanded, - [classes.introAnimation]: false + [classes.introAnimation]: false, }); const pathIdentifier = storageItem.path.split("/").reverse()[0]; diff --git a/packages/ui/src/accounts/PublicPrivateStorageCard/PublicPrivateStorageCard.module.scss b/packages/ui/src/accounts/PublicPrivateStorageCard/PublicPrivateStorageCard.module.scss index 1af119c1f..f8555a189 100644 --- a/packages/ui/src/accounts/PublicPrivateStorageCard/PublicPrivateStorageCard.module.scss +++ b/packages/ui/src/accounts/PublicPrivateStorageCard/PublicPrivateStorageCard.module.scss @@ -12,7 +12,7 @@ position: relative; &.introAnimation { - @include addNewContentAnimation(.4s); + @include addNewContentAnimation(0.4s); } .background { diff --git a/packages/ui/src/accounts/StorageDataTypes/StorageDataTypes.tsx b/packages/ui/src/accounts/StorageDataTypes/StorageDataTypes.tsx index a455c9519..22b25285a 100644 --- a/packages/ui/src/accounts/StorageDataTypes/StorageDataTypes.tsx +++ b/packages/ui/src/accounts/StorageDataTypes/StorageDataTypes.tsx @@ -22,7 +22,7 @@ export function StorageDataTypes(props: StorageDataTypesProps): ReactElement { } function getStoredDataTypes( - storageData: Record | undefined + storageData: Record | undefined, ): string[] { const nestedObjectsKeys = Object.keys(storageData ?? {}); const uniqueDataTypes = new Set(); @@ -48,7 +48,7 @@ function getStoredDataTypes( } function getDataTypeKeysAtCurrentDepth( - storageData: Record + storageData: Record, ): string[] { if ("kind" in storageData) { return [storageData.kind as string]; diff --git a/packages/ui/src/api.ts b/packages/ui/src/api.ts index 39536fbb0..62181a294 100644 --- a/packages/ui/src/api.ts +++ b/packages/ui/src/api.ts @@ -3,17 +3,21 @@ import { FlowAccount, FlowAccountKey, FlowAccountStorage, - FlowBlock, FlowCliInfo, + FlowBlock, + FlowCliInfo, FlowContract, FlowEvent, - FlowserWorkspace, FlowserUsageRequirement, + FlowserWorkspace, + FlowserUsageRequirement, FlowStateSnapshot, - FlowTransaction, InteractionTemplate, - ManagedProcessOutput, ParsedInteractionOrError, - ManagedKeyPair -} from '@onflowser/api'; + FlowTransaction, + InteractionTemplate, + ManagedProcessOutput, + ParsedInteractionOrError, + ManagedKeyPair, +} from "@onflowser/api"; import { useServiceRegistry } from "./contexts/service-registry.context"; -import { InteractionDefinition } from './interactions/core/core-types'; +import { InteractionDefinition } from "./interactions/core/core-types"; import { useEffect } from "react"; export function useGetAccounts(): SWRResponse { @@ -24,7 +28,7 @@ export function useGetAccounts(): SWRResponse { } export function useGetAccount( - id: string + id: string, ): SWRResponse { const { accountIndex } = useServiceRegistry(); return useSWR(`account/${id}`, () => accountIndex.findOneById(id), { @@ -33,7 +37,7 @@ export function useGetAccount( } export function useGetKeysByAccount( - address: string + address: string, ): SWRResponse { const { accountKeyIndex } = useServiceRegistry(); return useSWR( @@ -44,24 +48,19 @@ export function useGetKeysByAccount( .then((res) => res.filter((e) => e.address === address)), { refreshInterval: 1000, - } + }, ); } export function useGetManagedKeys(): SWRResponse { const { walletService } = useServiceRegistry(); - return useSWR( - `managed-keys`, - () => - walletService.listKeyPairs(), - { - refreshInterval: 1000, - } - ); + return useSWR(`managed-keys`, () => walletService.listKeyPairs(), { + refreshInterval: 1000, + }); } export function useGetStoragesByAccount( - id: string + id: string, ): SWRResponse { const { accountStorageIndex } = useServiceRegistry(); return useSWR( @@ -72,12 +71,12 @@ export function useGetStoragesByAccount( .then((res) => res.filter((e) => e.address === id)), { refreshInterval: 1000, - } + }, ); } export function useGetContractsByAccount( - address: string + address: string, ): SWRResponse { const { contractIndex } = useServiceRegistry(); return useSWR( @@ -88,7 +87,7 @@ export function useGetContractsByAccount( .then((res) => res.filter((e) => e.address === address)), { refreshInterval: 1000, - } + }, ); } @@ -100,7 +99,7 @@ export function useGetTransactions(): SWRResponse { } export function useGetTransaction( - id: string + id: string, ): SWRResponse { const { transactionsIndex } = useServiceRegistry(); return useSWR(`transaction/${id}`, () => transactionsIndex.findOneById(id), { @@ -109,7 +108,7 @@ export function useGetTransaction( } export function useGetTransactionsByAccount( - address: string + address: string, ): SWRResponse { const { transactionsIndex } = useServiceRegistry(); return useSWR( @@ -122,17 +121,17 @@ export function useGetTransactionsByAccount( (e) => e.authorizers.includes(address) || e.payer === address || - e.proposalKey.address === address - ) + e.proposalKey.address === address, + ), ), { refreshInterval: 1000, - } + }, ); } export function useGetTransactionsByBlock( - blockId: string + blockId: string, ): SWRResponse { const { transactionsIndex } = useServiceRegistry(); return useSWR( @@ -143,7 +142,7 @@ export function useGetTransactionsByBlock( .then((res) => res.filter((e) => e.blockId === blockId)), { refreshInterval: 1000, - } + }, ); } @@ -172,7 +171,7 @@ export function useGetContracts(): SWRResponse { } export function useGetContract( - id: string + id: string, ): SWRResponse { const { contractIndex } = useServiceRegistry(); @@ -190,7 +189,7 @@ export function useGetEvents(): SWRResponse { } export function useGetEventsByTransaction( - id: string + id: string, ): SWRResponse { const { eventsIndex } = useServiceRegistry(); @@ -202,23 +201,21 @@ export function useGetEventsByTransaction( .then((res) => res.filter((e) => e.transactionId === id)), { refreshInterval: 1000, - } + }, ); } export function useGetOutputsByProcess( - id: string + id: string, ): SWRResponse { const { processManagerService } = useServiceRegistry(); return useSWR( `${id}/outputs`, - () => - processManagerService - .findAllLogsByProcessId(id), + () => processManagerService.findAllLogsByProcessId(id), { refreshInterval: 1000, - } + }, ); } @@ -241,11 +238,11 @@ export function useGetStateSnapshots(): SWRResponse { export function useGetWorkspaces(): SWRResponse { const { workspaceService } = useServiceRegistry(); - return useSWR("workspaces", () =>workspaceService.list()); + return useSWR("workspaces", () => workspaceService.list()); } export function useGetWorkspace( - id: string + id: string, ): SWRResponse { const { workspaceService } = useServiceRegistry(); @@ -260,18 +257,22 @@ export function useGetFlowCliInfo(): SWRResponse { export function useGetAddressIndex(address: string): SWRResponse { const { flowService } = useServiceRegistry(); - return useSWR(`account-index/${address}`, () => flowService.getIndexOfAddress(address)); + return useSWR(`account-index/${address}`, () => + flowService.getIndexOfAddress(address), + ); } export function useGetParsedInteraction( - request: InteractionDefinition + request: InteractionDefinition, ): SWRResponse { const { interactionsService } = useServiceRegistry(); // We are not using `sourceCode` as the cache key, // to avoid the flickering UI effect that's caused // by undefined parsed interaction every time the source code changes. - const state = useSWR(`parsed-interaction/${request.id}`, () => (interactionsService.parse(request.code))); + const state = useSWR(`parsed-interaction/${request.id}`, () => + interactionsService.parse(request.code), + ); useEffect(() => { state.mutate(); @@ -280,13 +281,19 @@ export function useGetParsedInteraction( return state; } -export function useGetInteractionTemplates(): SWRResponse { +export function useGetInteractionTemplates(): SWRResponse< + InteractionTemplate[] +> { const { interactionsService } = useServiceRegistry(); - return useSWR(`interaction-templates`, () => (interactionsService.getTemplates())); + return useSWR(`interaction-templates`, () => + interactionsService.getTemplates(), + ); } -export function useGetFlowserUsageRequirements(): SWRResponse { +export function useGetFlowserUsageRequirements(): SWRResponse< + FlowserUsageRequirement[] +> { // TODO(restructure): Implement and move to electron dir only - return useSWR(`usage-requirements`, () => ([])); + return useSWR(`usage-requirements`, () => []); } diff --git a/packages/ui/src/assets.d.ts b/packages/ui/src/assets.d.ts index 251085e97..989eb5eaa 100644 --- a/packages/ui/src/assets.d.ts +++ b/packages/ui/src/assets.d.ts @@ -1,7 +1,7 @@ type Styles = Record; -declare module '*.svg' { - import React = require('react'); +declare module "*.svg" { + import React = require("react"); export const ReactComponent: React.FC>; @@ -9,27 +9,27 @@ declare module '*.svg' { export default content; } -declare module '*.png' { +declare module "*.png" { const content: string; export default content; } -declare module '*.jpg' { +declare module "*.jpg" { const content: string; export default content; } -declare module '*.scss' { +declare module "*.scss" { const content: Styles; export default content; } -declare module '*.sass' { +declare module "*.sass" { const content: Styles; export default content; } -declare module '*.css' { +declare module "*.css" { const content: Styles; export default content; } diff --git a/packages/ui/src/blocks/BlocksTable/BlocksTable.module.scss b/packages/ui/src/blocks/BlocksTable/BlocksTable.module.scss index ae695e7db..c6c654f08 100644 --- a/packages/ui/src/blocks/BlocksTable/BlocksTable.module.scss +++ b/packages/ui/src/blocks/BlocksTable/BlocksTable.module.scss @@ -1,11 +1,10 @@ -@import '../../styles/spacings'; -@import '../../styles/animations'; +@import "../../styles/spacings"; +@import "../../styles/animations"; .card { display: flex; justify-content: space-between; - & > div { display: flex; flex-direction: column; @@ -26,7 +25,6 @@ } .tableRow { - .blockHeight { flex: 0.8; } @@ -36,19 +34,18 @@ } .blockSeals { - flex: 0.8 + flex: 0.8; } .signatures { - flex: 0.8 + flex: 0.8; } .snapshot { - flex: 1.2 + flex: 1.2; } .time { - flex: 0.8 + flex: 0.8; } - } diff --git a/packages/ui/src/blocks/BlocksTable/BlocksTable.tsx b/packages/ui/src/blocks/BlocksTable/BlocksTable.tsx index bbb66c96b..e07f0d5a3 100644 --- a/packages/ui/src/blocks/BlocksTable/BlocksTable.tsx +++ b/packages/ui/src/blocks/BlocksTable/BlocksTable.tsx @@ -54,7 +54,7 @@ export const BlocksTable: FunctionComponent = (props) => { ), }), ], - [blocks] + [blocks], ); return ( diff --git a/packages/ui/src/common/buttons/ActionButton/ActionButton.module.scss b/packages/ui/src/common/buttons/ActionButton/ActionButton.module.scss index 9a78238da..04326f081 100644 --- a/packages/ui/src/common/buttons/ActionButton/ActionButton.module.scss +++ b/packages/ui/src/common/buttons/ActionButton/ActionButton.module.scss @@ -1,6 +1,6 @@ -@import '../../../styles/spacings'; -@import '../../../styles/colors'; -@import '../../../styles/typography'; +@import "../../../styles/spacings"; +@import "../../../styles/colors"; +@import "../../../styles/typography"; .root { display: flex; @@ -9,7 +9,7 @@ &:hover { .header { - color: $grey + color: $grey; } .icon { transform: scale(1.05); @@ -44,5 +44,4 @@ height: 100%; } } - } diff --git a/packages/ui/src/common/buttons/Button/Button.module.scss b/packages/ui/src/common/buttons/Button/Button.module.scss index 597a03d3f..8d299a4f6 100644 --- a/packages/ui/src/common/buttons/Button/Button.module.scss +++ b/packages/ui/src/common/buttons/Button/Button.module.scss @@ -26,7 +26,8 @@ left: 0; right: 0; bottom: 0; - &, & > * { + &, + & > * { display: flex; justify-content: center; align-items: center; diff --git a/packages/ui/src/common/buttons/Button/Button.tsx b/packages/ui/src/common/buttons/Button/Button.tsx index 8cc8a549b..46ab51e7f 100644 --- a/packages/ui/src/common/buttons/Button/Button.tsx +++ b/packages/ui/src/common/buttons/Button/Button.tsx @@ -34,7 +34,7 @@ const Button: FunctionComponent = ({ { [classes.disabled]: disabled, [classes.outlined]: outlined, - } + }, )} > {loading && ( diff --git a/packages/ui/src/common/buttons/IconButton/IconButton.module.scss b/packages/ui/src/common/buttons/IconButton/IconButton.module.scss index c3fc791ab..1e2a4c99b 100644 --- a/packages/ui/src/common/buttons/IconButton/IconButton.module.scss +++ b/packages/ui/src/common/buttons/IconButton/IconButton.module.scss @@ -1,10 +1,11 @@ -@import '../../../styles/spacings'; +@import "../../../styles/spacings"; .root { position: relative; padding: $spacing-s $spacing-base; - .before, .after { + .before, + .after { display: flex; align-items: center; } @@ -22,5 +23,4 @@ right: $spacing-l; top: 40%; } - } diff --git a/packages/ui/src/common/buttons/RadioButton/RadioButton.module.scss b/packages/ui/src/common/buttons/RadioButton/RadioButton.module.scss index b018069b5..8f6ccb211 100644 --- a/packages/ui/src/common/buttons/RadioButton/RadioButton.module.scss +++ b/packages/ui/src/common/buttons/RadioButton/RadioButton.module.scss @@ -1,7 +1,6 @@ -@import '../../../styles/colors'; +@import "../../../styles/colors"; .root { - width: 16px; height: 16px; border: 2px solid $gray-30; @@ -33,5 +32,4 @@ background-color: $color-grey; } } - } diff --git a/packages/ui/src/common/buttons/SimpleButton/SimpleButton.module.scss b/packages/ui/src/common/buttons/SimpleButton/SimpleButton.module.scss index 7d87c5689..92aff3707 100644 --- a/packages/ui/src/common/buttons/SimpleButton/SimpleButton.module.scss +++ b/packages/ui/src/common/buttons/SimpleButton/SimpleButton.module.scss @@ -1,5 +1,5 @@ -@import '../../../styles/colors'; -@import '../../../styles/typography'; +@import "../../../styles/colors"; +@import "../../../styles/typography"; .root { background: none; diff --git a/packages/ui/src/common/buttons/ToggleButton/ToggleButton.module.scss b/packages/ui/src/common/buttons/ToggleButton/ToggleButton.module.scss index b43e34936..335d57ba6 100644 --- a/packages/ui/src/common/buttons/ToggleButton/ToggleButton.module.scss +++ b/packages/ui/src/common/buttons/ToggleButton/ToggleButton.module.scss @@ -1,5 +1,5 @@ -@import '../../../styles/animations'; -@import '../../../styles/colors'; +@import "../../../styles/animations"; +@import "../../../styles/colors"; .root { display: flex; @@ -9,7 +9,7 @@ cursor: pointer; width: 38px; height: 23px; - background-color: #2E364B; + background-color: #2e364b; border-radius: 38%; diff --git a/packages/ui/src/common/cards/BaseCard/BaseCard.module.scss b/packages/ui/src/common/cards/BaseCard/BaseCard.module.scss index 8ac36e42e..edb6480c9 100644 --- a/packages/ui/src/common/cards/BaseCard/BaseCard.module.scss +++ b/packages/ui/src/common/cards/BaseCard/BaseCard.module.scss @@ -1,8 +1,8 @@ -@import '../../../styles/colors'; -@import '../../../styles/rules'; -@import '../../../styles/spacings'; -@import '../../../styles/animations'; -@import '../../../styles/scrollbars'; +@import "../../../styles/colors"; +@import "../../../styles/rules"; +@import "../../../styles/spacings"; +@import "../../../styles/animations"; +@import "../../../styles/scrollbars"; .root { border-radius: $border-radius-card; @@ -13,7 +13,6 @@ @include hiddenScrollbars(); &.introAnimation { - @include addNewContentAnimation(.4s); + @include addNewContentAnimation(0.4s); } - } diff --git a/packages/ui/src/common/code/CadenceEditor/cadence-editor.css b/packages/ui/src/common/code/CadenceEditor/cadence-editor.css index 44db322e5..8eec997f2 100644 --- a/packages/ui/src/common/code/CadenceEditor/cadence-editor.css +++ b/packages/ui/src/common/code/CadenceEditor/cadence-editor.css @@ -1,21 +1,21 @@ /* Main editor container */ .cadence-editor { - width: 100%; - height: 100%; - background: #272B32; + width: 100%; + height: 100%; + background: #272b32; } .cadence-editor .cm-editor { - background: none; - height: 100%; + background: none; + height: 100%; } .cm-focused { - outline: none !important; + outline: none !important; } /* Line number container */ .cadence-editor .cm-gutters { - /* Default background color */ - background: #272B32; + /* Default background color */ + background: #272b32; } diff --git a/packages/ui/src/common/code/JsonView/JsonView.module.scss b/packages/ui/src/common/code/JsonView/JsonView.module.scss index 51fb0ead2..5b6d808ce 100644 --- a/packages/ui/src/common/code/JsonView/JsonView.module.scss +++ b/packages/ui/src/common/code/JsonView/JsonView.module.scss @@ -8,5 +8,5 @@ height: 100%; width: 100%; - @include hiddenScrollbars() + @include hiddenScrollbars(); } diff --git a/packages/ui/src/common/errors/ErrorMessage.module.scss b/packages/ui/src/common/errors/ErrorMessage.module.scss index 569d1c33f..30bfe0c34 100644 --- a/packages/ui/src/common/errors/ErrorMessage.module.scss +++ b/packages/ui/src/common/errors/ErrorMessage.module.scss @@ -1,7 +1,7 @@ -@import '../../styles/spacings'; -@import '../../styles/colors'; -@import '../../styles/typography'; -@import '../../styles/animations'; +@import "../../styles/spacings"; +@import "../../styles/colors"; +@import "../../styles/typography"; +@import "../../styles/animations"; .root { display: flex; diff --git a/packages/ui/src/common/icons/CaretIcon/CaretIcon.module.scss b/packages/ui/src/common/icons/CaretIcon/CaretIcon.module.scss index 1a3c7a7cf..0d05852d3 100644 --- a/packages/ui/src/common/icons/CaretIcon/CaretIcon.module.scss +++ b/packages/ui/src/common/icons/CaretIcon/CaretIcon.module.scss @@ -1,23 +1,23 @@ -@import '../../../styles/animations'; -@import '../../../styles/colors'; +@import "../../../styles/animations"; +@import "../../../styles/colors"; .root { - @include flipVertical(.2s, 0deg); + @include flipVertical(0.2s, 0deg); fill: $blue; stroke: $blue; cursor: pointer; &.isOpen { - @include flipVertical(.2s); + @include flipVertical(0.2s); fill: $yellow; stroke: $yellow; } &.inverted { - @include flipVertical(.2s); + @include flipVertical(0.2s); &.isOpen { - @include flipVertical(.2s, 0deg); + @include flipVertical(0.2s, 0deg); } } } diff --git a/packages/ui/src/common/inputs/Input/Input.module.scss b/packages/ui/src/common/inputs/Input/Input.module.scss index dfcfe73e0..e17dd1341 100644 --- a/packages/ui/src/common/inputs/Input/Input.module.scss +++ b/packages/ui/src/common/inputs/Input/Input.module.scss @@ -1,7 +1,7 @@ -@import '../../../styles/rules'; -@import '../../../styles/colors'; -@import '../../../styles/typography'; -@import '../../../styles/spacings'; +@import "../../../styles/rules"; +@import "../../../styles/colors"; +@import "../../../styles/typography"; +@import "../../../styles/spacings"; .root { border: 1px solid transparent; diff --git a/packages/ui/src/common/inputs/SelectInput/SelectInput.module.scss b/packages/ui/src/common/inputs/SelectInput/SelectInput.module.scss index c31efaac8..04032d5d0 100644 --- a/packages/ui/src/common/inputs/SelectInput/SelectInput.module.scss +++ b/packages/ui/src/common/inputs/SelectInput/SelectInput.module.scss @@ -1,7 +1,7 @@ -@import '../../../styles/rules'; -@import '../../../styles/colors'; -@import '../../../styles/typography'; -@import '../../../styles/spacings'; +@import "../../../styles/rules"; +@import "../../../styles/colors"; +@import "../../../styles/typography"; +@import "../../../styles/spacings"; .root { border: 1px solid transparent; diff --git a/packages/ui/src/common/layouts/ProjectLayout/ProjectLayout.module.scss b/packages/ui/src/common/layouts/ProjectLayout/ProjectLayout.module.scss index 5d53bc5a3..b6f0dfa5a 100644 --- a/packages/ui/src/common/layouts/ProjectLayout/ProjectLayout.module.scss +++ b/packages/ui/src/common/layouts/ProjectLayout/ProjectLayout.module.scss @@ -51,5 +51,4 @@ $side-nav-width: 80px; bottom: 0; } } - } diff --git a/packages/ui/src/common/loaders/FullScreenLoading/FullScreenLoading.module.scss b/packages/ui/src/common/loaders/FullScreenLoading/FullScreenLoading.module.scss index 3fb5924b3..4852a69e1 100644 --- a/packages/ui/src/common/loaders/FullScreenLoading/FullScreenLoading.module.scss +++ b/packages/ui/src/common/loaders/FullScreenLoading/FullScreenLoading.module.scss @@ -1,7 +1,7 @@ -@import '../../../styles/spacings'; -@import '../../../styles/typography'; -@import '../../../styles/animations'; -@import '../../../styles/colors'; +@import "../../../styles/spacings"; +@import "../../../styles/typography"; +@import "../../../styles/animations"; +@import "../../../styles/colors"; .container { @include fadeInAnimation(0.4s); @@ -18,6 +18,6 @@ .text { margin-top: $spacing-l; font-size: $font-size-xlarge; - color: $gray-10 + color: $gray-10; } } diff --git a/packages/ui/src/common/loaders/Spinner/Spinner.module.scss b/packages/ui/src/common/loaders/Spinner/Spinner.module.scss index ee465a346..777fb46fe 100644 --- a/packages/ui/src/common/loaders/Spinner/Spinner.module.scss +++ b/packages/ui/src/common/loaders/Spinner/Spinner.module.scss @@ -1,4 +1,4 @@ -@import '../../../styles/animations'; +@import "../../../styles/animations"; // Styles were taken from: https://ui-snippets.dev .spinner { diff --git a/packages/ui/src/common/misc/BaseBadge/BaseBadge.module.scss b/packages/ui/src/common/misc/BaseBadge/BaseBadge.module.scss index 1283427e0..ee3b04f61 100644 --- a/packages/ui/src/common/misc/BaseBadge/BaseBadge.module.scss +++ b/packages/ui/src/common/misc/BaseBadge/BaseBadge.module.scss @@ -1,5 +1,5 @@ -@import '../../../styles/colors'; -@import '../../../styles/spacings'; +@import "../../../styles/colors"; +@import "../../../styles/spacings"; .root { border: 1px solid $gray-10; diff --git a/packages/ui/src/common/misc/BaseTable/BaseTable.module.scss b/packages/ui/src/common/misc/BaseTable/BaseTable.module.scss index 9dd7426b8..1b9431960 100644 --- a/packages/ui/src/common/misc/BaseTable/BaseTable.module.scss +++ b/packages/ui/src/common/misc/BaseTable/BaseTable.module.scss @@ -34,5 +34,4 @@ overflow: hidden; } } - } diff --git a/packages/ui/src/common/misc/BaseTable/BaseTable.tsx b/packages/ui/src/common/misc/BaseTable/BaseTable.tsx index c2335235f..49d5d0632 100644 --- a/packages/ui/src/common/misc/BaseTable/BaseTable.tsx +++ b/packages/ui/src/common/misc/BaseTable/BaseTable.tsx @@ -65,7 +65,7 @@ export function BaseTable({ className={classNames( classes.tableRow, classes.headerRow, - headerRowClass + headerRowClass, )} key={headerGroup.id} > @@ -76,12 +76,12 @@ export function BaseTable({ > {flexRender( header.column.columnDef.header, - header.getContext() + header.getContext(), )}
    ))} - ) + ), )} {table.getRowModel().rows.length === 0 && ( ({ classes.tableRow, typeof bodyRowClass === "function" ? bodyRowClass(row) - : bodyRowClass + : bodyRowClass, )} key={row.id} showIntroAnimation={false} @@ -113,7 +113,7 @@ export function BaseTable({
    ))} - ) + ), )}
    ); diff --git a/packages/ui/src/common/misc/Breadcrumbs/Breadcrumbs.tsx b/packages/ui/src/common/misc/Breadcrumbs/Breadcrumbs.tsx index 4270d6063..eba5fc67d 100644 --- a/packages/ui/src/common/misc/Breadcrumbs/Breadcrumbs.tsx +++ b/packages/ui/src/common/misc/Breadcrumbs/Breadcrumbs.tsx @@ -52,7 +52,7 @@ export function Breadcrumbs(props: BreadcrumbsProps): ReactElement | null { (match): Breadcrumb => ({ to: match.pathname, label: match.handle.crumbName, - }) + }), ); if (breadcrumbs.length === 0) { diff --git a/packages/ui/src/common/misc/Callout/Callout.module.scss b/packages/ui/src/common/misc/Callout/Callout.module.scss index 31a62d6f4..92caee495 100644 --- a/packages/ui/src/common/misc/Callout/Callout.module.scss +++ b/packages/ui/src/common/misc/Callout/Callout.module.scss @@ -14,7 +14,7 @@ column-gap: $spacing-s; align-items: center; .icon * { - fill: $blue + fill: $blue; } } } diff --git a/packages/ui/src/common/misc/LineSeparator/LineSeparator.tsx b/packages/ui/src/common/misc/LineSeparator/LineSeparator.tsx index bc0ac605f..77e73e805 100644 --- a/packages/ui/src/common/misc/LineSeparator/LineSeparator.tsx +++ b/packages/ui/src/common/misc/LineSeparator/LineSeparator.tsx @@ -28,7 +28,7 @@ function isVerticalProps(props: LineSeparatorProps): props is VerticalProps { } function isHorizontalProps( - props: LineSeparatorProps + props: LineSeparatorProps, ): props is HorizontalProps { return "horizontal" in props; } diff --git a/packages/ui/src/common/misc/Value/Value.tsx b/packages/ui/src/common/misc/Value/Value.tsx index ca8d60bf4..1544662b8 100644 --- a/packages/ui/src/common/misc/Value/Value.tsx +++ b/packages/ui/src/common/misc/Value/Value.tsx @@ -18,7 +18,7 @@ function Value({ children, className, style, variant = "normal" }: ValueProps) { className={classNames( classes.root, getClassForVariant(variant), - className + className, )} > {children} diff --git a/packages/ui/src/common/overlays/dialogs/action/ActionDialog.module.scss b/packages/ui/src/common/overlays/dialogs/action/ActionDialog.module.scss index 345a16d09..8f6d6dd6b 100644 --- a/packages/ui/src/common/overlays/dialogs/action/ActionDialog.module.scss +++ b/packages/ui/src/common/overlays/dialogs/action/ActionDialog.module.scss @@ -9,7 +9,7 @@ align-items: center; color: $gray-10; padding: $spacing-l * 3 $spacing-l * 6; - @include fadeInAnimation(.5s); + @include fadeInAnimation(0.5s); h3 { margin-top: $spacing-base * 2; diff --git a/packages/ui/src/common/overlays/dialogs/base/BaseDialog.module.scss b/packages/ui/src/common/overlays/dialogs/base/BaseDialog.module.scss index d95e57442..f59b4a34a 100644 --- a/packages/ui/src/common/overlays/dialogs/base/BaseDialog.module.scss +++ b/packages/ui/src/common/overlays/dialogs/base/BaseDialog.module.scss @@ -1,5 +1,5 @@ -@import '../../../../styles/colors'; -@import '../../../../styles/rules'; +@import "../../../../styles/colors"; +@import "../../../../styles/rules"; .root { z-index: 1001; diff --git a/packages/ui/src/common/overlays/dialogs/snapshot/SnapshotDialog.tsx b/packages/ui/src/common/overlays/dialogs/snapshot/SnapshotDialog.tsx index 2e03d5c21..80674958f 100644 --- a/packages/ui/src/common/overlays/dialogs/snapshot/SnapshotDialog.tsx +++ b/packages/ui/src/common/overlays/dialogs/snapshot/SnapshotDialog.tsx @@ -37,7 +37,7 @@ export const SnapshotDialog: FC = ({ show, setShow }) => { handleError(e); toast( "Make sure you are using the '--snapshot' flag when running emulator", - { duration: 4000 } + { duration: 4000 }, ); } finally { setLoading(false); diff --git a/packages/ui/src/common/status/ErrorMessage.module.scss b/packages/ui/src/common/status/ErrorMessage.module.scss index 19437733b..632e4adf3 100644 --- a/packages/ui/src/common/status/ErrorMessage.module.scss +++ b/packages/ui/src/common/status/ErrorMessage.module.scss @@ -2,5 +2,5 @@ .root { overflow: scroll; - @include hiddenScrollbars() + @include hiddenScrollbars(); } diff --git a/packages/ui/src/common/status/ErrorMessage.tsx b/packages/ui/src/common/status/ErrorMessage.tsx index 0faf7b896..af9ef9bd0 100644 --- a/packages/ui/src/common/status/ErrorMessage.tsx +++ b/packages/ui/src/common/status/ErrorMessage.tsx @@ -51,7 +51,7 @@ type UnsupportedImportSyntaxNoticeProps = { }; function UnsupportedImportSyntaxNotice( - props: UnsupportedImportSyntaxNoticeProps + props: UnsupportedImportSyntaxNoticeProps, ) { const isUnsupportedSyntax = props.cadenceSource .split("\n") diff --git a/packages/ui/src/common/status/ExecutionStatus.tsx b/packages/ui/src/common/status/ExecutionStatus.tsx index 9d4c83924..da16adb1a 100644 --- a/packages/ui/src/common/status/ExecutionStatus.tsx +++ b/packages/ui/src/common/status/ExecutionStatus.tsx @@ -7,7 +7,7 @@ import { ReactComponent as UnknownIcon } from "../icons/assets/circle-question-m import { ReactComponent as PendingIcon } from "../icons/assets/pending-tx-icon.svg"; import { ReactComponent as FinalizedIcon } from "../icons/assets/finalised-tx-icon.svg"; import { ReactComponent as ExecutedIcon } from "../icons/assets/executed-tx-icon.svg"; -import { ExecutionStatusCode, TransactionStatus } from '@onflowser/api'; +import { ExecutionStatusCode, TransactionStatus } from "@onflowser/api"; export type ExecutionStatusProps = { status: TransactionStatus | undefined; diff --git a/packages/ui/src/common/status/TransactionStatusBadge.module.scss b/packages/ui/src/common/status/TransactionStatusBadge.module.scss index d42b32dc1..6689afb47 100644 --- a/packages/ui/src/common/status/TransactionStatusBadge.module.scss +++ b/packages/ui/src/common/status/TransactionStatusBadge.module.scss @@ -1,6 +1,6 @@ -@import '../../styles/spacings'; -@import '../../styles/typography'; -@import '../../styles/colors'; +@import "../../styles/spacings"; +@import "../../styles/typography"; +@import "../../styles/colors"; .root { font-size: $font-size-small; diff --git a/packages/ui/src/common/tabs/BaseTabs/BaseTabs.module.scss b/packages/ui/src/common/tabs/BaseTabs/BaseTabs.module.scss index 2723b5562..21d84b69c 100644 --- a/packages/ui/src/common/tabs/BaseTabs/BaseTabs.module.scss +++ b/packages/ui/src/common/tabs/BaseTabs/BaseTabs.module.scss @@ -1,7 +1,7 @@ -@import '../../../styles/spacings'; -@import '../../../styles/typography'; -@import '../../../styles/colors'; -@import '../../../styles/scrollbars'; +@import "../../../styles/spacings"; +@import "../../../styles/typography"; +@import "../../../styles/colors"; +@import "../../../styles/scrollbars"; .root { display: flex; diff --git a/packages/ui/src/common/tabs/StyledTabs/StyledTabs.module.scss b/packages/ui/src/common/tabs/StyledTabs/StyledTabs.module.scss index 33559e22c..0094480ce 100644 --- a/packages/ui/src/common/tabs/StyledTabs/StyledTabs.module.scss +++ b/packages/ui/src/common/tabs/StyledTabs/StyledTabs.module.scss @@ -21,7 +21,8 @@ overflow-x: scroll; } -.tabWrapper, .inactiveTab { +.tabWrapper, +.inactiveTab { background: $gray-110; } diff --git a/packages/ui/src/common/tabs/StyledTabs/StyledTabs.tsx b/packages/ui/src/common/tabs/StyledTabs/StyledTabs.tsx index 58cbb4986..ca5bcbbdb 100644 --- a/packages/ui/src/common/tabs/StyledTabs/StyledTabs.tsx +++ b/packages/ui/src/common/tabs/StyledTabs/StyledTabs.tsx @@ -9,11 +9,20 @@ export function StyledTabs(props: StyledTabsProps): ReactElement { return ( ); diff --git a/packages/ui/src/common/time/DateDisplay/DateDisplay.tsx b/packages/ui/src/common/time/DateDisplay/DateDisplay.tsx index 724fd926c..c54244405 100644 --- a/packages/ui/src/common/time/DateDisplay/DateDisplay.tsx +++ b/packages/ui/src/common/time/DateDisplay/DateDisplay.tsx @@ -7,6 +7,9 @@ type DateDisplayProps = { }; export function DateDisplay(props: DateDisplayProps): ReactElement { - const formattedDate = typeof props.date === "string" ? props.date : props.date.toISOString() - return {TextUtils.longDate(formattedDate)}; + const formattedDate = + typeof props.date === "string" ? props.date : props.date.toISOString(); + return ( + {TextUtils.longDate(formattedDate)} + ); } diff --git a/packages/ui/src/contexts/platform-adapter.context.tsx b/packages/ui/src/contexts/platform-adapter.context.tsx index 5fff4cf04..503218a59 100644 --- a/packages/ui/src/contexts/platform-adapter.context.tsx +++ b/packages/ui/src/contexts/platform-adapter.context.tsx @@ -9,9 +9,7 @@ export type FilePicker = { pickDirectory?: () => Promise; }; -const FilePickerAdapterContext = createContext( - undefined as never -); +const FilePickerAdapterContext = createContext(undefined as never); export type FilePickerProviderProps = FilePicker & { children: ReactNode; diff --git a/packages/ui/src/contexts/service-registry.context.tsx b/packages/ui/src/contexts/service-registry.context.tsx index f4603b273..02a5131f0 100644 --- a/packages/ui/src/contexts/service-registry.context.tsx +++ b/packages/ui/src/contexts/service-registry.context.tsx @@ -1,16 +1,21 @@ import { createContext, ReactNode, useContext } from "react"; import { FclArgumentWithMetadata, - FlowAccount, FlowAccountKey, + FlowAccount, + FlowAccountKey, FlowAccountStorage, - FlowBlock, FlowCliInfo, + FlowBlock, + FlowCliInfo, FlowContract, FlowEvent, FlowserWorkspace, FlowStateSnapshot, - FlowTransaction, InteractionTemplate, - IResourceIndexReader, ManagedProcessOutput, ParsedInteractionOrError, - ManagedKeyPair + FlowTransaction, + InteractionTemplate, + IResourceIndexReader, + ManagedProcessOutput, + ParsedInteractionOrError, + ManagedKeyPair, } from "@onflowser/api"; export interface ISnapshotService { @@ -36,7 +41,7 @@ export interface IInteractionService { getTemplates(): Promise; } -export type SendTransactionRequest = { +export type SendTransactionRequest = { // TODO(web): These should probably be of type FlowAuthorizationFunction when generalizing for web version cadence: string; proposerAddress: string; @@ -51,7 +56,9 @@ export type ExecuteScriptRequest = { }; export interface IFlowService { - sendTransaction(request: SendTransactionRequest): Promise<{ transactionId: string }>; + sendTransaction( + request: SendTransactionRequest, + ): Promise<{ transactionId: string }>; executeScript(request: ExecuteScriptRequest): Promise; getIndexOfAddress(address: string): Promise; getFlowCliInfo(): Promise; @@ -95,7 +102,7 @@ type ServiceRegistry = { }; const ServiceRegistryContext = createContext( - undefined as never + undefined as never, ); type ServiceRegistryProviderProps = { diff --git a/packages/ui/src/contexts/snapshots.context.tsx b/packages/ui/src/contexts/snapshots.context.tsx index 2f444f731..ccc23d290 100644 --- a/packages/ui/src/contexts/snapshots.context.tsx +++ b/packages/ui/src/contexts/snapshots.context.tsx @@ -23,7 +23,7 @@ export type SnapshotsManager = { }; const SnapshotsManagerContext = createContext( - {} as SnapshotsManager + {} as SnapshotsManager, ); export function SnapshotsManagerProvider({ @@ -42,7 +42,7 @@ export function SnapshotsManagerProvider({ const snapshotLookupByBlockId = useMemo( () => new Map(stateSnapshots?.map((snapshot) => [snapshot.blockId, snapshot])), - [stateSnapshots] + [stateSnapshots], ); const [showSnapshotModal, setShowSnapshotModal] = useState(false); @@ -55,7 +55,7 @@ export function SnapshotsManagerProvider({ "Snapshots can only be created when enabling the 'snapshot' option in settings", { duration: 5000, - } + }, ); } else { setShowSnapshotModal(true); @@ -66,7 +66,7 @@ export function SnapshotsManagerProvider({ const isSnapshotEnabled = currentWorkspace?.emulator?.snapshot; if (!isSnapshotEnabled) { toast.error( - "Can't jump to block, because 'snapshot' option is not enabled in project settings" + "Can't jump to block, because 'snapshot' option is not enabled in project settings", ); return; } @@ -92,7 +92,7 @@ export function SnapshotsManagerProvider({ try { await snapshotService.jumpTo(snapshot.id); toast.success( - `Moved to block: ${FlowUtils.getShortedBlockId(snapshot.blockId)}` + `Moved to block: ${FlowUtils.getShortedBlockId(snapshot.blockId)}`, ); } catch (e) { handleError(e); @@ -134,7 +134,7 @@ export function SnapshotsManagerProvider({ try { await snapshotService.rollbackToHeight(targetBlock.height); toast.success( - `Moved to block: ${FlowUtils.getShortedBlockId(targetBlock.id)}` + `Moved to block: ${FlowUtils.getShortedBlockId(targetBlock.id)}`, ); } catch (e) { handleError(e); @@ -177,7 +177,7 @@ export function SnapshotsManagerProvider({ rollbackToBlock(targetBlock); }, - [currentWorkspace, blocks, snapshotLookupByBlockId] + [currentWorkspace, blocks, snapshotLookupByBlockId], ); return ( diff --git a/packages/ui/src/contexts/workspace.context.tsx b/packages/ui/src/contexts/workspace.context.tsx index c9d23d1d7..b0ba04d2e 100644 --- a/packages/ui/src/contexts/workspace.context.tsx +++ b/packages/ui/src/contexts/workspace.context.tsx @@ -15,7 +15,7 @@ export type WorkspaceManager = { closeWorkspace: () => Promise; openWorkspace: ( workspace: FlowserWorkspace, - options?: OpenWorkspaceOptions + options?: OpenWorkspaceOptions, ) => Promise; removeWorkspace: (workspace: FlowserWorkspace) => void; updateWorkspace: (workspace: FlowserWorkspace) => Promise; @@ -25,7 +25,7 @@ export type WorkspaceManager = { type OpenWorkspaceOptions = { replaceCurrentPage: boolean }; const WorkspaceManagerContext = createContext( - {} as WorkspaceManager + {} as WorkspaceManager, ); export function WorkspaceManagerProvider({ @@ -87,7 +87,7 @@ export function WorkspaceManagerProvider({ async function openWorkspace( project: FlowserWorkspace, - options?: OpenWorkspaceOptions + options?: OpenWorkspaceOptions, ) { try { await workspaceService.open(project.id); @@ -105,16 +105,16 @@ export function WorkspaceManagerProvider({ } async function createWorkspace( - workspace: FlowserWorkspace + workspace: FlowserWorkspace, ): Promise { - await workspaceService.create(workspace) + await workspaceService.create(workspace); return workspace; } async function updateWorkspace( - workspace: FlowserWorkspace + workspace: FlowserWorkspace, ): Promise { - await workspaceService.update(workspace) + await workspaceService.update(workspace); return workspace; } diff --git a/packages/ui/src/contracts/ContractDetails/ContractDetails.tsx b/packages/ui/src/contracts/ContractDetails/ContractDetails.tsx index ac10402dd..ff1577ccd 100644 --- a/packages/ui/src/contracts/ContractDetails/ContractDetails.tsx +++ b/packages/ui/src/contracts/ContractDetails/ContractDetails.tsx @@ -17,7 +17,7 @@ type ContractDetailsProps = { }; export const ContractDetails: FunctionComponent = ( - props + props, ) => { const { contractId } = props; const { isLoading, data: contract } = useGetContract(contractId); @@ -56,7 +56,7 @@ export const ContractDetails: FunctionComponent = ( { label: "Created date", value: , - } + }, ); return ( diff --git a/packages/ui/src/contracts/ContractsTable/ContractsTable.tsx b/packages/ui/src/contracts/ContractsTable/ContractsTable.tsx index a9324fb76..c05f7db29 100644 --- a/packages/ui/src/contracts/ContractsTable/ContractsTable.tsx +++ b/packages/ui/src/contracts/ContractsTable/ContractsTable.tsx @@ -80,7 +80,7 @@ export function ContractsTable(props: ContractsTableProps): ReactElement { const sortedContracts = useMemo( // Local project contracts should be shown first. () => props.contracts.sort((contract) => (contract.localConfig ? -1 : 1)), - [props.contracts] + [props.contracts], ); return columns={columns} data={sortedContracts} />; diff --git a/packages/ui/src/events/EventOriginLink/EventOriginLink.tsx b/packages/ui/src/events/EventOriginLink/EventOriginLink.tsx index 16c04440d..38220b7bf 100644 --- a/packages/ui/src/events/EventOriginLink/EventOriginLink.tsx +++ b/packages/ui/src/events/EventOriginLink/EventOriginLink.tsx @@ -2,7 +2,7 @@ import { ProjectLink } from "../../common/links/ProjectLink"; import { ExternalLink } from "../../common/links/ExternalLink/ExternalLink"; import React, { ReactElement } from "react"; import { EventUtils } from "../utils"; -import { FlowEvent } from '@onflowser/api'; +import { FlowEvent } from "@onflowser/api"; export function EventOriginLink(props: { event: FlowEvent }): ReactElement { const { type } = props.event; diff --git a/packages/ui/src/events/EventsTable/EventsTable.module.scss b/packages/ui/src/events/EventsTable/EventsTable.module.scss index 9c8fb2a03..57709ea77 100644 --- a/packages/ui/src/events/EventsTable/EventsTable.module.scss +++ b/packages/ui/src/events/EventsTable/EventsTable.module.scss @@ -1,5 +1,5 @@ -@import '../../styles/spacings'; -@import '../../styles/animations'; +@import "../../styles/spacings"; +@import "../../styles/animations"; .hashEvents { max-width: 13vw; diff --git a/packages/ui/src/events/EventsTable/EventsTable.tsx b/packages/ui/src/events/EventsTable/EventsTable.tsx index 6619e7ec3..79fb8c095 100644 --- a/packages/ui/src/events/EventsTable/EventsTable.tsx +++ b/packages/ui/src/events/EventsTable/EventsTable.tsx @@ -9,7 +9,7 @@ import { ProjectLink } from "../../common/links/ProjectLink"; import { EventOriginLink } from "../EventOriginLink/EventOriginLink"; import { EventUtils } from "../utils"; import { TimeAgo } from "../../common/time/TimeAgo/TimeAgo"; -import { FlowEvent } from '@onflowser/api'; +import { FlowEvent } from "@onflowser/api"; const columnHelper = createColumnHelper(); @@ -73,10 +73,5 @@ type EventsTableProps = { }; export function EventsTable(props: EventsTableProps): ReactElement { - return ( - - data={props.events} - columns={columns} - /> - ); + return data={props.events} columns={columns} />; } diff --git a/packages/ui/src/hooks/use-analytics.ts b/packages/ui/src/hooks/use-analytics.ts index 14699c52d..a7658d9d2 100644 --- a/packages/ui/src/hooks/use-analytics.ts +++ b/packages/ui/src/hooks/use-analytics.ts @@ -33,7 +33,7 @@ export function useAnalytics(): Analytics { const { analyticsService } = useServiceRegistry(); const [isConsented, setIsConsented] = useLocalStorage( "consent-analytics", - undefined + undefined, ); const currentProjectId = useCurrentWorkspaceId(); const { data: currentProject } = useGetWorkspace(currentProjectId); diff --git a/packages/ui/src/hooks/use-error-handler.ts b/packages/ui/src/hooks/use-error-handler.ts index 8ea05c2c1..ab45814a2 100644 --- a/packages/ui/src/hooks/use-error-handler.ts +++ b/packages/ui/src/hooks/use-error-handler.ts @@ -1,6 +1,6 @@ import { CommonUtils } from "../utils/common-utils"; import toast from "react-hot-toast"; -import { useServiceRegistry } from '../contexts/service-registry.context'; +import { useServiceRegistry } from "../contexts/service-registry.context"; export type ErrorHandlerState = { handleError: (error: unknown) => void; diff --git a/packages/ui/src/hooks/use-filter-data.ts b/packages/ui/src/hooks/use-filter-data.ts index 0c4d7ac3f..a82e88e76 100644 --- a/packages/ui/src/hooks/use-filter-data.ts +++ b/packages/ui/src/hooks/use-filter-data.ts @@ -5,7 +5,7 @@ export interface UseFilterDataHook { export const useFilterData = ( data: T[], searchTerm: string | undefined, - filterByProps?: string[] + filterByProps?: string[], ): UseFilterDataHook => { if (!Array.isArray(data) || data.length === 0) { return { filteredData: data }; @@ -17,7 +17,7 @@ export const useFilterData = ( (item) => JSON.stringify(item, filterByProps) .toLocaleLowerCase() - .indexOf(searchTerm.toLocaleLowerCase().toString()) !== -1 + .indexOf(searchTerm.toLocaleLowerCase().toString()) !== -1, ) : data; return { filteredData }; diff --git a/packages/ui/src/interactions/InteractionsPage.module.scss b/packages/ui/src/interactions/InteractionsPage.module.scss index 86244e6e6..69402130f 100644 --- a/packages/ui/src/interactions/InteractionsPage.module.scss +++ b/packages/ui/src/interactions/InteractionsPage.module.scss @@ -1,5 +1,5 @@ -@import '../styles/spacings'; -@import '../styles/colors'; +@import "../styles/spacings"; +@import "../styles/colors"; .pageRoot { height: 100%; @@ -50,6 +50,5 @@ } } } - } } diff --git a/packages/ui/src/interactions/InteractionsPage.tsx b/packages/ui/src/interactions/InteractionsPage.tsx index 94596aa9a..34110fd32 100644 --- a/packages/ui/src/interactions/InteractionsPage.tsx +++ b/packages/ui/src/interactions/InteractionsPage.tsx @@ -32,7 +32,7 @@ export function InteractionsPage(): ReactElement { }, ]; const [currentSideMenuTabId, setCurrentSideMenuTabId] = useState( - sideMenuTabs[0].id + sideMenuTabs[0].id, ); const openEditorTabs: BaseTabItem[] = definitions.map((definition) => ({ diff --git a/packages/ui/src/interactions/components/ExecutionSettings/ExecutionSettings.module.scss b/packages/ui/src/interactions/components/ExecutionSettings/ExecutionSettings.module.scss index 53c522d99..0304eaf56 100644 --- a/packages/ui/src/interactions/components/ExecutionSettings/ExecutionSettings.module.scss +++ b/packages/ui/src/interactions/components/ExecutionSettings/ExecutionSettings.module.scss @@ -1,5 +1,5 @@ -@import '../../../styles/spacings'; -@import '../../../styles/typography'; +@import "../../../styles/spacings"; +@import "../../../styles/typography"; .root { flex: 1; diff --git a/packages/ui/src/interactions/components/InteractionHistory/InteractionHistory.tsx b/packages/ui/src/interactions/components/InteractionHistory/InteractionHistory.tsx index 51bad307c..7f3d4cf6c 100644 --- a/packages/ui/src/interactions/components/InteractionHistory/InteractionHistory.tsx +++ b/packages/ui/src/interactions/components/InteractionHistory/InteractionHistory.tsx @@ -43,9 +43,7 @@ function BlockItem(props: BlockItemProps) { const { checkoutBlock } = useSnapshotsManager(); const { create, setFocused } = useInteractionRegistry(); - const { data } = useGetTransactionsByBlock( - block.id - ); + const { data } = useGetTransactionsByBlock(block.id); const firstTransaction = data?.[0]; const transactionName = useTransactionName({ @@ -60,10 +58,7 @@ function BlockItem(props: BlockItemProps) { name: transactionName ?? `Tx from block #${block.height}`, code: firstTransaction.script, fclValuesByIdentifier: new Map( - firstTransaction.arguments.map((arg) => [ - arg.identifier, - arg.value - ]) + firstTransaction.arguments.map((arg) => [arg.identifier, arg.value]), ), initialOutcome: { transaction: { diff --git a/packages/ui/src/interactions/components/InteractionIcon/InteractionIcon.module.scss b/packages/ui/src/interactions/components/InteractionIcon/InteractionIcon.module.scss index 298e67dde..3c24271bb 100644 --- a/packages/ui/src/interactions/components/InteractionIcon/InteractionIcon.module.scss +++ b/packages/ui/src/interactions/components/InteractionIcon/InteractionIcon.module.scss @@ -1,6 +1,7 @@ @import "../../../styles/colors"; -.script {} +.script { +} .transaction { * { diff --git a/packages/ui/src/interactions/components/InteractionIcon/InteractionIcon.tsx b/packages/ui/src/interactions/components/InteractionIcon/InteractionIcon.tsx index 12de1d495..504c522c2 100644 --- a/packages/ui/src/interactions/components/InteractionIcon/InteractionIcon.tsx +++ b/packages/ui/src/interactions/components/InteractionIcon/InteractionIcon.tsx @@ -1,7 +1,7 @@ import React, { ReactElement } from "react"; import { FlowserIcon } from "../../../common/icons/FlowserIcon"; import classes from "./InteractionIcon.module.scss"; -import { InteractionKind } from '@onflowser/api'; +import { InteractionKind } from "@onflowser/api"; type InteractionIconProps = { interactionKind: InteractionKind; diff --git a/packages/ui/src/interactions/components/InteractionLabel/InteractionLabel.tsx b/packages/ui/src/interactions/components/InteractionLabel/InteractionLabel.tsx index 8acbe7ce1..3c8f58807 100644 --- a/packages/ui/src/interactions/components/InteractionLabel/InteractionLabel.tsx +++ b/packages/ui/src/interactions/components/InteractionLabel/InteractionLabel.tsx @@ -16,13 +16,17 @@ export function InteractionLabel(props: InteractionLabelProps): ReactElement { const { data } = useGetParsedInteraction(interaction); if (!data) { - return ; + return ; } return (
    - +
    {interaction.name} diff --git a/packages/ui/src/interactions/components/InteractionOutcomeDisplay/InteractionOutcomeDisplay.module.scss b/packages/ui/src/interactions/components/InteractionOutcomeDisplay/InteractionOutcomeDisplay.module.scss index 07d3a12ea..425e7127c 100644 --- a/packages/ui/src/interactions/components/InteractionOutcomeDisplay/InteractionOutcomeDisplay.module.scss +++ b/packages/ui/src/interactions/components/InteractionOutcomeDisplay/InteractionOutcomeDisplay.module.scss @@ -16,5 +16,4 @@ .errorWrapper { height: 100%; } - } diff --git a/packages/ui/src/interactions/components/InteractionOutcomeDisplay/InteractionOutcomeDisplay.tsx b/packages/ui/src/interactions/components/InteractionOutcomeDisplay/InteractionOutcomeDisplay.tsx index b32b25a39..fe5ce8dc5 100644 --- a/packages/ui/src/interactions/components/InteractionOutcomeDisplay/InteractionOutcomeDisplay.tsx +++ b/packages/ui/src/interactions/components/InteractionOutcomeDisplay/InteractionOutcomeDisplay.tsx @@ -97,7 +97,9 @@ function EmptyState() { function TransactionOutcomeDisplay(props: { outcome: TransactionOutcome }) { const { outcome } = props; - const { isLoading, data: transaction } = useGetTransaction(outcome.transactionId!); + const { isLoading, data: transaction } = useGetTransaction( + outcome.transactionId!, + ); if (isLoading) { return ; @@ -110,7 +112,7 @@ function TransactionOutcomeDisplay(props: { outcome: TransactionOutcome }) { className={classes.errorWrapper} error="Transaction not found" /> - ) + ); } return ( diff --git a/packages/ui/src/interactions/components/InteractionTemplates/InteractionTemplates.tsx b/packages/ui/src/interactions/components/InteractionTemplates/InteractionTemplates.tsx index 5083ba5c9..8f7ac438b 100644 --- a/packages/ui/src/interactions/components/InteractionTemplates/InteractionTemplates.tsx +++ b/packages/ui/src/interactions/components/InteractionTemplates/InteractionTemplates.tsx @@ -34,9 +34,9 @@ function StoredTemplates() { const filteredAndSortedTemplates = useMemo( () => filteredTemplates.sort( - (a, b) => b.updatedDate.getTime() - a.updatedDate.getTime() + (a, b) => b.updatedDate.getTime() - a.updatedDate.getTime(), ), - [filteredTemplates] + [filteredTemplates], ); return ( @@ -97,7 +97,7 @@ function FocusedTemplateSettings() { } const correspondingTemplate = templates.find( - (template) => template.id === focusedDefinition.id + (template) => template.id === focusedDefinition.id, ); if (correspondingTemplate && correspondingTemplate.filePath) { diff --git a/packages/ui/src/interactions/components/ParamBuilder/ParamBuilder.tsx b/packages/ui/src/interactions/components/ParamBuilder/ParamBuilder.tsx index dc592e988..96ce3293d 100644 --- a/packages/ui/src/interactions/components/ParamBuilder/ParamBuilder.tsx +++ b/packages/ui/src/interactions/components/ParamBuilder/ParamBuilder.tsx @@ -11,7 +11,7 @@ export type ParameterListBuilderProps = InteractionParameterBuilder & { }; export function ParamListBuilder( - props: ParameterListBuilderProps + props: ParameterListBuilderProps, ): ReactElement { const { parameters, fclValuesByIdentifier, setFclValue } = props; return ( diff --git a/packages/ui/src/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.module.scss b/packages/ui/src/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.module.scss index 8483c8518..355dbee8b 100644 --- a/packages/ui/src/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.module.scss +++ b/packages/ui/src/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.module.scss @@ -1,7 +1,7 @@ @import "../../../../styles/spacings"; @import "../../../../styles/colors"; @import "../../../../styles/scrollbars"; -@import '../../../../styles/rules'; +@import "../../../../styles/rules"; $avatar-size: 30px; diff --git a/packages/ui/src/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.tsx b/packages/ui/src/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.tsx index 1be9a2201..f9c43da57 100644 --- a/packages/ui/src/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.tsx +++ b/packages/ui/src/interactions/components/ValueBuilder/AddressBuilder/AddressBuilder.tsx @@ -16,10 +16,18 @@ export function AddressBuilder(props: CadenceValueBuilder): ReactElement { const { data, mutate } = useGetAccounts(); const { walletService } = useServiceRegistry(); const { data: allKeys } = useGetManagedKeys(); - const accountsWithPrivateKeysLookup = new Set(allKeys?.filter(key => Boolean(key.privateKey)).map(key => key.address)); - const accountsToShow = useMemo(() => addressBuilderOptions?.showManagedAccountsOnly - ? data?.filter((account) => accountsWithPrivateKeysLookup.has(account.address)) - : data, [addressBuilderOptions?.showManagedAccountsOnly, data]); + const accountsWithPrivateKeysLookup = new Set( + allKeys?.filter((key) => Boolean(key.privateKey)).map((key) => key.address), + ); + const accountsToShow = useMemo( + () => + addressBuilderOptions?.showManagedAccountsOnly + ? data?.filter((account) => + accountsWithPrivateKeysLookup.has(account.address), + ) + : data, + [addressBuilderOptions?.showManagedAccountsOnly, data], + ); useEffect(() => { const serviceAddress = "0xf8d6e0586b0a20c7"; @@ -74,7 +82,7 @@ function AccountButton(props: AccountButtonProps) {
    @@ -98,7 +106,7 @@ function NewAccountButton(props: NewAccountButtonProps) {
    { try { diff --git a/packages/ui/src/interactions/components/ValueBuilder/ArrayBuilder/ArrayBuilder.module.scss b/packages/ui/src/interactions/components/ValueBuilder/ArrayBuilder/ArrayBuilder.module.scss index c8ccc71c1..89827ddbd 100644 --- a/packages/ui/src/interactions/components/ValueBuilder/ArrayBuilder/ArrayBuilder.module.scss +++ b/packages/ui/src/interactions/components/ValueBuilder/ArrayBuilder/ArrayBuilder.module.scss @@ -9,7 +9,7 @@ .arrayElement { display: flex; flex-direction: row; - .indexDisplay { + .indexDisplay { display: flex; align-items: center; margin-right: $spacing-s; diff --git a/packages/ui/src/interactions/components/ValueBuilder/BoolBuilder/BoolBuilder.tsx b/packages/ui/src/interactions/components/ValueBuilder/BoolBuilder/BoolBuilder.tsx index 3d1e21969..acc61c72c 100644 --- a/packages/ui/src/interactions/components/ValueBuilder/BoolBuilder/BoolBuilder.tsx +++ b/packages/ui/src/interactions/components/ValueBuilder/BoolBuilder/BoolBuilder.tsx @@ -42,7 +42,7 @@ export function BoolBuilder(props: CadenceValueBuilder): ReactElement { return setValue(false); default: throw new Error( - "Unknown selected option value: " + event.target.value + "Unknown selected option value: " + event.target.value, ); } }} diff --git a/packages/ui/src/interactions/components/ValueBuilder/DictionaryBuilder/DictionaryBuilder.tsx b/packages/ui/src/interactions/components/ValueBuilder/DictionaryBuilder/DictionaryBuilder.tsx index ab8269000..f960109a6 100644 --- a/packages/ui/src/interactions/components/ValueBuilder/DictionaryBuilder/DictionaryBuilder.tsx +++ b/packages/ui/src/interactions/components/ValueBuilder/DictionaryBuilder/DictionaryBuilder.tsx @@ -5,8 +5,8 @@ import toast from "react-hot-toast"; import classes from "./DictionaryBuilder.module.scss"; import { SimpleButton } from "../../../../common/buttons/SimpleButton/SimpleButton"; import { SizedBox } from "../../../../common/misc/SizedBox/SizedBox"; -import { MultiMap } from '../../../../utils/multi-map'; -import { FclDictionaryEntry, FclValue, FclValueUtils } from '@onflowser/core'; +import { MultiMap } from "../../../../utils/multi-map"; +import { FclDictionaryEntry, FclValue, FclValueUtils } from "@onflowser/core"; export function DictionaryBuilder(props: CadenceValueBuilder): ReactElement { const { disabled, type, value, setValue } = props; @@ -40,7 +40,7 @@ export function DictionaryBuilder(props: CadenceValueBuilder): ReactElement { return; } const valuesByKey = new MultiMap( - value.map((entry) => [entry.key, entry.value]) + value.map((entry) => [entry.key, entry.value]), ); const duplicatedEntry = Array.from(valuesByKey.entries()) .filter((entry) => entry[1].length > 1) @@ -57,7 +57,7 @@ export function DictionaryBuilder(props: CadenceValueBuilder): ReactElement { Duplicated keys found
    Make sure that all keys are unique and specified. -
    +
    , ); } }, [value]); @@ -69,13 +69,13 @@ export function DictionaryBuilder(props: CadenceValueBuilder): ReactElement { // Returns true if target entry was found by the provided key. function updateEntry( key: FclValue, - partialEntry: Partial + partialEntry: Partial, ): boolean { if (!isInitialized) { throw new Error("Not initialized"); } const entryIndex = value.findIndex( - (entry: FclDictionaryEntry) => entry.key === key + (entry: FclDictionaryEntry) => entry.key === key, ); const isEntryFound = entryIndex !== -1; if (isEntryFound) { diff --git a/packages/ui/src/interactions/components/ValueBuilder/FixedPointNumberBuilder/FixedPointNumberBuilder.tsx b/packages/ui/src/interactions/components/ValueBuilder/FixedPointNumberBuilder/FixedPointNumberBuilder.tsx index b8290ed77..3dc37012e 100644 --- a/packages/ui/src/interactions/components/ValueBuilder/FixedPointNumberBuilder/FixedPointNumberBuilder.tsx +++ b/packages/ui/src/interactions/components/ValueBuilder/FixedPointNumberBuilder/FixedPointNumberBuilder.tsx @@ -4,7 +4,7 @@ import { Input } from "../../../../common/inputs/Input/Input"; import { FclValueUtils } from "@onflowser/core"; export function FixedPointNumberBuilder( - props: CadenceValueBuilder + props: CadenceValueBuilder, ): ReactElement { const { disabled, value, setValue } = props; diff --git a/packages/ui/src/interactions/components/ValueBuilder/PathBuilder/PathBuilder.tsx b/packages/ui/src/interactions/components/ValueBuilder/PathBuilder/PathBuilder.tsx index 0ce655d31..eb12692c5 100644 --- a/packages/ui/src/interactions/components/ValueBuilder/PathBuilder/PathBuilder.tsx +++ b/packages/ui/src/interactions/components/ValueBuilder/PathBuilder/PathBuilder.tsx @@ -5,7 +5,7 @@ import SelectInput, { SelectInputOption, } from "../../../../common/inputs/SelectInput/SelectInput"; import { Input } from "../../../../common/inputs/Input/Input"; -import { FclPathDomain, FclValueUtils } from '@onflowser/core'; +import { FclPathDomain, FclValueUtils } from "@onflowser/core"; export function PathBuilder(props: CadenceValueBuilder): ReactElement { const { disabled, type, value, setValue } = props; @@ -50,7 +50,7 @@ export function PathBuilder(props: CadenceValueBuilder): ReactElement { (domain): SelectInputOption => ({ label: domain, value: domain, - }) + }), ); return ( diff --git a/packages/ui/src/interactions/contexts/definition.context.tsx b/packages/ui/src/interactions/contexts/definition.context.tsx index 9ccb93880..b4aaa5b75 100644 --- a/packages/ui/src/interactions/contexts/definition.context.tsx +++ b/packages/ui/src/interactions/contexts/definition.context.tsx @@ -11,7 +11,7 @@ import { } from "../core/core-types"; import { ParsedInteraction } from "@onflowser/api"; import { FclValue } from "@onflowser/core"; -import { useGetParsedInteraction } from '../../api'; +import { useGetParsedInteraction } from "../../api"; type InteractionDefinitionManager = InteractionParameterBuilder & { isParsing: boolean; diff --git a/packages/ui/src/interactions/contexts/interaction-registry.context.tsx b/packages/ui/src/interactions/contexts/interaction-registry.context.tsx index 6aa586fd5..c95cdce02 100644 --- a/packages/ui/src/interactions/contexts/interaction-registry.context.tsx +++ b/packages/ui/src/interactions/contexts/interaction-registry.context.tsx @@ -26,7 +26,7 @@ type InteractionsRegistry = { focusedDefinition: InteractionDefinition | undefined; create: ( interaction: CreateInteractionDefinition, - options?: CreateInteractionOptions + options?: CreateInteractionOptions, ) => InteractionDefinition; update: (interaction: InteractionDefinition) => void; remove: (interactionId: string) => void; @@ -61,7 +61,7 @@ export function InteractionRegistryProvider(props: { const focusedDefinition = useMemo( () => definitions.find((definition) => definition.id === focusedInteractionId), - [focusedInteractionId, definitions] + [focusedInteractionId, definitions], ); useEffect(() => { @@ -80,13 +80,13 @@ export function InteractionRegistryProvider(props: { return updatedInteraction; } return existingInteraction; - }) + }), ); } function remove(interactionId: string) { const newDefinitions = definitions.filter( - (definition) => definition.id !== interactionId + (definition) => definition.id !== interactionId, ); setDefinitions(newDefinitions); const lastDefinition = newDefinitions[newDefinitions.length - 1]; @@ -97,7 +97,7 @@ export function InteractionRegistryProvider(props: { function create( newPartialInteraction: CreateInteractionDefinition, - options?: CreateInteractionOptions + options?: CreateInteractionOptions, ): InteractionDefinition { const newPartialDefinitionId = newPartialInteraction.id ?? crypto.randomUUID(); @@ -105,9 +105,9 @@ export function InteractionRegistryProvider(props: { options?.deduplicateBySourceCodeSemantics ? InteractionUtils.areSemanticallyEquivalent( newPartialInteraction, - definition + definition, ) - : definition.id === newPartialDefinitionId + : definition.id === newPartialDefinitionId, ); if (existingInteraction) { return existingInteraction; diff --git a/packages/ui/src/interactions/contexts/outcome.context.tsx b/packages/ui/src/interactions/contexts/outcome.context.tsx index 1e04e02d9..bf1729897 100644 --- a/packages/ui/src/interactions/contexts/outcome.context.tsx +++ b/packages/ui/src/interactions/contexts/outcome.context.tsx @@ -3,7 +3,7 @@ import React, { ReactElement, ReactNode, useContext, - useState + useState, } from "react"; import { CommonUtils } from "../../utils/common-utils"; import { useInteractionDefinitionManager } from "./definition.context"; @@ -25,7 +25,7 @@ export function InteractionOutcomeManagerProvider(props: { const { definition, fclValuesByIdentifier, parsedInteraction } = useInteractionDefinitionManager(); const { flowService } = useServiceRegistry(); - const [outcome, setOutcome] = useState(); + const [outcome, setOutcome] = useState(); async function execute() { if (!definition) { @@ -41,14 +41,12 @@ export function InteractionOutcomeManagerProvider(props: { return setOutcome(await executeTransaction(definition)); default: // TODO(feature-interact-screen): If there are syntax errors, interaction will be treated as "unknown" - throw new Error( - `Can't execute interaction: ${parsedInteraction.kind}` - ); + throw new Error(`Can't execute interaction: ${parsedInteraction.kind}`); } } async function executeTransaction( - definition: InteractionDefinition + definition: InteractionDefinition, ): Promise { const { transactionOptions } = definition; if (!transactionOptions) { @@ -62,7 +60,7 @@ export function InteractionOutcomeManagerProvider(props: { toast.error( `Unspecified authorizers: ${unspecifiedAuthorizers .map((e) => e.index + 1) - .join(", ")}` + .join(", ")}`, ); hasErrors = true; } @@ -101,11 +99,13 @@ export function InteractionOutcomeManagerProvider(props: { } } - async function executeScript(definition: InteractionDefinition): Promise { + async function executeScript( + definition: InteractionDefinition, + ): Promise { try { const result = await flowService.executeScript({ cadence: definition.code, - arguments: serializeParameters() + arguments: serializeParameters(), }); return { script: { @@ -144,8 +144,8 @@ export function InteractionOutcomeManagerProvider(props: { type: parameter.type, identifier: parameter.identifier, }; - } - ) + }, + ); } return ( diff --git a/packages/ui/src/interactions/contexts/templates.context.tsx b/packages/ui/src/interactions/contexts/templates.context.tsx index 439474cbc..732c06b86 100644 --- a/packages/ui/src/interactions/contexts/templates.context.tsx +++ b/packages/ui/src/interactions/contexts/templates.context.tsx @@ -58,10 +58,10 @@ export function TemplatesRegistryProvider(props: { createdDate: new Date(template.createdDate), updatedDate: new Date(template.updatedDate), fclValuesByIdentifier: new Map( - Object.entries(template.fclValuesByIdentifier) + Object.entries(template.fclValuesByIdentifier), ), filePath: undefined, - }) + }), ), ...(projectTemplatesData?.map( (template): InteractionDefinitionTemplate => ({ @@ -74,10 +74,10 @@ export function TemplatesRegistryProvider(props: { createdDate: new Date(template.createdAt), updatedDate: new Date(template.updatedAt), filePath: template.source?.filePath, - }) + }), ) ?? []), ], - [customTemplates, projectTemplatesData] + [customTemplates, projectTemplatesData], ); function saveTemplate(interaction: InteractionDefinition) { @@ -85,7 +85,7 @@ export function TemplatesRegistryProvider(props: { name: interaction.name, code: interaction.code, fclValuesByIdentifier: Object.fromEntries( - interaction.fclValuesByIdentifier + interaction.fclValuesByIdentifier, ), transactionOptions: interaction.transactionOptions, createdDate: new Date().toISOString(), @@ -94,7 +94,7 @@ export function TemplatesRegistryProvider(props: { setRawTemplates([ ...customTemplates.filter( - (template) => template.name !== newTemplate.name + (template) => template.name !== newTemplate.name, ), newTemplate, ]); @@ -103,8 +103,8 @@ export function TemplatesRegistryProvider(props: { function removeTemplate(template: InteractionDefinitionTemplate) { setRawTemplates((rawTemplates) => rawTemplates.filter( - (existingTemplate) => existingTemplate.name !== template.name - ) + (existingTemplate) => existingTemplate.name !== template.name, + ), ); } diff --git a/packages/ui/src/interactions/core/core-types.ts b/packages/ui/src/interactions/core/core-types.ts index f0904cfee..4e9201369 100644 --- a/packages/ui/src/interactions/core/core-types.ts +++ b/packages/ui/src/interactions/core/core-types.ts @@ -1,4 +1,4 @@ -import { FclValue } from '@onflowser/core'; +import { FclValue } from "@onflowser/core"; export type InteractionDefinition = { id: string; diff --git a/packages/ui/src/interactions/core/core-utils.ts b/packages/ui/src/interactions/core/core-utils.ts index 1df48139b..f0085463c 100644 --- a/packages/ui/src/interactions/core/core-utils.ts +++ b/packages/ui/src/interactions/core/core-utils.ts @@ -9,7 +9,7 @@ export class InteractionUtils { // https://github.com/onflow/flips/blob/main/application/20220503-interaction-templates.md#data-structure-serialization--identifier-generation static areSemanticallyEquivalent( a: IdentifiableInteractionDefinition, - b: IdentifiableInteractionDefinition + b: IdentifiableInteractionDefinition, ): boolean { return ( this.normalizeCadenceCode(a.code) === this.normalizeCadenceCode(b.code) diff --git a/packages/ui/src/interactions/hooks/use-transaction-name.ts b/packages/ui/src/interactions/hooks/use-transaction-name.ts index fcf3a548f..76e4ab736 100644 --- a/packages/ui/src/interactions/hooks/use-transaction-name.ts +++ b/packages/ui/src/interactions/hooks/use-transaction-name.ts @@ -58,11 +58,11 @@ const transactionKindBySource = new Map( hardcodedTemplates.map((entry) => [ InteractionUtils.normalizeCadenceCode(entry[0]), entry[1], - ]) + ]), ); export function useTransactionName( - props: UseInteractionNameProps + props: UseInteractionNameProps, ): string | undefined { const { transaction } = props; const { templates } = useTemplatesRegistry(); @@ -82,22 +82,22 @@ export function useTransactionName( } const sanitizedTargetCode = InteractionUtils.normalizeCadenceCode( - transaction.script + transaction.script, ); return [...templates, ...definitions].find( (template) => template.code && InteractionUtils.normalizeCadenceCode(template.code) === - sanitizedTargetCode + sanitizedTargetCode, )?.name; }, [transaction, templates, definitions]); } function getStandardInteractionName( - transaction: FlowTransaction + transaction: FlowTransaction, ): string | undefined { const kind = transactionKindBySource.get( - InteractionUtils.normalizeCadenceCode(transaction.script) + InteractionUtils.normalizeCadenceCode(transaction.script), ); switch (kind) { @@ -116,7 +116,10 @@ function getStandardInteractionName( } } -function getArgumentValueById(transaction: FlowTransaction, id: string): FclValue { +function getArgumentValueById( + transaction: FlowTransaction, + id: string, +): FclValue { return transaction.arguments.find((argument) => argument.identifier === id) - ?.value + ?.value; } diff --git a/packages/ui/src/logs/Logs.module.scss b/packages/ui/src/logs/Logs.module.scss index 2327fae3f..e565ecd8c 100644 --- a/packages/ui/src/logs/Logs.module.scss +++ b/packages/ui/src/logs/Logs.module.scss @@ -1,7 +1,7 @@ -@import '../styles/colors'; -@import '../styles/spacings'; -@import '../styles/typography'; -@import '../styles/scrollbars'; +@import "../styles/colors"; +@import "../styles/spacings"; +@import "../styles/typography"; +@import "../styles/scrollbars"; @mixin overlay { z-index: 99; @@ -140,16 +140,16 @@ [class="blue"], .blue { - color: #32BBC7; + color: #32bbc7; } [class="red"], .red { - color: #C33820; + color: #c33820; } [class="yellow"], .yellow { - color: #AEAD23; + color: #aead23; } } diff --git a/packages/ui/src/logs/Logs.tsx b/packages/ui/src/logs/Logs.tsx index 1f31c1b42..5dc4601c8 100644 --- a/packages/ui/src/logs/Logs.tsx +++ b/packages/ui/src/logs/Logs.tsx @@ -73,7 +73,7 @@ export function Logs(props: LogsProps): ReactElement { useEffect(() => { const hasErrorLogs = logs.some( - (log) => log.source === ProcessOutputSource.OUTPUT_SOURCE_STDERR + (log) => log.source === ProcessOutputSource.OUTPUT_SOURCE_STDERR, ); if (hasErrorLogs) { toast.error("Some process encountered errors", { @@ -124,7 +124,7 @@ export function Logs(props: LogsProps): ReactElement { className={classNames( classes.root, getDrawerSizeClass(), - props.className + props.className, )} style={logDrawerSize === "custom" ? { top: mouseEvent?.clientY } : {}} > @@ -237,7 +237,9 @@ function NoLogsHelpBanner() { description={

    - Flowser can only show logs, when emulator is run by Flowser itself. Make sure you aren't running the flow emulator command yourself. + Flowser can only show logs, when emulator is run by Flowser itself. + Make sure you aren't running the flow emulator command + yourself.

    } @@ -252,11 +254,11 @@ function useRelevantLogs(options: { const { data: emulatorLogs } = useGetOutputsByProcess(emulatorProcessId); const { filteredData: logs } = useFilterData( emulatorLogs ?? [], - options.searchTerm + options.searchTerm, ); const tailLogs = useMemo( () => logs.slice(logs.length - options.tailSize, logs.length), - [logs] + [logs], ); return { diff --git a/packages/ui/src/styles/animations.scss b/packages/ui/src/styles/animations.scss index 718ef97d6..259059932 100644 --- a/packages/ui/src/styles/animations.scss +++ b/packages/ui/src/styles/animations.scss @@ -6,11 +6,13 @@ } @mixin whitenOnHover() { - &, * { + &, + * { transition: 0.1s ease-in-out color; } &:hover { - &, * { + &, + * { color: white; fill: white; } @@ -35,7 +37,6 @@ } @mixin addNewContentAnimation($time) { - -webkit-animation: new-content-animation #{$time}; /* Safari, Chrome and Opera > 12.1 */ -moz-animation: new-content-animation #{$time}; /* Firefox < 16 */ -ms-animation: new-content-animation #{$time}; /* Internet Explorer */ @@ -45,22 +46,31 @@ @keyframes new-content-animation { from { opacity: 0; - background-color: #496F8D; - color: #496F8D; + background-color: #496f8d; + color: #496f8d; font-size: 98%; // Using lower percentage will break ellipsis on hashes :/ } 50% { opacity: 0.5; - background-color: #496F8D; + background-color: #496f8d; } } } @mixin flipVertical($time, $deg: 180deg) { - -webkit-transition: -webkit-transform #{$time} ease-in-out, fill #{$time} ease, stroke #{$time} ease; - -ms-transition: -ms-transform #{$time} ease-in-out, fill #{$time} ease, stroke #{$time} ease; - transition: transform #{$time} ease-in-out, fill #{$time} ease, stroke #{$time} ease; + -webkit-transition: + -webkit-transform #{$time} ease-in-out, + fill #{$time} ease, + stroke #{$time} ease; + -ms-transition: + -ms-transform #{$time} ease-in-out, + fill #{$time} ease, + stroke #{$time} ease; + transition: + transform #{$time} ease-in-out, + fill #{$time} ease, + stroke #{$time} ease; transform: rotateX(#{$deg}); -ms-transform: rotateX(#{$deg}); diff --git a/packages/ui/src/styles/colors.scss b/packages/ui/src/styles/colors.scss index e4a7428cc..e623cc0ff 100644 --- a/packages/ui/src/styles/colors.scss +++ b/packages/ui/src/styles/colors.scss @@ -1,32 +1,43 @@ -$color-grey: #ABB4B8; -$color-light-gray: #F7FAFC; -$color-red: #D02525; -$color-red-light: #CE5E5E; +$color-grey: #abb4b8; +$color-light-gray: #f7fafc; +$color-red: #d02525; +$color-red-light: #ce5e5e; // new colors $purple: #cfc5f8; $yellow: #ffdd62; $blue: #9bdefa; -$strong-green: #00E786; -$gradient-1: linear-gradient(90deg, rgba(127, 137, 174, 1) 0%, rgba(138, 146, 175, 1) 4%, rgba(140, 147, 174, 1) 11%, rgba(147, 146, 176, 1) 15%, rgba(141, 143, 176, 1) 21%, rgba(131, 147, 175, 1) 57%, rgba(132, 149, 175, 1) 72%, rgba(124, 150, 175, 1) 89%, rgba(136, 160, 169, 1) 100%); +$strong-green: #00e786; +$gradient-1: linear-gradient( + 90deg, + rgba(127, 137, 174, 1) 0%, + rgba(138, 146, 175, 1) 4%, + rgba(140, 147, 174, 1) 11%, + rgba(147, 146, 176, 1) 15%, + rgba(141, 143, 176, 1) 21%, + rgba(131, 147, 175, 1) 57%, + rgba(132, 149, 175, 1) 72%, + rgba(124, 150, 175, 1) 89%, + rgba(136, 160, 169, 1) 100% +); // Se uporabi za besedilo, ki je na dark violet podlagi (navigacijska vrstica, 1st row in table) $grey: #c7cad0; // --------- NEW COLORS ----------- -$green-10: #A2CE8D; +$green-10: #a2ce8d; -$gray-10: #E5E5E5; +$gray-10: #e5e5e5; $gray-20: #ffffffba; $gray-30: #707070; -$gray-50: #565A5F; -$gray-80: #31363C; -$gray-100: #272B32; -$gray-110: #1C2128; +$gray-50: #565a5f; +$gray-80: #31363c; +$gray-100: #272b32; +$gray-110: #1c2128; -$violet-10: #CFC5F8; +$violet-10: #cfc5f8; $violet-50: #555793; -$violet-100: #3B3E5B; +$violet-100: #3b3e5b; $violet-110: #2b3043; -$white: #FFF; +$white: #fff; diff --git a/packages/ui/src/styles/rules.scss b/packages/ui/src/styles/rules.scss index 99e63bd01..cf5c42178 100644 --- a/packages/ui/src/styles/rules.scss +++ b/packages/ui/src/styles/rules.scss @@ -3,5 +3,3 @@ $border-radius-card: 8px; $border-radius-input: 8px; $border-radius-md: 18px; - - diff --git a/packages/ui/src/styles/scrollbars.scss b/packages/ui/src/styles/scrollbars.scss index 19ee81785..f3fde1cce 100644 --- a/packages/ui/src/styles/scrollbars.scss +++ b/packages/ui/src/styles/scrollbars.scss @@ -1,18 +1,21 @@ @import "colors"; @mixin styledScrollbars { - &::-webkit-scrollbar, *::-webkit-scrollbar { + &::-webkit-scrollbar, + *::-webkit-scrollbar { width: 10px; } - &::-webkit-scrollbar-thumb, *::-webkit-scrollbar-thumb { + &::-webkit-scrollbar-thumb, + *::-webkit-scrollbar-thumb { box-shadow: inset 0 0 6px $gray-80; border-radius: 5pt; } } @mixin hiddenScrollbars { - &::-webkit-scrollbar, *::-webkit-scrollbar { + &::-webkit-scrollbar, + *::-webkit-scrollbar { display: none; } } diff --git a/packages/ui/src/transactions/TransactionDetails/TransactionDetails.tsx b/packages/ui/src/transactions/TransactionDetails/TransactionDetails.tsx index dc2f1afed..9e7f06778 100644 --- a/packages/ui/src/transactions/TransactionDetails/TransactionDetails.tsx +++ b/packages/ui/src/transactions/TransactionDetails/TransactionDetails.tsx @@ -11,7 +11,7 @@ type TransactionDetailsProps = { }; export const TransactionDetails: FunctionComponent = ( - props + props, ) => { const { transactionId } = props; const { data: transaction, isLoading } = useGetTransaction(transactionId); diff --git a/packages/ui/src/transactions/TransactionDetailsTabs/TransactionDetailsTabs.tsx b/packages/ui/src/transactions/TransactionDetailsTabs/TransactionDetailsTabs.tsx index 39857a333..92d583d7c 100644 --- a/packages/ui/src/transactions/TransactionDetailsTabs/TransactionDetailsTabs.tsx +++ b/packages/ui/src/transactions/TransactionDetailsTabs/TransactionDetailsTabs.tsx @@ -20,7 +20,7 @@ type TransactionDetailsTabsProps = Omit & { }; export function TransactionDetailsTabs( - props: TransactionDetailsTabsProps + props: TransactionDetailsTabsProps, ): ReactElement { const { transaction, includeOverviewTab, includeScriptTab, ...tabProps } = props; @@ -80,7 +80,7 @@ export function TransactionDetailsTabs( label: "Payload Signatures", content: , }, - ] + ], ); return ; diff --git a/packages/ui/src/transactions/TransactionOverview/TransactionOverview.tsx b/packages/ui/src/transactions/TransactionOverview/TransactionOverview.tsx index 0ccd63473..52c9e094e 100644 --- a/packages/ui/src/transactions/TransactionOverview/TransactionOverview.tsx +++ b/packages/ui/src/transactions/TransactionOverview/TransactionOverview.tsx @@ -18,7 +18,7 @@ type TransactionOverviewProps = { }; export function TransactionOverview( - props: TransactionOverviewProps + props: TransactionOverviewProps, ): ReactElement { const { transaction } = props; diff --git a/packages/ui/src/transactions/TransactionSource/TransactionSource.tsx b/packages/ui/src/transactions/TransactionSource/TransactionSource.tsx index c1f3ce91a..1d7d9df4e 100644 --- a/packages/ui/src/transactions/TransactionSource/TransactionSource.tsx +++ b/packages/ui/src/transactions/TransactionSource/TransactionSource.tsx @@ -26,10 +26,7 @@ export const TransactionSource: FC = ({ name: transactionName ?? "Unknown", code: transaction.script, fclValuesByIdentifier: new Map( - transaction.arguments.map((arg) => [ - arg.identifier, - arg.value - ]) + transaction.arguments.map((arg) => [arg.identifier, arg.value]), ), initialOutcome: { transaction: { @@ -45,7 +42,7 @@ export const TransactionSource: FC = ({ }, { deduplicateBySourceCodeSemantics: true, - } + }, ); setFocused(createdInteraction.id); } diff --git a/packages/ui/src/utils/flow-utils.ts b/packages/ui/src/utils/flow-utils.ts index dda889667..dee89b523 100644 --- a/packages/ui/src/utils/flow-utils.ts +++ b/packages/ui/src/utils/flow-utils.ts @@ -76,7 +76,7 @@ export class FlowUtils { ...union, [entry.key]: formatEntryValue(entry.value), }), - {} + {}, ) as FlowScriptError; } @@ -113,12 +113,12 @@ export class FlowUtils { const charsToTake = 5; return `${blockId.slice(0, charsToTake)}...${blockId.slice( blockId.length - charsToTake, - blockId.length + blockId.length, )}`; } static getExecutionStatusName( - statusCode: ExecutionStatusCode | undefined + statusCode: ExecutionStatusCode | undefined, ): string { switch (statusCode) { case ExecutionStatusCode.EXECUTION_STATUS_EXECUTED: diff --git a/packages/ui/src/utils/text-utils.ts b/packages/ui/src/utils/text-utils.ts index d95a5a044..408ed5c36 100644 --- a/packages/ui/src/utils/text-utils.ts +++ b/packages/ui/src/utils/text-utils.ts @@ -9,7 +9,7 @@ export class TextUtils { const charsToTake = maxLength / 2; return `${text.slice(0, charsToTake)}${delimiter}${text.slice( text.length - charsToTake, - text.length + text.length, )}`; } diff --git a/packages/ui/src/workspaces/FormFields/FormFields.module.scss b/packages/ui/src/workspaces/FormFields/FormFields.module.scss index 5db8c6ae3..29c6eb66e 100644 --- a/packages/ui/src/workspaces/FormFields/FormFields.module.scss +++ b/packages/ui/src/workspaces/FormFields/FormFields.module.scss @@ -3,10 +3,13 @@ @import "../../styles/typography"; @import "../../styles/animations"; -.textFieldRoot, .toggleFieldRoot { +.textFieldRoot, +.toggleFieldRoot { display: flex; margin: $spacing-l 0; - .label, .input, .description { + .label, + .input, + .description { display: flex; align-items: center; } @@ -46,7 +49,8 @@ .header { display: flex; margin-bottom: $spacing-base; - .title, .description { + .title, + .description { color: $gray-10; } } diff --git a/packages/ui/src/workspaces/FormFields/FormFields.tsx b/packages/ui/src/workspaces/FormFields/FormFields.tsx index cd361ee37..8d54c5be7 100644 --- a/packages/ui/src/workspaces/FormFields/FormFields.tsx +++ b/packages/ui/src/workspaces/FormFields/FormFields.tsx @@ -6,7 +6,7 @@ import classNames from "classnames"; import classes from "./FormFields.module.scss"; import ToggleButton from "../../common/buttons/ToggleButton/ToggleButton"; import { FormikErrors } from "formik"; -import { FlowserWorkspace } from '@onflowser/api'; +import { FlowserWorkspace } from "@onflowser/api"; export type FieldProps = InputProps & { label?: string; @@ -20,7 +20,7 @@ export type FieldProps = InputProps & { setFieldValue: ( field: string, value: unknown, - shouldValidate?: boolean + shouldValidate?: boolean, ) => void; }; }; diff --git a/packages/ui/src/workspaces/SettingsSection/SettingsSection.module.scss b/packages/ui/src/workspaces/SettingsSection/SettingsSection.module.scss index d66ebfa08..6def85757 100644 --- a/packages/ui/src/workspaces/SettingsSection/SettingsSection.module.scss +++ b/packages/ui/src/workspaces/SettingsSection/SettingsSection.module.scss @@ -41,7 +41,8 @@ cursor: pointer; display: flex; align-items: center; - .openIcon, .closeIcon { + .openIcon, + .closeIcon { width: 20px; height: 20px; } diff --git a/packages/ui/src/workspaces/WorkspaceList/WorkspaceList.tsx b/packages/ui/src/workspaces/WorkspaceList/WorkspaceList.tsx index 277acab0f..7ed7be0be 100644 --- a/packages/ui/src/workspaces/WorkspaceList/WorkspaceList.tsx +++ b/packages/ui/src/workspaces/WorkspaceList/WorkspaceList.tsx @@ -89,7 +89,7 @@ function WorkspaceListContent() { const showProjectList = projects && projects.length > 0; if (error) { - return
    {error.message}
    + return
    {error.message}
    ; } if (!showProjectList) { diff --git a/packages/ui/src/workspaces/WorkspaceSettings/WorkspaceSettings.tsx b/packages/ui/src/workspaces/WorkspaceSettings/WorkspaceSettings.tsx index 42ebfa8b2..cd56f8bc7 100644 --- a/packages/ui/src/workspaces/WorkspaceSettings/WorkspaceSettings.tsx +++ b/packages/ui/src/workspaces/WorkspaceSettings/WorkspaceSettings.tsx @@ -39,7 +39,7 @@ type ProjectSettingsProps = { }; export const WorkspaceSettings: FunctionComponent = ( - props + props, ) => { const { workspaceId } = props; const { workspaceService } = useServiceRegistry(); @@ -58,7 +58,7 @@ export const WorkspaceSettings: FunctionComponent = ( validateOnChange: false, // Initial value is set in a hook bellow. initialValues: {} as FlowserWorkspace, - onSubmit: () => saveAndOpenWorkspace() + onSubmit: () => saveAndOpenWorkspace(), }); async function saveAndOpenWorkspace() { @@ -111,7 +111,7 @@ export const WorkspaceSettings: FunctionComponent = ( } catch (e) { console.error(e); toast.error( - `Something went wrong: Can not load emulator settings from server` + `Something went wrong: Can not load emulator settings from server`, ); } } @@ -124,7 +124,7 @@ export const WorkspaceSettings: FunctionComponent = ( } } catch (e) { toast.error( - "Something went wrong: Can not fetch default ProjectSettings from server" + "Something went wrong: Can not fetch default ProjectSettings from server", ); } } @@ -372,7 +372,7 @@ function getHashAlgorithmRadioOptions(hashAlgorithms: HashAlgorithm[]) { } function getSignatureAlgorithmRadioOptions( - sigAlgorithms: SignatureAlgorithm[] + sigAlgorithms: SignatureAlgorithm[], ) { return sigAlgorithms.map((algo) => ({ label: FlowUtils.getSignatureAlgoName(algo), diff --git a/packages/ui/tsconfig.json b/packages/ui/tsconfig.json index 45b87de3c..b8fa20f29 100644 --- a/packages/ui/tsconfig.json +++ b/packages/ui/tsconfig.json @@ -6,12 +6,8 @@ "outDir": "./dist", "module": "esnext", "target": "es5", - "lib": [ - "es6", - "dom", - "ES2021" - ], + "lib": ["es6", "dom", "ES2021"], "jsx": "react-jsx", - "baseUrl": "src", + "baseUrl": "src" } } diff --git a/turbo.json b/turbo.json index 45e2b1a81..7caa71247 100644 --- a/turbo.json +++ b/turbo.json @@ -10,6 +10,7 @@ "dependsOn": ["^build", "^compile"], "outputs": ["dist/**", ".next/**"] }, + "format": {}, "lint": { "outputs": [] }, diff --git a/yarn.lock b/yarn.lock index 4911502c3..8af033116 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,11 +2,6 @@ # yarn lockfile v1 -"7zip-bin@~5.1.1": - version "5.1.1" - resolved "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.1.1.tgz" - integrity sha512-sAP4LldeWNz0lNzmTird3uWfFDWWTeg6V/MsmyyLR9X1idwKBWIgt/ZvinqQldJm3LecKEs1emkbquO6PCiLVQ== - "@aashutoshrathi/word-wrap@^1.2.3": version "1.2.6" resolved "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz" @@ -33,7 +28,7 @@ "@babel/highlight" "^7.22.13" chalk "^2.4.2" -"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.23.2": +"@babel/compat-data@^7.22.6": version "7.23.2" resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.2.tgz" integrity sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ== @@ -43,7 +38,33 @@ resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.20.tgz" integrity sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw== -"@babel/core@^7.11.6", "@babel/core@^7.12.3": +"@babel/compat-data@^7.23.2": + version "7.23.2" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.2.tgz" + integrity sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ== + +"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.0.0-0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.12.0", "@babel/core@^7.13.0", "@babel/core@^7.21.3", "@babel/core@^7.4.0 || ^8.0.0-0 <8.0.0", "@babel/core@>=7.0.0-beta.0 <8": + version "7.23.0" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.23.0.tgz" + integrity sha512-97z/ju/Jy1rZmDxybphrBuI+jtJjFVoz7Mr9yUQVVVi+DNZE333uFQeMOqcCIy1x3WYBIbWftUSLmbNXNT7qFQ== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.22.13" + "@babel/generator" "^7.23.0" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-module-transforms" "^7.23.0" + "@babel/helpers" "^7.23.0" + "@babel/parser" "^7.23.0" + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.0" + "@babel/types" "^7.23.0" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/core@^7.11.6", "@babel/core@^7.8.0": version "7.23.2" resolved "https://registry.npmjs.org/@babel/core/-/core-7.23.2.tgz" integrity sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ== @@ -64,20 +85,20 @@ json5 "^2.2.3" semver "^6.3.1" -"@babel/core@^7.21.3": - version "7.23.0" - resolved "https://registry.npmjs.org/@babel/core/-/core-7.23.0.tgz" - integrity sha512-97z/ju/Jy1rZmDxybphrBuI+jtJjFVoz7Mr9yUQVVVi+DNZE333uFQeMOqcCIy1x3WYBIbWftUSLmbNXNT7qFQ== +"@babel/core@^7.12.3": + version "7.23.2" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.23.2.tgz" + integrity sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ== dependencies: "@ampproject/remapping" "^2.2.0" "@babel/code-frame" "^7.22.13" "@babel/generator" "^7.23.0" "@babel/helper-compilation-targets" "^7.22.15" "@babel/helper-module-transforms" "^7.23.0" - "@babel/helpers" "^7.23.0" + "@babel/helpers" "^7.23.2" "@babel/parser" "^7.23.0" "@babel/template" "^7.22.15" - "@babel/traverse" "^7.23.0" + "@babel/traverse" "^7.23.2" "@babel/types" "^7.23.0" convert-source-map "^2.0.0" debug "^4.1.0" @@ -1037,7 +1058,7 @@ resolved "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== -"@babel/runtime@^7.12.5", "@babel/runtime@^7.20.7", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.12.5": version "7.23.2" resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz" integrity sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg== @@ -1051,6 +1072,27 @@ dependencies: regenerator-runtime "^0.14.0" +"@babel/runtime@^7.20.7": + version "7.23.2" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz" + integrity sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg== + dependencies: + regenerator-runtime "^0.14.0" + +"@babel/runtime@^7.8.4": + version "7.23.2" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz" + integrity sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg== + dependencies: + regenerator-runtime "^0.14.0" + +"@babel/runtime@^7.9.2": + version "7.23.2" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz" + integrity sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg== + dependencies: + regenerator-runtime "^0.14.0" + "@babel/template@^7.22.15", "@babel/template@^7.22.5", "@babel/template@^7.3.3": version "7.22.15" resolved "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz" @@ -1178,7 +1220,7 @@ "@codemirror/view" "^6.0.0" "@lezer/highlight" "^1.0.0" -"@codemirror/view@^6.0.0", "@codemirror/view@^6.17.0": +"@codemirror/view@^6.0.0", "@codemirror/view@^6.17.0", "@codemirror/view@>=6.0.0": version "6.21.3" resolved "https://registry.npmjs.org/@codemirror/view/-/view-6.21.3.tgz" integrity sha512-8l1aSQ6MygzL4Nx7GVYhucSXvW4jQd0F6Zm3v9Dg+6nZEfwzJVqi4C2zHfDljID+73gsQrWp9TgHc81xU15O4A== @@ -1202,7 +1244,7 @@ ajv "^6.12.0" ajv-keywords "^3.4.1" -"@discoveryjs/json-ext@0.5.7", "@discoveryjs/json-ext@^0.5.0": +"@discoveryjs/json-ext@^0.5.0", "@discoveryjs/json-ext@0.5.7": version "0.5.7" resolved "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz" integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== @@ -1231,7 +1273,7 @@ optionalDependencies: global-agent "^3.0.0" -"@electron/notarize@2.1.0", "@electron/notarize@^2.1.0": +"@electron/notarize@^2.1.0", "@electron/notarize@2.1.0": version "2.1.0" resolved "https://registry.npmjs.org/@electron/notarize/-/notarize-2.1.0.tgz" integrity sha512-Q02xem1D0sg4v437xHgmBLxI2iz/fc0D4K7fiVWHa/AnW8o7D751xyKNXgziA6HrTOme9ul1JfWN5ark8WH1xA== @@ -1467,7 +1509,7 @@ jest-mock "^29.7.0" jest-util "^29.7.0" -"@jest/globals@^29.7.0": +"@jest/globals@^29.7.0", "@jest/globals@>= 28": version "29.7.0" resolved "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz" integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ== @@ -1564,7 +1606,7 @@ slash "^3.0.0" write-file-atomic "^4.0.2" -"@jest/types@^29.6.3": +"@jest/types@^29.0.0", "@jest/types@^29.6.3": version "29.6.3" resolved "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz" integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== @@ -1608,14 +1650,6 @@ resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== -"@jridgewell/trace-mapping@0.3.9": - version "0.3.9" - resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz" - integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.9": version "0.3.19" resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz" @@ -1624,6 +1658,14 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@leichtgewicht/ip-codec@^2.0.1": version "2.0.4" resolved "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz" @@ -1685,7 +1727,7 @@ "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": +"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": version "2.0.5" resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== @@ -1827,6 +1869,76 @@ dependencies: "@babel/runtime" "^7.18.6" +"@onflowser/api@*", "@onflowser/api@file:/Users/bartkozorog/Projects/flowser/packages/api": + version "1.0.0" + resolved "file:packages/api" + dependencies: + "@onflowser/config" "*" + +"@onflowser/config@*", "@onflowser/config@file:/Users/bartkozorog/Projects/flowser/packages/config": + version "0.0.0" + resolved "file:packages/config" + +"@onflowser/core@file:/Users/bartkozorog/Projects/flowser/packages/core": + version "1.0.0" + resolved "file:packages/core" + dependencies: + "@onflow/fcl" "^1.6.0" + "@onflowser/api" "*" + "@onflowser/config" "*" + axios "^0.21.4" + node-abort-controller "^3.0.1" + +"@onflowser/electron@file:/Users/bartkozorog/Projects/flowser/apps/electron": + version "3.0.0" + resolved "file:apps/electron" + dependencies: + "@fingerprintjs/fingerprintjs" "^4.1.0" + "@sentry/electron" "^4.13.0" + electron-debug "^3.2.0" + electron-log "^4.4.8" + electron-updater "^6.1.4" + mixpanel-browser "^2.47.0" + react "^18.2.0" + react-dom "^18.2.0" + react-hot-toast "^2.1.1" + react-router-dom "^6.16.0" + swr "^2.2.4" + +"@onflowser/nodejs@file:/Users/bartkozorog/Projects/flowser/packages/nodejs": + version "1.0.0" + resolved "file:packages/nodejs" + dependencies: + "@onflow/fcl" "^1.6.0" + "@onflowser/config" "*" + elliptic "^6.5.4" + +"@onflowser/ui@*", "@onflowser/ui@file:/Users/bartkozorog/Projects/flowser/packages/ui": + version "0.0.0" + resolved "file:packages/ui" + dependencies: + "@codemirror/legacy-modes" "^6.1.0" + "@onflowser/api" "*" + "@szhsin/react-menu" "4.0.3" + "@tanstack/react-table" "^8.5.11" + "@uidotdev/usehooks" "^2.3.1" + "@uiw/codemirror-extensions-basic-setup" "^4.12.4" + "@uiw/codemirror-theme-github" "^4.12.4" + "@uiw/react-codemirror" "^4.12.4" + ansi-to-html "^0.7.2" + classnames "^2.3.2" + copy-to-clipboard "^3.3.3" + date-fns "^2.30.0" + dateformat "^5.0.3" + formik "^2.2.9" + mixpanel-browser "^2.47.0" + react-helmet "^6.1.0" + react-icons "^4.11.0" + react-json-view "^1.21.3" + react-timeago "^7.2.0" + reactjs-popup "2.0.5" + yup "^0.32.11" + "@pkgjs/parseargs@^0.11.0": version "0.11.0" resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz" @@ -2037,7 +2149,7 @@ "@svgr/babel-plugin-transform-react-native-svg" "8.1.0" "@svgr/babel-plugin-transform-svg-component" "8.0.0" -"@svgr/core@8.1.0", "@svgr/core@^8.1.0": +"@svgr/core@*", "@svgr/core@^8.1.0", "@svgr/core@8.1.0": version "8.1.0" resolved "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz" integrity sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA== @@ -2056,7 +2168,7 @@ "@babel/types" "^7.21.3" entities "^4.4.0" -"@svgr/plugin-jsx@8.1.0", "@svgr/plugin-jsx@^8.1.0": +"@svgr/plugin-jsx@^8.1.0", "@svgr/plugin-jsx@8.1.0": version "8.1.0" resolved "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz" integrity sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA== @@ -2301,7 +2413,7 @@ "@types/eslint" "*" "@types/estree" "*" -"@types/eslint@*": +"@types/eslint@*", "@types/eslint@>=8.0.0": version "8.44.4" resolved "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.4.tgz" integrity sha512-lOzjyfY/D9QR4hY9oblZ76B90MYTB3RrQ4z2vBIJKj9ROCRqdkYl2gSUx1x1a4IWPjKJZLL4Aw1Zfay7eMnmnA== @@ -2334,7 +2446,7 @@ "@types/qs" "*" "@types/serve-static" "*" -"@types/fs-extra@9.0.13", "@types/fs-extra@^9.0.11": +"@types/fs-extra@^9.0.11", "@types/fs-extra@9.0.13": version "9.0.13" resolved "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz" integrity sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA== @@ -2397,7 +2509,7 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/jest@^29.5.5": +"@types/jest@^29.5.5", "@types/jest@>= 28": version "29.5.5" resolved "https://registry.npmjs.org/@types/jest/-/jest-29.5.5.tgz" integrity sha512-ebylz2hnsWR9mYvmBFbXJXr+33UPc4+ZdxyDXh5w0FlPBTfCVN3wPL+kuOiQt3xvrK419v7XWeAs+AeOksafXg== @@ -2461,16 +2573,16 @@ resolved "https://registry.npmjs.org/@types/node/-/node-16.18.55.tgz" integrity sha512-Y1zz/LIuJek01+hlPNzzXQhmq/Z2BCP96j18MSXC0S0jSu/IG4FFxmBs7W4/lI2vPJ7foVfEB0hUVtnOjnCiTg== -"@types/node@20.6.2": - version "20.6.2" - resolved "https://registry.npmjs.org/@types/node/-/node-20.6.2.tgz" - integrity sha512-Y+/1vGBHV/cYk6OI1Na/LHzwnlNCAfU3ZNGrc1LdRe/LAIbdDPTTv/HU3M7yXN448aTVDq3eKRm2cg7iKLb8gw== - "@types/node@^18.11.18": version "18.18.5" resolved "https://registry.npmjs.org/@types/node/-/node-18.18.5.tgz" integrity sha512-4slmbtwV59ZxitY4ixUZdy1uRLf9eSIvBWPQxNjhHYWEtn0FryfKpyS2cvADYXTayWdKEIsJengncrVvkI4I6A== +"@types/node@20.6.2": + version "20.6.2" + resolved "https://registry.npmjs.org/@types/node/-/node-20.6.2.tgz" + integrity sha512-Y+/1vGBHV/cYk6OI1Na/LHzwnlNCAfU3ZNGrc1LdRe/LAIbdDPTTv/HU3M7yXN448aTVDq3eKRm2cg7iKLb8gw== + "@types/plist@^3.0.1": version "3.0.3" resolved "https://registry.npmjs.org/@types/plist/-/plist-3.0.3.tgz" @@ -2643,7 +2755,7 @@ dependencies: "@types/node" "*" -"@typescript-eslint/eslint-plugin@^6.7.0": +"@typescript-eslint/eslint-plugin@^5.0.0 || ^6.0.0", "@typescript-eslint/eslint-plugin@^5.13.0 || ^6.0.0", "@typescript-eslint/eslint-plugin@^6.7.0": version "6.7.5" resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.5.tgz" integrity sha512-JhtAwTRhOUcP96D0Y6KYnwig/MRQbOoLGXTON2+LlyB/N35SP9j1boai2zzwXb7ypKELXMx3DVk9UTaEq1vHEw== @@ -2660,7 +2772,7 @@ semver "^7.5.4" ts-api-utils "^1.0.1" -"@typescript-eslint/parser@^6.7.0": +"@typescript-eslint/parser@^5.0.0 || ^6.0.0", "@typescript-eslint/parser@^6.0.0 || ^6.0.0-alpha", "@typescript-eslint/parser@^6.7.0": version "6.7.5" resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.7.5.tgz" integrity sha512-bIZVSGx2UME/lmhLcjdVc7ePBwn7CLqKarUBL4me1C5feOd663liTGjMBGVcGr+BhnSLeP4SgwdvNnnkbIdkCw== @@ -2733,19 +2845,6 @@ semver "^7.5.4" ts-api-utils "^1.0.1" -"@typescript-eslint/utils@6.7.5": - version "6.7.5" - resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.7.5.tgz" - integrity sha512-pfRRrH20thJbzPPlPc4j0UNGvH1PjPlhlCMq4Yx7EGjV7lvEeGX0U6MJYe8+SyFutWgSHsdbJ3BXzZccYggezA== - dependencies: - "@eslint-community/eslint-utils" "^4.4.0" - "@types/json-schema" "^7.0.12" - "@types/semver" "^7.5.0" - "@typescript-eslint/scope-manager" "6.7.5" - "@typescript-eslint/types" "6.7.5" - "@typescript-eslint/typescript-estree" "6.7.5" - semver "^7.5.4" - "@typescript-eslint/utils@^5.10.0": version "5.62.0" resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz" @@ -2760,6 +2859,19 @@ eslint-scope "^5.1.1" semver "^7.3.7" +"@typescript-eslint/utils@6.7.5": + version "6.7.5" + resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.7.5.tgz" + integrity sha512-pfRRrH20thJbzPPlPc4j0UNGvH1PjPlhlCMq4Yx7EGjV7lvEeGX0U6MJYe8+SyFutWgSHsdbJ3BXzZccYggezA== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@types/json-schema" "^7.0.12" + "@types/semver" "^7.5.0" + "@typescript-eslint/scope-manager" "6.7.5" + "@typescript-eslint/types" "6.7.5" + "@typescript-eslint/typescript-estree" "6.7.5" + semver "^7.5.4" + "@typescript-eslint/visitor-keys@5.62.0": version "5.62.0" resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz" @@ -2781,7 +2893,7 @@ resolved "https://registry.npmjs.org/@uidotdev/usehooks/-/usehooks-2.3.1.tgz" integrity sha512-1GL8CatTsTGZdwPNrZ44JhJI5QWip7oyDXEXFBEibJ+P+p+ZBi7mKrpG90ZIdQTSEcvkfiE2Y492Uo3ubPBZ3g== -"@uiw/codemirror-extensions-basic-setup@4.21.19", "@uiw/codemirror-extensions-basic-setup@^4.12.4": +"@uiw/codemirror-extensions-basic-setup@^4.12.4", "@uiw/codemirror-extensions-basic-setup@4.21.19": version "4.21.19" resolved "https://registry.npmjs.org/@uiw/codemirror-extensions-basic-setup/-/codemirror-extensions-basic-setup-4.21.19.tgz" integrity sha512-FwnzjNSc1mbzlcOlGmZgK2JMFcmPSHDeDUoql4ioyffF6ytiUD6LB9exOlQlAppzAZkKBYHqBwBjd0gdJYpH/w== @@ -2822,7 +2934,7 @@ "@uiw/codemirror-extensions-basic-setup" "4.21.19" codemirror "^6.0.0" -"@webassemblyjs/ast@1.11.6", "@webassemblyjs/ast@^1.11.5": +"@webassemblyjs/ast@^1.11.5", "@webassemblyjs/ast@1.11.6": version "1.11.6" resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz" integrity sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q== @@ -2923,7 +3035,7 @@ "@webassemblyjs/wasm-gen" "1.11.6" "@webassemblyjs/wasm-parser" "1.11.6" -"@webassemblyjs/wasm-parser@1.11.6", "@webassemblyjs/wasm-parser@^1.11.5": +"@webassemblyjs/wasm-parser@^1.11.5", "@webassemblyjs/wasm-parser@1.11.6": version "1.11.6" resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz" integrity sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ== @@ -2973,6 +3085,11 @@ resolved "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== +"7zip-bin@~5.1.1": + version "5.1.1" + resolved "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.1.1.tgz" + integrity sha512-sAP4LldeWNz0lNzmTird3uWfFDWWTeg6V/MsmyyLR9X1idwKBWIgt/ZvinqQldJm3LecKEs1emkbquO6PCiLVQ== + abab@^2.0.6: version "2.0.6" resolved "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz" @@ -3021,7 +3138,7 @@ acorn-walk@^8.0.0, acorn-walk@^8.0.2, acorn-walk@^8.1.1: resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz" integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== -acorn@^8.0.4, acorn@^8.1.0, acorn@^8.4.1, acorn@^8.7.1, acorn@^8.8.1, acorn@^8.8.2, acorn@^8.9.0: +"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8, acorn@^8.0.4, acorn@^8.1.0, acorn@^8.4.1, acorn@^8.7.1, acorn@^8.8.1, acorn@^8.8.2, acorn@^8.9.0: version "8.10.0" resolved "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz" integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== @@ -3031,7 +3148,7 @@ address@^1.0.1: resolved "https://registry.npmjs.org/address/-/address-1.2.2.tgz" integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA== -agent-base@6, agent-base@^6.0.2: +agent-base@^6.0.2, agent-base@6: version "6.0.2" resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== @@ -3072,7 +3189,7 @@ ajv-keywords@^5.1.0: dependencies: fast-deep-equal "^3.1.3" -ajv@^6.10.0, ajv@^6.12.0, ajv@^6.12.4, ajv@^6.12.5: +ajv@^6.10.0, ajv@^6.12.0, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.9.1: version "6.12.6" resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -3082,7 +3199,7 @@ ajv@^6.10.0, ajv@^6.12.0, ajv@^6.12.4, ajv@^6.12.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.0, ajv@^8.9.0: +ajv@^8.0.0, ajv@^8.8.2, ajv@^8.9.0: version "8.12.0" resolved "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz" integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== @@ -3168,13 +3285,13 @@ app-builder-lib@24.6.4: resolved "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-24.6.4.tgz" integrity sha512-m9931WXb83teb32N0rKg+ulbn6+Hl8NV5SUpVDOVz9MWOXfhV6AQtTdftf51zJJvCQnQugGtSqoLvgw6mdF/Rg== dependencies: - "7zip-bin" "~5.1.1" "@develar/schema-utils" "~2.6.5" "@electron/notarize" "2.1.0" "@electron/osx-sign" "1.0.5" "@electron/universal" "1.4.1" "@malept/flatpak-bundler" "^0.4.0" "@types/fs-extra" "9.0.13" + "7zip-bin" "~5.1.1" async-exit-hook "^2.0.1" bluebird-lst "^1.0.9" builder-util "24.5.0" @@ -3227,13 +3344,6 @@ argparse@^2.0.1: resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -aria-query@5.1.3: - version "5.1.3" - resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz" - integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== - dependencies: - deep-equal "^2.0.5" - aria-query@^5.0.0, aria-query@^5.1.3: version "5.3.0" resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz" @@ -3241,6 +3351,13 @@ aria-query@^5.0.0, aria-query@^5.1.3: dependencies: dequal "^2.0.3" +aria-query@5.1.3: + version "5.1.3" + resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz" + integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== + dependencies: + deep-equal "^2.0.5" + array-buffer-byte-length@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz" @@ -3249,16 +3366,16 @@ array-buffer-byte-length@^1.0.0: call-bind "^1.0.2" is-array-buffer "^3.0.1" -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" - integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== - array-flatten@^2.1.2: version "2.1.2" resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz" integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== + array-includes@^3.1.6: version "3.1.7" resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz" @@ -3640,7 +3757,7 @@ browserslist-config-erb@^0.0.3: resolved "https://registry.npmjs.org/browserslist-config-erb/-/browserslist-config-erb-0.0.3.tgz" integrity sha512-y47DryCY92lxkKyRVMlaZvXAolIY7U33q9e4CS0MdWeJkoAht7OzsrkfdZFCBOP3H5q1EVUxS0L7VVsKM6gZCQ== -browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.21.9, browserslist@^4.22.1: +browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.21.9, browserslist@^4.22.1, "browserslist@>= 4.21.0": version "4.22.1" resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz" integrity sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ== @@ -3679,7 +3796,15 @@ buffer-from@^1.0.0: resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -buffer@6.0.3, buffer@^6.0.3: +buffer@^5.1.0, buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +buffer@^6.0.3: version "6.0.3" resolved "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz" integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== @@ -3687,13 +3812,13 @@ buffer@6.0.3, buffer@^6.0.3: base64-js "^1.3.1" ieee754 "^1.2.1" -buffer@^5.1.0, buffer@^5.5.0: - version "5.7.1" - resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== +buffer@6.0.3: + version "6.0.3" + resolved "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== dependencies: base64-js "^1.3.1" - ieee754 "^1.1.13" + ieee754 "^1.2.1" builder-util-runtime@9.2.1: version "9.2.1" @@ -3708,8 +3833,8 @@ builder-util@24.5.0: resolved "https://registry.npmjs.org/builder-util/-/builder-util-24.5.0.tgz" integrity sha512-STnBmZN/M5vGcv01u/K8l+H+kplTaq4PAIn3yeuufUKSpcdro0DhJWxPI81k5XcNfC//bjM3+n9nr8F9uV4uAQ== dependencies: - "7zip-bin" "~5.1.1" "@types/debug" "^4.1.6" + "7zip-bin" "~5.1.1" app-builder-bin "4.0.0" bluebird-lst "^1.0.9" builder-util-runtime "9.2.1" @@ -3859,7 +3984,7 @@ char-regex@^1.0.2: resolved "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz" integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== -"chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.3: +chokidar@^3.5.3, "chokidar@>=3.0.0 <4.0.0": version "3.5.3" resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== @@ -4016,16 +4141,16 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - color-name@~1.1.4: version "1.1.4" resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + color-support@^1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz" @@ -4183,7 +4308,7 @@ cookie-signature@1.0.6: resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== -cookie@0.5.0, cookie@^0.5.0: +cookie@^0.5.0, cookie@0.5.0: version "0.5.0" resolved "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz" integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== @@ -4212,16 +4337,16 @@ core-js@^3.32.2: resolved "https://registry.npmjs.org/core-js/-/core-js-3.33.0.tgz" integrity sha512-HoZr92+ZjFEKar5HS6MC776gYslNOKHt75mEBKWKnPeFDpZ6nH5OeF3S6HFT1mUAUZKrzkez05VboaX8myjSuw== -core-util-is@1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== - core-util-is@~1.0.0: version "1.0.3" resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== +core-util-is@1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== + cosmiconfig@^8.1.3: version "8.3.6" resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz" @@ -4441,7 +4566,7 @@ cssstyle@^2.3.0: dependencies: cssom "~0.3.6" -csstype@^3.0.2: +csstype@^3.0.10, csstype@^3.0.2: version "3.1.2" resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz" integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== @@ -4472,26 +4597,26 @@ dateformat@^5.0.3: resolved "https://registry.npmjs.org/dateformat/-/dateformat-5.0.3.tgz" integrity sha512-Kvr6HmPXUMerlLcLF+Pwq3K7apHpYmGDVqrxcDasBg86UcKeTSNWbEzU8bwdXnxnR44FtMhJAxI4Bov6Y/KUfA== -debug@2.6.9: - version "2.6.9" - resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== +debug@^3.2.7: + version "3.2.7" + resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== dependencies: - ms "2.0.0" + ms "^2.1.1" -debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: +debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4, debug@4: version "4.3.4" resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" -debug@^3.2.7: - version "3.2.7" - resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== +debug@2.6.9: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: - ms "^2.1.1" + ms "2.0.0" decimal.js@^10.4.2: version "10.4.3" @@ -4539,11 +4664,6 @@ deep-is@^0.1.3: resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== -deepmerge@4.3.0: - version "4.3.0" - resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.0.tgz" - integrity sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og== - deepmerge@^2.1.1: version "2.2.1" resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz" @@ -4554,6 +4674,11 @@ deepmerge@^4.2.2, deepmerge@^4.3.1: resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz" integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== +deepmerge@4.3.0: + version "4.3.0" + resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.0.tgz" + integrity sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og== + default-browser-id@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz" @@ -4629,16 +4754,16 @@ delegates@^1.0.0: resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz" integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== -depd@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - depd@~1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== +depd@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + dequal@^2.0.3: version "2.0.3" resolved "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz" @@ -4957,7 +5082,7 @@ electron-updater@^6.1.4: semver "^7.3.8" tiny-typed-emitter "^2.1.0" -electron@26.2.1: +electron@>=12.0.0, electron@26.2.1: version "26.2.1" resolved "https://registry.npmjs.org/electron/-/electron-26.2.1.tgz" integrity sha512-SNT24Cf/wRvfcFZQoERXjzswUlg5ouqhIuA2t9x2L7VdTn+2Jbs0QXRtOfzcnOV/raVMz3e8ICyaU2GGeciKLg== @@ -5014,7 +5139,7 @@ encodeurl@~1.0.2: resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== -encoding@^0.1.13: +encoding@^0.1.0, encoding@^0.1.13: version "0.1.13" resolved "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz" integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== @@ -5050,7 +5175,12 @@ entities@^2.0.0, entities@^2.2.0: resolved "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz" integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== -entities@^4.2.0, entities@^4.4.0: +entities@^4.2.0: + version "4.5.0" + resolved "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz" + integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== + +entities@^4.4.0: version "4.5.0" resolved "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz" integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== @@ -5344,7 +5474,7 @@ eslint-plugin-compat@^4.2.0: lodash.memoize "^4.1.2" semver "^7.5.4" -eslint-plugin-import@^2.28.1: +eslint-plugin-import@*, eslint-plugin-import@^2.25.2, eslint-plugin-import@^2.25.3, eslint-plugin-import@^2.28.1, eslint-plugin-import@>=1.4.0: version "2.28.1" resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz" integrity sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A== @@ -5387,7 +5517,7 @@ eslint-plugin-jsdoc@^40.0.0: semver "^7.3.8" spdx-expression-parse "^3.0.1" -eslint-plugin-jsx-a11y@6.7.1, eslint-plugin-jsx-a11y@^6.7.1: +eslint-plugin-jsx-a11y@^6.5.1, eslint-plugin-jsx-a11y@^6.7.1, eslint-plugin-jsx-a11y@6.7.1: version "6.7.1" resolved "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz" integrity sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA== @@ -5422,12 +5552,12 @@ eslint-plugin-promise@^6.1.1: resolved "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz" integrity sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig== -eslint-plugin-react-hooks@^4.6.0: +eslint-plugin-react-hooks@^4.3.0, eslint-plugin-react-hooks@^4.6.0: version "4.6.0" resolved "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz" integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== -eslint-plugin-react@^7.33.2: +eslint-plugin-react@^7.28.0, eslint-plugin-react@^7.33.2: version "7.33.2" resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz" integrity sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw== @@ -5449,7 +5579,7 @@ eslint-plugin-react@^7.33.2: semver "^6.3.1" string.prototype.matchall "^4.0.8" -eslint-scope@5.1.1, eslint-scope@^5.1.1: +eslint-scope@^5.1.1, eslint-scope@5.1.1: version "5.1.1" resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== @@ -5470,7 +5600,7 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4 resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== -eslint@^8.34.0, eslint@^8.49.0: +eslint@*, "eslint@^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8", "eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8", "eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", "eslint@^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0", "eslint@^6.0.0 || ^7.0.0 || ^8.0.0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^7.0.0 || ^8.0.0", "eslint@^7.32.0 || ^8.2.0", eslint@^8.34.0, eslint@^8.49.0, "eslint@>=7 || >=8", eslint@>=7.0.0, eslint@>=8.0.0: version "8.51.0" resolved "https://registry.npmjs.org/eslint/-/eslint-8.51.0.tgz" integrity sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA== @@ -5706,7 +5836,7 @@ fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.1: merge2 "^1.3.0" micromatch "^4.0.4" -fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: +fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0, fast-json-stable-stringify@2.x: 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== @@ -5781,7 +5911,7 @@ file-entry-cache@^6.0.1: dependencies: flat-cache "^3.0.4" -file-loader@^6.2.0: +file-loader@*, file-loader@^6.2.0: version "6.2.0" resolved "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz" integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== @@ -5821,7 +5951,15 @@ find-root@^1.1.0: resolved "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz" integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== -find-up@^4.0.0, find-up@^4.1.0: +find-up@^4.0.0: + version "4.1.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== @@ -5935,7 +6073,17 @@ fs-extra@^8.1.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^9.0.0, fs-extra@^9.0.1: +fs-extra@^9.0.0: + version "9.1.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-extra@^9.0.1: version "9.1.0" resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== @@ -6040,7 +6188,12 @@ get-stream@^5.1.0: dependencies: pump "^3.0.0" -get-stream@^6.0.0, get-stream@^6.0.1: +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +get-stream@^6.0.1: version "6.0.1" resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== @@ -6079,7 +6232,7 @@ glob-to-regexp@^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== -glob@^10.2.2, glob@^10.3.7: +glob@^10.2.2: version "10.3.10" resolved "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz" integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== @@ -6090,8 +6243,19 @@ glob@^10.2.2, glob@^10.3.7: minipass "^5.0.0 || ^6.0.2 || ^7.0.0" path-scurry "^1.10.1" -glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: - version "7.2.3" +glob@^10.3.7: + version "10.3.10" + resolved "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz" + integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== + dependencies: + foreground-child "^3.1.0" + jackspeak "^2.3.5" + minimatch "^9.0.1" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-scurry "^1.10.1" + +glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: + version "7.2.3" resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== dependencies: @@ -6357,6 +6521,16 @@ http-deceiver@^1.2.7: resolved "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz" integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" + integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + http-errors@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" @@ -6368,16 +6542,6 @@ http-errors@2.0.0: statuses "2.0.1" toidentifier "1.0.1" -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" - integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - http-parser-js@>=0.5.1: version "0.5.8" resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz" @@ -6458,6 +6622,13 @@ iconv-corefoundation@^1.1.7: cli-truncate "^2.1.0" node-addon-api "^1.6.3" +iconv-lite@^0.6.2, iconv-lite@0.6.3: + version "0.6.3" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + iconv-lite@0.4.24: version "0.4.24" resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" @@ -6465,13 +6636,6 @@ iconv-lite@0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" -iconv-lite@0.6.3, iconv-lite@^0.6.2: - version "0.6.3" - resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" - integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== - dependencies: - safer-buffer ">= 2.1.2 < 3.0.0" - icss-utils@^5.0.0, icss-utils@^5.1.0: version "5.1.0" resolved "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz" @@ -6545,7 +6709,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: +inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3, inherits@2, inherits@2.0.4: version "2.0.4" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -6579,16 +6743,16 @@ ip@^2.0.0: resolved "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz" integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ== -ipaddr.js@1.9.1: - 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== - ipaddr.js@^2.0.1: version "2.1.0" resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz" integrity sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ== +ipaddr.js@1.9.1: + 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== + is-arguments@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz" @@ -7197,7 +7361,7 @@ jest-resolve-dependencies@^29.7.0: jest-regex-util "^29.6.3" jest-snapshot "^29.7.0" -jest-resolve@^29.7.0: +jest-resolve@*, jest-resolve@^29.7.0: version "29.7.0" resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz" integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA== @@ -7350,7 +7514,7 @@ jest-worker@^29.4.3, jest-worker@^29.7.0: merge-stream "^2.0.0" supports-color "^8.0.0" -jest@^29.7.0: +jest@*, jest@^29.0.0, jest@^29.7.0, "jest@>= 28", jest@>=27.0.0: version "29.7.0" resolved "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz" integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw== @@ -7457,7 +7621,14 @@ json-stringify-safe@^5.0.1: resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== -json5@^1.0.1, json5@^1.0.2: +json5@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== + dependencies: + minimist "^1.2.0" + +json5@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz" integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== @@ -7584,16 +7755,16 @@ lie@~3.3.0: dependencies: immediate "~3.0.5" -lilconfig@2.0.5: - version "2.0.5" - resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz" - integrity sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg== - lilconfig@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz" integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== +lilconfig@2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz" + integrity sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg== + lines-and-columns@^1.1.6: version "1.2.4" resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" @@ -7720,7 +7891,7 @@ lodash.isequal@^4.5.0: resolved "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz" integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== -lodash.memoize@4.x, lodash.memoize@^4.1.2: +lodash.memoize@^4.1.2, lodash.memoize@4.x: version "4.1.2" resolved "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== @@ -7787,6 +7958,11 @@ lowercase-keys@^2.0.0: resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz" integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== +lru_map@^0.3.3: + version "0.3.3" + resolved "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz" + integrity sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ== + lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" @@ -7811,11 +7987,6 @@ lru-cache@^7.7.1: resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz" integrity sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g== -lru_map@^0.3.3: - version "0.3.3" - resolved "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz" - integrity sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ== - lz-string@^1.5.0: version "1.5.0" resolved "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz" @@ -7828,7 +7999,7 @@ make-dir@^4.0.0: dependencies: semver "^7.5.3" -make-error@1.x, make-error@^1.1.1: +make-error@^1.1.1, make-error@1.x: version "1.3.6" resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== @@ -7923,7 +8094,7 @@ micromatch@^4.0.0, micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: braces "^3.0.2" picomatch "^2.3.1" -mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": +"mime-db@>= 1.43.0 < 2", mime-db@1.52.0: version "1.52.0" resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== @@ -7935,16 +8106,16 @@ mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, dependencies: mime-db "1.52.0" -mime@1.6.0: - version "1.6.0" - resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - mime@^2.5.2: version "2.6.0" resolved "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz" integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== +mime@1.6.0: + version "1.6.0" + resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" @@ -7994,7 +8165,14 @@ minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: dependencies: brace-expansion "^1.1.7" -minimatch@^5.0.1, minimatch@^5.1.1: +minimatch@^5.0.1: + version "5.1.6" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^5.1.1: version "5.1.6" resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz" integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== @@ -8059,12 +8237,17 @@ minipass@^3.0.0: dependencies: yallist "^4.0.0" +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.3: + version "7.0.4" + resolved "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz" + integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== + minipass@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz" integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.3: +minipass@^7.0.3: version "7.0.4" resolved "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz" integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== @@ -8099,6 +8282,11 @@ mrmime@^1.0.0: resolved "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz" integrity sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw== +ms@^2.0.0, ms@^2.1.1, ms@2.1.3: + version "2.1.3" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + ms@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" @@ -8109,11 +8297,6 @@ ms@2.1.2: resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@2.1.3, ms@^2.0.0, ms@^2.1.1: - version "2.1.3" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - multicast-dns@^7.2.5: version "7.2.5" resolved "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz" @@ -8137,7 +8320,7 @@ natural-compare@^1.4.0: resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== -negotiator@0.6.3, negotiator@^0.6.3: +negotiator@^0.6.3, negotiator@0.6.3: version "0.6.3" resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== @@ -8879,7 +9062,7 @@ postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@^8.4.21, postcss@^8.4.24: +postcss@^8.0.9, postcss@^8.1.0, postcss@^8.2.15, postcss@^8.2.2, postcss@^8.4.21, postcss@^8.4.24: version "8.4.31" resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz" integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== @@ -8900,7 +9083,7 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@*, prettier@^3.0.3: +prettier@*: version "3.0.3" resolved "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz" integrity sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg== @@ -8910,6 +9093,19 @@ prettier@^2.5.1: resolved "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz" integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== +prettier@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz" + integrity sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg== + +prettier@>=3.0.0: + version "3.0.3" + +prettier@3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz" + integrity sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg== + pretty-error@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz" @@ -9031,7 +9227,7 @@ querystringify@^2.1.1: resolved "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz" integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== -queue-microtask@1.2.3, queue-microtask@^1.2.2: +queue-microtask@^1.2.2, queue-microtask@1.2.3: version "1.2.3" resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== @@ -9073,7 +9269,7 @@ react-base16-styling@^0.6.0: lodash.flow "^3.3.0" pure-color "^1.2.0" -react-dom@^18.2.0: +"react-dom@^17.0.0 || ^16.3.0 || ^15.5.4", react-dom@^18.0.0, react-dom@^18.2.0, react-dom@>=16, react-dom@>=16.14.0, react-dom@>=16.8, react-dom@>=16.8.0, react-dom@>=18.0.0: version "18.2.0" resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz" integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== @@ -9101,7 +9297,7 @@ react-helmet@^6.1.0: react-fast-compare "^3.1.1" react-side-effect "^2.1.0" -react-hot-toast@^2.1.1: +react-hot-toast@^2.1.1, react-hot-toast@^2.4.1: version "2.4.1" resolved "https://registry.npmjs.org/react-hot-toast/-/react-hot-toast-2.4.1.tgz" integrity sha512-j8z+cQbWIM5LY37pR6uZR6D4LfseplqnuAO4co4u8917hBUvXlEqyP1ZzqVLcqoyUesZZv/ImreoCeHVDpE5pQ== @@ -9118,7 +9314,12 @@ react-icons@^4.11.0: resolved "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz" integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== -react-is@^16.13.1, react-is@^16.7.0: +react-is@^16.13.1: + version "16.13.1" + resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-is@^16.7.0: version "16.13.1" resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== @@ -9143,14 +9344,14 @@ react-lifecycles-compat@^3.0.4: resolved "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz" integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== -react-refresh@^0.14.0: +react-refresh@^0.14.0, "react-refresh@>=0.10.0 <1.0.0": version "0.14.0" resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz" integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ== -react-router-dom@6.16.0, react-router-dom@^6.16.0: +react-router-dom@^6.16.0, react-router-dom@6.16.0: version "6.16.0" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.16.0.tgz#86f24658da35eb66727e75ecbb1a029e33ee39d9" + resolved "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.16.0.tgz" integrity sha512-aTfBLv3mk/gaKLxgRDUPbPw+s4Y/O+ma3rEN1u8EgEpLpPe6gNjIsWt9rxushMHHMb7mSwxRGdGlGdvmFsyPIg== dependencies: "@remix-run/router" "1.9.0" @@ -9204,7 +9405,7 @@ react-transition-state@^2.1.0: resolved "https://registry.npmjs.org/react-transition-state/-/react-transition-state-2.1.1.tgz" integrity sha512-kQx5g1FVu9knoz1T1WkapjUgFz08qQ/g1OmuWGi3/AoEFfS0kStxrPlZx81urjCXdz2d+1DqLpU6TyLW/Ro04Q== -react@^18.2.0: +react@*, "react@^15.0.2 || ^16.0.0 || ^17.0.0", "react@^16.0.0 || ^17.0.0 || ^18.0.0", "react@^16.11.0 || ^17.0.0 || ^18.0.0", "react@^16.3.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^17.0.0 || ^16.3.0 || ^15.5.4", "react@^17.0.0 || ^18.0.0", react@^18.0.0, react@^18.2.0, react@>=16, react@>=16.14.0, react@>=16.3.0, react@>=16.8, react@>=16.8.0, "react@>=17.0.0 || >=18.0.0", react@>=18.0.0: version "18.2.0" resolved "https://registry.npmjs.org/react/-/react-18.2.0.tgz" integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== @@ -9228,7 +9429,7 @@ read-config-file@6.3.2: json5 "^2.2.0" lazy-val "^1.0.4" -readable-stream@^2.0.1, readable-stream@~2.3.6: +readable-stream@^2.0.1: version "2.3.8" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== @@ -9250,6 +9451,19 @@ readable-stream@^3.0.6, readable-stream@^3.4.0, readable-stream@^3.6.0: string_decoder "^1.1.1" util-deprecate "^1.0.1" +readable-stream@~2.3.6: + version "2.3.8" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + 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" + readdirp@~3.6.0: version "3.6.0" resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" @@ -9526,15 +9740,20 @@ safe-array-concat@^1.0.1: has-symbols "^1.0.3" isarray "^2.0.5" -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@^5.1.0, safe-buffer@>=5.1.0, safe-buffer@~5.2.0, safe-buffer@5.2.1: + version "5.2.1" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== +safe-buffer@5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== safe-regex-test@^1.0.0: version "1.0.0" @@ -9564,7 +9783,7 @@ sass-loader@^13.3.2: dependencies: neo-async "^2.6.2" -sass@^1.67.0: +sass@^1.3.0, sass@^1.67.0: version "1.69.3" resolved "https://registry.npmjs.org/sass/-/sass-1.69.3.tgz" integrity sha512-X99+a2iGdXkdWn1akFPs0ZmelUzyAQfvqYc2P/MPTrJRuIRoTffGzT9W9nFqG00S+c8hXzVmgxhUuHFdrwxkhQ== @@ -9619,7 +9838,17 @@ schema-utils@^3.0.0, schema-utils@^3.1.1, schema-utils@^3.2.0: ajv "^6.12.5" ajv-keywords "^3.5.2" -schema-utils@^4.0.0, schema-utils@^4.0.1: +schema-utils@^4.0.0: + version "4.2.0" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz" + integrity sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw== + dependencies: + "@types/json-schema" "^7.0.9" + ajv "^8.9.0" + ajv-formats "^2.1.1" + ajv-keywords "^5.1.0" + +schema-utils@^4.0.1: version "4.2.0" resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz" integrity sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw== @@ -9651,7 +9880,12 @@ semver@^5.7.2: resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== -semver@^6.2.0, semver@^6.3.0, semver@^6.3.1: +semver@^6.2.0: + version "6.3.1" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^6.3.0, semver@^6.3.1: version "6.3.1" resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== @@ -9889,19 +10123,11 @@ socks@^2.6.2: ip "^2.0.0" smart-buffer "^4.2.0" -"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.1, source-map-js@^1.0.2: +source-map-js@^1.0.1, source-map-js@^1.0.2, "source-map-js@>=0.6.2 <2.0.0": version "1.0.2" resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== -source-map-support@0.5.13: - version "0.5.13" - resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz" - integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - source-map-support@^0.5.19, source-map-support@~0.5.20: version "0.5.21" resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" @@ -9910,12 +10136,25 @@ source-map-support@^0.5.19, source-map-support@~0.5.20: buffer-from "^1.0.0" source-map "^0.6.0" +source-map-support@0.5.13: + version "0.5.13" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz" + integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: version "0.6.1" resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@^0.7.3, source-map@^0.7.4: +source-map@^0.7.3: + version "0.7.4" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" + integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== + +source-map@^0.7.4: version "0.7.4" resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== @@ -10000,16 +10239,16 @@ stat-mode@^1.0.0: resolved "https://registry.npmjs.org/stat-mode/-/stat-mode-1.0.0.tgz" integrity sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg== -statuses@2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" - integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== - "statuses@>= 1.4.0 < 2": version "1.5.0" resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + stop-iteration-iterator@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz" @@ -10017,6 +10256,20 @@ stop-iteration-iterator@^1.0.0: dependencies: internal-slot "^1.0.4" +string_decoder@^1.1.1: + 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== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + string-argv@^0.3.1: version "0.3.1" resolved "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz" @@ -10030,7 +10283,7 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" -"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0": version "4.2.3" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -10039,7 +10292,25 @@ string-length@^4.0.1: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -string-width@^5.0.0, string-width@^5.0.1, string-width@^5.1.2: +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + 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" + +string-width@^5.0.0: + version "5.1.2" + resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + +string-width@^5.0.1, string-width@^5.1.2: version "5.1.2" resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz" integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== @@ -10090,21 +10361,14 @@ string.prototype.trimstart@^1.0.7: define-properties "^1.2.0" es-abstract "^1.22.1" -string_decoder@^1.1.1: - 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== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: - safe-buffer "~5.1.0" + ansi-regex "^5.0.1" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: +strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -10189,7 +10453,14 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" -supports-color@^8.0.0, supports-color@^8.1.1: +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.1.1: version "8.1.1" resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== @@ -10468,6 +10739,25 @@ ts-node@^10.9.1: v8-compile-cache-lib "^3.0.1" yn "3.1.1" +ts-node@>=9.0.0: + version "10.9.1" + resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz" + integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + tsconfig-paths-webpack-plugin@^4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.1.0.tgz" @@ -10506,7 +10796,22 @@ tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0: resolved "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz" integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== -tslib@^2.4.1, "tslib@^2.4.1 || ^1.9.3", tslib@^2.5.0, tslib@^2.6.0: +"tslib@^2.4.1 || ^1.9.3": + version "2.6.2" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + +tslib@^2.4.1: + version "2.6.2" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + +tslib@^2.5.0: + version "2.6.2" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + +tslib@^2.6.0: version "2.6.2" resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== @@ -10518,36 +10823,11 @@ tsutils@^3.21.0: dependencies: tslib "^1.8.1" -turbo-darwin-64@1.10.4: - version "1.10.4" - resolved "https://registry.yarnpkg.com/turbo-darwin-64/-/turbo-darwin-64-1.10.4.tgz#ee902a1ded21c2dae1deb24b940ec31d07ec9c46" - integrity sha512-oAILq0QZUvOxYZU71SXRsL7DFpqZutPl9CX7+rD48tReHrmhcm3HMeuAFY0S5FD/9fKub04UfAQwVtJSlhvISg== - turbo-darwin-arm64@1.10.4: version "1.10.4" resolved "https://registry.npmjs.org/turbo-darwin-arm64/-/turbo-darwin-arm64-1.10.4.tgz" integrity sha512-N0XPFLXsZRLE6gKDa5MREpPQp0drOz9PrADaaMXTlspxWS/tmmxyH+ZQ/uGqKC/0mqsNIhZuSFsEVZe1PGaqxw== -turbo-linux-64@1.10.4: - version "1.10.4" - resolved "https://registry.yarnpkg.com/turbo-linux-64/-/turbo-linux-64-1.10.4.tgz#9e70ac014e764268180f1f93dfc8e7c3d004fa66" - integrity sha512-S8ZVNCPnrBU+GMKKUWcgg4MaTOdL1reOU1XQtDiHfEPskXjLE+10vr65xJJQb6CqO8ARFXUlFSAUfxZRX6WVNA== - -turbo-linux-arm64@1.10.4: - version "1.10.4" - resolved "https://registry.yarnpkg.com/turbo-linux-arm64/-/turbo-linux-arm64-1.10.4.tgz#c81f9b7a03259ab17cc21514d146695a4a414272" - integrity sha512-/C6vpo7kd2ae6dR0iZyRuvfjijuixidhwLzV026A+/1gmAMRXYkslBfgOGfoOquHmvqjCeDVTsMWwCY2NRQqtw== - -turbo-windows-64@1.10.4: - version "1.10.4" - resolved "https://registry.yarnpkg.com/turbo-windows-64/-/turbo-windows-64-1.10.4.tgz#fc35c9cdf48411224c67c3ac03f237be591d7e5a" - integrity sha512-fh6X/fJl9gNTu3r7zMmwCychxMlpQMFn32bpioPNIBxrTHCbQYeGSQuw2XWa/RswgNzCY3Xo34emYAKu9btrsw== - -turbo-windows-arm64@1.10.4: - version "1.10.4" - resolved "https://registry.yarnpkg.com/turbo-windows-arm64/-/turbo-windows-arm64-1.10.4.tgz#baa18ba2b8843983d68a9c9a5fce040f13c23b1b" - integrity sha512-KzcKGl+bjwaSkxMNTutuoIM+xPuTBA13zJiC2vFM7fQ6XYM0/ZmUekfoxpMnWgSav8vlTk5tRYaPniLcVzLnTQ== - turbo@1.10.4: version "1.10.4" resolved "https://registry.npmjs.org/turbo/-/turbo-1.10.4.tgz" @@ -10577,7 +10857,7 @@ type-fest@^0.13.1: resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz" integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg== -type-fest@^0.20.2: +type-fest@^0.20.2, "type-fest@>=0.17.0 <5.0.0": version "0.20.2" resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== @@ -10634,7 +10914,12 @@ typed-array-length@^1.0.4: for-each "^0.3.3" is-typed-array "^1.1.9" -typescript@^4.0.2, typescript@^4.9.5: +typescript@*, typescript@^5.2.2, typescript@>=2.7, "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta", typescript@>=4.2.0, "typescript@>=4.3 <6": + version "5.2.2" + resolved "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz" + integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w== + +typescript@^4.0.2: version "4.9.5" resolved "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz" integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== @@ -10644,10 +10929,13 @@ typescript@^4.3.5: resolved "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz" integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ== -typescript@^5.2.2: - version "5.2.2" - resolved "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz" - integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w== +typescript@^4.9.5: + version "4.9.5" + resolved "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== + +typescript@>=4.9.5: + version "4.9.5" ua-parser-js@^1.0.35: version "1.0.36" @@ -10723,7 +11011,7 @@ unixify@^1.0.0: dependencies: normalize-path "^2.1.1" -unpipe@1.0.0, unpipe@~1.0.0: +unpipe@~1.0.0, unpipe@1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== @@ -10942,7 +11230,7 @@ webpack-bundle-analyzer@^4.9.1: sirv "^2.0.3" ws "^7.3.1" -webpack-cli@^5.1.4: +webpack-cli@^5.1.4, webpack-cli@5.x.x: version "5.1.4" resolved "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz" integrity sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg== @@ -10972,7 +11260,7 @@ webpack-dev-middleware@^5.3.1: range-parser "^1.2.1" schema-utils "^4.0.0" -webpack-dev-server@^4.15.1: +webpack-dev-server@^4.15.1, "webpack-dev-server@3.x || 4.x": version "4.15.1" resolved "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz" integrity sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA== @@ -11022,7 +11310,7 @@ webpack-sources@^3.2.3: resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz" integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== -webpack@^5, webpack@^5.88.2: +"webpack@^4.0.0 || ^5.0.0", "webpack@^4.37.0 || ^5.0.0", webpack@^5, webpack@^5.0.0, webpack@^5.1.0, webpack@^5.20.0, webpack@^5.88.2, webpack@>=1.11.0, "webpack@>=4.43.0 <6.0.0", webpack@5.x.x: version "5.89.0" resolved "https://registry.npmjs.org/webpack/-/webpack-5.89.0.tgz" integrity sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw== @@ -11052,7 +11340,7 @@ webpack@^5, webpack@^5.88.2: watchpack "^2.4.0" webpack-sources "^3.2.3" -websocket-driver@>=0.5.1, websocket-driver@^0.7.4: +websocket-driver@^0.7.4, websocket-driver@>=0.5.1: version "0.7.4" resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz" integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== @@ -11163,7 +11451,7 @@ wildcard@^2.0.0: resolved "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz" integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": version "7.0.0" resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -11181,6 +11469,15 @@ wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^7.0.0: + 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" + wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz" @@ -11218,7 +11515,7 @@ xml-name-validator@^4.0.0: resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz" integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== -xmlbuilder@>=11.0.1, xmlbuilder@^15.1.1: +xmlbuilder@^15.1.1, xmlbuilder@>=11.0.1: version "15.1.1" resolved "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz" integrity sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg== From bdc01a60379df44ba020be2f8d7b9b6d9721e514 Mon Sep 17 00:00:00 2001 From: Bart Date: Mon, 30 Oct 2023 15:51:20 +0100 Subject: [PATCH 069/100] fix initial outcome --- .../src/interactions/contexts/outcome.context.tsx | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/packages/ui/src/interactions/contexts/outcome.context.tsx b/packages/ui/src/interactions/contexts/outcome.context.tsx index bf1729897..854ca82db 100644 --- a/packages/ui/src/interactions/contexts/outcome.context.tsx +++ b/packages/ui/src/interactions/contexts/outcome.context.tsx @@ -3,6 +3,7 @@ import React, { ReactElement, ReactNode, useContext, + useEffect, useState, } from "react"; import { CommonUtils } from "../../utils/common-utils"; @@ -27,6 +28,10 @@ export function InteractionOutcomeManagerProvider(props: { const { flowService } = useServiceRegistry(); const [outcome, setOutcome] = useState(); + useEffect(() => { + setOutcome(definition.initialOutcome); + }, [definition]); + async function execute() { if (!definition) { throw new Error("Assertion error: Expected interaction value"); @@ -46,7 +51,7 @@ export function InteractionOutcomeManagerProvider(props: { } async function executeTransaction( - definition: InteractionDefinition, + definition: InteractionDefinition ): Promise { const { transactionOptions } = definition; if (!transactionOptions) { @@ -60,7 +65,7 @@ export function InteractionOutcomeManagerProvider(props: { toast.error( `Unspecified authorizers: ${unspecifiedAuthorizers .map((e) => e.index + 1) - .join(", ")}`, + .join(", ")}` ); hasErrors = true; } @@ -100,7 +105,7 @@ export function InteractionOutcomeManagerProvider(props: { } async function executeScript( - definition: InteractionDefinition, + definition: InteractionDefinition ): Promise { try { const result = await flowService.executeScript({ @@ -144,7 +149,7 @@ export function InteractionOutcomeManagerProvider(props: { type: parameter.type, identifier: parameter.identifier, }; - }, + } ); } From f58adcc217f02c79c4bf7fb71a9126dfe1625243 Mon Sep 17 00:00:00 2001 From: Bart Date: Mon, 30 Oct 2023 15:57:51 +0100 Subject: [PATCH 070/100] fix resource loading handling --- apps/electron/src/renderer/ipc-index-cache.ts | 14 +++++++++++--- .../InteractionOutcomeDisplay.tsx | 19 ++++++------------- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/apps/electron/src/renderer/ipc-index-cache.ts b/apps/electron/src/renderer/ipc-index-cache.ts index 1b88e73dc..b1a74c23d 100644 --- a/apps/electron/src/renderer/ipc-index-cache.ts +++ b/apps/electron/src/renderer/ipc-index-cache.ts @@ -12,13 +12,21 @@ export class IpcIndexCache this.syncOnInterval(); } - async findOneById(id: string): Promise { - return this.cachedResources.find((resource) => resource.id === id); + async findOneById(id: string): Promise { + const resource = this.cachedResources.find((e) => e.id === id); + + // Throw if not found, + // so that we can easily handle loading state (data=undefined) with SWR. + if (!resource) { + throw new Error('Resource not found'); + } + + return resource; } async findAll(): Promise { return this.cachedResources.sort( - (a, b) => b.createdAt.getTime() - a.createdAt.getTime(), + (a, b) => b.createdAt.getTime() - a.createdAt.getTime() ); } diff --git a/packages/ui/src/interactions/components/InteractionOutcomeDisplay/InteractionOutcomeDisplay.tsx b/packages/ui/src/interactions/components/InteractionOutcomeDisplay/InteractionOutcomeDisplay.tsx index fe5ce8dc5..cfd34bc42 100644 --- a/packages/ui/src/interactions/components/InteractionOutcomeDisplay/InteractionOutcomeDisplay.tsx +++ b/packages/ui/src/interactions/components/InteractionOutcomeDisplay/InteractionOutcomeDisplay.tsx @@ -97,33 +97,26 @@ function EmptyState() { function TransactionOutcomeDisplay(props: { outcome: TransactionOutcome }) { const { outcome } = props; - const { isLoading, data: transaction } = useGetTransaction( - outcome.transactionId!, - ); + const { data, error } = useGetTransaction(outcome.transactionId!); - if (isLoading) { + if (!data) { return ; } - if (!transaction) { + if (error) { // This happens if rollback is performed to a block before this transaction. - return ( - - ); + return ; } return ( ); } From 59abac10072a714d0f7d386c2a9b50e10a83c632 Mon Sep 17 00:00:00 2001 From: Bart Date: Mon, 30 Oct 2023 16:11:46 +0100 Subject: [PATCH 071/100] fix managed key retrieval by account --- packages/nodejs/src/wallet.service.ts | 47 +++++++++++++++------------ 1 file changed, 26 insertions(+), 21 deletions(-) diff --git a/packages/nodejs/src/wallet.service.ts b/packages/nodejs/src/wallet.service.ts index e23f856a1..87fbd15be 100644 --- a/packages/nodejs/src/wallet.service.ts +++ b/packages/nodejs/src/wallet.service.ts @@ -41,24 +41,25 @@ export class WalletService { constructor( private readonly cliService: FlowCliService, private readonly flowGateway: FlowGatewayService, - private readonly storageService: PersistentStorage, + private readonly storageService: PersistentStorage ) {} public async sendTransaction( - request: SendTransactionRequest, + request: SendTransactionRequest ): Promise { const uniqueRoleAddresses = new Set([ request.proposerAddress, request.payerAddress, ...request.authorizerAddresses, ]); + const managedKeyPairs = await this.listKeyPairs(); const authorizationFunctions = await Promise.all( Array.from(uniqueRoleAddresses).map( async (address): Promise<[string, FlowAuthorizationFunction]> => [ address, - await this.withAuthorization(address), - ], - ), + await this.withAuthorization({ address, managedKeyPairs }), + ] + ) ); function getAuthFunction(address: string) { @@ -75,37 +76,41 @@ export class WalletService { proposer: getAuthFunction(request.proposerAddress), payer: getAuthFunction(request.payerAddress), authorizations: request.authorizerAddresses.map((address) => - getAuthFunction(address), + getAuthFunction(address) ), arguments: request.arguments, }); } // Returns undefined if provided account doesn't exist. - private async withAuthorization( - address: string, - ): Promise { - const managedKeyPairs = await this.listKeyPairs(); + private async withAuthorization(options: { + address: string; + managedKeyPairs: ManagedKeyPair[]; + }): Promise { + const { address, managedKeyPairs } = options; + const managedKeyPairsOfAccount = managedKeyPairs.filter( + (e) => e.address === address + ); - if (managedKeyPairs.length === 0) { + if (managedKeyPairsOfAccount.length === 0) { throw new Error(`Private keys not found for account: ${address}`); } - const managedKeyToUse = managedKeyPairs[0]; + const managedKeyToUse = managedKeyPairsOfAccount[0]; const account = await this.flowGateway.getAccount(address); const associatedPublicKey = account.keys.find( - (key) => key.publicKey === managedKeyToUse.publicKey, + (key) => key.publicKey === managedKeyToUse.publicKey ); if (!associatedPublicKey) { throw new Error( - `Associated public key not found for account: ${account}`, + `Associated public key not found for account: ${account}` ); } const authn: FlowAuthorizationFunction = ( - fclAccount: Record = {}, + fclAccount: Record = {} ) => ({ ...fclAccount, tempId: `${address}-${managedKeyToUse.privateKey}`, @@ -120,7 +125,7 @@ export class WalletService { keyId: associatedPublicKey.index, signature: this.signWithPrivateKey( managedKeyToUse.privateKey, - signable.message, + signable.message ), }; }, @@ -133,8 +138,8 @@ export class WalletService { const managedKeyPairs = await this.listKeyPairs(); const associatedAccounts = await Promise.allSettled( managedKeyPairs.map((keyPair) => - this.flowGateway.getAccount(keyPair.address), - ), + this.flowGateway.getAccount(keyPair.address) + ) ); const validKeyPairLookupByPublicKey = new Set( associatedAccounts @@ -145,12 +150,12 @@ export class WalletService { return []; } }) - .flat(), + .flat() ); await this.writeKeyPairs( managedKeyPairs.filter((keyPair) => - validKeyPairLookupByPublicKey.has(keyPair.publicKey), - ), + validKeyPairLookupByPublicKey.has(keyPair.publicKey) + ) ); } From 9c25777861d67f114e07b78c37c73769a3e181ab Mon Sep 17 00:00:00 2001 From: Bart Date: Mon, 30 Oct 2023 16:23:18 +0100 Subject: [PATCH 072/100] fix slow polling when executing transaction --- apps/electron/src/renderer/App.tsx | 102 +++++----- apps/electron/src/renderer/ipc-index-cache.ts | 4 +- .../src/services/flowser-app.service.ts | 27 +-- packages/core/src/flow-indexer.service.ts | 103 +++++----- packages/ui/src/api.ts | 183 +++++++----------- 5 files changed, 190 insertions(+), 229 deletions(-) diff --git a/apps/electron/src/renderer/App.tsx b/apps/electron/src/renderer/App.tsx index 292f57f1f..eac174cc1 100644 --- a/apps/electron/src/renderer/App.tsx +++ b/apps/electron/src/renderer/App.tsx @@ -17,11 +17,12 @@ import { FlowTransaction, } from '@onflowser/api'; import { FlowserUsageRequirements } from '@onflowser/ui/src/common/misc/FlowserUsageRequirements/FlowserUsageRequirements'; -import { IpcIndexCache } from './ipc-index-cache'; -import { FlowserRouter } from './router'; -import { UpdateLoader } from './components/loaders/UpdateLoader'; -import { AnalyticsService } from '../services/analytics.service'; +import { SWRConfig } from 'swr'; import { SentryRendererService } from '../services/sentry-renderer.service'; +import { AnalyticsService } from '../services/analytics.service'; +import { UpdateLoader } from './components/loaders/UpdateLoader'; +import { FlowserRouter } from './router'; +import { indexSyncIntervalInMs, IpcIndexCache } from './ipc-index-cache'; const indexes = { accountStorage: new IpcIndexCache('accountStorage'), @@ -64,50 +65,59 @@ export function App() { )} - - - - - - - - - - + + + + + + + + + + + ); } diff --git a/apps/electron/src/renderer/ipc-index-cache.ts b/apps/electron/src/renderer/ipc-index-cache.ts index b1a74c23d..9c74d740a 100644 --- a/apps/electron/src/renderer/ipc-index-cache.ts +++ b/apps/electron/src/renderer/ipc-index-cache.ts @@ -1,6 +1,8 @@ import { IndexableResource, IResourceIndexReader } from '@onflowser/api'; import { BlockchainIndexes } from '../services/blockchain-index.service'; +export const indexSyncIntervalInMs = 500; + export class IpcIndexCache implements IResourceIndexReader { @@ -31,7 +33,7 @@ export class IpcIndexCache } syncOnInterval() { - setInterval(() => this.sync(), 1000); + setInterval(() => this.sync(), indexSyncIntervalInMs); } async sync() { diff --git a/apps/electron/src/services/flowser-app.service.ts b/apps/electron/src/services/flowser-app.service.ts index 847916983..8458b6f05 100644 --- a/apps/electron/src/services/flowser-app.service.ts +++ b/apps/electron/src/services/flowser-app.service.ts @@ -20,6 +20,7 @@ import path from 'path'; import { WorkspaceEvent, WorkspaceService } from './workspace.service'; import { BlockchainIndexService } from './blockchain-index.service'; import { FileStorageService } from './file-storage.service'; +import { indexSyncIntervalInMs } from '../renderer/ipc-index-cache'; // Root service that ties all the pieces together and orchestrates them. export class FlowserAppService { @@ -46,7 +47,7 @@ export class FlowserAppService { this.flowGatewayService = new FlowGatewayService(); this.logger = new WebLogger(); this.flowAccountStorageService = new FlowAccountStorageService( - this.flowGatewayService, + this.flowGatewayService ); this.goBindingsService = new GoBindingsService({ // TODO(restructure): Test if this works on windows/linux @@ -56,7 +57,7 @@ export class FlowserAppService { : process.resourcesPath, }); this.flowInteractionsService = new FlowInteractionsService( - this.goBindingsService, + this.goBindingsService ); this.processManagerService = new ProcessManagerService(this.logger, { // We are manually handling shutdown before the app closes @@ -64,15 +65,15 @@ export class FlowserAppService { }); this.flowCliService = new FlowCliService(this.processManagerService); this.flowEmulatorService = new FlowEmulatorService( - this.processManagerService, + this.processManagerService ); this.flowSnapshotsStorageService = new FileStorageService(); this.flowSnapshotsService = new FlowSnapshotsService( - this.flowSnapshotsStorageService, + this.flowSnapshotsStorageService ); this.workspaceService = new WorkspaceService( this.flowEmulatorService, - new FileStorageService('flowser-workspaces.json'), + new FileStorageService('flowser-workspaces.json') ); this.blockchainIndexService = new BlockchainIndexService(); this.flowIndexerService = new FlowIndexerService( @@ -86,18 +87,18 @@ export class FlowserAppService { this.blockchainIndexService.indexes.accountStorage, this.flowAccountStorageService, this.flowGatewayService, - this.flowInteractionsService, + this.flowInteractionsService ); this.flowConfigService = new FlowConfigService(this.logger); this.walletStorageService = new FileStorageService(); this.walletService = new WalletService( this.flowCliService, this.flowGatewayService, - this.walletStorageService, + this.walletStorageService ); this.processingScheduler = new AsyncIntervalScheduler({ name: 'Blockchain processing', - pollingIntervalInMs: 500, + pollingIntervalInMs: indexSyncIntervalInMs, functionToExecute: () => this.flowIndexerService.processBlockchainData(), }); this.registerListeners(); @@ -122,19 +123,19 @@ export class FlowserAppService { private registerListeners() { this.workspaceService.on( WorkspaceEvent.WORKSPACE_OPEN, - this.onWorkspaceOpen.bind(this), + this.onWorkspaceOpen.bind(this) ); this.workspaceService.on( WorkspaceEvent.WORKSPACE_CLOSE, - this.onWorkspaceClose.bind(this), + this.onWorkspaceClose.bind(this) ); this.flowSnapshotsService.on( FlowSnapshotsEvent.ROLLBACK_TO_HEIGHT, - this.onRollbackToBlockHeight.bind(this), + this.onRollbackToBlockHeight.bind(this) ); this.flowSnapshotsService.on( FlowSnapshotsEvent.JUMP_TO, - this.onRollbackToBlockHeight.bind(this), + this.onRollbackToBlockHeight.bind(this) ); } @@ -166,7 +167,7 @@ export class FlowserAppService { // Separately store of each workspaces' data. this.flowSnapshotsStorageService.setFileName( - `flowser-snapshots-${workspaceId}.json`, + `flowser-snapshots-${workspaceId}.json` ); await this.flowSnapshotsService.synchronizeIndex(); diff --git a/packages/core/src/flow-indexer.service.ts b/packages/core/src/flow-indexer.service.ts index 0eba848e1..e2e9c6819 100644 --- a/packages/core/src/flow-indexer.service.ts +++ b/packages/core/src/flow-indexer.service.ts @@ -61,7 +61,7 @@ export class FlowIndexerService { private accountStorageIndex: IResourceIndex, private flowStorageService: FlowAccountStorageService, private flowGatewayService: FlowGatewayService, - private flowInteractionsService: IFlowInteractions, + private flowInteractionsService: IFlowInteractions ) {} async processBlockchainData(): Promise { @@ -141,7 +141,7 @@ export class FlowIndexerService { try { blockData.transactions.map((transaction) => - this.subscribeToTransactionStatusUpdates(transaction.id), + this.subscribeToTransactionStatusUpdates(transaction.id) ); } catch (e) { this.logger.error("Transaction status update failed", e); @@ -149,7 +149,7 @@ export class FlowIndexerService { } private async subscribeToTransactionStatusUpdates( - transactionId: string, + transactionId: string ): Promise { const unsubscribe = this.flowGatewayService .getTxStatusSubscription(transactionId) @@ -161,7 +161,7 @@ export class FlowIndexerService { grcpStatus: this.reMapGrcpStatus(newStatus.statusCode), executionStatus: newStatus.status, }, - }), + }) ); try { await this.flowGatewayService @@ -186,9 +186,9 @@ export class FlowIndexerService { transaction: transaction, transactionStatus: transaction.status, }).catch((e: any) => - this.logger.error(`transaction save error: ${e.message}`, e.stack), - ), - ), + this.logger.error(`transaction save error: ${e.message}`, e.stack) + ) + ) ); const eventPromises = Promise.all( data.events.map((flowEvent) => @@ -196,12 +196,12 @@ export class FlowIndexerService { .create( this.createEventEntity({ event: flowEvent, - }), + }) ) .catch((e: any) => - this.logger.error(`event save error: ${e.message}`, e.stack), - ), - ), + this.logger.error(`event save error: ${e.message}`, e.stack) + ) + ) ); return Promise.all([ @@ -219,8 +219,8 @@ export class FlowIndexerService { const block = await this.flowGatewayService.getBlockByHeight(height); const collections = await Promise.all( block.collectionGuarantees.map(async (guarantee) => - this.flowGatewayService.getCollectionById(guarantee.collectionId), - ), + this.flowGatewayService.getCollectionById(guarantee.collectionId) + ) ); const transactionIds = collections .map((collection) => collection.transactionIds) @@ -228,13 +228,13 @@ export class FlowIndexerService { const transactionFutures = Promise.all( transactionIds.map((txId) => - this.flowGatewayService.getTransactionById(txId), - ), + this.flowGatewayService.getTransactionById(txId) + ) ); const transactionStatusesFutures = Promise.all( transactionIds.map((txId) => - this.flowGatewayService.getTransactionStatusById(txId), - ), + this.flowGatewayService.getTransactionStatusById(txId) + ) ); const [transactions, statuses] = await Promise.all([ @@ -253,7 +253,7 @@ export class FlowIndexerService { ...event, transactionId: tx.id, blockId: tx.referenceBlockId, - })), + })) ) .flat(); @@ -276,13 +276,13 @@ export class FlowIndexerService { (e) => { this.logger.error( `Event handling error: ${e.message} (${JSON.stringify( - flowEvent, + flowEvent )})`, - e.stack, + e.stack ); - }, - ), - ), + } + ) + ) ); } @@ -336,7 +336,7 @@ export class FlowIndexerService { private async processAccountKeyAddedEvent(event: FlowAccountKeyEvent) { const publicKey = this.decodeUint8PublicKey(event.data.publicKey.publicKey); const account = await this.flowGatewayService.getAccount( - event.data.address, + event.data.address ); const key = account.keys.find((key) => key.publicKey === publicKey); @@ -348,7 +348,7 @@ export class FlowIndexerService { this.createKeyEntity({ key, address: account.address, - }), + }) ); } @@ -371,15 +371,15 @@ export class FlowIndexerService { transactionStatus: flowResource.FlowTransactionStatus; }) { const parsedInteraction = await this.flowInteractionsService.parse( - options.transaction.script, + options.transaction.script ); if (parsedInteraction.error) { this.logger.error( - `Unexpected interaction parsing error: ${parsedInteraction.error}`, + `Unexpected interaction parsing error: ${parsedInteraction.error}` ); } return this.transactionIndex.create( - this.createTransactionEntity({ ...options, parsedInteraction }), + this.createTransactionEntity({ ...options, parsedInteraction }) ); } @@ -407,9 +407,9 @@ export class FlowIndexerService { this.createKeyEntity({ address, key, - }), - ), - ), + }) + ) + ) ), Promise.all( Object.keys(flowAccount.contracts).map((name) => @@ -419,9 +419,9 @@ export class FlowIndexerService { block: block, name, code: flowAccount.contracts[name], - }), - ), - ), + }) + ) + ) ), ]); } @@ -431,20 +431,21 @@ export class FlowIndexerService { this.logger.debug( `Processing storages for accounts: ${allAccounts .map((e) => e.address) - .join(", ")}`, + .join(", ")}` ); await Promise.all( allAccounts.map((account: flowserResource.FlowAccount) => - this.reIndexAccountStorage(account.address), - ), + this.reIndexAccountStorage(account.address) + ) ); } private async reIndexAccountStorage(address: string) { - const storages = - await this.flowStorageService.getAccountStorageItems(address); + const storages = await this.flowStorageService.getAccountStorageItems( + address + ); return Promise.all( - storages.map((storage) => this.accountStorageIndex.upsert(storage)), + storages.map((storage) => this.accountStorageIndex.upsert(storage)) ); } @@ -468,7 +469,7 @@ export class FlowIndexerService { await Promise.all( this.getAllWellKnownAddresses() .filter( - (address) => this.accountIndex.findOneById(address) !== undefined, + (address) => this.accountIndex.findOneById(address) !== undefined ) .map((address) => this.createAccount({ @@ -478,8 +479,8 @@ export class FlowIndexerService { // Most likely an account not found error monotonic/non-monotonic addresses. // Can be safely ignored. // TODO(restructure): Smarter handling of monotonic/non-monotonic addresses - }), - ), + }) + ) ); } @@ -513,7 +514,7 @@ export class FlowIndexerService { } private createAccountEntity( - account: flowResource.FlowAccount, + account: flowResource.FlowAccount ): OmitTimestamps { const address = ensurePrefixedAddress(account.address); @@ -652,7 +653,7 @@ export class FlowIndexerService { // But we don't need the type info since we already have // our own system of representing types with `CadenceType` message. function fromTypeAnnotatedFclArguments( - object: flowResource.FlowTypeAnnotatedValue, + object: flowResource.FlowTypeAnnotatedValue ): FclValue { const { type, value } = object; // Available type values are listed here: @@ -669,7 +670,7 @@ export class FlowIndexerService { // TODO(restructure): Double check this // @ts-ignore return value?.map((element: any) => - fromTypeAnnotatedFclArguments(element), + fromTypeAnnotatedFclArguments(element) ); case "Path": case "PublicPath": @@ -689,7 +690,7 @@ export class FlowIndexerService { referenceBlockId: transaction.referenceBlockId, gasLimit: transaction.gasLimit, authorizers: transaction.authorizers.map((address) => - ensurePrefixedAddress(address), + ensurePrefixedAddress(address) ), arguments: parsedInteraction.interaction?.parameters.map( @@ -697,17 +698,17 @@ export class FlowIndexerService { identifier: parameter.identifier, type: parameter.type, value: fromTypeAnnotatedFclArguments(transaction.args[index]), - }), + }) ) ?? [], proposalKey: { ...transaction.proposalKey, address: ensurePrefixedAddress(transaction.proposalKey.address), }, envelopeSignatures: this.deserializeSignableObjects( - transaction.envelopeSignatures, + transaction.envelopeSignatures ), payloadSignatures: this.deserializeSignableObjects( - transaction.payloadSignatures, + transaction.payloadSignatures ), status: { errorMessage: transactionStatus.errorMessage, @@ -724,7 +725,7 @@ export class FlowIndexerService { } private deserializeSignableObjects( - signableObjects: flowResource.FlowSignableObject[], + signableObjects: flowResource.FlowSignableObject[] ): flowserResource.SignableObject[] { return signableObjects.map((signable) => ({ ...signable, diff --git a/packages/ui/src/api.ts b/packages/ui/src/api.ts index 62181a294..a8e7d7b01 100644 --- a/packages/ui/src/api.ts +++ b/packages/ui/src/api.ts @@ -1,4 +1,4 @@ -import useSWR, { SWRResponse } from "swr"; +import useSWR, { SWRConfiguration, SWRResponse } from "swr"; import { FlowAccount, FlowAccountKey, @@ -22,217 +22,164 @@ import { useEffect } from "react"; export function useGetAccounts(): SWRResponse { const { accountIndex } = useServiceRegistry(); - return useSWR("accounts", () => accountIndex.findAll(), { - refreshInterval: 1000, - }); + return useSWR("accounts", () => accountIndex.findAll()); } export function useGetAccount( - id: string, + id: string ): SWRResponse { const { accountIndex } = useServiceRegistry(); - return useSWR(`account/${id}`, () => accountIndex.findOneById(id), { - refreshInterval: 1000, - }); + return useSWR(`account/${id}`, () => accountIndex.findOneById(id)); } export function useGetKeysByAccount( - address: string, + address: string ): SWRResponse { const { accountKeyIndex } = useServiceRegistry(); - return useSWR( - `${address}/keys`, - () => - accountKeyIndex - .findAll() - .then((res) => res.filter((e) => e.address === address)), - { - refreshInterval: 1000, - }, + return useSWR(`${address}/keys`, () => + accountKeyIndex + .findAll() + .then((res) => res.filter((e) => e.address === address)) ); } export function useGetManagedKeys(): SWRResponse { const { walletService } = useServiceRegistry(); - return useSWR(`managed-keys`, () => walletService.listKeyPairs(), { - refreshInterval: 1000, - }); + return useSWR(`managed-keys`, () => walletService.listKeyPairs()); } export function useGetStoragesByAccount( - id: string, + id: string ): SWRResponse { const { accountStorageIndex } = useServiceRegistry(); - return useSWR( - `${id}/storages`, - () => - accountStorageIndex - .findAll() - .then((res) => res.filter((e) => e.address === id)), - { - refreshInterval: 1000, - }, + return useSWR(`${id}/storages`, () => + accountStorageIndex + .findAll() + .then((res) => res.filter((e) => e.address === id)) ); } export function useGetContractsByAccount( - address: string, + address: string ): SWRResponse { const { contractIndex } = useServiceRegistry(); - return useSWR( - `${address}/contracts`, - () => - contractIndex - .findAll() - .then((res) => res.filter((e) => e.address === address)), - { - refreshInterval: 1000, - }, + return useSWR(`${address}/contracts`, () => + contractIndex + .findAll() + .then((res) => res.filter((e) => e.address === address)) ); } export function useGetTransactions(): SWRResponse { const { transactionsIndex } = useServiceRegistry(); - return useSWR(`transactions`, () => transactionsIndex.findAll(), { - refreshInterval: 1000, - }); + return useSWR(`transactions`, () => transactionsIndex.findAll()); } export function useGetTransaction( id: string, + options?: SWRConfiguration ): SWRResponse { const { transactionsIndex } = useServiceRegistry(); - return useSWR(`transaction/${id}`, () => transactionsIndex.findOneById(id), { - refreshInterval: 1000, - }); + return useSWR( + `transaction/${id}`, + () => transactionsIndex.findOneById(id), + options + ); } export function useGetTransactionsByAccount( - address: string, + address: string ): SWRResponse { const { transactionsIndex } = useServiceRegistry(); - return useSWR( - `${address}/transactions`, - () => - transactionsIndex - .findAll() - .then((res) => - res.filter( - (e) => - e.authorizers.includes(address) || - e.payer === address || - e.proposalKey.address === address, - ), - ), - { - refreshInterval: 1000, - }, + return useSWR(`${address}/transactions`, () => + transactionsIndex + .findAll() + .then((res) => + res.filter( + (e) => + e.authorizers.includes(address) || + e.payer === address || + e.proposalKey.address === address + ) + ) ); } export function useGetTransactionsByBlock( - blockId: string, + blockId: string ): SWRResponse { const { transactionsIndex } = useServiceRegistry(); - return useSWR( - `${blockId}/transactions`, - () => - transactionsIndex - .findAll() - .then((res) => res.filter((e) => e.blockId === blockId)), - { - refreshInterval: 1000, - }, + return useSWR(`${blockId}/transactions`, () => + transactionsIndex + .findAll() + .then((res) => res.filter((e) => e.blockId === blockId)) ); } export function useGetBlock(id: string): SWRResponse { const { blocksIndex } = useServiceRegistry(); - return useSWR(`blocks/${id}`, () => blocksIndex.findOneById(id), { - refreshInterval: 1000, - }); + return useSWR(`blocks/${id}`, () => blocksIndex.findOneById(id)); } export function useGetBlocks(): SWRResponse { const { blocksIndex } = useServiceRegistry(); - return useSWR(`blocks`, () => blocksIndex.findAll(), { - refreshInterval: 1000, - }); + return useSWR(`blocks`, () => blocksIndex.findAll()); } export function useGetContracts(): SWRResponse { const { contractIndex } = useServiceRegistry(); - return useSWR(`contracts`, () => contractIndex.findAll(), { - refreshInterval: 1000, - }); + return useSWR(`contracts`, () => contractIndex.findAll()); } export function useGetContract( - id: string, + id: string ): SWRResponse { const { contractIndex } = useServiceRegistry(); - return useSWR(`contracts/${id}`, () => contractIndex.findOneById(id), { - refreshInterval: 1000, - }); + return useSWR(`contracts/${id}`, () => contractIndex.findOneById(id)); } export function useGetEvents(): SWRResponse { const { eventsIndex } = useServiceRegistry(); - return useSWR(`events`, () => eventsIndex.findAll(), { - refreshInterval: 1000, - }); + return useSWR(`events`, () => eventsIndex.findAll()); } export function useGetEventsByTransaction( - id: string, + id: string ): SWRResponse { const { eventsIndex } = useServiceRegistry(); - return useSWR( - `${id}/events`, - () => - eventsIndex - .findAll() - .then((res) => res.filter((e) => e.transactionId === id)), - { - refreshInterval: 1000, - }, + return useSWR(`${id}/events`, () => + eventsIndex + .findAll() + .then((res) => res.filter((e) => e.transactionId === id)) ); } export function useGetOutputsByProcess( - id: string, + id: string ): SWRResponse { const { processManagerService } = useServiceRegistry(); - return useSWR( - `${id}/outputs`, - () => processManagerService.findAllLogsByProcessId(id), - { - refreshInterval: 1000, - }, + return useSWR(`${id}/outputs`, () => + processManagerService.findAllLogsByProcessId(id) ); } export function useGetEvent(id: string): SWRResponse { const { eventsIndex } = useServiceRegistry(); - return useSWR(`events/${id}`, () => eventsIndex.findOneById(id), { - refreshInterval: 1000, - }); + return useSWR(`events/${id}`, () => eventsIndex.findOneById(id)); } export function useGetStateSnapshots(): SWRResponse { const { snapshotService } = useServiceRegistry(); - return useSWR(`snapshots`, () => snapshotService.list(), { - refreshInterval: 1000, - }); + return useSWR(`snapshots`, () => snapshotService.list()); } export function useGetWorkspaces(): SWRResponse { @@ -242,7 +189,7 @@ export function useGetWorkspaces(): SWRResponse { } export function useGetWorkspace( - id: string, + id: string ): SWRResponse { const { workspaceService } = useServiceRegistry(); @@ -258,12 +205,12 @@ export function useGetFlowCliInfo(): SWRResponse { export function useGetAddressIndex(address: string): SWRResponse { const { flowService } = useServiceRegistry(); return useSWR(`account-index/${address}`, () => - flowService.getIndexOfAddress(address), + flowService.getIndexOfAddress(address) ); } export function useGetParsedInteraction( - request: InteractionDefinition, + request: InteractionDefinition ): SWRResponse { const { interactionsService } = useServiceRegistry(); @@ -271,7 +218,7 @@ export function useGetParsedInteraction( // to avoid the flickering UI effect that's caused // by undefined parsed interaction every time the source code changes. const state = useSWR(`parsed-interaction/${request.id}`, () => - interactionsService.parse(request.code), + interactionsService.parse(request.code) ); useEffect(() => { @@ -287,7 +234,7 @@ export function useGetInteractionTemplates(): SWRResponse< const { interactionsService } = useServiceRegistry(); return useSWR(`interaction-templates`, () => - interactionsService.getTemplates(), + interactionsService.getTemplates() ); } From 210c7daad6886d156ef80c9b03225cc5bf5e4c48 Mon Sep 17 00:00:00 2001 From: Bart Date: Tue, 31 Oct 2023 10:18:49 +0100 Subject: [PATCH 073/100] add comment, concurrently execute independent calls --- packages/core/src/flow-indexer.service.ts | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/packages/core/src/flow-indexer.service.ts b/packages/core/src/flow-indexer.service.ts index e2e9c6819..1c2e46eb7 100644 --- a/packages/core/src/flow-indexer.service.ts +++ b/packages/core/src/flow-indexer.service.ts @@ -133,8 +133,13 @@ export class FlowIndexerService { const blockData = await this.getBlockData(height); try { - await this.processBlockData(blockData); - await this.reIndexAllAccountStorage(); + await Promise.all([ + this.processBlockData(blockData), + // We don't know when account storage changed + // without parsing transaction source code. + // For now just re-index storage of all accounts. + this.reIndexAllAccountStorage(), + ]); } catch (e) { this.logger.error(`Failed to store block (#${height}) data`, e); } @@ -450,8 +455,6 @@ export class FlowIndexerService { } private async processWellKnownAccounts() { - // TODO(restructure): Early exit if accounts already processed? - // Afaik these well-known default accounts are // bootstrapped in a "meta-transaction", // which is hidden from the public blockchain. From faf3d61a6719332991c6ccf46a610993f6c39f39 Mon Sep 17 00:00:00 2001 From: Bart Date: Tue, 31 Oct 2023 10:21:28 +0100 Subject: [PATCH 074/100] simplify some code --- packages/core/src/flow-indexer.service.ts | 24 ++++++++--------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/packages/core/src/flow-indexer.service.ts b/packages/core/src/flow-indexer.service.ts index 1c2e46eb7..941319d68 100644 --- a/packages/core/src/flow-indexer.service.ts +++ b/packages/core/src/flow-indexer.service.ts @@ -66,29 +66,21 @@ export class FlowIndexerService { async processBlockchainData(): Promise { const gatewayStatus = await this.flowGatewayService.getApiStatus(); + if (gatewayStatus !== FlowApiStatus.SERVICE_STATUS_ONLINE) { this.logger.debug("Gateway offline, pausing processing."); return; } - const [unprocessedBlockInfo] = await Promise.all([ + const [unprocessedBlocksInfo] = await Promise.all([ this.getUnprocessedBlocksInfo(), - this.processWellKnownAccounts(), + this.maybeProcessWellKnownAccounts(), ]); - const { nextBlockHeightToProcess, latestUnprocessedBlockHeight } = - unprocessedBlockInfo; - const hasBlocksToProcess = - nextBlockHeightToProcess <= latestUnprocessedBlockHeight; - - if (!hasBlocksToProcess) { - return; - } - try { for ( - let height = nextBlockHeightToProcess; - height <= latestUnprocessedBlockHeight; + let height = unprocessedBlocksInfo.nextBlockHeightToProcess; + height <= unprocessedBlocksInfo.latestUnprocessedBlockHeight; height++ ) { this.logger.debug(`Processing block: ${height}`); @@ -103,11 +95,11 @@ export class FlowIndexerService { } private async getUnprocessedBlocksInfo(): Promise { - const [allBlocks, latestBlock] = await Promise.all([ + const [indexedBlocks, latestBlock] = await Promise.all([ this.blockIndex.findAll(), this.flowGatewayService.getLatestBlock(), ]); - const lastIndexedBlock = this.findLatestBlock(allBlocks); + const lastIndexedBlock = this.findLatestBlock(indexedBlocks); const nextBlockHeightToProcess = lastIndexedBlock ? lastIndexedBlock.blockHeight + 1 : 0; @@ -454,7 +446,7 @@ export class FlowIndexerService { ); } - private async processWellKnownAccounts() { + private async maybeProcessWellKnownAccounts() { // Afaik these well-known default accounts are // bootstrapped in a "meta-transaction", // which is hidden from the public blockchain. From a50caeed83df5742dabd55b7ae456b7d8c2484c9 Mon Sep 17 00:00:00 2001 From: Bart Date: Tue, 31 Oct 2023 10:36:50 +0100 Subject: [PATCH 075/100] handle contract events, simplify indexing code --- packages/api/src/resources.ts | 2 - packages/core/src/flow-indexer.service.ts | 177 ++++++++---------- .../src/events/EventDetails/EventDetails.tsx | 10 - 3 files changed, 76 insertions(+), 113 deletions(-) diff --git a/packages/api/src/resources.ts b/packages/api/src/resources.ts index c6ea54533..9ace899b0 100644 --- a/packages/api/src/resources.ts +++ b/packages/api/src/resources.ts @@ -112,7 +112,6 @@ export interface FlowContract id: string; address: string; name: string; - blockId: string; code: string; localConfig: FlowContractLocalConfig | undefined; } @@ -254,7 +253,6 @@ export interface FlowEvent extends TimestampedResource { // ID is the combination of `transactionId` and `eventIndex`. id: string; transactionId: string; - blockId: string; eventIndex: number; type: string; transactionIndex: number; diff --git a/packages/core/src/flow-indexer.service.ts b/packages/core/src/flow-indexer.service.ts index 941319d68..d34533c70 100644 --- a/packages/core/src/flow-indexer.service.ts +++ b/packages/core/src/flow-indexer.service.ts @@ -13,26 +13,18 @@ import { FlowApiStatus, FlowGatewayService, FlowAccountKeyEvent, + FlowAccountContractEvent, + FlowCoreEventType, } from "./flow-gateway.service"; import { ensurePrefixedAddress } from "./utils"; import { IFlowserLogger } from "./logger"; import { FclValue } from "./fcl-value"; -// See https://developers.flow.com/cadence/language/core-events -enum FlowCoreEventType { - ACCOUNT_CREATED = "flow.AccountCreated", - ACCOUNT_KEY_ADDED = "flow.AccountKeyAdded", - ACCOUNT_KEY_REMOVED = "flow.AccountKeyRemoved", - ACCOUNT_CONTRACT_ADDED = "flow.AccountContractAdded", - ACCOUNT_CONTRACT_UPDATED = "flow.AccountContractUpdated", - ACCOUNT_CONTRACT_REMOVED = "flow.AccountContractRemoved", -} - type BlockData = { block: flowResource.FlowBlock; transactions: FlowTransactionWithStatus[]; collections: flowResource.FlowCollection[]; - events: ExtendedFlowEvent[]; + events: flowResource.FlowEvent[]; }; type UnprocessedBlockInfo = { @@ -44,11 +36,6 @@ type FlowTransactionWithStatus = flowResource.FlowTransaction & { status: flowResource.FlowTransactionStatus; }; -export type ExtendedFlowEvent = flowResource.FlowEvent & { - blockId: string; - transactionId: string; -}; - export class FlowIndexerService { constructor( private readonly logger: IFlowserLogger, @@ -190,25 +177,29 @@ export class FlowIndexerService { const eventPromises = Promise.all( data.events.map((flowEvent) => this.eventIndex - .create( - this.createEventEntity({ - event: flowEvent, - }) - ) + .create(this.createEventEntity(flowEvent)) .catch((e: any) => this.logger.error(`event save error: ${e.message}`, e.stack) ) ) ); + const eventProcessingPromises = Promise.all( + data.events.map((event) => + this.processEvent(event).catch((e) => { + this.logger.error( + `Event handling error: ${e.message} (${JSON.stringify(event)})`, + e.stack + ); + }) + ) + ); + return Promise.all([ blockPromise, transactionPromises, eventPromises, - this.processEventBatch({ - events: data.events, - block: data.block, - }), + eventProcessingPromises, ]); } @@ -262,32 +253,7 @@ export class FlowIndexerService { }; } - private async processEventBatch(options: { - events: flowResource.FlowEvent[]; - block: flowResource.FlowBlock; - }) { - const { events, block } = options; - await Promise.all( - events.map((flowEvent) => - this.processSingleEvent({ event: flowEvent, block: block }).catch( - (e) => { - this.logger.error( - `Event handling error: ${e.message} (${JSON.stringify( - flowEvent - )})`, - e.stack - ); - } - ) - ) - ); - } - - private async processSingleEvent(options: { - event: flowResource.FlowEvent; - block: flowResource.FlowBlock; - }) { - const { event, block } = options; + private async processEvent(event: flowResource.FlowEvent) { this.logger.debug(`Processing event: ${JSON.stringify(event)}`); const isFlowTokenWithdrawnEvent = (eventId: string) => @@ -298,19 +264,17 @@ export class FlowIndexerService { const address = ensurePrefixedAddress(event.data.address); switch (event.type) { case FlowCoreEventType.ACCOUNT_CREATED: - return this.createAccount({ - address, - block, - }); + return this.createAccount(address); case FlowCoreEventType.ACCOUNT_KEY_ADDED: - return this.processAccountKeyAddedEvent(event); + return this.onAccountKeyAddedEvent(event); case FlowCoreEventType.ACCOUNT_KEY_REMOVED: - return this.processAccountKeyRemovedEvent(event); + return this.onAccountKeyRemovedEvent(event); case FlowCoreEventType.ACCOUNT_CONTRACT_ADDED: + return this.onAccountContractAdded(event); case FlowCoreEventType.ACCOUNT_CONTRACT_UPDATED: + return this.onAccountContractUpdated(event); case FlowCoreEventType.ACCOUNT_CONTRACT_REMOVED: - // TODO: Stop re-fetching all contracts and instead use event.data.contract to get the removed/updated/added contract - // return this.createAccount({ address, block }); + return this.onAccountContractRemoved(event); } switch (true) { @@ -330,7 +294,46 @@ export class FlowIndexerService { } } - private async processAccountKeyAddedEvent(event: FlowAccountKeyEvent) { + private async onAccountContractAdded(event: FlowAccountContractEvent) { + const account = await this.flowGatewayService.getAccount( + event.data.address + ); + + await this.contractIndex.create( + this.createContractEntity({ + account, + name: event.data.contract, + }) + ); + } + + private async onAccountContractUpdated(event: FlowAccountContractEvent) { + const account = await this.flowGatewayService.getAccount( + event.data.address + ); + + await this.contractIndex.update( + this.createContractEntity({ + account, + name: event.data.contract, + }) + ); + } + + private async onAccountContractRemoved(event: FlowAccountContractEvent) { + const account = await this.flowGatewayService.getAccount( + event.data.address + ); + + await this.contractIndex.delete( + this.createContractEntity({ + account, + name: event.data.contract, + }) + ); + } + + private async onAccountKeyAddedEvent(event: FlowAccountKeyEvent) { const publicKey = this.decodeUint8PublicKey(event.data.publicKey.publicKey); const account = await this.flowGatewayService.getAccount( event.data.address @@ -349,7 +352,7 @@ export class FlowIndexerService { ); } - private async processAccountKeyRemovedEvent(event: FlowAccountKeyEvent) { + private async onAccountKeyRemovedEvent(event: FlowAccountKeyEvent) { const publicKey = this.decodeUint8PublicKey(event.data.publicKey.publicKey); const keyId = this.buildKeyId({ address: event.data.address, @@ -387,19 +390,15 @@ export class FlowIndexerService { await this.accountIndex.upsert(this.createAccountEntity(flowAccount)); } - private async createAccount(options: { - address: string; - block: flowResource.FlowBlock; - }) { - const { address, block } = options; - const flowAccount = await this.flowGatewayService.getAccount(address); + private async createAccount(address: string) { + const account = await this.flowGatewayService.getAccount(address); await Promise.all([ // Use `upsert` instead of `create` because we are processing a batch // of events (which may include "token balance updated" event) in parallel. - this.accountIndex.upsert(this.createAccountEntity(flowAccount)), + this.accountIndex.upsert(this.createAccountEntity(account)), Promise.all( - flowAccount.keys.map((key) => + account.keys.map((key) => this.accountKeyIndex.create( this.createKeyEntity({ address, @@ -409,13 +408,11 @@ export class FlowIndexerService { ) ), Promise.all( - Object.keys(flowAccount.contracts).map((name) => + Object.keys(account.contracts).map((name) => this.contractIndex.create( this.createContractEntity({ - account: flowAccount, - block: block, + account, name, - code: flowAccount.contracts[name], }) ) ) @@ -447,30 +444,13 @@ export class FlowIndexerService { } private async maybeProcessWellKnownAccounts() { - // Afaik these well-known default accounts are - // bootstrapped in a "meta-transaction", - // which is hidden from the public blockchain. - // See: https://github.com/onflow/flow-go/blob/master/fvm/bootstrap.go - const nonExistingBlock: flowResource.FlowBlock = { - id: "NULL", - blockSeals: [], - collectionGuarantees: [], - height: 0, - parentId: "", - signatures: [], - timestamp: 0, - }; - await Promise.all( this.getAllWellKnownAddresses() .filter( (address) => this.accountIndex.findOneById(address) !== undefined ) .map((address) => - this.createAccount({ - address, - block: nonExistingBlock, - }).catch((error) => { + this.createAccount(address).catch((error) => { // Most likely an account not found error monotonic/non-monotonic addresses. // Can be safely ignored. // TODO(restructure): Smarter handling of monotonic/non-monotonic addresses @@ -584,16 +564,14 @@ export class FlowIndexerService { return `${accountAddress}.${options.publicKey}`; } - private createEventEntity(options: { - event: ExtendedFlowEvent; - }): OmitTimestamps { - const { event } = options; + private createEventEntity( + event: flowResource.FlowEvent + ): OmitTimestamps { return { id: `${event.transactionId}.${event.eventIndex}`, type: event.type, transactionIndex: event.transactionIndex, transactionId: event.transactionId, - blockId: event.blockId, eventIndex: event.eventIndex, data: event.data, }; @@ -618,20 +596,17 @@ export class FlowIndexerService { } private createContractEntity(options: { - block: flowResource.FlowBlock; account: flowResource.FlowAccount; name: string; - code: string; }): OmitTimestamps { - const { account, block, name, code } = options; + const { account, name } = options; return { id: `${account.address}.${name}`, - blockId: block.id, address: ensurePrefixedAddress(account.address), // TODO(restructure): Populate local config if applicable localConfig: undefined, name: name, - code: code, + code: account.contracts[name], }; } diff --git a/packages/ui/src/events/EventDetails/EventDetails.tsx b/packages/ui/src/events/EventDetails/EventDetails.tsx index 7c45e980c..3228db2dc 100644 --- a/packages/ui/src/events/EventDetails/EventDetails.tsx +++ b/packages/ui/src/events/EventDetails/EventDetails.tsx @@ -51,16 +51,6 @@ export const EventDetails: FunctionComponent = (props) => { ), }, - { - label: "Block", - value: ( - - - {event.blockId} - - - ), - }, { label: "Transaction", value: ( From 31900045fd441ded0ee20c90008d7721a7a7a264 Mon Sep 17 00:00:00 2001 From: Bart Date: Tue, 31 Oct 2023 11:16:24 +0100 Subject: [PATCH 076/100] update electron builder config --- apps/electron/.gitignore | 2 + apps/electron/assets/icon.icns | Bin 111909 -> 0 bytes apps/electron/assets/icon.ico | Bin 370070 -> 0 bytes apps/electron/assets/icon.png | Bin 32456 -> 66405 bytes apps/electron/assets/icon.svg | 23 - apps/electron/assets/icons/1024x1024.png | Bin 159736 -> 0 bytes apps/electron/assets/icons/128x128.png | Bin 17611 -> 0 bytes apps/electron/assets/icons/16x16.png | Bin 954 -> 0 bytes apps/electron/assets/icons/24x24.png | Bin 1907 -> 0 bytes apps/electron/assets/icons/256x256.png | Bin 32456 -> 0 bytes apps/electron/assets/icons/32x32.png | Bin 2017 -> 0 bytes apps/electron/assets/icons/48x48.png | Bin 5159 -> 0 bytes apps/electron/assets/icons/512x512.png | Bin 79296 -> 0 bytes apps/electron/assets/icons/64x64.png | Bin 7454 -> 0 bytes apps/electron/assets/icons/96x96.png | Bin 12526 -> 0 bytes apps/electron/assets/macos-background.png | Bin 0 -> 86426 bytes apps/electron/assets/macos-background.tiff | Bin 0 -> 1385894 bytes apps/electron/electron-builder.yml | 25 +- apps/electron/package.json | 4 +- .../src/services/flowser-app.service.ts | 4 +- yarn.lock | 1342 ++++++++++++++++- 21 files changed, 1337 insertions(+), 63 deletions(-) delete mode 100644 apps/electron/assets/icon.icns delete mode 100644 apps/electron/assets/icon.ico mode change 100755 => 100644 apps/electron/assets/icon.png delete mode 100644 apps/electron/assets/icon.svg delete mode 100755 apps/electron/assets/icons/1024x1024.png delete mode 100755 apps/electron/assets/icons/128x128.png delete mode 100755 apps/electron/assets/icons/16x16.png delete mode 100755 apps/electron/assets/icons/24x24.png delete mode 100755 apps/electron/assets/icons/256x256.png delete mode 100755 apps/electron/assets/icons/32x32.png delete mode 100755 apps/electron/assets/icons/48x48.png delete mode 100755 apps/electron/assets/icons/512x512.png delete mode 100755 apps/electron/assets/icons/64x64.png delete mode 100755 apps/electron/assets/icons/96x96.png create mode 100644 apps/electron/assets/macos-background.png create mode 100644 apps/electron/assets/macos-background.tiff diff --git a/apps/electron/.gitignore b/apps/electron/.gitignore index da1343076..cf92dc7aa 100644 --- a/apps/electron/.gitignore +++ b/apps/electron/.gitignore @@ -27,3 +27,5 @@ npm-debug.log.* *.css.d.ts *.sass.d.ts *.scss.d.ts + +generated-icons diff --git a/apps/electron/assets/icon.icns b/apps/electron/assets/icon.icns deleted file mode 100644 index c2213ce890a3d807acf6eaebc03b783ea246ecfa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 111909 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%0DnZe&`x56GYq2ef!@%dNjOv(emfk>^ZaJ zgZa(r-{SJ#ldwGZP~*?Pkv59U>e`Rqe%qy!hFfM6I-N$vKQn*c`~A;nsm5?Q?WHgN zT+_4u4f(6Zb6}}0s6rcCW;FR8{O}ExS)xeE$Zf?d)fFpt`c(qpxRBO!F|_&P;h|+; zInn{vH7#pNEmyRt@^mK8OXz>Uf z0GAi+e@rEcV2yriqDo(jXhjJo`3^PDaGJ^suK_NwOwr*5S?D8 z;Ig{x^Opg}7k|-~24J8q?n>8bxKH1#)$!ssjCY$TjkavDn&*kkC0Zazue=ye^V0fH%}lu}bB|pF$Q~OHOZpaE(s9Bm~XFd8kvv4Ks-W}Phz;X(stsi{h!$lbx z&q_2W^W%sQ@y1zpe_4l7JqpWnK0Jz$24MN!vzAd<*08Gg>Wiv+S3qwAEa%TFksJ#l z24NJIrIR1RiY@_T_m{!h%or^58%!!Ht za8zKKe@lW@yyl6jG)8ZRU+R)b+88X;b3Qtr@~4`V_Z=7-tTv>B$y$6$G;cH^@&HfVrW-vgy<=gz`9mDd6wF(kC3olyQLz)YnQ?|nTVfZ2EcVDW>az)Wf%%-i!t1flqEfVq75{9@fh zYKSQr1!ht+L(})KV|4(#e;xzowVlWv*{z&s%Z-Hh&ays~5H^x3nghj+f_z8_6PQ*HoYhD9|!2FyRd?~lJ2 z1LpWYM8_$>e9!)OR|7D=_{ov`#(+5*Mg9Cy3~^>p-#!Y=#iM?!r0@Jz=$j`BpndEa z3!eMt`w#zBr1miB+^5EwbK zLYFWa?Dh@C^?$)RmXN-hjN#Mo*PtRrS|F#Oz z=+BqH;``6f$jFRuGDM-*e#}+%9gi#cUBx2=PYlxhkl*P$(y?DxF+Wy7G!*pYRJc^3FaGKDbqamaPp7X@=*>S}{sLw7 zlJ?)5W{hG4(+d4v|N5!z`4tR^C^T{VPZJ2-&^N$nh(b$$T7|FRCzat4jVwP+o~yV} z8J|(;=ZAlaKqL6*9YCyP2>ld+uHXfVI12rJr~bP{Blxqwjj~rVfZzAOb;1?g0}uu5 z75ZOp`)?Vp;=RAQMy_O_FZ^eTAi~PS;qb^3Z(=T?EH}j z$a^PV&mMkH@?HJ0IzY+YQ~wXSQibug=Y9ZQKnt(p&s!#ak6g)+p!;A9ey)>hMDdAl zW)lC6T*(l1d)pysrfcr=Q3pD_4p{F{2Iap$(An{SXx|9IRNp-pw^;871pXm%U;v-v ze#yAj>^gb=;@1~W?taC~{|X{6euP@dpd`gj`|Sf-j?@0*P9^f@N0~#?52XH>C}Y&u zvOtKywdcCe*M64NDSrDLtMZDk{cjbzCGglIwhr&SC!T$N&6XWIH@&v{g{S6w+d6|m zUq4Ee+pKcm>Nnq98$^j~-+J@q`PR0^_C08-%fGC>?-hL6;V-$j)amzl1EH`SnG*8* zyna{p-}fAxiSe5Gt;i>DN0aO|HGOOGA5eUi#~bPH>h1IPPVVdN>IMg5!|fB){`C*H zuX{AK8BK1v{Eqv{R~9a$9loxv-rkQZ6~tn+R2Z1dy$#y-eB$z1^(+pd3UaZR1)J#@DhZ(IEO{)5Hd za97W0mfrdEd&53^dsAI?RYgT*Rb6A7%^U8WH@~l2?n(igh_`O{&UJGB9S9w*`9Vbw?s{S3;l><0ty&FM1u_ z*t2KTqc1*U@v&Xfld=b7_01uLnrFyZj|@z46qc zFBiOmrY>8sU@^MI7KXgxo<3h)wxl;WO+mBMG!=XonN{xI-Y{f|I8>?gpIiOp%V^pY zPc2`&zB16&6%Kdzx+_c≷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 yy;kMF%Y-7ayVzP*K9-S8?i_H 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 E*=&X%`v3p{ diff --git a/apps/electron/assets/icon.ico b/apps/electron/assets/icon.ico deleted file mode 100644 index 98948ea682c47f298f588b92fd54bfbe30a653e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 370070 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%0Ac{tp15`}K1EcXn`;VNH`g_M+Zx$3Me}I1 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


    Gq$%jzd8n6e**YAz(E%q?3xJQdC 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 diff --git a/apps/electron/assets/icon.png b/apps/electron/assets/icon.png old mode 100755 new mode 100644 index 755a6e51d53e9252f90c19cdb4a373bebb80af98..9ed192ca78c0af7620c5983f702b13f1178d5457 GIT binary patch literal 66405 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 AKL7v# literal 32456 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 - - - - - - - - - - - - - - - - - - - - - - diff --git a/apps/electron/assets/icons/1024x1024.png b/apps/electron/assets/icons/1024x1024.png deleted file mode 100755 index 5940b65a3d42d62f38317f14270b28fd8dd568a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 159736 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%0DqXu@gf&o&9Mlf6Cm4o6wPr@ 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�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 diff --git a/apps/electron/assets/icons/24x24.png b/apps/electron/assets/icons/24x24.png deleted file mode 100755 index 56172416c79d29acaca9177b942f6b7fb2c94db9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1907 zcmV-(2aNcMP)ofjERCRMe~sK~Y*-*$yOtxr4pffnpmdhq>(Cuk)T7q_oONpWf3y|9ms^ z%{)E&Uu(EFMRmjXsrKr9+H(Do&~pO(3%Sq)D)Q#x~37=1yENEKk5Jy+os@cz8MQiXrDqJpD8$ge_Z)f@ zY-oXRT^)Q?bqLnCV8xz8kJ)#A^Tf=Wt-w!q0kkplK&U!58CNwlNfKmRIXEIi?A%SQ z_aPhtsQCdBYfnYa2RF6B;daMt$;q%;%~4yDWm-b2h2N8t;BdKP1&uAJIXQfJ^F64; z0BxIskh!mqLW9?2(1xoII6;J3?qb#ffEsT>3>_VKn3nB@MW>O7B*g4C8yrq2BMo*@ zge@gmN*tB$q-EuxGTi^TVFGEr0JYzRP;v4G)kSzF%T8RP=CNtvJ*mZ;h_5_4c+X~E z0;|ywwMnGz3}hCS!tM1#6jNbKw!-DfMMi!RmT)q@Bi~Ks=c>N`2k+c~Vh=z~%vte| ztDNAIp}2N{Dn_U0Rt*lHax#%wr;Vnjro!$_ho@o== zR#ZZCI3SUm4Z5f!I~QvQzBp4kj32ZCwEW|XakTdHFK5;9iq(!hDhxF5fI*oUO|glv znvHPz3*hwRz@k+l#bQBGYd3c{bEKY%-n7g57n&GAU!W1?t)@Cc^=E&JB*U*+=5&I524mLaQRHJ|?p%k~~Y!PZWAR;^?56mSg3T4QFT9woaE|GWBH z^pDkJAgUV&t&cpl`8IXH$ZeYp`j|6Nh|HB$Nb?1eQM>|yEuFA3fyhG@c>$8S+NytE zLJofuZuaL?Hz0+(F&T|9gH|2$HngF7X0LCAUZsdytVywq<&``% zBlL+0DC*pcjFNI$j@qGrVFSa#Ta;PO!{?5435y^}o52fUG8vge8TG8IN9gQCU?={Y zpmJy;+f&mdJ5452Yzc2ovfTlT)rz8>`(bluvexOSIddH~XKzAGcgw`C(h8W(X0F_T z^y1|(^L?FC5zXR`R-L}#?*e!RBTp%G;jT5WxihL$t6*S>I0=HCAE2Ud5Ls(Bz{N6{ z^m^DcvysZ3EamD8+3(;bNabWU>D;{(2AwvhQ>ox>>Okn+ZLwx7M&u2DO1{5-_IlCY zzHx)mzzGady;ch`I}iEWdyrmKhO}S_oV-nXr2;y|Vq|av|JH6S$@9aJU(A&!!JwC7 z^-;aSfWn?5lY!%Bf9E@Ph6n($3CoV3IWFe-piwBIMzaO#MGN5w6hUOY^*nrM;WDl= zQ`XtUewG3$8CghO>Va072qSl`VR=$Lywb-%|AaZeMUv&be^e+Nh)^JW(iPag7wY)8 zVURB?VfP0i=K7&Yh?lB^i-#|I1JG$S(5e)W3QBUipjE5n7*+h+F<-|XY~19+J6QtKBJ++I>M8OZ2%PW%uu|wU?#n6B}zX!eT?S*aJI7J&$PIpf@t>l=TO5Wghqgjb#1Seh6f{}uKT-Z)^gn@eYJ}Fa3(h zRMSk7Ref=P)((Ii+xIOj4);e~{Gq85;-jkgMNu_ttI=p;OeRC4R>h<Cj=_XT?H z$3#EgmYUXgtAChp%)HNz2M-p^j87v{V~zctzE8%chC|%lG)VdhOZy t+Vi)G|6J5Cj=22Z0pVF}S=ImX{Rd?3db%Qsf?WUr002ovPDHLkV1iX*wz~iT diff --git a/apps/electron/assets/icons/256x256.png b/apps/electron/assets/icons/256x256.png deleted file mode 100755 index 755a6e51d53e9252f90c19cdb4a373bebb80af98..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32456 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 diff --git a/apps/electron/assets/icons/64x64.png b/apps/electron/assets/icons/64x64.png deleted file mode 100755 index 6de0ec0e03268c0551cbdb8e9c5e2f27f253ec7d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7454 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 literal 0 HcmV?d00001 diff --git a/apps/electron/assets/macos-background.tiff b/apps/electron/assets/macos-background.tiff new file mode 100644 index 0000000000000000000000000000000000000000..a57501f7e8d8776711de10037794a36e8c428051 GIT binary patch literal 1385894 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 z�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

    5k~o$sC)NK1hk>=Y(=+6t==qxCt*&T9gx& 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 literal 0 HcmV?d00001 diff --git a/apps/electron/electron-builder.yml b/apps/electron/electron-builder.yml index b6faa2ab8..2d375dcb5 100644 --- a/apps/electron/electron-builder.yml +++ b/apps/electron/electron-builder.yml @@ -19,24 +19,41 @@ mac: entitlements: assets/entitlements.mac.plist entitlementsInherit: assets/entitlements.mac.plist gatekeeperAssess: false + artifactName: flowser-${version}-${os}-${arch}.${ext} + category: public.app-category.developer-tools dmg: contents: - - x: 130 - y: 220 - - x: 410 - y: 220 + - x: 219 + y: 358 + type: dir + name: Flowser.app + - x: 439 + y: 358 type: link path: "/Applications" + artifactName: flowser-${version}-${os}-${arch}.${ext} + background: assets/macos-background.tiff + +nsis: + oneClick: false + allowToChangeInstallationDirectory: false + deleteAppDataOnUninstall: true + artifactName: flowser-${version}-${os}-${arch}.${ext} win: target: - nsis + - zip + artifactName: flowser-${version}-${os}-${arch}.${ext} linux: target: - AppImage + - deb category: Development + icon: generated-icons/png/ + artifactName: flowser-${version}-${os}-${arch}.${ext} directories: app: release/app diff --git a/apps/electron/package.json b/apps/electron/package.json index c0062e026..baada5477 100644 --- a/apps/electron/package.json +++ b/apps/electron/package.json @@ -36,7 +36,8 @@ ], "main": "./src/main/main.ts", "scripts": { - "build": "concurrently \"npm run build:main\" \"npm run build:renderer\"", + "generate-icons": "../../node_modules/.bin/electron-icon-maker --input=./assets/icon.png --output=./generated-icons", + "build": "npm run generate-icons && concurrently \"npm run build:main\" \"npm run build:renderer\"", "build:dll": "cross-env NODE_ENV=development TS_NODE_TRANSPILE_ONLY=true webpack --config ./.erb/configs/webpack.config.renderer.dev.dll.ts", "build:main": "cross-env NODE_ENV=production TS_NODE_TRANSPILE_ONLY=true webpack --config ./.erb/configs/webpack.config.main.prod.ts", "build:renderer": "cross-env NODE_ENV=production TS_NODE_TRANSPILE_ONLY=true webpack --config ./.erb/configs/webpack.config.renderer.prod.ts", @@ -102,6 +103,7 @@ "@fingerprintjs/fingerprintjs": "^4.1.0", "@sentry/electron": "^4.13.0", "electron-debug": "^3.2.0", + "electron-icon-maker": "^0.0.5", "electron-log": "^4.4.8", "electron-updater": "^6.1.4", "mixpanel-browser": "^2.47.0", diff --git a/apps/electron/src/services/flowser-app.service.ts b/apps/electron/src/services/flowser-app.service.ts index 8458b6f05..5f7532556 100644 --- a/apps/electron/src/services/flowser-app.service.ts +++ b/apps/electron/src/services/flowser-app.service.ts @@ -45,7 +45,7 @@ export class FlowserAppService { constructor() { this.flowGatewayService = new FlowGatewayService(); - this.logger = new WebLogger(); + this.logger = new ElectronLogger(); this.flowAccountStorageService = new FlowAccountStorageService( this.flowGatewayService ); @@ -193,7 +193,7 @@ export class FlowserAppService { } } -class WebLogger implements IFlowserLogger { +class ElectronLogger implements IFlowserLogger { debug(message: any): void { console.debug(message); } diff --git a/yarn.lock b/yarn.lock index 8af033116..97153ca5b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1065,7 +1065,7 @@ dependencies: regenerator-runtime "^0.14.0" -"@babel/runtime@^7.15.4", "@babel/runtime@^7.18.6", "@babel/runtime@^7.20.13", "@babel/runtime@^7.21.0": +"@babel/runtime@^7.15.4", "@babel/runtime@^7.18.6", "@babel/runtime@^7.20.13", "@babel/runtime@^7.21.0", "@babel/runtime@^7.7.2": version "7.23.1" resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.1.tgz" integrity sha512-hC2v6p8ZSI/W0HUzh3V8C5g+NwSKzKPtJwSpTjwl0o297GP9+ZLQSkdvHz46CM3LqyoXxq+5G9komY+eSqSO0g== @@ -1618,6 +1618,296 @@ "@types/yargs" "^17.0.8" chalk "^4.0.0" +"@jimp/bmp@^0.14.0": + version "0.14.0" + resolved "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.14.0.tgz" + integrity sha512-5RkX6tSS7K3K3xNEb2ygPuvyL9whjanhoaB/WmmXlJS6ub4DjTqrapu8j4qnIWmO4YYtFeTbDTXV6v9P1yMA5A== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.14.0" + bmp-js "^0.1.0" + +"@jimp/core@^0.14.0": + version "0.14.0" + resolved "https://registry.npmjs.org/@jimp/core/-/core-0.14.0.tgz" + integrity sha512-S62FcKdtLtj3yWsGfJRdFXSutjvHg7aQNiFogMbwq19RP4XJWqS2nOphu7ScB8KrSlyy5nPF2hkWNhLRLyD82w== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.14.0" + any-base "^1.1.0" + buffer "^5.2.0" + exif-parser "^0.1.12" + file-type "^9.0.0" + load-bmfont "^1.3.1" + mkdirp "^0.5.1" + phin "^2.9.1" + pixelmatch "^4.0.2" + tinycolor2 "^1.4.1" + +"@jimp/custom@^0.14.0", "@jimp/custom@>=0.3.5": + version "0.14.0" + resolved "https://registry.npmjs.org/@jimp/custom/-/custom-0.14.0.tgz" + integrity sha512-kQJMeH87+kWJdVw8F9GQhtsageqqxrvzg7yyOw3Tx/s7v5RToe8RnKyMM+kVtBJtNAG+Xyv/z01uYQ2jiZ3GwA== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/core" "^0.14.0" + +"@jimp/gif@^0.14.0": + version "0.14.0" + resolved "https://registry.npmjs.org/@jimp/gif/-/gif-0.14.0.tgz" + integrity sha512-DHjoOSfCaCz72+oGGEh8qH0zE6pUBaBxPxxmpYJjkNyDZP7RkbBkZJScIYeQ7BmJxmGN4/dZn+MxamoQlr+UYg== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.14.0" + gifwrap "^0.9.2" + omggif "^1.0.9" + +"@jimp/jpeg@^0.14.0": + version "0.14.0" + resolved "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.14.0.tgz" + integrity sha512-561neGbr+87S/YVQYnZSTyjWTHBm9F6F1obYHiyU3wVmF+1CLbxY3FQzt4YolwyQHIBv36Bo0PY2KkkU8BEeeQ== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.14.0" + jpeg-js "^0.4.0" + +"@jimp/plugin-blit@^0.14.0", "@jimp/plugin-blit@>=0.3.5": + version "0.14.0" + resolved "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.14.0.tgz" + integrity sha512-YoYOrnVHeX3InfgbJawAU601iTZMwEBZkyqcP1V/S33Qnz9uzH1Uj1NtC6fNgWzvX6I4XbCWwtr4RrGFb5CFrw== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.14.0" + +"@jimp/plugin-blur@^0.14.0", "@jimp/plugin-blur@>=0.3.5": + version "0.14.0" + resolved "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.14.0.tgz" + integrity sha512-9WhZcofLrT0hgI7t0chf7iBQZib//0gJh9WcQMUt5+Q1Bk04dWs8vTgLNj61GBqZXgHSPzE4OpCrrLDBG8zlhQ== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.14.0" + +"@jimp/plugin-circle@^0.14.0": + version "0.14.0" + resolved "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.14.0.tgz" + integrity sha512-o5L+wf6QA44tvTum5HeLyLSc5eVfIUd5ZDVi5iRfO4o6GT/zux9AxuTSkKwnjhsG8bn1dDmywAOQGAx7BjrQVA== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.14.0" + +"@jimp/plugin-color@^0.14.0", "@jimp/plugin-color@>=0.8.0": + version "0.14.0" + resolved "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.14.0.tgz" + integrity sha512-JJz512SAILYV0M5LzBb9sbOm/XEj2fGElMiHAxb7aLI6jx+n0agxtHpfpV/AePTLm1vzzDxx6AJxXbKv355hBQ== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.14.0" + tinycolor2 "^1.4.1" + +"@jimp/plugin-contain@^0.14.0": + version "0.14.0" + resolved "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.14.0.tgz" + integrity sha512-RX2q233lGyaxiMY6kAgnm9ScmEkNSof0hdlaJAVDS1OgXphGAYAeSIAwzESZN4x3ORaWvkFefeVH9O9/698Evg== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.14.0" + +"@jimp/plugin-cover@^0.14.0": + version "0.14.0" + resolved "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.14.0.tgz" + integrity sha512-0P/5XhzWES4uMdvbi3beUgfvhn4YuQ/ny8ijs5kkYIw6K8mHcl820HahuGpwWMx56DJLHRl1hFhJwo9CeTRJtQ== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.14.0" + +"@jimp/plugin-crop@^0.14.0", "@jimp/plugin-crop@>=0.3.5": + version "0.14.0" + resolved "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.14.0.tgz" + integrity sha512-Ojtih+XIe6/XSGtpWtbAXBozhCdsDMmy+THUJAGu2x7ZgKrMS0JotN+vN2YC3nwDpYkM+yOJImQeptSfZb2Sug== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.14.0" + +"@jimp/plugin-displace@^0.14.0": + version "0.14.0" + resolved "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.14.0.tgz" + integrity sha512-c75uQUzMgrHa8vegkgUvgRL/PRvD7paFbFJvzW0Ugs8Wl+CDMGIPYQ3j7IVaQkIS+cAxv+NJ3TIRBQyBrfVEOg== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.14.0" + +"@jimp/plugin-dither@^0.14.0": + version "0.14.0" + resolved "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.14.0.tgz" + integrity sha512-g8SJqFLyYexXQQsoh4dc1VP87TwyOgeTElBcxSXX2LaaMZezypmxQfLTzOFzZoK8m39NuaoH21Ou1Ftsq7LzVQ== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.14.0" + +"@jimp/plugin-fisheye@^0.14.0": + version "0.14.0" + resolved "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.14.0.tgz" + integrity sha512-BFfUZ64EikCaABhCA6mR3bsltWhPpS321jpeIQfJyrILdpFsZ/OccNwCgpW1XlbldDHIoNtXTDGn3E+vCE7vDg== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.14.0" + +"@jimp/plugin-flip@^0.14.0": + version "0.14.0" + resolved "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.14.0.tgz" + integrity sha512-WtL1hj6ryqHhApih+9qZQYA6Ye8a4HAmdTzLbYdTMrrrSUgIzFdiZsD0WeDHpgS/+QMsWwF+NFmTZmxNWqKfXw== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.14.0" + +"@jimp/plugin-gaussian@^0.14.0": + version "0.14.0" + resolved "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.14.0.tgz" + integrity sha512-uaLwQ0XAQoydDlF9tlfc7iD9drYPriFe+jgYnWm8fbw5cN+eOIcnneEX9XCOOzwgLPkNCxGox6Kxjn8zY6GxtQ== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.14.0" + +"@jimp/plugin-invert@^0.14.0": + version "0.14.0" + resolved "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.14.0.tgz" + integrity sha512-UaQW9X9vx8orQXYSjT5VcITkJPwDaHwrBbxxPoDG+F/Zgv4oV9fP+udDD6qmkgI9taU+44Fy+zm/J/gGcMWrdg== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.14.0" + +"@jimp/plugin-mask@^0.14.0": + version "0.14.0" + resolved "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.14.0.tgz" + integrity sha512-tdiGM69OBaKtSPfYSQeflzFhEpoRZ+BvKfDEoivyTjauynbjpRiwB1CaiS8En1INTDwzLXTT0Be9SpI3LkJoEA== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.14.0" + +"@jimp/plugin-normalize@^0.14.0": + version "0.14.0" + resolved "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.14.0.tgz" + integrity sha512-AfY8sqlsbbdVwFGcyIPy5JH/7fnBzlmuweb+Qtx2vn29okq6+HelLjw2b+VT2btgGUmWWHGEHd86oRGSoWGyEQ== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.14.0" + +"@jimp/plugin-print@^0.14.0": + version "0.14.0" + resolved "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.14.0.tgz" + integrity sha512-MwP3sH+VS5AhhSTXk7pui+tEJFsxnTKFY3TraFJb8WFbA2Vo2qsRCZseEGwpTLhENB7p/JSsLvWoSSbpmxhFAQ== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.14.0" + load-bmfont "^1.4.0" + +"@jimp/plugin-resize@^0.14.0", "@jimp/plugin-resize@>=0.3.5", "@jimp/plugin-resize@>=0.8.0": + version "0.14.0" + resolved "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.14.0.tgz" + integrity sha512-qFeMOyXE/Bk6QXN0GQo89+CB2dQcXqoxUcDb2Ah8wdYlKqpi53skABkgVy5pW3EpiprDnzNDboMltdvDslNgLQ== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.14.0" + +"@jimp/plugin-rotate@^0.14.0", "@jimp/plugin-rotate@>=0.3.5": + version "0.14.0" + resolved "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.14.0.tgz" + integrity sha512-aGaicts44bvpTcq5Dtf93/8TZFu5pMo/61lWWnYmwJJU1RqtQlxbCLEQpMyRhKDNSfPbuP8nyGmaqXlM/82J0Q== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.14.0" + +"@jimp/plugin-scale@^0.14.0", "@jimp/plugin-scale@>=0.3.5": + version "0.14.0" + resolved "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.14.0.tgz" + integrity sha512-ZcJk0hxY5ZKZDDwflqQNHEGRblgaR+piePZm7dPwPUOSeYEH31P0AwZ1ziceR74zd8N80M0TMft+e3Td6KGBHw== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.14.0" + +"@jimp/plugin-shadow@^0.14.0": + version "0.14.0" + resolved "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.14.0.tgz" + integrity sha512-p2igcEr/iGrLiTu0YePNHyby0WYAXM14c5cECZIVnq/UTOOIQ7xIcWZJ1lRbAEPxVVXPN1UibhZAbr3HAb5BjQ== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.14.0" + +"@jimp/plugin-threshold@^0.14.0": + version "0.14.0" + resolved "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.14.0.tgz" + integrity sha512-N4BlDgm/FoOMV/DQM2rSpzsgqAzkP0DXkWZoqaQrlRxQBo4zizQLzhEL00T/YCCMKnddzgEhnByaocgaaa0fKw== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.14.0" + +"@jimp/plugins@^0.14.0": + version "0.14.0" + resolved "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.14.0.tgz" + integrity sha512-vDO3XT/YQlFlFLq5TqNjQkISqjBHT8VMhpWhAfJVwuXIpilxz5Glu4IDLK6jp4IjPR6Yg2WO8TmRY/HI8vLrOw== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/plugin-blit" "^0.14.0" + "@jimp/plugin-blur" "^0.14.0" + "@jimp/plugin-circle" "^0.14.0" + "@jimp/plugin-color" "^0.14.0" + "@jimp/plugin-contain" "^0.14.0" + "@jimp/plugin-cover" "^0.14.0" + "@jimp/plugin-crop" "^0.14.0" + "@jimp/plugin-displace" "^0.14.0" + "@jimp/plugin-dither" "^0.14.0" + "@jimp/plugin-fisheye" "^0.14.0" + "@jimp/plugin-flip" "^0.14.0" + "@jimp/plugin-gaussian" "^0.14.0" + "@jimp/plugin-invert" "^0.14.0" + "@jimp/plugin-mask" "^0.14.0" + "@jimp/plugin-normalize" "^0.14.0" + "@jimp/plugin-print" "^0.14.0" + "@jimp/plugin-resize" "^0.14.0" + "@jimp/plugin-rotate" "^0.14.0" + "@jimp/plugin-scale" "^0.14.0" + "@jimp/plugin-shadow" "^0.14.0" + "@jimp/plugin-threshold" "^0.14.0" + timm "^1.6.1" + +"@jimp/png@^0.14.0": + version "0.14.0" + resolved "https://registry.npmjs.org/@jimp/png/-/png-0.14.0.tgz" + integrity sha512-0RV/mEIDOrPCcNfXSPmPBqqSZYwGADNRVUTyMt47RuZh7sugbYdv/uvKmQSiqRdR0L1sfbCBMWUEa5G/8MSbdA== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.14.0" + pngjs "^3.3.3" + +"@jimp/tiff@^0.14.0": + version "0.14.0" + resolved "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.14.0.tgz" + integrity sha512-zBYDTlutc7j88G/7FBCn3kmQwWr0rmm1e0FKB4C3uJ5oYfT8645lftUsvosKVUEfkdmOaMAnhrf4ekaHcb5gQw== + dependencies: + "@babel/runtime" "^7.7.2" + utif "^2.0.1" + +"@jimp/types@^0.14.0": + version "0.14.0" + resolved "https://registry.npmjs.org/@jimp/types/-/types-0.14.0.tgz" + integrity sha512-hx3cXAW1KZm+b+XCrY3LXtdWy2U+hNtq0rPyJ7NuXCjU7lZR3vIkpz1DLJ3yDdS70hTi5QDXY3Cd9kd6DtloHQ== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/bmp" "^0.14.0" + "@jimp/gif" "^0.14.0" + "@jimp/jpeg" "^0.14.0" + "@jimp/png" "^0.14.0" + "@jimp/tiff" "^0.14.0" + timm "^1.6.1" + +"@jimp/utils@^0.14.0": + version "0.14.0" + resolved "https://registry.npmjs.org/@jimp/utils/-/utils-0.14.0.tgz" + integrity sha512-MY5KFYUru0y74IsgM/9asDwb3ERxWxXEu3CRCZEvE7DtT86y1bR1XgtlSliMrptjz4qbivNGMQSvUBpEFJDp1A== + dependencies: + "@babel/runtime" "^7.7.2" + regenerator-runtime "^0.13.3" + "@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": version "0.3.3" resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz" @@ -2578,6 +2868,11 @@ resolved "https://registry.npmjs.org/@types/node/-/node-18.18.5.tgz" integrity sha512-4slmbtwV59ZxitY4ixUZdy1uRLf9eSIvBWPQxNjhHYWEtn0FryfKpyS2cvADYXTayWdKEIsJengncrVvkI4I6A== +"@types/node@16.9.1": + version "16.9.1" + resolved "https://registry.npmjs.org/@types/node/-/node-16.9.1.tgz" + integrity sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g== + "@types/node@20.6.2": version "20.6.2" resolved "https://registry.npmjs.org/@types/node/-/node-20.6.2.tgz" @@ -3189,7 +3484,7 @@ ajv-keywords@^5.1.0: dependencies: fast-deep-equal "^3.1.3" -ajv@^6.10.0, ajv@^6.12.0, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.9.1: +ajv@^6.10.0, ajv@^6.12.0, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.9.1: version "6.12.6" resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -3221,6 +3516,11 @@ ansi-html-community@^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== +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" + integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== + ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" @@ -3231,6 +3531,11 @@ ansi-regex@^6.0.1: resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz" integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" + integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== + ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" @@ -3267,6 +3572,11 @@ ansi-to-html@^0.7.2: dependencies: entities "^2.2.0" +any-base@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz" + integrity sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg== + anymatch@^3.0.3, anymatch@~3.1.2: version "3.1.3" resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" @@ -3344,6 +3654,17 @@ argparse@^2.0.1: resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== +args@^2.3.0: + version "2.6.1" + resolved "https://registry.npmjs.org/args/-/args-2.6.1.tgz" + integrity sha512-6gqHZwB7mIn1YnijODwDlAuDgadJvDy1rVM+8E4tbAIPIhL53/J5hDomxgLPZ/1Som+eRKRDmUnuo9ezUpzmRw== + dependencies: + camelcase "4.1.0" + chalk "1.1.3" + minimist "1.2.0" + pkginfo "0.4.0" + string-similarity "1.1.0" + aria-query@^5.0.0, aria-query@^5.1.3: version "5.3.0" resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz" @@ -3387,11 +3708,23 @@ array-includes@^3.1.6: get-intrinsic "^1.2.1" is-string "^1.0.7" +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz" + integrity sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng== + dependencies: + array-uniq "^1.0.1" + array-union@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz" + integrity sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q== + array.prototype.find@^2.2.1: version "2.2.2" resolved "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.2.2.tgz" @@ -3462,7 +3795,14 @@ asap@~2.0.3: resolved "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz" integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== -assert-plus@^1.0.0: +asn1@~0.2.3: + version "0.2.6" + resolved "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz" + integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@^1.0.0, assert-plus@1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== @@ -3516,6 +3856,16 @@ available-typed-arrays@^1.0.5: resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz" integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz" + integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== + +aws4@^1.8.0: + version "1.12.0" + resolved "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz" + integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== + axe-core@^4.6.2: version "4.8.2" resolved "https://registry.npmjs.org/axe-core/-/axe-core-4.8.2.tgz" @@ -3639,6 +3989,13 @@ batch@0.6.1: resolved "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz" integrity sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw== +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz" + integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== + dependencies: + tweetnacl "^0.14.3" + big-integer@^1.6.44: version "1.6.51" resolved "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz" @@ -3675,6 +4032,11 @@ bluebird@^3.5.5: resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== +bmp-js@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz" + integrity sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw== + bn.js@^4.11.9: version "4.12.0" resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" @@ -3791,12 +4153,17 @@ buffer-equal@^1.0.0: resolved "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.1.tgz" integrity sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg== +buffer-equal@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz" + integrity sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA== + buffer-from@^1.0.0: version "1.1.2" resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -buffer@^5.1.0, buffer@^5.5.0: +buffer@^5.1.0, buffer@^5.2.0, buffer@^5.5.0: version "5.7.1" resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== @@ -3924,6 +4291,11 @@ camel-case@^4.1.2: pascal-case "^3.1.2" tslib "^2.0.3" +camelcase@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz" + integrity sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg== + camelcase@^5.3.1: version "5.3.1" resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" @@ -3934,6 +4306,11 @@ camelcase@^6.2.0: resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== +camelcase@4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz" + integrity sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw== + caniuse-api@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz" @@ -3954,6 +4331,11 @@ caniuse-lite@^1.0.30001541: resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001546.tgz" integrity sha512-zvtSJwuQFpewSyRrI3AsftF6rM0X80mZkChIt1spBGEvRglCrjTniXvinc8JKRoqTwXAgvqTImaN9igfSMtUBw== +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz" + integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== + chalk@^2.4.2: version "2.4.2" resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" @@ -3979,6 +4361,17 @@ chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2: ansi-styles "^4.1.0" supports-color "^7.1.0" +chalk@1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz" + integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + char-regex@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz" @@ -4074,6 +4467,15 @@ client-only@^0.0.1: resolved "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz" integrity sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA== +cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz" + integrity sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w== + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + cliui@^8.0.1: version "8.0.1" resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" @@ -4109,6 +4511,11 @@ co@^4.6.0: resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz" integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz" + integrity sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA== + codemirror@^6.0.0: version "6.0.1" resolved "https://registry.npmjs.org/codemirror/-/codemirror-6.0.1.tgz" @@ -4171,7 +4578,7 @@ colorette@^2.0.16: resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz" integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== -combined-stream@^1.0.8: +combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== @@ -4248,6 +4655,16 @@ concat-map@0.0.1: resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== +concat-stream@^1.6.2: + version "1.6.2" + resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + concurrently@^8.2.1: version "8.2.1" resolved "https://registry.npmjs.org/concurrently/-/concurrently-8.2.1.tgz" @@ -4337,12 +4754,7 @@ core-js@^3.32.2: resolved "https://registry.npmjs.org/core-js/-/core-js-3.33.0.tgz" integrity sha512-HoZr92+ZjFEKar5HS6MC776gYslNOKHt75mEBKWKnPeFDpZ6nH5OeF3S6HFT1mUAUZKrzkez05VboaX8myjSuw== -core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== - -core-util-is@1.0.2: +core-util-is@~1.0.0, core-util-is@1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== @@ -4576,6 +4988,13 @@ damerau-levenshtein@^1.0.8: resolved "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz" integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz" + integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== + dependencies: + assert-plus "^1.0.0" + data-urls@^3.0.2: version "3.0.2" resolved "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz" @@ -4597,6 +5016,13 @@ dateformat@^5.0.3: resolved "https://registry.npmjs.org/dateformat/-/dateformat-5.0.3.tgz" integrity sha512-Kvr6HmPXUMerlLcLF+Pwq3K7apHpYmGDVqrxcDasBg86UcKeTSNWbEzU8bwdXnxnR44FtMhJAxI4Bov6Y/KUfA== +debug@^2.6.9: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + debug@^3.2.7: version "3.2.7" resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" @@ -4618,6 +5044,11 @@ debug@2.6.9: dependencies: ms "2.0.0" +decamelize@^1.1.1: + version "1.2.0" + resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== + decimal.js@^10.4.2: version "10.4.3" resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz" @@ -4744,6 +5175,18 @@ define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0, de has-property-descriptors "^1.0.0" object-keys "^1.1.1" +del@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/del/-/del-3.0.0.tgz" + integrity sha512-7yjqSoVSlJzA4t/VUwazuEagGeANEKB3f/aNI//06pfKgwoCb7f6Q1gETN1sZzYaj6chTQ0AhIwDiPdfOjko4A== + dependencies: + globby "^6.1.0" + is-path-cwd "^1.0.0" + is-path-in-cwd "^1.0.0" + p-map "^1.1.1" + pify "^3.0.0" + rimraf "^2.2.8" + delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" @@ -4906,6 +5349,11 @@ dom-serializer@^2.0.0: domhandler "^5.0.2" entities "^4.2.0" +dom-walk@^0.1.0: + version "0.1.2" + resolved "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz" + integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== + domelementtype@^2.0.1, domelementtype@^2.2.0, domelementtype@^2.3.0: version "2.3.0" resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz" @@ -4978,6 +5426,14 @@ eastasianwidth@^0.2.0: resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz" + integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + ee-first@1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" @@ -5025,6 +5481,15 @@ electron-devtools-installer@^3.2.0: tslib "^2.1.0" unzip-crx-3 "^0.2.0" +electron-icon-maker@^0.0.5: + version "0.0.5" + resolved "https://registry.npmjs.org/electron-icon-maker/-/electron-icon-maker-0.0.5.tgz" + integrity sha512-xuNGe26K7jL7p7A7HhZNJFdjuxnPhu8cH0q6PExkG6ifFX6UbsCMUkxvUAh6PGeLOCSG21wEt9i2jPkiZ3ZItg== + dependencies: + args "^2.3.0" + icon-gen "2.0.0" + jimp "^0.14.0" + electron-is-accelerator@^0.1.0: version "0.1.2" resolved "https://registry.npmjs.org/electron-is-accelerator/-/electron-is-accelerator-0.1.2.tgz" @@ -5200,7 +5665,7 @@ err-code@^2.0.2: resolved "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz" integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== -error-ex@^1.3.1: +error-ex@^1.2.0, error-ex@^1.3.1: version "1.3.2" resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== @@ -5329,6 +5794,11 @@ es6-error@^4.1.1: resolved "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz" integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== +es6-promise@^4.0.3: + version "4.2.8" + resolved "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz" + integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== + escalade@^3.1.1: version "3.1.1" resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" @@ -5339,6 +5809,11 @@ escape-html@~1.0.3: resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== +escape-string-regexp@^1.0.2: + version "1.0.5" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" @@ -5741,6 +6216,11 @@ execa@^7.1.1: signal-exit "^3.0.7" strip-final-newline "^3.0.0" +exif-parser@^0.1.12: + version "0.1.12" + resolved "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz" + integrity sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw== + exit@^0.1.2: version "0.1.2" resolved "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" @@ -5799,6 +6279,21 @@ express@^4.17.3: utils-merge "1.0.1" vary "~1.1.2" +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +extract-zip@^1.6.5: + version "1.7.0" + resolved "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz" + integrity sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA== + dependencies: + concat-stream "^1.6.2" + debug "^2.6.9" + mkdirp "^0.5.4" + yauzl "^2.10.0" + extract-zip@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz" @@ -5815,6 +6310,11 @@ extsprintf@^1.2.0: resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz" integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz" + integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== + fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" @@ -5919,6 +6419,16 @@ file-loader@*, file-loader@^6.2.0: loader-utils "^2.0.0" schema-utils "^3.0.0" +file-type@^9.0.0: + version "9.0.0" + resolved "https://registry.npmjs.org/file-type/-/file-type-9.0.0.tgz" + integrity sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw== + +file-url@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/file-url/-/file-url-2.0.2.tgz" + integrity sha512-x3989K8a1jM6vulMigE8VngH7C5nci0Ks5d9kVjUXmNF28gmiZUNujk5HjwaS8dAzN2QmUfX56riJKgN00dNRw== + filelist@^1.0.4: version "1.0.4" resolved "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz" @@ -5951,6 +6461,14 @@ find-root@^1.1.0: resolved "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz" integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz" + integrity sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA== + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + find-up@^4.0.0: version "4.1.0" resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" @@ -6022,6 +6540,11 @@ foreground-child@^3.1.0: cross-spawn "^7.0.0" signal-exit "^4.0.1" +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" + integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== + form-data@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz" @@ -6031,6 +6554,15 @@ form-data@^4.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + formik@^2.2.9: version "2.4.5" resolved "https://registry.npmjs.org/formik/-/formik-2.4.5.tgz" @@ -6055,6 +6587,15 @@ fresh@0.5.2: resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== +fs-extra@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz" + integrity sha512-VerQV6vEKuhDWD2HGOybV6v5I73syoc/cXAbKlgTC7M/oFVEtklWlp9QH2Ijw3IaWDOQcMkldSPa7zXy79Z/UQ== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^2.1.0" + klaw "^1.0.0" + fs-extra@^10.0.0, fs-extra@^10.1.0: version "10.1.0" resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz" @@ -6161,6 +6702,11 @@ gensync@^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@^1.0.1: + version "1.0.3" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz" + integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== + get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" @@ -6213,6 +6759,21 @@ get-tsconfig@^4.5.0: dependencies: resolve-pkg-maps "^1.0.0" +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz" + integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== + dependencies: + assert-plus "^1.0.0" + +gifwrap@^0.9.2: + version "0.9.4" + resolved "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.4.tgz" + integrity sha512-MDMwbhASQuVeD4JKd1fKgNgCRL3fGqMM4WaqpNhWO0JiMOAjbQdumbs4BbBZEy9/M00EHEjKN3HieVhCUlwjeQ== + dependencies: + image-q "^4.0.0" + omggif "^1.0.10" + glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" @@ -6254,7 +6815,7 @@ glob@^10.3.7: minipass "^5.0.0 || ^6.0.2 || ^7.0.0" path-scurry "^1.10.1" -glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: +glob@^7.0.3, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.2.3" resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -6278,6 +6839,14 @@ global-agent@^3.0.0: semver "^7.3.2" serialize-error "^7.0.1" +global@~4.4.0: + version "4.4.0" + resolved "https://registry.npmjs.org/global/-/global-4.4.0.tgz" + integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== + dependencies: + min-document "^2.19.0" + process "^0.11.10" + globals@^11.1.0: version "11.12.0" resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" @@ -6309,6 +6878,17 @@ globby@^11.1.0: merge2 "^1.4.1" slash "^3.0.0" +globby@^6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz" + integrity sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw== + dependencies: + array-union "^1.0.1" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + goober@^2.1.10: version "2.1.13" resolved "https://registry.npmjs.org/goober/-/goober-2.1.13.tgz" @@ -6338,7 +6918,7 @@ got@^11.7.0, got@^11.8.5: p-cancelable "^2.0.0" responselike "^2.0.0" -graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: 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== @@ -6360,11 +6940,31 @@ handle-thing@^2.0.0: resolved "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz" integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz" + integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== + +har-validator@~5.1.3: + version "5.1.5" + resolved "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== + dependencies: + ajv "^6.12.3" + har-schema "^2.0.0" + harmony-reflect@^1.4.6: version "1.6.2" resolved "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz" integrity sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g== +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz" + integrity sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg== + dependencies: + ansi-regex "^2.0.0" + has-bigints@^1.0.1, has-bigints@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz" @@ -6422,6 +7022,14 @@ hash.js@^1.0.0, hash.js@^1.0.3: inherits "^2.0.3" minimalistic-assert "^1.0.1" +hasha@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/hasha/-/hasha-2.2.0.tgz" + integrity sha512-jZ38TU/EBiGKrmyTNNZgnvCZHNowiRI4+w/I9noMlekHTZH3KyGgvJLmhSgykeAQ9j2SYPDosM0Bg3wHfzibAQ== + dependencies: + is-stream "^1.0.1" + pinkie-promise "^2.0.0" + he@^1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" @@ -6443,6 +7051,11 @@ hoist-non-react-statics@^3.3.0: dependencies: react-is "^16.7.0" +hosted-git-info@^2.1.4: + version "2.8.9" + resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== + hosted-git-info@^4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz" @@ -6576,6 +7189,15 @@ http-proxy@^1.18.1: follow-redirects "^1.0.0" requires-port "^1.0.0" +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz" + integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + http2-wrapper@^1.0.0-beta.5.2: version "1.0.3" resolved "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz" @@ -6614,6 +7236,17 @@ husky@^8.0.1: resolved "https://registry.npmjs.org/husky/-/husky-8.0.1.tgz" integrity sha512-xs7/chUH/CKdOCs7Zy0Aev9e/dKOMZf3K1Az1nar3tzlv0jfqnYtu235bstsWTmXOR0EfINrPa97yy4Lz6RiKw== +icon-gen@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/icon-gen/-/icon-gen-2.0.0.tgz" + integrity sha512-Asj0rWMoFDY3AHLsZdx8UgHX7AIh/9u5ZTXYWJYH+2n8HqHQr655ATdoa1yQLidmm2fnTYlob+Rm4zzrjWr5Bw== + dependencies: + del "^3.0.0" + mkdirp "^0.5.1" + pngjs-nozlib "^1.0.0" + svg2png "4.1.1" + uuid "^3.3.2" + iconv-corefoundation@^1.1.7: version "1.1.7" resolved "https://registry.npmjs.org/iconv-corefoundation/-/iconv-corefoundation-1.1.7.tgz" @@ -6658,6 +7291,13 @@ ignore@^5.2.0, ignore@^5.2.4: resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz" integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== +image-q@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/image-q/-/image-q-4.0.0.tgz" + integrity sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw== + dependencies: + "@types/node" "16.9.1" + immediate@~3.0.5: version "3.0.6" resolved "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz" @@ -6738,6 +7378,11 @@ interpret@^3.1.1: resolved "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz" integrity sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ== +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz" + integrity sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ== + ip@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz" @@ -6852,6 +7497,13 @@ is-finalizationregistry@^1.0.2: dependencies: call-bind "^1.0.2" +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz" + integrity sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw== + dependencies: + number-is-nan "^1.0.0" + is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" @@ -6862,6 +7514,11 @@ is-fullwidth-code-point@^4.0.0: resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz" integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ== +is-function@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz" + integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ== + is-generator-fn@^2.0.0: version "2.1.0" resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz" @@ -6920,6 +7577,25 @@ is-number@^7.0.0: resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== +is-path-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz" + integrity sha512-cnS56eR9SPAscL77ik76ATVqoPARTqPIVkMDVxRaWH06zT+6+CzIroYRJ0VVvm0Z1zfAvxvz9i/D3Ppjaqt5Nw== + +is-path-in-cwd@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz" + integrity sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ== + dependencies: + is-path-inside "^1.0.0" + +is-path-inside@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz" + integrity sha512-qhsCR/Esx4U4hg/9I19OVUAJkGWtjRYHMRgUMZE2TDdj+Ag+kttZanLupfddNyglzz50cUlmWzUaI37GDfNx/g== + dependencies: + path-is-inside "^1.0.1" + is-path-inside@^3.0.3: version "3.0.3" resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" @@ -6967,6 +7643,11 @@ is-shared-array-buffer@^1.0.2: dependencies: call-bind "^1.0.2" +is-stream@^1.0.1: + version "1.1.0" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz" + integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== + is-stream@^2.0.0: version "2.0.1" resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" @@ -6998,11 +7679,21 @@ is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.9: dependencies: which-typed-array "^1.1.11" +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== + is-unicode-supported@^0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz" + integrity sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q== + is-weakmap@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz" @@ -7060,6 +7751,11 @@ isobject@^3.0.1: resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" + integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== + istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: version "3.2.0" resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz" @@ -7524,6 +8220,22 @@ jest@*, jest@^29.0.0, jest@^29.7.0, "jest@>= 28", jest@>=27.0.0: import-local "^3.0.2" jest-cli "^29.7.0" +jimp@^0.14.0: + version "0.14.0" + resolved "https://registry.npmjs.org/jimp/-/jimp-0.14.0.tgz" + integrity sha512-8BXU+J8+SPmwwyq9ELihpSV4dWPTiOKBWCEgtkbnxxAVMjXdf3yGmyaLSshBfXc8sP/JQ9OZj5R8nZzz2wPXgA== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/custom" "^0.14.0" + "@jimp/plugins" "^0.14.0" + "@jimp/types" "^0.14.0" + regenerator-runtime "^0.13.3" + +jpeg-js@^0.4.0: + version "0.4.4" + resolved "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz" + integrity sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg== + "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" @@ -7544,6 +8256,11 @@ js-yaml@^4.1.0: dependencies: argparse "^2.0.1" +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz" + integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== + jsdoc-type-pratt-parser@~4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz" @@ -7611,12 +8328,17 @@ json-schema-traverse@^1.0.0: resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== +json-schema@0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz" + integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== + json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== -json-stringify-safe@^5.0.1: +json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== @@ -7640,6 +8362,13 @@ json5@^2.1.2, json5@^2.2.0, json5@^2.2.2, json5@^2.2.3: resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== +jsonfile@^2.1.0: + version "2.4.0" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz" + integrity sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw== + optionalDependencies: + graceful-fs "^4.1.6" + jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz" @@ -7656,6 +8385,16 @@ jsonfile@^6.0.1: optionalDependencies: graceful-fs "^4.1.6" +jsprim@^1.2.2: + version "1.4.2" + resolved "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz" + integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.4.0" + verror "1.10.0" + "jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.3: version "3.3.5" resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz" @@ -7676,6 +8415,11 @@ jszip@^3.1.0: readable-stream "~2.3.6" setimmediate "^1.0.5" +kew@^0.7.0: + version "0.7.0" + resolved "https://registry.npmjs.org/kew/-/kew-0.7.0.tgz" + integrity sha512-IG6nm0+QtAMdXt9KvbgbGdvY50RSrw+U4sGZg+KlrSKPJEwVE5JVoI3d7RWfSMdBQneRheeAOj3lIjX5VL/9RQ== + keyboardevent-from-electron-accelerator@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/keyboardevent-from-electron-accelerator/-/keyboardevent-from-electron-accelerator-2.0.0.tgz" @@ -7705,6 +8449,13 @@ kind-of@^6.0.2: resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== +klaw@^1.0.0: + version "1.3.1" + resolved "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz" + integrity sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw== + optionalDependencies: + graceful-fs "^4.1.9" + kleur@^3.0.3: version "3.0.3" resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" @@ -7735,6 +8486,13 @@ lazy-val@^1.0.4, lazy-val@^1.0.5: resolved "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.5.tgz" integrity sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q== +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz" + integrity sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw== + dependencies: + invert-kv "^1.0.0" + leven@^3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" @@ -7804,6 +8562,31 @@ listr2@^4.0.5: through "^2.3.8" wrap-ansi "^7.0.0" +load-bmfont@^1.3.1, load-bmfont@^1.4.0: + version "1.4.1" + resolved "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.1.tgz" + integrity sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA== + dependencies: + buffer-equal "0.0.1" + mime "^1.3.4" + parse-bmfont-ascii "^1.0.3" + parse-bmfont-binary "^1.0.5" + parse-bmfont-xml "^1.1.4" + phin "^2.9.1" + xhr "^2.0.1" + xtend "^4.0.0" + +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz" + integrity sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A== + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + loader-runner@^4.2.0: version "4.3.0" resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz" @@ -7916,7 +8699,7 @@ lodash.uniqby@^4.7.0: resolved "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz" integrity sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww== -lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21: +lodash@^4.13.1, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21: version "4.17.21" resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -8099,23 +8882,23 @@ micromatch@^4.0.0, micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34: +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: version "2.1.35" resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: mime-db "1.52.0" +mime@^1.3.4, mime@1.6.0: + version "1.6.0" + resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + mime@^2.5.2: version "2.6.0" resolved "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz" integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== -mime@1.6.0: - version "1.6.0" - resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" @@ -8136,6 +8919,13 @@ mimic-response@^3.1.0: resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz" integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== +min-document@^2.19.0: + version "2.19.0" + resolved "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz" + integrity sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ== + dependencies: + dom-walk "^0.1.0" + min-indent@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz" @@ -8191,6 +8981,11 @@ minimist@^1.2.0, minimist@^1.2.6: resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== +minimist@1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz" + integrity sha512-7Wl+Jz+IGWuSdgsQEJ4JunV0si/iMhg42MnQQG6h1R6TNeVenp4U9x5CC5v/gYqz/fENLQITAWXidNtVL0NNbw== + minipass-collect@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz" @@ -8265,7 +9060,7 @@ mixpanel-browser@^2.47.0: resolved "https://registry.npmjs.org/mixpanel-browser/-/mixpanel-browser-2.47.0.tgz" integrity sha512-Ldrva0fRBEIFWmEibBQO1PulfpJVF3pf28Guk09lDirDaSQqqU/xs9zQLwN2rL5VwVtsP1aD3JaCgaa98EjojQ== -mkdirp@^0.5.1: +mkdirp@^0.5.1, mkdirp@^0.5.4: version "0.5.6" resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== @@ -8408,6 +9203,16 @@ nopt@^6.0.0: dependencies: abbrev "^1.0.0" +normalize-package-data@^2.3.2: + version "2.5.0" + resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz" @@ -8456,12 +9261,22 @@ nth-check@^2.0.1: dependencies: boolbase "^1.0.0" +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz" + integrity sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== + nwsapi@^2.2.2: version "2.2.7" resolved "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz" integrity sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ== -object-assign@^4.1.0, object-assign@^4.1.1: +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== @@ -8549,6 +9364,11 @@ obuf@^1.0.0, obuf@^1.1.2: resolved "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz" integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== +omggif@^1.0.10, omggif@^1.0.9: + version "1.0.10" + resolved "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz" + integrity sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw== + on-finished@2.4.1: version "2.4.1" resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" @@ -8633,6 +9453,13 @@ ora@^5.1.0: strip-ansi "^6.0.0" wcwidth "^1.0.1" +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz" + integrity sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g== + dependencies: + lcid "^1.0.0" + p-cancelable@^2.0.0: version "2.1.1" resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz" @@ -8666,6 +9493,11 @@ p-locate@^5.0.0: dependencies: p-limit "^3.0.2" +p-map@^1.1.1: + version "1.2.0" + resolved "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz" + integrity sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA== + p-map@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz" @@ -8686,7 +9518,7 @@ p-try@^2.0.0: resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -pako@~1.0.2: +pako@^1.0.5, pako@~1.0.2: version "1.0.11" resolved "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz" integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== @@ -8706,6 +9538,36 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" +parse-bmfont-ascii@^1.0.3: + version "1.0.6" + resolved "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz" + integrity sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA== + +parse-bmfont-binary@^1.0.5: + version "1.0.6" + resolved "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz" + integrity sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA== + +parse-bmfont-xml@^1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz" + integrity sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ== + dependencies: + xml-parse-from-string "^1.0.0" + xml2js "^0.4.5" + +parse-headers@^2.0.0: + version "2.0.5" + resolved "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz" + integrity sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA== + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz" + integrity sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ== + dependencies: + error-ex "^1.2.0" + parse-json@^5.2.0: version "5.2.0" resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" @@ -8736,6 +9598,13 @@ pascal-case@^3.1.2: no-case "^3.0.4" tslib "^2.0.3" +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz" + integrity sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ== + dependencies: + pinkie-promise "^2.0.0" + path-exists@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" @@ -8746,6 +9615,11 @@ path-is-absolute@^1.0.0: resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== +path-is-inside@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz" + integrity sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w== + path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" @@ -8774,6 +9648,15 @@ path-to-regexp@0.1.7: resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz" integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz" + integrity sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg== + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + path-type@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" @@ -8784,6 +9667,31 @@ pend@~1.2.0: resolved "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz" integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz" + integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== + +phantomjs-prebuilt@^2.1.14: + version "2.1.16" + resolved "https://registry.npmjs.org/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.16.tgz" + integrity sha512-PIiRzBhW85xco2fuj41FmsyuYHKjKuXWmhjy3A/Y+CMpN/63TV+s9uzfVhsUwFe0G77xWtHBG8xmXf5BqEUEuQ== + dependencies: + es6-promise "^4.0.3" + extract-zip "^1.6.5" + fs-extra "^1.0.0" + hasha "^2.2.0" + kew "^0.7.0" + progress "^1.1.8" + request "^2.81.0" + request-progress "^2.0.1" + which "^1.2.10" + +phin@^2.9.1: + version "2.9.3" + resolved "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz" + integrity sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA== + picocolors@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" @@ -8799,16 +9707,45 @@ pidtree@^0.5.0: resolved "https://registry.npmjs.org/pidtree/-/pidtree-0.5.0.tgz" integrity sha512-9nxspIM7OpZuhBxPg73Zvyq7j1QMPMPsGKTqRc2XOaFQauDvoNz9fM1Wdkjmeo7l9GXOZiRs97sPkuayl39wjA== +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz" + integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== + pify@^4.0.1: version "4.0.1" resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" + integrity sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw== + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" + integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== + pirates@^4.0.4: version "4.0.6" resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz" integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== +pixelmatch@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz" + integrity sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA== + dependencies: + pngjs "^3.0.0" + pkg-dir@^4.2.0: version "4.2.0" resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" @@ -8816,6 +9753,11 @@ pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" +pkginfo@0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.0.tgz" + integrity sha512-PvRaVdb+mc4R87WFh2Xc7t41brwIgRFSNoDmRyG0cAov6IfnFARp0GHxU8wP5Uh4IWduQSJsRPSwaKDjgMremg== + plist@^3.0.4, plist@^3.0.5: version "3.1.0" resolved "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz" @@ -8825,6 +9767,21 @@ plist@^3.0.4, plist@^3.0.5: base64-js "^1.5.1" xmlbuilder "^15.1.1" +pn@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz" + integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== + +pngjs-nozlib@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/pngjs-nozlib/-/pngjs-nozlib-1.0.0.tgz" + integrity sha512-N1PggqLp9xDqwAoKvGohmZ3m4/N9xpY0nDZivFqQLcpLHmliHnCp9BuNCsOeqHWMuEEgFjpEaq9dZq6RZyy0fA== + +pngjs@^3.0.0, pngjs@^3.3.3: + version "3.4.0" + resolved "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz" + integrity sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w== + postcss-calc@^9.0.0: version "9.0.1" resolved "https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.1.tgz" @@ -9137,6 +10094,16 @@ process-nextick-args@~2.0.0: resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== +process@^0.11.10: + version "0.11.10" + resolved "https://registry.npmjs.org/process/-/process-0.11.10.tgz" + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== + +progress@^1.1.8: + version "1.1.8" + resolved "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz" + integrity sha512-UdA8mJ4weIkUBO224tIarHzuHs4HuYiJvsuGT7j/SPQiUJVjYvNDBIPa0hAorduOfjGohB/qHWRa/lrrWX/mXw== + progress@^2.0.3: version "2.0.3" resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz" @@ -9187,7 +10154,7 @@ proxy-addr@~2.0.7: forwarded "0.2.0" ipaddr.js "1.9.1" -psl@^1.1.33: +psl@^1.1.28, psl@^1.1.33: version "1.9.0" resolved "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz" integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== @@ -9215,6 +10182,11 @@ pure-rand@^6.0.0: resolved "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.4.tgz" integrity sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA== +qs@~6.5.2: + version "6.5.3" + resolved "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz" + integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== + qs@6.11.0: version "6.11.0" resolved "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz" @@ -9429,6 +10401,23 @@ read-config-file@6.3.2: json5 "^2.2.0" lazy-val "^1.0.4" +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz" + integrity sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A== + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz" + integrity sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ== + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + readable-stream@^2.0.1: version "2.3.8" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" @@ -9442,6 +10431,19 @@ readable-stream@^2.0.1: string_decoder "~1.1.1" util-deprecate "~1.0.1" +readable-stream@^2.2.2: + version "2.3.8" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + 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" + readable-stream@^3.0.6, readable-stream@^3.4.0, readable-stream@^3.6.0: version "3.6.2" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" @@ -9510,6 +10512,11 @@ regenerate@^1.4.2: resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz" integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== +regenerator-runtime@^0.13.3: + version "0.13.11" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== + regenerator-runtime@^0.14.0: version "0.14.0" resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz" @@ -9571,6 +10578,39 @@ renderkid@^3.0.0: lodash "^4.17.21" strip-ansi "^6.0.1" +request-progress@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/request-progress/-/request-progress-2.0.1.tgz" + integrity sha512-dxdraeZVUNEn9AvLrxkgB2k6buTlym71dJk1fk4v8j3Ou3RKNm07BcgbHdj2lLgYGfqX71F+awb1MR+tWPFJzA== + dependencies: + throttleit "^1.0.0" + +request@^2.81.0: + version "2.88.2" + resolved "https://registry.npmjs.org/request/-/request-2.88.2.tgz" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + require-directory@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" @@ -9581,6 +10621,11 @@ require-from-string@^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== +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz" + integrity sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug== + requires-port@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" @@ -9618,7 +10663,7 @@ resolve.exports@^2.0.0: resolved "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz" integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== -resolve@^1.14.2, resolve@^1.20.0, resolve@^1.22.4: +resolve@^1.10.0, resolve@^1.14.2, resolve@^1.20.0, resolve@^1.22.4: version "1.22.8" resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz" integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== @@ -9671,6 +10716,13 @@ rfdc@^1.3.0: resolved "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz" integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== +rimraf@^2.2.8: + version "2.7.1" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" @@ -9740,7 +10792,7 @@ safe-array-concat@^1.0.1: has-symbols "^1.0.3" isarray "^2.0.5" -safe-buffer@^5.1.0, safe-buffer@>=5.1.0, safe-buffer@~5.2.0, safe-buffer@5.2.1: +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@>=5.1.0, safe-buffer@~5.2.0, safe-buffer@5.2.1: version "5.2.1" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -9764,7 +10816,7 @@ safe-regex-test@^1.0.0: get-intrinsic "^1.1.3" is-regex "^1.1.4" -"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": +safer-buffer@^2.0.2, safer-buffer@^2.1.0, "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -9801,7 +10853,7 @@ sass@^1.69.0: immutable "^4.0.0" source-map-js ">=0.6.2 <2.0.0" -sax@^1.2.4: +sax@^1.2.4, sax@>=0.6.0: version "1.3.0" resolved "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz" integrity sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA== @@ -9897,6 +10949,11 @@ semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semve dependencies: lru-cache "^6.0.0" +"semver@2 || 3 || 4 || 5": + version "5.7.2" + resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== + send@0.18.0: version "0.18.0" resolved "https://registry.npmjs.org/send/-/send-0.18.0.tgz" @@ -10164,12 +11221,20 @@ spawn-command@0.0.2: resolved "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz" integrity sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ== +spdx-correct@^3.0.0: + version "3.2.0" + resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz" + integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + spdx-exceptions@^2.1.0: version "2.3.0" resolved "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz" integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== -spdx-expression-parse@^3.0.1: +spdx-expression-parse@^3.0.0, spdx-expression-parse@^3.0.1: version "3.0.1" resolved "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz" integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== @@ -10215,6 +11280,21 @@ sprintf-js@~1.0.2: resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== +sshpk@^1.7.0: + version "1.18.0" + resolved "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz" + integrity sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + ssri@^10.0.0: version "10.0.5" resolved "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz" @@ -10283,6 +11363,13 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" +string-similarity@1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/string-similarity/-/string-similarity-1.1.0.tgz" + integrity sha512-x+Ul/yDujT1PIgcKuP6NP71VgoB+NKY8ccoH2nrfnFcYH2gtoRE0XLpUaHBIx4ZdpIWnYzWAsjp2QO+ZRC3Fjg== + dependencies: + lodash "^4.13.1" + "string-width-cjs@npm:string-width@^4.2.0": version "4.2.3" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" @@ -10292,6 +11379,15 @@ string-length@^4.0.1: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" +string-width@^1.0.1, string-width@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz" + integrity sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw== + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" @@ -10368,6 +11464,13 @@ string.prototype.trimstart@^1.0.7: dependencies: ansi-regex "^5.0.1" +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" + integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== + dependencies: + ansi-regex "^2.0.0" + strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" @@ -10382,6 +11485,13 @@ strip-ansi@^7.0.1: dependencies: ansi-regex "^6.0.1" +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz" + integrity sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g== + dependencies: + is-utf8 "^0.2.0" + strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" @@ -10439,6 +11549,11 @@ sumchecker@^3.0.1: dependencies: debug "^4.1.0" +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" + integrity sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g== + supports-color@^5.3.0: version "5.5.0" resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" @@ -10482,6 +11597,16 @@ svg-parser@^2.0.4: resolved "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz" integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== +svg2png@4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/svg2png/-/svg2png-4.1.1.tgz" + integrity sha512-9tOp9Ugjlunuf1ugqkhiYboTmTaTI7p48dz5ZjNA5NQJ5xS1NLTZZ1tF8vkJOIBb/ZwxGJsKZvRWqVpo4q9z9Q== + dependencies: + file-url "^2.0.0" + phantomjs-prebuilt "^2.1.14" + pn "^1.0.0" + yargs "^6.5.0" + svgo@^3.0.2: version "3.0.2" resolved "https://registry.npmjs.org/svgo/-/svgo-3.0.2.tgz" @@ -10580,6 +11705,11 @@ text-table@^0.2.0: resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== +throttleit@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz" + integrity sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g== + through@^2.3.8: version "2.3.8" resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" @@ -10590,6 +11720,11 @@ thunky@^1.0.2: resolved "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz" integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== +timm@^1.6.1: + version "1.7.1" + resolved "https://registry.npmjs.org/timm/-/timm-1.7.1.tgz" + integrity sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw== + tiny-typed-emitter@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/tiny-typed-emitter/-/tiny-typed-emitter-2.1.0.tgz" @@ -10600,6 +11735,11 @@ tiny-warning@^1.0.2: resolved "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz" integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== +tinycolor2@^1.4.1: + version "1.6.0" + resolved "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz" + integrity sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw== + titleize@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz" @@ -10666,6 +11806,14 @@ tough-cookie@^4.1.2: universalify "^0.2.0" url-parse "^1.5.3" +tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + tr46@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz" @@ -10741,8 +11889,6 @@ ts-node@^10.9.1: ts-node@>=9.0.0: version "10.9.1" - resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz" - integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== dependencies: "@cspotcode/source-map-support" "^0.8.0" "@tsconfig/node10" "^1.0.7" @@ -10823,6 +11969,13 @@ tsutils@^3.21.0: dependencies: tslib "^1.8.1" +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz" + integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== + dependencies: + safe-buffer "^5.0.1" + turbo-darwin-arm64@1.10.4: version "1.10.4" resolved "https://registry.npmjs.org/turbo-darwin-arm64/-/turbo-darwin-arm64-1.10.4.tgz" @@ -10840,6 +11993,11 @@ turbo@1.10.4: turbo-windows-64 "1.10.4" turbo-windows-arm64 "1.10.4" +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" + integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== + type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" @@ -10914,6 +12072,11 @@ typed-array-length@^1.0.4: for-each "^0.3.3" is-typed-array "^1.1.9" +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" + integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== + typescript@*, typescript@^5.2.2, typescript@>=2.7, "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta", typescript@>=4.2.0, "typescript@>=4.3 <6": version "5.2.2" resolved "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz" @@ -11089,6 +12252,13 @@ utf8-byte-length@^1.0.1: resolved "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz" integrity sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA== +utif@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz" + integrity sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg== + dependencies: + pako "^1.0.5" + util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" @@ -11104,6 +12274,11 @@ utils-merge@1.0.1: resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== +uuid@^3.3.2: + version "3.4.0" + resolved "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + uuid@^8.3.2: version "8.3.2" resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" @@ -11123,6 +12298,14 @@ v8-to-istanbul@^9.0.1: "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^2.0.0" +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + vary@~1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" @@ -11137,6 +12320,15 @@ verror@^1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" +verror@1.10.0: + version "1.10.0" + resolved "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz" + integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + vite-plugin-svgr@^4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/vite-plugin-svgr/-/vite-plugin-svgr-4.1.0.tgz" @@ -11421,6 +12613,11 @@ which-collection@^1.0.1: is-weakmap "^2.0.1" is-weakset "^2.0.1" +which-module@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz" + integrity sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ== + which-typed-array@^1.1.11, which-typed-array@^1.1.9: version "1.1.11" resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz" @@ -11432,6 +12629,13 @@ which-typed-array@^1.1.11, which-typed-array@^1.1.9: gopd "^1.0.1" has-tostringtag "^1.0.0" +which@^1.2.10: + version "1.3.1" + resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + which@^2.0.1, which@^2.0.2: version "2.0.2" resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" @@ -11460,6 +12664,14 @@ wildcard@^2.0.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz" + integrity sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw== + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi@^6.2.0: version "6.2.0" resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz" @@ -11510,21 +12722,59 @@ ws@^8.11.0, ws@^8.13.0: resolved "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz" integrity sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g== +xhr@^2.0.1: + version "2.6.0" + resolved "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz" + integrity sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA== + dependencies: + global "~4.4.0" + is-function "^1.0.1" + parse-headers "^2.0.0" + xtend "^4.0.0" + xml-name-validator@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz" integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== +xml-parse-from-string@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz" + integrity sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g== + +xml2js@^0.4.5: + version "0.4.23" + resolved "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz" + integrity sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug== + dependencies: + sax ">=0.6.0" + xmlbuilder "~11.0.0" + xmlbuilder@^15.1.1, xmlbuilder@>=11.0.1: version "15.1.1" resolved "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz" integrity sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg== +xmlbuilder@~11.0.0: + version "11.0.1" + resolved "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz" + integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== + xmlchars@^2.2.0: version "2.2.0" resolved "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== +xtend@^4.0.0: + version "4.0.2" + resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^3.2.1: + version "3.2.2" + resolved "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz" + integrity sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ== + y18n@^5.0.5: version "5.0.8" resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" @@ -11555,6 +12805,13 @@ yargs-parser@^21.0.1, yargs-parser@^21.1.1: resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== +yargs-parser@^4.2.0: + version "4.2.1" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz" + integrity sha512-+QQWqC2xeL0N5/TE+TY6OGEqyNRM+g2/r712PDNYgiCdXYCApXf1vzfmDSLBxfGRwV+moTq/V8FnMI24JCm2Yg== + dependencies: + camelcase "^3.0.0" + yargs@^17.0.1, yargs@^17.3.1, yargs@^17.6.2, yargs@^17.7.2: version "17.7.2" resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz" @@ -11568,6 +12825,25 @@ yargs@^17.0.1, yargs@^17.3.1, yargs@^17.6.2, yargs@^17.7.2: y18n "^5.0.5" yargs-parser "^21.1.1" +yargs@^6.5.0: + version "6.6.0" + resolved "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz" + integrity sha512-6/QWTdisjnu5UHUzQGst+UOEuEVwIzFVGBjq3jMTFNs5WJQsH/X6nMURSaScIdF5txylr1Ao9bvbWiKi2yXbwA== + dependencies: + camelcase "^3.0.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.2" + which-module "^1.0.0" + y18n "^3.2.1" + yargs-parser "^4.2.0" + yauzl@^2.10.0: version "2.10.0" resolved "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz" From ca6165684a54e7942af7f4363cdc2c20aeace158 Mon Sep 17 00:00:00 2001 From: Bart Date: Tue, 31 Oct 2023 12:16:16 +0100 Subject: [PATCH 077/100] pass logs to browser window --- apps/electron/src/main/ipc/events.ts | 5 ++ apps/electron/src/main/ipc/handlers.ts | 40 +++++---- apps/electron/src/main/ipc/invokers.ts | 17 ++-- apps/electron/src/main/main.ts | 63 ++++++++++++--- apps/electron/src/main/menu.ts | 81 ++++++------------- apps/electron/src/renderer/App.tsx | 5 ++ .../src/services/app-update.service.ts | 7 +- .../src/services/flowser-app.service.ts | 33 +------- 8 files changed, 126 insertions(+), 125 deletions(-) diff --git a/apps/electron/src/main/ipc/events.ts b/apps/electron/src/main/ipc/events.ts index 8b3bf7c64..0400f00d5 100644 --- a/apps/electron/src/main/ipc/events.ts +++ b/apps/electron/src/main/ipc/events.ts @@ -1,5 +1,10 @@ export enum FlowserIpcEvent { APP_DIRECTORY_PICKER_SHOW = 'APP_DIRECTORY_PICKER_SHOW', + APP_UPDATE_START = 'APP_UPDATE_START', + APP_UPDATE_PROGRESS = 'APP_UPDATE_PROGRESS', + APP_UPDATE_END = 'APP_UPDATE_END', + APP_EXIT = 'APP_EXIT', + APP_LOG = 'APP_LOG', WORKSPACES_CLOSE = 'WORKSPACES_CLOSE', WORKSPACES_OPEN = 'WORKSPACES_OPEN', diff --git a/apps/electron/src/main/ipc/handlers.ts b/apps/electron/src/main/ipc/handlers.ts index c9fdcd7ac..f63e51852 100644 --- a/apps/electron/src/main/ipc/handlers.ts +++ b/apps/electron/src/main/ipc/handlers.ts @@ -13,7 +13,7 @@ type EventListener = ( ...args: any[] ) => Promise | any; -export function registerHandlers() { +export function registerHandlers(appService: FlowserAppService) { const { workspaceService, blockchainIndexService, @@ -24,7 +24,7 @@ export function registerHandlers() { walletService, flowSnapshotsService, processManagerService, - } = FlowserAppService.create(); + } = appService; async function showDirectoryPicker() { const result = await dialog.showOpenDialog({ @@ -37,6 +37,14 @@ export function registerHandlers() { } const handlers: Record = { + // These are invoked from main process and handled in renderer, + // so we don't need to implement the invoking logic here. + APP_EXIT(): any {}, + APP_LOG(): any {}, + APP_UPDATE_END(): any {}, + APP_UPDATE_PROGRESS(): any {}, + APP_UPDATE_START(): any {}, + [FlowserIpcEvent.APP_DIRECTORY_PICKER_SHOW]: (e: IpcMainInvokeEvent) => showDirectoryPicker(), @@ -46,16 +54,16 @@ export function registerHandlers() { workspaceService.open(id), [FlowserIpcEvent.WORKSPACES_CREATE]: ( e: IpcMainInvokeEvent, - createdWorkspace: FlowserWorkspace, + createdWorkspace: FlowserWorkspace ) => workspaceService.create(createdWorkspace), [FlowserIpcEvent.WORKSPACES_UPDATE]: ( e: IpcMainInvokeEvent, - updatedWorkspace: FlowserWorkspace, + updatedWorkspace: FlowserWorkspace ) => workspaceService.update(updatedWorkspace), [FlowserIpcEvent.WORKSPACES_LIST]: () => workspaceService.findAll(), [FlowserIpcEvent.WORKSPACES_FIND_BY_ID]: ( e: IpcMainInvokeEvent, - id: string, + id: string ) => workspaceService.findById(id), [FlowserIpcEvent.WORKSPACES_REMOVE]: (e: IpcMainInvokeEvent, id: string) => workspaceService.remove(id), @@ -64,15 +72,15 @@ export function registerHandlers() { [FlowserIpcEvent.INDEX_GET_ALL]: ( event: IpcMainInvokeEvent, - indexName: keyof BlockchainIndexes, + indexName: keyof BlockchainIndexes ) => blockchainIndexService.indexes[indexName].findAll(), [FlowserIpcEvent.INTERACTIONS_PARSE]: ( event: IpcMainInvokeEvent, - sourceCode: string, + sourceCode: string ) => flowInteractionsService.parse(sourceCode), [FlowserIpcEvent.INTERACTIONS_LIST_TEMPLATES]: async ( - event: IpcMainInvokeEvent, + event: IpcMainInvokeEvent ) => { // There will be only 1 open workspace for now. // TODO(restructure): Handle this differently @@ -84,7 +92,7 @@ export function registerHandlers() { [FlowserIpcEvent.FLOW_ACCOUNT_GET_INDEX]: ( event: IpcMainInvokeEvent, - address: string, + address: string ) => goBindingsService.getIndexOfAddress({ hexAddress: address, @@ -94,17 +102,17 @@ export function registerHandlers() { flowCliService.getVersion(), [FlowserIpcEvent.FLOW_TRANSACTION_SEND]: ( event: IpcMainInvokeEvent, - request: SendTransactionRequest, + request: SendTransactionRequest ) => walletService.sendTransaction(request), [FlowserIpcEvent.FLOW_SCRIPT_EXECUTE]: ( event: IpcMainInvokeEvent, - request: ExecuteScriptRequest, + request: ExecuteScriptRequest ) => flowGatewayService.executeScript(request), [FlowserIpcEvent.WALLET_KEY_LIST]: (event: IpcMainInvokeEvent) => walletService.listKeyPairs(), [FlowserIpcEvent.WALLET_ACCOUNT_CREATE]: async ( - event: IpcMainInvokeEvent, + event: IpcMainInvokeEvent ) => { // There will be only 1 open workspace for now. // TODO(restructure): Handle this differently @@ -118,20 +126,20 @@ export function registerHandlers() { flowSnapshotsService.findAll(), [FlowserIpcEvent.SNAPSHOTS_CREATE]: ( event: IpcMainInvokeEvent, - name: string, + name: string ) => flowSnapshotsService.create(name), [FlowserIpcEvent.SNAPSHOTS_JUMP_TO]: ( event: IpcMainInvokeEvent, - id: string, + id: string ) => flowSnapshotsService.jumpTo(id), [FlowserIpcEvent.SNAPSHOTS_ROLLBACK_TO_HEIGHT]: ( event: IpcMainInvokeEvent, - height: number, + height: number ) => flowSnapshotsService.rollbackToHeight(height), [FlowserIpcEvent.PROCESS_LOGS_LIST]: ( event: IpcMainInvokeEvent, - processId: string, + processId: string ) => processManagerService.findAllLogsByProcess(processId), }; diff --git a/apps/electron/src/main/ipc/invokers.ts b/apps/electron/src/main/ipc/invokers.ts index dfcd7ae74..bd76789fc 100644 --- a/apps/electron/src/main/ipc/invokers.ts +++ b/apps/electron/src/main/ipc/invokers.ts @@ -19,7 +19,7 @@ const flow: IFlowService = { ipcRenderer.invoke(FlowserIpcEvent.FLOW_ACCOUNT_GET_INDEX, address), getFlowCliInfo: () => ipcRenderer.invoke(FlowserIpcEvent.FLOW_CLI_GET_INFO), sendTransaction: ( - request: SendTransactionRequest, + request: SendTransactionRequest ): Promise<{ transactionId: string }> => ipcRenderer.invoke(FlowserIpcEvent.FLOW_TRANSACTION_SEND, request), executeScript: (request: ExecuteScriptRequest): Promise => @@ -75,14 +75,19 @@ export const electronInvokers = { app: { showDirectoryPicker: () => ipcRenderer.invoke(FlowserIpcEvent.APP_DIRECTORY_PICKER_SHOW), - handleExit: (callback: () => void) => ipcRenderer.on('exit', callback), + handleExit: (callback: () => void) => + ipcRenderer.on(FlowserIpcEvent.APP_EXIT, callback), + handleLog: (callback: (log: string, level: string) => void) => + ipcRenderer.on(FlowserIpcEvent.APP_LOG, (event, log, level) => + callback(log, level) + ), handleUpdateDownloadStart: (callback: () => void) => - ipcRenderer.on('update-download-start', callback), + ipcRenderer.on(FlowserIpcEvent.APP_UPDATE_START, callback), handleUpdateDownloadEnd: (callback: () => void) => - ipcRenderer.on('update-download-end', callback), + ipcRenderer.on(FlowserIpcEvent.APP_UPDATE_END, callback), handleUpdateDownloadProgress: (callback: (percentage: number) => void) => - ipcRenderer.on('update-download-progress', (event, value) => - callback(value as unknown as number), + ipcRenderer.on(FlowserIpcEvent.APP_UPDATE_PROGRESS, (event, value) => + callback(value as unknown as number) ), }, interactions, diff --git a/apps/electron/src/main/main.ts b/apps/electron/src/main/main.ts index 483856c5a..d8ea6a9a9 100644 --- a/apps/electron/src/main/main.ts +++ b/apps/electron/src/main/main.ts @@ -13,10 +13,12 @@ import { app, BrowserWindow, dialog, shell } from 'electron'; import { autoUpdater } from 'electron-updater'; import log from 'electron-log'; import crypto from 'crypto'; +import { IFlowserLogger } from '@onflowser/core'; import MenuBuilder from './menu'; import { resolveHtmlPath } from './util'; import { registerHandlers } from './ipc/handlers'; import { FlowserAppService } from '../services/flowser-app.service'; +import { FlowserIpcEvent } from './ipc/events'; class AppUpdater { constructor() { @@ -26,7 +28,8 @@ class AppUpdater { } } -let mainWindow: BrowserWindow | null = null; +let mainWindow: BrowserWindow | undefined; +let appService: FlowserAppService | undefined; if (process.env.NODE_ENV === 'production') { const sourceMapSupport = require('source-map-support'); @@ -48,7 +51,7 @@ const installExtensions = async () => { return installer .default( extensions.map((name) => installer[name]), - forceDownload, + forceDownload ) .catch(console.log); }; @@ -92,7 +95,7 @@ const createWindow = async () => { }); mainWindow.on('closed', () => { - mainWindow = null; + mainWindow = undefined; }); const menuBuilder = new MenuBuilder(mainWindow); @@ -108,14 +111,50 @@ const createWindow = async () => { // eslint-disable-next-line new AppUpdater(); - registerHandlers(); + appService = new FlowserAppService(new ElectronLogger()); - await maybeOpenTemporaryWorkspace(mainWindow); + registerHandlers(appService); + + await maybeOpenTemporaryWorkspace(appService, mainWindow); }; -const maybeOpenTemporaryWorkspace = async (window: BrowserWindow) => { +class ElectronLogger implements IFlowserLogger { + debug(message: any): void { + console.debug(message); + this.logToBrowserConsole(message, 'debug'); + } + + error(message: any, error?: unknown): void { + console.error(message, error); + this.logToBrowserConsole(message, 'error'); + } + + log(message: any): void { + console.log(message); + this.logToBrowserConsole(message, 'log'); + } + + verbose(message: any): void { + console.debug(message); + this.logToBrowserConsole(message, 'verbose'); + } + + warn(message: any): void { + console.warn(message); + this.logToBrowserConsole(message, 'warn'); + } + + private logToBrowserConsole(message: string, level: string) { + mainWindow?.webContents?.send(FlowserIpcEvent.APP_LOG, message, level); + } +} + +const maybeOpenTemporaryWorkspace = async ( + appService: FlowserAppService, + window: BrowserWindow +) => { try { - const { workspaceService } = FlowserAppService.create(); + const { workspaceService } = appService; const { hasSwitch, getSwitchValue } = app.commandLine; // This flag must stay unchanged, since Flow CLI depends on it. @@ -187,11 +226,13 @@ app .catch(console.log); app.on('before-quit', async (e) => { - const flowserAppService = FlowserAppService.create(); + if (!appService) { + throw new Error('App service instance not found'); + } // After we call app.quit(), before-quit is fired once more, // so we need to exit early if the cleanup already completed to avoid infinite recursion. - if (flowserAppService.isCleanupComplete()) { + if (appService.isCleanupComplete()) { return; } @@ -203,10 +244,10 @@ app.on('before-quit', async (e) => { // If we trigger any method on destroyed window, electron throws an error. if (!mainWindow?.isDestroyed()) { // Notify renderer process - mainWindow?.webContents.send('exit'); + mainWindow?.webContents.send(FlowserIpcEvent.APP_EXIT); } - await flowserAppService.cleanup(); + await appService.cleanup(); } catch (error: unknown) { await dialog.showMessageBox({ message: `Couldn't shutdown successfully: ${String(error)}`, diff --git a/apps/electron/src/main/menu.ts b/apps/electron/src/main/menu.ts index 82657c43c..9226cc5fe 100644 --- a/apps/electron/src/main/menu.ts +++ b/apps/electron/src/main/menu.ts @@ -82,7 +82,7 @@ export default class MenuBuilder { { label: 'Paste', accelerator: 'Command+V', selector: 'paste:' }, ], }; - const subMenuViewDev: MenuItemConstructorOptions = { + const subMenuView: MenuItemConstructorOptions = { label: 'View', submenu: [ { @@ -108,18 +108,6 @@ export default class MenuBuilder { }, ], }; - const subMenuViewProd: MenuItemConstructorOptions = { - label: 'View', - submenu: [ - { - label: 'Toggle Full Screen', - accelerator: 'Ctrl+Command+F', - click: () => { - this.mainWindow.setFullScreen(!this.mainWindow.isFullScreen()); - }, - }, - ], - }; const subMenuWindow: DarwinMenuItemConstructorOptions = { label: 'Window', submenu: [ @@ -133,11 +121,6 @@ export default class MenuBuilder { { label: 'Bring All to Front', selector: 'arrangeInFront:' }, ], }; - const subMenuView = - process.env.NODE_ENV === 'development' || - process.env.DEBUG_PROD === 'true' - ? subMenuViewDev - : subMenuViewProd; return [ subMenuAbout, @@ -152,45 +135,29 @@ export default class MenuBuilder { const templateDefault = [ { label: '&View', - submenu: - process.env.NODE_ENV === 'development' || - process.env.DEBUG_PROD === 'true' - ? [ - { - label: '&Reload', - accelerator: 'Ctrl+R', - click: () => { - this.mainWindow.webContents.reload(); - }, - }, - { - label: 'Toggle &Full Screen', - accelerator: 'F11', - click: () => { - this.mainWindow.setFullScreen( - !this.mainWindow.isFullScreen() - ); - }, - }, - { - label: 'Toggle &Developer Tools', - accelerator: 'Alt+Ctrl+I', - click: () => { - this.mainWindow.webContents.toggleDevTools(); - }, - }, - ] - : [ - { - label: 'Toggle &Full Screen', - accelerator: 'F11', - click: () => { - this.mainWindow.setFullScreen( - !this.mainWindow.isFullScreen() - ); - }, - }, - ], + submenu: [ + { + label: '&Reload', + accelerator: 'Ctrl+R', + click: () => { + this.mainWindow.webContents.reload(); + }, + }, + { + label: 'Toggle &Full Screen', + accelerator: 'F11', + click: () => { + this.mainWindow.setFullScreen(!this.mainWindow.isFullScreen()); + }, + }, + { + label: 'Toggle &Developer Tools', + accelerator: 'Alt+Ctrl+I', + click: () => { + this.mainWindow.webContents.toggleDevTools(); + }, + }, + ], }, this.learnMoreMenuItem(), { diff --git a/apps/electron/src/renderer/App.tsx b/apps/electron/src/renderer/App.tsx index eac174cc1..1bf9473c3 100644 --- a/apps/electron/src/renderer/App.tsx +++ b/apps/electron/src/renderer/App.tsx @@ -43,6 +43,11 @@ export function App() { useState(0); const isUpdating = ![0, 100].includes(appUpdateDownloadPercentage); + window.electron.app.handleLog((log, level) => { + // @ts-ignore Ignore `level` cannot be used to index `console`. + console[level]?.(log); + }); + window.electron.app.handleExit(() => { setIsExiting(true); }); diff --git a/apps/electron/src/services/app-update.service.ts b/apps/electron/src/services/app-update.service.ts index 55884d042..3a7f87cd6 100644 --- a/apps/electron/src/services/app-update.service.ts +++ b/apps/electron/src/services/app-update.service.ts @@ -1,5 +1,6 @@ import { autoUpdater } from 'electron-updater'; import { BrowserWindow, dialog } from 'electron'; +import { FlowserIpcEvent } from '../main/ipc/events'; export type RegisterListenersOptions = { silent?: boolean; @@ -27,7 +28,7 @@ export class AppUpdateService { console.log( `Downloaded ${progress.percent}% (${progress.transferred}/${progress.total})` ); - webContents?.send('update-download-progress', progress.percent); + webContents?.send(FlowserIpcEvent.APP_UPDATE_PROGRESS, progress.percent); }); autoUpdater.once('update-available', () => { @@ -40,7 +41,7 @@ export class AppUpdateService { }) .then((buttonIndex) => { if (buttonIndex.response === 0) { - webContents?.send('update-download-start'); + webContents?.send(FlowserIpcEvent.APP_UPDATE_START); autoUpdater.downloadUpdate(); } }); @@ -56,7 +57,7 @@ export class AppUpdateService { }); autoUpdater.once('update-downloaded', () => { - webContents?.send('update-download-end'); + webContents?.send(FlowserIpcEvent.APP_UPDATE_END); dialog .showMessageBox({ title: 'Install Updates', diff --git a/apps/electron/src/services/flowser-app.service.ts b/apps/electron/src/services/flowser-app.service.ts index 5f7532556..76e0462ec 100644 --- a/apps/electron/src/services/flowser-app.service.ts +++ b/apps/electron/src/services/flowser-app.service.ts @@ -35,7 +35,6 @@ export class FlowserAppService { public readonly flowInteractionsService: FlowInteractionsService; public readonly flowCliService: FlowCliService; public readonly walletService: WalletService; - public readonly logger: IFlowserLogger; public readonly blockchainIndexService: BlockchainIndexService; public readonly flowSnapshotsService: FlowSnapshotsService; public readonly flowConfigService: FlowConfigService; @@ -43,9 +42,8 @@ export class FlowserAppService { private readonly walletStorageService: FileStorageService; private processingScheduler: AsyncIntervalScheduler; - constructor() { + constructor(private readonly logger: IFlowserLogger) { this.flowGatewayService = new FlowGatewayService(); - this.logger = new ElectronLogger(); this.flowAccountStorageService = new FlowAccountStorageService( this.flowGatewayService ); @@ -104,13 +102,6 @@ export class FlowserAppService { this.registerListeners(); } - static create(): FlowserAppService { - if (!this.instance) { - this.instance = new FlowserAppService(); - } - return this.instance; - } - public isCleanupComplete(): boolean { return this.processManagerService.isStoppedAll(); } @@ -192,25 +183,3 @@ export class FlowserAppService { this.processingScheduler.stop(); } } - -class ElectronLogger implements IFlowserLogger { - debug(message: any): void { - console.debug(message); - } - - error(message: any, error?: unknown): void { - console.error(message, error); - } - - log(message: any): void { - console.log(message); - } - - verbose(message: any): void { - console.debug(message); - } - - warn(message: any): void { - console.warn(message); - } -} From fcb861e21e32aba59842b2abb27f87e6d0b51c12 Mon Sep 17 00:00:00 2001 From: Bart Date: Tue, 31 Oct 2023 12:48:18 +0100 Subject: [PATCH 078/100] handle event listener errors --- apps/electron/src/main/main.ts | 63 +------------ .../src/services/flowser-app.service.ts | 91 ++++++++++++++++++- apps/electron/src/utils.ts | 5 + packages/nodejs/src/flow-emulator.service.ts | 10 +- .../nodejs/src/processes/managed-process.ts | 22 ++--- 5 files changed, 106 insertions(+), 85 deletions(-) create mode 100644 apps/electron/src/utils.ts diff --git a/apps/electron/src/main/main.ts b/apps/electron/src/main/main.ts index d8ea6a9a9..e12543521 100644 --- a/apps/electron/src/main/main.ts +++ b/apps/electron/src/main/main.ts @@ -12,7 +12,6 @@ import path from 'path'; import { app, BrowserWindow, dialog, shell } from 'electron'; import { autoUpdater } from 'electron-updater'; import log from 'electron-log'; -import crypto from 'crypto'; import { IFlowserLogger } from '@onflowser/core'; import MenuBuilder from './menu'; import { resolveHtmlPath } from './util'; @@ -111,11 +110,11 @@ const createWindow = async () => { // eslint-disable-next-line new AppUpdater(); - appService = new FlowserAppService(new ElectronLogger()); + appService = new FlowserAppService(new ElectronLogger(), mainWindow); registerHandlers(appService); - await maybeOpenTemporaryWorkspace(appService, mainWindow); + await appService.openTemporaryWorkspace(); }; class ElectronLogger implements IFlowserLogger { @@ -149,58 +148,6 @@ class ElectronLogger implements IFlowserLogger { } } -const maybeOpenTemporaryWorkspace = async ( - appService: FlowserAppService, - window: BrowserWindow -) => { - try { - const { workspaceService } = appService; - const { hasSwitch, getSwitchValue } = app.commandLine; - - // This flag must stay unchanged, since Flow CLI depends on it. - const workspacePathFlag = 'project-path'; - - const shouldOpenWorkspace = hasSwitch(workspacePathFlag); - - if (shouldOpenWorkspace) { - const filesystemPath = getSwitchValue(workspacePathFlag); - const parsedPath = path.parse(filesystemPath); - const id = crypto - .createHash('sha256') - .update(path.normalize(filesystemPath)) - .digest() - .toString('base64url'); - - await workspaceService.createTemporary({ - id, - name: parsedPath.name, - filesystemPath, - emulator: undefined, - gateway: undefined, - createdAt: new Date(), - updatedAt: new Date(), - }); - - await workspaceService.open(id); - - // Our react-router instance is configured to use hash-based navigation: - // https://reactrouter.com/en/main/routers/create-hash-router. - await window.loadURL(`${resolveHtmlPath('index.html')}#/projects/${id}`); - } - } catch (e: unknown) { - const result = await dialog.showMessageBox(window, { - message: `Failed to start project`, - detail: isErrorWithMessage(e) ? e.message : undefined, - type: 'error', - buttons: ['Quit'], - }); - const quitClicked = result.response === 0; - if (quitClicked) { - app.exit(1); - } - } -}; - /** * Add event listeners... */ @@ -257,9 +204,3 @@ app.on('before-quit', async (e) => { app.quit(); } }); - -type ErrorWithMessage = { message: string }; - -function isErrorWithMessage(error: unknown): error is ErrorWithMessage { - return typeof error === 'object' && error !== null && 'message' in error; -} diff --git a/apps/electron/src/services/flowser-app.service.ts b/apps/electron/src/services/flowser-app.service.ts index 76e0462ec..6cc439aaa 100644 --- a/apps/electron/src/services/flowser-app.service.ts +++ b/apps/electron/src/services/flowser-app.service.ts @@ -17,10 +17,14 @@ import { WalletService, } from '@onflowser/nodejs'; import path from 'path'; +import crypto from 'crypto'; +import { app, BrowserWindow, dialog } from 'electron'; import { WorkspaceEvent, WorkspaceService } from './workspace.service'; import { BlockchainIndexService } from './blockchain-index.service'; import { FileStorageService } from './file-storage.service'; import { indexSyncIntervalInMs } from '../renderer/ipc-index-cache'; +import { isErrorWithMessage } from '../utils'; +import { resolveHtmlPath } from '../main/util'; // Root service that ties all the pieces together and orchestrates them. export class FlowserAppService { @@ -42,7 +46,10 @@ export class FlowserAppService { private readonly walletStorageService: FileStorageService; private processingScheduler: AsyncIntervalScheduler; - constructor(private readonly logger: IFlowserLogger) { + constructor( + private readonly logger: IFlowserLogger, + private readonly window: BrowserWindow + ) { this.flowGatewayService = new FlowGatewayService(); this.flowAccountStorageService = new FlowAccountStorageService( this.flowGatewayService @@ -111,25 +118,99 @@ export class FlowserAppService { await this.processManagerService.stopAll(); } + public async openTemporaryWorkspace(): Promise { + const { hasSwitch, getSwitchValue } = app.commandLine; + + // This flag must stay unchanged, since Flow CLI depends on it. + const workspacePathFlag = 'project-path'; + + const shouldOpenWorkspace = hasSwitch(workspacePathFlag); + + if (shouldOpenWorkspace) { + const filesystemPath = getSwitchValue(workspacePathFlag); + const parsedPath = path.parse(filesystemPath); + // We need to use URL friendly format, + // since workspace IDs are used in URLs as parameters. + const id = crypto + .createHash('sha256') + .update(path.normalize(filesystemPath)) + .digest() + .toString('base64url'); + + await this.workspaceService.createTemporary({ + id, + name: parsedPath.name, + filesystemPath, + emulator: undefined, + gateway: undefined, + createdAt: new Date(), + updatedAt: new Date(), + }); + + await this.workspaceService.open(id); + + // Our react-router instance is configured to use hash-based navigation: + // https://reactrouter.com/en/main/routers/create-hash-router. + await this.window.loadURL( + `${resolveHtmlPath('index.html')}#/projects/${id}` + ); + } + } + private registerListeners() { this.workspaceService.on( WorkspaceEvent.WORKSPACE_OPEN, - this.onWorkspaceOpen.bind(this) + this.handleListenerError( + this.onWorkspaceOpen.bind(this), + 'Failed to open workspace' + ).bind(this) ); this.workspaceService.on( WorkspaceEvent.WORKSPACE_CLOSE, - this.onWorkspaceClose.bind(this) + this.handleListenerError( + this.onWorkspaceClose.bind(this), + 'Failed to close workspace' + ).bind(this) ); this.flowSnapshotsService.on( FlowSnapshotsEvent.ROLLBACK_TO_HEIGHT, - this.onRollbackToBlockHeight.bind(this) + this.handleListenerError( + this.onRollbackToBlockHeight.bind(this), + 'Failed to rollback to height' + ).bind(this) ); this.flowSnapshotsService.on( FlowSnapshotsEvent.JUMP_TO, - this.onRollbackToBlockHeight.bind(this) + this.handleListenerError( + this.onRollbackToBlockHeight.bind(this), + 'Failed to jump to snapshot' + ).bind(this) ); } + private handleListenerError( + listener: (...args: any[]) => Promise, + errorMessage: string + ) { + return async (...args: unknown[]) => { + try { + await listener(...args); + } catch (error) { + const result = await dialog.showMessageBox(this.window, { + message: errorMessage, + detail: isErrorWithMessage(error) ? error.message : undefined, + type: 'error', + buttons: ['Restart app'], + }); + const quitClicked = result.response === 0; + if (quitClicked) { + app.relaunch(); + app.quit(); + } + } + }; + } + private async onRollbackToBlockHeight() { this.blockchainIndexService.clear(); await this.walletService.synchronizeIndex(); diff --git a/apps/electron/src/utils.ts b/apps/electron/src/utils.ts new file mode 100644 index 000000000..28739133e --- /dev/null +++ b/apps/electron/src/utils.ts @@ -0,0 +1,5 @@ +type ErrorWithMessage = { message: string }; + +export function isErrorWithMessage(error: unknown): error is ErrorWithMessage { + return typeof error === 'object' && error !== null && 'message' in error; +} diff --git a/packages/nodejs/src/flow-emulator.service.ts b/packages/nodejs/src/flow-emulator.service.ts index 1b5030f51..62c3ec9dd 100644 --- a/packages/nodejs/src/flow-emulator.service.ts +++ b/packages/nodejs/src/flow-emulator.service.ts @@ -9,10 +9,6 @@ import { } from "@onflowser/api"; import { ProcessManagerService } from "./processes/process-manager.service"; -export enum FlowEmulatorEvent { - APIS_STARTED = "APIS_STARTED", -} - type StartEmulatorRequest = { workspacePath: string; config: FlowEmulatorConfig; @@ -47,8 +43,6 @@ export class FlowEmulatorService extends EventEmitter { // Resolves if APIs started or throws an error otherwise await Promise.race([this.waitUntilApisStarted(), this.throwIfErrored()]); - - this.emit(FlowEmulatorEvent.APIS_STARTED); } public getDefaultConfig(): FlowEmulatorConfig { @@ -90,7 +84,7 @@ export class FlowEmulatorService extends EventEmitter { return this.process.output.some( (output) => output.source === ProcessOutputSource.OUTPUT_SOURCE_STDOUT && - output.data.includes("Started"), + output.data.includes("Started") ); }; while (!hasStarted()) { @@ -106,7 +100,7 @@ export class FlowEmulatorService extends EventEmitter { return this.process.output.find( (output) => output.source === ProcessOutputSource.OUTPUT_SOURCE_STDERR && - output.data !== "", + output.data !== "" ); }; let retries = 5; diff --git a/packages/nodejs/src/processes/managed-process.ts b/packages/nodejs/src/processes/managed-process.ts index fb97e35d7..76b446d0d 100644 --- a/packages/nodejs/src/processes/managed-process.ts +++ b/packages/nodejs/src/processes/managed-process.ts @@ -54,7 +54,7 @@ export class ManagedProcess extends EventEmitter { constructor( private readonly logger: IFlowserLogger, - options: ManagedProcessOptions, + options: ManagedProcessOptions ) { super(); this.id = options.id ?? randomUUID(); @@ -81,8 +81,8 @@ export class ManagedProcess extends EventEmitter { this.logger.debug( `Starting ${this.name} with command: ${command.name} ${command.args?.join( - " ", - )}`, + " " + )}` ); return new Promise((resolve, reject) => { @@ -111,7 +111,7 @@ export class ManagedProcess extends EventEmitter { }); if (!isKilledSuccessfully) { this.logger.debug( - `Process ${this.name} (${this.id}) didn't shutdown given SIGINT`, + `Process ${this.name} (${this.id}) didn't shutdown given SIGINT` ); // If the SIGINT signal doesn't work, force kill with SIGINT this.childProcess.kill("SIGKILL"); @@ -123,7 +123,7 @@ export class ManagedProcess extends EventEmitter { const rejectionTimeoutSec = 6; setTimeout(() => { const timeoutError = new Error( - `Couldn't kill process ${this.id} (pid=${this.childProcess?.pid}) within ${rejectionTimeoutSec}s timeout`, + `Couldn't kill process ${this.id} (pid=${this.childProcess?.pid}) within ${rejectionTimeoutSec}s timeout` ); reject(timeoutError); }, rejectionTimeoutSec * 1000); @@ -144,21 +144,21 @@ export class ManagedProcess extends EventEmitter { }); this.childProcess.once("exit", (code, signal) => { console.debug( - `Process ${this.id} exited (code=${code}, signal=${signal})`, + `Process ${this.id} exited (code=${code}, signal=${signal})` ); this.setState( code !== null && code > 0 ? ManagedProcessState.MANAGED_PROCESS_STATE_ERROR - : ManagedProcessState.MANAGED_PROCESS_STATE_NOT_RUNNING, + : ManagedProcessState.MANAGED_PROCESS_STATE_NOT_RUNNING ); this.detachEventListeners(); }); this.childProcess.stdout.on("data", (data) => - this.handleData(ProcessOutputSource.OUTPUT_SOURCE_STDOUT, data), + this.handleData(ProcessOutputSource.OUTPUT_SOURCE_STDOUT, data) ); this.childProcess.stderr.on("data", (data) => - this.handleData(ProcessOutputSource.OUTPUT_SOURCE_STDERR, data), + this.handleData(ProcessOutputSource.OUTPUT_SOURCE_STDERR, data) ); } @@ -182,7 +182,7 @@ export class ManagedProcess extends EventEmitter { data: line, createdAt, updatedAt: createdAt, - }), + }) ); this.output.push(...logs); @@ -190,7 +190,7 @@ export class ManagedProcess extends EventEmitter { private setState(newState: ManagedProcessState) { console.debug( - `Process ${this.id} state changed from ${this.state} to ${newState}`, + `Process ${this.id} state changed from ${this.state} to ${newState}` ); this.updatedAt = new Date(); this.state = newState; From d671a4ebc28c38995db2ca95cbf3a02721d19cb3 Mon Sep 17 00:00:00 2001 From: Bart Date: Tue, 31 Oct 2023 12:57:01 +0100 Subject: [PATCH 079/100] fix $PATH --- apps/electron/package.json | 1 + apps/electron/src/main/main.ts | 4 ++++ yarn.lock | 29 +++++++++++++++++++++++++++++ 3 files changed, 34 insertions(+) diff --git a/apps/electron/package.json b/apps/electron/package.json index baada5477..a0fef3073 100644 --- a/apps/electron/package.json +++ b/apps/electron/package.json @@ -106,6 +106,7 @@ "electron-icon-maker": "^0.0.5", "electron-log": "^4.4.8", "electron-updater": "^6.1.4", + "fix-path": "^4.0.0", "mixpanel-browser": "^2.47.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/apps/electron/src/main/main.ts b/apps/electron/src/main/main.ts index e12543521..f5432957d 100644 --- a/apps/electron/src/main/main.ts +++ b/apps/electron/src/main/main.ts @@ -13,12 +13,16 @@ import { app, BrowserWindow, dialog, shell } from 'electron'; import { autoUpdater } from 'electron-updater'; import log from 'electron-log'; import { IFlowserLogger } from '@onflowser/core'; +import fixPath from 'fix-path'; import MenuBuilder from './menu'; import { resolveHtmlPath } from './util'; import { registerHandlers } from './ipc/handlers'; import { FlowserAppService } from '../services/flowser-app.service'; import { FlowserIpcEvent } from './ipc/events'; +// https://github.com/electron/electron-packager/issues/603 +fixPath(); + class AppUpdater { constructor() { log.transports.file.level = 'info'; diff --git a/yarn.lock b/yarn.lock index 97153ca5b..11d18c63f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2186,6 +2186,7 @@ "@fingerprintjs/fingerprintjs" "^4.1.0" "@sentry/electron" "^4.13.0" electron-debug "^3.2.0" + electron-icon-maker "^0.0.5" electron-log "^4.4.8" electron-updater "^6.1.4" mixpanel-browser "^2.47.0" @@ -5135,6 +5136,11 @@ default-gateway@^6.0.3: dependencies: execa "^5.0.0" +default-shell@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/default-shell/-/default-shell-2.2.0.tgz" + integrity sha512-sPpMZcVhRQ0nEMDtuMJ+RtCxt7iHPAMBU+I4tAlo5dU1sjRpNax0crj6nR3qKpvVnckaQ9U38enXcwW9nZJeCw== + defaults@^1.0.3: version "1.0.4" resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz" @@ -6493,6 +6499,13 @@ find-up@^5.0.0: locate-path "^6.0.0" path-exists "^4.0.0" +fix-path@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/fix-path/-/fix-path-4.0.0.tgz" + integrity sha512-g31GX207Tt+psI53ZSaB1egprYbEN0ZYl90aKcO22A2LmCNnFsSq3b5YpoKp3E/QEiWByTXGJOkFQG4S07Bc1A== + dependencies: + shell-path "^3.0.0" + flat-cache@^3.0.4: version "3.1.0" resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.0.tgz" @@ -11065,6 +11078,22 @@ shebang-regex@^3.0.0: resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== +shell-env@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/shell-env/-/shell-env-4.0.1.tgz" + integrity sha512-w3oeZ9qg/P6Lu6qqwavvMnB/bwfsz67gPB3WXmLd/n6zuh7TWQZtGa3iMEdmua0kj8rivkwl+vUjgLWlqZOMPw== + dependencies: + default-shell "^2.0.0" + execa "^5.1.1" + strip-ansi "^7.0.1" + +shell-path@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/shell-path/-/shell-path-3.0.0.tgz" + integrity sha512-HNIZ+W/3P0JuVTV03xjGqYKt3e3h0/Z4AH8TQWeth1LBtCusSjICgkdNdb3VZr6mI7ijE2AiFFpgkVMNKsALeQ== + dependencies: + shell-env "^4.0.0" + shell-quote@^1.8.1: version "1.8.1" resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz" From 15258717c765f730471aa959c2bbbf405324c550 Mon Sep 17 00:00:00 2001 From: Bart Date: Tue, 31 Oct 2023 13:06:29 +0100 Subject: [PATCH 080/100] resolve todos --- apps/electron/src/main/ipc/handlers.ts | 2 -- apps/electron/src/main/menu.ts | 2 +- apps/electron/src/renderer/ipc-index-cache.ts | 1 - packages/api/src/resources.ts | 2 +- packages/core/src/flow-indexer.service.ts | 2 +- packages/core/src/flow-snapshots.service.ts | 24 +++++++++---------- packages/nodejs/src/wallet.service.ts | 2 +- 7 files changed, 15 insertions(+), 20 deletions(-) diff --git a/apps/electron/src/main/ipc/handlers.ts b/apps/electron/src/main/ipc/handlers.ts index f63e51852..128c88c9b 100644 --- a/apps/electron/src/main/ipc/handlers.ts +++ b/apps/electron/src/main/ipc/handlers.ts @@ -83,7 +83,6 @@ export function registerHandlers(appService: FlowserAppService) { event: IpcMainInvokeEvent ) => { // There will be only 1 open workspace for now. - // TODO(restructure): Handle this differently const openWorkspaces = await workspaceService.getOpenWorkspaces(); return flowInteractionsService.getTemplates({ workspacePath: openWorkspaces[0].filesystemPath, @@ -115,7 +114,6 @@ export function registerHandlers(appService: FlowserAppService) { event: IpcMainInvokeEvent ) => { // There will be only 1 open workspace for now. - // TODO(restructure): Handle this differently const openWorkspaces = await workspaceService.getOpenWorkspaces(); return walletService.createAccount({ workspacePath: openWorkspaces[0].filesystemPath, diff --git a/apps/electron/src/main/menu.ts b/apps/electron/src/main/menu.ts index 9226cc5fe..121634104 100644 --- a/apps/electron/src/main/menu.ts +++ b/apps/electron/src/main/menu.ts @@ -12,7 +12,7 @@ interface DarwinMenuItemConstructorOptions extends MenuItemConstructorOptions { submenu?: DarwinMenuItemConstructorOptions[] | Menu; } -// TODO(restructure): Add option to open a file/project from menu +// TODO(restructure-followup): Add option to open a file/project from menu export default class MenuBuilder { mainWindow: BrowserWindow; private appUpdateService: AppUpdateService; diff --git a/apps/electron/src/renderer/ipc-index-cache.ts b/apps/electron/src/renderer/ipc-index-cache.ts index 9c74d740a..741d6133c 100644 --- a/apps/electron/src/renderer/ipc-index-cache.ts +++ b/apps/electron/src/renderer/ipc-index-cache.ts @@ -10,7 +10,6 @@ export class IpcIndexCache constructor(private readonly indexName: keyof BlockchainIndexes) { this.cachedResources = []; - // TODO(restructure): Maybe manually handle this from react app instead this.syncOnInterval(); } diff --git a/packages/api/src/resources.ts b/packages/api/src/resources.ts index 9ace899b0..116a34809 100644 --- a/packages/api/src/resources.ts +++ b/packages/api/src/resources.ts @@ -121,7 +121,7 @@ export interface FlowContractLocalConfig { absolutePath: string; } -// TODO(restructure): Refactor FlowAccountStorage +// TODO(restructure-followup): Refactor FlowAccountStorage export interface FlowAccountCapability { address: string; path: string; diff --git a/packages/core/src/flow-indexer.service.ts b/packages/core/src/flow-indexer.service.ts index d34533c70..cda81e4a6 100644 --- a/packages/core/src/flow-indexer.service.ts +++ b/packages/core/src/flow-indexer.service.ts @@ -453,7 +453,6 @@ export class FlowIndexerService { this.createAccount(address).catch((error) => { // Most likely an account not found error monotonic/non-monotonic addresses. // Can be safely ignored. - // TODO(restructure): Smarter handling of monotonic/non-monotonic addresses }) ) ); @@ -604,6 +603,7 @@ export class FlowIndexerService { id: `${account.address}.${name}`, address: ensurePrefixedAddress(account.address), // TODO(restructure): Populate local config if applicable + // Or even better, create a separate "workspace contracts" API and remove this field. localConfig: undefined, name: name, code: account.contracts[name], diff --git a/packages/core/src/flow-snapshots.service.ts b/packages/core/src/flow-snapshots.service.ts index 83f3d5b97..ae1ed982e 100644 --- a/packages/core/src/flow-snapshots.service.ts +++ b/packages/core/src/flow-snapshots.service.ts @@ -49,11 +49,15 @@ export class FlowSnapshotsService extends EventEmitter { throw new Error("Failed creating snapshot"); } - await this.persistSingle({ - id: name, - blockId: response.data.blockId, - blockHeight: response.data.height, - }); + const existing = await this.findAllPersisted(); + await this.persistAll([ + ...existing, + { + id: name, + blockId: response.data.blockId, + blockHeight: response.data.height, + }, + ]); return response.data; } @@ -103,8 +107,8 @@ export class FlowSnapshotsService extends EventEmitter { // Ensure we exclude the ones that were deleted without using Flowser. await this.persistAll( persistedSnapshots.filter((snapshot) => - validSnapshotIdLookup.has(snapshot.id), - ), + validSnapshotIdLookup.has(snapshot.id) + ) ); } @@ -137,12 +141,6 @@ export class FlowSnapshotsService extends EventEmitter { return JSON.parse(rawValue ?? "[]"); } - private async persistSingle(snapshot: FlowStateSnapshot) { - const existing = await this.findAllPersisted(); - // TODO(restructure): Do we need to do some kind of deduplication? - await this.persistAll([...existing, snapshot]); - } - private async persistAll(snapshots: FlowStateSnapshot[]) { await this.storage.write(JSON.stringify(snapshots)); } diff --git a/packages/nodejs/src/wallet.service.ts b/packages/nodejs/src/wallet.service.ts index 87fbd15be..9c50d63de 100644 --- a/packages/nodejs/src/wallet.service.ts +++ b/packages/nodejs/src/wallet.service.ts @@ -36,7 +36,7 @@ export type ManagedKeyPair = { privateKey: string; }; -// TODO(restructure): Should we import existing accounts from flow.json? +// TODO(restructure-followup): Should we import existing accounts from flow.json? export class WalletService { constructor( private readonly cliService: FlowCliService, From 0a3acb66f72a52e07d7fc9d75d428be451cf0cdd Mon Sep 17 00:00:00 2001 From: Bart Date: Wed, 1 Nov 2023 11:33:51 +0100 Subject: [PATCH 081/100] fix fix-path to work with esm modules --- apps/electron/package.json | 2 +- yarn.lock | 126 ++++++++++++++++++++++++++++++------- 2 files changed, 105 insertions(+), 23 deletions(-) diff --git a/apps/electron/package.json b/apps/electron/package.json index a0fef3073..f1193067d 100644 --- a/apps/electron/package.json +++ b/apps/electron/package.json @@ -106,7 +106,7 @@ "electron-icon-maker": "^0.0.5", "electron-log": "^4.4.8", "electron-updater": "^6.1.4", - "fix-path": "^4.0.0", + "fix-path": "3.0.0", "mixpanel-browser": "^2.47.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/yarn.lock b/yarn.lock index 11d18c63f..2692fee5c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2189,6 +2189,7 @@ electron-icon-maker "^0.0.5" electron-log "^4.4.8" electron-updater "^6.1.4" + fix-path "^4.0.0" mixpanel-browser "^2.47.0" react "^18.2.0" react-dom "^18.2.0" @@ -4814,6 +4815,14 @@ cross-fetch@^3.1.5, cross-fetch@^3.1.6: dependencies: node-fetch "^2.6.12" +cross-spawn@^4.0.0: + version "4.0.2" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz" + integrity sha512-yAXz/pA1tD8Gtg2S98Ekf/sewp3Lcp3YoFKJ4Hkp5h5yLWnKVTDU0kwjKJ8NDCYcfTLfyGkzTikst+jWypT1iA== + dependencies: + lru-cache "^4.0.1" + which "^1.2.9" + cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" @@ -5136,10 +5145,10 @@ default-gateway@^6.0.3: dependencies: execa "^5.0.0" -default-shell@^2.0.0: - version "2.2.0" - resolved "https://registry.npmjs.org/default-shell/-/default-shell-2.2.0.tgz" - integrity sha512-sPpMZcVhRQ0nEMDtuMJ+RtCxt7iHPAMBU+I4tAlo5dU1sjRpNax0crj6nR3qKpvVnckaQ9U38enXcwW9nZJeCw== +default-shell@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/default-shell/-/default-shell-1.0.1.tgz" + integrity sha512-/Os8tTMPSriNHCsVj3VLjMZblIl1sIg8EXz3qg7C5K+y9calfTA/qzlfPvCQ+LEgLWmtZ9wCnzE1w+S6TPPFyQ== defaults@^1.0.3: version "1.0.4" @@ -6192,6 +6201,19 @@ events@^3.2.0: resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== +execa@^0.5.0: + version "0.5.1" + resolved "https://registry.npmjs.org/execa/-/execa-0.5.1.tgz" + integrity sha512-R66dW/hW3I8yV77Wg4xn6zMguRPUgt59VLm5e85NrOF05ZdPn7YOfPBSw0E9epJDvuzwVWEG+HmEaQ4muYuWKQ== + dependencies: + cross-spawn "^4.0.0" + get-stream "^2.2.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + execa@^5.0.0, execa@^5.1.1: version "5.1.1" resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" @@ -6499,12 +6521,12 @@ find-up@^5.0.0: locate-path "^6.0.0" path-exists "^4.0.0" -fix-path@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/fix-path/-/fix-path-4.0.0.tgz" - integrity sha512-g31GX207Tt+psI53ZSaB1egprYbEN0ZYl90aKcO22A2LmCNnFsSq3b5YpoKp3E/QEiWByTXGJOkFQG4S07Bc1A== +fix-path@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/fix-path/-/fix-path-3.0.0.tgz" + integrity sha512-opGAl4+ip5jUikHR2C8Jo7czZ80pz8EK/0gMlAZu7xgDmBqIynlX8SMYg9KowYjAU6HT0nxsSJEWru0u+n+N2Q== dependencies: - shell-path "^3.0.0" + shell-path "^2.1.0" flat-cache@^3.0.4: version "3.1.0" @@ -6740,6 +6762,14 @@ get-package-type@^0.1.0: resolved "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== +get-stream@^2.2.0: + version "2.3.1" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz" + integrity sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA== + dependencies: + object-assign "^4.0.1" + pinkie-promise "^2.0.0" + get-stream@^5.1.0: version "5.2.0" resolved "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz" @@ -7661,6 +7691,11 @@ is-stream@^1.0.1: resolved "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz" integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz" + integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== + is-stream@^2.0.0: version "2.0.1" resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" @@ -8759,6 +8794,14 @@ lru_map@^0.3.3: resolved "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz" integrity sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ== +lru-cache@^4.0.1: + version "4.1.5" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" @@ -9243,6 +9286,13 @@ normalize-url@^6.0.1: resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz" integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz" + integrity sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw== + dependencies: + path-key "^2.0.0" + npm-run-path@^4.0.1: version "4.0.1" resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" @@ -9478,6 +9528,11 @@ p-cancelable@^2.0.0: resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz" integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz" + integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== + p-limit@^2.2.0: version "2.3.0" resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" @@ -9633,6 +9688,11 @@ path-is-inside@^1.0.1: resolved "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz" integrity sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w== +path-key@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" + integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== + path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" @@ -10167,6 +10227,11 @@ proxy-addr@~2.0.7: forwarded "0.2.0" ipaddr.js "1.9.1" +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz" + integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ== + psl@^1.1.28, psl@^1.1.33: version "1.9.0" resolved "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz" @@ -11078,21 +11143,21 @@ shebang-regex@^3.0.0: resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shell-env@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/shell-env/-/shell-env-4.0.1.tgz" - integrity sha512-w3oeZ9qg/P6Lu6qqwavvMnB/bwfsz67gPB3WXmLd/n6zuh7TWQZtGa3iMEdmua0kj8rivkwl+vUjgLWlqZOMPw== +shell-env@^0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/shell-env/-/shell-env-0.3.0.tgz" + integrity sha512-VrC6OSm5riGAFWvlYExA80Rrlfi4STsztNXjyet9Jf20hbiVeeKvJIesb92gJk7zlmpQjB0wOZpy8ClzVdPVWQ== dependencies: - default-shell "^2.0.0" - execa "^5.1.1" - strip-ansi "^7.0.1" + default-shell "^1.0.0" + execa "^0.5.0" + strip-ansi "^3.0.0" -shell-path@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/shell-path/-/shell-path-3.0.0.tgz" - integrity sha512-HNIZ+W/3P0JuVTV03xjGqYKt3e3h0/Z4AH8TQWeth1LBtCusSjICgkdNdb3VZr6mI7ijE2AiFFpgkVMNKsALeQ== +shell-path@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/shell-path/-/shell-path-2.1.0.tgz" + integrity sha512-w+mbrnpA+r5jSFS4MgFfxZJ1Wx8qMKkR4gvQ+wgaZEoZCMMYZ6Yl/dcNjW/zLMfmx5a9IVIFwGAtUJcnDMmFrg== dependencies: - shell-env "^4.0.0" + shell-env "^0.3.0" shell-quote@^1.8.1: version "1.8.1" @@ -11108,7 +11173,7 @@ side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" -signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: +signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== @@ -11531,6 +11596,11 @@ strip-bom@^4.0.0: resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz" integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz" + integrity sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q== + strip-final-newline@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" @@ -12665,6 +12735,13 @@ which@^1.2.10: dependencies: isexe "^2.0.0" +which@^1.2.9: + version "1.3.1" + resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + which@^2.0.1, which@^2.0.2: version "2.0.2" resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" @@ -12814,6 +12891,11 @@ yaku@^0.16.6: resolved "https://registry.npmjs.org/yaku/-/yaku-0.16.7.tgz" integrity sha512-Syu3IB3rZvKvYk7yTiyl1bo/jiEFaaStrgv1V2TIJTqYPStSMQVO8EQjg/z+DRzLq/4LIIharNT3iH1hylEIRw== +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz" + integrity sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A== + yallist@^3.0.2: version "3.1.1" resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" From 61caca9612b91c0e8c5dd96a09a547875f4d1fab Mon Sep 17 00:00:00 2001 From: Bart Date: Wed, 1 Nov 2023 11:34:19 +0100 Subject: [PATCH 082/100] configure gateway port --- apps/electron/src/services/flowser-app.service.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/electron/src/services/flowser-app.service.ts b/apps/electron/src/services/flowser-app.service.ts index 6cc439aaa..3fb8447ba 100644 --- a/apps/electron/src/services/flowser-app.service.ts +++ b/apps/electron/src/services/flowser-app.service.ts @@ -224,8 +224,10 @@ export class FlowserAppService { }); this.flowGatewayService.configure({ - restServerAddress: 'http://localhost:8888', flowJSON: this.flowConfigService.getFlowJSON(), + restServerAddress: `http://localhost:${ + workspace.emulator?.restServerPort ?? 8888 + }`, }); this.processingScheduler.start(); From 9f8c2c685945ad5bfe12c6657bb7006eed3dd455 Mon Sep 17 00:00:00 2001 From: Bart Date: Wed, 1 Nov 2023 12:16:47 +0100 Subject: [PATCH 083/100] bring back dependency errors --- apps/electron/package.json | 3 + apps/electron/src/main/ipc/events.ts | 1 + apps/electron/src/main/ipc/handlers.ts | 85 ++++++-------- apps/electron/src/main/ipc/invokers.ts | 2 + apps/electron/src/renderer/App.tsx | 4 +- .../DependencyErrors.module.scss | 4 +- .../DependencyErrors/DependencyErrors.tsx | 85 ++++++++++++++ .../services/dependency-manager.service.ts | 46 ++++++++ .../src/services/flowser-app.service.ts | 5 + apps/electron/src/services/types.ts | 14 +++ packages/api/src/resources.ts | 19 +-- packages/ui/src/api.ts | 7 -- .../FlowserUsageRequirements.tsx | 108 ------------------ yarn.lock | 14 ++- 14 files changed, 209 insertions(+), 188 deletions(-) rename packages/ui/src/common/misc/FlowserUsageRequirements/FlowserUsageRequirements.module.scss => apps/electron/src/renderer/components/DependencyErrors/DependencyErrors.module.scss (59%) create mode 100644 apps/electron/src/renderer/components/DependencyErrors/DependencyErrors.tsx create mode 100644 apps/electron/src/services/dependency-manager.service.ts create mode 100644 apps/electron/src/services/types.ts delete mode 100644 packages/ui/src/common/misc/FlowserUsageRequirements/FlowserUsageRequirements.tsx diff --git a/apps/electron/package.json b/apps/electron/package.json index f1193067d..388e79ca1 100644 --- a/apps/electron/package.json +++ b/apps/electron/package.json @@ -102,6 +102,7 @@ "dependencies": { "@fingerprintjs/fingerprintjs": "^4.1.0", "@sentry/electron": "^4.13.0", + "command-exists": "^1.2.9", "electron-debug": "^3.2.0", "electron-icon-maker": "^0.0.5", "electron-log": "^4.4.8", @@ -112,6 +113,7 @@ "react-dom": "^18.2.0", "react-hot-toast": "^2.1.1", "react-router-dom": "^6.16.0", + "semver": "^7.5.4", "swr": "^2.2.4" }, "devDependencies": { @@ -123,6 +125,7 @@ "@teamsupercell/typings-for-css-modules-loader": "^2.5.2", "@testing-library/jest-dom": "^6.1.3", "@testing-library/react": "^14.0.0", + "@types/command-exists": "^1.2.2", "@types/jest": "^29.5.5", "@types/mixpanel-browser": "^2.47.3", "@types/node": "20.6.2", diff --git a/apps/electron/src/main/ipc/events.ts b/apps/electron/src/main/ipc/events.ts index 0400f00d5..3504fb3e4 100644 --- a/apps/electron/src/main/ipc/events.ts +++ b/apps/electron/src/main/ipc/events.ts @@ -5,6 +5,7 @@ export enum FlowserIpcEvent { APP_UPDATE_END = 'APP_UPDATE_END', APP_EXIT = 'APP_EXIT', APP_LOG = 'APP_LOG', + APP_DEPENDENCY_ERRORS_LIST = 'APP_DEPENDENCY_ERRORS_LIST', WORKSPACES_CLOSE = 'WORKSPACES_CLOSE', WORKSPACES_OPEN = 'WORKSPACES_OPEN', diff --git a/apps/electron/src/main/ipc/handlers.ts b/apps/electron/src/main/ipc/handlers.ts index 128c88c9b..b209f5ceb 100644 --- a/apps/electron/src/main/ipc/handlers.ts +++ b/apps/electron/src/main/ipc/handlers.ts @@ -24,6 +24,7 @@ export function registerHandlers(appService: FlowserAppService) { walletService, flowSnapshotsService, processManagerService, + dependencyManagerService, } = appService; async function showDirectoryPicker() { @@ -45,43 +46,39 @@ export function registerHandlers(appService: FlowserAppService) { APP_UPDATE_PROGRESS(): any {}, APP_UPDATE_START(): any {}, - [FlowserIpcEvent.APP_DIRECTORY_PICKER_SHOW]: (e: IpcMainInvokeEvent) => - showDirectoryPicker(), + APP_DEPENDENCY_ERRORS_LIST: () => + dependencyManagerService.validateDependencies(), - [FlowserIpcEvent.WORKSPACES_CLOSE]: (e: IpcMainInvokeEvent, id: string) => + APP_DIRECTORY_PICKER_SHOW: () => showDirectoryPicker(), + + WORKSPACES_CLOSE: (e: IpcMainInvokeEvent, id: string) => workspaceService.close(id), - [FlowserIpcEvent.WORKSPACES_OPEN]: (e: IpcMainInvokeEvent, id: string) => + WORKSPACES_OPEN: (e: IpcMainInvokeEvent, id: string) => workspaceService.open(id), - [FlowserIpcEvent.WORKSPACES_CREATE]: ( + WORKSPACES_CREATE: ( e: IpcMainInvokeEvent, createdWorkspace: FlowserWorkspace ) => workspaceService.create(createdWorkspace), - [FlowserIpcEvent.WORKSPACES_UPDATE]: ( + WORKSPACES_UPDATE: ( e: IpcMainInvokeEvent, updatedWorkspace: FlowserWorkspace ) => workspaceService.update(updatedWorkspace), - [FlowserIpcEvent.WORKSPACES_LIST]: () => workspaceService.findAll(), - [FlowserIpcEvent.WORKSPACES_FIND_BY_ID]: ( - e: IpcMainInvokeEvent, - id: string - ) => workspaceService.findById(id), - [FlowserIpcEvent.WORKSPACES_REMOVE]: (e: IpcMainInvokeEvent, id: string) => + WORKSPACES_LIST: () => workspaceService.findAll(), + WORKSPACES_FIND_BY_ID: (e: IpcMainInvokeEvent, id: string) => + workspaceService.findById(id), + WORKSPACES_REMOVE: (e: IpcMainInvokeEvent, id: string) => workspaceService.remove(id), - [FlowserIpcEvent.WORKSPACES_DEFAULT_SETTINGS]: (e: IpcMainInvokeEvent) => + WORKSPACES_DEFAULT_SETTINGS: (e: IpcMainInvokeEvent) => workspaceService.getDefaultSettings(), - [FlowserIpcEvent.INDEX_GET_ALL]: ( + INDEX_GET_ALL: ( event: IpcMainInvokeEvent, indexName: keyof BlockchainIndexes ) => blockchainIndexService.indexes[indexName].findAll(), - [FlowserIpcEvent.INTERACTIONS_PARSE]: ( - event: IpcMainInvokeEvent, - sourceCode: string - ) => flowInteractionsService.parse(sourceCode), - [FlowserIpcEvent.INTERACTIONS_LIST_TEMPLATES]: async ( - event: IpcMainInvokeEvent - ) => { + INTERACTIONS_PARSE: (event: IpcMainInvokeEvent, sourceCode: string) => + flowInteractionsService.parse(sourceCode), + INTERACTIONS_LIST_TEMPLATES: async () => { // There will be only 1 open workspace for now. const openWorkspaces = await workspaceService.getOpenWorkspaces(); return flowInteractionsService.getTemplates({ @@ -89,30 +86,23 @@ export function registerHandlers(appService: FlowserAppService) { }); }, - [FlowserIpcEvent.FLOW_ACCOUNT_GET_INDEX]: ( - event: IpcMainInvokeEvent, - address: string - ) => + FLOW_ACCOUNT_GET_INDEX: (event: IpcMainInvokeEvent, address: string) => goBindingsService.getIndexOfAddress({ hexAddress: address, chainId: 'flow-emulator', }), - [FlowserIpcEvent.FLOW_CLI_GET_INFO]: (event: IpcMainInvokeEvent) => - flowCliService.getVersion(), - [FlowserIpcEvent.FLOW_TRANSACTION_SEND]: ( + FLOW_CLI_GET_INFO: () => flowCliService.getVersion(), + FLOW_TRANSACTION_SEND: ( event: IpcMainInvokeEvent, request: SendTransactionRequest ) => walletService.sendTransaction(request), - [FlowserIpcEvent.FLOW_SCRIPT_EXECUTE]: ( + FLOW_SCRIPT_EXECUTE: ( event: IpcMainInvokeEvent, request: ExecuteScriptRequest ) => flowGatewayService.executeScript(request), - [FlowserIpcEvent.WALLET_KEY_LIST]: (event: IpcMainInvokeEvent) => - walletService.listKeyPairs(), - [FlowserIpcEvent.WALLET_ACCOUNT_CREATE]: async ( - event: IpcMainInvokeEvent - ) => { + WALLET_KEY_LIST: () => walletService.listKeyPairs(), + WALLET_ACCOUNT_CREATE: async () => { // There will be only 1 open workspace for now. const openWorkspaces = await workspaceService.getOpenWorkspaces(); return walletService.createAccount({ @@ -120,25 +110,16 @@ export function registerHandlers(appService: FlowserAppService) { }); }, - [FlowserIpcEvent.SNAPSHOTS_LIST]: (event: IpcMainInvokeEvent) => - flowSnapshotsService.findAll(), - [FlowserIpcEvent.SNAPSHOTS_CREATE]: ( - event: IpcMainInvokeEvent, - name: string - ) => flowSnapshotsService.create(name), - [FlowserIpcEvent.SNAPSHOTS_JUMP_TO]: ( - event: IpcMainInvokeEvent, - id: string - ) => flowSnapshotsService.jumpTo(id), - [FlowserIpcEvent.SNAPSHOTS_ROLLBACK_TO_HEIGHT]: ( - event: IpcMainInvokeEvent, - height: number - ) => flowSnapshotsService.rollbackToHeight(height), + SNAPSHOTS_LIST: () => flowSnapshotsService.findAll(), + SNAPSHOTS_CREATE: (event: IpcMainInvokeEvent, name: string) => + flowSnapshotsService.create(name), + SNAPSHOTS_JUMP_TO: (event: IpcMainInvokeEvent, id: string) => + flowSnapshotsService.jumpTo(id), + SNAPSHOTS_ROLLBACK_TO_HEIGHT: (event: IpcMainInvokeEvent, height: number) => + flowSnapshotsService.rollbackToHeight(height), - [FlowserIpcEvent.PROCESS_LOGS_LIST]: ( - event: IpcMainInvokeEvent, - processId: string - ) => processManagerService.findAllLogsByProcess(processId), + PROCESS_LOGS_LIST: (event: IpcMainInvokeEvent, processId: string) => + processManagerService.findAllLogsByProcess(processId), }; for (const eventName in handlers) { diff --git a/apps/electron/src/main/ipc/invokers.ts b/apps/electron/src/main/ipc/invokers.ts index bd76789fc..56e9cbd02 100644 --- a/apps/electron/src/main/ipc/invokers.ts +++ b/apps/electron/src/main/ipc/invokers.ts @@ -73,6 +73,8 @@ const processManagerService: IProcessManagerService = { export const electronInvokers = { app: { + listDependencyErrors: () => + ipcRenderer.invoke(FlowserIpcEvent.APP_DEPENDENCY_ERRORS_LIST), showDirectoryPicker: () => ipcRenderer.invoke(FlowserIpcEvent.APP_DIRECTORY_PICKER_SHOW), handleExit: (callback: () => void) => diff --git a/apps/electron/src/renderer/App.tsx b/apps/electron/src/renderer/App.tsx index 1bf9473c3..e09cb51c4 100644 --- a/apps/electron/src/renderer/App.tsx +++ b/apps/electron/src/renderer/App.tsx @@ -16,13 +16,13 @@ import { FlowEvent, FlowTransaction, } from '@onflowser/api'; -import { FlowserUsageRequirements } from '@onflowser/ui/src/common/misc/FlowserUsageRequirements/FlowserUsageRequirements'; import { SWRConfig } from 'swr'; import { SentryRendererService } from '../services/sentry-renderer.service'; import { AnalyticsService } from '../services/analytics.service'; import { UpdateLoader } from './components/loaders/UpdateLoader'; import { FlowserRouter } from './router'; import { indexSyncIntervalInMs, IpcIndexCache } from './ipc-index-cache'; +import { DependencyErrors } from './components/DependencyErrors/DependencyErrors'; const indexes = { accountStorage: new IpcIndexCache('accountStorage'), @@ -102,7 +102,7 @@ export function App() { pickDirectory={window.electron.app.showDirectoryPicker} > - + 0; + + if (!showModal) { + return null; + } + + return ( + null}> + {errors.map((error) => ( +

    + ))} + + ); +} + +function useGetDependencyErrors(): SWRResponse { + return useSWR(`dependency-errors`, () => + window.electron.app.listDependencyErrors() + ); +} + +function Description(props: { error: FlowserDependencyError }) { + const { unsupportedCliVersion, type } = props.error; + + switch (type) { + case FlowserDependencyErrorType.UNSUPPORTED_CLI_VERSION: + return ( + + ); + case FlowserDependencyErrorType.MISSING_FLOW_CLI: + return ( +
    +

    + We couldn{`'`}t find a flow-cli installation on your machine. +

    +

    + Please install flow-cli to use Flowser. See the{' '} + + installation instructions + {' '} + to learn more. +

    +
    + ); + default: + return
    Unknown
    ; + } +} diff --git a/apps/electron/src/services/dependency-manager.service.ts b/apps/electron/src/services/dependency-manager.service.ts new file mode 100644 index 000000000..5db1ce142 --- /dev/null +++ b/apps/electron/src/services/dependency-manager.service.ts @@ -0,0 +1,46 @@ +import { FlowCliService } from '@onflowser/nodejs'; +import commandExists from 'command-exists'; +import semver from 'semver'; +import { FlowserDependencyError, FlowserDependencyErrorType } from './types'; + +export class DependencyManagerService { + constructor(private readonly flowCliService: FlowCliService) {} + + async validateDependencies(): Promise { + const errors: FlowserDependencyError[] = []; + + try { + await commandExists('flow'); + } catch (error) { + errors.push({ + type: FlowserDependencyErrorType.MISSING_FLOW_CLI, + name: 'Missing Flow CLI', + }); + + return errors; + } + + const flowCliVersion = await this.flowCliService.getVersion(); + const actualVersion = semver.coerce(flowCliVersion.version)?.version; + + if (!actualVersion) { + throw new Error('Could not parse Flow CLI version'); + } + + const minSupportedVersion = '1.0.0'; + const isSupportedVersion = semver.lte(minSupportedVersion, actualVersion); + + if (!isSupportedVersion) { + errors.push({ + type: FlowserDependencyErrorType.UNSUPPORTED_CLI_VERSION, + name: 'Unsupported Flow CLI version', + unsupportedCliVersion: { + minSupportedVersion, + actualVersion, + }, + }); + } + + return errors; + } +} diff --git a/apps/electron/src/services/flowser-app.service.ts b/apps/electron/src/services/flowser-app.service.ts index 3fb8447ba..90c9d20d2 100644 --- a/apps/electron/src/services/flowser-app.service.ts +++ b/apps/electron/src/services/flowser-app.service.ts @@ -25,6 +25,7 @@ import { FileStorageService } from './file-storage.service'; import { indexSyncIntervalInMs } from '../renderer/ipc-index-cache'; import { isErrorWithMessage } from '../utils'; import { resolveHtmlPath } from '../main/util'; +import { DependencyManagerService } from './dependency-manager.service'; // Root service that ties all the pieces together and orchestrates them. export class FlowserAppService { @@ -42,6 +43,7 @@ export class FlowserAppService { public readonly blockchainIndexService: BlockchainIndexService; public readonly flowSnapshotsService: FlowSnapshotsService; public readonly flowConfigService: FlowConfigService; + public readonly dependencyManagerService: DependencyManagerService; private readonly flowSnapshotsStorageService: FileStorageService; private readonly walletStorageService: FileStorageService; private processingScheduler: AsyncIntervalScheduler; @@ -101,6 +103,9 @@ export class FlowserAppService { this.flowGatewayService, this.walletStorageService ); + this.dependencyManagerService = new DependencyManagerService( + this.flowCliService + ); this.processingScheduler = new AsyncIntervalScheduler({ name: 'Blockchain processing', pollingIntervalInMs: indexSyncIntervalInMs, diff --git a/apps/electron/src/services/types.ts b/apps/electron/src/services/types.ts new file mode 100644 index 000000000..a0bfef064 --- /dev/null +++ b/apps/electron/src/services/types.ts @@ -0,0 +1,14 @@ +export enum FlowserDependencyErrorType { + UNSUPPORTED_CLI_VERSION, + MISSING_FLOW_CLI, +} + +export interface FlowserDependencyError { + name: string; + type: FlowserDependencyErrorType; + + unsupportedCliVersion?: { + minSupportedVersion: string; + actualVersion: string; + }; +} diff --git a/packages/api/src/resources.ts b/packages/api/src/resources.ts index 116a34809..fa1d7d92c 100644 --- a/packages/api/src/resources.ts +++ b/packages/api/src/resources.ts @@ -276,11 +276,9 @@ export interface ManagedProcess { } export enum ManagedProcessState { - MANAGED_PROCESS_STATE_UNSPECIFIED = 0, - MANAGED_PROCESS_STATE_NOT_RUNNING = 1, - MANAGED_PROCESS_STATE_RUNNING = 2, - MANAGED_PROCESS_STATE_ERROR = 3, - UNRECOGNIZED = -1, + NOT_RUNNING = 1, + RUNNING = 2, + ERROR = 3, } export interface CommandOptions { @@ -339,17 +337,6 @@ export interface FlowEmulatorConfig { snapshot: boolean; } -export enum FlowserUsageRequirementType { - UNSUPPORTED_CLI_VERSION, - MISSING_FLOW_CLI, -} - -export interface FlowserUsageRequirement { - title: string; - description: string; - type: FlowserUsageRequirementType; -} - export interface InteractionTemplate extends TimestampedResource { id: string; name: string; diff --git a/packages/ui/src/api.ts b/packages/ui/src/api.ts index a8e7d7b01..4aef38428 100644 --- a/packages/ui/src/api.ts +++ b/packages/ui/src/api.ts @@ -237,10 +237,3 @@ export function useGetInteractionTemplates(): SWRResponse< interactionsService.getTemplates() ); } - -export function useGetFlowserUsageRequirements(): SWRResponse< - FlowserUsageRequirement[] -> { - // TODO(restructure): Implement and move to electron dir only - return useSWR(`usage-requirements`, () => []); -} diff --git a/packages/ui/src/common/misc/FlowserUsageRequirements/FlowserUsageRequirements.tsx b/packages/ui/src/common/misc/FlowserUsageRequirements/FlowserUsageRequirements.tsx deleted file mode 100644 index a635f45d1..000000000 --- a/packages/ui/src/common/misc/FlowserUsageRequirements/FlowserUsageRequirements.tsx +++ /dev/null @@ -1,108 +0,0 @@ -import React from "react"; -import { ActionDialog } from "../../overlays/dialogs/action/ActionDialog"; -import { ReactElement } from "react"; -import classes from "./FlowserUsageRequirements.module.scss"; -import { - FlowserUsageRequirement, - FlowserUsageRequirementType, -} from "@onflowser/api"; -import { useGetFlowserUsageRequirements } from "../../../api"; - -export function FlowserUsageRequirements(): ReactElement | null { - const { data: missingRequirements } = useGetFlowserUsageRequirements(); - const showModal = missingRequirements && missingRequirements.length > 0; - - if (!showModal) { - return null; - } - - return ( - null}> - <> - {missingRequirements.map((requirement) => ( - - ))} - - - ); -} - -function MissingRequirementItem({ - requirement, -}: { - requirement: FlowserUsageRequirement; -}) { - return ( -
    - {getTitle(requirement)} -
    {getDescription(requirement)}
    -
    - ); -} - -function getTitle(requirement: FlowserUsageRequirement) { - switch (requirement.type) { - case FlowserUsageRequirementType.PROJECT_REQUIREMENT_UNSUPPORTED_FLOW_CLI_VERSION: - return "Unsupported flow-cli version"; - case FlowserUsageRequirementType.PROJECT_REQUIREMENT_MISSING_FLOW_CLI: - return "Missing flow-cli"; - default: - return "Unknown"; - } -} - -function getDescription(requirement: FlowserUsageRequirement) { - const { missingVersionRequirement, type } = requirement; - switch (type) { - case FlowserUsageRequirementType.PROJECT_REQUIREMENT_UNSUPPORTED_FLOW_CLI_VERSION: - return ( - <> -

    - Found{" "} - flow-cli@{missingVersionRequirement?.foundVersion}, but - the minimum required version is{" "} - - flow-cli@{missingVersionRequirement?.minSupportedVersion} - - . -

    -

    - Please update flow-cli too to the latest version to use Flowser. See - the{" "} - - installation instructions - {" "} - to learn more. -

    - - ); - case FlowserUsageRequirementType.PROJECT_REQUIREMENT_MISSING_FLOW_CLI: - return ( - <> -

    - We couldn{`'`}t find a flow-cli installation on your local machine. -

    -

    - Please install flow-cli to use Flowser. See the{" "} - - installation instructions - {" "} - to learn more. -

    - - ); - default: - return "Unknown"; - } -} diff --git a/yarn.lock b/yarn.lock index 2692fee5c..a5f053b64 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2185,16 +2185,18 @@ dependencies: "@fingerprintjs/fingerprintjs" "^4.1.0" "@sentry/electron" "^4.13.0" + command-exists "^1.2.9" electron-debug "^3.2.0" electron-icon-maker "^0.0.5" electron-log "^4.4.8" electron-updater "^6.1.4" - fix-path "^4.0.0" + fix-path "3.0.0" mixpanel-browser "^2.47.0" react "^18.2.0" react-dom "^18.2.0" react-hot-toast "^2.1.1" react-router-dom "^6.16.0" + semver "^7.5.4" swr "^2.2.4" "@onflowser/nodejs@file:/Users/bartkozorog/Projects/flowser/packages/nodejs": @@ -2668,6 +2670,11 @@ "@types/node" "*" "@types/responselike" "^1.0.0" +"@types/command-exists@^1.2.2": + version "1.2.2" + resolved "https://registry.npmjs.org/@types/command-exists/-/command-exists-1.2.2.tgz" + integrity sha512-1qKPTkjLmghE5C7UUHXGcLaG8MNftchOcLAIryUXNKahRO5beS+iJ9rIL8XD4+B8K2phjYUsPQDox1FRX4KMTQ== + "@types/connect-history-api-fallback@^1.3.5": version "1.5.1" resolved "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.1.tgz" @@ -4587,6 +4594,11 @@ combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" +command-exists@^1.2.9: + version "1.2.9" + resolved "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz" + integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== + commander@^10.0.1: version "10.0.1" resolved "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz" From 25081c0dfe84fae16fd6b9b74f8adba085b3c7a4 Mon Sep 17 00:00:00 2001 From: Bart Date: Wed, 1 Nov 2023 12:31:59 +0100 Subject: [PATCH 084/100] cleanup erb files --- {apps/electron/.github => .github}/config.yml | 0 {apps/electron/.github => .github}/stale.yml | 0 .../workflows/codeql-analysis.yml | 0 .../.github => .github}/workflows/publish.yml | 0 .../.github => .github}/workflows/test.yml | 0 apps/electron/.erb/img/erb-banner.svg | 32 -- apps/electron/.erb/img/erb-logo.png | Bin 28783 -> 0 bytes .../.erb/img/palette-sponsor-banner.svg | 6 - apps/electron/.erb/mocks/fileMock.js | 1 - apps/electron/.github/FUNDING.yml | 5 - .../.github/ISSUE_TEMPLATE/1-Bug_report.md | 67 --- .../.github/ISSUE_TEMPLATE/2-Question.md | 19 - .../ISSUE_TEMPLATE/3-Feature_request.md | 15 - apps/electron/.vscode/extensions.json | 3 - apps/electron/.vscode/launch.json | 30 - apps/electron/.vscode/settings.json | 30 - apps/electron/CHANGELOG.md | 533 ------------------ apps/electron/CODE_OF_CONDUCT.md | 76 --- apps/electron/LICENSE | 21 - apps/electron/README.md | 159 ------ apps/electron/package.json | 1 + 21 files changed, 1 insertion(+), 997 deletions(-) rename {apps/electron/.github => .github}/config.yml (100%) rename {apps/electron/.github => .github}/stale.yml (100%) rename {apps/electron/.github => .github}/workflows/codeql-analysis.yml (100%) rename {apps/electron/.github => .github}/workflows/publish.yml (100%) rename {apps/electron/.github => .github}/workflows/test.yml (100%) delete mode 100644 apps/electron/.erb/img/erb-banner.svg delete mode 100644 apps/electron/.erb/img/erb-logo.png delete mode 100644 apps/electron/.erb/img/palette-sponsor-banner.svg delete mode 100644 apps/electron/.erb/mocks/fileMock.js delete mode 100644 apps/electron/.github/FUNDING.yml delete mode 100644 apps/electron/.github/ISSUE_TEMPLATE/1-Bug_report.md delete mode 100644 apps/electron/.github/ISSUE_TEMPLATE/2-Question.md delete mode 100644 apps/electron/.github/ISSUE_TEMPLATE/3-Feature_request.md delete mode 100644 apps/electron/.vscode/extensions.json delete mode 100644 apps/electron/.vscode/launch.json delete mode 100644 apps/electron/.vscode/settings.json delete mode 100644 apps/electron/CHANGELOG.md delete mode 100644 apps/electron/CODE_OF_CONDUCT.md delete mode 100644 apps/electron/LICENSE delete mode 100644 apps/electron/README.md diff --git a/apps/electron/.github/config.yml b/.github/config.yml similarity index 100% rename from apps/electron/.github/config.yml rename to .github/config.yml diff --git a/apps/electron/.github/stale.yml b/.github/stale.yml similarity index 100% rename from apps/electron/.github/stale.yml rename to .github/stale.yml diff --git a/apps/electron/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml similarity index 100% rename from apps/electron/.github/workflows/codeql-analysis.yml rename to .github/workflows/codeql-analysis.yml diff --git a/apps/electron/.github/workflows/publish.yml b/.github/workflows/publish.yml similarity index 100% rename from apps/electron/.github/workflows/publish.yml rename to .github/workflows/publish.yml diff --git a/apps/electron/.github/workflows/test.yml b/.github/workflows/test.yml similarity index 100% rename from apps/electron/.github/workflows/test.yml rename to .github/workflows/test.yml diff --git a/apps/electron/.erb/img/erb-banner.svg b/apps/electron/.erb/img/erb-banner.svg deleted file mode 100644 index f7ce67079..000000000 --- a/apps/electron/.erb/img/erb-banner.svg +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/apps/electron/.erb/img/erb-logo.png b/apps/electron/.erb/img/erb-logo.png deleted file mode 100644 index 97a5661aeb0b6f20fde68d9e6dd1e899d8fda63f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28783 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 gKKK7D8}FFy{Cfhg7$ - - - - - diff --git a/apps/electron/.erb/mocks/fileMock.js b/apps/electron/.erb/mocks/fileMock.js deleted file mode 100644 index 602eb23ee..000000000 --- a/apps/electron/.erb/mocks/fileMock.js +++ /dev/null @@ -1 +0,0 @@ -export default 'test-file-stub'; diff --git a/apps/electron/.github/FUNDING.yml b/apps/electron/.github/FUNDING.yml deleted file mode 100644 index 5b774d1b4..000000000 --- a/apps/electron/.github/FUNDING.yml +++ /dev/null @@ -1,5 +0,0 @@ -# These are supported funding model platforms - -github: [electron-react-boilerplate, amilajack] -patreon: amilajack -open_collective: electron-react-boilerplate-594 diff --git a/apps/electron/.github/ISSUE_TEMPLATE/1-Bug_report.md b/apps/electron/.github/ISSUE_TEMPLATE/1-Bug_report.md deleted file mode 100644 index 245ab770b..000000000 --- a/apps/electron/.github/ISSUE_TEMPLATE/1-Bug_report.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -name: Bug report -about: You're having technical issues. 🐞 -labels: 'bug' ---- - - - -## Prerequisites - - - -- [ ] Using npm -- [ ] Using an up-to-date [`main` branch](https://github.com/electron-react-boilerplate/electron-react-boilerplate/tree/main) -- [ ] Using latest version of devtools. [Check the docs for how to update](https://electron-react-boilerplate.js.org/docs/dev-tools/) -- [ ] Tried solutions mentioned in [#400](https://github.com/electron-react-boilerplate/electron-react-boilerplate/issues/400) -- [ ] For issue in production release, add devtools output of `DEBUG_PROD=true npm run build && npm start` - -## Expected Behavior - - - -## Current Behavior - - - -## Steps to Reproduce - - - - -1. - -2. - -3. - -4. - -## Possible Solution (Not obligatory) - - - -## Context - - - - - -## Your Environment - - - -- Node version : -- electron-react-boilerplate version or branch : -- Operating System and version : -- Link to your project : - - diff --git a/apps/electron/.github/ISSUE_TEMPLATE/2-Question.md b/apps/electron/.github/ISSUE_TEMPLATE/2-Question.md deleted file mode 100644 index 27d4d5da3..000000000 --- a/apps/electron/.github/ISSUE_TEMPLATE/2-Question.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -name: Question -about: Ask a question.❓ -labels: 'question' ---- - -## Summary - - - - diff --git a/apps/electron/.github/ISSUE_TEMPLATE/3-Feature_request.md b/apps/electron/.github/ISSUE_TEMPLATE/3-Feature_request.md deleted file mode 100644 index 84663b6c1..000000000 --- a/apps/electron/.github/ISSUE_TEMPLATE/3-Feature_request.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -name: Feature request -about: You want something added to the boilerplate. 🎉 -labels: 'enhancement' ---- - - diff --git a/apps/electron/.vscode/extensions.json b/apps/electron/.vscode/extensions.json deleted file mode 100644 index d9165248f..000000000 --- a/apps/electron/.vscode/extensions.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "recommendations": ["dbaeumer.vscode-eslint", "EditorConfig.EditorConfig"] -} diff --git a/apps/electron/.vscode/launch.json b/apps/electron/.vscode/launch.json deleted file mode 100644 index 7494aabbc..000000000 --- a/apps/electron/.vscode/launch.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": "0.2.0", - "configurations": [ - { - "name": "Electron: Main", - "type": "node", - "request": "launch", - "protocol": "inspector", - "runtimeExecutable": "npm", - "runtimeArgs": ["run", "start"], - "env": { - "MAIN_ARGS": "--inspect=5858 --remote-debugging-port=9223" - } - }, - { - "name": "Electron: Renderer", - "type": "chrome", - "request": "attach", - "port": 9223, - "webRoot": "${workspaceFolder}", - "timeout": 15000 - } - ], - "compounds": [ - { - "name": "Electron: All", - "configurations": ["Electron: Main", "Electron: Renderer"] - } - ] -} diff --git a/apps/electron/.vscode/settings.json b/apps/electron/.vscode/settings.json deleted file mode 100644 index 4a58cba04..000000000 --- a/apps/electron/.vscode/settings.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "files.associations": { - ".eslintrc": "jsonc", - ".prettierrc": "jsonc", - ".eslintignore": "ignore" - }, - - "eslint.validate": [ - "javascript", - "javascriptreact", - "html", - "typescriptreact" - ], - - "javascript.validate.enable": false, - "javascript.format.enable": false, - "typescript.format.enable": false, - - "search.exclude": { - ".git": true, - ".eslintcache": true, - ".erb/dll": true, - "release/{build,app/dist}": true, - "node_modules": true, - "npm-debug.log.*": true, - "test/**/__snapshots__": true, - "package-lock.json": true, - "*.{css,sass,scss}.d.ts": true - } -} diff --git a/apps/electron/CHANGELOG.md b/apps/electron/CHANGELOG.md deleted file mode 100644 index 5310ab55d..000000000 --- a/apps/electron/CHANGELOG.md +++ /dev/null @@ -1,533 +0,0 @@ -# 2.1.0 - -- Migrate to `css-minifier-webpack-plugin` - -# 2.0.1 - -## Fixes - -- Fix broken css linking in production build - -# 2.0.0 - -## Breaking Changes - -- drop redux -- remove counter example app -- simplify directory structure -- move `dll` dir to `.erb` dir -- fix icon/font import paths -- migrate to `react-refresh` from `react-hot-loader` -- migrate to webpack@5 -- migrate to electron@11 -- remove e2e tests and testcafe integration -- rename `app` dir to more conventional `src` dir -- rename `resources` dir to `assets` -- simplify npm scripts -- drop stylelint -- simplify styling of boilerplate app -- remove `START_HOT` env variable -- notarize support -- landing page boilerplate -- docs updates -- restore removed debugging support - -# 1.4.0 - -- Migrate to `eslint-config-erb@2` -- Rename `dev` npm script to `start` -- GitHub Actions: only publish GitHub releases when on master branch - -# 1.3.1 - -- Fix sass building bug ([#2540](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/2540)) -- Fix CI bug related to E2E tests and network timeouts -- Move automated dependency PRs to `next` ([#2554](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/2554)) -- Bump dependencies to patch semver - -# 1.3.0 - -- Fixes E2E tests ([#2516](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/2516)) -- Fixes preload entrypoint ([#2503](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/2503)) -- Downgrade to `electron@8` -- Bump dependencies to latest semver - -# 1.2.0 - -- Migrate to redux toolkit -- Lazy load routes with react suspense -- Drop support for azure-pipelines and use only github actions -- Bump all deps to latest semver -- Remove `test-e2e` script from tests (blocked on release of https://github.com/DevExpress/testcafe-browser-provider-electron/pull/65) -- Swap `typed-css-modules-webpack-plugin` for `typings-for-css-modules-loader` -- Use latest version of `eslint-config-erb` -- Remove unnecessary file extensions from ts exclude -- Add experimental support for vscode debugging -- Revert https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/2365 as default for users, provide as opt in option - -# 1.1.0 - -- Fix #2402 -- Simplify configs (https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/2406) - -# 1.0.0 - -- Migrate to TypeScript from Flow ([#2363](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/2363)) -- Use browserslist for `@babel/preset-env` targets ([#2368](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/2368)) -- Use preload script, disable `nodeIntegration` in renderer process for [improved security](https://www.electronjs.org/docs/tutorial/security#2-do-not-enable-nodejs-integration-for-remote-content) ([#2365](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/2365)) -- Add support for azure pipelines ([#2369](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/2369)) -- Disable sourcemaps in production - -# 0.18.1 (2019.12.12) - -- Fix HMR env bug ([#2343](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/2343)) -- Bump all deps to latest semver -- Bump to `electron@7` - -# 0.18.0 (2019.11.19) - -- Bump electron to `electron@6` (`electron@7` introduces breaking changes to testcafe end to end tests) -- Revert back to [two `package.json` structure](https://www.electron.build/tutorials/two-package-structure) -- Bump all deps to latest semver - -# 0.17.1 (2018.11.20) - -- Fix `yarn test-e2e` and testcafe for single package.json structure -- Fixes incorrect path in `yarn start` script -- Bumped deps -- Bump g++ in travis -- Change clone arguments to clone only master -- Change babel config to target current electron version - -For full change list, see https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/2021 - -# 0.17.0 (2018.10.30) - -- upgraded to `babel@7` (thanks to @vikr01 🎉🎉🎉) -- migrated from [two `package.json` structure](https://www.electron.build/tutorials/two-package-structure) (thanks to @HyperSprite!) -- initial auto update support (experimental) -- migrate from greenkeeper to [renovate](https://renovatebot.com) -- added issue template -- use `babel-preset-env` to target current electron version -- add [opencollective](https://opencollective.com/electron-react-boilerplate-594) banner message display in postinstall script (help support ERB 🙏) -- fix failing ci issues - -# 0.16.0 (2018.10.3) - -- removed unused dependencies -- migrate from `react-redux-router` to `connect-react-router` -- move webpack configs to `./webpack` dir -- use `g++` on travis when testing linux -- migrate from `spectron` to `testcafe` for e2e tests -- add linting support for config styles -- changed stylelint config -- temporarily disabled flow in appveyor to make ci pass -- added necessary infra to publish releases from ci - -# 0.15.0 (2018.8.25) - -- Performance: cache webpack uglify results -- Feature: add start minimized feature -- Feature: lint and fix styles with prettier and stylelint -- Feature: add greenkeeper support - -# 0.14.0 (2018.5.24) - -- Improved CI timings -- Migrated README commands to yarn from npm -- Improved vscode config -- Updated all dependencies to latest semver -- Fix `electron-rebuild` script bug -- Migrated to `mini-css-extract-plugin` from `extract-text-plugin` -- Added `optimize-css-assets-webpack-plugin` -- Run `prettier` on json, css, scss, and more filetypes - -# 0.13.3 (2018.5.24) - -- Add git precommit hook, when git commit will use `prettier` to format git add code -- Add format code function in `lint-fix` npm script which can use `prettier` to format project js code - -# 0.13.2 (2018.1.31) - -- Hot Module Reload (HMR) fixes -- Bumped all dependencies to latest semver -- Prevent error propagation of `CheckNativeDeps` script - -# 0.13.1 (2018.1.13) - -- Hot Module Reload (HMR) fixes -- Bumped all dependencies to latest semver -- Fixed electron-rebuild script -- Fixed tests scripts to run on all platforms -- Skip redux logs in console in test ENV - -# 0.13.0 (2018.1.6) - -#### Additions - -- Add native dependencies check on postinstall -- Updated all dependencies to latest semver - -# 0.12.0 (2017.7.8) - -#### Misc - -- Removed `babel-polyfill` -- Renamed and alphabetized npm scripts - -#### Breaking - -- Changed node dev `__dirname` and `__filename` to node built in fn's (https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/1035) -- Renamed `src/bundle.js` to `src/renderer.prod.js` for consistency -- Renamed `dll/vendor.js` to `dll/renderer.dev.dll.js` for consistency - -#### Additions - -- Enable node_modules cache on CI - -# 0.11.2 (2017.5.1) - -Yay! Another patch release. This release mostly includes refactorings and router bug fixes. Huge thanks to @anthonyraymond! - -⚠️ Windows electron builds are failing because of [this issue](https://github.com/electron/electron/issues/9321). This is not an issue with the boilerplate ⚠️ - -#### Breaking - -- **Renamed `./src/main.development.js` => `./src/main.{dev,prod}.js`:** [#963](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/963) - -#### Fixes - -- **Fixed reloading when not on `/` path:** [#958](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/958) [#949](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/949) - -#### Additions - -- **Added support for stylefmt:** [#960](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/960) - -# 0.11.1 (2017.4.23) - -You can now debug the production build with devtools like so: - -``` -DEBUG_PROD=true npm run package -``` - -🎉🎉🎉 - -#### Additions - -- **Added support for debugging production build:** [#fab245a](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/941/commits/fab245a077d02a09630f74270806c0c534a4ff95) - -#### Bug Fixes - -- **Fixed bug related to importing native dependencies:** [#933](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/933) - -#### Improvements - -- **Updated all deps to latest semver** - -# 0.11.0 (2017.4.19) - -Here's the most notable changes since `v0.10.0`. Its been about a year since a release has been pushed. Expect a new release to be published every 3-4 weeks. - -#### Breaking Changes - -- **Dropped support for node < 6** -- **Refactored webpack config files** -- **Migrate to two-package.json project structure** -- **Updated all devDeps to latest semver** -- **Migrated to Jest:** [#768](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/768) -- **Migrated to `react-router@4`** -- **Migrated to `electron-builder@4`** -- **Migrated to `webpack@2`** -- **Migrated to `react-hot-loader@3`** -- **Changed default live reload server PORT to `1212` from `3000`** - -#### Additions - -- **Added support for Yarn:** [#451](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/451) -- **Added support for Flow:** [#425](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/425) -- **Added support for stylelint:** [#911](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/911) -- **Added support for electron-builder:** [#876](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/876) -- **Added optional support for SASS:** [#880](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/880) -- **Added support for eslint-plugin-flowtype:** [#911](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/911) -- **Added support for appveyor:** [#280](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/280) -- **Added support for webpack dlls:** [#860](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/860) -- **Route based code splitting:** [#884](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/884) -- **Added support for Webpack Bundle Analyzer:** [#922](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/922) - -#### Improvements - -- **Parallelize renderer and main build processes when running `npm run build`** -- **Dynamically generate electron app menu** -- **Improved vscode integration:** [#856](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/856) - -#### Bug Fixes - -- **Fixed hot module replacement race condition bug:** [#917](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/917) [#920](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/920) - -# 0.10.0 (2016.4.18) - -#### Improvements - -- **Use Babel in main process with Webpack build:** [#201](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/201) -- **Change targets to built-in support by webpack:** [#197](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/197) -- **use es2015 syntax for webpack configs:** [#195](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/195) -- **Open application when webcontent is loaded:** [#192](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/192) -- **Upgraded dependencies** - -#### Bug fixed - -- **Fix `npm list electron-prebuilt` in package.js:** [#188](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/188) - -# 0.9.0 (2016.3.23) - -#### Improvements - -- **Added [redux-logger](https://github.com/fcomb/redux-logger)** -- **Upgraded [react-router-redux](https://github.com/reactjs/react-router-redux) to v4** -- **Upgraded dependencies** -- **Added `npm run dev` command:** [#162](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/162) -- **electron to v0.37.2** - -#### Breaking Changes - -- **css module as default:** [#154](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/154). -- **set default NODE_ENV to production:** [#140](https://github.com/electron-react-boilerplate/electron-react-boilerplate/issues/140) - -# 0.8.0 (2016.2.17) - -#### Bug fixed - -- **Fix lint errors** -- **Fix Webpack publicPath for production builds**: [#119](https://github.com/electron-react-boilerplate/electron-react-boilerplate/issues/119). -- **package script now chooses correct OS icon extension** - -#### Improvements - -- **babel 6** -- **Upgrade Dependencies** -- **Enable CSS source maps** -- **Add json-loader**: [#128](https://github.com/electron-react-boilerplate/electron-react-boilerplate/issues/128). -- **react-router 2.0 and react-router-redux 3.0** - -# 0.7.1 (2015.12.27) - -#### Bug fixed - -- **Fixed npm script on windows 10:** [#103](https://github.com/electron-react-boilerplate/electron-react-boilerplate/issues/103). -- **history and react-router version bump**: [#109](https://github.com/electron-react-boilerplate/electron-react-boilerplate/issues/109), [#110](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/110). - -#### Improvements - -- **electron 0.36** - -# 0.7.0 (2015.12.16) - -#### Bug fixed - -- **Fixed process.env.NODE_ENV variable in webpack:** [#74](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/74). -- **add missing object-assign**: [#76](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/76). -- **packaging in npm@3:** [#77](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/77). -- **compatibility in windows:** [#100](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/100). -- **disable chrome debugger in production env:** [#102](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/102). - -#### Improvements - -- **redux** -- **css-modules** -- **upgrade to react-router 1.x** -- **unit tests** -- **e2e tests** -- **travis-ci** -- **upgrade to electron 0.35.x** -- **use es2015** -- **check dev engine for node and npm** - -# 0.6.5 (2015.11.7) - -#### Improvements - -- **Bump style-loader to 0.13** -- **Bump css-loader to 0.22** - -# 0.6.4 (2015.10.27) - -#### Improvements - -- **Bump electron-debug to 0.3** - -# 0.6.3 (2015.10.26) - -#### Improvements - -- **Initialize ExtractTextPlugin once:** [#64](https://github.com/electron-react-boilerplate/electron-react-boilerplate/issues/64). - -# 0.6.2 (2015.10.18) - -#### Bug fixed - -- **Babel plugins production env not be set properly:** [#57](https://github.com/electron-react-boilerplate/electron-react-boilerplate/issues/57). - -# 0.6.1 (2015.10.17) - -#### Improvements - -- **Bump electron to v0.34.0** - -# 0.6.0 (2015.10.16) - -#### Breaking Changes - -- **From react-hot-loader to react-transform** - -# 0.5.2 (2015.10.15) - -#### Improvements - -- **Run tests with babel-register:** [#29](https://github.com/electron-react-boilerplate/electron-react-boilerplate/issues/29). - -# 0.5.1 (2015.10.12) - -#### Bug fixed - -- **Fix #51:** use `path.join(__dirname` instead of `./`. - -# 0.5.0 (2015.10.11) - -#### Improvements - -- **Simplify webpack config** see [#50](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/50). - -#### Breaking Changes - -- **webpack configs** -- **port changed:** changed default port from 2992 to 3000. -- **npm scripts:** remove `start-dev` and `dev-server`. rename `hot-dev-server` to `hot-server`. - -# 0.4.3 (2015.9.22) - -#### Bug fixed - -- **Fix #45 zeromq crash:** bump version of `electron-prebuilt`. - -# 0.4.2 (2015.9.15) - -#### Bug fixed - -- **run start-hot breaks chrome refresh(CTRL+R) (#42)**: bump `electron-debug` to `0.2.1` - -# 0.4.1 (2015.9.11) - -#### Improvements - -- **use electron-prebuilt version for packaging (#33)** - -# 0.4.0 (2015.9.5) - -#### Improvements - -- **update dependencies** - -# 0.3.0 (2015.8.31) - -#### Improvements - -- **eslint-config-airbnb** - -# 0.2.10 (2015.8.27) - -#### Features - -- **custom placeholder icon** - -#### Improvements - -- **electron-renderer as target:** via [webpack-target-electron-renderer](https://github.com/chentsulin/webpack-target-electron-renderer) - -# 0.2.9 (2015.8.18) - -#### Bug fixed - -- **Fix hot-reload** - -# 0.2.8 (2015.8.13) - -#### Improvements - -- **bump electron-debug** -- **babelrc** -- **organize webpack scripts** - -# 0.2.7 (2015.7.9) - -#### Bug fixed - -- **defaultProps:** fix typos. - -# 0.2.6 (2015.7.3) - -#### Features - -- **menu** - -#### Bug fixed - -- **package.js:** include webpack build. - -# 0.2.5 (2015.7.1) - -#### Features - -- **NPM Script:** support multi-platform -- **package:** `--all` option - -# 0.2.4 (2015.6.9) - -#### Bug fixed - -- **Eslint:** typo, [#17](https://github.com/electron-react-boilerplate/electron-react-boilerplate/issues/17) and improve `.eslintrc` - -# 0.2.3 (2015.6.3) - -#### Features - -- **Package Version:** use latest release electron version as default -- **Ignore Large peerDependencies** - -#### Bug fixed - -- **Npm Script:** typo, [#6](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/6) -- **Missing css:** [#7](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/7) - -# 0.2.2 (2015.6.2) - -#### Features - -- **electron-debug** - -#### Bug fixed - -- **Webpack:** add `.json` and `.node` to extensions for imitating node require. -- **Webpack:** set `node_modules` to externals for native module support. - -# 0.2.1 (2015.5.30) - -#### Bug fixed - -- **Webpack:** #1, change build target to `atom`. - -# 0.2.0 (2015.5.30) - -#### Features - -- **Ignore:** `test`, `tools`, `release` folder and devDependencies in `package.json`. -- **Support asar** -- **Support icon** - -# 0.1.0 (2015.5.27) - -#### Features - -- **Webpack:** babel, react-hot, ... -- **Flux:** actions, api, components, containers, stores.. -- **Package:** darwin (osx), linux and win32 (windows) platform. diff --git a/apps/electron/CODE_OF_CONDUCT.md b/apps/electron/CODE_OF_CONDUCT.md deleted file mode 100644 index 2562267e3..000000000 --- a/apps/electron/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,76 +0,0 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our project and -our community a harassment-free experience for everyone, regardless of age, body -size, disability, ethnicity, sex characteristics, gender identity and expression, -level of experience, education, socio-economic status, nationality, personal -appearance, race, religion, or sexual identity and orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment -include: - -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery and unwelcome sexual attention or - advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic - address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable -behavior and are expected to take appropriate and fair corrective action in -response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or -reject comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to this Code of Conduct, or to ban temporarily or -permanently any contributor for other behaviors that they deem inappropriate, -threatening, offensive, or harmful. - -## Scope - -This Code of Conduct applies both within project spaces and in public spaces -when an individual is representing the project or its community. Examples of -representing a project or community include using an official project e-mail -address, posting via an official social media account, or acting as an appointed -representative at an online or offline event. Representation of a project may be -further defined and clarified by project maintainers. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by contacting the project team at electronreactboilerplate@gmail.com. All -complaints will be reviewed and investigated and will result in a response that -is deemed necessary and appropriate to the circumstances. The project team is -obligated to maintain confidentiality with regard to the reporter of an incident. -Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good -faith may face temporary or permanent repercussions as determined by other -members of the project's leadership. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, -available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html - -[homepage]: https://www.contributor-covenant.org - -For answers to common questions about this code of conduct, see -https://www.contributor-covenant.org/faq diff --git a/apps/electron/LICENSE b/apps/electron/LICENSE deleted file mode 100644 index c2885de68..000000000 --- a/apps/electron/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015-present Electron React Boilerplate - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/apps/electron/README.md b/apps/electron/README.md deleted file mode 100644 index 116921db8..000000000 --- a/apps/electron/README.md +++ /dev/null @@ -1,159 +0,0 @@ - - -
    - -
    - -
    - -
    - -[![Build Status][github-actions-status]][github-actions-url] -[![Github Tag][github-tag-image]][github-tag-url] -[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/Fjy3vfgy5q) - -[![OpenCollective](https://opencollective.com/electron-react-boilerplate-594/backers/badge.svg)](#backers) -[![OpenCollective](https://opencollective.com/electron-react-boilerplate-594/sponsors/badge.svg)](#sponsors) -[![StackOverflow][stackoverflow-img]][stackoverflow-url] - -
    - -## Install - -Clone the repo and install dependencies: - -```bash -git clone --depth 1 --branch main https://github.com/electron-react-boilerplate/electron-react-boilerplate.git your-project-name -cd your-project-name -npm install -``` - -**Having issues installing? See our [debugging guide](https://github.com/electron-react-boilerplate/electron-react-boilerplate/issues/400)** - -## Starting Development - -Start the app in the `dev` environment: - -```bash -npm start -``` - -## Packaging for Production - -To package apps for the local platform: - -```bash -npm run package -``` - -## Docs - -See our [docs and guides here](https://electron-react-boilerplate.js.org/docs/installation) - -## Community - -Join our Discord: https://discord.gg/Fjy3vfgy5q - -## Sponsors - - - - - -## Donations - -**Donations will ensure the following:** - -- 🔨 Long term maintenance of the project -- 🛣 Progress on the [roadmap](https://electron-react-boilerplate.js.org/docs/roadmap) -- 🐛 Quick responses to bug reports and help requests - -## Backers - -Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/electron-react-boilerplate-594#backer)] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -## Sponsors - -Become a sponsor and get your logo on our README on Github with a link to your site. [[Become a sponsor](https://opencollective.com/electron-react-boilerplate-594-594#sponsor)] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -## Maintainers - -- [Amila Welihinda](https://github.com/amilajack) -- [John Tran](https://github.com/jooohhn) -- [C. T. Lin](https://github.com/chentsulin) -- [Jhen-Jie Hong](https://github.com/jhen0409) - -## License - -MIT © [Electron React Boilerplate](https://github.com/electron-react-boilerplate) - -[github-actions-status]: https://github.com/electron-react-boilerplate/electron-react-boilerplate/workflows/Test/badge.svg -[github-actions-url]: https://github.com/electron-react-boilerplate/electron-react-boilerplate/actions -[github-tag-image]: https://img.shields.io/github/tag/electron-react-boilerplate/electron-react-boilerplate.svg?label=version -[github-tag-url]: https://github.com/electron-react-boilerplate/electron-react-boilerplate/releases/latest -[stackoverflow-img]: https://img.shields.io/badge/stackoverflow-electron_react_boilerplate-blue.svg -[stackoverflow-url]: https://stackoverflow.com/questions/tagged/electron-react-boilerplate diff --git a/apps/electron/package.json b/apps/electron/package.json index 388e79ca1..38c19f8fb 100644 --- a/apps/electron/package.json +++ b/apps/electron/package.json @@ -44,6 +44,7 @@ "postinstall": "ts-node .erb/scripts/check-native-dep.js && electron-builder install-app-deps && npm run build:dll", "lint": "cross-env NODE_ENV=development eslint . --ext .js,.jsx,.ts,.tsx", "package": "ts-node ./.erb/scripts/clean.js dist && npm run build && electron-builder build --publish never && npm run build:dll", + "package:all": "ts-node ./.erb/scripts/clean.js dist && npm run build && electron-builder build --linux --mac --win --publish never && npm run build:dll", "rebuild": "electron-rebuild --parallel --types prod,dev,optional --module-dir release/app", "dev": "npm run start", "start": "ts-node ./.erb/scripts/check-port-in-use.js && npm run start:renderer", From 598cb7d3fc7a5a9359a48414edf067b4fa70983e Mon Sep 17 00:00:00 2001 From: Bart Date: Wed, 1 Nov 2023 13:55:36 +0100 Subject: [PATCH 085/100] synchronize snapshot index after configuring --- apps/electron/src/services/flowser-app.service.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/electron/src/services/flowser-app.service.ts b/apps/electron/src/services/flowser-app.service.ts index 90c9d20d2..a3fc45a5a 100644 --- a/apps/electron/src/services/flowser-app.service.ts +++ b/apps/electron/src/services/flowser-app.service.ts @@ -248,7 +248,6 @@ export class FlowserAppService { this.flowSnapshotsStorageService.setFileName( `flowser-snapshots-${workspaceId}.json` ); - await this.flowSnapshotsService.synchronizeIndex(); this.walletStorageService.setFileName(`flowser-wallet-${workspaceId}.json`); await this.walletService.synchronizeIndex(); @@ -263,6 +262,8 @@ export class FlowserAppService { this.flowEmulatorService.getDefaultConfig().adminServerPort, }); } + + await this.flowSnapshotsService.synchronizeIndex(); } private async onWorkspaceClose() { From 77f6f0295191ed82427fa7ee83b15f5443471f90 Mon Sep 17 00:00:00 2001 From: Bart Date: Wed, 1 Nov 2023 13:55:53 +0100 Subject: [PATCH 086/100] update electron builder config --- apps/electron/electron-builder.yml | 19 +++++++++++---- apps/electron/package.json | 37 +++++++++++------------------- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/apps/electron/electron-builder.yml b/apps/electron/electron-builder.yml index 2d375dcb5..6335a3b14 100644 --- a/apps/electron/electron-builder.yml +++ b/apps/electron/electron-builder.yml @@ -43,16 +43,25 @@ nsis: win: target: - - nsis - - zip + - target: nsis + arch: + - arm64 + - x64 + - target: zip + arch: + - arm64 + - x64 artifactName: flowser-${version}-${os}-${arch}.${ext} + icon: generated-icons/icons/win/icon.ico linux: target: - - AppImage - - deb + - target: deb + arch: + - arm64 + - x64 category: Development - icon: generated-icons/png/ + icon: generated-icons/icons/png/ artifactName: flowser-${version}-${os}-${arch}.${ext} directories: diff --git a/apps/electron/package.json b/apps/electron/package.json index 38c19f8fb..97120a139 100644 --- a/apps/electron/package.json +++ b/apps/electron/package.json @@ -1,39 +1,30 @@ { "name": "@onflowser/electron", - "version": "3.0.0", + "version": "3.0.1", "description": "Supercharged development on Flow blockchain ⚡", "keywords": [ - "electron", - "boilerplate", - "react", - "typescript", - "ts", - "sass", - "webpack", - "hot", - "reload" + "flow-blockchain", + "blockchain", + "developer-tools", + "blockchain-explorer", + "block-explorer", + "onflow", + "tools" ], - "homepage": "https://github.com/electron-react-boilerplate/electron-react-boilerplate#readme", + "homepage": "https://flowser.dev", "bugs": { - "url": "https://github.com/electron-react-boilerplate/electron-react-boilerplate/issues" + "url": "https://github.com/onflowser/flowser/issues" }, "repository": { "type": "git", - "url": "git+https://github.com/electron-react-boilerplate/electron-react-boilerplate.git" + "url": "git+https://github.com/onflowser/flowser.git" }, "license": "MIT", "author": { - "name": "Electron React Boilerplate Maintainers", - "email": "electronreactboilerplate@gmail.com", - "url": "https://electron-react-boilerplate.js.org" + "name": "Flowser", + "email": "bart@flowser.dev", + "url": "https://flowser.dev" }, - "contributors": [ - { - "name": "Amila Welihinda", - "email": "amilajack@gmail.com", - "url": "https://github.com/amilajack" - } - ], "main": "./src/main/main.ts", "scripts": { "generate-icons": "../../node_modules/.bin/electron-icon-maker --input=./assets/icon.png --output=./generated-icons", From 1a45dccbfdd7249ecf3844b95ea3fb97245e5411 Mon Sep 17 00:00:00 2001 From: Bart Date: Thu, 2 Nov 2023 09:52:49 +0100 Subject: [PATCH 087/100] update github actions --- .github/workflows/publish.yml | 23 ++++++------ .github/workflows/test.yml | 34 ------------------ .../src/services/flowser-app.service.ts | 1 - package.json | 5 +-- packages/core/package.json | 1 - packages/nodejs/package.json | 1 + packages/ui/package.json | 4 +-- packages/ui/vite.config.js | 36 ------------------- turbo.json | 2 +- 9 files changed, 16 insertions(+), 91 deletions(-) delete mode 100644 .github/workflows/test.yml delete mode 100644 packages/ui/vite.config.js diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 5f3f8d85d..d69ea902f 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -1,21 +1,17 @@ name: Publish on: - push: - branches: - - main + release: + types: + - created jobs: publish: - # To enable auto publishing to github, update your electron publisher - # config in package.json > "build" and remove the conditional below - if: ${{ github.repository_owner == 'electron-react-boilerplate' }} - runs-on: ${{ matrix.os }} strategy: matrix: - os: [macos-latest] + os: [ macos-latest ] steps: - name: Checkout git repo @@ -27,11 +23,15 @@ jobs: node-version: 18 cache: npm + - name: Run install + uses: borales/actions-yarn@v4 + with: + cmd: install + - name: Install and build run: | - npm install - npm run postinstall - npm run build + yarn run postinstall + yarn run build - name: Publish releases env: @@ -44,3 +44,4 @@ jobs: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | npm exec electron-builder -- --publish always --win --mac --linux + working-directory: ./apps/electron diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml deleted file mode 100644 index c8ea922c4..000000000 --- a/.github/workflows/test.yml +++ /dev/null @@ -1,34 +0,0 @@ -name: Test - -on: [push, pull_request] - -jobs: - test: - runs-on: ${{ matrix.os }} - - strategy: - matrix: - os: [macos-latest, windows-latest, ubuntu-latest] - - steps: - - name: Check out Git repository - uses: actions/checkout@v3 - - - name: Install Node.js and NPM - uses: actions/setup-node@v3 - with: - node-version: 18 - cache: npm - - - name: npm install - run: | - npm install - - - name: npm test - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - npm run package - npm run lint - npm exec tsc - npm test diff --git a/apps/electron/src/services/flowser-app.service.ts b/apps/electron/src/services/flowser-app.service.ts index a3fc45a5a..5cf1781a0 100644 --- a/apps/electron/src/services/flowser-app.service.ts +++ b/apps/electron/src/services/flowser-app.service.ts @@ -57,7 +57,6 @@ export class FlowserAppService { this.flowGatewayService ); this.goBindingsService = new GoBindingsService({ - // TODO(restructure): Test if this works on windows/linux binDirPath: process.env.NODE_ENV === 'development' ? path.join(__dirname, '../../../../', 'packages', 'nodejs', 'bin') diff --git a/package.json b/package.json index 98adf1cea..0082082c9 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,7 @@ { - "name": "flowser", + "name": "@onflowser/flowser", "private": true, "description": "Easily inspect and debug Flow blockchain ⛓", - "directories": { - "doc": "docs" - }, "scripts": { "build": "turbo run build", "dev": "turbo run dev --parallel", diff --git a/packages/core/package.json b/packages/core/package.json index b0324f437..fa3add06a 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -5,7 +5,6 @@ "main": "./src/index.ts", "types": "./src/index.ts", "scripts": { - "build": "tsc", "format": "prettier . --write" }, "keywords": [], diff --git a/packages/nodejs/package.json b/packages/nodejs/package.json index cb8c08b33..dd7169387 100644 --- a/packages/nodejs/package.json +++ b/packages/nodejs/package.json @@ -6,6 +6,7 @@ "types": "./src/index.ts", "scripts": { "dev": "npm run build-bin", + "build": "npm run build-bin", "build-bin": "sh build-go-bindings.sh", "format": "prettier . --write" }, diff --git a/packages/ui/package.json b/packages/ui/package.json index 2060f5693..d5ec7d946 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -3,7 +3,6 @@ "version": "0.0.0", "types": "./src/index.ts", "scripts": { - "build": "vite build", "format": "prettier . --write" }, "devDependencies": { @@ -12,8 +11,7 @@ "@types/react-helmet": "^6.1.7", "prettier": "3.0.3", "sass": "^1.69.0", - "typescript": "^4.9.5", - "vite-plugin-svgr": "^4.1.0" + "typescript": "^4.9.5" }, "peerDependencies": { "react": "^18.2.0", diff --git a/packages/ui/vite.config.js b/packages/ui/vite.config.js deleted file mode 100644 index e1140753a..000000000 --- a/packages/ui/vite.config.js +++ /dev/null @@ -1,36 +0,0 @@ -import ViteSvgPlugin from "vite-plugin-svgr"; -import * as path from "path"; -import { defineConfig } from "vite"; - -export default defineConfig({ - plugins: [ViteSvgPlugin()], - css: { - preprocessorOptions: { - scss: { - additionalData: ` - @import "./src/styles/animations.scss"; - @import "./src/styles/colors.scss"; - @import "./src/styles/scrollbars.scss"; - @import "./src/styles/spacings.scss"; - @import "./src/styles/typography.scss"; - @import "./src/styles/rules.scss";`, - }, - }, - }, - build: { - lib: { - entry: path.resolve(__dirname, "src/index.ts"), - name: "Flowser UI", - fileName: (format) => `flowser.${format}.js`, - }, - rollupOptions: { - // Ensure to add external dependencies to avoid bundling them in your library - external: ["react", "react-router-dom"], - output: { - globals: { - react: "React", - }, - }, - }, - }, -}); diff --git a/turbo.json b/turbo.json index 7caa71247..23f489e96 100644 --- a/turbo.json +++ b/turbo.json @@ -4,7 +4,7 @@ "build": { "cache": false, "dependsOn": ["^build"], - "outputs": ["dist/**", ".next/**"] + "outputs": ["dist/**", "bin/**", ".next/**"] }, "compile": { "dependsOn": ["^build", "^compile"], From 262275b8e2acdb3d049c9209caf46c20138cf6dc Mon Sep 17 00:00:00 2001 From: Bart Date: Thu, 2 Nov 2023 10:00:21 +0100 Subject: [PATCH 088/100] setup go env in action --- .github/workflows/publish.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index d69ea902f..f5c8f2a33 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -1,9 +1,10 @@ name: Publish on: - release: + # TODO: Change back to release/created + pull_request: types: - - created + - opened jobs: publish: @@ -28,6 +29,9 @@ jobs: with: cmd: install + - name: Setup Go environment + uses: actions/setup-go@v4.1.0 + - name: Install and build run: | yarn run postinstall From b54a694d07adb97d33cc3e8df7ff539ed3791ab9 Mon Sep 17 00:00:00 2001 From: Bart Date: Thu, 2 Nov 2023 10:01:49 +0100 Subject: [PATCH 089/100] remove unneeded action --- .github/workflows/codeql-analysis.yml | 72 --------------------------- 1 file changed, 72 deletions(-) delete mode 100644 .github/workflows/codeql-analysis.yml diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml deleted file mode 100644 index 0d8b5cfe7..000000000 --- a/.github/workflows/codeql-analysis.yml +++ /dev/null @@ -1,72 +0,0 @@ -# For most projects, this workflow file will not need changing; you simply need -# to commit it to your repository. -# -# You may wish to alter this file to override the set of languages analyzed, -# or to provide custom queries or build logic. -# -# ******** NOTE ******** -# We have attempted to detect the languages in your repository. Please check -# the `language` matrix defined below to confirm you have the correct set of -# supported CodeQL languages. -# -name: "CodeQL" - -on: - push: - branches: [ "main" ] - pull_request: - # The branches below must be a subset of the branches above - branches: [ "main" ] - schedule: - - cron: '44 16 * * 4' - -jobs: - analyze: - name: Analyze - runs-on: ubuntu-latest - permissions: - actions: read - contents: read - security-events: write - - strategy: - fail-fast: false - matrix: - language: [ 'javascript' ] - # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ] - # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support - - steps: - - name: Checkout repository - uses: actions/checkout@v3 - - # Initializes the CodeQL tools for scanning. - - name: Initialize CodeQL - uses: github/codeql-action/init@v2 - with: - languages: ${{ matrix.language }} - # If you wish to specify custom queries, you can do so here or in a config file. - # By default, queries listed here will override any specified in a config file. - # Prefix the list here with "+" to use these queries and those in the config file. - - # Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs - # queries: security-extended,security-and-quality - - - # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). - # If this step fails, then you should remove it and run the build manually (see below) - - name: Autobuild - uses: github/codeql-action/autobuild@v2 - - # ℹ️ Command-line programs to run using the OS shell. - # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun - - # If the Autobuild fails above, remove it and uncomment the following three lines. - # modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance. - - # - run: | - # echo "Run, Build Application using script" - # ./location_of_script_within_repo/buildscript.sh - - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v2 From aa6356b6c789f4b5028d2b769744c5454ae0d415 Mon Sep 17 00:00:00 2001 From: Bart Date: Thu, 2 Nov 2023 10:03:13 +0100 Subject: [PATCH 090/100] temp update action trigger settings --- .github/workflows/publish.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index f5c8f2a33..88e68f7a1 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -1,10 +1,12 @@ name: Publish +# TODO: Change back to release/created on: - # TODO: Change back to release/created + push: + branches: [ "main" ] pull_request: - types: - - opened + # The branches below must be a subset of the branches above + branches: [ "main" ] jobs: publish: From 93a17e922bdd1fc2786be3dcb3b4b27dd61da366 Mon Sep 17 00:00:00 2001 From: Bart Date: Thu, 2 Nov 2023 10:09:15 +0100 Subject: [PATCH 091/100] fix publish action --- .github/workflows/publish.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 88e68f7a1..a85ad2c22 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -34,9 +34,8 @@ jobs: - name: Setup Go environment uses: actions/setup-go@v4.1.0 - - name: Install and build + - name: Build run: | - yarn run postinstall yarn run build - name: Publish releases From e4ed12c8681e7181ee81f163977ecc111a479f9b Mon Sep 17 00:00:00 2001 From: Bart Date: Thu, 2 Nov 2023 10:33:07 +0100 Subject: [PATCH 092/100] fix app ID --- apps/electron/.erb/scripts/notarize.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/electron/.erb/scripts/notarize.js b/apps/electron/.erb/scripts/notarize.js index 097ff35b7..575ce936e 100644 --- a/apps/electron/.erb/scripts/notarize.js +++ b/apps/electron/.erb/scripts/notarize.js @@ -1,5 +1,4 @@ const { notarize } = require('@electron/notarize'); -const { build } = require('../../package.json'); exports.default = async function notarizeMacos(context) { const { electronPlatformName, appOutDir } = context; @@ -16,7 +15,7 @@ exports.default = async function notarizeMacos(context) { !('APPLE_ID' in process.env && 'APPLE_APP_SPECIFIC_PASSWORD' in process.env) ) { console.warn( - 'Skipping notarizing step. APPLE_ID and APPLE_APP_SPECIFIC_PASSWORD env variables must be set', + 'Skipping notarizing step. APPLE_ID and APPLE_APP_SPECIFIC_PASSWORD env variables must be set' ); return; } @@ -24,7 +23,8 @@ exports.default = async function notarizeMacos(context) { const appName = context.packager.appInfo.productFilename; await notarize({ - appBundleId: build.appId, + // Must be kept in sync with `appId` field in `electron-builder.yml` + appBundleId: 'dev.flowser.app', appPath: `${appOutDir}/${appName}.app`, appleId: process.env.APPLE_ID, appleIdPassword: process.env.APPLE_APP_SPECIFIC_PASSWORD, From f2f0c225fcf5b1a312833f12d818f2c266e8e0e7 Mon Sep 17 00:00:00 2001 From: Bart Date: Thu, 2 Nov 2023 10:41:27 +0100 Subject: [PATCH 093/100] update secret reference --- .github/workflows/publish.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index a85ad2c22..05cf3da58 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -42,11 +42,11 @@ jobs: env: # These values are used for auto updates signing APPLE_ID: ${{ secrets.APPLE_ID }} - APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_ID_PASS }} + APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }} CSC_LINK: ${{ secrets.CSC_LINK }} CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }} # This is used for uploading release assets to github - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GH_TOKEN: ${{ secrets.GH_TOKEN }} run: | npm exec electron-builder -- --publish always --win --mac --linux working-directory: ./apps/electron From d5861ca3b5693fa717b7712c0b14c6778077d4bd Mon Sep 17 00:00:00 2001 From: Bart Date: Thu, 2 Nov 2023 10:46:15 +0100 Subject: [PATCH 094/100] fix electron formatting --- .../configs/webpack.config.renderer.prod.ts | 104 +++++++++--------- apps/electron/.erb/scripts/notarize.js | 2 +- apps/electron/.eslintrc.js | 2 +- apps/electron/electron-builder.yml | 18 +-- apps/electron/package.json | 4 +- apps/electron/src/main/ipc/handlers.ts | 10 +- apps/electron/src/main/ipc/invokers.ts | 6 +- apps/electron/src/main/main.ts | 2 +- apps/electron/src/renderer/App.scss | 8 +- .../DependencyErrors.module.scss | 4 +- .../DependencyErrors/DependencyErrors.tsx | 2 +- .../components/loaders/ExitLoader.tsx | 6 +- .../components/loaders/Loader.module.scss | 8 +- .../components/loaders/UpdateLoader.tsx | 6 +- apps/electron/src/renderer/ipc-index-cache.ts | 2 +- .../src/services/analytics.service.ts | 10 +- .../src/services/app-update.service.ts | 6 +- .../src/services/fingerprint.service.ts | 2 +- .../src/services/flowser-app.service.ts | 40 +++---- yarn.lock | 11 +- 20 files changed, 124 insertions(+), 129 deletions(-) diff --git a/apps/electron/.erb/configs/webpack.config.renderer.prod.ts b/apps/electron/.erb/configs/webpack.config.renderer.prod.ts index bc2acf822..0a078389e 100644 --- a/apps/electron/.erb/configs/webpack.config.renderer.prod.ts +++ b/apps/electron/.erb/configs/webpack.config.renderer.prod.ts @@ -2,38 +2,38 @@ * Build config for electron renderer process */ -import path from "path"; -import webpack from "webpack"; -import HtmlWebpackPlugin from "html-webpack-plugin"; -import MiniCssExtractPlugin from "mini-css-extract-plugin"; -import { BundleAnalyzerPlugin } from "webpack-bundle-analyzer"; -import CssMinimizerPlugin from "css-minimizer-webpack-plugin"; -import { merge } from "webpack-merge"; -import TerserPlugin from "terser-webpack-plugin"; -import baseConfig from "./webpack.config.base"; -import webpackPaths from "./webpack.paths"; -import checkNodeEnv from "../scripts/check-node-env"; -import deleteSourceMaps from "../scripts/delete-source-maps"; +import path from 'path'; +import webpack from 'webpack'; +import HtmlWebpackPlugin from 'html-webpack-plugin'; +import MiniCssExtractPlugin from 'mini-css-extract-plugin'; +import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer'; +import CssMinimizerPlugin from 'css-minimizer-webpack-plugin'; +import { merge } from 'webpack-merge'; +import TerserPlugin from 'terser-webpack-plugin'; +import baseConfig from './webpack.config.base'; +import webpackPaths from './webpack.paths'; +import checkNodeEnv from '../scripts/check-node-env'; +import deleteSourceMaps from '../scripts/delete-source-maps'; -checkNodeEnv("production"); +checkNodeEnv('production'); deleteSourceMaps(); const configuration: webpack.Configuration = { - devtool: "source-map", + devtool: 'source-map', - mode: "production", + mode: 'production', - target: ["web", "electron-renderer"], + target: ['web', 'electron-renderer'], - entry: [path.join(webpackPaths.srcRendererPath, "index.tsx")], + entry: [path.join(webpackPaths.srcRendererPath, 'index.tsx')], output: { path: webpackPaths.distRendererPath, - publicPath: "./", - filename: "renderer.js", + publicPath: './', + filename: 'renderer.js', library: { - type: "umd" - } + type: 'umd', + }, }, module: { @@ -43,38 +43,38 @@ const configuration: webpack.Configuration = { use: [ MiniCssExtractPlugin.loader, { - loader: "css-loader", + loader: 'css-loader', options: { modules: true, sourceMap: true, - importLoaders: 1 - } + importLoaders: 1, + }, }, - "sass-loader" + 'sass-loader', ], - include: /\.module\.s?(c|a)ss$/ + include: /\.module\.s?(c|a)ss$/, }, { test: /\.s?(a|c)ss$/, - use: [MiniCssExtractPlugin.loader, "css-loader", "sass-loader"], - exclude: /\.module\.s?(c|a)ss$/ + use: [MiniCssExtractPlugin.loader, 'css-loader', 'sass-loader'], + exclude: /\.module\.s?(c|a)ss$/, }, // Fonts { test: /\.(woff|woff2|eot|ttf|otf)$/i, - type: "asset/resource" + type: 'asset/resource', }, // Images { test: /\.(png|jpg|jpeg|gif)$/i, - type: "asset/resource" + type: 'asset/resource', }, // SVG // https://react-svgr.com/docs/webpack/#use-svgr-and-asset-svg-in-the-same-project { test: /\.svg$/i, - type: "asset", - resourceQuery: /url/ // *.svg?url + type: 'asset', + resourceQuery: /url/, // *.svg?url }, { test: /\.svg$/i, @@ -83,23 +83,23 @@ const configuration: webpack.Configuration = { // https://github.com/gregberge/svgr/issues/142 use: [ { - loader: "@svgr/webpack", + loader: '@svgr/webpack', options: { // Disable SVGO, since that tool stripes viewBox attribute // and I can't figure out how to disable that. // https://react-svgr.com/docs/options/#svgo // https://github.com/gregberge/svgr/discussions/735 - svgo: false - } - } - ] - } - ] + svgo: false, + }, + }, + ], + }, + ], }, optimization: { minimize: true, - minimizer: [new TerserPlugin(), new CssMinimizerPlugin()] + minimizer: [new TerserPlugin(), new CssMinimizerPlugin()], }, plugins: [ @@ -113,35 +113,35 @@ const configuration: webpack.Configuration = { * development checks */ new webpack.EnvironmentPlugin({ - NODE_ENV: "production", - DEBUG_PROD: false + NODE_ENV: 'production', + DEBUG_PROD: false, }), new MiniCssExtractPlugin({ - filename: "style.css" + filename: 'style.css', }), new BundleAnalyzerPlugin({ - analyzerMode: process.env.ANALYZE === "true" ? "server" : "disabled", - analyzerPort: 8889 + analyzerMode: process.env.ANALYZE === 'true' ? 'server' : 'disabled', + analyzerPort: 8889, }), new HtmlWebpackPlugin({ - filename: "index.html", - template: path.join(webpackPaths.srcRendererPath, "index.ejs"), + filename: 'index.html', + template: path.join(webpackPaths.srcRendererPath, 'index.ejs'), minify: { collapseWhitespace: true, removeAttributeQuotes: true, - removeComments: true + removeComments: true, }, isBrowser: false, - isDevelopment: false + isDevelopment: false, }), new webpack.DefinePlugin({ - "process.type": "\"renderer\"" - }) - ] + 'process.type': '"renderer"', + }), + ], }; export default merge(baseConfig, configuration); diff --git a/apps/electron/.erb/scripts/notarize.js b/apps/electron/.erb/scripts/notarize.js index 575ce936e..e373e1029 100644 --- a/apps/electron/.erb/scripts/notarize.js +++ b/apps/electron/.erb/scripts/notarize.js @@ -15,7 +15,7 @@ exports.default = async function notarizeMacos(context) { !('APPLE_ID' in process.env && 'APPLE_APP_SPECIFIC_PASSWORD' in process.env) ) { console.warn( - 'Skipping notarizing step. APPLE_ID and APPLE_APP_SPECIFIC_PASSWORD env variables must be set' + 'Skipping notarizing step. APPLE_ID and APPLE_APP_SPECIFIC_PASSWORD env variables must be set', ); return; } diff --git a/apps/electron/.eslintrc.js b/apps/electron/.eslintrc.js index 14f6791e0..f1f4ddd1c 100644 --- a/apps/electron/.eslintrc.js +++ b/apps/electron/.eslintrc.js @@ -1,5 +1,5 @@ module.exports = { - extends: 'erb', + extends: ['erb', 'prettier'], plugins: ['@typescript-eslint'], rules: { // A temporary hack related to IDE not resolving correct package.json diff --git a/apps/electron/electron-builder.yml b/apps/electron/electron-builder.yml index 6335a3b14..ef52f1e44 100644 --- a/apps/electron/electron-builder.yml +++ b/apps/electron/electron-builder.yml @@ -6,7 +6,7 @@ files: - dist - node_modules - package.json -afterSign: ".erb/scripts/notarize.js" +afterSign: '.erb/scripts/notarize.js' mac: target: @@ -31,7 +31,7 @@ dmg: - x: 439 y: 358 type: link - path: "/Applications" + path: '/Applications' artifactName: flowser-${version}-${os}-${arch}.${ext} background: assets/macos-background.tiff @@ -70,15 +70,15 @@ directories: output: release/build extraResources: - - "./assets/**" + - './assets/**' # To reference files outside the electron directory we need to use the FileSet API. # See: https://github.com/electron-userland/electron-builder/issues/2693 - - from: "../../packages/nodejs/bin/flowser-internal-amd64-darwin" - to: "." - - from: "../../packages/nodejs/bin/flowser-internal-amd64-linux" - to: "." - - from: "../../packages/nodejs/bin/flowser-internal-amd64.exe" - to: "." + - from: '../../packages/nodejs/bin/flowser-internal-amd64-darwin' + to: '.' + - from: '../../packages/nodejs/bin/flowser-internal-amd64-linux' + to: '.' + - from: '../../packages/nodejs/bin/flowser-internal-amd64.exe' + to: '.' publish: provider: github diff --git a/apps/electron/package.json b/apps/electron/package.json index 97120a139..da10c4657 100644 --- a/apps/electron/package.json +++ b/apps/electron/package.json @@ -42,7 +42,8 @@ "start:main": "cross-env NODE_ENV=development electronmon -r ts-node/register/transpile-only .", "start:preload": "cross-env NODE_ENV=development TS_NODE_TRANSPILE_ONLY=true webpack --config ./.erb/configs/webpack.config.preload.dev.ts", "start:renderer": "cross-env NODE_ENV=development TS_NODE_TRANSPILE_ONLY=true webpack serve --config ./.erb/configs/webpack.config.renderer.dev.ts", - "test": "jest" + "test": "jest", + "format": "prettier . --write" }, "browserslist": [], "prettier": { @@ -143,6 +144,7 @@ "eslint": "^8.49.0", "eslint-config-airbnb-base": "^15.0.0", "eslint-config-erb": "^4.1.0-0", + "eslint-config-prettier": "^9.0.0", "eslint-import-resolver-typescript": "^3.6.0", "eslint-import-resolver-webpack": "^0.13.7", "eslint-plugin-compat": "^4.2.0", diff --git a/apps/electron/src/main/ipc/handlers.ts b/apps/electron/src/main/ipc/handlers.ts index b209f5ceb..23696499b 100644 --- a/apps/electron/src/main/ipc/handlers.ts +++ b/apps/electron/src/main/ipc/handlers.ts @@ -57,11 +57,11 @@ export function registerHandlers(appService: FlowserAppService) { workspaceService.open(id), WORKSPACES_CREATE: ( e: IpcMainInvokeEvent, - createdWorkspace: FlowserWorkspace + createdWorkspace: FlowserWorkspace, ) => workspaceService.create(createdWorkspace), WORKSPACES_UPDATE: ( e: IpcMainInvokeEvent, - updatedWorkspace: FlowserWorkspace + updatedWorkspace: FlowserWorkspace, ) => workspaceService.update(updatedWorkspace), WORKSPACES_LIST: () => workspaceService.findAll(), WORKSPACES_FIND_BY_ID: (e: IpcMainInvokeEvent, id: string) => @@ -73,7 +73,7 @@ export function registerHandlers(appService: FlowserAppService) { INDEX_GET_ALL: ( event: IpcMainInvokeEvent, - indexName: keyof BlockchainIndexes + indexName: keyof BlockchainIndexes, ) => blockchainIndexService.indexes[indexName].findAll(), INTERACTIONS_PARSE: (event: IpcMainInvokeEvent, sourceCode: string) => @@ -94,11 +94,11 @@ export function registerHandlers(appService: FlowserAppService) { FLOW_CLI_GET_INFO: () => flowCliService.getVersion(), FLOW_TRANSACTION_SEND: ( event: IpcMainInvokeEvent, - request: SendTransactionRequest + request: SendTransactionRequest, ) => walletService.sendTransaction(request), FLOW_SCRIPT_EXECUTE: ( event: IpcMainInvokeEvent, - request: ExecuteScriptRequest + request: ExecuteScriptRequest, ) => flowGatewayService.executeScript(request), WALLET_KEY_LIST: () => walletService.listKeyPairs(), diff --git a/apps/electron/src/main/ipc/invokers.ts b/apps/electron/src/main/ipc/invokers.ts index 56e9cbd02..e036b0e99 100644 --- a/apps/electron/src/main/ipc/invokers.ts +++ b/apps/electron/src/main/ipc/invokers.ts @@ -19,7 +19,7 @@ const flow: IFlowService = { ipcRenderer.invoke(FlowserIpcEvent.FLOW_ACCOUNT_GET_INDEX, address), getFlowCliInfo: () => ipcRenderer.invoke(FlowserIpcEvent.FLOW_CLI_GET_INFO), sendTransaction: ( - request: SendTransactionRequest + request: SendTransactionRequest, ): Promise<{ transactionId: string }> => ipcRenderer.invoke(FlowserIpcEvent.FLOW_TRANSACTION_SEND, request), executeScript: (request: ExecuteScriptRequest): Promise => @@ -81,7 +81,7 @@ export const electronInvokers = { ipcRenderer.on(FlowserIpcEvent.APP_EXIT, callback), handleLog: (callback: (log: string, level: string) => void) => ipcRenderer.on(FlowserIpcEvent.APP_LOG, (event, log, level) => - callback(log, level) + callback(log, level), ), handleUpdateDownloadStart: (callback: () => void) => ipcRenderer.on(FlowserIpcEvent.APP_UPDATE_START, callback), @@ -89,7 +89,7 @@ export const electronInvokers = { ipcRenderer.on(FlowserIpcEvent.APP_UPDATE_END, callback), handleUpdateDownloadProgress: (callback: (percentage: number) => void) => ipcRenderer.on(FlowserIpcEvent.APP_UPDATE_PROGRESS, (event, value) => - callback(value as unknown as number) + callback(value as unknown as number), ), }, interactions, diff --git a/apps/electron/src/main/main.ts b/apps/electron/src/main/main.ts index f5432957d..b005e93bf 100644 --- a/apps/electron/src/main/main.ts +++ b/apps/electron/src/main/main.ts @@ -54,7 +54,7 @@ const installExtensions = async () => { return installer .default( extensions.map((name) => installer[name]), - forceDownload + forceDownload, ) .catch(console.log); }; diff --git a/apps/electron/src/renderer/App.scss b/apps/electron/src/renderer/App.scss index be39d2fac..7e7826f30 100644 --- a/apps/electron/src/renderer/App.scss +++ b/apps/electron/src/renderer/App.scss @@ -1,5 +1,5 @@ -@import "../../../../packages/ui/src/styles/colors"; -@import "../../../../packages/ui/src/styles/typography"; +@import '../../../../packages/ui/src/styles/colors'; +@import '../../../../packages/ui/src/styles/typography'; @font-face { font-family: 'Inter'; @@ -7,7 +7,9 @@ font-weight: 400; /* Path to font must start without "/" prefix, otherwise it won't work on Windows. */ src: url(../../assets/Inter.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, + U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, + U+2193, U+2212, U+2215, U+FEFF, U+FFFD; } * { diff --git a/apps/electron/src/renderer/components/DependencyErrors/DependencyErrors.module.scss b/apps/electron/src/renderer/components/DependencyErrors/DependencyErrors.module.scss index 378725030..f8e215c6c 100644 --- a/apps/electron/src/renderer/components/DependencyErrors/DependencyErrors.module.scss +++ b/apps/electron/src/renderer/components/DependencyErrors/DependencyErrors.module.scss @@ -1,5 +1,5 @@ -@import "../../../../../../packages/ui/src/styles/typography"; -@import "../../../../../../packages/ui/src/styles/spacings"; +@import '../../../../../../packages/ui/src/styles/typography'; +@import '../../../../../../packages/ui/src/styles/spacings'; .missingRequirementItem { .title { diff --git a/apps/electron/src/renderer/components/DependencyErrors/DependencyErrors.tsx b/apps/electron/src/renderer/components/DependencyErrors/DependencyErrors.tsx index d4a849aa4..f7cab4a80 100644 --- a/apps/electron/src/renderer/components/DependencyErrors/DependencyErrors.tsx +++ b/apps/electron/src/renderer/components/DependencyErrors/DependencyErrors.tsx @@ -30,7 +30,7 @@ export function DependencyErrors(): ReactElement | null { function useGetDependencyErrors(): SWRResponse { return useSWR(`dependency-errors`, () => - window.electron.app.listDependencyErrors() + window.electron.app.listDependencyErrors(), ); } diff --git a/apps/electron/src/renderer/components/loaders/ExitLoader.tsx b/apps/electron/src/renderer/components/loaders/ExitLoader.tsx index 24ee446dc..1c0fea1ad 100644 --- a/apps/electron/src/renderer/components/loaders/ExitLoader.tsx +++ b/apps/electron/src/renderer/components/loaders/ExitLoader.tsx @@ -1,6 +1,6 @@ -import { Spinner } from "../../../../../../packages/ui/src/common/loaders/Spinner/Spinner"; -import React, { ReactElement } from "react"; -import classes from "./Loader.module.scss"; +import { Spinner } from '../../../../../../packages/ui/src/common/loaders/Spinner/Spinner'; +import React, { ReactElement } from 'react'; +import classes from './Loader.module.scss'; export function ExitLoader(): ReactElement { return ( diff --git a/apps/electron/src/renderer/components/loaders/Loader.module.scss b/apps/electron/src/renderer/components/loaders/Loader.module.scss index f95671c6a..76c9045f5 100644 --- a/apps/electron/src/renderer/components/loaders/Loader.module.scss +++ b/apps/electron/src/renderer/components/loaders/Loader.module.scss @@ -1,7 +1,7 @@ -@import "../../../../../../packages/ui/src/styles/colors"; -@import "../../../../../../packages/ui/src/styles/spacings"; +@import '../../../../../../packages/ui/src/styles/colors'; +@import '../../../../../../packages/ui/src/styles/spacings'; @import '../../../../../../packages/ui/src/styles/animations'; -@import "../../../../../../packages/ui/src/styles/typography"; +@import '../../../../../../packages/ui/src/styles/typography'; .background { @include fadeInAnimation(0.4s); @@ -29,7 +29,7 @@ z-index: 100; .loader { - @include pulse(1s) + @include pulse(1s); } .title { diff --git a/apps/electron/src/renderer/components/loaders/UpdateLoader.tsx b/apps/electron/src/renderer/components/loaders/UpdateLoader.tsx index 44fa11238..dad550ed7 100644 --- a/apps/electron/src/renderer/components/loaders/UpdateLoader.tsx +++ b/apps/electron/src/renderer/components/loaders/UpdateLoader.tsx @@ -1,6 +1,6 @@ -import { Spinner } from "../../../../../../packages/ui/src/common/loaders/Spinner/Spinner"; -import React, { ReactElement } from "react"; -import classes from "./Loader.module.scss"; +import { Spinner } from '../../../../../../packages/ui/src/common/loaders/Spinner/Spinner'; +import React, { ReactElement } from 'react'; +import classes from './Loader.module.scss'; export type UpdateLoaderProps = { loadingPercentage: number; diff --git a/apps/electron/src/renderer/ipc-index-cache.ts b/apps/electron/src/renderer/ipc-index-cache.ts index 741d6133c..abd23b953 100644 --- a/apps/electron/src/renderer/ipc-index-cache.ts +++ b/apps/electron/src/renderer/ipc-index-cache.ts @@ -27,7 +27,7 @@ export class IpcIndexCache async findAll(): Promise { return this.cachedResources.sort( - (a, b) => b.createdAt.getTime() - a.createdAt.getTime() + (a, b) => b.createdAt.getTime() - a.createdAt.getTime(), ); } diff --git a/apps/electron/src/services/analytics.service.ts b/apps/electron/src/services/analytics.service.ts index 952112fa3..1344f227e 100644 --- a/apps/electron/src/services/analytics.service.ts +++ b/apps/electron/src/services/analytics.service.ts @@ -1,7 +1,7 @@ import mixpanel, { Dict } from 'mixpanel-browser'; import { FingerprintService } from './fingerprint.service'; -const enableAnalytics = process.env.NODE_ENV === "production"; +const enableAnalytics = process.env.NODE_ENV === 'production'; export class AnalyticsService { private fingerprintService: FingerprintService; @@ -11,14 +11,14 @@ export class AnalyticsService { this.init(); } async init(): Promise { - mixpanel.init("1b358339dc3d7476217983016b83fcab", { + mixpanel.init('1b358339dc3d7476217983016b83fcab', { debug: !enableAnalytics, }); try { mixpanel.identify(await this.fingerprintService.getUserFingerprintId()); } catch (e) { - console.error("Failed to identify user", e); + console.error('Failed to identify user', e); } } @@ -32,14 +32,14 @@ export class AnalyticsService { track(event: string, properties: Dict = {}): void { if (!enableAnalytics) { - console.log("Analytics disabled. Skipping event ", event); + console.log('Analytics disabled. Skipping event ', event); return; } try { mixpanel.track(event, properties); } catch (e) { - console.error("Mixpanel error:", e); + console.error('Mixpanel error:', e); } } } diff --git a/apps/electron/src/services/app-update.service.ts b/apps/electron/src/services/app-update.service.ts index 3a7f87cd6..d0c3166cf 100644 --- a/apps/electron/src/services/app-update.service.ts +++ b/apps/electron/src/services/app-update.service.ts @@ -9,7 +9,7 @@ export type RegisterListenersOptions = { export class AppUpdateService { async checkForUpdatesAndNotify( - options: RegisterListenersOptions + options: RegisterListenersOptions, ): Promise { this.registerListeners(options); await autoUpdater.checkForUpdatesAndNotify(); @@ -26,7 +26,7 @@ export class AppUpdateService { autoUpdater.on('download-progress', (progress) => { console.log(`Download speed ${progress.bytesPerSecond}`); console.log( - `Downloaded ${progress.percent}% (${progress.transferred}/${progress.total})` + `Downloaded ${progress.percent}% (${progress.transferred}/${progress.total})`, ); webContents?.send(FlowserIpcEvent.APP_UPDATE_PROGRESS, progress.percent); }); @@ -73,7 +73,7 @@ export class AppUpdateService { if (!options?.silent) { dialog.showErrorBox( 'Update error', - error == null ? 'unknown' : (error.stack || error).toString() + error == null ? 'unknown' : (error.stack || error).toString(), ); } }); diff --git a/apps/electron/src/services/fingerprint.service.ts b/apps/electron/src/services/fingerprint.service.ts index 6c02d750b..22215dac7 100644 --- a/apps/electron/src/services/fingerprint.service.ts +++ b/apps/electron/src/services/fingerprint.service.ts @@ -8,7 +8,7 @@ export class FingerprintService { const fingerprint = await FingerprintJS.load(); const { visitorId, confidence } = await fingerprint.get({ debug: false }); console.log( - `Identifying user ${visitorId} with confidence ${confidence.score}` + `Identifying user ${visitorId} with confidence ${confidence.score}`, ); return visitorId; } diff --git a/apps/electron/src/services/flowser-app.service.ts b/apps/electron/src/services/flowser-app.service.ts index 5cf1781a0..1f8cb910e 100644 --- a/apps/electron/src/services/flowser-app.service.ts +++ b/apps/electron/src/services/flowser-app.service.ts @@ -50,11 +50,11 @@ export class FlowserAppService { constructor( private readonly logger: IFlowserLogger, - private readonly window: BrowserWindow + private readonly window: BrowserWindow, ) { this.flowGatewayService = new FlowGatewayService(); this.flowAccountStorageService = new FlowAccountStorageService( - this.flowGatewayService + this.flowGatewayService, ); this.goBindingsService = new GoBindingsService({ binDirPath: @@ -63,7 +63,7 @@ export class FlowserAppService { : process.resourcesPath, }); this.flowInteractionsService = new FlowInteractionsService( - this.goBindingsService + this.goBindingsService, ); this.processManagerService = new ProcessManagerService(this.logger, { // We are manually handling shutdown before the app closes @@ -71,15 +71,15 @@ export class FlowserAppService { }); this.flowCliService = new FlowCliService(this.processManagerService); this.flowEmulatorService = new FlowEmulatorService( - this.processManagerService + this.processManagerService, ); this.flowSnapshotsStorageService = new FileStorageService(); this.flowSnapshotsService = new FlowSnapshotsService( - this.flowSnapshotsStorageService + this.flowSnapshotsStorageService, ); this.workspaceService = new WorkspaceService( this.flowEmulatorService, - new FileStorageService('flowser-workspaces.json') + new FileStorageService('flowser-workspaces.json'), ); this.blockchainIndexService = new BlockchainIndexService(); this.flowIndexerService = new FlowIndexerService( @@ -93,17 +93,17 @@ export class FlowserAppService { this.blockchainIndexService.indexes.accountStorage, this.flowAccountStorageService, this.flowGatewayService, - this.flowInteractionsService + this.flowInteractionsService, ); this.flowConfigService = new FlowConfigService(this.logger); this.walletStorageService = new FileStorageService(); this.walletService = new WalletService( this.flowCliService, this.flowGatewayService, - this.walletStorageService + this.walletStorageService, ); this.dependencyManagerService = new DependencyManagerService( - this.flowCliService + this.flowCliService, ); this.processingScheduler = new AsyncIntervalScheduler({ name: 'Blockchain processing', @@ -156,7 +156,7 @@ export class FlowserAppService { // Our react-router instance is configured to use hash-based navigation: // https://reactrouter.com/en/main/routers/create-hash-router. await this.window.loadURL( - `${resolveHtmlPath('index.html')}#/projects/${id}` + `${resolveHtmlPath('index.html')}#/projects/${id}`, ); } } @@ -166,35 +166,35 @@ export class FlowserAppService { WorkspaceEvent.WORKSPACE_OPEN, this.handleListenerError( this.onWorkspaceOpen.bind(this), - 'Failed to open workspace' - ).bind(this) + 'Failed to open workspace', + ).bind(this), ); this.workspaceService.on( WorkspaceEvent.WORKSPACE_CLOSE, this.handleListenerError( this.onWorkspaceClose.bind(this), - 'Failed to close workspace' - ).bind(this) + 'Failed to close workspace', + ).bind(this), ); this.flowSnapshotsService.on( FlowSnapshotsEvent.ROLLBACK_TO_HEIGHT, this.handleListenerError( this.onRollbackToBlockHeight.bind(this), - 'Failed to rollback to height' - ).bind(this) + 'Failed to rollback to height', + ).bind(this), ); this.flowSnapshotsService.on( FlowSnapshotsEvent.JUMP_TO, this.handleListenerError( this.onRollbackToBlockHeight.bind(this), - 'Failed to jump to snapshot' - ).bind(this) + 'Failed to jump to snapshot', + ).bind(this), ); } private handleListenerError( listener: (...args: any[]) => Promise, - errorMessage: string + errorMessage: string, ) { return async (...args: unknown[]) => { try { @@ -245,7 +245,7 @@ export class FlowserAppService { // Separately store of each workspaces' data. this.flowSnapshotsStorageService.setFileName( - `flowser-snapshots-${workspaceId}.json` + `flowser-snapshots-${workspaceId}.json`, ); this.walletStorageService.setFileName(`flowser-wallet-${workspaceId}.json`); diff --git a/yarn.lock b/yarn.lock index a5f053b64..660acaca9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2180,7 +2180,7 @@ node-abort-controller "^3.0.1" "@onflowser/electron@file:/Users/bartkozorog/Projects/flowser/apps/electron": - version "3.0.0" + version "3.0.1" resolved "file:apps/electron" dependencies: "@fingerprintjs/fingerprintjs" "^4.1.0" @@ -12440,15 +12440,6 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -vite-plugin-svgr@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/vite-plugin-svgr/-/vite-plugin-svgr-4.1.0.tgz" - integrity sha512-v7Qic+FWmCChgQNGSI4V8X63OEYsdUoLt66iqIcHozq9bfK/Dwmr0V+LBy1NE8CE98Y8HouEBJ+pto4AMfN5xw== - dependencies: - "@rollup/pluginutils" "^5.0.4" - "@svgr/core" "^8.1.0" - "@svgr/plugin-jsx" "^8.1.0" - w3c-keyname@^2.2.4: version "2.2.8" resolved "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz" From cff992f834cf1dbddea52a87b8b8ef513c4b9faf Mon Sep 17 00:00:00 2001 From: Bart Date: Thu, 2 Nov 2023 10:48:47 +0100 Subject: [PATCH 095/100] set teamId --- apps/electron/.erb/scripts/notarize.js | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/electron/.erb/scripts/notarize.js b/apps/electron/.erb/scripts/notarize.js index e373e1029..c91a1469c 100644 --- a/apps/electron/.erb/scripts/notarize.js +++ b/apps/electron/.erb/scripts/notarize.js @@ -26,6 +26,7 @@ exports.default = async function notarizeMacos(context) { // Must be kept in sync with `appId` field in `electron-builder.yml` appBundleId: 'dev.flowser.app', appPath: `${appOutDir}/${appName}.app`, + teamId: 'A425JF6L5H', appleId: process.env.APPLE_ID, appleIdPassword: process.env.APPLE_APP_SPECIFIC_PASSWORD, }); From 6471d9f496f18bab59bbeaf95ac30a63f64ed60d Mon Sep 17 00:00:00 2001 From: Bart Date: Thu, 2 Nov 2023 11:02:03 +0100 Subject: [PATCH 096/100] different approach for checking emulator api statuses --- .../src/services/flowser-app.service.ts | 1 + packages/core/src/flow-gateway.service.ts | 8 +- packages/core/src/flow-indexer.service.ts | 113 +++++++++--------- packages/core/src/flow-snapshots.service.ts | 4 +- packages/nodejs/src/flow-emulator.service.ts | 40 +++++-- .../nodejs/src/processes/managed-process.ts | 22 ++-- packages/nodejs/src/wallet.service.ts | 30 ++--- packages/ui/src/api.ts | 50 ++++---- .../interactions/contexts/outcome.context.tsx | 8 +- 9 files changed, 149 insertions(+), 127 deletions(-) diff --git a/apps/electron/src/services/flowser-app.service.ts b/apps/electron/src/services/flowser-app.service.ts index 1f8cb910e..29ebbf8b9 100644 --- a/apps/electron/src/services/flowser-app.service.ts +++ b/apps/electron/src/services/flowser-app.service.ts @@ -72,6 +72,7 @@ export class FlowserAppService { this.flowCliService = new FlowCliService(this.processManagerService); this.flowEmulatorService = new FlowEmulatorService( this.processManagerService, + this.flowGatewayService, ); this.flowSnapshotsStorageService = new FileStorageService(); this.flowSnapshotsService = new FlowSnapshotsService( diff --git a/packages/core/src/flow-gateway.service.ts b/packages/core/src/flow-gateway.service.ts index 82b1f8cc5..9f4021d93 100644 --- a/packages/core/src/flow-gateway.service.ts +++ b/packages/core/src/flow-gateway.service.ts @@ -303,17 +303,21 @@ export class FlowGatewayService { return { ...account, balance: account.balance / Math.pow(10, 8), address }; } - public async getApiStatus(): Promise { + public async getRestApiStatus(): Promise { const restServerUrl = await fcl.config.get("accessNode.api"); if (!restServerUrl) { throw new Error("accessNode.api not configured"); } + return this.getApiStatus(restServerUrl); + } + + public async getApiStatus(url: string) { try { await axios.request({ method: "GET", - url: restServerUrl, + url, // Prevent axios from throwing on certain http response codes // https://github.com/axios/axios/issues/41 validateStatus: () => true, diff --git a/packages/core/src/flow-indexer.service.ts b/packages/core/src/flow-indexer.service.ts index cda81e4a6..1b7c0fc8c 100644 --- a/packages/core/src/flow-indexer.service.ts +++ b/packages/core/src/flow-indexer.service.ts @@ -48,11 +48,11 @@ export class FlowIndexerService { private accountStorageIndex: IResourceIndex, private flowStorageService: FlowAccountStorageService, private flowGatewayService: FlowGatewayService, - private flowInteractionsService: IFlowInteractions + private flowInteractionsService: IFlowInteractions, ) {} async processBlockchainData(): Promise { - const gatewayStatus = await this.flowGatewayService.getApiStatus(); + const gatewayStatus = await this.flowGatewayService.getRestApiStatus(); if (gatewayStatus !== FlowApiStatus.SERVICE_STATUS_ONLINE) { this.logger.debug("Gateway offline, pausing processing."); @@ -125,7 +125,7 @@ export class FlowIndexerService { try { blockData.transactions.map((transaction) => - this.subscribeToTransactionStatusUpdates(transaction.id) + this.subscribeToTransactionStatusUpdates(transaction.id), ); } catch (e) { this.logger.error("Transaction status update failed", e); @@ -133,7 +133,7 @@ export class FlowIndexerService { } private async subscribeToTransactionStatusUpdates( - transactionId: string + transactionId: string, ): Promise { const unsubscribe = this.flowGatewayService .getTxStatusSubscription(transactionId) @@ -145,7 +145,7 @@ export class FlowIndexerService { grcpStatus: this.reMapGrcpStatus(newStatus.statusCode), executionStatus: newStatus.status, }, - }) + }), ); try { await this.flowGatewayService @@ -170,18 +170,18 @@ export class FlowIndexerService { transaction: transaction, transactionStatus: transaction.status, }).catch((e: any) => - this.logger.error(`transaction save error: ${e.message}`, e.stack) - ) - ) + this.logger.error(`transaction save error: ${e.message}`, e.stack), + ), + ), ); const eventPromises = Promise.all( data.events.map((flowEvent) => this.eventIndex .create(this.createEventEntity(flowEvent)) .catch((e: any) => - this.logger.error(`event save error: ${e.message}`, e.stack) - ) - ) + this.logger.error(`event save error: ${e.message}`, e.stack), + ), + ), ); const eventProcessingPromises = Promise.all( @@ -189,10 +189,10 @@ export class FlowIndexerService { this.processEvent(event).catch((e) => { this.logger.error( `Event handling error: ${e.message} (${JSON.stringify(event)})`, - e.stack + e.stack, ); - }) - ) + }), + ), ); return Promise.all([ @@ -207,8 +207,8 @@ export class FlowIndexerService { const block = await this.flowGatewayService.getBlockByHeight(height); const collections = await Promise.all( block.collectionGuarantees.map(async (guarantee) => - this.flowGatewayService.getCollectionById(guarantee.collectionId) - ) + this.flowGatewayService.getCollectionById(guarantee.collectionId), + ), ); const transactionIds = collections .map((collection) => collection.transactionIds) @@ -216,13 +216,13 @@ export class FlowIndexerService { const transactionFutures = Promise.all( transactionIds.map((txId) => - this.flowGatewayService.getTransactionById(txId) - ) + this.flowGatewayService.getTransactionById(txId), + ), ); const transactionStatusesFutures = Promise.all( transactionIds.map((txId) => - this.flowGatewayService.getTransactionStatusById(txId) - ) + this.flowGatewayService.getTransactionStatusById(txId), + ), ); const [transactions, statuses] = await Promise.all([ @@ -241,7 +241,7 @@ export class FlowIndexerService { ...event, transactionId: tx.id, blockId: tx.referenceBlockId, - })) + })), ) .flat(); @@ -296,47 +296,47 @@ export class FlowIndexerService { private async onAccountContractAdded(event: FlowAccountContractEvent) { const account = await this.flowGatewayService.getAccount( - event.data.address + event.data.address, ); await this.contractIndex.create( this.createContractEntity({ account, name: event.data.contract, - }) + }), ); } private async onAccountContractUpdated(event: FlowAccountContractEvent) { const account = await this.flowGatewayService.getAccount( - event.data.address + event.data.address, ); await this.contractIndex.update( this.createContractEntity({ account, name: event.data.contract, - }) + }), ); } private async onAccountContractRemoved(event: FlowAccountContractEvent) { const account = await this.flowGatewayService.getAccount( - event.data.address + event.data.address, ); await this.contractIndex.delete( this.createContractEntity({ account, name: event.data.contract, - }) + }), ); } private async onAccountKeyAddedEvent(event: FlowAccountKeyEvent) { const publicKey = this.decodeUint8PublicKey(event.data.publicKey.publicKey); const account = await this.flowGatewayService.getAccount( - event.data.address + event.data.address, ); const key = account.keys.find((key) => key.publicKey === publicKey); @@ -348,7 +348,7 @@ export class FlowIndexerService { this.createKeyEntity({ key, address: account.address, - }) + }), ); } @@ -371,15 +371,15 @@ export class FlowIndexerService { transactionStatus: flowResource.FlowTransactionStatus; }) { const parsedInteraction = await this.flowInteractionsService.parse( - options.transaction.script + options.transaction.script, ); if (parsedInteraction.error) { this.logger.error( - `Unexpected interaction parsing error: ${parsedInteraction.error}` + `Unexpected interaction parsing error: ${parsedInteraction.error}`, ); } return this.transactionIndex.create( - this.createTransactionEntity({ ...options, parsedInteraction }) + this.createTransactionEntity({ ...options, parsedInteraction }), ); } @@ -403,9 +403,9 @@ export class FlowIndexerService { this.createKeyEntity({ address, key, - }) - ) - ) + }), + ), + ), ), Promise.all( Object.keys(account.contracts).map((name) => @@ -413,9 +413,9 @@ export class FlowIndexerService { this.createContractEntity({ account, name, - }) - ) - ) + }), + ), + ), ), ]); } @@ -425,21 +425,20 @@ export class FlowIndexerService { this.logger.debug( `Processing storages for accounts: ${allAccounts .map((e) => e.address) - .join(", ")}` + .join(", ")}`, ); await Promise.all( allAccounts.map((account: flowserResource.FlowAccount) => - this.reIndexAccountStorage(account.address) - ) + this.reIndexAccountStorage(account.address), + ), ); } private async reIndexAccountStorage(address: string) { - const storages = await this.flowStorageService.getAccountStorageItems( - address - ); + const storages = + await this.flowStorageService.getAccountStorageItems(address); return Promise.all( - storages.map((storage) => this.accountStorageIndex.upsert(storage)) + storages.map((storage) => this.accountStorageIndex.upsert(storage)), ); } @@ -447,14 +446,14 @@ export class FlowIndexerService { await Promise.all( this.getAllWellKnownAddresses() .filter( - (address) => this.accountIndex.findOneById(address) !== undefined + (address) => this.accountIndex.findOneById(address) !== undefined, ) .map((address) => this.createAccount(address).catch((error) => { // Most likely an account not found error monotonic/non-monotonic addresses. // Can be safely ignored. - }) - ) + }), + ), ); } @@ -488,7 +487,7 @@ export class FlowIndexerService { } private createAccountEntity( - account: flowResource.FlowAccount + account: flowResource.FlowAccount, ): OmitTimestamps { const address = ensurePrefixedAddress(account.address); @@ -564,7 +563,7 @@ export class FlowIndexerService { } private createEventEntity( - event: flowResource.FlowEvent + event: flowResource.FlowEvent, ): OmitTimestamps { return { id: `${event.transactionId}.${event.eventIndex}`, @@ -623,7 +622,7 @@ export class FlowIndexerService { // But we don't need the type info since we already have // our own system of representing types with `CadenceType` message. function fromTypeAnnotatedFclArguments( - object: flowResource.FlowTypeAnnotatedValue + object: flowResource.FlowTypeAnnotatedValue, ): FclValue { const { type, value } = object; // Available type values are listed here: @@ -640,7 +639,7 @@ export class FlowIndexerService { // TODO(restructure): Double check this // @ts-ignore return value?.map((element: any) => - fromTypeAnnotatedFclArguments(element) + fromTypeAnnotatedFclArguments(element), ); case "Path": case "PublicPath": @@ -660,7 +659,7 @@ export class FlowIndexerService { referenceBlockId: transaction.referenceBlockId, gasLimit: transaction.gasLimit, authorizers: transaction.authorizers.map((address) => - ensurePrefixedAddress(address) + ensurePrefixedAddress(address), ), arguments: parsedInteraction.interaction?.parameters.map( @@ -668,17 +667,17 @@ export class FlowIndexerService { identifier: parameter.identifier, type: parameter.type, value: fromTypeAnnotatedFclArguments(transaction.args[index]), - }) + }), ) ?? [], proposalKey: { ...transaction.proposalKey, address: ensurePrefixedAddress(transaction.proposalKey.address), }, envelopeSignatures: this.deserializeSignableObjects( - transaction.envelopeSignatures + transaction.envelopeSignatures, ), payloadSignatures: this.deserializeSignableObjects( - transaction.payloadSignatures + transaction.payloadSignatures, ), status: { errorMessage: transactionStatus.errorMessage, @@ -695,7 +694,7 @@ export class FlowIndexerService { } private deserializeSignableObjects( - signableObjects: flowResource.FlowSignableObject[] + signableObjects: flowResource.FlowSignableObject[], ): flowserResource.SignableObject[] { return signableObjects.map((signable) => ({ ...signable, diff --git a/packages/core/src/flow-snapshots.service.ts b/packages/core/src/flow-snapshots.service.ts index ae1ed982e..33d401734 100644 --- a/packages/core/src/flow-snapshots.service.ts +++ b/packages/core/src/flow-snapshots.service.ts @@ -107,8 +107,8 @@ export class FlowSnapshotsService extends EventEmitter { // Ensure we exclude the ones that were deleted without using Flowser. await this.persistAll( persistedSnapshots.filter((snapshot) => - validSnapshotIdLookup.has(snapshot.id) - ) + validSnapshotIdLookup.has(snapshot.id), + ), ); } diff --git a/packages/nodejs/src/flow-emulator.service.ts b/packages/nodejs/src/flow-emulator.service.ts index 62c3ec9dd..732aab2ea 100644 --- a/packages/nodejs/src/flow-emulator.service.ts +++ b/packages/nodejs/src/flow-emulator.service.ts @@ -1,5 +1,10 @@ import { ManagedProcess } from "./processes/managed-process"; -import { isDefined, waitForMs } from "@onflowser/core"; +import { + FlowApiStatus, + FlowGatewayService, + isDefined, + waitForMs, +} from "@onflowser/core"; import { EventEmitter } from "node:events"; import { FlowEmulatorConfig, @@ -17,8 +22,12 @@ type StartEmulatorRequest = { export class FlowEmulatorService extends EventEmitter { public static readonly processId = "emulator"; private process: ManagedProcess | undefined; + private activeConfig: FlowEmulatorConfig | undefined; - constructor(private processManagerService: ProcessManagerService) { + constructor( + private processManagerService: ProcessManagerService, + private flowGatewayService: FlowGatewayService, + ) { super(); } @@ -28,6 +37,8 @@ export class FlowEmulatorService extends EventEmitter { } async start(request: StartEmulatorRequest) { + this.activeConfig = request.config; + this.process = this.processManagerService.initManagedProcess({ id: FlowEmulatorService.processId, name: "Flow emulator", @@ -77,17 +88,24 @@ export class FlowEmulatorService extends EventEmitter { // Resolves once emulator process emits "Started " logs. private async waitUntilApisStarted() { - const hasStarted = () => { - if (!this.process) { - throw new Error("Process not found"); + const hasStarted = async () => { + if (!this.activeConfig) { + throw new Error("No active config found"); } - return this.process.output.some( - (output) => - output.source === ProcessOutputSource.OUTPUT_SOURCE_STDOUT && - output.data.includes("Started") + const apiStatuses = await Promise.all([ + this.flowGatewayService.getApiStatus( + `http://localhost:${this.activeConfig.restServerPort}`, + ), + this.flowGatewayService.getApiStatus( + `http://localhost:${this.activeConfig.adminServerPort}`, + ), + ]); + + return apiStatuses.every( + (status) => status === FlowApiStatus.SERVICE_STATUS_ONLINE, ); }; - while (!hasStarted()) { + while (!(await hasStarted())) { await waitForMs(100); } } @@ -100,7 +118,7 @@ export class FlowEmulatorService extends EventEmitter { return this.process.output.find( (output) => output.source === ProcessOutputSource.OUTPUT_SOURCE_STDERR && - output.data !== "" + output.data !== "", ); }; let retries = 5; diff --git a/packages/nodejs/src/processes/managed-process.ts b/packages/nodejs/src/processes/managed-process.ts index 76b446d0d..fb97e35d7 100644 --- a/packages/nodejs/src/processes/managed-process.ts +++ b/packages/nodejs/src/processes/managed-process.ts @@ -54,7 +54,7 @@ export class ManagedProcess extends EventEmitter { constructor( private readonly logger: IFlowserLogger, - options: ManagedProcessOptions + options: ManagedProcessOptions, ) { super(); this.id = options.id ?? randomUUID(); @@ -81,8 +81,8 @@ export class ManagedProcess extends EventEmitter { this.logger.debug( `Starting ${this.name} with command: ${command.name} ${command.args?.join( - " " - )}` + " ", + )}`, ); return new Promise((resolve, reject) => { @@ -111,7 +111,7 @@ export class ManagedProcess extends EventEmitter { }); if (!isKilledSuccessfully) { this.logger.debug( - `Process ${this.name} (${this.id}) didn't shutdown given SIGINT` + `Process ${this.name} (${this.id}) didn't shutdown given SIGINT`, ); // If the SIGINT signal doesn't work, force kill with SIGINT this.childProcess.kill("SIGKILL"); @@ -123,7 +123,7 @@ export class ManagedProcess extends EventEmitter { const rejectionTimeoutSec = 6; setTimeout(() => { const timeoutError = new Error( - `Couldn't kill process ${this.id} (pid=${this.childProcess?.pid}) within ${rejectionTimeoutSec}s timeout` + `Couldn't kill process ${this.id} (pid=${this.childProcess?.pid}) within ${rejectionTimeoutSec}s timeout`, ); reject(timeoutError); }, rejectionTimeoutSec * 1000); @@ -144,21 +144,21 @@ export class ManagedProcess extends EventEmitter { }); this.childProcess.once("exit", (code, signal) => { console.debug( - `Process ${this.id} exited (code=${code}, signal=${signal})` + `Process ${this.id} exited (code=${code}, signal=${signal})`, ); this.setState( code !== null && code > 0 ? ManagedProcessState.MANAGED_PROCESS_STATE_ERROR - : ManagedProcessState.MANAGED_PROCESS_STATE_NOT_RUNNING + : ManagedProcessState.MANAGED_PROCESS_STATE_NOT_RUNNING, ); this.detachEventListeners(); }); this.childProcess.stdout.on("data", (data) => - this.handleData(ProcessOutputSource.OUTPUT_SOURCE_STDOUT, data) + this.handleData(ProcessOutputSource.OUTPUT_SOURCE_STDOUT, data), ); this.childProcess.stderr.on("data", (data) => - this.handleData(ProcessOutputSource.OUTPUT_SOURCE_STDERR, data) + this.handleData(ProcessOutputSource.OUTPUT_SOURCE_STDERR, data), ); } @@ -182,7 +182,7 @@ export class ManagedProcess extends EventEmitter { data: line, createdAt, updatedAt: createdAt, - }) + }), ); this.output.push(...logs); @@ -190,7 +190,7 @@ export class ManagedProcess extends EventEmitter { private setState(newState: ManagedProcessState) { console.debug( - `Process ${this.id} state changed from ${this.state} to ${newState}` + `Process ${this.id} state changed from ${this.state} to ${newState}`, ); this.updatedAt = new Date(); this.state = newState; diff --git a/packages/nodejs/src/wallet.service.ts b/packages/nodejs/src/wallet.service.ts index 9c50d63de..3f0efdc3e 100644 --- a/packages/nodejs/src/wallet.service.ts +++ b/packages/nodejs/src/wallet.service.ts @@ -41,11 +41,11 @@ export class WalletService { constructor( private readonly cliService: FlowCliService, private readonly flowGateway: FlowGatewayService, - private readonly storageService: PersistentStorage + private readonly storageService: PersistentStorage, ) {} public async sendTransaction( - request: SendTransactionRequest + request: SendTransactionRequest, ): Promise { const uniqueRoleAddresses = new Set([ request.proposerAddress, @@ -58,8 +58,8 @@ export class WalletService { async (address): Promise<[string, FlowAuthorizationFunction]> => [ address, await this.withAuthorization({ address, managedKeyPairs }), - ] - ) + ], + ), ); function getAuthFunction(address: string) { @@ -76,7 +76,7 @@ export class WalletService { proposer: getAuthFunction(request.proposerAddress), payer: getAuthFunction(request.payerAddress), authorizations: request.authorizerAddresses.map((address) => - getAuthFunction(address) + getAuthFunction(address), ), arguments: request.arguments, }); @@ -89,7 +89,7 @@ export class WalletService { }): Promise { const { address, managedKeyPairs } = options; const managedKeyPairsOfAccount = managedKeyPairs.filter( - (e) => e.address === address + (e) => e.address === address, ); if (managedKeyPairsOfAccount.length === 0) { @@ -100,17 +100,17 @@ export class WalletService { const account = await this.flowGateway.getAccount(address); const associatedPublicKey = account.keys.find( - (key) => key.publicKey === managedKeyToUse.publicKey + (key) => key.publicKey === managedKeyToUse.publicKey, ); if (!associatedPublicKey) { throw new Error( - `Associated public key not found for account: ${account}` + `Associated public key not found for account: ${account}`, ); } const authn: FlowAuthorizationFunction = ( - fclAccount: Record = {} + fclAccount: Record = {}, ) => ({ ...fclAccount, tempId: `${address}-${managedKeyToUse.privateKey}`, @@ -125,7 +125,7 @@ export class WalletService { keyId: associatedPublicKey.index, signature: this.signWithPrivateKey( managedKeyToUse.privateKey, - signable.message + signable.message, ), }; }, @@ -138,8 +138,8 @@ export class WalletService { const managedKeyPairs = await this.listKeyPairs(); const associatedAccounts = await Promise.allSettled( managedKeyPairs.map((keyPair) => - this.flowGateway.getAccount(keyPair.address) - ) + this.flowGateway.getAccount(keyPair.address), + ), ); const validKeyPairLookupByPublicKey = new Set( associatedAccounts @@ -150,12 +150,12 @@ export class WalletService { return []; } }) - .flat() + .flat(), ); await this.writeKeyPairs( managedKeyPairs.filter((keyPair) => - validKeyPairLookupByPublicKey.has(keyPair.publicKey) - ) + validKeyPairLookupByPublicKey.has(keyPair.publicKey), + ), ); } diff --git a/packages/ui/src/api.ts b/packages/ui/src/api.ts index 4aef38428..7a8a74a05 100644 --- a/packages/ui/src/api.ts +++ b/packages/ui/src/api.ts @@ -26,20 +26,20 @@ export function useGetAccounts(): SWRResponse { } export function useGetAccount( - id: string + id: string, ): SWRResponse { const { accountIndex } = useServiceRegistry(); return useSWR(`account/${id}`, () => accountIndex.findOneById(id)); } export function useGetKeysByAccount( - address: string + address: string, ): SWRResponse { const { accountKeyIndex } = useServiceRegistry(); return useSWR(`${address}/keys`, () => accountKeyIndex .findAll() - .then((res) => res.filter((e) => e.address === address)) + .then((res) => res.filter((e) => e.address === address)), ); } @@ -49,24 +49,24 @@ export function useGetManagedKeys(): SWRResponse { } export function useGetStoragesByAccount( - id: string + id: string, ): SWRResponse { const { accountStorageIndex } = useServiceRegistry(); return useSWR(`${id}/storages`, () => accountStorageIndex .findAll() - .then((res) => res.filter((e) => e.address === id)) + .then((res) => res.filter((e) => e.address === id)), ); } export function useGetContractsByAccount( - address: string + address: string, ): SWRResponse { const { contractIndex } = useServiceRegistry(); return useSWR(`${address}/contracts`, () => contractIndex .findAll() - .then((res) => res.filter((e) => e.address === address)) + .then((res) => res.filter((e) => e.address === address)), ); } @@ -77,18 +77,18 @@ export function useGetTransactions(): SWRResponse { export function useGetTransaction( id: string, - options?: SWRConfiguration + options?: SWRConfiguration, ): SWRResponse { const { transactionsIndex } = useServiceRegistry(); return useSWR( `transaction/${id}`, () => transactionsIndex.findOneById(id), - options + options, ); } export function useGetTransactionsByAccount( - address: string + address: string, ): SWRResponse { const { transactionsIndex } = useServiceRegistry(); return useSWR(`${address}/transactions`, () => @@ -99,20 +99,20 @@ export function useGetTransactionsByAccount( (e) => e.authorizers.includes(address) || e.payer === address || - e.proposalKey.address === address - ) - ) + e.proposalKey.address === address, + ), + ), ); } export function useGetTransactionsByBlock( - blockId: string + blockId: string, ): SWRResponse { const { transactionsIndex } = useServiceRegistry(); return useSWR(`${blockId}/transactions`, () => transactionsIndex .findAll() - .then((res) => res.filter((e) => e.blockId === blockId)) + .then((res) => res.filter((e) => e.blockId === blockId)), ); } @@ -135,7 +135,7 @@ export function useGetContracts(): SWRResponse { } export function useGetContract( - id: string + id: string, ): SWRResponse { const { contractIndex } = useServiceRegistry(); @@ -149,24 +149,24 @@ export function useGetEvents(): SWRResponse { } export function useGetEventsByTransaction( - id: string + id: string, ): SWRResponse { const { eventsIndex } = useServiceRegistry(); return useSWR(`${id}/events`, () => eventsIndex .findAll() - .then((res) => res.filter((e) => e.transactionId === id)) + .then((res) => res.filter((e) => e.transactionId === id)), ); } export function useGetOutputsByProcess( - id: string + id: string, ): SWRResponse { const { processManagerService } = useServiceRegistry(); return useSWR(`${id}/outputs`, () => - processManagerService.findAllLogsByProcessId(id) + processManagerService.findAllLogsByProcessId(id), ); } @@ -189,7 +189,7 @@ export function useGetWorkspaces(): SWRResponse { } export function useGetWorkspace( - id: string + id: string, ): SWRResponse { const { workspaceService } = useServiceRegistry(); @@ -205,12 +205,12 @@ export function useGetFlowCliInfo(): SWRResponse { export function useGetAddressIndex(address: string): SWRResponse { const { flowService } = useServiceRegistry(); return useSWR(`account-index/${address}`, () => - flowService.getIndexOfAddress(address) + flowService.getIndexOfAddress(address), ); } export function useGetParsedInteraction( - request: InteractionDefinition + request: InteractionDefinition, ): SWRResponse { const { interactionsService } = useServiceRegistry(); @@ -218,7 +218,7 @@ export function useGetParsedInteraction( // to avoid the flickering UI effect that's caused // by undefined parsed interaction every time the source code changes. const state = useSWR(`parsed-interaction/${request.id}`, () => - interactionsService.parse(request.code) + interactionsService.parse(request.code), ); useEffect(() => { @@ -234,6 +234,6 @@ export function useGetInteractionTemplates(): SWRResponse< const { interactionsService } = useServiceRegistry(); return useSWR(`interaction-templates`, () => - interactionsService.getTemplates() + interactionsService.getTemplates(), ); } diff --git a/packages/ui/src/interactions/contexts/outcome.context.tsx b/packages/ui/src/interactions/contexts/outcome.context.tsx index 854ca82db..62c56d3a9 100644 --- a/packages/ui/src/interactions/contexts/outcome.context.tsx +++ b/packages/ui/src/interactions/contexts/outcome.context.tsx @@ -51,7 +51,7 @@ export function InteractionOutcomeManagerProvider(props: { } async function executeTransaction( - definition: InteractionDefinition + definition: InteractionDefinition, ): Promise { const { transactionOptions } = definition; if (!transactionOptions) { @@ -65,7 +65,7 @@ export function InteractionOutcomeManagerProvider(props: { toast.error( `Unspecified authorizers: ${unspecifiedAuthorizers .map((e) => e.index + 1) - .join(", ")}` + .join(", ")}`, ); hasErrors = true; } @@ -105,7 +105,7 @@ export function InteractionOutcomeManagerProvider(props: { } async function executeScript( - definition: InteractionDefinition + definition: InteractionDefinition, ): Promise { try { const result = await flowService.executeScript({ @@ -149,7 +149,7 @@ export function InteractionOutcomeManagerProvider(props: { type: parameter.type, identifier: parameter.identifier, }; - } + }, ); } From 46cd5cf459a35df3f87419d48efe2514d1854c4e Mon Sep 17 00:00:00 2001 From: Bart Date: Thu, 2 Nov 2023 11:12:04 +0100 Subject: [PATCH 097/100] remove gateway config for now --- apps/electron/src/services/flowser-app.service.ts | 1 - apps/electron/src/services/workspace.service.ts | 1 - packages/api/src/resources.ts | 3 --- 3 files changed, 5 deletions(-) diff --git a/apps/electron/src/services/flowser-app.service.ts b/apps/electron/src/services/flowser-app.service.ts index 29ebbf8b9..a144db487 100644 --- a/apps/electron/src/services/flowser-app.service.ts +++ b/apps/electron/src/services/flowser-app.service.ts @@ -147,7 +147,6 @@ export class FlowserAppService { name: parsedPath.name, filesystemPath, emulator: undefined, - gateway: undefined, createdAt: new Date(), updatedAt: new Date(), }); diff --git a/apps/electron/src/services/workspace.service.ts b/apps/electron/src/services/workspace.service.ts index 020ad769b..de6e8aa1f 100644 --- a/apps/electron/src/services/workspace.service.ts +++ b/apps/electron/src/services/workspace.service.ts @@ -91,7 +91,6 @@ export class WorkspaceService extends EventEmitter { createdAt: new Date(), updatedAt: new Date(), emulator: this.flowEmulatorService.getDefaultConfig(), - gateway: undefined, id: randomUUID(), name: 'My awesome project', }; diff --git a/packages/api/src/resources.ts b/packages/api/src/resources.ts index fa1d7d92c..907ea13d9 100644 --- a/packages/api/src/resources.ts +++ b/packages/api/src/resources.ts @@ -305,11 +305,8 @@ export interface FlowserWorkspace extends TimestampedResource { name: string; filesystemPath: string; emulator: FlowEmulatorConfig | undefined; - gateway: FlowGatewayConfig | undefined; } -export interface FlowGatewayConfig {} - export interface FlowEmulatorConfig { verboseLogging: boolean; logFormat: string; From 5ac3f3636b66ef995e98341753e102e580bfadfd Mon Sep 17 00:00:00 2001 From: Bart Date: Thu, 2 Nov 2023 11:31:21 +0100 Subject: [PATCH 098/100] try building without notarization --- .github/workflows/publish.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 05cf3da58..a906b2bbb 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -45,6 +45,7 @@ jobs: APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }} CSC_LINK: ${{ secrets.CSC_LINK }} CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }} + CI: false # This is used for uploading release assets to github GH_TOKEN: ${{ secrets.GH_TOKEN }} run: | From 62e7b6ba041432a87e4c9bc47ec715bba269ce20 Mon Sep 17 00:00:00 2001 From: Bart Date: Thu, 2 Nov 2023 11:40:21 +0100 Subject: [PATCH 099/100] resolve remaining todos --- packages/core/src/flow-indexer.service.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/core/src/flow-indexer.service.ts b/packages/core/src/flow-indexer.service.ts index 1b7c0fc8c..493594272 100644 --- a/packages/core/src/flow-indexer.service.ts +++ b/packages/core/src/flow-indexer.service.ts @@ -601,7 +601,7 @@ export class FlowIndexerService { return { id: `${account.address}.${name}`, address: ensurePrefixedAddress(account.address), - // TODO(restructure): Populate local config if applicable + // TODO(restructure-followup): Populate local config if applicable // Or even better, create a separate "workspace contracts" API and remove this field. localConfig: undefined, name: name, @@ -629,14 +629,12 @@ export class FlowIndexerService { // https://developers.flow.com/tooling/fcl-js/api#ftype switch (type) { case "Dictionary": - // TODO(restructure): Double check this // @ts-ignore return value?.map((entry: any) => ({ key: fromTypeAnnotatedFclArguments(entry.key), value: fromTypeAnnotatedFclArguments(entry.value), })); case "Array": - // TODO(restructure): Double check this // @ts-ignore return value?.map((element: any) => fromTypeAnnotatedFclArguments(element), From 28332b7bf51bc337a3a4710ad8b7bcb0a579b864 Mon Sep 17 00:00:00 2001 From: Bart Date: Thu, 2 Nov 2023 11:50:06 +0100 Subject: [PATCH 100/100] revert temp changes in publish action --- .github/workflows/publish.yml | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index a906b2bbb..07d557c18 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -1,12 +1,9 @@ name: Publish -# TODO: Change back to release/created on: - push: - branches: [ "main" ] - pull_request: - # The branches below must be a subset of the branches above - branches: [ "main" ] + release: + types: + - created jobs: publish: @@ -45,7 +42,6 @@ jobs: APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }} CSC_LINK: ${{ secrets.CSC_LINK }} CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }} - CI: false # This is used for uploading release assets to github GH_TOKEN: ${{ secrets.GH_TOKEN }} run: |

    - Electron React Boilerplate uses Electron, React, React Router, Webpack and React Fast Refresh. -

  • + Electron React Boilerplate uses Electron, React, React Router, Webpack and React Fast Refresh. +