From 6d28a1f231d3170c1d2aa111b499c0c710c6e08c Mon Sep 17 00:00:00 2001 From: tim-fabian Date: Fri, 24 May 2024 23:19:38 +0200 Subject: [PATCH] added biometric login --- README.md | 9 + cspell.words.txt | 8 +- package-lock.json | 8427 +++++++++++------ package.json | 18 +- showcase/Dockerfile | 2 +- showcase/package-lock.json | 3387 +++++-- showcase/package.json | 9 +- showcase/src/application.ts | 6 +- .../src/controllers/register.controller.ts | 5 +- showcase/src/controllers/test.controller.ts | 13 +- .../services/biometric-credentials.service.ts | 12 + showcase/src/services/index.ts | 3 +- .../biometric-credentials-service.fixture.ts | 9 + src/__tests__/fixtures/db.fixture.ts | 41 + src/__tests__/fixtures/helpers.ts | 134 +- .../fixtures/mail-service.fixture.ts | 26 + .../fixtures/repositories.fixture.ts | 16 + src/__tests__/fixtures/roles.fixture.ts | 5 + src/__tests__/fixtures/services.fixture.ts | 28 + src/__tests__/fixtures/test-db.datasource.ts | 9 - src/__tests__/unit/base-mail.service.test.ts | 6 +- src/__tests__/unit/base-user.service.test.ts | 69 +- .../biometric-credentials.service.test.ts | 22 + .../unit/refresh-token.service.test.ts | 258 +- src/__tests__/unit/two-factor.service.test.ts | 59 +- .../{ => 2fa}/require-2fa-response.model.ts | 0 .../{ => 2fa}/turn-on-2fa-response.model.ts | 0 src/controllers/auth/auth-data.model.ts | 44 +- src/controllers/auth/auth.controller.ts | 221 +- .../authentication-extensions-inputs.model.ts | 25 + ...authentication-extensions-outputs.model.ts | 27 + .../authentication-response.model.ts | 61 + .../authenticator-assertion-response.model.ts | 33 + ...uthenticator-attestation-response.model.ts | 49 + ...-extensions-authenticator-outputs.model.ts | 21 + .../authenticator-selection-criteria.model.ts | 42 + .../biometric-registration-options.model.ts | 77 + .../biometric-registration-response.model.ts | 53 + ...m-biometric-registration-response.model.ts | 29 + .../credential-properties-output.model.ts | 12 + ...e-public-key-authenticator-output.model.ts | 38 + .../public-key-credential-descriptor.model.ts | 33 + .../public-key-credential-parameters.model.ts | 24 + ...ic-key-credential-request-options.model.ts | 52 + .../public-key-credential-rp-entity.model.ts | 19 + .../public-key-credential-user.model.ts | 25 + .../auth/biometric/registration-info.model.ts | 133 + .../uvm-authenticator-output.model.ts | 15 + .../verified-biometric-registration.model.ts | 49 + src/controllers/index.ts | 5 +- src/encapsulation/hi-base32.utilities.ts | 16 + src/encapsulation/otp-auth.utilities.ts | 100 + src/encapsulation/webauthn.utilities.ts | 173 + src/keys.ts | 14 +- src/lbx-jwt.component.ts | 5 +- src/models/base-user.model.ts | 10 +- src/models/biometric-credentials.model.ts | 83 + src/models/index.ts | 3 +- src/models/jwt.model.ts | 16 +- src/repositories/base-user.repository.ts | 12 +- .../biometric-credentials.repository.ts | 18 + src/repositories/index.ts | 3 +- src/services/access-token.service.ts | 5 +- .../base-biometric-credentials.service.ts | 186 + src/services/base-user.service.ts | 71 +- src/services/index.ts | 3 +- src/services/jwt.auth.strategy.ts | 1 + src/services/mail/base-mail.service.ts | 19 +- src/services/refresh-token.service.ts | 6 +- src/services/security.spec.enhancer.ts | 1 - src/services/two-factor.service.ts | 33 +- tsconfig.json | 5 +- tsconfig.tsbuildinfo | 2 +- 73 files changed, 10026 insertions(+), 4427 deletions(-) create mode 100644 showcase/src/services/biometric-credentials.service.ts create mode 100644 src/__tests__/fixtures/biometric-credentials-service.fixture.ts create mode 100644 src/__tests__/fixtures/db.fixture.ts create mode 100644 src/__tests__/fixtures/mail-service.fixture.ts create mode 100644 src/__tests__/fixtures/repositories.fixture.ts create mode 100644 src/__tests__/fixtures/roles.fixture.ts create mode 100644 src/__tests__/fixtures/services.fixture.ts delete mode 100644 src/__tests__/fixtures/test-db.datasource.ts create mode 100644 src/__tests__/unit/biometric-credentials.service.test.ts rename src/controllers/auth/{ => 2fa}/require-2fa-response.model.ts (100%) rename src/controllers/auth/{ => 2fa}/turn-on-2fa-response.model.ts (100%) create mode 100644 src/controllers/auth/biometric/authentication-extensions-inputs.model.ts create mode 100644 src/controllers/auth/biometric/authentication-extensions-outputs.model.ts create mode 100644 src/controllers/auth/biometric/authentication-response.model.ts create mode 100644 src/controllers/auth/biometric/authenticator-assertion-response.model.ts create mode 100644 src/controllers/auth/biometric/authenticator-attestation-response.model.ts create mode 100644 src/controllers/auth/biometric/authenticator-extensions-authenticator-outputs.model.ts create mode 100644 src/controllers/auth/biometric/authenticator-selection-criteria.model.ts create mode 100644 src/controllers/auth/biometric/biometric-registration-options.model.ts create mode 100644 src/controllers/auth/biometric/biometric-registration-response.model.ts create mode 100644 src/controllers/auth/biometric/confirm-biometric-registration-response.model.ts create mode 100644 src/controllers/auth/biometric/credential-properties-output.model.ts create mode 100644 src/controllers/auth/biometric/device-public-key-authenticator-output.model.ts create mode 100644 src/controllers/auth/biometric/public-key-credential-descriptor.model.ts create mode 100644 src/controllers/auth/biometric/public-key-credential-parameters.model.ts create mode 100644 src/controllers/auth/biometric/public-key-credential-request-options.model.ts create mode 100644 src/controllers/auth/biometric/public-key-credential-rp-entity.model.ts create mode 100644 src/controllers/auth/biometric/public-key-credential-user.model.ts create mode 100644 src/controllers/auth/biometric/registration-info.model.ts create mode 100644 src/controllers/auth/biometric/uvm-authenticator-output.model.ts create mode 100644 src/controllers/auth/biometric/verified-biometric-registration.model.ts create mode 100644 src/encapsulation/hi-base32.utilities.ts create mode 100644 src/encapsulation/otp-auth.utilities.ts create mode 100644 src/encapsulation/webauthn.utilities.ts create mode 100644 src/models/biometric-credentials.model.ts create mode 100644 src/repositories/biometric-credentials.repository.ts create mode 100644 src/services/base-biometric-credentials.service.ts diff --git a/README.md b/README.md index 80efb7e..e8a540f 100644 --- a/README.md +++ b/README.md @@ -69,6 +69,15 @@ export class MailService extends BaseMailService { } ``` +## Create your own biometric credentials service +```ts +@bind({ scope: BindingScope.TRANSIENT }) +export class BiometricCredentialsService extends BaseBiometricCredentialsService { + protected readonly RP_NAME: string = 'Test'; + protected readonly RP_DOMAIN: string = 'localhost'; +} +``` + ## Enjoy! That's it, now you can use it inside your code: ```typescript diff --git a/cspell.words.txt b/cspell.words.txt index 763eb13..5904347 100644 --- a/cspell.words.txt +++ b/cspell.words.txt @@ -1,6 +1,4 @@ -uuidv4 -datasource -datasources +webauthn whitesmoke -Booter -totp \ No newline at end of file +simplewebauthn +RPID \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 3673851..9bd8280 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,18 +1,14 @@ { "name": "lbx-jwt", - "version": "1.3.0", + "version": "1.4.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "lbx-jwt", - "version": "1.3.0", + "version": "1.4.0", "license": "MIT", "dependencies": { - "bcryptjs": "^2.4.3", - "hi-base32": "^0.5.1", - "jsonwebtoken": "^9.0.1", - "otpauth": "^9.1.4", "tslib": "^2.6.1" }, "devDependencies": { @@ -31,51 +27,52 @@ "@types/node": "^20.5.0", "@types/nodemailer": "^6.4.9", "eslint": "^8.47.0", - "eslint-config-service-soft": "^1.3.3", + "eslint-config-service-soft": "^1.4.2", "handlebars": "^4.7.8", + "loopback-connector-mysql": "^7.0.9", "nodemailer": "^6.9.4", "typescript": "~5.1.6" }, + "engines": { + "node": ">=20" + }, "peerDependencies": { + "@hexagon/base64": "^1.1.28", "@loopback/authentication": "10", "@loopback/authorization": "0.14", "@loopback/core": "5", "@loopback/rest": "13", "@loopback/security": "0.10", + "@simplewebauthn/server": "^10.0.0", + "bcryptjs": "^2.4.3", "handlebars": "4", - "nodemailer": "6" - } - }, - "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" + "hi-base32": "^0.5.1", + "jsonwebtoken": "^9.0.1", + "nodemailer": "6", + "otpauth": "^9.1.4" } }, "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "dev": true, "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@angular-devkit/architect": { - "version": "0.1602.8", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1602.8.tgz", - "integrity": "sha512-bNdu2tF29Y/jOxMXlu9pmNbIlyZs9hRjLmi/tcfcMFay+3AhpNO59DWlUmI4gpvWu8CEXdQHSMuJTDHaNR+Ctg==", + "version": "0.1602.14", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1602.14.tgz", + "integrity": "sha512-eSdONEV5dbtLNiOMBy9Ue9DdJ1ct6dH9RdZfYiedq6VZn0lejePAjY36MYVXgq2jTE+v/uIiaNy7caea5pt55A==", "dev": true, "peer": true, "dependencies": { - "@angular-devkit/core": "16.2.8", + "@angular-devkit/core": "16.2.14", "rxjs": "7.8.1" }, "engines": { @@ -85,9 +82,9 @@ } }, "node_modules/@angular-devkit/core": { - "version": "16.2.8", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.2.8.tgz", - "integrity": "sha512-PTGozYvh1Bin5lB15PwcXa26Ayd17bWGLS3H8Rs0s+04mUDvfNofmweaX1LgumWWy3nCUTDuwHxX10M3G0wE2g==", + "version": "16.2.14", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.2.14.tgz", + "integrity": "sha512-Ui14/d2+p7lnmXlK/AX2ieQEGInBV75lonNtPQgwrYgskF8ufCuN0DyVZQUy9fJDkC+xQxbJyYrby/BS0R0e7w==", "dev": true, "peer": true, "dependencies": { @@ -112,14 +109,31 @@ } } }, + "node_modules/@angular-devkit/core/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, "node_modules/@angular-devkit/schematics": { - "version": "16.2.8", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-16.2.8.tgz", - "integrity": "sha512-MBiKZOlR9/YMdflALr7/7w/BGAfo/BGTrlkqsIB6rDWV1dYiCgxI+033HsiNssLS6RQyCFx/e7JA2aBBzu9zEg==", + "version": "16.2.14", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-16.2.14.tgz", + "integrity": "sha512-B6LQKInCT8w5zx5Pbroext5eFFRTCJdTwHN8GhcVS8IeKCnkeqVTQLjB4lBUg7LEm8Y7UHXwzrVxmk+f+MBXhw==", "dev": true, "peer": true, "dependencies": { - "@angular-devkit/core": "16.2.8", + "@angular-devkit/core": "16.2.14", "jsonc-parser": "3.2.0", "magic-string": "0.30.1", "ora": "5.4.1", @@ -132,9 +146,9 @@ } }, "node_modules/@angular-eslint/builder": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-16.2.0.tgz", - "integrity": "sha512-SZjXOi3YIjuX2CocuRsR2QH6k1ca9lRO6IMm0YIYMmBPFCRP2KFHkL6aQnXM6DSaymQNN2TXfpuvUd45NxhU1w==", + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-16.3.1.tgz", + "integrity": "sha512-PmIOnRwqdOW1bvZtpTGBTDcOq/Czm3D+IPC/k90yIMs1VsAtcxqUmUtELje+ylJeb2LPeEZavekSnEpcatM4HQ==", "dev": true, "dependencies": { "@nx/devkit": "16.5.1", @@ -146,18 +160,18 @@ } }, "node_modules/@angular-eslint/bundled-angular-compiler": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-16.2.0.tgz", - "integrity": "sha512-ct9orDYxkMl2+uvM7UBfgV28Dq57V4dEs+Drh7cD673JIMa6sXbgmd0QEtm8W3cmyK/jcTzmuoufxbH7hOxd6g==", + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-16.3.1.tgz", + "integrity": "sha512-m4WP1xwS9XLcC/3n6lIcG5HZoai/5eb5W3xm48GVcv//0qE2p7S96RSgKPgGHvif5pF8O9xAqEWs3gDEG45+7A==", "dev": true }, "node_modules/@angular-eslint/eslint-plugin": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-16.2.0.tgz", - "integrity": "sha512-zdiAIox1T+B71HL+A8m+1jWdU34nvPGLhCRw/uZNwHzknsF4tYzNQ9W7T/SC/g/2s1yT2yNosEVNJSGSFvunJg==", + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-16.3.1.tgz", + "integrity": "sha512-kSc8ESfoy8TUSthbq0Lpq9e17I+3Smy4rHoNpKCFEGuJgPs0+OssZMxB6a5EawGbv2EKTPEtrxzFm1WsLR0U9Q==", "dev": true, "dependencies": { - "@angular-eslint/utils": "16.2.0", + "@angular-eslint/utils": "16.3.1", "@typescript-eslint/utils": "5.62.0" }, "peerDependencies": { @@ -166,467 +180,819 @@ } }, "node_modules/@angular-eslint/eslint-plugin-template": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-16.2.0.tgz", - "integrity": "sha512-YFdQ6hHX6NlQj0lfogZwfyKjU8pqkJU+Zsk0ehjlXP8VfKFVmDeQT5/Xr6Df9C8pveC3hvq6Jgd8vo67S9Enxg==", + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-16.3.1.tgz", + "integrity": "sha512-+RcFEWqNiRt3+5jXvmlIDlXtP9+vjdmgmVL6tt8yDbqdjBOewtyMu4pE4YaR4sFboyxgME9PbO2WrOyPXh6xjg==", "dev": true, "dependencies": { - "@angular-eslint/bundled-angular-compiler": "16.2.0", - "@angular-eslint/utils": "16.2.0", + "@angular-eslint/bundled-angular-compiler": "16.3.1", + "@angular-eslint/utils": "16.3.1", "@typescript-eslint/type-utils": "5.62.0", "@typescript-eslint/utils": "5.62.0", "aria-query": "5.3.0", - "axobject-query": "3.2.1" + "axobject-query": "4.0.0" }, "peerDependencies": { "eslint": "^7.20.0 || ^8.0.0", "typescript": "*" } }, - "node_modules/@angular-eslint/schematics": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-16.2.0.tgz", - "integrity": "sha512-2JUVR7hAKx37mgWeDjvyWEMH5uSeeksYuaQT5wwlgIzgrO4BNFuqs6Rgyp2jiYa7BFMX/qHULSa+bSq5J5ceEA==", + "node_modules/@angular-eslint/eslint-plugin-template/node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", "dev": true, "dependencies": { - "@angular-eslint/eslint-plugin": "16.2.0", - "@angular-eslint/eslint-plugin-template": "16.2.0", - "@nx/devkit": "16.5.1", - "ignore": "5.2.4", - "nx": "16.5.1", - "strip-json-comments": "3.1.1", - "tmp": "0.2.1" + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" }, - "peerDependencies": { - "@angular/cli": ">= 16.0.0 < 17.0.0" - } - }, - "node_modules/@angular-eslint/template-parser": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-16.2.0.tgz", - "integrity": "sha512-v2jVKTy2wN7iM9nHpBkxLn2wfL8jSl4IlPrXThIqj8No2VHtpLQZPKuXbGPUXQX05VS2Mj5feScQ36ZVGS8Rbw==", - "dev": true, - "dependencies": { - "@angular-eslint/bundled-angular-compiler": "16.2.0", - "eslint-scope": "^7.0.0" + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, - "peerDependencies": { - "eslint": "^7.20.0 || ^8.0.0", - "typescript": "*" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@angular-eslint/template-parser/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==", + "node_modules/@angular-eslint/eslint-plugin-template/node_modules/@typescript-eslint/type-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", "dev": true, "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@angular-eslint/utils": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-16.2.0.tgz", - "integrity": "sha512-NxMRwnlIgzmbJQfWkfd9y3Sz0hzjFdK5LH44i+3D5NhpPdZ6SzwHAjMYWoYsmmNQX5tlDXoicYF9Mz9Wz8DJ/A==", - "dev": true, - "dependencies": { - "@angular-eslint/bundled-angular-compiler": "16.2.0", - "@typescript-eslint/utils": "5.62.0" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^7.20.0 || ^8.0.0", - "typescript": "*" + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@angular/cli": { - "version": "16.2.8", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-16.2.8.tgz", - "integrity": "sha512-iPrDv+SemRb6ZhayxwLsEdykHpV2TYSgH5Smg8GqSaIR/KUiemuzBrIKEUEaIG4n2dVEOtcsuh2JRHQndF7wmw==", + "node_modules/@angular-eslint/eslint-plugin-template/node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", "dev": true, - "peer": true, - "dependencies": { - "@angular-devkit/architect": "0.1602.8", - "@angular-devkit/core": "16.2.8", - "@angular-devkit/schematics": "16.2.8", - "@schematics/angular": "16.2.8", - "@yarnpkg/lockfile": "1.1.0", - "ansi-colors": "4.1.3", - "ini": "4.1.1", - "inquirer": "8.2.4", - "jsonc-parser": "3.2.0", - "npm-package-arg": "10.1.0", - "npm-pick-manifest": "8.0.1", - "open": "8.4.2", - "ora": "5.4.1", - "pacote": "15.2.0", - "resolve": "1.22.2", - "semver": "7.5.4", - "symbol-observable": "4.0.0", - "yargs": "17.7.2" - }, - "bin": { - "ng": "bin/ng.js" - }, "engines": { - "node": "^16.14.0 || >=18.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "node_modules/@angular-eslint/eslint-plugin-template/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", "dev": true, "dependencies": { - "@babel/highlight": "^7.22.13", - "chalk": "^2.4.2" + "@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" }, "engines": { - "node": ">=6.9.0" + "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/@babel/code-frame/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==", + "node_modules/@angular-eslint/eslint-plugin-template/node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", "dev": true, "dependencies": { - "color-convert": "^1.9.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" }, "engines": { - "node": ">=4" + "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/@babel/code-frame/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==", + "node_modules/@angular-eslint/eslint-plugin-template/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", "dev": true, "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" }, "engines": { - "node": ">=4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@babel/code-frame/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==", + "node_modules/@angular-eslint/eslint-plugin-template/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": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/code-frame/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/code-frame/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, + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, "engines": { - "node": ">=0.8.0" + "node": ">=8.0.0" } }, - "node_modules/@babel/code-frame/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==", + "node_modules/@angular-eslint/eslint-plugin-template/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" + "node": ">=4.0" } }, - "node_modules/@babel/code-frame/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==", + "node_modules/@angular-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", "dev": true, "dependencies": { - "has-flag": "^3.0.0" + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" }, "engines": { - "node": ">=4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@babel/compat-data": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", - "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==", + "node_modules/@angular-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", "dev": true, "engines": { - "node": ">=6.9.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@babel/core": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.10.tgz", - "integrity": "sha512-fTmqbbUBAwCcre6zPzNngvsI0aNrPZe77AeqvDxWM9Nm+04RrJ3CAmGHA9f7lJQY6ZMhRztNemy4uslDxTX4Qw==", + "node_modules/@angular-eslint/eslint-plugin/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", "dev": true, "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" + "@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" }, "engines": { - "node": ">=6.9.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/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" + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@babel/eslint-parser": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.22.15.tgz", - "integrity": "sha512-yc8OOBIQk1EcRrpizuARSQS0TWAcOMpEJ1aafhNznaeYkeL+OhqnDObGFylB8ka8VFF/sZc+S4RzHyO+3LjQxg==", + "node_modules/@angular-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", "dev": true, "dependencies": { - "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", - "eslint-visitor-keys": "^2.1.0", - "semver": "^6.3.1" + "@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" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || >=14.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@babel/core": "^7.11.0", - "eslint": "^7.5.0 || ^8.0.0" + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "node_modules/@angular-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, "engines": { - "node": ">=10" - } - }, - "node_modules/@babel/eslint-parser/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": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@babel/generator": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", - "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", + "node_modules/@angular-eslint/eslint-plugin/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": { - "@babel/types": "^7.23.0", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" }, "engines": { - "node": ">=6.9.0" + "node": ">=8.0.0" } }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.10.tgz", - "integrity": "sha512-JMSwHD4J7SLod0idLq5PKgI+6g/hLD/iuWBq08ZX49xE14VpVEojJ5rHWptpirV2j020MvypRLAXAO50igCJ5Q==", + "node_modules/@angular-eslint/eslint-plugin/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, - "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" - }, "engines": { - "node": ">=6.9.0" + "node": ">=4.0" } }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/@angular-eslint/schematics": { + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-16.3.1.tgz", + "integrity": "sha512-cqrdobdtRY2XjLa6PhuGOQ7UhTRk2AvWS01sKeGjZ94nQJm5NUtEUyf6u3deIPYllW7gSAWjYzKUObKcTW/R+g==", "dev": true, - "bin": { - "semver": "bin/semver.js" + "dependencies": { + "@angular-eslint/eslint-plugin": "16.3.1", + "@angular-eslint/eslint-plugin-template": "16.3.1", + "@nx/devkit": "16.5.1", + "ignore": "5.2.4", + "nx": "16.5.1", + "strip-json-comments": "3.1.1", + "tmp": "0.2.1" + }, + "peerDependencies": { + "@angular/cli": ">= 16.0.0 < 17.0.0" } }, - "node_modules/@babel/helper-environment-visitor": { - "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==", + "node_modules/@angular-eslint/schematics/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": ">=6.9.0" + "node": ">= 4" } }, - "node_modules/@babel/helper-function-name": { - "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==", + "node_modules/@angular-eslint/template-parser": { + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-16.3.1.tgz", + "integrity": "sha512-9+SxUtxB2iOnm0ldS2ow0stMxe02rB/TxeMIe8fxsLFHZdw8RQvs/p3HLvVHXzv6gUblMHebIb/ubUmwEVb2SA==", "dev": true, "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" + "@angular-eslint/bundled-angular-compiler": "16.3.1", + "eslint-scope": "^7.0.0" }, - "engines": { - "node": ">=6.9.0" + "peerDependencies": { + "eslint": "^7.20.0 || ^8.0.0", + "typescript": "*" } }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "node_modules/@angular-eslint/utils": { + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-16.3.1.tgz", + "integrity": "sha512-tEBcce0rG+DmcPO8jhRffUFDioGw3G4cUAE15XlRctY1J3QzOBH9HdUOTDt0mMjBgpWCzh0YVT1Moh2bPXU9Xg==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@angular-eslint/bundled-angular-compiler": "16.3.1", + "@typescript-eslint/utils": "5.62.0" }, - "engines": { - "node": ">=6.9.0" + "peerDependencies": { + "eslint": "^7.20.0 || ^8.0.0", + "typescript": "*" } }, - "node_modules/@babel/helper-module-imports": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", - "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", + "node_modules/@angular-eslint/utils/node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" }, "engines": { - "node": ">=6.9.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz", - "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==", + "node_modules/@angular-eslint/utils/node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", "dev": true, - "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" - }, "engines": { - "node": ">=6.9.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "node_modules/@angular-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@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" }, "engines": { - "node": ">=6.9.0" + "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/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "node_modules/@angular-eslint/utils/node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@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" }, "engines": { - "node": ">=6.9.0" + "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/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "node_modules/@angular-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, "engines": { - "node": ">=6.9.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@babel/helper-validator-identifier": { - "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==", + "node_modules/@angular-eslint/utils/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": ">=6.9.0" + "node": ">=8.0.0" } }, - "node_modules/@babel/helper-validator-option": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", - "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", + "node_modules/@angular-eslint/utils/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": ">=6.9.0" + "node": ">=4.0" } }, - "node_modules/@babel/helpers": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.10.tgz", - "integrity": "sha512-a41J4NW8HyZa1I1vAndrraTlPZ/eZoga2ZgS7fEr0tZJGVU4xqdE80CEm0CcNjha5EZ8fTBYLKHF0kqDUuAwQw==", + "node_modules/@angular/cli": { + "version": "16.2.14", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-16.2.14.tgz", + "integrity": "sha512-0y71jtitigVolm4Rim1b8xPQ+B22cGp4Spef2Wunpqj67UowN6tsZaVuWBEQh4u5xauX8LAHKqsvy37ZPWCc4A==", "dev": true, + "peer": true, "dependencies": { - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.10", - "@babel/types": "^7.22.10" - }, - "engines": { + "@angular-devkit/architect": "0.1602.14", + "@angular-devkit/core": "16.2.14", + "@angular-devkit/schematics": "16.2.14", + "@schematics/angular": "16.2.14", + "@yarnpkg/lockfile": "1.1.0", + "ansi-colors": "4.1.3", + "ini": "4.1.1", + "inquirer": "8.2.4", + "jsonc-parser": "3.2.0", + "npm-package-arg": "10.1.0", + "npm-pick-manifest": "8.0.1", + "open": "8.4.2", + "ora": "5.4.1", + "pacote": "15.2.0", + "resolve": "1.22.2", + "semver": "7.5.4", + "symbol-observable": "4.0.0", + "yargs": "17.7.2" + }, + "bin": { + "ng": "bin/ng.js" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular/cli/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, + "peer": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@angular/cli/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==", + "dev": true, + "peer": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@angular/cli/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, + "peer": true + }, + "node_modules/@babel/code-frame": { + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", + "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.24.2", + "picocolors": "^1.0.0" + }, + "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/highlight": { + "node_modules/@babel/compat-data": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz", + "integrity": "sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.5.tgz", + "integrity": "sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.2", + "@babel/generator": "^7.24.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.24.5", + "@babel/helpers": "^7.24.5", + "@babel/parser": "^7.24.5", + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.5", + "@babel/types": "^7.24.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/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/@babel/eslint-parser": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.24.5.tgz", + "integrity": "sha512-gsUcqS/fPlgAw1kOtpss7uhY6E9SFFANQ6EFX5GTvzUwaV0+sGaZWk6xq22MOdeT9wfxyokW3ceCUvOiRtZciQ==", + "dev": true, + "dependencies": { + "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || >=14.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.11.0", + "eslint": "^7.5.0 || ^8.0.0 || ^9.0.0" + } + }, + "node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@babel/eslint-parser/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/@babel/generator": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.5.tgz", + "integrity": "sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.5", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/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/@babel/helper-environment-visitor": { "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", - "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "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==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz", + "integrity": "sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz", + "integrity": "sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.24.3", + "@babel/helper-simple-access": "^7.24.5", + "@babel/helper-split-export-declaration": "^7.24.5", + "@babel/helper-validator-identifier": "^7.24.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz", + "integrity": "sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz", + "integrity": "sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz", + "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz", + "integrity": "sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.5.tgz", + "integrity": "sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==", + "dev": true, + "dependencies": { + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.5", + "@babel/types": "^7.24.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.5.tgz", + "integrity": "sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-validator-identifier": "^7.24.5", "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" @@ -704,9 +1070,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", - "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.5.tgz", + "integrity": "sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -716,9 +1082,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz", - "integrity": "sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.6.tgz", + "integrity": "sha512-Ja18XcETdEl5mzzACGd+DKgaGJzPTCow7EglgwTmHdwokzDFYh/MHua6lU6DV/hjF2IaOJ4oX2nqnjG7RElKOw==", "dev": true, "dependencies": { "regenerator-runtime": "^0.14.0" @@ -728,34 +1094,34 @@ } }, "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", + "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", - "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.5.tgz", + "integrity": "sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.0", + "@babel/code-frame": "^7.24.2", + "@babel/generator": "^7.24.5", "@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", + "@babel/helper-split-export-declaration": "^7.24.5", + "@babel/parser": "^7.24.5", + "@babel/types": "^7.24.5", + "debug": "^4.3.1", "globals": "^11.1.0" }, "engines": { @@ -772,13 +1138,13 @@ } }, "node_modules/@babel/types": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", - "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.5.tgz", + "integrity": "sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-string-parser": "^7.24.1", + "@babel/helper-validator-identifier": "^7.24.5", "to-fast-properties": "^2.0.0" }, "engines": { @@ -786,100 +1152,105 @@ } }, "node_modules/@cspell/cspell-bundled-dicts": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-7.3.8.tgz", - "integrity": "sha512-Dj8iSGQyfgIsCjmXk9D/SjV7EpbpQSogeaGcBM66H33pd0GyGmLhn3biRN+vqi/vqWmsp75rT3kd5MKa8X5W9Q==", + "version": "8.8.3", + "resolved": "https://registry.npmjs.org/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-8.8.3.tgz", + "integrity": "sha512-nRa30TQwE4R5xcM6CBibM2l7D359ympexjm7OrykzYmStIiiudDIsuNOIXGBrDouxRFgKGAa/ETo1g+Pxz7kNA==", "dev": true, "dependencies": { "@cspell/dict-ada": "^4.0.2", - "@cspell/dict-aws": "^4.0.0", - "@cspell/dict-bash": "^4.1.2", - "@cspell/dict-companies": "^3.0.26", - "@cspell/dict-cpp": "^5.0.8", - "@cspell/dict-cryptocurrencies": "^4.0.0", + "@cspell/dict-aws": "^4.0.2", + "@cspell/dict-bash": "^4.1.3", + "@cspell/dict-companies": "^3.1.0", + "@cspell/dict-cpp": "^5.1.6", + "@cspell/dict-cryptocurrencies": "^5.0.0", "@cspell/dict-csharp": "^4.0.2", "@cspell/dict-css": "^4.0.12", "@cspell/dict-dart": "^2.0.3", "@cspell/dict-django": "^4.1.0", "@cspell/dict-docker": "^1.1.7", - "@cspell/dict-dotnet": "^5.0.0", + "@cspell/dict-dotnet": "^5.0.2", "@cspell/dict-elixir": "^4.0.3", - "@cspell/dict-en_us": "^4.3.9", - "@cspell/dict-en-common-misspellings": "^1.0.2", + "@cspell/dict-en_us": "^4.3.20", + "@cspell/dict-en-common-misspellings": "^2.0.1", "@cspell/dict-en-gb": "1.1.33", - "@cspell/dict-filetypes": "^3.0.1", + "@cspell/dict-filetypes": "^3.0.4", "@cspell/dict-fonts": "^4.0.0", - "@cspell/dict-fsharp": "^1.0.0", - "@cspell/dict-fullstack": "^3.1.5", - "@cspell/dict-gaming-terms": "^1.0.4", - "@cspell/dict-git": "^2.0.0", - "@cspell/dict-golang": "^6.0.3", + "@cspell/dict-fsharp": "^1.0.1", + "@cspell/dict-fullstack": "^3.1.8", + "@cspell/dict-gaming-terms": "^1.0.5", + "@cspell/dict-git": "^3.0.0", + "@cspell/dict-golang": "^6.0.9", + "@cspell/dict-google": "^1.0.0", "@cspell/dict-haskell": "^4.0.1", "@cspell/dict-html": "^4.0.5", "@cspell/dict-html-symbol-entities": "^4.0.0", "@cspell/dict-java": "^5.0.6", - "@cspell/dict-k8s": "^1.0.1", + "@cspell/dict-julia": "^1.0.1", + "@cspell/dict-k8s": "^1.0.3", "@cspell/dict-latex": "^4.0.0", "@cspell/dict-lorem-ipsum": "^4.0.0", - "@cspell/dict-lua": "^4.0.2", - "@cspell/dict-node": "^4.0.3", - "@cspell/dict-npm": "^5.0.12", - "@cspell/dict-php": "^4.0.3", - "@cspell/dict-powershell": "^5.0.2", - "@cspell/dict-public-licenses": "^2.0.5", - "@cspell/dict-python": "^4.1.9", + "@cspell/dict-lua": "^4.0.3", + "@cspell/dict-makefile": "^1.0.0", + "@cspell/dict-monkeyc": "^1.0.6", + "@cspell/dict-node": "^5.0.1", + "@cspell/dict-npm": "^5.0.16", + "@cspell/dict-php": "^4.0.7", + "@cspell/dict-powershell": "^5.0.4", + "@cspell/dict-public-licenses": "^2.0.6", + "@cspell/dict-python": "^4.1.11", "@cspell/dict-r": "^2.0.1", - "@cspell/dict-ruby": "^5.0.1", - "@cspell/dict-rust": "^4.0.1", - "@cspell/dict-scala": "^5.0.0", - "@cspell/dict-software-terms": "^3.3.6", - "@cspell/dict-sql": "^2.1.2", + "@cspell/dict-ruby": "^5.0.2", + "@cspell/dict-rust": "^4.0.3", + "@cspell/dict-scala": "^5.0.2", + "@cspell/dict-software-terms": "^3.3.23", + "@cspell/dict-sql": "^2.1.3", "@cspell/dict-svelte": "^1.0.2", "@cspell/dict-swift": "^2.0.1", - "@cspell/dict-typescript": "^3.1.2", + "@cspell/dict-terraform": "^1.0.0", + "@cspell/dict-typescript": "^3.1.5", "@cspell/dict-vue": "^3.0.0" }, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/@cspell/cspell-pipe": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/@cspell/cspell-pipe/-/cspell-pipe-7.3.8.tgz", - "integrity": "sha512-/vKPfiHM5bJUkNX12w9j533Lm2JvvSMKUCChM2AxYjy6vL8prc/7ei++4g2xAWwRxLZPg2OfpDJS5EirZNBJdA==", + "version": "8.8.3", + "resolved": "https://registry.npmjs.org/@cspell/cspell-pipe/-/cspell-pipe-8.8.3.tgz", + "integrity": "sha512-tzngpFKXeUsdTZEErffTlwUnPIKYgyRKy0YTrD77EkhyDSbUnaS8JWqtGZbKV7iQ+R4CL7tiaubPjUzkbWj+kQ==", "dev": true, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/@cspell/cspell-resolver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/@cspell/cspell-resolver/-/cspell-resolver-7.3.8.tgz", - "integrity": "sha512-CeyQmhqZI5a+T7a6oiVN90TFlzU3qVVYqCaZ9grFrVOsmzY9ipH5gmqfgMavaBOqb0di/+VZS8d02suMOXcKLQ==", + "version": "8.8.3", + "resolved": "https://registry.npmjs.org/@cspell/cspell-resolver/-/cspell-resolver-8.8.3.tgz", + "integrity": "sha512-pMOB2MJYeria0DeW1dsehRPIHLzoOXCm1Cdjp1kRZ931PbqNCYaE/GM6laWpUTAbS9Ly2tv4g0jK3PUH8ZTtJA==", "dev": true, "dependencies": { - "global-dirs": "^3.0.1" + "global-directory": "^4.0.1" }, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/@cspell/cspell-service-bus": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/@cspell/cspell-service-bus/-/cspell-service-bus-7.3.8.tgz", - "integrity": "sha512-3E7gwY6QILrZH83p69i9CERbRBEqeBiKCIKnAd7U2PbxfFqG/P47fqpnarzSWFwFpU92oyGsYry+wC8TEGISRQ==", + "version": "8.8.3", + "resolved": "https://registry.npmjs.org/@cspell/cspell-service-bus/-/cspell-service-bus-8.8.3.tgz", + "integrity": "sha512-QVKe/JZvoTaaBAMXG40HjZib1g6rGgxk03e070GmdfCiMRUCWFtK+9DKVYJfSqjQhzj/eDCrq8aWplHWy66umg==", "dev": true, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/@cspell/cspell-types": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/@cspell/cspell-types/-/cspell-types-7.3.8.tgz", - "integrity": "sha512-hsOtaULDnawEL4pU0fga941GhvE8mbTbywrJBx+eGX3fnJsaUr8XQzCtnLsW2ko7WCLWFItNEhSSTPQHBFRLsw==", + "version": "8.8.3", + "resolved": "https://registry.npmjs.org/@cspell/cspell-types/-/cspell-types-8.8.3.tgz", + "integrity": "sha512-31wYSBPinhqKi9TSzPg50fWHJmMQwD1d5p26yM/NAfNQvjAfBQlrg4pqix8pxOJkAK5W/TnoaVXjzJ5XCg6arQ==", "dev": true, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/@cspell/dict-ada": { @@ -889,33 +1260,33 @@ "dev": true }, "node_modules/@cspell/dict-aws": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@cspell/dict-aws/-/dict-aws-4.0.0.tgz", - "integrity": "sha512-1YkCMWuna/EGIDN/zKkW+j98/55mxigftrSFgsehXhPld+ZMJM5J9UuBA88YfL7+/ETvBdd7mwW6IwWsC+/ltQ==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@cspell/dict-aws/-/dict-aws-4.0.2.tgz", + "integrity": "sha512-aNGHWSV7dRLTIn8WJemzLoMF62qOaiUQlgnsCwH5fRCD/00gsWCwg106pnbkmK4AyabyxzneOV4dfecDJWkSxw==", "dev": true }, "node_modules/@cspell/dict-bash": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@cspell/dict-bash/-/dict-bash-4.1.2.tgz", - "integrity": "sha512-AEBWjbaMaJEyAjOHW0F15P2izBjli2cNerG3NjuVH7xX/HUUeNoTj8FF1nwpMufKwGQCvuyO2hCmkVxhJ0y55Q==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@cspell/dict-bash/-/dict-bash-4.1.3.tgz", + "integrity": "sha512-tOdI3QVJDbQSwPjUkOiQFhYcu2eedmX/PtEpVWg0aFps/r6AyjUQINtTgpqMYnYuq8O1QUIQqnpx21aovcgZCw==", "dev": true }, "node_modules/@cspell/dict-companies": { - "version": "3.0.26", - "resolved": "https://registry.npmjs.org/@cspell/dict-companies/-/dict-companies-3.0.26.tgz", - "integrity": "sha512-BGRZ/Uykx+IgQoTGqvRqbBMQy7QSuY0pbTHgtmKtc1scgzZMJQKMDwyuE6LJzlhdlrV7TsVY0lyXREybnDpQPQ==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@cspell/dict-companies/-/dict-companies-3.1.1.tgz", + "integrity": "sha512-hooOyJ1q3o5tGkUOXyTY04psiYdyrcJkoQHMA4gX0zJzj+pQJCL812V+z9aI4vl1Qhjxfp2YHKF60DM+EndqGQ==", "dev": true }, "node_modules/@cspell/dict-cpp": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/@cspell/dict-cpp/-/dict-cpp-5.0.9.tgz", - "integrity": "sha512-ql9WPNp8c+fhdpVpjpZEUWmxBHJXs9CJuiVVfW/iwv5AX7VuMHyEwid+9/6nA8qnCxkUQ5pW83Ums1lLjn8ScA==", + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/@cspell/dict-cpp/-/dict-cpp-5.1.7.tgz", + "integrity": "sha512-qVuXo5rm9sySIrDwTfL62WF0BTiJXc4jAa53RvKV2f7wJL4LiJLNPpvY6oNU7G311VLf9QlTteRnlSulZLav/A==", "dev": true }, "node_modules/@cspell/dict-cryptocurrencies": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@cspell/dict-cryptocurrencies/-/dict-cryptocurrencies-4.0.0.tgz", - "integrity": "sha512-EiZp91ATyRxTmauIQfOX9adLYCunKjHEh092rrM7o2eMXP9n7zpXAL9BK7LviL+LbB8VDOm21q+s83cKrrRrsg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@cspell/dict-cryptocurrencies/-/dict-cryptocurrencies-5.0.0.tgz", + "integrity": "sha512-Z4ARIw5+bvmShL+4ZrhDzGhnc9znaAGHOEMaB/GURdS/jdoreEDY34wdN0NtdLHDO5KO7GduZnZyqGdRoiSmYA==", "dev": true }, "node_modules/@cspell/dict-csharp": { @@ -955,9 +1326,9 @@ "dev": true }, "node_modules/@cspell/dict-dotnet": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@cspell/dict-dotnet/-/dict-dotnet-5.0.0.tgz", - "integrity": "sha512-EOwGd533v47aP5QYV8GlSSKkmM9Eq8P3G/eBzSpH3Nl2+IneDOYOBLEUraHuiCtnOkNsz0xtZHArYhAB2bHWAw==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@cspell/dict-dotnet/-/dict-dotnet-5.0.2.tgz", + "integrity": "sha512-UD/pO2A2zia/YZJ8Kck/F6YyDSpCMq0YvItpd4YbtDVzPREfTZ48FjZsbYi4Jhzwfvc6o8R56JusAE58P+4sNQ==", "dev": true }, "node_modules/@cspell/dict-elixir": { @@ -967,15 +1338,15 @@ "dev": true }, "node_modules/@cspell/dict-en_us": { - "version": "4.3.11", - "resolved": "https://registry.npmjs.org/@cspell/dict-en_us/-/dict-en_us-4.3.11.tgz", - "integrity": "sha512-GhdavZFlS2YbUNcRtPbgJ9j6aUyq116LmDQ2/Q5SpQxJ5/6vVs8Yj5WxV1JD+Zh/Zim1NJDcneTOuLsUGi+Czw==", + "version": "4.3.20", + "resolved": "https://registry.npmjs.org/@cspell/dict-en_us/-/dict-en_us-4.3.20.tgz", + "integrity": "sha512-xxjV+iA+eoDtFPUhN7G42kvGBBCR4nxCv31Uo9mr/EjwsBqKcskTewcWRD7o4Vy66hppkXOayH2jWw8orD4/9g==", "dev": true }, "node_modules/@cspell/dict-en-common-misspellings": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@cspell/dict-en-common-misspellings/-/dict-en-common-misspellings-1.0.2.tgz", - "integrity": "sha512-jg7ZQZpZH7+aAxNBlcAG4tGhYF6Ksy+QS5Df73Oo+XyckBjC9QS+PrRwLTeYoFIgXy5j3ICParK5r3MSSoL4gw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@cspell/dict-en-common-misspellings/-/dict-en-common-misspellings-2.0.1.tgz", + "integrity": "sha512-uWaP8UG4uvcPyqaG0FzPKCm5kfmhsiiQ45Fs6b3/AEAqfq7Fj1JW0+S3qRt85FQA9SoU6gUJCz9wkK/Ylh7m5A==", "dev": true }, "node_modules/@cspell/dict-en-gb": { @@ -985,9 +1356,9 @@ "dev": true }, "node_modules/@cspell/dict-filetypes": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@cspell/dict-filetypes/-/dict-filetypes-3.0.1.tgz", - "integrity": "sha512-8z8mY1IbrTyTRumx2vvD9yzRhNMk9SajM/GtI5hdMM2pPpNSp25bnuauzjRf300eqlqPY2MNb5MmhBFO014DJw==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@cspell/dict-filetypes/-/dict-filetypes-3.0.4.tgz", + "integrity": "sha512-IBi8eIVdykoGgIv5wQhOURi5lmCNJq0we6DvqKoPQJHthXbgsuO1qrHSiUVydMiQl/XvcnUWTMeAlVUlUClnVg==", "dev": true }, "node_modules/@cspell/dict-fonts": { @@ -1003,27 +1374,33 @@ "dev": true }, "node_modules/@cspell/dict-fullstack": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/@cspell/dict-fullstack/-/dict-fullstack-3.1.5.tgz", - "integrity": "sha512-6ppvo1dkXUZ3fbYn/wwzERxCa76RtDDl5Afzv2lijLoijGGUw5yYdLBKJnx8PJBGNLh829X352ftE7BElG4leA==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/@cspell/dict-fullstack/-/dict-fullstack-3.1.8.tgz", + "integrity": "sha512-YRlZupL7uqMCtEBK0bDP9BrcPnjDhz7m4GBqCc1EYqfXauHbLmDT8ELha7T/E7wsFKniHSjzwDZzhNXo2lusRQ==", "dev": true }, "node_modules/@cspell/dict-gaming-terms": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@cspell/dict-gaming-terms/-/dict-gaming-terms-1.0.4.tgz", - "integrity": "sha512-hbDduNXlk4AOY0wFxcDMWBPpm34rpqJBeqaySeoUH70eKxpxm+dvjpoRLJgyu0TmymEICCQSl6lAHTHSDiWKZg==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@cspell/dict-gaming-terms/-/dict-gaming-terms-1.0.5.tgz", + "integrity": "sha512-C3riccZDD3d9caJQQs1+MPfrUrQ+0KHdlj9iUR1QD92FgTOF6UxoBpvHUUZ9YSezslcmpFQK4xQQ5FUGS7uWfw==", "dev": true }, "node_modules/@cspell/dict-git": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@cspell/dict-git/-/dict-git-2.0.0.tgz", - "integrity": "sha512-n1AxyX5Kgxij/sZFkxFJlzn3K9y/sCcgVPg/vz4WNJ4K9YeTsUmyGLA2OQI7d10GJeiuAo2AP1iZf2A8j9aj2w==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@cspell/dict-git/-/dict-git-3.0.0.tgz", + "integrity": "sha512-simGS/lIiXbEaqJu9E2VPoYW1OTC2xrwPPXNXFMa2uo/50av56qOuaxDrZ5eH1LidFXwoc8HROCHYeKoNrDLSw==", "dev": true }, "node_modules/@cspell/dict-golang": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@cspell/dict-golang/-/dict-golang-6.0.4.tgz", - "integrity": "sha512-jOfewPEyN6U9Q80okE3b1PTYBfqZgHh7w4o271GSuAX+VKJ1lUDhdR4bPKRxSDdO5jHArw2u5C8nH2CWGuygbQ==", + "version": "6.0.9", + "resolved": "https://registry.npmjs.org/@cspell/dict-golang/-/dict-golang-6.0.9.tgz", + "integrity": "sha512-etDt2WQauyEQDA+qPS5QtkYTb2I9l5IfQftAllVoB1aOrT6bxxpHvMEpJ0Hsn/vezxrCqa/BmtUbRxllIxIuSg==", + "dev": true + }, + "node_modules/@cspell/dict-google": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@cspell/dict-google/-/dict-google-1.0.1.tgz", + "integrity": "sha512-dQr4M3n95uOhtloNSgB9tYYGXGGEGEykkFyRtfcp5pFuEecYUa0BSgtlGKx9RXVtJtKgR+yFT/a5uQSlt8WjqQ==", "dev": true }, "node_modules/@cspell/dict-haskell": { @@ -1050,10 +1427,16 @@ "integrity": "sha512-kdE4AHHHrixyZ5p6zyms1SLoYpaJarPxrz8Tveo6gddszBVVwIUZ+JkQE1bWNLK740GWzIXdkznpUfw1hP9nXw==", "dev": true }, + "node_modules/@cspell/dict-julia": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@cspell/dict-julia/-/dict-julia-1.0.1.tgz", + "integrity": "sha512-4JsCLCRhhLMLiaHpmR7zHFjj1qOauzDI5ZzCNQS31TUMfsOo26jAKDfo0jljFAKgw5M2fEG7sKr8IlPpQAYrmQ==", + "dev": true + }, "node_modules/@cspell/dict-k8s": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@cspell/dict-k8s/-/dict-k8s-1.0.2.tgz", - "integrity": "sha512-tLT7gZpNPnGa+IIFvK9SP1LrSpPpJ94a/DulzAPOb1Q2UBFwdpFd82UWhio0RNShduvKG/WiMZf/wGl98pn+VQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cspell/dict-k8s/-/dict-k8s-1.0.4.tgz", + "integrity": "sha512-p3RjEkiwh5b1gLkYUMV9w5MHqWYTI1Sm2j4x8QZ+NZHB53PORrjPDyWSaG4giqKYAfs3UYB7QZUyBt0Sb68Vsw==", "dev": true }, "node_modules/@cspell/dict-latex": { @@ -1069,45 +1452,57 @@ "dev": true }, "node_modules/@cspell/dict-lua": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@cspell/dict-lua/-/dict-lua-4.0.2.tgz", - "integrity": "sha512-eeC20Q+UnHcTVBK6pgwhSjGIVugO2XqU7hv4ZfXp2F9DxGx1RME0+1sKX4qAGhdFGwOBsEzb2fwUsAEP6Mibpg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@cspell/dict-lua/-/dict-lua-4.0.3.tgz", + "integrity": "sha512-lDHKjsrrbqPaea13+G9s0rtXjMO06gPXPYRjRYawbNmo4E/e3XFfVzeci3OQDQNDmf2cPOwt9Ef5lu2lDmwfJg==", + "dev": true + }, + "node_modules/@cspell/dict-makefile": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@cspell/dict-makefile/-/dict-makefile-1.0.0.tgz", + "integrity": "sha512-3W9tHPcSbJa6s0bcqWo6VisEDTSN5zOtDbnPabF7rbyjRpNo0uHXHRJQF8gAbFzoTzBBhgkTmrfSiuyQm7vBUQ==", + "dev": true + }, + "node_modules/@cspell/dict-monkeyc": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@cspell/dict-monkeyc/-/dict-monkeyc-1.0.6.tgz", + "integrity": "sha512-oO8ZDu/FtZ55aq9Mb67HtaCnsLn59xvhO/t2mLLTHAp667hJFxpp7bCtr2zOrR1NELzFXmKln/2lw/PvxMSvrA==", "dev": true }, "node_modules/@cspell/dict-node": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@cspell/dict-node/-/dict-node-4.0.3.tgz", - "integrity": "sha512-sFlUNI5kOogy49KtPg8SMQYirDGIAoKBO3+cDLIwD4MLdsWy1q0upc7pzGht3mrjuyMiPRUV14Bb0rkVLrxOhg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@cspell/dict-node/-/dict-node-5.0.1.tgz", + "integrity": "sha512-lax/jGz9h3Dv83v8LHa5G0bf6wm8YVRMzbjJPG/9rp7cAGPtdrga+XANFq+B7bY5+jiSA3zvj10LUFCFjnnCCg==", "dev": true }, "node_modules/@cspell/dict-npm": { - "version": "5.0.12", - "resolved": "https://registry.npmjs.org/@cspell/dict-npm/-/dict-npm-5.0.12.tgz", - "integrity": "sha512-T/+WeQmtbxo7ad6hrdI8URptYstKJP+kXyWJZfuVJJGWJQ7yubxrI5Z5AfM+Dh/ff4xHmdzapxD9adaEQ727uw==", + "version": "5.0.16", + "resolved": "https://registry.npmjs.org/@cspell/dict-npm/-/dict-npm-5.0.16.tgz", + "integrity": "sha512-ZWPnLAziEcSCvV0c8k9Qj88pfMu+wZwM5Qks87ShsfBgI8uLZ9tGHravA7gmjH1Gd7Bgxy2ulvXtSqIWPh1lew==", "dev": true }, "node_modules/@cspell/dict-php": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@cspell/dict-php/-/dict-php-4.0.4.tgz", - "integrity": "sha512-fRlLV730fJbulDsLIouZxXoxHt3KIH6hcLFwxaupHL+iTXDg0lo7neRpbqD5MScr/J3idEr7i9G8XWzIikKFug==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/@cspell/dict-php/-/dict-php-4.0.7.tgz", + "integrity": "sha512-SUCOBfRDDFz1E2jnAZIIuy8BNbCc8i+VkiL9g4HH9tTN6Nlww5Uz2pMqYS6rZQkXuubqsbkbPlsRiuseEnTmYA==", "dev": true }, "node_modules/@cspell/dict-powershell": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@cspell/dict-powershell/-/dict-powershell-5.0.2.tgz", - "integrity": "sha512-IHfWLme3FXE7vnOmMncSBxOsMTdNWd1Vcyhag03WS8oANSgX8IZ+4lMI00mF0ptlgchf16/OU8WsV4pZfikEFw==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@cspell/dict-powershell/-/dict-powershell-5.0.4.tgz", + "integrity": "sha512-eosDShapDgBWN9ULF7+sRNdUtzRnUdsfEdBSchDm8FZA4HOqxUSZy3b/cX/Rdw0Fnw0AKgk0kzgXw7tS6vwJMQ==", "dev": true }, "node_modules/@cspell/dict-public-licenses": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@cspell/dict-public-licenses/-/dict-public-licenses-2.0.5.tgz", - "integrity": "sha512-91HK4dSRri/HqzAypHgduRMarJAleOX5NugoI8SjDLPzWYkwZ1ftuCXSk+fy8DLc3wK7iOaFcZAvbjmnLhVs4A==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@cspell/dict-public-licenses/-/dict-public-licenses-2.0.7.tgz", + "integrity": "sha512-KlBXuGcN3LE7tQi/GEqKiDewWGGuopiAD0zRK1QilOx5Co8XAvs044gk4MNIQftc8r0nHeUI+irJKLGcR36DIQ==", "dev": true }, "node_modules/@cspell/dict-python": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@cspell/dict-python/-/dict-python-4.1.9.tgz", - "integrity": "sha512-JMA4v/ZPJWuDt3PPFz+23VIY3iDIB+xOTQ6nw+WkcJU5yr6FUl5zMU9ModKrgujg3jGRuuJqofErZVPqHNHYAA==", + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@cspell/dict-python/-/dict-python-4.1.11.tgz", + "integrity": "sha512-XG+v3PumfzUW38huSbfT15Vqt3ihNb462ulfXifpQllPok5OWynhszCLCRQjQReV+dgz784ST4ggRxW452/kVg==", "dev": true, "dependencies": { "@cspell/dict-data-science": "^1.0.11" @@ -1120,33 +1515,33 @@ "dev": true }, "node_modules/@cspell/dict-ruby": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@cspell/dict-ruby/-/dict-ruby-5.0.1.tgz", - "integrity": "sha512-rruTm7Emhty/BSYavSm8ZxRuVw0OBqzJkwIFXcV0cX7To8D1qbmS9HFHRuRg8IL11+/nJvtdDz+lMFBSmPUagQ==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@cspell/dict-ruby/-/dict-ruby-5.0.2.tgz", + "integrity": "sha512-cIh8KTjpldzFzKGgrqUX4bFyav5lC52hXDKo4LbRuMVncs3zg4hcSf4HtURY+f2AfEZzN6ZKzXafQpThq3dl2g==", "dev": true }, "node_modules/@cspell/dict-rust": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@cspell/dict-rust/-/dict-rust-4.0.1.tgz", - "integrity": "sha512-xJSSzHDK2z6lSVaOmMxl3PTOtfoffaxMo7fTcbZUF+SCJzfKbO6vnN9TCGX2sx1RHFDz66Js6goz6SAZQdOwaw==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@cspell/dict-rust/-/dict-rust-4.0.3.tgz", + "integrity": "sha512-8DFCzkFQ+2k3fDaezWc/D+0AyiBBiOGYfSDUfrTNU7wpvUvJ6cRcAUshMI/cn2QW/mmxTspRgVlXsE6GUMz00Q==", "dev": true }, "node_modules/@cspell/dict-scala": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@cspell/dict-scala/-/dict-scala-5.0.0.tgz", - "integrity": "sha512-ph0twaRoV+ylui022clEO1dZ35QbeEQaKTaV2sPOsdwIokABPIiK09oWwGK9qg7jRGQwVaRPEq0Vp+IG1GpqSQ==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@cspell/dict-scala/-/dict-scala-5.0.2.tgz", + "integrity": "sha512-v97ClgidZt99JUm7OjhQugDHmhx4U8fcgunHvD/BsXWjXNj4cTr0m0YjofyZoL44WpICsNuFV9F/sv9OM5HUEw==", "dev": true }, "node_modules/@cspell/dict-software-terms": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@cspell/dict-software-terms/-/dict-software-terms-3.3.9.tgz", - "integrity": "sha512-/O3EWe0SIznx18S7J3GAXPDe7sexn3uTsf4IlnGYK9WY6ZRuEywkXCB+5/USLTGf4+QC05pkHofphdvVSifDyA==", + "version": "3.3.24", + "resolved": "https://registry.npmjs.org/@cspell/dict-software-terms/-/dict-software-terms-3.3.24.tgz", + "integrity": "sha512-RsLn/vp162c5kEr60dk3eEDyavJ9Kk+8mydLjbLKwuS3scN8h4zKxnN+whHvm5bSu4UanH+fVyf8MhHutN2q0Q==", "dev": true }, "node_modules/@cspell/dict-sql": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@cspell/dict-sql/-/dict-sql-2.1.2.tgz", - "integrity": "sha512-Pi0hAcvsSGtZZeyyAN1VfGtQJbrXos5x2QjJU0niAQKhmITSOrXU/1II1Gogk+FYDjWyV9wP2De0U2f7EWs6oQ==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@cspell/dict-sql/-/dict-sql-2.1.3.tgz", + "integrity": "sha512-SEyTNKJrjqD6PAzZ9WpdSu6P7wgdNtGV2RV8Kpuw1x6bV+YsSptuClYG+JSdRExBTE6LwIe1bTklejUp3ZP8TQ==", "dev": true }, "node_modules/@cspell/dict-svelte": { @@ -1161,10 +1556,16 @@ "integrity": "sha512-gxrCMUOndOk7xZFmXNtkCEeroZRnS2VbeaIPiymGRHj5H+qfTAzAKxtv7jJbVA3YYvEzWcVE2oKDP4wcbhIERw==", "dev": true }, + "node_modules/@cspell/dict-terraform": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@cspell/dict-terraform/-/dict-terraform-1.0.0.tgz", + "integrity": "sha512-Ak+vy4HP/bOgzf06BAMC30+ZvL9mzv21xLM2XtfnBLTDJGdxlk/nK0U6QT8VfFLqJ0ZZSpyOxGsUebWDCTr/zQ==", + "dev": true + }, "node_modules/@cspell/dict-typescript": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@cspell/dict-typescript/-/dict-typescript-3.1.2.tgz", - "integrity": "sha512-lcNOYWjLUvDZdLa0UMNd/LwfVdxhE9rKA+agZBGjL3lTA3uNvH7IUqSJM/IXhJoBpLLMVEOk8v1N9xi+vDuCdA==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@cspell/dict-typescript/-/dict-typescript-3.1.5.tgz", + "integrity": "sha512-EkIwwNV/xqEoBPJml2S16RXj65h1kvly8dfDLgXerrKw6puybZdvAHerAph6/uPTYdtLcsPyJYkPt5ISOJYrtw==", "dev": true }, "node_modules/@cspell/dict-vue": { @@ -1174,48 +1575,54 @@ "dev": true }, "node_modules/@cspell/dynamic-import": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/@cspell/dynamic-import/-/dynamic-import-7.3.8.tgz", - "integrity": "sha512-s8x7dH/ScfW0pFEIvNFo4JOR7YmvM2wZSHOykmWTJCQ8k2EQ/+uECPp6ZxkoJoukTz8sj+3KzF0fRl5mKxPd6g==", + "version": "8.8.3", + "resolved": "https://registry.npmjs.org/@cspell/dynamic-import/-/dynamic-import-8.8.3.tgz", + "integrity": "sha512-qpxGC2hGVfbSaLJkaEu//rqbgAOjYnMlbxD75Fk9ny96sr+ZI1YC0nmUErWlgXSbtjVY/DHCOu26Usweo5iRgA==", "dev": true, "dependencies": { - "import-meta-resolve": "^3.0.0" + "import-meta-resolve": "^4.1.0" }, "engines": { - "node": ">=16" + "node": ">=18.0" } }, "node_modules/@cspell/eslint-plugin": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/@cspell/eslint-plugin/-/eslint-plugin-7.3.8.tgz", - "integrity": "sha512-YVAonFYDpi0ycvkfThfVK/ViE1anRKOXo5nNMZFETjG4DvbLPf9RmiDcwBtK5eiGLjQADlaoiwByiV/NX4ipiA==", + "version": "8.8.3", + "resolved": "https://registry.npmjs.org/@cspell/eslint-plugin/-/eslint-plugin-8.8.3.tgz", + "integrity": "sha512-N32SkoOa9DoUkfhsaGHg2mZHYUx8Tt0M4d34UAnbbqYEFwYP6wfrAzMhX35vicX1kh1KHeoSUsr5PukUhx8GzQ==", "dev": true, "dependencies": { - "@cspell/cspell-types": "7.3.8", - "cspell-lib": "7.3.8", + "@cspell/cspell-types": "8.8.3", + "cspell-lib": "8.8.3", "estree-walker": "^3.0.3", - "synckit": "^0.8.5" + "synckit": "^0.9.0" }, "engines": { - "node": ">=16" + "node": ">=18" + }, + "peerDependencies": { + "eslint": "^7 || ^8 || ^9" } }, "node_modules/@cspell/strong-weak-map": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/@cspell/strong-weak-map/-/strong-weak-map-7.3.8.tgz", - "integrity": "sha512-qNnt2wG45wb8JP54mENarnQgxfSYKPp3zlYID/2przbMNmVJRqUlcIBOdLI6plCgGeNkzJTl3T9T1ATbnN+LLw==", + "version": "8.8.3", + "resolved": "https://registry.npmjs.org/@cspell/strong-weak-map/-/strong-weak-map-8.8.3.tgz", + "integrity": "sha512-y/pL7Zex8iHQ54qDYvg9oCiCgfZ9DAUTOI/VtPFVC+42JqLx6YufYxJS2uAsFlfAXIPiRV8qnnG6BHImD1Ix6g==", "dev": true, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/@es-joy/jsdoccomment": { - "version": "0.40.1", - "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.40.1.tgz", - "integrity": "sha512-YORCdZSusAlBrFpZ77pJjc5r1bQs5caPWtAu+WWmiSo+8XaUzseapVrfAtiRFbQWnrBxxLLEwF6f6ZG/UgCQCg==", + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.43.0.tgz", + "integrity": "sha512-Q1CnsQrytI3TlCB1IVWXWeqUIPGVEKGaE7IbVdt13Nq/3i0JESAkQQERrfiQkmlpijl+++qyqPgaS31Bvc1jRQ==", "dev": true, "dependencies": { - "comment-parser": "1.4.0", + "@types/eslint": "^8.56.5", + "@types/estree": "^1.0.5", + "@typescript-eslint/types": "^7.2.0", + "comment-parser": "1.4.1", "esquery": "^1.5.0", "jsdoc-type-pratt-parser": "~4.0.0" }, @@ -1223,6 +1630,19 @@ "node": ">=16" } }, + "node_modules/@es-joy/jsdoccomment/node_modules/@typescript-eslint/types": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.10.0.tgz", + "integrity": "sha512-7fNj+Ya35aNyhuqrA1E/VayQX9Elwr8NKZ4WueClR3KwJ7Xx9jcCdOrLW04h51de/+gNbyFMs+IDxh5xIwfbNg==", + "dev": true, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, "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", @@ -1239,18 +1659,18 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.6.2.tgz", - "integrity": "sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", "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==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", @@ -1286,25 +1706,47 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/@eslint/eslintrc/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/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/@eslint/js": { - "version": "8.52.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.52.0.tgz", - "integrity": "sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@exodus/schemasafe": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@exodus/schemasafe/-/schemasafe-1.2.3.tgz", - "integrity": "sha512-hmdFF4vVyvXosVdCCnZPCfrgwNPA79y3K5l0QzlKFcK5Qd3nkM9oGKcQYCTnTRWJXIV5SUMkkTFIEIdDFtxQPQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@exodus/schemasafe/-/schemasafe-1.3.0.tgz", + "integrity": "sha512-5Aap/GaRupgNx/feGBwLLTVv8OQFfv3pq2lPRzPg9R+IOBnDgghTGW7l7EuVXOvg5cc/xSAlRW8rBrjIC3Nvqw==", "dev": true }, "node_modules/@fastify/busboy": { @@ -1316,6 +1758,13 @@ "node": ">=14" } }, + "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, + "peer": true + }, "node_modules/@github/browserslist-config": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@github/browserslist-config/-/browserslist-config-1.0.0.tgz", @@ -1323,9 +1772,9 @@ "dev": true }, "node_modules/@hapi/hoek": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.2.tgz", - "integrity": "sha512-aKmlCO57XFZ26wso4rJsW4oTUnrgTFw2jh3io7CAtO9w4UltBNwRXvXIVzzyfkaaLRo3nluP/19msA8vDUUuKw==", + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", "dev": true }, "node_modules/@hapi/shot": { @@ -1357,20 +1806,48 @@ "@hapi/topo": "^6.0.1" } }, + "node_modules/@hexagon/base64": { + "version": "1.1.28", + "resolved": "https://registry.npmjs.org/@hexagon/base64/-/base64-1.1.28.tgz", + "integrity": "sha512-lhqDEAvWixy3bZ+UOYbPwUbBkwBq5C1LAJ/xPC8Oi+lL54oyakv/npbA0aU2hgCsx/1NUd4IBvV03+aUBWxerw==", + "peer": true + }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.13", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", - "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^2.0.1", - "debug": "^4.1.1", + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", "minimatch": "^3.0.5" }, "engines": { "node": ">=10.10.0" } }, + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", @@ -1385,9 +1862,9 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", - "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", "dev": true }, "node_modules/@isaacs/cliui": { @@ -1431,12 +1908,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, "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", @@ -1576,6 +2047,12 @@ "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", @@ -1586,32 +2063,32 @@ } }, "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==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dev": true, "dependencies": { - "@jridgewell/set-array": "^1.0.1", + "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/resolve-uri": { - "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==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "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==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true, "engines": { "node": ">=6.0.0" @@ -1624,26 +2101,32 @@ "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==", + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@levischuck/tiny-cbor": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@levischuck/tiny-cbor/-/tiny-cbor-0.2.2.tgz", + "integrity": "sha512-f5CnPw997Y2GQ8FAvtuVVC19FX8mwNNC+1XJcIi16n/LTJifKO6QBgGLgN3YEmqtGMk17SKSuoWES3imJVxAVw==", + "peer": true + }, "node_modules/@loopback/authentication": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/@loopback/authentication/-/authentication-10.1.1.tgz", - "integrity": "sha512-3ooI0ZCITtyTYap6KdS66K6rwW6Q6YjKTo4gy+TFjfsOYQS90FE8BA913VMXGkCYfrC7cuKVSVSlBhUHW7gXVg==", + "version": "10.1.5", + "resolved": "https://registry.npmjs.org/@loopback/authentication/-/authentication-10.1.5.tgz", + "integrity": "sha512-NO0bQpSeZ/aK6mBEdVR0ysgsbxhoAyOeJMYTif7JFKe57AzgXo/MKcQFbFbLrjfOIUCU8bJkY8hPBkwqI5aI9w==", "dev": true, "dependencies": { - "@loopback/security": "^0.10.1", - "@types/express": "^4.17.17", - "@types/lodash": "^4.14.195", + "@loopback/security": "^0.10.5", + "@types/express": "^4.17.21", + "@types/lodash": "^4.14.202", "lodash": "^4.17.21", - "tslib": "^2.6.0" + "tslib": "^2.6.2" }, "engines": { "node": "16 || 18 || 20" @@ -1654,14 +2137,14 @@ } }, "node_modules/@loopback/authorization": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/@loopback/authorization/-/authorization-0.14.1.tgz", - "integrity": "sha512-kTaCF0cEcaRRHot4YSeu9PJ0ScUiAsdooZfoHQxFk0EkcvwSHfyJrSK5wlNQz+zncth0bbdJ0r8qVkpI6wqB7A==", + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/@loopback/authorization/-/authorization-0.14.5.tgz", + "integrity": "sha512-ga4SCsrTY3G4uaoZhzr6ngAzDFjqGLUHePysoPGJfMu3eTs9OxCJs4fo6fZUn+pwKU5NsF5cJq19gCfJkEytdg==", "peer": true, "dependencies": { - "@loopback/security": "^0.10.1", + "@loopback/security": "^0.10.5", "debug": "^4.3.4", - "tslib": "^2.6.0" + "tslib": "^2.6.2" }, "engines": { "node": "16 || 18 || 20" @@ -1671,19 +2154,19 @@ } }, "node_modules/@loopback/boot": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@loopback/boot/-/boot-6.1.1.tgz", - "integrity": "sha512-IEokBv+pvgyFePi1n3hByEjP6sQO3FmQvoAcxhuuvHClaC+xM+Wig7ZBh3X3Wc5CkqA0NhkXCXpL7iNcqtMQUg==", + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/@loopback/boot/-/boot-6.1.5.tgz", + "integrity": "sha512-5NgBYJ5UDmN0JGizdo2J3zg2fdWC3WcCDThQ31NXQdbKfZYi8dDLfSITEqJiGqZnzHtH7uzwrQ0GecHKNv2jcQ==", "dev": true, "dependencies": { - "@loopback/model-api-builder": "^5.1.1", - "@loopback/repository": "^6.1.1", - "@loopback/service-proxy": "^6.1.1", - "@types/debug": "^4.1.8", + "@loopback/model-api-builder": "^5.1.5", + "@loopback/repository": "^6.1.5", + "@loopback/service-proxy": "^6.1.5", + "@types/debug": "^4.1.12", "@types/glob": "^8.1.0", "debug": "^4.3.4", - "glob": "^10.3.3", - "tslib": "^2.6.0" + "glob": "^10.3.10", + "tslib": "^2.6.2" }, "engines": { "node": "16 || 18 || 20" @@ -1693,26 +2176,26 @@ } }, "node_modules/@loopback/build": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/@loopback/build/-/build-10.1.1.tgz", - "integrity": "sha512-y61xSRFksAWI/fVuQm7SMfT+BrB+8i95cQBCKHsoyLRME4wVr0XMnXb/ng1tF+5riTO6m170HezSN3SzpSl0+w==", + "version": "10.1.5", + "resolved": "https://registry.npmjs.org/@loopback/build/-/build-10.1.5.tgz", + "integrity": "sha512-IU4rFOT5fCtenKkl776wrJUZXOwtSuIWk7OsuPBhclUoCFM+nVk/eOxG61MIGIVtI6fa3Qllg45f0SN6y5Fmlg==", "dev": true, "dependencies": { - "@loopback/eslint-config": "^14.0.2", - "@types/mocha": "^10.0.1", - "@types/node": "^16.18.38", + "@loopback/eslint-config": "^14.0.5", + "@types/mocha": "^10.0.6", + "@types/node": "^16.18.70", "cross-spawn": "^7.0.3", "debug": "^4.3.4", - "eslint": "^8.45.0", - "fs-extra": "^11.1.1", - "glob": "^10.3.3", + "eslint": "^8.51.0", + "fs-extra": "^11.2.0", + "glob": "^10.3.10", "lodash": "^4.17.21", "mocha": "^10.2.0", "nyc": "^15.1.0", - "prettier": "^2.8.8", - "rimraf": "^5.0.1", + "prettier": "^3.0.3", + "rimraf": "^5.0.5", "source-map-support": "^0.5.21", - "typescript": "~5.1.6" + "typescript": "~5.2.2" }, "bin": { "lb-clean": "bin/run-clean.js", @@ -1728,78 +2211,91 @@ } }, "node_modules/@loopback/build/node_modules/@types/node": { - "version": "16.18.40", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.40.tgz", - "integrity": "sha512-+yno3ItTEwGxXiS/75Q/aHaa5srkpnJaH+kdkTVJ3DtJEwv92itpKbxU+FjPoh2m/5G9zmUQfrL4A4C13c+iGA==", + "version": "16.18.97", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.97.tgz", + "integrity": "sha512-4muilE1Lbfn57unR+/nT9AFjWk0MtWi5muwCEJqnOvfRQDbSfLCUdN7vCIg8TYuaANfhLOV85ve+FNpiUsbSRg==", "dev": true }, + "node_modules/@loopback/build/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/@loopback/context": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@loopback/context/-/context-6.1.1.tgz", - "integrity": "sha512-3PgjTpGtB+5DDVMpxaUWFLzcx529EOKI2FRqud19imnOVWx4su5bfbWocqM84JjT645HCiKucNjz5oamd3+zcQ==", + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/@loopback/context/-/context-6.1.5.tgz", + "integrity": "sha512-u1Hyj6bXQyWszSfuzHbEtfS7bJCOLZM4w+OLoaGhloKQUF6c89tGRrOE+otKZeKVOeFvLY+WG8C/5cwxKuDeJA==", "dependencies": { - "@loopback/metadata": "^6.1.1", - "@types/debug": "^4.1.8", + "@loopback/metadata": "^6.1.5", + "@types/debug": "^4.1.12", "debug": "^4.3.4", "hyperid": "^3.1.1", "p-event": "^4.2.0", - "tslib": "^2.6.0", - "uuid": "^9.0.0" + "tslib": "^2.6.2", + "uuid": "^9.0.1" }, "engines": { "node": "16 || 18 || 20" } }, "node_modules/@loopback/core": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@loopback/core/-/core-5.1.1.tgz", - "integrity": "sha512-++S6t3znt8VXpU8JOwGziu7l2WRaAwzp0g/N3UXMQhtkEmg0DCz5NXdJTxx0ogt6uF18ZgccPl9bxdGPtLhJoQ==", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@loopback/core/-/core-5.1.5.tgz", + "integrity": "sha512-S/461nALyCFv252bgjbq4qP3x8gfHAw4xvQf+Bz8786mZrOC7ulAIDfVlndrTlXLkto/3sLueRAz4hlN3fCAYg==", "dependencies": { - "@loopback/context": "^6.1.1", + "@loopback/context": "^6.1.5", "debug": "^4.3.4", - "tslib": "^2.6.0" + "tslib": "^2.6.2" }, "engines": { "node": "16 || 18 || 20" } }, "node_modules/@loopback/eslint-config": { - "version": "14.0.2", - "resolved": "https://registry.npmjs.org/@loopback/eslint-config/-/eslint-config-14.0.2.tgz", - "integrity": "sha512-3T6rspVwU1Gs51wwrhEtae++yRCUn6KS6qKU20ziLn888zwa5X/jAAnO7/Vo2r2dsVZFiA+Fv8Awy6lNlX+y4A==", + "version": "14.0.5", + "resolved": "https://registry.npmjs.org/@loopback/eslint-config/-/eslint-config-14.0.5.tgz", + "integrity": "sha512-8siWnjPzQhx016YkvFNS4Y4wyK9gR2wRCwKfIHdXcD9AwQlqPCRb4H1YagYdx3QEQ5vycW3cpTA1nwZReN2D8A==", "dev": true, "dependencies": { - "@typescript-eslint/eslint-plugin": "^5.62.0", - "@typescript-eslint/parser": "^5.62.0", - "eslint-config-prettier": "^8.8.0", - "eslint-plugin-eslint-plugin": "^5.1.0", - "eslint-plugin-mocha": "^10.1.0" + "@typescript-eslint/eslint-plugin": "^6.8.0", + "@typescript-eslint/parser": "^6.8.0", + "eslint-config-prettier": "^9.0.0", + "eslint-plugin-eslint-plugin": "^5.1.1", + "eslint-plugin-mocha": "^10.2.0" }, "engines": { "node": "16 || 18 || 20" }, "peerDependencies": { - "eslint": "^8.45.0" + "eslint": "^8.51.0" } }, "node_modules/@loopback/express": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@loopback/express/-/express-6.1.1.tgz", - "integrity": "sha512-b9yXJxomjMwoNyC/bXRNMkjnjdOFP9LFuxcMMsGrH9VeMoB6V1YMB5A0fdkdN5Z25DzCMPLNXeGuuxNjRn4CVQ==", + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/@loopback/express/-/express-6.1.5.tgz", + "integrity": "sha512-oQlH2Dngx4b3b/PNLijBnL6mRsrCFW17fwRGc3IMeGDE0HzpqVk5r8OwTtH9ddjRfkikdG3iQnWqymaXRf2cAw==", "dev": true, "dependencies": { - "@loopback/http-server": "^5.1.1", - "@types/body-parser": "^1.19.2", - "@types/express": "^4.17.17", - "@types/express-serve-static-core": "^4.17.35", - "@types/http-errors": "^2.0.1", + "@loopback/http-server": "^5.1.5", + "@types/body-parser": "^1.19.5", + "@types/express": "^4.17.21", + "@types/express-serve-static-core": "^4.17.37", + "@types/http-errors": "^2.0.4", "body-parser": "^1.20.2", "debug": "^4.3.4", "express": "^4.18.2", "http-errors": "^2.0.0", "on-finished": "^2.4.1", "toposort": "^2.0.2", - "tslib": "^2.6.0" + "tslib": "^2.6.2" }, "engines": { "node": "16 || 18 || 20" @@ -1809,52 +2305,52 @@ } }, "node_modules/@loopback/filter": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@loopback/filter/-/filter-4.1.1.tgz", - "integrity": "sha512-Jtv6gJ/C1kXM19EJOi8CH/9FQVwQN0r5UnDC2BVsU0OJ+FDsfAqmEMv8tlgHRmnL/63VMv89K4RXqvRcdGgZRw==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@loopback/filter/-/filter-4.1.5.tgz", + "integrity": "sha512-D5+lMFrehbHhBRAloHk4WqQSEcN9GqtLl5L0QyMePP7I5MpS778H16oz7QJfveCnOoMLd3Y1umF8BqM2gveDAw==", "dev": true, "dependencies": { - "tslib": "^2.6.0" + "tslib": "^2.6.2" }, "engines": { "node": "16 || 18 || 20" } }, "node_modules/@loopback/http-server": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@loopback/http-server/-/http-server-5.1.1.tgz", - "integrity": "sha512-WGBxsrCVJ6xaLgmmw1j9XmOPh+iTaXEW1TNrWnfc2nspZLcnzPbCDDqRLQZdoUlAqiDGhGhXHwb/H5XF8o057A==", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@loopback/http-server/-/http-server-5.1.5.tgz", + "integrity": "sha512-f9vTHdmrxagUY6HK4b8Tv1LhMTtRCK2rH5iGYUMYUpKe9lSOKnOKVm7XSBXB4YZd6sPxpwxJcMgzcPrWChTZRA==", "dev": true, "dependencies": { "debug": "^4.3.4", "stoppable": "^1.1.0", - "tslib": "^2.6.0" + "tslib": "^2.6.2" }, "engines": { "node": "16 || 18 || 20" } }, "node_modules/@loopback/metadata": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@loopback/metadata/-/metadata-6.1.1.tgz", - "integrity": "sha512-9Z5DD00xrMC6HqpJ23t+83Yridwx6NptgCNRJ4eQADrT6HoMWaQfxXq/jRaQndA32ofqLvc77cJL0CN3z4dFzQ==", + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/@loopback/metadata/-/metadata-6.1.5.tgz", + "integrity": "sha512-/5x6al0Y5pS/4YIxMdd29XyI/NhfAflp2clqrUAmXX82kjgWodUHedFCtw7xfKOMqj2NpXI9P6Fk33ur3+/wAg==", "dependencies": { "debug": "^4.3.4", "lodash": "^4.17.21", - "reflect-metadata": "^0.1.13", - "tslib": "^2.6.0" + "reflect-metadata": "^0.2.1", + "tslib": "^2.6.2" }, "engines": { "node": "16 || 18 || 20" } }, "node_modules/@loopback/model-api-builder": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@loopback/model-api-builder/-/model-api-builder-5.1.1.tgz", - "integrity": "sha512-LbKK2FDI+Z679MukZyRURTrIUT/OHl3WLnTAcV0uxhar+kflGWjI61I88fyytfZflqXu7EfzeLGpqMZfvaOv8A==", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@loopback/model-api-builder/-/model-api-builder-5.1.5.tgz", + "integrity": "sha512-rIiMPGztaPETqBTvmpXGI9D0hHOnzhNyixZk1ewGoDZzkwsLLfi9E3swZE/4EgomwWxl8AhnrZKqBVZgBzQePA==", "dev": true, "dependencies": { - "tslib": "^2.6.0" + "tslib": "^2.6.2" }, "engines": { "node": "16 || 18 || 20" @@ -1865,18 +2361,18 @@ } }, "node_modules/@loopback/openapi-v3": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/@loopback/openapi-v3/-/openapi-v3-9.1.1.tgz", - "integrity": "sha512-BnkpVmoqE80xGv5yQOEcS3iZ5CyOgWWV3PNsrDHHqKuTMRdVtT50+76giAd7JhJrScpn+VxnDppB0JrH6WoVUg==", + "version": "9.1.5", + "resolved": "https://registry.npmjs.org/@loopback/openapi-v3/-/openapi-v3-9.1.5.tgz", + "integrity": "sha512-n8B2uZk2S7SYFDUm0famDjAQ1DMTjiELDEP0R52L9Zx/ZGfuFFCiUPc3KeDH9/W0uCMs9wRqP+hSxoABZeT+Dw==", "dev": true, "dependencies": { - "@loopback/repository-json-schema": "^7.1.1", + "@loopback/repository-json-schema": "^7.2.1", "debug": "^4.3.4", - "http-status": "^1.6.2", + "http-status": "^1.7.3", "json-merge-patch": "^1.0.2", "lodash": "^4.17.21", "openapi3-ts": "^2.0.2", - "tslib": "^2.6.0" + "tslib": "^2.6.2" }, "engines": { "node": "16 || 18 || 20" @@ -1886,17 +2382,17 @@ } }, "node_modules/@loopback/repository": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@loopback/repository/-/repository-6.1.1.tgz", - "integrity": "sha512-jQGhtzPwoYyx3UD5dpBQpSmkJ07Y8MtsXMbOfI/AhYpNsoD0CFQlPENv95tmSFonvbAmRTpdcf3KKXkoYwJocA==", + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/@loopback/repository/-/repository-6.1.5.tgz", + "integrity": "sha512-JWdescHh/7ucwnjxTaEo45Ce4Cak+m75UO5GFRikH4WsRGtJDr/eWdR/fDnnl7wgVTxca1mvNZhADs21O9ZPzA==", "dev": true, "dependencies": { - "@loopback/filter": "^4.1.1", - "@types/debug": "^4.1.8", + "@loopback/filter": "^4.1.5", + "@types/debug": "^4.1.12", "debug": "^4.3.4", "lodash": "^4.17.21", - "loopback-datasource-juggler": "^4.28.8", - "tslib": "^2.6.0" + "loopback-datasource-juggler": "^5.0.5", + "tslib": "^2.6.2" }, "engines": { "node": "16 || 18 || 20" @@ -1906,14 +2402,14 @@ } }, "node_modules/@loopback/repository-json-schema": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@loopback/repository-json-schema/-/repository-json-schema-7.1.1.tgz", - "integrity": "sha512-1ihpUf5UbT55LcgfGDpDa/8SCSOuAGxj083MJbon4egAtkt6j4bvuCtNu24nJB+k/3WhgIYaOG+C63Cj2TdohA==", + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@loopback/repository-json-schema/-/repository-json-schema-7.2.1.tgz", + "integrity": "sha512-dnFJ21aha88gWM4mN4qRIft1q9Eaz4SvgUNxPBFtpVE9Lvhh00xphW6f92PxVQHlOpn6SC3pQs+mTtxpszCvvw==", "dev": true, "dependencies": { - "@types/json-schema": "^7.0.12", + "@types/json-schema": "^7.0.15", "debug": "^4.3.4", - "tslib": "^2.6.0" + "tslib": "^2.6.2" }, "engines": { "node": "16 || 18 || 20" @@ -1924,23 +2420,23 @@ } }, "node_modules/@loopback/rest": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/@loopback/rest/-/rest-13.1.1.tgz", - "integrity": "sha512-FYRDIu+VnXlpeJMDvjj3Ou2Qm5YgyaVRYssD25aCMUN3VounjKKlgDfmcurYFidAE/tsF8RMBjOFguMclrs4xQ==", + "version": "13.1.5", + "resolved": "https://registry.npmjs.org/@loopback/rest/-/rest-13.1.5.tgz", + "integrity": "sha512-gtjaXxVFTsFldjWcvt+165Fmsgmbn/TNJk16E1lVvu5hA5/4BNDDkbexe1JSU+/+gVhY9z4okF+p2D9VnOL8lA==", "dev": true, "dependencies": { - "@loopback/express": "^6.1.1", - "@loopback/http-server": "^5.1.1", - "@loopback/openapi-v3": "^9.1.1", + "@loopback/express": "^6.1.5", + "@loopback/http-server": "^5.1.5", + "@loopback/openapi-v3": "^9.1.5", "@openapi-contrib/openapi-schema-to-json-schema": "^4.0.5", - "@types/body-parser": "^1.19.2", - "@types/cors": "^2.8.13", - "@types/express": "^4.17.17", - "@types/express-serve-static-core": "^4.17.35", - "@types/http-errors": "^2.0.1", - "@types/on-finished": "^2.3.1", - "@types/serve-static": "1.15.2", - "@types/type-is": "^1.6.3", + "@types/body-parser": "^1.19.5", + "@types/cors": "^2.8.17", + "@types/express": "^4.17.21", + "@types/express-serve-static-core": "^4.17.37", + "@types/http-errors": "^2.0.4", + "@types/on-finished": "^2.3.4", + "@types/serve-static": "1.15.5", + "@types/type-is": "^1.6.6", "ajv": "^8.12.0", "ajv-errors": "^3.0.0", "ajv-formats": "^2.1.1", @@ -1956,10 +2452,10 @@ "on-finished": "^2.4.1", "path-to-regexp": "^6.2.1", "qs": "^6.11.2", - "strong-error-handler": "^4.0.7", - "tslib": "^2.6.0", + "strong-error-handler": "^5.0.6", + "tslib": "^2.6.2", "type-is": "^1.6.18", - "validator": "^13.9.0" + "validator": "^13.11.0" }, "engines": { "node": "16 || 18 || 20" @@ -1969,14 +2465,14 @@ } }, "node_modules/@loopback/rest-explorer": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@loopback/rest-explorer/-/rest-explorer-6.1.1.tgz", - "integrity": "sha512-heKxIzUbozNMljL/BXTo1ne36A9FLzmxoE4dvohywyapd3QezHHfXIHwHdv+T/C+HKbAg09xmDZV7b5M1YLc0w==", + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/@loopback/rest-explorer/-/rest-explorer-6.1.5.tgz", + "integrity": "sha512-lXSmypX2cTEZwZWnXMe2Q12pV3EoHD3F/AxhdKpcPX3Jpg+F3udPac7fL0F75Tm43Z7j6t8xW/0+/ByUE9ti4w==", "dev": true, "dependencies": { "ejs": "^3.1.9", - "swagger-ui-dist": "5.1.1", - "tslib": "^2.6.0" + "swagger-ui-dist": "5.11.0", + "tslib": "^2.6.2" }, "engines": { "node": "16 || 18 || 20" @@ -1987,12 +2483,12 @@ } }, "node_modules/@loopback/security": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/@loopback/security/-/security-0.10.1.tgz", - "integrity": "sha512-RhVUUrD1J1fYXHVekMy+mAiPYLU6yE4IDJ/mQNVcxm6dDWA904kBgFPHC3/TjMwepwFQTNIUw8vfEcgqoEoJfA==", + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@loopback/security/-/security-0.10.5.tgz", + "integrity": "sha512-lWjUc7TtAWNTmkShnqrgCYAimBlJVPylnZtqMiZ8Cf4FXs6H/jWDa0w67detTDPqUmIKRjAm5Ecl2hAf/O91Ww==", "dependencies": { "debug": "^4.3.4", - "tslib": "^2.6.0" + "tslib": "^2.6.2" }, "engines": { "node": "16 || 18 || 20" @@ -2002,13 +2498,13 @@ } }, "node_modules/@loopback/service-proxy": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@loopback/service-proxy/-/service-proxy-6.1.1.tgz", - "integrity": "sha512-oC/TrQEPD60o7jpZ1B9jcTErILUtP04MQVnTAluBbVrhlRhTGtI0Sp9rBmID2J1G71rLKspGjolF4vWlQ9sSpg==", + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/@loopback/service-proxy/-/service-proxy-6.1.5.tgz", + "integrity": "sha512-d1MHQNR9zon7kduaJGieUUee/uBVEpssW6j0ewiLfKfkBM6kruhq6+pc2uhyaWTaJMGOrz0sPIvgeTPGDzLfxw==", "dev": true, "dependencies": { - "loopback-datasource-juggler": "^4.28.8", - "tslib": "^2.6.0" + "loopback-datasource-juggler": "^5.0.5", + "tslib": "^2.6.2" }, "engines": { "node": "16 || 18 || 20" @@ -2018,24 +2514,24 @@ } }, "node_modules/@loopback/testlab": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@loopback/testlab/-/testlab-6.1.1.tgz", - "integrity": "sha512-EffhhTc9sMmD/FHAGB2tBWxIYLrEFzITxEHn3I/vVhR/+pOtOtbV/nGDIh8OZNkMy7vGWVy+CqlQv6jrCJ1Vqg==", + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/@loopback/testlab/-/testlab-6.1.5.tgz", + "integrity": "sha512-UhT9WBUSjJ36+goGtNFT2gXfMjatzHuTTq5mHXOhMiRXs8z/H30fxW+BGVyjUD88OlL1msJmQC8B7iwdVwOpnw==", "dev": true, "dependencies": { "@hapi/shot": "^6.0.1", - "@types/express": "^4.17.17", - "@types/fs-extra": "^11.0.1", - "@types/shot": "^4.0.1", - "@types/sinon": "^10.0.15", - "@types/supertest": "^2.0.12", + "@types/express": "^4.17.21", + "@types/fs-extra": "^11.0.4", + "@types/shot": "^4.0.5", + "@types/sinon": "^17.0.3", + "@types/supertest": "^2.0.16", "express": "^4.18.2", - "fs-extra": "^11.1.1", + "fs-extra": "^11.2.0", "oas-validator": "^5.0.8", "should": "^13.2.3", - "sinon": "^15.2.0", + "sinon": "^17.0.1", "supertest": "^6.3.3", - "tslib": "^2.6.0" + "tslib": "^2.6.2" }, "engines": { "node": "16 || 18 || 20" @@ -2050,6 +2546,28 @@ "eslint-scope": "5.1.1" } }, + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals/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/@nicolo-ribaudo/eslint-scope-5-internals/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/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -2086,9 +2604,9 @@ } }, "node_modules/@npmcli/fs": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", - "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz", + "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==", "dev": true, "peer": true, "dependencies": { @@ -2145,9 +2663,9 @@ } }, "node_modules/@npmcli/installed-package-contents": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.0.2.tgz", - "integrity": "sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.1.0.tgz", + "integrity": "sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w==", "dev": true, "peer": true, "dependencies": { @@ -2155,62 +2673,138 @@ "npm-normalize-package-bin": "^3.0.0" }, "bin": { - "installed-package-contents": "lib/index.js" + "installed-package-contents": "bin/index.js" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@npmcli/node-gyp": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz", - "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==", + "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, "peer": true, + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/@npmcli/promise-spawn": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz", - "integrity": "sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==", + "node_modules/@npmcli/move-file/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, "peer": true, "dependencies": { - "which": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/@npmcli/promise-spawn/node_modules/which": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", - "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", + "node_modules/@npmcli/move-file/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, "peer": true, "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/which.js" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@npmcli/run-script": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-6.0.2.tgz", - "integrity": "sha512-NCcr1uQo1k5U+SYlnIrbAh3cxy+OQT1VtqiAbxdymSlptbzBb62AjH2xXgjNCoP073hoa1CfCAcwoZ8k96C4nA==", + "node_modules/@npmcli/move-file/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, + "peer": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "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, + "peer": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@npmcli/node-gyp": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz", + "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==", + "dev": true, + "peer": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/promise-spawn": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz", + "integrity": "sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==", "dev": true, "peer": true, "dependencies": { - "@npmcli/node-gyp": "^3.0.0", - "@npmcli/promise-spawn": "^6.0.0", - "node-gyp": "^9.0.0", - "read-package-json-fast": "^3.0.0", + "which": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/promise-spawn/node_modules/which": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", + "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", + "dev": true, + "peer": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/run-script": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-6.0.2.tgz", + "integrity": "sha512-NCcr1uQo1k5U+SYlnIrbAh3cxy+OQT1VtqiAbxdymSlptbzBb62AjH2xXgjNCoP073hoa1CfCAcwoZ8k96C4nA==", + "dev": true, + "peer": true, + "dependencies": { + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/promise-spawn": "^6.0.0", + "node-gyp": "^9.0.0", + "read-package-json-fast": "^3.0.0", "which": "^3.0.0" }, "engines": { @@ -2392,280 +2986,752 @@ "arm64" ], "dev": true, - "optional": true, - "os": [ - "linux" - ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-linux-x64-gnu": { + "version": "16.5.1", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-16.5.1.tgz", + "integrity": "sha512-igooWJ5YxQ94Zft7IqgL+Lw0qHaY15Btw4gfK756g/YTYLZEt4tTvR1y6RnK/wdpE3sa68bFTLVBNCGTyiTiDQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-linux-x64-musl": { + "version": "16.5.1", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-16.5.1.tgz", + "integrity": "sha512-zF/exnPqFYbrLAduGhTmZ7zNEyADid2bzNQiIjJkh8Y6NpDwrQIwVIyvIxqynsjMrIs51kBH+8TUjKjj2Jgf5A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-win32-arm64-msvc": { + "version": "16.5.1", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-16.5.1.tgz", + "integrity": "sha512-qtqiLS9Y9TYyAbbpq58kRoOroko4ZXg5oWVqIWFHoxc5bGPweQSJCROEqd1AOl2ZDC6BxfuVHfhDDop1kK05WA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-win32-x64-msvc": { + "version": "16.5.1", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-16.5.1.tgz", + "integrity": "sha512-kUJBLakK7iyA9WfsGGQBVennA4jwf5XIgm0lu35oMOphtZIluvzItMt0EYBmylEROpmpEIhHq0P6J9FA+WH0Rg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@openapi-contrib/openapi-schema-to-json-schema": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@openapi-contrib/openapi-schema-to-json-schema/-/openapi-schema-to-json-schema-4.0.5.tgz", + "integrity": "sha512-E6s9hfQx125CfGXW5896s0ZtUEecTS69KvqkNDPxKomeZ/Y2rNsG90yO8K47uchXqKw5RhD/rCNcOJ2VODfQiw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.12", + "@types/node": "^20.2.5", + "fast-deep-equal": "^3.1.3", + "openapi-typescript": "^5.4.1" + } + }, + "node_modules/@parcel/watcher": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.0.4.tgz", + "integrity": "sha512-cTDi+FUDBIUOBKEtj+nhiJ71AZVlkAsQFuGQTun5tV9mwQBQgZvhCzG+URPQc8myeN32yRVZEfVAPCs1RW+Jvg==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "node-addon-api": "^3.2.1", + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@peculiar/asn1-android": { + "version": "2.3.10", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-android/-/asn1-android-2.3.10.tgz", + "integrity": "sha512-z9Rx9cFJv7UUablZISe7uksNbFJCq13hO0yEAOoIpAymALTLlvUOSLnGiQS7okPaM5dP42oTLhezH6XDXRXjGw==", + "peer": true, + "dependencies": { + "@peculiar/asn1-schema": "^2.3.8", + "asn1js": "^3.0.5", + "tslib": "^2.6.2" + } + }, + "node_modules/@peculiar/asn1-ecc": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-ecc/-/asn1-ecc-2.3.8.tgz", + "integrity": "sha512-Ah/Q15y3A/CtxbPibiLM/LKcMbnLTdUdLHUgdpB5f60sSvGkXzxJCu5ezGTFHogZXWNX3KSmYqilCrfdmBc6pQ==", + "peer": true, + "dependencies": { + "@peculiar/asn1-schema": "^2.3.8", + "@peculiar/asn1-x509": "^2.3.8", + "asn1js": "^3.0.5", + "tslib": "^2.6.2" + } + }, + "node_modules/@peculiar/asn1-rsa": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-rsa/-/asn1-rsa-2.3.8.tgz", + "integrity": "sha512-ES/RVEHu8VMYXgrg3gjb1m/XG0KJWnV4qyZZ7mAg7rrF3VTmRbLxO8mk+uy0Hme7geSMebp+Wvi2U6RLLEs12Q==", + "peer": true, + "dependencies": { + "@peculiar/asn1-schema": "^2.3.8", + "@peculiar/asn1-x509": "^2.3.8", + "asn1js": "^3.0.5", + "tslib": "^2.6.2" + } + }, + "node_modules/@peculiar/asn1-schema": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.3.8.tgz", + "integrity": "sha512-ULB1XqHKx1WBU/tTFIA+uARuRoBVZ4pNdOA878RDrRbBfBGcSzi5HBkdScC6ZbHn8z7L8gmKCgPC1LHRrP46tA==", + "peer": true, + "dependencies": { + "asn1js": "^3.0.5", + "pvtsutils": "^1.3.5", + "tslib": "^2.6.2" + } + }, + "node_modules/@peculiar/asn1-x509": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509/-/asn1-x509-2.3.8.tgz", + "integrity": "sha512-voKxGfDU1c6r9mKiN5ZUsZWh3Dy1BABvTM3cimf0tztNwyMJPhiXY94eRTgsMQe6ViLfT6EoXxkWVzcm3mFAFw==", + "peer": true, + "dependencies": { + "@peculiar/asn1-schema": "^2.3.8", + "asn1js": "^3.0.5", + "ipaddr.js": "^2.1.0", + "pvtsutils": "^1.3.5", + "tslib": "^2.6.2" + } + }, + "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/core": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", + "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/@schematics/angular": { + "version": "16.2.14", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-16.2.14.tgz", + "integrity": "sha512-YqIv727l9Qze8/OL6H9mBHc2jVXzAGRNBYnxYWqWhLbfvuVbbldo6NNIIjgv6lrl2LJSdPAAMNOD5m/f6210ug==", + "dev": true, + "peer": true, + "dependencies": { + "@angular-devkit/core": "16.2.14", + "@angular-devkit/schematics": "16.2.14", + "jsonc-parser": "3.2.0" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@sigstore/bundle": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-1.1.0.tgz", + "integrity": "sha512-PFutXEy0SmQxYI4texPw3dd2KewuNqv7OuK1ZFtY2fM754yhvG2KdgwIhRnoEE2uHdtdGNQ8s0lb94dW9sELog==", + "dev": true, + "peer": true, + "dependencies": { + "@sigstore/protobuf-specs": "^0.2.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/protobuf-specs": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.2.1.tgz", + "integrity": "sha512-XTWVxnWJu+c1oCshMLwnKvz8ZQJJDVOlciMfgpJBQbThVjKTCG8dwyhgLngBD2KN0ap9F/gOV8rFDEx8uh7R2A==", + "dev": true, + "peer": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/sign": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-1.0.0.tgz", + "integrity": "sha512-INxFVNQteLtcfGmcoldzV6Je0sbbfh9I16DM4yJPw3j5+TFP8X6uIiA18mvpEa9yyeycAKgPmOA3X9hVdVTPUA==", + "dev": true, + "peer": true, + "dependencies": { + "@sigstore/bundle": "^1.1.0", + "@sigstore/protobuf-specs": "^0.2.0", + "make-fetch-happen": "^11.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/sign/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@sigstore/sign/node_modules/make-fetch-happen": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", + "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", + "dev": true, + "peer": true, + "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" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/sign/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sigstore/sign/node_modules/minipass-fetch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz", + "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==", + "dev": true, + "peer": true, + "dependencies": { + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/@sigstore/sign/node_modules/minipass-fetch/node_modules/minipass": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.1.tgz", + "integrity": "sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/@sigstore/tuf": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-1.0.3.tgz", + "integrity": "sha512-2bRovzs0nJZFlCN3rXirE4gwxCn97JNjMmwpecqlbgV9WcxX7WRuIrgzx/X7Ib7MYRbyUTpBYE0s2x6AmZXnlg==", + "dev": true, + "peer": true, + "dependencies": { + "@sigstore/protobuf-specs": "^0.2.0", + "tuf-js": "^1.1.7" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@simplewebauthn/server": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@simplewebauthn/server/-/server-10.0.0.tgz", + "integrity": "sha512-w5eIoiF7ltg1sgggjY5Tx654j+DBuyEx2B3869jjmPp0xl2Z4BUP4kJ3yJ6DnZIv+ZYYntT3E6nZXNjPOQbrtw==", + "peer": true, + "dependencies": { + "@hexagon/base64": "^1.1.27", + "@levischuck/tiny-cbor": "^0.2.2", + "@peculiar/asn1-android": "^2.3.10", + "@peculiar/asn1-ecc": "^2.3.8", + "@peculiar/asn1-rsa": "^2.3.8", + "@peculiar/asn1-schema": "^2.3.8", + "@peculiar/asn1-x509": "^2.3.8", + "@simplewebauthn/types": "^10.0.0", + "cross-fetch": "^4.0.0" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@simplewebauthn/types": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@simplewebauthn/types/-/types-10.0.0.tgz", + "integrity": "sha512-SFXke7xkgPRowY2E+8djKbdEznTVnD5R6GO7GPTthpHrokLvNKw8C3lFZypTxLI7KkCfGPfhtqB3d7OVGGa9jQ==", + "peer": true + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz", + "integrity": "sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@sinonjs/samsam": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.0.tgz", + "integrity": "sha512-Bp8KUVlLp8ibJZrnvq2foVhP0IVX2CIprMJPK0vqGqgrDa0OHVKeZyBykqskkrdxV6yKBPmGasO8LVjAKR3Gew==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^2.0.0", + "lodash.get": "^4.4.2", + "type-detect": "^4.0.8" + } + }, + "node_modules/@sinonjs/samsam/node_modules/@sinonjs/commons": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", + "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/text-encoding": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz", + "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==", + "dev": true + }, + "node_modules/@stylistic/eslint-plugin": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-2.1.0.tgz", + "integrity": "sha512-cBBowKP2u/+uE5CzgH5w8pE9VKqcM7BXdIDPIbGt2rmLJGnA6MJPr9vYGaqgMoJFs7R/FzsMQerMvvEP40g2uw==", + "dev": true, + "dependencies": { + "@stylistic/eslint-plugin-js": "2.1.0", + "@stylistic/eslint-plugin-jsx": "2.1.0", + "@stylistic/eslint-plugin-plus": "2.1.0", + "@stylistic/eslint-plugin-ts": "2.1.0", + "@types/eslint": "^8.56.10" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "peerDependencies": { + "eslint": ">=8.40.0" + } + }, + "node_modules/@stylistic/eslint-plugin-js": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-js/-/eslint-plugin-js-2.1.0.tgz", + "integrity": "sha512-gdXUjGNSsnY6nPyqxu6lmDTtVrwCOjun4x8PUn0x04d5ucLI74N3MT1Q0UhdcOR9No3bo5PGDyBgXK+KmD787A==", + "dev": true, + "dependencies": { + "@types/eslint": "^8.56.10", + "acorn": "^8.11.3", + "eslint-visitor-keys": "^4.0.0", + "espree": "^10.0.1" + }, "engines": { - "node": ">= 10" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "peerDependencies": { + "eslint": ">=8.40.0" } }, - "node_modules/@nx/nx-linux-x64-gnu": { - "version": "16.5.1", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-16.5.1.tgz", - "integrity": "sha512-igooWJ5YxQ94Zft7IqgL+Lw0qHaY15Btw4gfK756g/YTYLZEt4tTvR1y6RnK/wdpE3sa68bFTLVBNCGTyiTiDQ==", - "cpu": [ - "x64" - ], + "node_modules/@stylistic/eslint-plugin-js/node_modules/eslint-visitor-keys": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz", + "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==", "dev": true, - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">= 10" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@nx/nx-linux-x64-musl": { - "version": "16.5.1", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-16.5.1.tgz", - "integrity": "sha512-zF/exnPqFYbrLAduGhTmZ7zNEyADid2bzNQiIjJkh8Y6NpDwrQIwVIyvIxqynsjMrIs51kBH+8TUjKjj2Jgf5A==", - "cpu": [ - "x64" - ], + "node_modules/@stylistic/eslint-plugin-js/node_modules/espree": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.0.1.tgz", + "integrity": "sha512-MWkrWZbJsL2UwnjxTX3gG8FneachS/Mwg7tdGXce011sJd5b0JG54vat5KHnfSBODZ3Wvzd2WnjxyzsRoVv+ww==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "acorn": "^8.11.3", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.0.0" + }, "engines": { - "node": ">= 10" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@nx/nx-win32-arm64-msvc": { - "version": "16.5.1", - "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-16.5.1.tgz", - "integrity": "sha512-qtqiLS9Y9TYyAbbpq58kRoOroko4ZXg5oWVqIWFHoxc5bGPweQSJCROEqd1AOl2ZDC6BxfuVHfhDDop1kK05WA==", - "cpu": [ - "arm64" - ], + "node_modules/@stylistic/eslint-plugin-jsx": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-jsx/-/eslint-plugin-jsx-2.1.0.tgz", + "integrity": "sha512-mMD7S+IndZo2vxmwpHVTCwx2O1VdtE5tmpeNwgaEcXODzWV1WTWpnsc/PECQKIr/mkLPFWiSIqcuYNhQ/3l6AQ==", "dev": true, - "optional": true, - "os": [ - "win32" - ], + "dependencies": { + "@stylistic/eslint-plugin-js": "^2.1.0", + "@types/eslint": "^8.56.10", + "estraverse": "^5.3.0", + "picomatch": "^4.0.2" + }, "engines": { - "node": ">= 10" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "peerDependencies": { + "eslint": ">=8.40.0" } }, - "node_modules/@nx/nx-win32-x64-msvc": { - "version": "16.5.1", - "resolved": "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-16.5.1.tgz", - "integrity": "sha512-kUJBLakK7iyA9WfsGGQBVennA4jwf5XIgm0lu35oMOphtZIluvzItMt0EYBmylEROpmpEIhHq0P6J9FA+WH0Rg==", - "cpu": [ - "x64" - ], + "node_modules/@stylistic/eslint-plugin-jsx/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", "dev": true, - "optional": true, - "os": [ - "win32" - ], "engines": { - "node": ">= 10" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/@openapi-contrib/openapi-schema-to-json-schema": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@openapi-contrib/openapi-schema-to-json-schema/-/openapi-schema-to-json-schema-4.0.5.tgz", - "integrity": "sha512-E6s9hfQx125CfGXW5896s0ZtUEecTS69KvqkNDPxKomeZ/Y2rNsG90yO8K47uchXqKw5RhD/rCNcOJ2VODfQiw==", + "node_modules/@stylistic/eslint-plugin-plus": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-plus/-/eslint-plugin-plus-2.1.0.tgz", + "integrity": "sha512-S5QAlgYXESJaSBFhBSBLZy9o36gXrXQwWSt6QkO+F0SrT9vpV5JF/VKoh+ojO7tHzd8Ckmyouq02TT9Sv2B0zQ==", "dev": true, "dependencies": { - "@types/json-schema": "^7.0.12", - "@types/node": "^20.2.5", - "fast-deep-equal": "^3.1.3", - "openapi-typescript": "^5.4.1" + "@types/eslint": "^8.56.10", + "@typescript-eslint/utils": "^7.8.0" + }, + "peerDependencies": { + "eslint": "*" } }, - "node_modules/@parcel/watcher": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.0.4.tgz", - "integrity": "sha512-cTDi+FUDBIUOBKEtj+nhiJ71AZVlkAsQFuGQTun5tV9mwQBQgZvhCzG+URPQc8myeN32yRVZEfVAPCs1RW+Jvg==", + "node_modules/@stylistic/eslint-plugin-plus/node_modules/@typescript-eslint/scope-manager": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.10.0.tgz", + "integrity": "sha512-7L01/K8W/VGl7noe2mgH0K7BE29Sq6KAbVmxurj8GGaPDZXPr8EEQ2seOeAS+mEV9DnzxBQB6ax6qQQ5C6P4xg==", "dev": true, - "hasInstallScript": true, "dependencies": { - "node-addon-api": "^3.2.1", - "node-gyp-build": "^4.3.0" + "@typescript-eslint/types": "7.10.0", + "@typescript-eslint/visitor-keys": "7.10.0" }, "engines": { - "node": ">= 10.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://opencollective.com/typescript-eslint" } }, - "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==", + "node_modules/@stylistic/eslint-plugin-plus/node_modules/@typescript-eslint/types": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.10.0.tgz", + "integrity": "sha512-7fNj+Ya35aNyhuqrA1E/VayQX9Elwr8NKZ4WueClR3KwJ7Xx9jcCdOrLW04h51de/+gNbyFMs+IDxh5xIwfbNg==", "dev": true, - "optional": true, "engines": { - "node": ">=14" + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@pkgr/utils": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.2.tgz", - "integrity": "sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==", + "node_modules/@stylistic/eslint-plugin-plus/node_modules/@typescript-eslint/typescript-estree": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.10.0.tgz", + "integrity": "sha512-LXFnQJjL9XIcxeVfqmNj60YhatpRLt6UhdlFwAkjNc6jSUlK8zQOl1oktAP8PlWFzPQC1jny/8Bai3/HPuvN5g==", "dev": true, "dependencies": { - "cross-spawn": "^7.0.3", - "fast-glob": "^3.3.0", + "@typescript-eslint/types": "7.10.0", + "@typescript-eslint/visitor-keys": "7.10.0", + "debug": "^4.3.4", + "globby": "^11.1.0", "is-glob": "^4.0.3", - "open": "^9.1.0", - "picocolors": "^1.0.0", - "tslib": "^2.6.0" + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { - "url": "https://opencollective.com/unts" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "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==", + "node_modules/@stylistic/eslint-plugin-plus/node_modules/@typescript-eslint/utils": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.10.0.tgz", + "integrity": "sha512-olzif1Fuo8R8m/qKkzJqT7qwy16CzPRWBvERS0uvyc+DHd8AKbO4Jb7kpAvVzMmZm8TrHnI7hvjN4I05zow+tg==", "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.10.0", + "@typescript-eslint/types": "7.10.0", + "@typescript-eslint/typescript-estree": "7.10.0" + }, "engines": { - "node": ">=12" + "node": "^18.18.0 || >=20.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" } }, - "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==", + "node_modules/@stylistic/eslint-plugin-plus/node_modules/@typescript-eslint/visitor-keys": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.10.0.tgz", + "integrity": "sha512-9ntIVgsi6gg6FIq9xjEO4VQJvwOqA3jaBFQJ/6TK5AvEup2+cECI6Fh7QiBxmfMHXU0V0J4RyPeOU1VDNzl9cg==", "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" + "@typescript-eslint/types": "7.10.0", + "eslint-visitor-keys": "^3.4.3" }, "engines": { - "node": ">=14.16" + "node": "^18.18.0 || >=20.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@schematics/angular": { - "version": "16.2.8", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-16.2.8.tgz", - "integrity": "sha512-yxfxJ2IMRIt+dQcqyJR30qd/osb5NwRsi9US3gFIHP1jfjOAs1Nk8ENNd5ycYV+yykCa78KWhmbOw4G1zpR56Q==", + "node_modules/@stylistic/eslint-plugin-plus/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", "dev": true, - "peer": true, "dependencies": { - "@angular-devkit/core": "16.2.8", - "@angular-devkit/schematics": "16.2.8", - "jsonc-parser": "3.2.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "^16.14.0 || >=18.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@sigstore/bundle": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-1.1.0.tgz", - "integrity": "sha512-PFutXEy0SmQxYI4texPw3dd2KewuNqv7OuK1ZFtY2fM754yhvG2KdgwIhRnoEE2uHdtdGNQ8s0lb94dW9sELog==", + "node_modules/@stylistic/eslint-plugin-ts": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-ts/-/eslint-plugin-ts-2.1.0.tgz", + "integrity": "sha512-2ioFibufHYBALx2TBrU4KXovCkN8qCqcb9yIHc0fyOfTaO5jw4d56WW7YRcF3Zgde6qFyXwAN6z/+w4pnmos1g==", "dev": true, - "peer": true, "dependencies": { - "@sigstore/protobuf-specs": "^0.2.0" + "@stylistic/eslint-plugin-js": "2.1.0", + "@types/eslint": "^8.56.10", + "@typescript-eslint/utils": "^7.8.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@sigstore/protobuf-specs": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.2.1.tgz", - "integrity": "sha512-XTWVxnWJu+c1oCshMLwnKvz8ZQJJDVOlciMfgpJBQbThVjKTCG8dwyhgLngBD2KN0ap9F/gOV8rFDEx8uh7R2A==", - "dev": true, - "peer": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "peerDependencies": { + "eslint": ">=8.40.0" } }, - "node_modules/@sigstore/sign": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-1.0.0.tgz", - "integrity": "sha512-INxFVNQteLtcfGmcoldzV6Je0sbbfh9I16DM4yJPw3j5+TFP8X6uIiA18mvpEa9yyeycAKgPmOA3X9hVdVTPUA==", + "node_modules/@stylistic/eslint-plugin-ts/node_modules/@typescript-eslint/scope-manager": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.10.0.tgz", + "integrity": "sha512-7L01/K8W/VGl7noe2mgH0K7BE29Sq6KAbVmxurj8GGaPDZXPr8EEQ2seOeAS+mEV9DnzxBQB6ax6qQQ5C6P4xg==", "dev": true, - "peer": true, "dependencies": { - "@sigstore/bundle": "^1.1.0", - "@sigstore/protobuf-specs": "^0.2.0", - "make-fetch-happen": "^11.0.1" + "@typescript-eslint/types": "7.10.0", + "@typescript-eslint/visitor-keys": "7.10.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@sigstore/tuf": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-1.0.3.tgz", - "integrity": "sha512-2bRovzs0nJZFlCN3rXirE4gwxCn97JNjMmwpecqlbgV9WcxX7WRuIrgzx/X7Ib7MYRbyUTpBYE0s2x6AmZXnlg==", + "node_modules/@stylistic/eslint-plugin-ts/node_modules/@typescript-eslint/types": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.10.0.tgz", + "integrity": "sha512-7fNj+Ya35aNyhuqrA1E/VayQX9Elwr8NKZ4WueClR3KwJ7Xx9jcCdOrLW04h51de/+gNbyFMs+IDxh5xIwfbNg==", "dev": true, - "peer": true, - "dependencies": { - "@sigstore/protobuf-specs": "^0.2.0", - "tuf-js": "^1.1.7" - }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@sinonjs/commons": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", - "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", + "node_modules/@stylistic/eslint-plugin-ts/node_modules/@typescript-eslint/typescript-estree": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.10.0.tgz", + "integrity": "sha512-LXFnQJjL9XIcxeVfqmNj60YhatpRLt6UhdlFwAkjNc6jSUlK8zQOl1oktAP8PlWFzPQC1jny/8Bai3/HPuvN5g==", "dev": true, "dependencies": { - "type-detect": "4.0.8" + "@typescript-eslint/types": "7.10.0", + "@typescript-eslint/visitor-keys": "7.10.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "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==", + "node_modules/@stylistic/eslint-plugin-ts/node_modules/@typescript-eslint/utils": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.10.0.tgz", + "integrity": "sha512-olzif1Fuo8R8m/qKkzJqT7qwy16CzPRWBvERS0uvyc+DHd8AKbO4Jb7kpAvVzMmZm8TrHnI7hvjN4I05zow+tg==", "dev": true, "dependencies": { - "@sinonjs/commons": "^3.0.0" + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.10.0", + "@typescript-eslint/types": "7.10.0", + "@typescript-eslint/typescript-estree": "7.10.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" } }, - "node_modules/@sinonjs/samsam": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.0.tgz", - "integrity": "sha512-Bp8KUVlLp8ibJZrnvq2foVhP0IVX2CIprMJPK0vqGqgrDa0OHVKeZyBykqskkrdxV6yKBPmGasO8LVjAKR3Gew==", + "node_modules/@stylistic/eslint-plugin-ts/node_modules/@typescript-eslint/visitor-keys": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.10.0.tgz", + "integrity": "sha512-9ntIVgsi6gg6FIq9xjEO4VQJvwOqA3jaBFQJ/6TK5AvEup2+cECI6Fh7QiBxmfMHXU0V0J4RyPeOU1VDNzl9cg==", "dev": true, "dependencies": { - "@sinonjs/commons": "^2.0.0", - "lodash.get": "^4.4.2", - "type-detect": "^4.0.8" + "@typescript-eslint/types": "7.10.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@sinonjs/samsam/node_modules/@sinonjs/commons": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", - "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", + "node_modules/@stylistic/eslint-plugin-ts/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", "dev": true, "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/text-encoding": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz", - "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==", - "dev": true + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, "node_modules/@tootallnate/once": { "version": "2.0.0", @@ -2701,32 +3767,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@tufjs/models/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, - "peer": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@tufjs/models/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "peer": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@types/bcryptjs": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/@types/bcryptjs/-/bcryptjs-2.4.2.tgz", @@ -2734,9 +3774,9 @@ "dev": true }, "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==", + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", "dev": true, "dependencies": { "@types/connect": "*", @@ -2744,47 +3784,57 @@ } }, "node_modules/@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/@types/cookiejar": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.2.tgz", - "integrity": "sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.5.tgz", + "integrity": "sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q==", "dev": true }, "node_modules/@types/cors": { - "version": "2.8.13", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz", - "integrity": "sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==", + "version": "2.8.17", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", + "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", "dev": true, "dependencies": { "@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==", + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", "dependencies": { "@types/ms": "*" } }, + "node_modules/@types/eslint": { + "version": "8.56.10", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz", + "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, "node_modules/@types/estree": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.3.tgz", - "integrity": "sha512-CS2rOaoQ/eAgAfcTfq6amKG7bsN+EMcgGY4FAFQdvSj2y1ixvOZTUA9mOtCai7E1SYu283XNw7urKK30nP3wkQ==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", "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==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", "dev": true, "dependencies": { "@types/body-parser": "*", @@ -2794,9 +3844,9 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.35", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz", - "integrity": "sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==", + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.0.tgz", + "integrity": "sha512-bGyep3JqPCRry1wq+O5n7oiBgGWmeIJXPjXXCo8EK0u8duZGSYar7cGqd3ML2JUsLGeB7fmc06KYo9fLGWqPvQ==", "dev": true, "dependencies": { "@types/node": "*", @@ -2806,9 +3856,9 @@ } }, "node_modules/@types/fs-extra": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-11.0.1.tgz", - "integrity": "sha512-MxObHvNl4A69ofaTRU8DFqvgzzv8s9yRtaPPm5gud9HDNvpB3GPQFvNuTWAI59B9huVGV5jXYJwbCsmBsOGYWA==", + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-11.0.4.tgz", + "integrity": "sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==", "dev": true, "dependencies": { "@types/jsonfile": "*", @@ -2826,15 +3876,15 @@ } }, "node_modules/@types/http-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.1.tgz", - "integrity": "sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", "dev": true }, "node_modules/@types/json-schema": { - "version": "7.0.12", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", - "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true }, "node_modules/@types/json5": { @@ -2844,33 +3894,39 @@ "dev": true }, "node_modules/@types/jsonfile": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.1.tgz", - "integrity": "sha512-GSgiRCVeapDN+3pqA35IkQwasaCh/0YFH5dEF6S88iDvEn901DjOeH3/QPY+XYP1DFzDZPvIvfeEgk+7br5png==", + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.4.tgz", + "integrity": "sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==", "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/@types/jsonwebtoken": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", - "integrity": "sha512-drE6uz7QBKq1fYqqoFKTDRdFCPHd5TCub75BM+D+cMx7NU9hUz7SESLfC2fSCXVFMO5Yj8sOWHuGqPgjc+fz0Q==", + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.6.tgz", + "integrity": "sha512-/5hndP5dCjloafCXns6SZyESp3Ldq7YjH3zwzwczYnjxIT0Fqzk5ROSYVGfFyczIue7IUEj8hkvLbPoLQ18vQw==", "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/@types/lodash": { - "version": "4.14.197", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.197.tgz", - "integrity": "sha512-BMVOiWs0uNxHVlHBgzTIqJYmj+PgCo4euloGF+5m4okL3rEYzM2EEv78mw8zWSMM57dM7kVIgJ2QDvwHSoCI5g==", + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha512-wYCP26ZLxaT3R39kiN2+HcJ4kTd3U1waI/cY7ivWYqFP6pW3ZNpvi6Wd6PHZx7T/t8z0vlkXMg3QYLa7DZ/IJQ==", + "dev": true + }, + "node_modules/@types/methods": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@types/methods/-/methods-1.1.4.tgz", + "integrity": "sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ==", "dev": true }, "node_modules/@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", "dev": true }, "node_modules/@types/minimatch": { @@ -2880,62 +3936,71 @@ "dev": true }, "node_modules/@types/mocha": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.1.tgz", - "integrity": "sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q==", + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.6.tgz", + "integrity": "sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg==", "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==" + "version": "0.7.34", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" }, "node_modules/@types/node": { - "version": "20.5.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.0.tgz", - "integrity": "sha512-Mgq7eCtoTjT89FqNoTzzXg2XvCi5VMhRV6+I2aYanc6kQCBImeNaAYRs/DyoVqk1YEUJK5gN9VO7HRIdz4Wo3Q==", - "dev": true + "version": "20.12.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.12.tgz", + "integrity": "sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/@types/nodemailer": { - "version": "6.4.9", - "resolved": "https://registry.npmjs.org/@types/nodemailer/-/nodemailer-6.4.9.tgz", - "integrity": "sha512-XYG8Gv+sHjaOtUpiuytahMy2mM3rectgroNbs6R3djZEKmPNiIJwe9KqOJBGzKKnNZNKvnuvmugBgpq3w/S0ig==", + "version": "6.4.15", + "resolved": "https://registry.npmjs.org/@types/nodemailer/-/nodemailer-6.4.15.tgz", + "integrity": "sha512-0EBJxawVNjPkng1zm2vopRctuWVCxk34JcIlRuXSf54habUWdz1FB7wHDqOqvDa8Mtpt0Q3LTXQkAs2LNyK5jQ==", "dev": true, "dependencies": { "@types/node": "*" } }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "dev": true + }, "node_modules/@types/on-finished": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@types/on-finished/-/on-finished-2.3.1.tgz", - "integrity": "sha512-mzVYaYcFs5Jd2n/O6uYIRUsFRR1cHyZLRvkLCU0E7+G5WhY0qBDAR5fUCeZbvecYOSh9ikhlesyi2UfI8B9ckQ==", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@types/on-finished/-/on-finished-2.3.4.tgz", + "integrity": "sha512-Ld4UQD3udYcKPaAWlI1EYXKhefkZcTlpqOLkQRmN3u5Ml/tUypMivUHbNH8LweP4H4FlhGGO+uBjJI1Y1dkE1g==", "dev": true, "dependencies": { "@types/node": "*" } }, "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==", + "version": "6.9.15", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", "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==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", "dev": true }, "node_modules/@types/semver": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz", - "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==", + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", "dev": true }, "node_modules/@types/send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", - "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", "dev": true, "dependencies": { "@types/mime": "^1", @@ -2943,9 +4008,9 @@ } }, "node_modules/@types/serve-static": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.2.tgz", - "integrity": "sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==", + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz", + "integrity": "sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==", "dev": true, "dependencies": { "@types/http-errors": "*", @@ -2954,84 +4019,86 @@ } }, "node_modules/@types/shot": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/shot/-/shot-4.0.1.tgz", - "integrity": "sha512-LUJWxDKYWmmUpVXDWZ78hFIrqb/ho9RoKqBAFRJw4OHOS3qCKCoXCyzrfmf24lbO4COYfqL0iEWNArOfKEYW9g==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/shot/-/shot-4.0.5.tgz", + "integrity": "sha512-4wiGdy1sXfpcFgF1VAouUaSl6zjWn0v2NarNgviAJYm3BeiODywERnRtIC5YtNIbfh3UfShfCRD9yyeWAD7R0w==", "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/@types/sinon": { - "version": "10.0.16", - "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-10.0.16.tgz", - "integrity": "sha512-j2Du5SYpXZjJVJtXBokASpPRj+e2z+VUhCPHmM6WMfe3dpHu6iVKJMU6AiBcMp/XTAYnEj6Wc1trJUWwZ0QaAQ==", + "version": "17.0.3", + "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-17.0.3.tgz", + "integrity": "sha512-j3uovdn8ewky9kRBG19bOwaZbexJu/XjtkHyjvUgt4xfPFz18dcORIMqnYh66Fx3Powhcr85NT5+er3+oViapw==", "dev": true, "dependencies": { "@types/sinonjs__fake-timers": "*" } }, "node_modules/@types/sinonjs__fake-timers": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.2.tgz", - "integrity": "sha512-9GcLXF0/v3t80caGs5p2rRfkB+a8VBGLJZVih6CNFkx8IZ994wiKKLSRs9nuFwk1HevWs/1mnUmkApGrSGsShA==", + "version": "8.1.5", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.5.tgz", + "integrity": "sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ==", "dev": true }, "node_modules/@types/superagent": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-4.1.18.tgz", - "integrity": "sha512-LOWgpacIV8GHhrsQU+QMZuomfqXiqzz3ILLkCtKx3Us6AmomFViuzKT9D693QTKgyut2oCytMG8/efOop+DB+w==", + "version": "8.1.7", + "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-8.1.7.tgz", + "integrity": "sha512-NmIsd0Yj4DDhftfWvvAku482PZum4DBW7U51OvS8gvOkDDY0WT1jsVyDV3hK+vplrsYw8oDwi9QxOM7U68iwww==", "dev": true, "dependencies": { - "@types/cookiejar": "*", + "@types/cookiejar": "^2.1.5", + "@types/methods": "^1.1.4", "@types/node": "*" } }, "node_modules/@types/supertest": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-2.0.12.tgz", - "integrity": "sha512-X3HPWTwXRerBZS7Mo1k6vMVR1Z6zmJcDVn5O/31whe0tnjE4te6ZJSJGq1RiqHPjzPdMTfjCFogDJmwng9xHaQ==", + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-2.0.16.tgz", + "integrity": "sha512-6c2ogktZ06tr2ENoZivgm7YnprnhYE4ZoXGMY+oA7IuAf17M8FWvujXZGmxLv8y0PTyts4x5A+erSwVUFA8XSg==", "dev": true, "dependencies": { "@types/superagent": "*" } }, "node_modules/@types/type-is": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/@types/type-is/-/type-is-1.6.3.tgz", - "integrity": "sha512-PNs5wHaNcBgCQG5nAeeZ7OvosrEsI9O4W2jAOO9BCCg4ux9ZZvH2+0iSCOIDBiKuQsiNS8CBlmfX9f5YBQ22cA==", + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/@types/type-is/-/type-is-1.6.6.tgz", + "integrity": "sha512-fs1KHv/f9OvmTMsu4sBNaUu32oyda9Y9uK25naJG8gayxNrfqGIjPQsbLIYyfe7xFkppnPlJB+BuTldOaX9bXw==", "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", - "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz", + "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==", "dev": true, "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", + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/type-utils": "6.21.0", + "@typescript-eslint/utils": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.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" + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -3040,25 +4107,26 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", - "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", + "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", "debug": "^4.3.4" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "eslint": "^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -3067,16 +4135,16 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", + "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", @@ -3084,25 +4152,25 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", - "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz", + "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.62.0", - "@typescript-eslint/utils": "5.62.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/utils": "6.21.0", "debug": "^4.3.4", - "tsutils": "^3.21.0" + "ts-api-utils": "^1.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "*" + "eslint": "^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -3111,12 +4179,12 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", + "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", "dev": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", @@ -3124,21 +4192,22 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", + "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", @@ -3151,42 +4220,41 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", - "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz", + "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", "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.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "semver": "^7.5.4" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "eslint": "^7.0.0 || ^8.0.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", + "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" + "@typescript-eslint/types": "6.21.0", + "eslint-visitor-keys": "^3.4.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", @@ -3240,6 +4308,12 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/@yarnpkg/parsers/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/@zkochan/js-yaml": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.6.tgz", @@ -3283,9 +4357,9 @@ } }, "node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -3343,15 +4417,15 @@ } }, "node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz", + "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "uri-js": "^4.4.1" }, "funding": { "type": "github", @@ -3550,13 +4624,16 @@ } }, "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==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3569,15 +4646,16 @@ "dev": true }, "node_modules/array-includes": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", - "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", "is-string": "^1.0.7" }, "engines": { @@ -3603,16 +4681,17 @@ } }, "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==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", "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" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -3658,17 +4737,18 @@ } }, "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==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", "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", + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", "is-shared-array-buffer": "^1.0.2" }, "engines": { @@ -3684,16 +4764,30 @@ "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", "dev": true }, + "node_modules/asn1js": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.5.tgz", + "integrity": "sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ==", + "peer": true, + "dependencies": { + "pvtsutils": "^1.3.2", + "pvutils": "^1.1.3", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, "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==", + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", "dev": true }, "node_modules/async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", "dev": true }, "node_modules/asynckit": { @@ -3702,11 +4796,23 @@ "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==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "dev": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -3715,9 +4821,9 @@ } }, "node_modules/axe-core": { - "version": "4.8.2", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.8.2.tgz", - "integrity": "sha512-/dlp0fxyM3R8YW7MFzaHWXrf4zzbr0vaYb23VBFCl83R7nWNPg/yaQw2Dc8jzCMmDVLhSdzH8MjrsuIUuvX+6g==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz", + "integrity": "sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==", "dev": true, "engines": { "node": ">=4" @@ -3735,9 +4841,9 @@ } }, "node_modules/axobject-query": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", - "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.0.0.tgz", + "integrity": "sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==", "dev": true, "dependencies": { "dequal": "^2.0.3" @@ -3753,7 +4859,6 @@ "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", @@ -3781,24 +4886,19 @@ "node_modules/bcryptjs": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz", - "integrity": "sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==" - }, - "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" - } + "integrity": "sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==", + "peer": true }, "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "dev": true, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/bl": { @@ -3871,35 +4971,22 @@ "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "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", - "concat-map": "0.0.1" + "balanced-match": "^1.0.0" } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -3912,9 +4999,9 @@ "dev": true }, "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==", + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", "dev": true, "funding": [ { @@ -3931,10 +5018,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001517", - "electron-to-chromium": "^1.4.477", - "node-releases": "^2.0.13", - "update-browserslist-db": "^1.0.11" + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" }, "bin": { "browserslist": "cli.js" @@ -3947,7 +5034,6 @@ "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, "funding": [ { "type": "github", @@ -3970,7 +5056,8 @@ "node_modules/buffer-equal-constant-time": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "peer": true }, "node_modules/buffer-from": { "version": "1.1.2", @@ -3978,38 +5065,13 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, - "node_modules/builtin-modules": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", - "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/builtins": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", - "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", - "dev": true, - "peer": true, - "dependencies": { - "semver": "^7.0.0" - } - }, - "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==", + "node_modules/builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", "dev": true, - "dependencies": { - "run-applescript": "^5.0.0" - }, "engines": { - "node": ">=12" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -4090,14 +5152,19 @@ } }, "node_modules/call-bind": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", - "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dev": true, "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.1", - "set-function-length": "^1.1.1" + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4138,9 +5205,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001520", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001520.tgz", - "integrity": "sha512-tahF5O9EiiTzwTUqAeFjIZbn4Dnqxzz7ktrgGlMYNLH43Ul26IgTMH/zvL3DG0lZxBYnlT04axvInszUsZULdA==", + "version": "1.0.30001620", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001620.tgz", + "integrity": "sha512-WJvYsOjd1/BYUY6SNGUosK9DUidBPDTnOARHp3fSmFO1ekdxaY6nKRttEVrfMmYi80ctS0kz1wiWmm14fVc3ew==", "dev": true, "funding": [ { @@ -4269,12 +5336,48 @@ "node": ">=10" } }, + "node_modules/ci-info": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.0.0.tgz", + "integrity": "sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, "node_modules/cldrjs": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/cldrjs/-/cldrjs-0.5.5.tgz", "integrity": "sha512-KDwzwbmLIPfCgd8JERVDpQKrUUM1U4KpFJJg2IROv89rF172lLufoJnqJ/Wea6fXL5bO6WjuLMzY8V52UWPvkA==", "dev": true }, + "node_modules/clean-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clean-regexp/-/clean-regexp-1.0.0.tgz", + "integrity": "sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/clean-regexp/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/clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", @@ -4412,9 +5515,9 @@ } }, "node_modules/comment-parser": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.0.tgz", - "integrity": "sha512-QLyTNiZ2KDOibvFPlZ6ZngVsZ/0gYnE6uTXi5aoDg8ed3AkJAz4sEje3Y8a29hQ1s6A99MZXe47fLAXQ1rTqaw==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz", + "integrity": "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==", "dev": true, "engines": { "node": ">= 12.0.0" @@ -4427,10 +5530,13 @@ "dev": true }, "node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/concat-map": { "version": "0.0.1", @@ -4438,25 +5544,6 @@ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, - "node_modules/configstore": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz", - "integrity": "sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==", - "dev": true, - "dependencies": { - "dot-prop": "^6.0.1", - "graceful-fs": "^4.2.6", - "unique-string": "^3.0.0", - "write-file-atomic": "^3.0.3", - "xdg-basedir": "^5.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/yeoman/configstore?sponsor=1" - } - }, "node_modules/console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", @@ -4497,9 +5584,9 @@ } }, "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==", + "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/cookie": { @@ -4523,6 +5610,19 @@ "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", "dev": true }, + "node_modules/core-js-compat": { + "version": "3.37.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.1.tgz", + "integrity": "sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==", + "dev": true, + "dependencies": { + "browserslist": "^4.23.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", @@ -4542,19 +5642,13 @@ "node": ">= 0.10" } }, - "node_modules/cosmiconfig": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.0.0.tgz", - "integrity": "sha512-da1EafcpH6b/TD8vDRaWV7xFINlHlF6zKsGwS1TsuVJTZRkquaS5HTMq7uq6h31619QjbsYl21gVDOm32KM1vQ==", - "dev": true, + "node_modules/cross-fetch": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", + "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", + "peer": true, "dependencies": { - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=14" + "node-fetch": "^2.6.12" } }, "node_modules/cross-spawn": { @@ -4580,223 +5674,145 @@ "node": "*" } }, - "node_modules/crypto-random-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", - "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", + "node_modules/cspell-config-lib": { + "version": "8.8.3", + "resolved": "https://registry.npmjs.org/cspell-config-lib/-/cspell-config-lib-8.8.3.tgz", + "integrity": "sha512-61NKZrzTi9OLEEiZBggLQy9nswgR0gd6bKH06xXFQyRfNpAjaPOzOUFhSSfX1MQX+lQF3KtSYcHpppwbpPsL8w==", "dev": true, "dependencies": { - "type-fest": "^1.0.1" + "@cspell/cspell-types": "8.8.3", + "comment-json": "^4.2.3", + "yaml": "^2.4.2" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=18" } }, - "node_modules/crypto-random-string/node_modules/type-fest": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "node_modules/cspell-config-lib/node_modules/yaml": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.2.tgz", + "integrity": "sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==", "dev": true, - "engines": { - "node": ">=10" + "bin": { + "yaml": "bin.mjs" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">= 14" } }, "node_modules/cspell-dictionary": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/cspell-dictionary/-/cspell-dictionary-7.3.8.tgz", - "integrity": "sha512-gkq4t78eLR0xC3P0vDDHPeNY4iZRd5YE6Z8uDJ7RM4UaX/TSdVUN9KNFr34RnJ119NYVHujpL9+uW7wPSAe8Eg==", + "version": "8.8.3", + "resolved": "https://registry.npmjs.org/cspell-dictionary/-/cspell-dictionary-8.8.3.tgz", + "integrity": "sha512-g2G3uh8JbuJKAYFdFQENcbTIrK9SJRXBiQ/t+ch+9I/t5HmuGOVe+wxKEM/0c9M2CRLpzJShBvttH9rnw4Yqfg==", "dev": true, "dependencies": { - "@cspell/cspell-pipe": "7.3.8", - "@cspell/cspell-types": "7.3.8", - "cspell-trie-lib": "7.3.8", - "fast-equals": "^4.0.3", - "gensequence": "^6.0.0" + "@cspell/cspell-pipe": "8.8.3", + "@cspell/cspell-types": "8.8.3", + "cspell-trie-lib": "8.8.3", + "fast-equals": "^5.0.1", + "gensequence": "^7.0.0" }, "engines": { - "node": ">=16" + "node": ">=18" } }, - "node_modules/cspell-dictionary/node_modules/fast-equals": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-4.0.3.tgz", - "integrity": "sha512-G3BSX9cfKttjr+2o1O22tYMLq0DPluZnYtq1rXumE1SpL/F/SLIfHx08WYQoWSIpeMYf8sRbJ8++71+v6Pnxfg==", - "dev": true - }, "node_modules/cspell-glob": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/cspell-glob/-/cspell-glob-7.3.8.tgz", - "integrity": "sha512-wUZC6znyxEs0wlhzGfZ4XHkATPJyazJIFi/VvAdj+KHe7U8SoSgitJVDQqdgectI2y3MxR7lQdVLX9dONFh+7A==", + "version": "8.8.3", + "resolved": "https://registry.npmjs.org/cspell-glob/-/cspell-glob-8.8.3.tgz", + "integrity": "sha512-9c4Nw/bIsjKSuBuRrLa1sWtIzbXXvja+FVbUOE9c2IiZfh6K1I+UssiXTbRTMg6qgTdkfT4o3KOcFN0ZcbmCUQ==", "dev": true, "dependencies": { - "micromatch": "^4.0.5" + "micromatch": "^4.0.7" }, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/cspell-grammar": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/cspell-grammar/-/cspell-grammar-7.3.8.tgz", - "integrity": "sha512-nTjAlMAZAVSFhBd9U3MB9l5FfC5JCCr9DTOA2wWxusVOm+36MbSEH90ucLPkhPa9/+0HtbpDhqVMwXCZllRpsg==", + "version": "8.8.3", + "resolved": "https://registry.npmjs.org/cspell-grammar/-/cspell-grammar-8.8.3.tgz", + "integrity": "sha512-3RP7xQ/6IiIjbWQDuE+4b0ERKkSWGMY75bd0oEsh5HcFhhOYphmcpxLxRRM/yxYQaYgdvq0QIcwrpanx86KJ7A==", "dev": true, "dependencies": { - "@cspell/cspell-pipe": "7.3.8", - "@cspell/cspell-types": "7.3.8" + "@cspell/cspell-pipe": "8.8.3", + "@cspell/cspell-types": "8.8.3" }, "bin": { "cspell-grammar": "bin.mjs" }, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/cspell-io": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/cspell-io/-/cspell-io-7.3.8.tgz", - "integrity": "sha512-XrxPbaiek7EZh+26k9RYVz2wKclaMqM6mXBiu/kpFAHRHHfz91ado6xWvyxZ7UAxQ8ixEwZ+oz9TU+k21gHzyw==", + "version": "8.8.3", + "resolved": "https://registry.npmjs.org/cspell-io/-/cspell-io-8.8.3.tgz", + "integrity": "sha512-vO7BUa6i7tjmQr+9dw/Ic7tm4ECnSUlbuMv0zJs/SIrO9AcID2pCWPeZNZEGAmeutrEOi2iThZ/uS33aCuv7Jw==", "dev": true, "dependencies": { - "@cspell/cspell-service-bus": "7.3.8", - "node-fetch": "^2.7.0" + "@cspell/cspell-service-bus": "8.8.3" }, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/cspell-lib": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/cspell-lib/-/cspell-lib-7.3.8.tgz", - "integrity": "sha512-2L770sI5DdsAKVzO3jxmfP2fz4LryW6dzL93BpN7WU+ebFC6rg4ioa5liOJV4WoDo2fNQMSeqfW4Aawu9zWR7A==", + "version": "8.8.3", + "resolved": "https://registry.npmjs.org/cspell-lib/-/cspell-lib-8.8.3.tgz", + "integrity": "sha512-IqtTKBPug5Jzt9T8f/b6qGAbARRR5tpQkLjzsrfLzxM68ery23wEPDtmWToEyc9EslulZGLe0T78XuEU9AMF+g==", "dev": true, "dependencies": { - "@cspell/cspell-bundled-dicts": "7.3.8", - "@cspell/cspell-pipe": "7.3.8", - "@cspell/cspell-resolver": "7.3.8", - "@cspell/cspell-types": "7.3.8", - "@cspell/dynamic-import": "7.3.8", - "@cspell/strong-weak-map": "7.3.8", + "@cspell/cspell-bundled-dicts": "8.8.3", + "@cspell/cspell-pipe": "8.8.3", + "@cspell/cspell-resolver": "8.8.3", + "@cspell/cspell-types": "8.8.3", + "@cspell/dynamic-import": "8.8.3", + "@cspell/strong-weak-map": "8.8.3", "clear-module": "^4.1.2", "comment-json": "^4.2.3", - "configstore": "^6.0.0", - "cosmiconfig": "8.0.0", - "cspell-dictionary": "7.3.8", - "cspell-glob": "7.3.8", - "cspell-grammar": "7.3.8", - "cspell-io": "7.3.8", - "cspell-trie-lib": "7.3.8", + "cspell-config-lib": "8.8.3", + "cspell-dictionary": "8.8.3", + "cspell-glob": "8.8.3", + "cspell-grammar": "8.8.3", + "cspell-io": "8.8.3", + "cspell-trie-lib": "8.8.3", + "env-paths": "^3.0.0", "fast-equals": "^5.0.1", - "find-up": "^6.3.0", - "gensequence": "^6.0.0", + "gensequence": "^7.0.0", "import-fresh": "^3.3.0", "resolve-from": "^5.0.0", "vscode-languageserver-textdocument": "^1.0.11", - "vscode-uri": "^3.0.8" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/cspell-lib/node_modules/find-up": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", - "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", - "dev": true, - "dependencies": { - "locate-path": "^7.1.0", - "path-exists": "^5.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cspell-lib/node_modules/locate-path": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", - "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", - "dev": true, - "dependencies": { - "p-locate": "^6.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cspell-lib/node_modules/p-limit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^1.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cspell-lib/node_modules/p-locate": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", - "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", - "dev": true, - "dependencies": { - "p-limit": "^4.0.0" + "vscode-uri": "^3.0.8", + "xdg-basedir": "^5.1.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=18" } }, - "node_modules/cspell-lib/node_modules/path-exists": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", - "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "node_modules/cspell-lib/node_modules/env-paths": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-3.0.0.tgz", + "integrity": "sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==", "dev": true, "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, - "node_modules/cspell-lib/node_modules/yocto-queue": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", - "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", - "dev": true, - "engines": { - "node": ">=12.20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/cspell-trie-lib": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/cspell-trie-lib/-/cspell-trie-lib-7.3.8.tgz", - "integrity": "sha512-UQx1Bazbyz2eQJ/EnMohINnUdZvAQL+OcQU3EPPbNWM1DWF4bJGgmFXKNCRYfJk6wtOZVXG5g5AZXx9KnHeN9A==", + "version": "8.8.3", + "resolved": "https://registry.npmjs.org/cspell-trie-lib/-/cspell-trie-lib-8.8.3.tgz", + "integrity": "sha512-0zrkrhrFLVajwo6++XD9a+r0Olml7UjPgbztjPKbXIJrZCradBF5rvt3wq5mPpsjq2+Dz0z6K5muZpbO+gqapQ==", "dev": true, "dependencies": { - "@cspell/cspell-pipe": "7.3.8", - "@cspell/cspell-types": "7.3.8", - "gensequence": "^6.0.0" + "@cspell/cspell-pipe": "8.8.3", + "@cspell/cspell-types": "8.8.3", + "gensequence": "^7.0.0" }, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/damerau-levenshtein": { @@ -4805,199 +5821,88 @@ "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", "dev": true }, - "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/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "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==", + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", "dev": true, "dependencies": { - "bplist-parser": "^0.2.0", - "untildify": "^4.0.0" + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" }, "engines": { - "node": ">=12" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", "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" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" }, - "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" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", "dev": true, "dependencies": { - "path-key": "^4.0.0" + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "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, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dependencies": { - "mimic-fn": "^4.0.0" + "ms": "2.1.2" }, "engines": { - "node": ">=12" + "node": ">=6.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "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==", + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "dev": true, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/default-browser/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==", + "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/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-require-extensions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.1.tgz", @@ -5027,17 +5932,20 @@ } }, "node_modules/define-data-property": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", - "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/define-lazy-prop": { @@ -5082,6 +5990,15 @@ "dev": true, "peer": true }, + "node_modules/denque": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", + "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -5163,21 +6080,6 @@ "tslib": "^2.0.3" } }, - "node_modules/dot-prop": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", - "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", - "dev": true, - "dependencies": { - "is-obj": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/dotenv": { "version": "10.0.0", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", @@ -5203,6 +6105,7 @@ "version": "1.0.11", "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "peer": true, "dependencies": { "safe-buffer": "^5.0.1" } @@ -5214,9 +6117,9 @@ "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==", + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", "dev": true, "dependencies": { "jake": "^10.8.5" @@ -5229,15 +6132,15 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.491", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.491.tgz", - "integrity": "sha512-ZzPqGKghdVzlQJ+qpfE+r6EB321zed7e5JsvHIlMM4zPFF8okXUkF5Of7h7F3l3cltPL0rG7YVmlp5Qro7RQLA==", + "version": "1.4.773", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.773.tgz", + "integrity": "sha512-87eHF+h3PlCRwbxVEAw9KtK3v7lWfc/sUDr0W76955AdYTG4bV/k0zrl585Qnj/skRMH2qOSiE+kqMeOQ+LOpw==", "dev": true }, "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "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/encodeurl": { @@ -5253,7 +6156,6 @@ "version": "0.1.13", "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -5264,7 +6166,6 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -5322,50 +6223,57 @@ } }, "node_modules/es-abstract": { - "version": "1.22.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", - "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", - "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.5", - "es-set-tostringtag": "^2.0.1", + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", "es-to-primitive": "^1.2.1", "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.2", - "get-symbol-description": "^1.0.0", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", "globalthis": "^1.0.3", "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", "has-symbols": "^1.0.3", - "hasown": "^2.0.0", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", + "is-shared-array-buffer": "^1.0.3", "is-string": "^1.0.7", - "is-typed-array": "^1.1.12", + "is-typed-array": "^1.1.13", "is-weakref": "^1.0.2", "object-inspect": "^1.13.1", "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", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.13" + "which-typed-array": "^1.1.15" }, "engines": { "node": ">= 0.4" @@ -5374,15 +6282,73 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz", + "integrity": "sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-set-tostringtag": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", - "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.2", - "has-tostringtag": "^1.0.0", - "hasown": "^2.0.0" + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" }, "engines": { "node": ">= 0.4" @@ -5421,9 +6387,9 @@ "dev": true }, "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "dev": true, "engines": { "node": ">=6" @@ -5448,16 +6414,16 @@ } }, "node_modules/eslint": { - "version": "8.52.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.52.0.tgz", - "integrity": "sha512-zh/JHnaixqHZsolRB/w9/02akBk9EPrOs9JwcTP2ek7yL5bVvXuRariiaAjjoJ5DvuwQ1WAE/HsMz+w17YgBCg==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.2", - "@eslint/js": "8.52.0", - "@humanwhocodes/config-array": "^0.11.13", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", "@ungap/structured-clone": "^1.2.0", @@ -5503,9 +6469,9 @@ } }, "node_modules/eslint-config-prettier": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", - "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", + "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", "dev": true, "bin": { "eslint-config-prettier": "bin/cli.js" @@ -5515,9 +6481,9 @@ } }, "node_modules/eslint-config-service-soft": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/eslint-config-service-soft/-/eslint-config-service-soft-1.3.3.tgz", - "integrity": "sha512-yLEPHgQ8NvqBb6FqTgvWU4nNhYdw5BP6CZOzYa1jwbZnKONqIDOrfmoK4RY5Vpu3pJNIhOsdDeeNlrCkomFLgw==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/eslint-config-service-soft/-/eslint-config-service-soft-1.4.2.tgz", + "integrity": "sha512-50YUMj7LiYZGs8KLu/GrkYuadfIZm9NanpbhHNLvg979zc2DAQ8NrV7azyVBYlqLbzMX+hdfXLlE5437ZeHs4A==", "dev": true, "dependencies": { "@angular-eslint/builder": "^16.2.0", @@ -5525,47 +6491,48 @@ "@angular-eslint/eslint-plugin-template": "^16.2.0", "@angular-eslint/schematics": "^16.2.0", "@angular-eslint/template-parser": "^16.2.0", - "@babel/eslint-parser": "^7.22.15", - "@cspell/eslint-plugin": "^7.3.8", - "@typescript-eslint/eslint-plugin": "6.7.5", - "@typescript-eslint/parser": "6.7.5", - "@typescript-eslint/utils": "^6.7.5", - "eslint-plugin-const-case": "^1.2.2", - "eslint-plugin-github": "^4.10.1", + "@babel/eslint-parser": "^7.24.5", + "@cspell/eslint-plugin": "^8.8.1", + "@stylistic/eslint-plugin": "^2.1.0", + "@typescript-eslint/eslint-plugin": "7.10.0", + "@typescript-eslint/parser": "7.10.0", + "@typescript-eslint/utils": "^7.10.0", + "eslint-plugin-deprecation": "^2.0.0", + "eslint-plugin-github": "^5.0.0-2", "eslint-plugin-import": "^2.29.1", - "eslint-plugin-jsdoc": "^46.8.2", + "eslint-plugin-jsdoc": "^48.2.5", "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-unused-imports": "^3.1.0" + "eslint-plugin-sonarjs": "^1.0.3", + "eslint-plugin-unicorn": "^53.0.0", + "eslint-plugin-unused-imports": "^3.2.0" } }, "node_modules/eslint-config-service-soft/node_modules/@typescript-eslint/eslint-plugin": { - "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==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.10.0.tgz", + "integrity": "sha512-PzCr+a/KAef5ZawX7nbyNwBDtM1HdLIT53aSA2DDlxmxMngZ43O8SIePOeX8H5S+FHXeI6t97mTt/dDdzY4Fyw==", "dev": true, "dependencies": { - "@eslint-community/regexpp": "^4.5.1", - "@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", + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.10.0", + "@typescript-eslint/type-utils": "7.10.0", + "@typescript-eslint/utils": "7.10.0", + "@typescript-eslint/visitor-keys": "7.10.0", "graphemer": "^1.4.0", - "ignore": "^5.2.4", + "ignore": "^5.3.1", "natural-compare": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.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" + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" }, "peerDependenciesMeta": { "typescript": { @@ -5573,52 +6540,27 @@ } } }, - "node_modules/eslint-config-service-soft/node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.7.5.tgz", - "integrity": "sha512-pfRRrH20thJbzPPlPc4j0UNGvH1PjPlhlCMq4Yx7EGjV7lvEeGX0U6MJYe8+SyFutWgSHsdbJ3BXzZccYggezA==", - "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.5", - "@typescript-eslint/types": "6.7.5", - "@typescript-eslint/typescript-estree": "6.7.5", - "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/eslint-config-service-soft/node_modules/@typescript-eslint/parser": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.7.5.tgz", - "integrity": "sha512-bIZVSGx2UME/lmhLcjdVc7ePBwn7CLqKarUBL4me1C5feOd663liTGjMBGVcGr+BhnSLeP4SgwdvNnnkbIdkCw==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.10.0.tgz", + "integrity": "sha512-2EjZMA0LUW5V5tGQiaa2Gys+nKdfrn2xiTIBLR4fxmPmVSvgPcKNW+AE/ln9k0A4zDUti0J/GZXMDupQoI+e1w==", "dev": true, "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", + "@typescript-eslint/scope-manager": "7.10.0", + "@typescript-eslint/types": "7.10.0", + "@typescript-eslint/typescript-estree": "7.10.0", + "@typescript-eslint/visitor-keys": "7.10.0", "debug": "^4.3.4" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "eslint": "^8.56.0" }, "peerDependenciesMeta": { "typescript": { @@ -5627,16 +6569,16 @@ } }, "node_modules/eslint-config-service-soft/node_modules/@typescript-eslint/scope-manager": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.7.5.tgz", - "integrity": "sha512-GAlk3eQIwWOJeb9F7MKQ6Jbah/vx1zETSDw8likab/eFcqkjSD7BI75SDAeC5N2L0MmConMoPvTsmkrg71+B1A==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.10.0.tgz", + "integrity": "sha512-7L01/K8W/VGl7noe2mgH0K7BE29Sq6KAbVmxurj8GGaPDZXPr8EEQ2seOeAS+mEV9DnzxBQB6ax6qQQ5C6P4xg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.7.5", - "@typescript-eslint/visitor-keys": "6.7.5" + "@typescript-eslint/types": "7.10.0", + "@typescript-eslint/visitor-keys": "7.10.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -5644,25 +6586,25 @@ } }, "node_modules/eslint-config-service-soft/node_modules/@typescript-eslint/type-utils": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.7.5.tgz", - "integrity": "sha512-Gs0qos5wqxnQrvpYv+pf3XfcRXW6jiAn9zE/K+DlmYf6FcpxeNYN0AIETaPR7rHO4K2UY+D0CIbDP9Ut0U4m1g==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.10.0.tgz", + "integrity": "sha512-D7tS4WDkJWrVkuzgm90qYw9RdgBcrWmbbRkrLA4d7Pg3w0ttVGDsvYGV19SH8gPR5L7OtcN5J1hTtyenO9xE9g==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "6.7.5", - "@typescript-eslint/utils": "6.7.5", + "@typescript-eslint/typescript-estree": "7.10.0", + "@typescript-eslint/utils": "7.10.0", "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "eslint": "^8.56.0" }, "peerDependenciesMeta": { "typescript": { @@ -5670,38 +6612,13 @@ } } }, - "node_modules/eslint-config-service-soft/node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.7.5.tgz", - "integrity": "sha512-pfRRrH20thJbzPPlPc4j0UNGvH1PjPlhlCMq4Yx7EGjV7lvEeGX0U6MJYe8+SyFutWgSHsdbJ3BXzZccYggezA==", - "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.5", - "@typescript-eslint/types": "6.7.5", - "@typescript-eslint/typescript-estree": "6.7.5", - "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/eslint-config-service-soft/node_modules/@typescript-eslint/types": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.5.tgz", - "integrity": "sha512-WboQBlOXtdj1tDFPyIthpKrUb+kZf2VroLZhxKa/VlwLlLyqv/PwUNgL30BlTVZV1Wu4Asu2mMYPqarSO4L5ZQ==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.10.0.tgz", + "integrity": "sha512-7fNj+Ya35aNyhuqrA1E/VayQX9Elwr8NKZ4WueClR3KwJ7Xx9jcCdOrLW04h51de/+gNbyFMs+IDxh5xIwfbNg==", "dev": true, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -5709,21 +6626,22 @@ } }, "node_modules/eslint-config-service-soft/node_modules/@typescript-eslint/typescript-estree": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.5.tgz", - "integrity": "sha512-NhJiJ4KdtwBIxrKl0BqG1Ur+uw7FiOnOThcYx9DpOGJ/Abc9z2xNzLeirCG02Ig3vkvrc2qFLmYSSsaITbKjlg==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.10.0.tgz", + "integrity": "sha512-LXFnQJjL9XIcxeVfqmNj60YhatpRLt6UhdlFwAkjNc6jSUlK8zQOl1oktAP8PlWFzPQC1jny/8Bai3/HPuvN5g==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.7.5", - "@typescript-eslint/visitor-keys": "6.7.5", + "@typescript-eslint/types": "7.10.0", + "@typescript-eslint/visitor-keys": "7.10.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -5736,140 +6654,57 @@ } }, "node_modules/eslint-config-service-soft/node_modules/@typescript-eslint/utils": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.9.0.tgz", - "integrity": "sha512-5Wf+Jsqya7WcCO8me504FBigeQKVLAMPmUzYgDbWchINNh1KJbxCgVya3EQ2MjvJMVeXl3pofRmprqX6mfQkjQ==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.10.0.tgz", + "integrity": "sha512-olzif1Fuo8R8m/qKkzJqT7qwy16CzPRWBvERS0uvyc+DHd8AKbO4Jb7kpAvVzMmZm8TrHnI7hvjN4I05zow+tg==", "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.9.0", - "@typescript-eslint/types": "6.9.0", - "@typescript-eslint/typescript-estree": "6.9.0", - "semver": "^7.5.4" + "@typescript-eslint/scope-manager": "7.10.0", + "@typescript-eslint/types": "7.10.0", + "@typescript-eslint/typescript-estree": "7.10.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - } - }, - "node_modules/eslint-config-service-soft/node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.9.0.tgz", - "integrity": "sha512-1R8A9Mc39n4pCCz9o79qRO31HGNDvC7UhPhv26TovDsWPBDx+Sg3rOZdCELIA3ZmNoWAuxaMOT7aWtGRSYkQxw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.9.0", - "@typescript-eslint/visitor-keys": "6.9.0" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/eslint-config-service-soft/node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.9.0.tgz", - "integrity": "sha512-+KB0lbkpxBkBSiVCuQvduqMJy+I1FyDbdwSpM3IoBS7APl4Bu15lStPjgBIdykdRqQNYqYNMa8Kuidax6phaEw==", - "dev": true, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/eslint-config-service-soft/node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.9.0.tgz", - "integrity": "sha512-NJM2BnJFZBEAbCfBP00zONKXvMqihZCrmwCaik0UhLr0vAgb6oguXxLX1k00oQyD+vZZ+CJn3kocvv2yxm4awQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.9.0", - "@typescript-eslint/visitor-keys": "6.9.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/eslint-config-service-soft/node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.9.0.tgz", - "integrity": "sha512-dGtAfqjV6RFOtIP8I0B4ZTBRrlTT8NHHlZZSchQx3qReaoDeXhYM++M4So2AgFK9ZB0emRPA6JI1HkafzA2Ibg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.9.0", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "eslint": "^8.56.0" } }, "node_modules/eslint-config-service-soft/node_modules/@typescript-eslint/visitor-keys": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.5.tgz", - "integrity": "sha512-3MaWdDZtLlsexZzDSdQWsFQ9l9nL8B80Z4fImSpyllFC/KLqWQRdEcB+gGGO+N3Q2uL40EsG66wZLsohPxNXvg==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.10.0.tgz", + "integrity": "sha512-9ntIVgsi6gg6FIq9xjEO4VQJvwOqA3jaBFQJ/6TK5AvEup2+cECI6Fh7QiBxmfMHXU0V0J4RyPeOU1VDNzl9cg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.7.5", - "eslint-visitor-keys": "^3.4.1" + "@typescript-eslint/types": "7.10.0", + "eslint-visitor-keys": "^3.4.3" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/eslint-config-service-soft/node_modules/eslint-plugin-unused-imports": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-3.1.0.tgz", - "integrity": "sha512-9l1YFCzXKkw1qtAru1RWUtG2EVDZY0a0eChKXcL+EZ5jitG7qxdctu4RnvhOJHv4xfmUf7h+JJPINlVpGhZMrw==", + "node_modules/eslint-config-service-soft/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", "dev": true, "dependencies": { - "eslint-rule-composer": "^0.3.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "@typescript-eslint/eslint-plugin": "6 - 7", - "eslint": "8" + "node": ">=16 || 14 >=14.17" }, - "peerDependenciesMeta": { - "@typescript-eslint/eslint-plugin": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/eslint-import-resolver-node": { @@ -5910,9 +6745,9 @@ } }, "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==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", + "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", "dev": true, "dependencies": { "debug": "^3.2.7" @@ -5935,16 +6770,19 @@ "ms": "^2.1.1" } }, - "node_modules/eslint-plugin-const-case": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-const-case/-/eslint-plugin-const-case-1.2.2.tgz", - "integrity": "sha512-ON8VLOfGqXRW9Zck+lhgT5k6+jAW+lH7RRjH0YvA42trYhSq6Ayq8m3frqCJhlArDwfPKnjHVVyZhQurTDL3OQ==", + "node_modules/eslint-plugin-deprecation": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-deprecation/-/eslint-plugin-deprecation-2.0.0.tgz", + "integrity": "sha512-OAm9Ohzbj11/ZFyICyR5N6LbOIvQMp7ZU2zI7Ej0jIc8kiGUERXPNMfw2QqqHD1ZHtjMub3yPZILovYEYucgoQ==", "dev": true, "dependencies": { - "requireindex": "1.2.0" + "@typescript-eslint/utils": "^6.0.0", + "tslib": "^2.3.1", + "tsutils": "^3.21.0" }, - "engines": { - "node": ">=10" + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0", + "typescript": "^4.2.4 || ^5.0.0" } }, "node_modules/eslint-plugin-escompat": { @@ -5988,9 +6826,9 @@ } }, "node_modules/eslint-plugin-eslint-plugin": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-eslint-plugin/-/eslint-plugin-eslint-plugin-5.1.1.tgz", - "integrity": "sha512-4MGDsG505Ot2TSDSYxFL0cpDo4Y+t6hKB8cfZw9Jx484VjXWDfiYC/A6cccWFtWoOOC0j+wGgQIIb11cdIAMBg==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-eslint-plugin/-/eslint-plugin-eslint-plugin-5.5.1.tgz", + "integrity": "sha512-9AmfZzcQ7QHwpzfAQpZ7xdtwHYViylmlnruCH0aV64/tuoH3igGXg91vr0e6ShLf/mrAYGqLw5LZ/gOxJeRXnw==", "dev": true, "dependencies": { "eslint-utils": "^3.0.0", @@ -6019,14 +6857,14 @@ } }, "node_modules/eslint-plugin-github": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-github/-/eslint-plugin-github-4.10.1.tgz", - "integrity": "sha512-1AqQBockOM+m0ZUpwfjWtX0lWdX5cRi/hwJnSNvXoOmz/Hh+ULH6QFz6ENWueTWjoWpgPv0af3bj+snps6o4og==", + "version": "5.0.0-2", + "resolved": "https://registry.npmjs.org/eslint-plugin-github/-/eslint-plugin-github-5.0.0-2.tgz", + "integrity": "sha512-oQUFAF1wMBvRMGLvGWxVhZ46JNjKbPuuDufmUDZ3ZYyovWHCqqR5HLHTpTfmZQcyEXmjv9TWdsgfdMlod2fGMQ==", "dev": true, "dependencies": { "@github/browserslist-config": "^1.0.0", - "@typescript-eslint/eslint-plugin": "^6.0.0", - "@typescript-eslint/parser": "^6.0.0", + "@typescript-eslint/eslint-plugin": "^7.0.1", + "@typescript-eslint/parser": "^7.0.1", "aria-query": "^5.3.0", "eslint-config-prettier": ">=8.0.0", "eslint-plugin-escompat": "^3.3.3", @@ -6050,33 +6888,31 @@ } }, "node_modules/eslint-plugin-github/node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.9.0.tgz", - "integrity": "sha512-lgX7F0azQwRPB7t7WAyeHWVfW1YJ9NIgd9mvGhfQpRY56X6AVf8mwM8Wol+0z4liE7XX3QOt8MN1rUKCfSjRIA==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.10.0.tgz", + "integrity": "sha512-PzCr+a/KAef5ZawX7nbyNwBDtM1HdLIT53aSA2DDlxmxMngZ43O8SIePOeX8H5S+FHXeI6t97mTt/dDdzY4Fyw==", "dev": true, - "dependencies": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.9.0", - "@typescript-eslint/type-utils": "6.9.0", - "@typescript-eslint/utils": "6.9.0", - "@typescript-eslint/visitor-keys": "6.9.0", - "debug": "^4.3.4", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.10.0", + "@typescript-eslint/type-utils": "7.10.0", + "@typescript-eslint/utils": "7.10.0", + "@typescript-eslint/visitor-keys": "7.10.0", "graphemer": "^1.4.0", - "ignore": "^5.2.4", + "ignore": "^5.3.1", "natural-compare": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.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" + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" }, "peerDependenciesMeta": { "typescript": { @@ -6085,26 +6921,26 @@ } }, "node_modules/eslint-plugin-github/node_modules/@typescript-eslint/parser": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.9.0.tgz", - "integrity": "sha512-GZmjMh4AJ/5gaH4XF2eXA8tMnHWP+Pm1mjQR2QN4Iz+j/zO04b9TOvJYOX2sCNIQHtRStKTxRY1FX7LhpJT4Gw==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.10.0.tgz", + "integrity": "sha512-2EjZMA0LUW5V5tGQiaa2Gys+nKdfrn2xiTIBLR4fxmPmVSvgPcKNW+AE/ln9k0A4zDUti0J/GZXMDupQoI+e1w==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "6.9.0", - "@typescript-eslint/types": "6.9.0", - "@typescript-eslint/typescript-estree": "6.9.0", - "@typescript-eslint/visitor-keys": "6.9.0", + "@typescript-eslint/scope-manager": "7.10.0", + "@typescript-eslint/types": "7.10.0", + "@typescript-eslint/typescript-estree": "7.10.0", + "@typescript-eslint/visitor-keys": "7.10.0", "debug": "^4.3.4" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "eslint": "^8.56.0" }, "peerDependenciesMeta": { "typescript": { @@ -6113,16 +6949,16 @@ } }, "node_modules/eslint-plugin-github/node_modules/@typescript-eslint/scope-manager": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.9.0.tgz", - "integrity": "sha512-1R8A9Mc39n4pCCz9o79qRO31HGNDvC7UhPhv26TovDsWPBDx+Sg3rOZdCELIA3ZmNoWAuxaMOT7aWtGRSYkQxw==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.10.0.tgz", + "integrity": "sha512-7L01/K8W/VGl7noe2mgH0K7BE29Sq6KAbVmxurj8GGaPDZXPr8EEQ2seOeAS+mEV9DnzxBQB6ax6qQQ5C6P4xg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.9.0", - "@typescript-eslint/visitor-keys": "6.9.0" + "@typescript-eslint/types": "7.10.0", + "@typescript-eslint/visitor-keys": "7.10.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -6130,25 +6966,25 @@ } }, "node_modules/eslint-plugin-github/node_modules/@typescript-eslint/type-utils": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.9.0.tgz", - "integrity": "sha512-XXeahmfbpuhVbhSOROIzJ+b13krFmgtc4GlEuu1WBT+RpyGPIA4Y/eGnXzjbDj5gZLzpAXO/sj+IF/x2GtTMjQ==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.10.0.tgz", + "integrity": "sha512-D7tS4WDkJWrVkuzgm90qYw9RdgBcrWmbbRkrLA4d7Pg3w0ttVGDsvYGV19SH8gPR5L7OtcN5J1hTtyenO9xE9g==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "6.9.0", - "@typescript-eslint/utils": "6.9.0", + "@typescript-eslint/typescript-estree": "7.10.0", + "@typescript-eslint/utils": "7.10.0", "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "eslint": "^8.56.0" }, "peerDependenciesMeta": { "typescript": { @@ -6157,12 +6993,12 @@ } }, "node_modules/eslint-plugin-github/node_modules/@typescript-eslint/types": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.9.0.tgz", - "integrity": "sha512-+KB0lbkpxBkBSiVCuQvduqMJy+I1FyDbdwSpM3IoBS7APl4Bu15lStPjgBIdykdRqQNYqYNMa8Kuidax6phaEw==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.10.0.tgz", + "integrity": "sha512-7fNj+Ya35aNyhuqrA1E/VayQX9Elwr8NKZ4WueClR3KwJ7Xx9jcCdOrLW04h51de/+gNbyFMs+IDxh5xIwfbNg==", "dev": true, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -6170,21 +7006,22 @@ } }, "node_modules/eslint-plugin-github/node_modules/@typescript-eslint/typescript-estree": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.9.0.tgz", - "integrity": "sha512-NJM2BnJFZBEAbCfBP00zONKXvMqihZCrmwCaik0UhLr0vAgb6oguXxLX1k00oQyD+vZZ+CJn3kocvv2yxm4awQ==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.10.0.tgz", + "integrity": "sha512-LXFnQJjL9XIcxeVfqmNj60YhatpRLt6UhdlFwAkjNc6jSUlK8zQOl1oktAP8PlWFzPQC1jny/8Bai3/HPuvN5g==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.9.0", - "@typescript-eslint/visitor-keys": "6.9.0", + "@typescript-eslint/types": "7.10.0", + "@typescript-eslint/visitor-keys": "7.10.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -6197,89 +7034,57 @@ } }, "node_modules/eslint-plugin-github/node_modules/@typescript-eslint/utils": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.9.0.tgz", - "integrity": "sha512-5Wf+Jsqya7WcCO8me504FBigeQKVLAMPmUzYgDbWchINNh1KJbxCgVya3EQ2MjvJMVeXl3pofRmprqX6mfQkjQ==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.10.0.tgz", + "integrity": "sha512-olzif1Fuo8R8m/qKkzJqT7qwy16CzPRWBvERS0uvyc+DHd8AKbO4Jb7kpAvVzMmZm8TrHnI7hvjN4I05zow+tg==", "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.9.0", - "@typescript-eslint/types": "6.9.0", - "@typescript-eslint/typescript-estree": "6.9.0", - "semver": "^7.5.4" + "@typescript-eslint/scope-manager": "7.10.0", + "@typescript-eslint/types": "7.10.0", + "@typescript-eslint/typescript-estree": "7.10.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "eslint": "^8.56.0" } }, "node_modules/eslint-plugin-github/node_modules/@typescript-eslint/visitor-keys": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.9.0.tgz", - "integrity": "sha512-dGtAfqjV6RFOtIP8I0B4ZTBRrlTT8NHHlZZSchQx3qReaoDeXhYM++M4So2AgFK9ZB0emRPA6JI1HkafzA2Ibg==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.10.0.tgz", + "integrity": "sha512-9ntIVgsi6gg6FIq9xjEO4VQJvwOqA3jaBFQJ/6TK5AvEup2+cECI6Fh7QiBxmfMHXU0V0J4RyPeOU1VDNzl9cg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.9.0", - "eslint-visitor-keys": "^3.4.1" + "@typescript-eslint/types": "7.10.0", + "eslint-visitor-keys": "^3.4.3" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/eslint-plugin-github/node_modules/eslint-plugin-prettier": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.1.tgz", - "integrity": "sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg==", + "node_modules/eslint-plugin-github/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", "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-github/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" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=14" + "node": ">=16 || 14 >=14.17" }, "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/eslint-plugin-i18n-text": { @@ -6322,6 +7127,16 @@ "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" } }, + "node_modules/eslint-plugin-import/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/eslint-plugin-import/node_modules/debug": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", @@ -6343,6 +7158,18 @@ "node": ">=0.10.0" } }, + "node_modules/eslint-plugin-import/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/eslint-plugin-import/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -6353,108 +7180,356 @@ } }, "node_modules/eslint-plugin-jsdoc": { - "version": "46.8.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-46.8.2.tgz", - "integrity": "sha512-5TSnD018f3tUJNne4s4gDWQflbsgOycIKEUBoCLn6XtBMgNHxQFmV8vVxUtiPxAQq8lrX85OaSG/2gnctxw9uQ==", + "version": "48.2.6", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-48.2.6.tgz", + "integrity": "sha512-GNk9jtpYmoEVeD/U6yYYmd6T8vSOoPs7CL8ZeX85iD8P3qifDdLQGze6+cw9boobDthmYnnxvIoHrhuSffj09g==", "dev": true, "dependencies": { - "@es-joy/jsdoccomment": "~0.40.1", + "@es-joy/jsdoccomment": "~0.43.0", "are-docs-informative": "^0.0.2", - "comment-parser": "1.4.0", + "comment-parser": "1.4.1", "debug": "^4.3.4", "escape-string-regexp": "^4.0.0", "esquery": "^1.5.0", - "is-builtin-module": "^3.2.1", - "semver": "^7.5.4", - "spdx-expression-parse": "^3.0.1" + "semver": "^7.6.1", + "spdx-expression-parse": "^4.0.0" }, "engines": { - "node": ">=16" + "node": ">=18" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" } }, "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==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz", + "integrity": "sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==", "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", + "@babel/runtime": "^7.23.2", + "aria-query": "^5.3.0", + "array-includes": "^3.1.7", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "=4.7.0", + "axobject-query": "^3.2.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", + "es-iterator-helpers": "^1.0.15", + "hasown": "^2.0.0", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "semver": "^6.3.0" + "object.entries": "^1.1.7", + "object.fromentries": "^2.0.7" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/axobject-query": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", + "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", + "dev": true, + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint-plugin-mocha": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-10.4.3.tgz", + "integrity": "sha512-emc4TVjq5Ht0/upR+psftuz6IBG5q279p+1dSRDeHf+NS9aaerBi3lXKo1SEzwC29hFIW21gO89CEWSvRsi8IQ==", + "dev": true, + "dependencies": { + "eslint-utils": "^3.0.0", + "globals": "^13.24.0", + "rambda": "^7.4.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-no-only-tests": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-no-only-tests/-/eslint-plugin-no-only-tests-3.1.0.tgz", + "integrity": "sha512-Lf4YW/bL6Un1R6A76pRZyE1dl1vr31G/ev8UzIc/geCgFWyrKil8hVjYqWVKGB/UIGmb6Slzs9T0wNezdSVegw==", + "dev": true, + "engines": { + "node": ">=5.0.0" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz", + "integrity": "sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.8.6" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": "*", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-prettier/node_modules/synckit": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.8.tgz", + "integrity": "sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==", + "dev": true, + "dependencies": { + "@pkgr/core": "^0.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "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-sonarjs": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-sonarjs/-/eslint-plugin-sonarjs-1.0.3.tgz", + "integrity": "sha512-6s41HLPYPyDrp+5+7Db5yFYbod6h9pC7yx+xfcNwHRcLe1EZwbbQT/tdOAkR7ekVUkNGEvN3GmYakIoQUX7dEg==", + "dev": true, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "eslint": "^8.0.0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-unicorn": { + "version": "53.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-53.0.0.tgz", + "integrity": "sha512-kuTcNo9IwwUCfyHGwQFOK/HjJAYzbODHN3wP0PgqbW+jbXqpNWxNVpVhj2tO9SixBwuAdmal8rVcWKBxwFnGuw==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.24.5", + "@eslint-community/eslint-utils": "^4.4.0", + "@eslint/eslintrc": "^3.0.2", + "ci-info": "^4.0.0", + "clean-regexp": "^1.0.0", + "core-js-compat": "^3.37.0", + "esquery": "^1.5.0", + "indent-string": "^4.0.0", + "is-builtin-module": "^3.2.1", + "jsesc": "^3.0.2", + "pluralize": "^8.0.0", + "read-pkg-up": "^7.0.1", + "regexp-tree": "^0.1.27", + "regjsparser": "^0.10.0", + "semver": "^7.6.1", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=18.18" + }, + "funding": { + "url": "https://github.com/sindresorhus/eslint-plugin-unicorn?sponsor=1" + }, + "peerDependencies": { + "eslint": ">=8.56.0" + } + }, + "node_modules/eslint-plugin-unicorn/node_modules/@eslint/eslintrc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz", + "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.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": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-plugin-unicorn/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/eslint-plugin-unicorn/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/eslint-plugin-unicorn/node_modules/eslint-visitor-keys": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz", + "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-plugin-unicorn/node_modules/espree": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.0.1.tgz", + "integrity": "sha512-MWkrWZbJsL2UwnjxTX3gG8FneachS/Mwg7tdGXce011sJd5b0JG54vat5KHnfSBODZ3Wvzd2WnjxyzsRoVv+ww==", + "dev": true, + "dependencies": { + "acorn": "^8.11.3", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.0.0" }, "engines": { - "node": ">=4.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint-plugin-jsx-a11y/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/eslint-plugin-jsx-a11y/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/eslint-plugin-unicorn/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", "dev": true, - "bin": { - "semver": "bin/semver.js" + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-plugin-mocha": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-10.1.0.tgz", - "integrity": "sha512-xLqqWUF17llsogVOC+8C6/jvQ+4IoOREbN7ZCHuOHuD6cT5cDD4h7f2LgsZuzMAiwswWE21tO7ExaknHVDrSkw==", + "node_modules/eslint-plugin-unicorn/node_modules/jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", "dev": true, - "dependencies": { - "eslint-utils": "^3.0.0", - "rambda": "^7.1.0" + "bin": { + "jsesc": "bin/jsesc" }, "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "eslint": ">=7.0.0" + "node": ">=6" } }, - "node_modules/eslint-plugin-no-only-tests": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-no-only-tests/-/eslint-plugin-no-only-tests-3.1.0.tgz", - "integrity": "sha512-Lf4YW/bL6Un1R6A76pRZyE1dl1vr31G/ev8UzIc/geCgFWyrKil8hVjYqWVKGB/UIGmb6Slzs9T0wNezdSVegw==", + "node_modules/eslint-plugin-unicorn/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/eslint-plugin-unicorn/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": ">=5.0.0" + "node": "*" } }, - "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==", + "node_modules/eslint-plugin-unused-imports": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-3.2.0.tgz", + "integrity": "sha512-6uXyn6xdINEpxE1MtDjxQsyXB37lfyO2yKGVVgtD7WEWQGORSOZjgrD6hBhvGv4/SO+TOlS+UnC6JppRqbuwGQ==", "dev": true, + "dependencies": { + "eslint-rule-composer": "^0.3.0" + }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "@typescript-eslint/eslint-plugin": "6 - 7", + "eslint": "8" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + } } }, "node_modules/eslint-rule-composer": { @@ -6476,25 +7551,19 @@ } }, "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==", + "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": "^4.1.1" + "estraverse": "^5.2.0" }, "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": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-utils": { @@ -6552,20 +7621,14 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "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==", + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "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" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, "node_modules/eslint/node_modules/json-schema-traverse": { @@ -6574,6 +7637,18 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/espree": { "version": "9.6.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", @@ -6828,9 +7903,9 @@ } }, "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==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -6874,9 +7949,9 @@ "dev": true }, "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==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dev": true, "dependencies": { "reusify": "^1.0.4" @@ -6927,15 +8002,6 @@ "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", @@ -6949,9 +8015,9 @@ } }, "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==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "dependencies": { "to-regex-range": "^5.0.1" @@ -7026,6 +8092,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/find-yarn-workspace-root": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz", + "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==", + "dev": true, + "dependencies": { + "micromatch": "^4.0.2" + } + }, "node_modules/flat": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", @@ -7036,18 +8111,29 @@ } }, "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, "dependencies": { - "flatted": "^3.1.0", + "flatted": "^3.2.9", + "keyv": "^4.5.3", "rimraf": "^3.0.2" }, "engines": { "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/flat-cache/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/flat-cache/node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -7068,6 +8154,18 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/flat-cache/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/flat-cache/node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -7084,9 +8182,9 @@ } }, "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==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", "dev": true }, "node_modules/follow-redirects": { @@ -7208,9 +8306,9 @@ "dev": true }, "node_modules/fs-extra": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", - "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "dev": true, "dependencies": { "graceful-fs": "^4.2.0", @@ -7241,9 +8339,9 @@ "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==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, "optional": true, @@ -7317,13 +8415,22 @@ "dev": true, "peer": true }, + "node_modules/generate-function": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", + "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", + "dev": true, + "dependencies": { + "is-property": "^1.0.2" + } + }, "node_modules/gensequence": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/gensequence/-/gensequence-6.0.0.tgz", - "integrity": "sha512-8WwuywE9pokJRAcg2QFR/plk3cVPebSUqRPzpGQh3WQ0wIiHAw+HyOQj5IuHyUTQBHpBKFoB2JUMu9zT3vJ16Q==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/gensequence/-/gensequence-7.0.0.tgz", + "integrity": "sha512-47Frx13aZh01afHJTB3zTtKIlFI6vWY+MYCN9Qpew6i52rfKjnhCF/l1YlC8UmEMvvntZZ6z4PiCcmyuedR2aQ==", "dev": true, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/gensync": { @@ -7345,16 +8452,20 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", - "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dev": true, "dependencies": { + "es-errors": "^1.3.0", "function-bind": "^1.1.2", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", "hasown": "^2.0.0" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -7384,13 +8495,14 @@ } }, "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==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" }, "engines": { "node": ">= 0.4" @@ -7400,22 +8512,22 @@ } }, "node_modules/glob": { - "version": "10.3.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", - "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", + "version": "10.3.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.15.tgz", + "integrity": "sha512-0c6RlJt1TICLyvJYIApxb8GsXoai0KUP7AxKKAtsYXdgJR1mGEUa7DgwShbdk1nly0PYoZj01xd4hzbq3fsjpw==", "dev": true, "dependencies": { "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", + "jackspeak": "^2.3.6", "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" + "minipass": "^7.0.4", + "path-scurry": "^1.11.0" }, "bin": { - "glob": "dist/cjs/src/bin.js" + "glob": "dist/esm/bin.mjs" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=16 || 14 >=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -7433,54 +8545,21 @@ "node": ">=10.13.0" } }, - "node_modules/glob/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/glob/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/global-dirs": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", - "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", + "node_modules/global-directory": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz", + "integrity": "sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==", "dev": true, "dependencies": { - "ini": "2.0.0" + "ini": "4.1.1" }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/global-dirs/node_modules/ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, "node_modules/globalize": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/globalize/-/globalize-1.7.0.tgz", @@ -7491,9 +8570,9 @@ } }, "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==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -7506,12 +8585,13 @@ } }, "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dev": true, "dependencies": { - "define-properties": "^1.1.3" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -7606,18 +8686,6 @@ "node": ">=0.10.0" } }, - "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", @@ -7646,21 +8714,21 @@ } }, "node_modules/has-property-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", - "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.2" + "es-define-property": "^1.0.0" }, "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==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "dev": true, "engines": { "node": ">= 0.4" @@ -7682,12 +8750,12 @@ } }, "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==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, "dependencies": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -7729,9 +8797,9 @@ } }, "node_modules/hasown": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", - "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, "dependencies": { "function-bind": "^1.1.2" @@ -7771,7 +8839,8 @@ "node_modules/hi-base32": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/hi-base32/-/hi-base32-0.5.1.tgz", - "integrity": "sha512-EmBBpvdYh/4XxsnUybsPag6VikPYnN30td+vQk+GI3qpahVEG9+gTkG0aXVxTjBqQ5T6ijbWIu77O+C5WFWsnA==" + "integrity": "sha512-EmBBpvdYh/4XxsnUybsPag6VikPYnN30td+vQk+GI3qpahVEG9+gTkG0aXVxTjBqQ5T6ijbWIu77O+C5WFWsnA==", + "peer": true }, "node_modules/hosted-git-info": { "version": "6.1.1", @@ -7841,9 +8910,9 @@ } }, "node_modules/http-status": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/http-status/-/http-status-1.6.2.tgz", - "integrity": "sha512-oUExvfNckrpTpDazph7kNG8sQi5au3BeTo0idaZFXEhTaJKu7GNJCLHI0rYY2wljm548MSTM+Ljj/c6anqu2zQ==", + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/http-status/-/http-status-1.7.4.tgz", + "integrity": "sha512-c2qSwNtTlHVYAhMj9JpGdyo0No/+DiKXCJ9pHtZ2Yf3QmPnBIytKSRT7BuyIiQ7icXLynavGmxUqkOjSrAuMuA==", "dev": true, "engines": { "node": ">= 0.4.0" @@ -7889,10 +8958,11 @@ } }, "node_modules/hyperid": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/hyperid/-/hyperid-3.1.1.tgz", - "integrity": "sha512-RveV33kIksycSf7HLkq1sHB5wW0OwuX8ot8MYnY++gaaPXGFfKpBncHrAWxdpuEeRlazUMGWefwP1w6o6GaumA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/hyperid/-/hyperid-3.2.0.tgz", + "integrity": "sha512-PdTtDo+Rmza9nEhTunaDSUKwbC69TIzLEpZUwiB6f+0oqmY0UPfhyHCPt6K1NQ4WFv5yJBTG5vELztVWP+nEVQ==", "dependencies": { + "buffer": "^5.2.1", "uuid": "^8.3.2", "uuid-parse": "^1.1.0" } @@ -7921,7 +8991,6 @@ "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", @@ -7935,54 +9004,28 @@ "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/ignore-walk": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.3.tgz", - "integrity": "sha512-C7FfFoTA+bI10qfeydT8aZbvr91vAEU+2W5BZUlzPec47oNb07SsOfwYrtxuvOYdUApPP/Qlh4DtAO51Ekk2QA==", - "dev": true, - "peer": true, - "dependencies": { - "minimatch": "^9.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/ignore-walk/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + ] + }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "dev": true, - "peer": true, - "dependencies": { - "balanced-match": "^1.0.0" + "engines": { + "node": ">= 4" } }, - "node_modules/ignore-walk/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "node_modules/ignore-walk": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.5.tgz", + "integrity": "sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A==", "dev": true, "peer": true, "dependencies": { - "brace-expansion": "^2.0.1" + "minimatch": "^9.0.0" }, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/import-fresh": { @@ -8023,9 +9066,9 @@ } }, "node_modules/import-meta-resolve": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-3.0.0.tgz", - "integrity": "sha512-4IwhLhNNA8yy445rPjD/lWh++7hMDOml2eHtd58eG7h+qK3EryMuuRbsHGPikCoAgIkkDnckKfWSk2iDla/ejg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", + "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", "dev": true, "funding": { "type": "github", @@ -8050,14 +9093,21 @@ "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, + "peer": true + }, "node_modules/inflection": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.13.4.tgz", - "integrity": "sha512-6I/HUDeYFfuNCVS3td055BaXBwKYuzw7K3ExVMStBowKo9oOAMJIXIHvdyR3iboTCp1b+1i5DSkIZTcwIktuDw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/inflection/-/inflection-3.0.0.tgz", + "integrity": "sha512-1zEJU1l19SgJlmwqsEyFTbScw/tkMHFenUo//Y0i+XEP83gDFdMvPizAD/WGcE+l1ku12PcTVHQhO6g5E0UCMw==", "dev": true, - "engines": [ - "node >= 0.4.0" - ] + "engines": { + "node": ">=18.0.0" + } }, "node_modules/inflight": { "version": "1.0.6", @@ -8080,7 +9130,6 @@ "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", "dev": true, - "peer": true, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -8113,12 +9162,12 @@ } }, "node_modules/internal-slot": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", - "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.2", + "es-errors": "^1.3.0", "hasown": "^2.0.0", "side-channel": "^1.0.4" }, @@ -8138,31 +9187,40 @@ "url": "https://github.com/sindresorhus/invert-kv?sponsor=1" } }, - "node_modules/ip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.1.tgz", - "integrity": "sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ==", + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", "dev": true, - "peer": true + "peer": true, + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } }, "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, + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", + "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", + "peer": true, "engines": { - "node": ">= 0.10" + "node": ">= 10" } }, "node_modules/is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -8174,6 +9232,21 @@ "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", @@ -8259,6 +9332,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dev": true, + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "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", @@ -8298,6 +9386,18 @@ "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", @@ -8307,49 +9407,31 @@ "node": ">=8" } }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-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==", + "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": { - "is-docker": "^3.0.0" - }, - "bin": { - "is-inside-container": "cli.js" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=14.16" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "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, - "bin": { - "is-docker": "cli.js" + "dependencies": { + "is-extglob": "^2.1.1" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, "node_modules/is-interactive": { @@ -8369,10 +9451,22 @@ "dev": true, "peer": true }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "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==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "dev": true, "engines": { "node": ">= 0.4" @@ -8405,15 +9499,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", @@ -8432,6 +9517,12 @@ "node": ">=8" } }, + "node_modules/is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==", + "dev": true + }, "node_modules/is-regex": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", @@ -8448,13 +9539,28 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "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==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2" + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -8503,12 +9609,12 @@ } }, "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==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", "dev": true, "dependencies": { - "which-typed-array": "^1.1.11" + "which-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" @@ -8535,6 +9641,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "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", @@ -8547,6 +9665,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-weakset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", + "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -8581,9 +9715,9 @@ "dev": true }, "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==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, "engines": { "node": ">=8" @@ -8642,6 +9776,16 @@ "node": ">=8" } }, + "node_modules/istanbul-lib-processinfo/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/istanbul-lib-processinfo/node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -8662,6 +9806,18 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/istanbul-lib-processinfo/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/istanbul-lib-processinfo/node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -8739,9 +9895,9 @@ } }, "node_modules/istanbul-reports": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", - "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", "dev": true, "dependencies": { "html-escaper": "^2.0.0", @@ -8751,10 +9907,23 @@ "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.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.2.3.tgz", - "integrity": "sha512-pF0kfjmg8DJLxDrizHoCZGUFz4P4czQ3HyfW4BU0ffebYkzAVlBywp5zaxW/TM+r0sGbmrQdi8EQQVTJFxnGsQ==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", "dev": true, "dependencies": { "@isaacs/cliui": "^8.0.2" @@ -8770,9 +9939,9 @@ } }, "node_modules/jake": { - "version": "10.8.7", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", - "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==", + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.1.tgz", + "integrity": "sha512-61btcOHNnLnsOdtLgA5efqQWjnSi/vow5HbI7HMdKKWqvrKR1bLK3BPlJn9gcSaP2ewuamUSMB5XEy76KUIS2w==", "dev": true, "dependencies": { "async": "^3.2.3", @@ -8787,6 +9956,28 @@ "node": ">=10" } }, + "node_modules/jake/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/jake/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/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -8806,14 +9997,21 @@ } }, "node_modules/js2xmlparser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.2.tgz", - "integrity": "sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-5.0.0.tgz", + "integrity": "sha512-ckXs0Fzd6icWurbeAXuqo+3Mhq2m8pOPygsQjTPh8K5UWgKaUgDSHrdDxAfexmT11xvBKOQ6sgYwPkYc5RW/bg==", "dev": true, "dependencies": { "xmlcreate": "^2.0.4" } }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "dev": true, + "peer": true + }, "node_modules/jsdoc-type-pratt-parser": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz", @@ -8835,6 +10033,12 @@ "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-merge-patch": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-merge-patch/-/json-merge-patch-1.0.2.tgz", @@ -8859,12 +10063,30 @@ "lodash": "^4.17.4" } }, - "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/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/json-stable-stringify": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.1.1.tgz", + "integrity": "sha512-SU/971Kt5qVQfJpyDveVhQ/vya+5hvrjClFOcr8c0Fq5aODJjMwutrOfCU+eCnVD5gpx1Q3fEqkyom77zH1iIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "isarray": "^2.0.5", + "jsonify": "^0.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "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", @@ -8901,6 +10123,15 @@ "graceful-fs": "^4.1.6" } }, + "node_modules/jsonify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz", + "integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/jsonparse": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", @@ -8912,14 +10143,21 @@ "peer": true }, "node_modules/jsonwebtoken": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.1.tgz", - "integrity": "sha512-K8wx7eJ5TPvEjuiVSkv167EVboBDv9PZdDoF7BgeQnBLVvZWW9clr2PsQHVJDTKaEIH5JBIwHujGcHp7GgI2eg==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", + "peer": true, "dependencies": { "jws": "^3.2.2", - "lodash": "^4.17.21", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", "ms": "^2.1.1", - "semver": "^7.3.8" + "semver": "^7.5.4" }, "engines": { "node": ">=12", @@ -8930,6 +10168,7 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/jssha/-/jssha-3.3.1.tgz", "integrity": "sha512-VCMZj12FCFMQYcFLPRm/0lOBbLi8uM2BhXPTqw3U4YAfs4AZfiApOoBLoN8cQE60Z50m1MYMTQVCfgF/KaCVhQ==", + "peer": true, "engines": { "node": "*" } @@ -8950,15 +10189,16 @@ } }, "node_modules/just-extend": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz", - "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-6.2.0.tgz", + "integrity": "sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw==", "dev": true }, "node_modules/jwa": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "peer": true, "dependencies": { "buffer-equal-constant-time": "1.0.1", "ecdsa-sig-formatter": "1.0.11", @@ -8969,24 +10209,46 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "peer": true, "dependencies": { "jwa": "^1.4.1", "safe-buffer": "^5.0.1" } }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/klaw-sync": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz", + "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.11" + } + }, "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==", + "version": "0.3.23", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", + "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", "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==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", "dev": true, "dependencies": { - "language-subtag-registry": "~0.3.2" + "language-subtag-registry": "^0.3.20" + }, + "engines": { + "node": ">=0.10" } }, "node_modules/lcid": { @@ -9015,9 +10277,9 @@ } }, "node_modules/lines-and-columns": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.3.tgz", - "integrity": "sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz", + "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", "dev": true, "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" @@ -9061,6 +10323,42 @@ "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", "dev": true }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", + "peer": true + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", + "peer": true + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", + "peer": true + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", + "peer": true + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "peer": true + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "peer": true + }, "node_modules/lodash.kebabcase": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", @@ -9073,6 +10371,12 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "peer": true + }, "node_modules/lodash.snakecase": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", @@ -9101,61 +10405,263 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/long": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==", + "dev": true + }, "node_modules/loopback-connector": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/loopback-connector/-/loopback-connector-5.3.3.tgz", - "integrity": "sha512-ZYULfy5W7+R2A3I9TILWZOdfMVcZ2qEQT/tye0Fy7Ju3zQ6Gv1bmroARGPGVDAneFt+5YaiaieLdoJ1t02hLpg==", + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/loopback-connector/-/loopback-connector-6.1.5.tgz", + "integrity": "sha512-O48IFm9apzIzrNybJSmhM+1ZarzVJzbxvG7VD7UtgKQj28gQ0KoCtlHLpDwbi9TXd+BrrL/OrildFNFny5maEQ==", "dev": true, "dependencies": { - "async": "^3.2.4", + "async": "^3.2.5", "bluebird": "^3.7.2", "debug": "^4.3.4", "msgpack5": "^4.5.1", - "strong-globalize": "^6.0.5", - "uuid": "^9.0.0" + "strong-globalize": "^6.0.6", + "uuid": "^9.0.1" }, "engines": { - "node": ">=10" + "node": ">=18" + } + }, + "node_modules/loopback-connector-mysql": { + "version": "7.0.10", + "resolved": "https://registry.npmjs.org/loopback-connector-mysql/-/loopback-connector-mysql-7.0.10.tgz", + "integrity": "sha512-pdC58HY4FUxEaSQM4frXf5KJgCzECvYbZSqk0Pw4cB7FUIumPZvKzuMTwoz0QFkT/DfD2vOdDLL/TG3LQZaUiw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "async": "^3.2.5", + "debug": "^4.3.4", + "lodash": "^4.17.21", + "loopback-connector": "^6.1.5", + "mysql2": "^3.6.3", + "patch-package": "^8.0.0", + "strong-globalize": "^6.0.6" + }, + "engines": { + "node": ">=18" } }, "node_modules/loopback-datasource-juggler": { - "version": "4.28.9", - "resolved": "https://registry.npmjs.org/loopback-datasource-juggler/-/loopback-datasource-juggler-4.28.9.tgz", - "integrity": "sha512-vBwqQaSa2GpCqS/zevAGG6zRgzsQ/KhB4xUaBSbGxNMD6GwTbS60GuD4yKSN2t4pwx4Qca2x3YUAXhumO1bN2Q==", + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/loopback-datasource-juggler/-/loopback-datasource-juggler-5.0.9.tgz", + "integrity": "sha512-C0kQ1KfO9zjjFRYvLXhoI2icUjCTvCFsw1RsSfJOglCrJTHRsxet3Ocl4QZg/jgnJrwqLbLSC/94e4cnkver7w==", "dev": true, "dependencies": { - "async": "^3.2.4", + "async": "^3.2.5", "change-case": "^4.1.2", "debug": "^4.3.4", "depd": "^2.0.0", - "inflection": "^1.13.4", + "inflection": "^3.0.0", "lodash": "^4.17.21", - "loopback-connector": "^5.3.3", - "minimatch": "^5.1.6", - "nanoid": "^3.3.6", - "qs": "^6.11.2", - "strong-globalize": "^6.0.5", - "traverse": "^0.6.7", - "uuid": "^9.0.0" + "loopback-connector": "^6.1.5", + "minimatch": "^9.0.4", + "nanoid": "^3.3.7", + "qs": "^6.12.1", + "strong-globalize": "^6.0.6", + "traverse": "^0.6.9", + "uuid": "^9.0.1" }, "engines": { - "node": ">=10" + "node": ">=18" } }, - "node_modules/loopback-datasource-juggler/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/loopback-datasource-juggler/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", "dev": true, "dependencies": { - "balanced-match": "^1.0.0" + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/loopback-datasource-juggler/node_modules/minimatch": { + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lru-cache": { + "version": "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/magic-string": { + "version": "0.30.1", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.1.tgz", + "integrity": "sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==", + "dev": true, + "peer": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/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/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, + "peer": 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/@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, + "peer": true, + "dependencies": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/cacache": { + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", + "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", + "dev": true, + "peer": 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/make-fetch-happen/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, + "peer": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/make-fetch-happen/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, + "peer": 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/make-fetch-happen/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/make-fetch-happen/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, + "peer": true, "dependencies": { "brace-expansion": "^2.0.1" }, @@ -9163,108 +10669,142 @@ "node": ">=10" } }, - "node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "node_modules/make-fetch-happen/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, + "peer": true, "dependencies": { - "tslib": "^2.0.3" + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/make-fetch-happen/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, + "peer": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", + "node_modules/make-fetch-happen/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, + "peer": true, "dependencies": { - "yallist": "^3.0.2" + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/magic-string": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.1.tgz", - "integrity": "sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==", + "node_modules/make-fetch-happen/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, "peer": true, "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" - }, - "engines": { - "node": ">=12" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "node_modules/make-fetch-happen/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, + "peer": true, "dependencies": { - "semver": "^6.0.0" + "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": ">=8" + "node": "*" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/make-fetch-happen/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, - "bin": { - "semver": "bin/semver.js" + "peer": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, - "node_modules/make-fetch-happen": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", - "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", + "node_modules/make-fetch-happen/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, "peer": true, "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" + "minipass": "^3.1.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/make-fetch-happen/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "node_modules/make-fetch-happen/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, "peer": true, + "dependencies": { + "unique-slug": "^3.0.0" + }, "engines": { - "node": ">=12" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/make-fetch-happen/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "node_modules/make-fetch-happen/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, "peer": true, + "dependencies": { + "imurmurhash": "^0.1.4" + }, "engines": { - "node": ">=8" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/make-fetch-happen/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, + "peer": true + }, "node_modules/map-age-cleaner": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", @@ -9342,12 +10882,12 @@ } }, "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", "dev": true, "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { @@ -9396,16 +10936,28 @@ "node": ">=6" } }, + "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/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "*" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/minimist": { @@ -9418,9 +10970,9 @@ } }, "node_modules/minipass": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.3.tgz", - "integrity": "sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.1.tgz", + "integrity": "sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==", "dev": true, "engines": { "node": ">=16 || 14 >=14.17" @@ -9460,23 +11012,43 @@ "peer": true }, "node_modules/minipass-fetch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.4.tgz", - "integrity": "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", "dev": true, "peer": true, "dependencies": { - "minipass": "^7.0.3", + "minipass": "^3.1.6", "minipass-sized": "^1.0.3", "minizlib": "^2.1.2" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" }, "optionalDependencies": { "encoding": "^0.1.13" } }, + "node_modules/minipass-fetch/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "peer": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-fetch/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, + "peer": true + }, "node_modules/minipass-flush": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", @@ -9654,9 +11226,9 @@ } }, "node_modules/mocha": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", - "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.4.0.tgz", + "integrity": "sha512-eqhGB8JKapEYcC4ytX/xrzKforgEc3j1pGlAXVy3eRwrtAy5/nIfT1SvgGzfN0XZZxeLq0aQWkOUAmqIJiv+bA==", "dev": true, "dependencies": { "ansi-colors": "4.1.1", @@ -9666,13 +11238,12 @@ "diff": "5.0.0", "escape-string-regexp": "4.0.0", "find-up": "5.0.0", - "glob": "7.2.0", + "glob": "8.1.0", "he": "1.2.0", "js-yaml": "4.1.0", "log-symbols": "4.1.0", "minimatch": "5.0.1", "ms": "2.1.3", - "nanoid": "3.3.3", "serialize-javascript": "6.0.0", "strip-json-comments": "3.1.1", "supports-color": "8.1.1", @@ -9687,10 +11258,6 @@ }, "engines": { "node": ">= 14.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" } }, "node_modules/mocha/node_modules/ansi-colors": { @@ -9703,37 +11270,24 @@ } }, "node_modules/mocha/node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "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": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": "*" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/mocha/node_modules/glob/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/mocha/node_modules/minimatch": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", @@ -9746,33 +11300,12 @@ "node": ">=10" } }, - "node_modules/mocha/node_modules/minimatch/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/mocha/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/mocha/node_modules/nanoid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", - "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, "node_modules/mocha/node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -9830,10 +11363,71 @@ "dev": true, "peer": true }, + "node_modules/mysql2": { + "version": "3.9.7", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.9.7.tgz", + "integrity": "sha512-KnJT8vYRcNAZv73uf9zpXqNbvBG7DJrs+1nACsjZP1HMJ1TgXEy8wnNilXAn/5i57JizXKtrUtwDB7HxT9DDpw==", + "dev": true, + "dependencies": { + "denque": "^2.1.0", + "generate-function": "^2.3.1", + "iconv-lite": "^0.6.3", + "long": "^5.2.1", + "lru-cache": "^8.0.0", + "named-placeholders": "^1.1.3", + "seq-queue": "^0.0.5", + "sqlstring": "^2.3.2" + }, + "engines": { + "node": ">= 8.0" + } + }, + "node_modules/mysql2/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/mysql2/node_modules/lru-cache": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-8.0.5.tgz", + "integrity": "sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==", + "dev": true, + "engines": { + "node": ">=16.14" + } + }, + "node_modules/named-placeholders": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.3.tgz", + "integrity": "sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==", + "dev": true, + "dependencies": { + "lru-cache": "^7.14.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/named-placeholders/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "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==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", "dev": true, "funding": [ { @@ -9854,12 +11448,6 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -9876,40 +11464,16 @@ "dev": true }, "node_modules/nise": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.4.tgz", - "integrity": "sha512-8+Ib8rRJ4L0o3kfmyVCL7gzrohyDe0cMFTBa2d364yIrEGMEoetznKJx899YxjybU6bL9SQkYPSBBs1gyYs8Xg==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^2.0.0", - "@sinonjs/fake-timers": "^10.0.2", - "@sinonjs/text-encoding": "^0.7.1", - "just-extend": "^4.0.2", - "path-to-regexp": "^1.7.0" - } - }, - "node_modules/nise/node_modules/@sinonjs/commons": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", - "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", - "dev": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/nise/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", - "dev": true - }, - "node_modules/nise/node_modules/path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.9.tgz", + "integrity": "sha512-qOnoujW4SV6e40dYxJOb3uvuoPHtmLzIk4TFo+j0jPJoC+5Z9xja5qH5JZobEPsa8+YYphMrOSwnrshEhG2qww==", "dev": true, "dependencies": { - "isarray": "0.0.1" + "@sinonjs/commons": "^3.0.0", + "@sinonjs/fake-timers": "^11.2.2", + "@sinonjs/text-encoding": "^0.7.2", + "just-extend": "^6.2.0", + "path-to-regexp": "^6.2.1" } }, "node_modules/no-case": { @@ -9932,7 +11496,7 @@ "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==", - "dev": true, + "peer": true, "dependencies": { "whatwg-url": "^5.0.0" }, @@ -9961,9 +11525,9 @@ } }, "node_modules/node-gyp": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.0.tgz", - "integrity": "sha512-dMXsYP6gc9rRbejLXmTbVRYjAHw7ppswsKyMxuxJxxOHzluIO1rGp9TOQgjFJ+2MCqcOcQTOPB/8Xwhr+7s4Eg==", + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.1.tgz", + "integrity": "sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==", "dev": true, "peer": true, "dependencies": { @@ -9971,7 +11535,7 @@ "exponential-backoff": "^3.1.1", "glob": "^7.1.4", "graceful-fs": "^4.2.6", - "make-fetch-happen": "^11.0.3", + "make-fetch-happen": "^10.0.3", "nopt": "^6.0.0", "npmlog": "^6.0.0", "rimraf": "^3.0.2", @@ -9987,9 +11551,9 @@ } }, "node_modules/node-gyp-build": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.1.tgz", - "integrity": "sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.1.tgz", + "integrity": "sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==", "dev": true, "bin": { "node-gyp-build": "bin.js", @@ -9997,6 +11561,17 @@ "node-gyp-build-test": "build-test.js" } }, + "node_modules/node-gyp/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, + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/node-gyp/node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -10018,6 +11593,19 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/node-gyp/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, + "peer": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/node-gyp/node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -10047,9 +11635,9 @@ } }, "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==", + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", "dev": true }, "node_modules/nodemailer": { @@ -10103,9 +11691,9 @@ } }, "node_modules/npm-bundled": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.0.tgz", - "integrity": "sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.1.tgz", + "integrity": "sha512-+AvaheE/ww1JEwRHOrn4WHNzOxGtVp+adrg2AeZS/7KuxGUYFuBta98wYpfHBbJp6Tg6j1NKSEVHNcfZzJHQwQ==", "dev": true, "peer": true, "dependencies": { @@ -10202,6 +11790,43 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/npm-registry-fetch/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/npm-registry-fetch/node_modules/make-fetch-happen": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", + "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", + "dev": true, + "peer": true, + "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" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/npm-registry-fetch/node_modules/minipass": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", @@ -10212,6 +11837,34 @@ "node": ">=8" } }, + "node_modules/npm-registry-fetch/node_modules/minipass-fetch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz", + "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==", + "dev": true, + "peer": true, + "dependencies": { + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/npm-registry-fetch/node_modules/minipass-fetch/node_modules/minipass": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.1.tgz", + "integrity": "sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -10310,6 +11963,16 @@ } } }, + "node_modules/nx/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/nx/node_modules/fast-glob": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", @@ -10473,6 +12136,16 @@ "node": ">=8.9" } }, + "node_modules/nyc/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/nyc/node_modules/cliui": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", @@ -10484,6 +12157,12 @@ "wrap-ansi": "^6.2.0" } }, + "node_modules/nyc/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/nyc/node_modules/find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", @@ -10542,6 +12221,18 @@ "node": ">=8" } }, + "node_modules/nyc/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/nyc/node_modules/p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -10743,13 +12434,13 @@ } }, "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==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", "has-symbols": "^1.0.3", "object-keys": "^1.1.1" }, @@ -10761,28 +12452,29 @@ } }, "node_modules/object.entries": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz", - "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", + "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" } }, "node_modules/object.fromentries": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", - "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -10792,26 +12484,28 @@ } }, "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==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/object.values": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", - "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -10874,9 +12568,9 @@ } }, "node_modules/openapi-typescript": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/openapi-typescript/-/openapi-typescript-5.4.1.tgz", - "integrity": "sha512-AGB2QiZPz4rE7zIwV3dRHtoUC/CWHhUjuzGXvtmMQN2AFV8xCTLKcZUHLcdPQmt/83i22nRE7+TxXOXkK+gf4Q==", + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/openapi-typescript/-/openapi-typescript-5.4.2.tgz", + "integrity": "sha512-tHeRv39Yh7brqJpbUntdjtUaXrTHmC4saoyTLU/0J2I8LEFQYDXRLgnmWTMiMOB2GXugJiqHa5n9sAyd6BRqiA==", "dev": true, "dependencies": { "js-yaml": "^4.1.0", @@ -10893,6 +12587,21 @@ "node": ">= 14.0.0" } }, + "node_modules/openapi-typescript/node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, "node_modules/openapi-typescript/node_modules/yargs-parser": { "version": "21.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", @@ -10912,17 +12621,17 @@ } }, "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "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" + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" }, "engines": { "node": ">= 0.8.0" @@ -11001,17 +12710,17 @@ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "dev": true, - "peer": true, "engines": { "node": ">=0.10.0" } }, "node_modules/otpauth": { - "version": "9.1.4", - "resolved": "https://registry.npmjs.org/otpauth/-/otpauth-9.1.4.tgz", - "integrity": "sha512-T6T0E1WlzwKWESq8K0Ja47u01XjmDmRY/AiUoMAc6xZI/OsTsD4cqBrfpt2WfJ29W5pRiWkuUuyHdNQl0/Ic+Q==", + "version": "9.2.4", + "resolved": "https://registry.npmjs.org/otpauth/-/otpauth-9.2.4.tgz", + "integrity": "sha512-t0Nioq2Up2ZaT5AbpXZLTjrsNtLc/g/rVSaEThmKLErAuT9mrnAKJryiPOKc3rCH+3ycWBgKpRHYn+DHqfaPiQ==", + "peer": true, "dependencies": { - "jssha": "~3.3.0" + "jssha": "~3.3.1" }, "funding": { "url": "https://github.com/hectorm/otpauth?sponsor=1" @@ -11183,32 +12892,175 @@ "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", "dev": true, "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/parent-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-2.0.0.tgz", + "integrity": "sha512-uo0Z9JJeWzv8BG+tRcapBKNJ0dro9cLyczGzulS6EfeyAdeC9sbojtW6XwvYxJkEne9En+J2XEl4zyglVeIwFg==", + "dev": true, + "dependencies": { + "callsites": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-json/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/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/patch-package": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-8.0.0.tgz", + "integrity": "sha512-da8BVIhzjtgScwDJ2TtKsfT5JFWz1hYoBl9rUQ1f38MC2HwnEIkK8VN3dKMKcP7P7bvvgzNDbfNHtx3MsQb5vA==", + "dev": true, + "dependencies": { + "@yarnpkg/lockfile": "^1.1.0", + "chalk": "^4.1.2", + "ci-info": "^3.7.0", + "cross-spawn": "^7.0.3", + "find-yarn-workspace-root": "^2.0.0", + "fs-extra": "^9.0.0", + "json-stable-stringify": "^1.0.2", + "klaw-sync": "^6.0.0", + "minimist": "^1.2.6", + "open": "^7.4.2", + "rimraf": "^2.6.3", + "semver": "^7.5.3", + "slash": "^2.0.0", + "tmp": "^0.0.33", + "yaml": "^2.2.2" + }, + "bin": { + "patch-package": "index.js" + }, + "engines": { + "node": ">=14", + "npm": ">5" + } + }, + "node_modules/patch-package/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/patch-package/node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/patch-package/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/patch-package/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/parent-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-2.0.0.tgz", - "integrity": "sha512-uo0Z9JJeWzv8BG+tRcapBKNJ0dro9cLyczGzulS6EfeyAdeC9sbojtW6XwvYxJkEne9En+J2XEl4zyglVeIwFg==", + "node_modules/patch-package/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": { - "callsites": "^3.1.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=8" + "node": "*" } }, - "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==", + "node_modules/patch-package/node_modules/open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", "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" + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" }, "engines": { "node": ">=8" @@ -11217,29 +13069,49 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/parse-json/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/patch-package/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "node_modules/patch-package/node_modules/slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", "dev": true, "engines": { - "node": ">= 0.8" + "node": ">=6" } }, - "node_modules/pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "node_modules/patch-package/node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "dev": true, "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/patch-package/node_modules/yaml": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.2.tgz", + "integrity": "sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==", + "dev": true, + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" } }, "node_modules/path-case": { @@ -11286,34 +13158,34 @@ "dev": true }, "node_modules/path-scurry": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", - "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dev": true, "dependencies": { - "lru-cache": "^9.1.1 || ^10.0.0", + "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=16 || 14 >=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz", - "integrity": "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==", + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", "dev": true, "engines": { "node": "14 || >=16.14" } }, "node_modules/path-to-regexp": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", - "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.2.tgz", + "integrity": "sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==", "dev": true }, "node_modules/path-type": { @@ -11326,9 +13198,9 @@ } }, "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", "dev": true }, "node_modules/picomatch": { @@ -11407,6 +13279,24 @@ "node": ">=8" } }, + "node_modules/pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -11417,15 +13307,15 @@ } }, "node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", + "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", "dev": true, "bin": { - "prettier": "bin-prettier.js" + "prettier": "bin/prettier.cjs" }, "engines": { - "node": ">=10.13.0" + "node": ">=14" }, "funding": { "url": "https://github.com/prettier/prettier?sponsor=1" @@ -11505,6 +13395,15 @@ "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/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", @@ -11522,21 +13421,39 @@ } }, "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, "engines": { "node": ">=6" } }, + "node_modules/pvtsutils": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.5.tgz", + "integrity": "sha512-ARvb14YB9Nm2Xi6nBq1ZX6dAM0FsJnuk+31aUp4TrcZEdKUlSqOqsxJHUPJDNE3qiIp+iUPEIeR6Je/tgV7zsA==", + "peer": true, + "dependencies": { + "tslib": "^2.6.1" + } + }, + "node_modules/pvutils": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.1.3.tgz", + "integrity": "sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==", + "peer": true, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/qs": { - "version": "6.11.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", - "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "version": "6.12.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.1.tgz", + "integrity": "sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==", "dev": true, "dependencies": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" }, "engines": { "node": ">=0.6" @@ -11635,9 +13552,9 @@ } }, "node_modules/read-package-json-fast/node_modules/json-parse-even-better-errors": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", - "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", + "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", "dev": true, "peer": true, "engines": { @@ -11645,15 +13562,144 @@ } }, "node_modules/read-package-json/node_modules/json-parse-even-better-errors": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", - "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", + "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", "dev": true, "peer": true, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/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/read-pkg-up/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/read-pkg-up/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/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/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/read-pkg/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/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/readable-stream": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", @@ -11694,9 +13740,30 @@ } }, "node_modules/reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", + "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==" + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", + "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.1", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/reftools": { "version": "1.1.9", @@ -11708,20 +13775,30 @@ } }, "node_modules/regenerator-runtime": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", - "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==", + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", "dev": true }, + "node_modules/regexp-tree": { + "version": "0.1.27", + "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.27.tgz", + "integrity": "sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==", + "dev": true, + "bin": { + "regexp-tree": "bin/regexp-tree" + } + }, "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==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "set-function-name": "^2.0.0" + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" }, "engines": { "node": ">= 0.4" @@ -11730,6 +13807,27 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/regjsparser": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.10.0.tgz", + "integrity": "sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==", + "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/release-zalgo": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", @@ -11775,21 +13873,11 @@ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, - "node_modules/requireindex": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", - "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", - "dev": true, - "engines": { - "node": ">=0.10.5" - } - }, "node_modules/resolve": { "version": "1.22.2", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", "dev": true, - "peer": true, "dependencies": { "is-core-module": "^2.11.0", "path-parse": "^1.0.7", @@ -11851,88 +13939,23 @@ } }, "node_modules/rimraf": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.1.tgz", - "integrity": "sha512-OfFZdwtd3lZ+XZzYP/6gTACubwFcHdLRqS9UX3UwpU2dnGQYkPFISRwvM3w9IiB2w7bW5qGo/uAwE4SmXXSKvg==", + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.7.tgz", + "integrity": "sha512-nV6YcJo5wbLW77m+8KjH8aB/7/rxQy9SZ0HY5shnwULfS+9nmTtVXAJET5NdZmCzA4fPI/Hm1wo/Po/4mopOdg==", "dev": true, "dependencies": { - "glob": "^10.2.5" + "glob": "^10.3.7" }, "bin": { - "rimraf": "dist/cjs/src/bin.js" + "rimraf": "dist/esm/bin.mjs" }, "engines": { - "node": ">=14" + "node": ">=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "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-applescript/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/run-applescript/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/run-applescript/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/run-applescript/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/run-async": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", @@ -11977,13 +14000,13 @@ } }, "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==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", "has-symbols": "^1.0.3", "isarray": "^2.0.5" }, @@ -12014,15 +14037,18 @@ ] }, "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==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", "is-regex": "^1.1.4" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -12031,15 +14057,12 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "devOptional": true }, "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" - }, + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "bin": { "semver": "bin/semver.js" }, @@ -12047,22 +14070,6 @@ "node": ">=10" } }, - "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", @@ -12131,6 +14138,12 @@ "upper-case-first": "^2.0.2" } }, + "node_modules/seq-queue": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz", + "integrity": "sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q==", + "dev": true + }, "node_modules/serialize-javascript": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", @@ -12162,29 +14175,32 @@ "dev": true }, "node_modules/set-function-length": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", - "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "dev": true, "dependencies": { - "define-data-property": "^1.1.1", - "get-intrinsic": "^1.2.1", + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" + "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" } }, "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==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", "dev": true, "dependencies": { - "define-data-property": "^1.0.1", + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.0" + "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -12272,14 +14288,18 @@ "dev": true }, "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dev": true, "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -12317,17 +14337,92 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/sigstore/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/sigstore/node_modules/make-fetch-happen": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", + "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", + "dev": true, + "peer": true, + "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" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/sigstore/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/sigstore/node_modules/minipass-fetch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz", + "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==", + "dev": true, + "peer": true, + "dependencies": { + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/sigstore/node_modules/minipass-fetch/node_modules/minipass": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.1.tgz", + "integrity": "sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/sinon": { - "version": "15.2.0", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-15.2.0.tgz", - "integrity": "sha512-nPS85arNqwBXaIsFCkolHjGIkFo+Oxu9vbgmBJizLAhqe6P2o3Qmj3KCUoRkfhHtvgDhZdWD3risLHAUJ8npjw==", + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-17.0.1.tgz", + "integrity": "sha512-wmwE19Lie0MLT+ZYNpDymasPHUKTaZHUH/pKEubRXIzySv9Atnlw+BUMGCzWgV7b7wO+Hw6f1TEOr0IUnmU8/g==", "dev": true, "dependencies": { "@sinonjs/commons": "^3.0.0", - "@sinonjs/fake-timers": "^10.3.0", + "@sinonjs/fake-timers": "^11.2.2", "@sinonjs/samsam": "^8.0.0", "diff": "^5.1.0", - "nise": "^5.1.4", + "nise": "^5.1.5", "supports-color": "^7.2.0" }, "funding": { @@ -12336,9 +14431,9 @@ } }, "node_modules/sinon/node_modules/diff": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", - "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", "dev": true, "engines": { "node": ">=0.3.1" @@ -12375,17 +14470,17 @@ } }, "node_modules/socks": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", - "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", + "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", "dev": true, "peer": true, "dependencies": { - "ip": "^2.0.0", + "ip-address": "^9.0.5", "smart-buffer": "^4.2.0" }, "engines": { - "node": ">= 10.13.0", + "node": ">= 10.0.0", "npm": ">= 3.0.0" } }, @@ -12450,6 +14545,16 @@ "node": ">=8" } }, + "node_modules/spawn-wrap/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/spawn-wrap/node_modules/foreground-child": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", @@ -12483,6 +14588,18 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/spawn-wrap/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/spawn-wrap/node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -12509,22 +14626,31 @@ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", "dev": true, - "peer": true, "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" } }, + "node_modules/spdx-correct/node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", "dev": true }, "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz", + "integrity": "sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==", "dev": true, "dependencies": { "spdx-exceptions": "^2.1.0", @@ -12532,21 +14658,31 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.16", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", - "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz", + "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==", "dev": true }, "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "dev": true, + "peer": true + }, + "node_modules/sqlstring": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz", + "integrity": "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } }, "node_modules/ssri": { - "version": "10.0.5", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz", - "integrity": "sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==", + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", + "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", "dev": true, "peer": true, "dependencies": { @@ -12626,15 +14762,28 @@ "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.trim": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", - "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -12644,28 +14793,31 @@ } }, "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==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "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==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -12714,6 +14866,18 @@ "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", @@ -12727,27 +14891,27 @@ } }, "node_modules/strong-error-handler": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/strong-error-handler/-/strong-error-handler-4.0.8.tgz", - "integrity": "sha512-8C4DoE7/0YTKcrhVcT1Wz/aIXXxBWi4H0WOKTKabuv2q1wSgdkPOgBUSsyp8U34e+aEOtX0CqIkUK/JaNG94QA==", + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/strong-error-handler/-/strong-error-handler-5.0.10.tgz", + "integrity": "sha512-bSjeWSHizlsefxweVeFv2Pha7z78XL1EVmuMSBkypjBJyYgHgvrqFgjwmKiCBTYt9C15xNnJjUfkRVkuSZTyNw==", "dev": true, "dependencies": { "accepts": "^1.3.8", "debug": "^4.3.4", - "ejs": "^3.1.9", "fast-safe-stringify": "^2.1.1", - "http-status": "^1.6.2", - "js2xmlparser": "^4.0.2", - "strong-globalize": "^6.0.5" + "handlebars": "^4.7.8", + "http-status": "^1.7.4", + "js2xmlparser": "^5.0.0", + "strong-globalize": "^6.0.6" }, "engines": { - "node": ">=10" + "node": ">=16" } }, "node_modules/strong-globalize": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/strong-globalize/-/strong-globalize-6.0.5.tgz", - "integrity": "sha512-7nfUli41TieV9/TSc0N62ve5Q4nfrpy/T0nNNy6TyD3vst79QWmeylCyd3q1gDxh8dqGEtabLNCdPQP1Iuvecw==", + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/strong-globalize/-/strong-globalize-6.0.6.tgz", + "integrity": "sha512-+mN0wTXBg9rLiKBk7jsyfXFWsg08q160XQcmJ3gNxSQ8wrC668dzR8JUp/wcK3NZ2eQ5h5tvc8O6Y+FC0D61lw==", "dev": true, "dependencies": { "accept-language": "^3.0.18", @@ -12781,9 +14945,10 @@ } }, "node_modules/superagent": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-8.1.1.tgz", - "integrity": "sha512-5jVAXxfqR15KFq3trY7q0ySvzXWPsnkWgzoUkfgxeFDMPSFhsdnko9RQ/vBo3JLOcMErLReBFZQJNmH6y9IM3A==", + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-8.1.2.tgz", + "integrity": "sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==", + "deprecated": "Please upgrade to v9.0.0+ as we have fixed a public vulnerability with formidable dependency. Note that v9.0.0+ requires Node.js v14.18.0+. See https://github.com/ladjs/superagent/pull/1800 for insight. This project is supported and maintained by the team at Forward Email @ https://forwardemail.net", "dev": true, "dependencies": { "component-emitter": "^1.3.0", @@ -12814,13 +14979,13 @@ } }, "node_modules/supertest": { - "version": "6.3.3", - "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.3.3.tgz", - "integrity": "sha512-EMCG6G8gDu5qEqRQ3JjjPs6+FYT1a7Hv5ApHvtSghmOFJYtsU5S+pSb6Y2EUeCEY3CmEL3mmQ8YWlPOzQomabA==", + "version": "6.3.4", + "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.3.4.tgz", + "integrity": "sha512-erY3HFDG0dPnhw4U+udPfrzXa4xhSG+n4rxfRuZWCUvjFWwKl+OxWf/7zk50s84/fAAs7vf5QAb9uRa0cCykxw==", "dev": true, "dependencies": { "methods": "^1.1.2", - "superagent": "^8.0.5" + "superagent": "^8.1.2" }, "engines": { "node": ">=6.4.0" @@ -12861,9 +15026,9 @@ } }, "node_modules/swagger-ui-dist": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-5.1.1.tgz", - "integrity": "sha512-qGHwN3/k+7seRIuGYdQ3LbJu7jxJezGPuB81ihEc6N36VuWbOdSeVARVmxJEweaYnzz0NXVbLQSWDqXiOj8VFQ==", + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-5.11.0.tgz", + "integrity": "sha512-j0PIATqQSEFGOLmiJOJZj1X1Jt6bFIur3JpY7+ghliUnfZs0fpWDdHEkn9q7QUlBtKbkn6TepvSxTqnE8l3s0A==", "dev": true }, "node_modules/symbol-observable": { @@ -12877,13 +15042,13 @@ } }, "node_modules/synckit": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz", - "integrity": "sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.0.tgz", + "integrity": "sha512-7RnqIMq572L8PeEzKeBINYEJDDxpcH8JEgLwUqBd3TkofhFRbkq4QLR0u+36avGAhCRbk2nnmjcW9SE531hPDg==", "dev": true, "dependencies": { - "@pkgr/utils": "^2.3.1", - "tslib": "^2.5.0" + "@pkgr/core": "^0.1.0", + "tslib": "^2.6.2" }, "engines": { "node": "^14.18.0 || >=16.0.0" @@ -13008,6 +15173,16 @@ "node": ">=8" } }, + "node_modules/test-exclude/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/test-exclude/node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -13028,6 +15203,18 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/test-exclude/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -13050,18 +15237,6 @@ "globrex": "^0.1.2" } }, - "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", @@ -13074,6 +15249,16 @@ "node": ">=8.17.0" } }, + "node_modules/tmp/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/tmp/node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -13094,6 +15279,18 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/tmp/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/tmp/node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -13149,24 +15346,32 @@ "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true + "peer": true }, "node_modules/traverse": { - "version": "0.6.7", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.7.tgz", - "integrity": "sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg==", + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.9.tgz", + "integrity": "sha512-7bBrcF+/LQzSgFmT0X5YclVqQxtv7TDJ1f8Wj7ibBu/U6BMLeOpUxuZjV7rMc44UtKxlnMFigdhFAIszSX1DMg==", "dev": true, + "dependencies": { + "gopd": "^1.0.1", + "typedarray.prototype.slice": "^1.0.3", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "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==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", "dev": true, "engines": { - "node": ">=16.13.0" + "node": ">=16" }, "peerDependencies": { "typescript": ">=4.2.0" @@ -13206,9 +15411,9 @@ } }, "node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==" + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/tsutils": { "version": "3.21.0", @@ -13246,6 +15451,81 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/tuf-js/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/tuf-js/node_modules/make-fetch-happen": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", + "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", + "dev": true, + "peer": true, + "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" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/tuf-js/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tuf-js/node_modules/minipass-fetch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz", + "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==", + "dev": true, + "peer": true, + "dependencies": { + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/tuf-js/node_modules/minipass-fetch/node_modules/minipass": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.1.tgz", + "integrity": "sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -13293,29 +15573,30 @@ } }, "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==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "is-typed-array": "^1.1.10" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" }, "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==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -13325,16 +15606,17 @@ } }, "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==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -13344,14 +15626,20 @@ } }, "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==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -13366,6 +15654,26 @@ "is-typedarray": "^1.0.0" } }, + "node_modules/typedarray.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typedarray.prototype.slice/-/typedarray.prototype.slice-1.0.3.tgz", + "integrity": "sha512-8WbVAQAUlENo1q3c3zZYuy5k9VzBQvp8AX9WOtbvyWlLM1v5JaSRmjubLjzHF4JFtptjH/5c/i95yaElvcjC0A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-errors": "^1.3.0", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-offset": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/typescript": { "version": "5.1.6", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", @@ -13419,6 +15727,12 @@ "node": ">=14.0" } }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, "node_modules/unique-filename": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", @@ -13445,25 +15759,10 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/unique-string": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", - "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", - "dev": true, - "dependencies": { - "crypto-random-string": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "engines": { "node": ">= 10.0.0" @@ -13478,19 +15777,10 @@ "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/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==", + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", + "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", "dev": true, "funding": [ { @@ -13507,8 +15797,8 @@ } ], "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.1.2", + "picocolors": "^1.0.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -13560,9 +15850,13 @@ } }, "node_modules/uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], "bin": { "uuid": "dist/bin/uuid" } @@ -13583,29 +15877,35 @@ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, - "peer": true, "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" } }, + "node_modules/validate-npm-package-license/node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, "node_modules/validate-npm-package-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", - "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz", + "integrity": "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==", "dev": true, "peer": true, - "dependencies": { - "builtins": "^5.0.0" - }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/validator": { - "version": "13.11.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.11.0.tgz", - "integrity": "sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==", + "version": "13.12.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.12.0.tgz", + "integrity": "sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==", "dev": true, "engines": { "node": ">= 0.10" @@ -13646,13 +15946,13 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true + "peer": true }, "node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, + "peer": true, "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -13689,6 +15989,50 @@ "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.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/which-module": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", @@ -13696,16 +16040,16 @@ "dev": true }, "node_modules/which-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", - "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -13724,6 +16068,15 @@ "string-width": "^1.0.2 || 2 || 3 || 4" } }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", @@ -13860,6 +16213,16 @@ "sprintf-js": "~1.0.2" } }, + "node_modules/yamljs/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/yamljs/node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -13880,6 +16243,24 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/yamljs/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/yamljs/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/yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", diff --git a/package.json b/package.json index 52ad6f9..1469d7b 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "lbx-jwt", "description": "Provides JWT authentication for loopback applications. Includes storing roles inside tokens and handling refreshing. Built-in reuse detection.", - "version": "1.3.0", + "version": "1.4.0", "keywords": [ "lb4", "LoopBack", @@ -41,6 +41,9 @@ "copy:contributing": "cp ./CONTRIBUTING.md dist/CONTRIBUTING.md", "copy:mailTemplates": "cp -r ./src/services/mail/templates dist/services/mail/templates" }, + "engines": { + "node": ">=20" + }, "peerDependencies": { "@loopback/authentication": "10", "@loopback/authorization": "0.14", @@ -48,13 +51,15 @@ "@loopback/rest": "13", "@loopback/security": "0.10", "handlebars": "4", - "nodemailer": "6" - }, - "dependencies": { + "nodemailer": "6", + "@hexagon/base64": "^1.1.28", + "@simplewebauthn/server": "^10.0.0", "bcryptjs": "^2.4.3", "hi-base32": "^0.5.1", "jsonwebtoken": "^9.0.1", - "otpauth": "^9.1.4", + "otpauth": "^9.1.4" + }, + "dependencies": { "tslib": "^2.6.1" }, "devDependencies": { @@ -73,8 +78,9 @@ "@types/node": "^20.5.0", "@types/nodemailer": "^6.4.9", "eslint": "^8.47.0", - "eslint-config-service-soft": "^1.3.3", + "eslint-config-service-soft": "^1.4.2", "handlebars": "^4.7.8", + "loopback-connector-mysql": "^7.0.9", "nodemailer": "^6.9.4", "typescript": "~5.1.6" } diff --git a/showcase/Dockerfile b/showcase/Dockerfile index ae6b175..bd10cc4 100644 --- a/showcase/Dockerfile +++ b/showcase/Dockerfile @@ -1,5 +1,5 @@ # Check out https://hub.docker.com/_/node to select a new base image -FROM node:16-slim +FROM node:20-slim # Set to a non-root built-in user `node` USER node diff --git a/showcase/package-lock.json b/showcase/package-lock.json index 96dc41f..05896dd 100644 --- a/showcase/package-lock.json +++ b/showcase/package-lock.json @@ -17,29 +17,25 @@ "@loopback/rest-explorer": "^6.1.1", "@loopback/service-proxy": "^6.1.1", "lbx-jwt": "file:..", - "loopback-connector-mysql": "^5.4.4", + "loopback-connector-mysql": "^7.0.9", "tslib": "^2.0.0" }, "devDependencies": { "@loopback/build": "^10.1.1", "@loopback/testlab": "^6.1.1", - "@types/node": "^16.18.38", + "@types/node": "^20.5.0", "source-map-support": "^0.5.21", "tsc-watch": "^6.0.4", "typescript": "~5.1.6" }, "engines": { - "node": "14 || 16 || 17 || 18" + "node": ">=20" } }, "..": { - "version": "1.3.0", + "version": "1.4.0", "license": "MIT", "dependencies": { - "bcryptjs": "^2.4.3", - "hi-base32": "^0.5.1", - "jsonwebtoken": "^9.0.1", - "otpauth": "^9.1.4", "tslib": "^2.6.1" }, "devDependencies": { @@ -58,38 +54,39 @@ "@types/node": "^20.5.0", "@types/nodemailer": "^6.4.9", "eslint": "^8.47.0", - "eslint-config-service-soft": "^1.3.3", + "eslint-config-service-soft": "^1.4.0", "handlebars": "^4.7.8", + "loopback-connector-mysql": "^7.0.9", "nodemailer": "^6.9.4", "typescript": "~5.1.6" }, + "engines": { + "node": ">=20" + }, "peerDependencies": { + "@hexagon/base64": "^1.1.28", "@loopback/authentication": "10", "@loopback/authorization": "0.14", "@loopback/core": "5", "@loopback/rest": "13", "@loopback/security": "0.10", + "@simplewebauthn/server": "^10.0.0", + "bcryptjs": "^2.4.3", "handlebars": "4", - "nodemailer": "6" - } - }, - "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" + "hi-base32": "^0.5.1", + "jsonwebtoken": "^9.0.1", + "nodemailer": "6", + "otpauth": "^9.1.4" } }, "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "dev": true, "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" @@ -109,34 +106,34 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", - "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==", + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz", + "integrity": "sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.10.tgz", - "integrity": "sha512-fTmqbbUBAwCcre6zPzNngvsI0aNrPZe77AeqvDxWM9Nm+04RrJ3CAmGHA9f7lJQY6ZMhRztNemy4uslDxTX4Qw==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.5.tgz", + "integrity": "sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==", "dev": true, "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", + "@babel/code-frame": "^7.24.2", + "@babel/generator": "^7.24.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.24.5", + "@babel/helpers": "^7.24.5", + "@babel/parser": "^7.24.5", + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.5", + "@babel/types": "^7.24.5", + "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", + "json5": "^2.2.3", "semver": "^6.3.1" }, "engines": { @@ -147,6 +144,12 @@ "url": "https://opencollective.com/babel" } }, + "node_modules/@babel/core/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/@babel/core/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -172,14 +175,14 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.10.tgz", - "integrity": "sha512-JMSwHD4J7SLod0idLq5PKgI+6g/hLD/iuWBq08ZX49xE14VpVEojJ5rHWptpirV2j020MvypRLAXAO50igCJ5Q==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.5", - "browserslist": "^4.21.9", + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -240,28 +243,28 @@ } }, "node_modules/@babel/helper-module-imports": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", - "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz", + "integrity": "sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz", - "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz", + "integrity": "sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==", "dev": true, "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-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.24.3", + "@babel/helper-simple-access": "^7.24.5", + "@babel/helper-split-export-declaration": "^7.24.5", + "@babel/helper-validator-identifier": "^7.24.5" }, "engines": { "node": ">=6.9.0" @@ -271,12 +274,12 @@ } }, "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz", + "integrity": "sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.5" }, "engines": { "node": ">=6.9.0" @@ -313,23 +316,23 @@ } }, "node_modules/@babel/helper-validator-option": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", - "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.10.tgz", - "integrity": "sha512-a41J4NW8HyZa1I1vAndrraTlPZ/eZoga2ZgS7fEr0tZJGVU4xqdE80CEm0CcNjha5EZ8fTBYLKHF0kqDUuAwQw==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.5.tgz", + "integrity": "sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==", "dev": true, "dependencies": { - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.10", - "@babel/types": "^7.22.10" + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.5", + "@babel/types": "^7.24.5" }, "engines": { "node": ">=6.9.0" @@ -507,18 +510,18 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.6.2.tgz", - "integrity": "sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", "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==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", @@ -554,25 +557,47 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/@eslint/eslintrc/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/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/@eslint/js": { - "version": "8.47.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.47.0.tgz", - "integrity": "sha512-P6omY1zv5MItm93kLM8s2vr1HICJH8v0dvddDhysbIuZ+vcjOHg5Zbkf1mTkcmi2JA9oBG2anOkRnW8WJTS8Og==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@exodus/schemasafe": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@exodus/schemasafe/-/schemasafe-1.2.3.tgz", - "integrity": "sha512-hmdFF4vVyvXosVdCCnZPCfrgwNPA79y3K5l0QzlKFcK5Qd3nkM9oGKcQYCTnTRWJXIV5SUMkkTFIEIdDFtxQPQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@exodus/schemasafe/-/schemasafe-1.3.0.tgz", + "integrity": "sha512-5Aap/GaRupgNx/feGBwLLTVv8OQFfv3pq2lPRzPg9R+IOBnDgghTGW7l7EuVXOvg5cc/xSAlRW8rBrjIC3Nvqw==", "dev": true }, "node_modules/@fastify/busboy": { @@ -584,9 +609,9 @@ } }, "node_modules/@hapi/hoek": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.2.tgz", - "integrity": "sha512-aKmlCO57XFZ26wso4rJsW4oTUnrgTFw2jh3io7CAtO9w4UltBNwRXvXIVzzyfkaaLRo3nluP/19msA8vDUUuKw==", + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", "dev": true }, "node_modules/@hapi/shot": { @@ -619,19 +644,41 @@ } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", - "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", "minimatch": "^3.0.5" }, "engines": { "node": ">=10.10.0" } }, + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", @@ -646,9 +693,9 @@ } }, "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==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", "dev": true }, "node_modules/@isaacs/cliui": { @@ -815,9 +862,9 @@ } }, "node_modules/@jridgewell/resolve-uri": { - "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==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, "engines": { "node": ">=6.0.0" @@ -849,13 +896,13 @@ } }, "node_modules/@loopback/authorization": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/@loopback/authorization/-/authorization-0.14.1.tgz", - "integrity": "sha512-kTaCF0cEcaRRHot4YSeu9PJ0ScUiAsdooZfoHQxFk0EkcvwSHfyJrSK5wlNQz+zncth0bbdJ0r8qVkpI6wqB7A==", + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/@loopback/authorization/-/authorization-0.14.5.tgz", + "integrity": "sha512-ga4SCsrTY3G4uaoZhzr6ngAzDFjqGLUHePysoPGJfMu3eTs9OxCJs4fo6fZUn+pwKU5NsF5cJq19gCfJkEytdg==", "dependencies": { - "@loopback/security": "^0.10.1", + "@loopback/security": "^0.10.5", "debug": "^4.3.4", - "tslib": "^2.6.0" + "tslib": "^2.6.2" }, "engines": { "node": "16 || 18 || 20" @@ -865,18 +912,18 @@ } }, "node_modules/@loopback/boot": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@loopback/boot/-/boot-6.1.1.tgz", - "integrity": "sha512-IEokBv+pvgyFePi1n3hByEjP6sQO3FmQvoAcxhuuvHClaC+xM+Wig7ZBh3X3Wc5CkqA0NhkXCXpL7iNcqtMQUg==", - "dependencies": { - "@loopback/model-api-builder": "^5.1.1", - "@loopback/repository": "^6.1.1", - "@loopback/service-proxy": "^6.1.1", - "@types/debug": "^4.1.8", + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/@loopback/boot/-/boot-6.1.5.tgz", + "integrity": "sha512-5NgBYJ5UDmN0JGizdo2J3zg2fdWC3WcCDThQ31NXQdbKfZYi8dDLfSITEqJiGqZnzHtH7uzwrQ0GecHKNv2jcQ==", + "dependencies": { + "@loopback/model-api-builder": "^5.1.5", + "@loopback/repository": "^6.1.5", + "@loopback/service-proxy": "^6.1.5", + "@types/debug": "^4.1.12", "@types/glob": "^8.1.0", "debug": "^4.3.4", - "glob": "^10.3.3", - "tslib": "^2.6.0" + "glob": "^10.3.10", + "tslib": "^2.6.2" }, "engines": { "node": "16 || 18 || 20" @@ -886,26 +933,26 @@ } }, "node_modules/@loopback/build": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/@loopback/build/-/build-10.1.1.tgz", - "integrity": "sha512-y61xSRFksAWI/fVuQm7SMfT+BrB+8i95cQBCKHsoyLRME4wVr0XMnXb/ng1tF+5riTO6m170HezSN3SzpSl0+w==", + "version": "10.1.5", + "resolved": "https://registry.npmjs.org/@loopback/build/-/build-10.1.5.tgz", + "integrity": "sha512-IU4rFOT5fCtenKkl776wrJUZXOwtSuIWk7OsuPBhclUoCFM+nVk/eOxG61MIGIVtI6fa3Qllg45f0SN6y5Fmlg==", "dev": true, "dependencies": { - "@loopback/eslint-config": "^14.0.2", - "@types/mocha": "^10.0.1", - "@types/node": "^16.18.38", + "@loopback/eslint-config": "^14.0.5", + "@types/mocha": "^10.0.6", + "@types/node": "^16.18.70", "cross-spawn": "^7.0.3", "debug": "^4.3.4", - "eslint": "^8.45.0", - "fs-extra": "^11.1.1", - "glob": "^10.3.3", + "eslint": "^8.51.0", + "fs-extra": "^11.2.0", + "glob": "^10.3.10", "lodash": "^4.17.21", "mocha": "^10.2.0", "nyc": "^15.1.0", - "prettier": "^2.8.8", - "rimraf": "^5.0.1", + "prettier": "^3.0.3", + "rimraf": "^5.0.5", "source-map-support": "^0.5.21", - "typescript": "~5.1.6" + "typescript": "~5.2.2" }, "bin": { "lb-clean": "bin/run-clean.js", @@ -920,72 +967,91 @@ "node": "16 || 18 || 20" } }, + "node_modules/@loopback/build/node_modules/@types/node": { + "version": "16.18.97", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.97.tgz", + "integrity": "sha512-4muilE1Lbfn57unR+/nT9AFjWk0MtWi5muwCEJqnOvfRQDbSfLCUdN7vCIg8TYuaANfhLOV85ve+FNpiUsbSRg==", + "dev": true + }, + "node_modules/@loopback/build/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/@loopback/context": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@loopback/context/-/context-6.1.1.tgz", - "integrity": "sha512-3PgjTpGtB+5DDVMpxaUWFLzcx529EOKI2FRqud19imnOVWx4su5bfbWocqM84JjT645HCiKucNjz5oamd3+zcQ==", + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/@loopback/context/-/context-6.1.5.tgz", + "integrity": "sha512-u1Hyj6bXQyWszSfuzHbEtfS7bJCOLZM4w+OLoaGhloKQUF6c89tGRrOE+otKZeKVOeFvLY+WG8C/5cwxKuDeJA==", "dependencies": { - "@loopback/metadata": "^6.1.1", - "@types/debug": "^4.1.8", + "@loopback/metadata": "^6.1.5", + "@types/debug": "^4.1.12", "debug": "^4.3.4", "hyperid": "^3.1.1", "p-event": "^4.2.0", - "tslib": "^2.6.0", - "uuid": "^9.0.0" + "tslib": "^2.6.2", + "uuid": "^9.0.1" }, "engines": { "node": "16 || 18 || 20" } }, "node_modules/@loopback/core": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@loopback/core/-/core-5.1.1.tgz", - "integrity": "sha512-++S6t3znt8VXpU8JOwGziu7l2WRaAwzp0g/N3UXMQhtkEmg0DCz5NXdJTxx0ogt6uF18ZgccPl9bxdGPtLhJoQ==", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@loopback/core/-/core-5.1.5.tgz", + "integrity": "sha512-S/461nALyCFv252bgjbq4qP3x8gfHAw4xvQf+Bz8786mZrOC7ulAIDfVlndrTlXLkto/3sLueRAz4hlN3fCAYg==", "dependencies": { - "@loopback/context": "^6.1.1", + "@loopback/context": "^6.1.5", "debug": "^4.3.4", - "tslib": "^2.6.0" + "tslib": "^2.6.2" }, "engines": { "node": "16 || 18 || 20" } }, "node_modules/@loopback/eslint-config": { - "version": "14.0.2", - "resolved": "https://registry.npmjs.org/@loopback/eslint-config/-/eslint-config-14.0.2.tgz", - "integrity": "sha512-3T6rspVwU1Gs51wwrhEtae++yRCUn6KS6qKU20ziLn888zwa5X/jAAnO7/Vo2r2dsVZFiA+Fv8Awy6lNlX+y4A==", + "version": "14.0.5", + "resolved": "https://registry.npmjs.org/@loopback/eslint-config/-/eslint-config-14.0.5.tgz", + "integrity": "sha512-8siWnjPzQhx016YkvFNS4Y4wyK9gR2wRCwKfIHdXcD9AwQlqPCRb4H1YagYdx3QEQ5vycW3cpTA1nwZReN2D8A==", "dev": true, "dependencies": { - "@typescript-eslint/eslint-plugin": "^5.62.0", - "@typescript-eslint/parser": "^5.62.0", - "eslint-config-prettier": "^8.8.0", - "eslint-plugin-eslint-plugin": "^5.1.0", - "eslint-plugin-mocha": "^10.1.0" + "@typescript-eslint/eslint-plugin": "^6.8.0", + "@typescript-eslint/parser": "^6.8.0", + "eslint-config-prettier": "^9.0.0", + "eslint-plugin-eslint-plugin": "^5.1.1", + "eslint-plugin-mocha": "^10.2.0" }, "engines": { "node": "16 || 18 || 20" }, "peerDependencies": { - "eslint": "^8.45.0" + "eslint": "^8.51.0" } }, "node_modules/@loopback/express": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@loopback/express/-/express-6.1.1.tgz", - "integrity": "sha512-b9yXJxomjMwoNyC/bXRNMkjnjdOFP9LFuxcMMsGrH9VeMoB6V1YMB5A0fdkdN5Z25DzCMPLNXeGuuxNjRn4CVQ==", - "dependencies": { - "@loopback/http-server": "^5.1.1", - "@types/body-parser": "^1.19.2", - "@types/express": "^4.17.17", - "@types/express-serve-static-core": "^4.17.35", - "@types/http-errors": "^2.0.1", + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/@loopback/express/-/express-6.1.5.tgz", + "integrity": "sha512-oQlH2Dngx4b3b/PNLijBnL6mRsrCFW17fwRGc3IMeGDE0HzpqVk5r8OwTtH9ddjRfkikdG3iQnWqymaXRf2cAw==", + "dependencies": { + "@loopback/http-server": "^5.1.5", + "@types/body-parser": "^1.19.5", + "@types/express": "^4.17.21", + "@types/express-serve-static-core": "^4.17.37", + "@types/http-errors": "^2.0.4", "body-parser": "^1.20.2", "debug": "^4.3.4", "express": "^4.18.2", "http-errors": "^2.0.0", "on-finished": "^2.4.1", "toposort": "^2.0.2", - "tslib": "^2.6.0" + "tslib": "^2.6.2" }, "engines": { "node": "16 || 18 || 20" @@ -995,49 +1061,49 @@ } }, "node_modules/@loopback/filter": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@loopback/filter/-/filter-4.1.1.tgz", - "integrity": "sha512-Jtv6gJ/C1kXM19EJOi8CH/9FQVwQN0r5UnDC2BVsU0OJ+FDsfAqmEMv8tlgHRmnL/63VMv89K4RXqvRcdGgZRw==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@loopback/filter/-/filter-4.1.5.tgz", + "integrity": "sha512-D5+lMFrehbHhBRAloHk4WqQSEcN9GqtLl5L0QyMePP7I5MpS778H16oz7QJfveCnOoMLd3Y1umF8BqM2gveDAw==", "dependencies": { - "tslib": "^2.6.0" + "tslib": "^2.6.2" }, "engines": { "node": "16 || 18 || 20" } }, "node_modules/@loopback/http-server": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@loopback/http-server/-/http-server-5.1.1.tgz", - "integrity": "sha512-WGBxsrCVJ6xaLgmmw1j9XmOPh+iTaXEW1TNrWnfc2nspZLcnzPbCDDqRLQZdoUlAqiDGhGhXHwb/H5XF8o057A==", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@loopback/http-server/-/http-server-5.1.5.tgz", + "integrity": "sha512-f9vTHdmrxagUY6HK4b8Tv1LhMTtRCK2rH5iGYUMYUpKe9lSOKnOKVm7XSBXB4YZd6sPxpwxJcMgzcPrWChTZRA==", "dependencies": { "debug": "^4.3.4", "stoppable": "^1.1.0", - "tslib": "^2.6.0" + "tslib": "^2.6.2" }, "engines": { "node": "16 || 18 || 20" } }, "node_modules/@loopback/metadata": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@loopback/metadata/-/metadata-6.1.1.tgz", - "integrity": "sha512-9Z5DD00xrMC6HqpJ23t+83Yridwx6NptgCNRJ4eQADrT6HoMWaQfxXq/jRaQndA32ofqLvc77cJL0CN3z4dFzQ==", + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/@loopback/metadata/-/metadata-6.1.5.tgz", + "integrity": "sha512-/5x6al0Y5pS/4YIxMdd29XyI/NhfAflp2clqrUAmXX82kjgWodUHedFCtw7xfKOMqj2NpXI9P6Fk33ur3+/wAg==", "dependencies": { "debug": "^4.3.4", "lodash": "^4.17.21", - "reflect-metadata": "^0.1.13", - "tslib": "^2.6.0" + "reflect-metadata": "^0.2.1", + "tslib": "^2.6.2" }, "engines": { "node": "16 || 18 || 20" } }, "node_modules/@loopback/model-api-builder": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@loopback/model-api-builder/-/model-api-builder-5.1.1.tgz", - "integrity": "sha512-LbKK2FDI+Z679MukZyRURTrIUT/OHl3WLnTAcV0uxhar+kflGWjI61I88fyytfZflqXu7EfzeLGpqMZfvaOv8A==", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@loopback/model-api-builder/-/model-api-builder-5.1.5.tgz", + "integrity": "sha512-rIiMPGztaPETqBTvmpXGI9D0hHOnzhNyixZk1ewGoDZzkwsLLfi9E3swZE/4EgomwWxl8AhnrZKqBVZgBzQePA==", "dependencies": { - "tslib": "^2.6.0" + "tslib": "^2.6.2" }, "engines": { "node": "16 || 18 || 20" @@ -1048,17 +1114,17 @@ } }, "node_modules/@loopback/openapi-v3": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/@loopback/openapi-v3/-/openapi-v3-9.1.1.tgz", - "integrity": "sha512-BnkpVmoqE80xGv5yQOEcS3iZ5CyOgWWV3PNsrDHHqKuTMRdVtT50+76giAd7JhJrScpn+VxnDppB0JrH6WoVUg==", + "version": "9.1.5", + "resolved": "https://registry.npmjs.org/@loopback/openapi-v3/-/openapi-v3-9.1.5.tgz", + "integrity": "sha512-n8B2uZk2S7SYFDUm0famDjAQ1DMTjiELDEP0R52L9Zx/ZGfuFFCiUPc3KeDH9/W0uCMs9wRqP+hSxoABZeT+Dw==", "dependencies": { - "@loopback/repository-json-schema": "^7.1.1", + "@loopback/repository-json-schema": "^7.2.1", "debug": "^4.3.4", - "http-status": "^1.6.2", + "http-status": "^1.7.3", "json-merge-patch": "^1.0.2", "lodash": "^4.17.21", "openapi3-ts": "^2.0.2", - "tslib": "^2.6.0" + "tslib": "^2.6.2" }, "engines": { "node": "16 || 18 || 20" @@ -1068,16 +1134,16 @@ } }, "node_modules/@loopback/repository": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@loopback/repository/-/repository-6.1.1.tgz", - "integrity": "sha512-jQGhtzPwoYyx3UD5dpBQpSmkJ07Y8MtsXMbOfI/AhYpNsoD0CFQlPENv95tmSFonvbAmRTpdcf3KKXkoYwJocA==", + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/@loopback/repository/-/repository-6.1.5.tgz", + "integrity": "sha512-JWdescHh/7ucwnjxTaEo45Ce4Cak+m75UO5GFRikH4WsRGtJDr/eWdR/fDnnl7wgVTxca1mvNZhADs21O9ZPzA==", "dependencies": { - "@loopback/filter": "^4.1.1", - "@types/debug": "^4.1.8", + "@loopback/filter": "^4.1.5", + "@types/debug": "^4.1.12", "debug": "^4.3.4", "lodash": "^4.17.21", - "loopback-datasource-juggler": "^4.28.8", - "tslib": "^2.6.0" + "loopback-datasource-juggler": "^5.0.5", + "tslib": "^2.6.2" }, "engines": { "node": "16 || 18 || 20" @@ -1087,13 +1153,13 @@ } }, "node_modules/@loopback/repository-json-schema": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@loopback/repository-json-schema/-/repository-json-schema-7.1.1.tgz", - "integrity": "sha512-1ihpUf5UbT55LcgfGDpDa/8SCSOuAGxj083MJbon4egAtkt6j4bvuCtNu24nJB+k/3WhgIYaOG+C63Cj2TdohA==", + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@loopback/repository-json-schema/-/repository-json-schema-7.2.1.tgz", + "integrity": "sha512-dnFJ21aha88gWM4mN4qRIft1q9Eaz4SvgUNxPBFtpVE9Lvhh00xphW6f92PxVQHlOpn6SC3pQs+mTtxpszCvvw==", "dependencies": { - "@types/json-schema": "^7.0.12", + "@types/json-schema": "^7.0.15", "debug": "^4.3.4", - "tslib": "^2.6.0" + "tslib": "^2.6.2" }, "engines": { "node": "16 || 18 || 20" @@ -1104,22 +1170,22 @@ } }, "node_modules/@loopback/rest": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/@loopback/rest/-/rest-13.1.1.tgz", - "integrity": "sha512-FYRDIu+VnXlpeJMDvjj3Ou2Qm5YgyaVRYssD25aCMUN3VounjKKlgDfmcurYFidAE/tsF8RMBjOFguMclrs4xQ==", + "version": "13.1.5", + "resolved": "https://registry.npmjs.org/@loopback/rest/-/rest-13.1.5.tgz", + "integrity": "sha512-gtjaXxVFTsFldjWcvt+165Fmsgmbn/TNJk16E1lVvu5hA5/4BNDDkbexe1JSU+/+gVhY9z4okF+p2D9VnOL8lA==", "dependencies": { - "@loopback/express": "^6.1.1", - "@loopback/http-server": "^5.1.1", - "@loopback/openapi-v3": "^9.1.1", + "@loopback/express": "^6.1.5", + "@loopback/http-server": "^5.1.5", + "@loopback/openapi-v3": "^9.1.5", "@openapi-contrib/openapi-schema-to-json-schema": "^4.0.5", - "@types/body-parser": "^1.19.2", - "@types/cors": "^2.8.13", - "@types/express": "^4.17.17", - "@types/express-serve-static-core": "^4.17.35", - "@types/http-errors": "^2.0.1", - "@types/on-finished": "^2.3.1", - "@types/serve-static": "1.15.2", - "@types/type-is": "^1.6.3", + "@types/body-parser": "^1.19.5", + "@types/cors": "^2.8.17", + "@types/express": "^4.17.21", + "@types/express-serve-static-core": "^4.17.37", + "@types/http-errors": "^2.0.4", + "@types/on-finished": "^2.3.4", + "@types/serve-static": "1.15.5", + "@types/type-is": "^1.6.6", "ajv": "^8.12.0", "ajv-errors": "^3.0.0", "ajv-formats": "^2.1.1", @@ -1135,10 +1201,10 @@ "on-finished": "^2.4.1", "path-to-regexp": "^6.2.1", "qs": "^6.11.2", - "strong-error-handler": "^4.0.7", - "tslib": "^2.6.0", + "strong-error-handler": "^5.0.6", + "tslib": "^2.6.2", "type-is": "^1.6.18", - "validator": "^13.9.0" + "validator": "^13.11.0" }, "engines": { "node": "16 || 18 || 20" @@ -1148,13 +1214,13 @@ } }, "node_modules/@loopback/rest-explorer": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@loopback/rest-explorer/-/rest-explorer-6.1.1.tgz", - "integrity": "sha512-heKxIzUbozNMljL/BXTo1ne36A9FLzmxoE4dvohywyapd3QezHHfXIHwHdv+T/C+HKbAg09xmDZV7b5M1YLc0w==", + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/@loopback/rest-explorer/-/rest-explorer-6.1.5.tgz", + "integrity": "sha512-lXSmypX2cTEZwZWnXMe2Q12pV3EoHD3F/AxhdKpcPX3Jpg+F3udPac7fL0F75Tm43Z7j6t8xW/0+/ByUE9ti4w==", "dependencies": { "ejs": "^3.1.9", - "swagger-ui-dist": "5.1.1", - "tslib": "^2.6.0" + "swagger-ui-dist": "5.11.0", + "tslib": "^2.6.2" }, "engines": { "node": "16 || 18 || 20" @@ -1165,12 +1231,12 @@ } }, "node_modules/@loopback/security": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/@loopback/security/-/security-0.10.1.tgz", - "integrity": "sha512-RhVUUrD1J1fYXHVekMy+mAiPYLU6yE4IDJ/mQNVcxm6dDWA904kBgFPHC3/TjMwepwFQTNIUw8vfEcgqoEoJfA==", + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@loopback/security/-/security-0.10.5.tgz", + "integrity": "sha512-lWjUc7TtAWNTmkShnqrgCYAimBlJVPylnZtqMiZ8Cf4FXs6H/jWDa0w67detTDPqUmIKRjAm5Ecl2hAf/O91Ww==", "dependencies": { "debug": "^4.3.4", - "tslib": "^2.6.0" + "tslib": "^2.6.2" }, "engines": { "node": "16 || 18 || 20" @@ -1180,12 +1246,12 @@ } }, "node_modules/@loopback/service-proxy": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@loopback/service-proxy/-/service-proxy-6.1.1.tgz", - "integrity": "sha512-oC/TrQEPD60o7jpZ1B9jcTErILUtP04MQVnTAluBbVrhlRhTGtI0Sp9rBmID2J1G71rLKspGjolF4vWlQ9sSpg==", + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/@loopback/service-proxy/-/service-proxy-6.1.5.tgz", + "integrity": "sha512-d1MHQNR9zon7kduaJGieUUee/uBVEpssW6j0ewiLfKfkBM6kruhq6+pc2uhyaWTaJMGOrz0sPIvgeTPGDzLfxw==", "dependencies": { - "loopback-datasource-juggler": "^4.28.8", - "tslib": "^2.6.0" + "loopback-datasource-juggler": "^5.0.5", + "tslib": "^2.6.2" }, "engines": { "node": "16 || 18 || 20" @@ -1195,24 +1261,24 @@ } }, "node_modules/@loopback/testlab": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@loopback/testlab/-/testlab-6.1.1.tgz", - "integrity": "sha512-EffhhTc9sMmD/FHAGB2tBWxIYLrEFzITxEHn3I/vVhR/+pOtOtbV/nGDIh8OZNkMy7vGWVy+CqlQv6jrCJ1Vqg==", + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/@loopback/testlab/-/testlab-6.1.5.tgz", + "integrity": "sha512-UhT9WBUSjJ36+goGtNFT2gXfMjatzHuTTq5mHXOhMiRXs8z/H30fxW+BGVyjUD88OlL1msJmQC8B7iwdVwOpnw==", "dev": true, "dependencies": { "@hapi/shot": "^6.0.1", - "@types/express": "^4.17.17", - "@types/fs-extra": "^11.0.1", - "@types/shot": "^4.0.1", - "@types/sinon": "^10.0.15", - "@types/supertest": "^2.0.12", + "@types/express": "^4.17.21", + "@types/fs-extra": "^11.0.4", + "@types/shot": "^4.0.5", + "@types/sinon": "^17.0.3", + "@types/supertest": "^2.0.16", "express": "^4.18.2", - "fs-extra": "^11.1.1", + "fs-extra": "^11.2.0", "oas-validator": "^5.0.8", "should": "^13.2.3", - "sinon": "^15.2.0", + "sinon": "^17.0.1", "supertest": "^6.3.3", - "tslib": "^2.6.0" + "tslib": "^2.6.2" }, "engines": { "node": "16 || 18 || 20" @@ -1264,11 +1330,6 @@ "openapi-typescript": "^5.4.1" } }, - "node_modules/@openapi-contrib/openapi-schema-to-json-schema/node_modules/@types/node": { - "version": "20.5.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.0.tgz", - "integrity": "sha512-Mgq7eCtoTjT89FqNoTzzXg2XvCi5VMhRV6+I2aYanc6kQCBImeNaAYRs/DyoVqk1YEUJK5gN9VO7HRIdz4Wo3Q==" - }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", @@ -1279,18 +1340,18 @@ } }, "node_modules/@sinonjs/commons": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", - "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", "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==", + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz", + "integrity": "sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==", "dev": true, "dependencies": { "@sinonjs/commons": "^3.0.0" @@ -1323,48 +1384,48 @@ "dev": true }, "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==", + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", "dependencies": { "@types/connect": "*", "@types/node": "*" } }, "node_modules/@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", "dependencies": { "@types/node": "*" } }, "node_modules/@types/cookiejar": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.2.tgz", - "integrity": "sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.5.tgz", + "integrity": "sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q==", "dev": true }, "node_modules/@types/cors": { - "version": "2.8.13", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz", - "integrity": "sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==", + "version": "2.8.17", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", + "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", "dependencies": { "@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==", + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", "dependencies": { "@types/ms": "*" } }, "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==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.33", @@ -1373,9 +1434,9 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.35", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz", - "integrity": "sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==", + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.0.tgz", + "integrity": "sha512-bGyep3JqPCRry1wq+O5n7oiBgGWmeIJXPjXXCo8EK0u8duZGSYar7cGqd3ML2JUsLGeB7fmc06KYo9fLGWqPvQ==", "dependencies": { "@types/node": "*", "@types/qs": "*", @@ -1384,9 +1445,9 @@ } }, "node_modules/@types/fs-extra": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-11.0.1.tgz", - "integrity": "sha512-MxObHvNl4A69ofaTRU8DFqvgzzv8s9yRtaPPm5gud9HDNvpB3GPQFvNuTWAI59B9huVGV5jXYJwbCsmBsOGYWA==", + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-11.0.4.tgz", + "integrity": "sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==", "dev": true, "dependencies": { "@types/jsonfile": "*", @@ -1403,28 +1464,34 @@ } }, "node_modules/@types/http-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.1.tgz", - "integrity": "sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==" }, "node_modules/@types/json-schema": { - "version": "7.0.12", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", - "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==" + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" }, "node_modules/@types/jsonfile": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.1.tgz", - "integrity": "sha512-GSgiRCVeapDN+3pqA35IkQwasaCh/0YFH5dEF6S88iDvEn901DjOeH3/QPY+XYP1DFzDZPvIvfeEgk+7br5png==", + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.4.tgz", + "integrity": "sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==", "dev": true, "dependencies": { "@types/node": "*" } }, + "node_modules/@types/methods": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@types/methods/-/methods-1.1.4.tgz", + "integrity": "sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ==", + "dev": true + }, "node_modules/@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==" }, "node_modules/@types/minimatch": { "version": "5.1.2", @@ -1432,58 +1499,61 @@ "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==" }, "node_modules/@types/mocha": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.1.tgz", - "integrity": "sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q==", + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.6.tgz", + "integrity": "sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg==", "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==" + "version": "0.7.34", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" }, "node_modules/@types/node": { - "version": "16.18.40", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.40.tgz", - "integrity": "sha512-+yno3ItTEwGxXiS/75Q/aHaa5srkpnJaH+kdkTVJ3DtJEwv92itpKbxU+FjPoh2m/5G9zmUQfrL4A4C13c+iGA==" + "version": "20.12.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.12.tgz", + "integrity": "sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==", + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/@types/on-finished": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@types/on-finished/-/on-finished-2.3.1.tgz", - "integrity": "sha512-mzVYaYcFs5Jd2n/O6uYIRUsFRR1cHyZLRvkLCU0E7+G5WhY0qBDAR5fUCeZbvecYOSh9ikhlesyi2UfI8B9ckQ==", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@types/on-finished/-/on-finished-2.3.4.tgz", + "integrity": "sha512-Ld4UQD3udYcKPaAWlI1EYXKhefkZcTlpqOLkQRmN3u5Ml/tUypMivUHbNH8LweP4H4FlhGGO+uBjJI1Y1dkE1g==", "dependencies": { "@types/node": "*" } }, "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==" + "version": "6.9.15", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==" }, "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==" + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==" }, "node_modules/@types/semver": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz", - "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==", + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", "dev": true }, "node_modules/@types/send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", - "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", "dependencies": { "@types/mime": "^1", "@types/node": "*" } }, "node_modules/@types/serve-static": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.2.tgz", - "integrity": "sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==", + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz", + "integrity": "sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==", "dependencies": { "@types/http-errors": "*", "@types/mime": "*", @@ -1491,83 +1561,85 @@ } }, "node_modules/@types/shot": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/shot/-/shot-4.0.1.tgz", - "integrity": "sha512-LUJWxDKYWmmUpVXDWZ78hFIrqb/ho9RoKqBAFRJw4OHOS3qCKCoXCyzrfmf24lbO4COYfqL0iEWNArOfKEYW9g==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/shot/-/shot-4.0.5.tgz", + "integrity": "sha512-4wiGdy1sXfpcFgF1VAouUaSl6zjWn0v2NarNgviAJYm3BeiODywERnRtIC5YtNIbfh3UfShfCRD9yyeWAD7R0w==", "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/@types/sinon": { - "version": "10.0.16", - "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-10.0.16.tgz", - "integrity": "sha512-j2Du5SYpXZjJVJtXBokASpPRj+e2z+VUhCPHmM6WMfe3dpHu6iVKJMU6AiBcMp/XTAYnEj6Wc1trJUWwZ0QaAQ==", + "version": "17.0.3", + "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-17.0.3.tgz", + "integrity": "sha512-j3uovdn8ewky9kRBG19bOwaZbexJu/XjtkHyjvUgt4xfPFz18dcORIMqnYh66Fx3Powhcr85NT5+er3+oViapw==", "dev": true, "dependencies": { "@types/sinonjs__fake-timers": "*" } }, "node_modules/@types/sinonjs__fake-timers": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.2.tgz", - "integrity": "sha512-9GcLXF0/v3t80caGs5p2rRfkB+a8VBGLJZVih6CNFkx8IZ994wiKKLSRs9nuFwk1HevWs/1mnUmkApGrSGsShA==", + "version": "8.1.5", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.5.tgz", + "integrity": "sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ==", "dev": true }, "node_modules/@types/superagent": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-4.1.18.tgz", - "integrity": "sha512-LOWgpacIV8GHhrsQU+QMZuomfqXiqzz3ILLkCtKx3Us6AmomFViuzKT9D693QTKgyut2oCytMG8/efOop+DB+w==", + "version": "8.1.7", + "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-8.1.7.tgz", + "integrity": "sha512-NmIsd0Yj4DDhftfWvvAku482PZum4DBW7U51OvS8gvOkDDY0WT1jsVyDV3hK+vplrsYw8oDwi9QxOM7U68iwww==", "dev": true, "dependencies": { - "@types/cookiejar": "*", + "@types/cookiejar": "^2.1.5", + "@types/methods": "^1.1.4", "@types/node": "*" } }, "node_modules/@types/supertest": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-2.0.12.tgz", - "integrity": "sha512-X3HPWTwXRerBZS7Mo1k6vMVR1Z6zmJcDVn5O/31whe0tnjE4te6ZJSJGq1RiqHPjzPdMTfjCFogDJmwng9xHaQ==", + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-2.0.16.tgz", + "integrity": "sha512-6c2ogktZ06tr2ENoZivgm7YnprnhYE4ZoXGMY+oA7IuAf17M8FWvujXZGmxLv8y0PTyts4x5A+erSwVUFA8XSg==", "dev": true, "dependencies": { "@types/superagent": "*" } }, "node_modules/@types/type-is": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/@types/type-is/-/type-is-1.6.3.tgz", - "integrity": "sha512-PNs5wHaNcBgCQG5nAeeZ7OvosrEsI9O4W2jAOO9BCCg4ux9ZZvH2+0iSCOIDBiKuQsiNS8CBlmfX9f5YBQ22cA==", + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/@types/type-is/-/type-is-1.6.6.tgz", + "integrity": "sha512-fs1KHv/f9OvmTMsu4sBNaUu32oyda9Y9uK25naJG8gayxNrfqGIjPQsbLIYyfe7xFkppnPlJB+BuTldOaX9bXw==", "dependencies": { "@types/node": "*" } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", - "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz", + "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==", "dev": true, "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", + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/type-utils": "6.21.0", + "@typescript-eslint/utils": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.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" + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -1576,25 +1648,26 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", - "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", + "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", "debug": "^4.3.4" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "eslint": "^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -1603,16 +1676,16 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", + "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", @@ -1620,25 +1693,25 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", - "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz", + "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.62.0", - "@typescript-eslint/utils": "5.62.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/utils": "6.21.0", "debug": "^4.3.4", - "tsutils": "^3.21.0" + "ts-api-utils": "^1.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "*" + "eslint": "^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -1647,12 +1720,12 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", + "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", "dev": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", @@ -1660,21 +1733,22 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", + "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", @@ -1687,48 +1761,58 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", - "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz", + "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", "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.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "semver": "^7.5.4" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "eslint": "^7.0.0 || ^8.0.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", + "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" + "@typescript-eslint/types": "6.21.0", + "eslint-visitor-keys": "^3.4.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "node_modules/@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==" + }, "node_modules/accept-language": { "version": "3.0.18", "resolved": "https://registry.npmjs.org/accept-language/-/accept-language-3.0.18.tgz", @@ -1751,9 +1835,9 @@ } }, "node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -1785,14 +1869,14 @@ } }, "node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz", + "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", "dependencies": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "uri-js": "^4.4.1" }, "funding": { "type": "github", @@ -1901,6 +1985,21 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", @@ -1915,6 +2014,27 @@ "node": ">=8" } }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", @@ -1922,9 +2042,9 @@ "dev": true }, "node_modules/async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" }, "node_modules/asynckit": { "version": "0.4.0", @@ -1932,11 +2052,52 @@ "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==", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/bcp47": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/bcp47/-/bcp47-1.1.2.tgz", @@ -1945,21 +2106,16 @@ "node": ">=0.10" } }, - "node_modules/bignumber.js": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz", - "integrity": "sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==", - "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==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "dev": true, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/bl": { @@ -2027,19 +2183,17 @@ } }, "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==", + "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", - "concat-map": "0.0.1" + "balanced-match": "^1.0.0" } }, "node_modules/braces": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, "dependencies": { "fill-range": "^7.0.1" }, @@ -2054,9 +2208,9 @@ "dev": true }, "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==", + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", "dev": true, "funding": [ { @@ -2073,10 +2227,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001517", - "electron-to-chromium": "^1.4.477", - "node-releases": "^2.0.13", - "update-browserslist-db": "^1.0.11" + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" }, "bin": { "browserslist": "cli.js" @@ -2085,6 +2239,29 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", @@ -2115,12 +2292,18 @@ } }, "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==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2160,9 +2343,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001520", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001520.tgz", - "integrity": "sha512-tahF5O9EiiTzwTUqAeFjIZbn4Dnqxzz7ktrgGlMYNLH43Ul26IgTMH/zvL3DG0lZxBYnlT04axvInszUsZULdA==", + "version": "1.0.30001620", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001620.tgz", + "integrity": "sha512-WJvYsOjd1/BYUY6SNGUosK9DUidBPDTnOARHp3fSmFO1ekdxaY6nKRttEVrfMmYi80ctS0kz1wiWmm14fVc3ew==", "dev": true, "funding": [ { @@ -2270,6 +2453,20 @@ "node": ">= 6" } }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, "node_modules/cldrjs": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/cldrjs/-/cldrjs-0.5.5.tgz", @@ -2367,10 +2564,13 @@ "dev": true }, "node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/concat-map": { "version": "0.0.1", @@ -2469,6 +2669,54 @@ "node": "*" } }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -2515,6 +2763,38 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "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", + "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", @@ -2524,6 +2804,14 @@ "node": ">=0.4.0" } }, + "node_modules/denque": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", + "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", + "engines": { + "node": ">=0.10" + } + }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -2624,9 +2912,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.491", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.491.tgz", - "integrity": "sha512-ZzPqGKghdVzlQJ+qpfE+r6EB321zed7e5JsvHIlMM4zPFF8okXUkF5Of7h7F3l3cltPL0rG7YVmlp5Qro7RQLA==", + "version": "1.4.773", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.773.tgz", + "integrity": "sha512-87eHF+h3PlCRwbxVEAw9KtK3v7lWfc/sUDr0W76955AdYTG4bV/k0zrl585Qnj/skRMH2qOSiE+kqMeOQ+LOpw==", "dev": true }, "node_modules/emoji-regex": { @@ -2650,6 +2938,124 @@ "once": "^1.4.0" } }, + "node_modules/es-abstract": { + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "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", @@ -2657,9 +3063,9 @@ "dev": true }, "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "dev": true, "engines": { "node": ">=6" @@ -2683,18 +3089,19 @@ } }, "node_modules/eslint": { - "version": "8.47.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.47.0.tgz", - "integrity": "sha512-spUQWrdPt+pRVP1TTJLmfRNJJHHZryFmptzcafwSvHsceV81djHOdnEeDmkdotZyLNjDhrOasNK8nikkoG1O8Q==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", "dev": true, "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", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -2737,9 +3144,9 @@ } }, "node_modules/eslint-config-prettier": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", - "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", + "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", "dev": true, "bin": { "eslint-config-prettier": "bin/cli.js" @@ -2749,9 +3156,9 @@ } }, "node_modules/eslint-plugin-eslint-plugin": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-eslint-plugin/-/eslint-plugin-eslint-plugin-5.1.1.tgz", - "integrity": "sha512-4MGDsG505Ot2TSDSYxFL0cpDo4Y+t6hKB8cfZw9Jx484VjXWDfiYC/A6cccWFtWoOOC0j+wGgQIIb11cdIAMBg==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-eslint-plugin/-/eslint-plugin-eslint-plugin-5.5.1.tgz", + "integrity": "sha512-9AmfZzcQ7QHwpzfAQpZ7xdtwHYViylmlnruCH0aV64/tuoH3igGXg91vr0e6ShLf/mrAYGqLw5LZ/gOxJeRXnw==", "dev": true, "dependencies": { "eslint-utils": "^3.0.0", @@ -2765,13 +3172,14 @@ } }, "node_modules/eslint-plugin-mocha": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-10.1.0.tgz", - "integrity": "sha512-xLqqWUF17llsogVOC+8C6/jvQ+4IoOREbN7ZCHuOHuD6cT5cDD4h7f2LgsZuzMAiwswWE21tO7ExaknHVDrSkw==", + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-10.4.3.tgz", + "integrity": "sha512-emc4TVjq5Ht0/upR+psftuz6IBG5q279p+1dSRDeHf+NS9aaerBi3lXKo1SEzwC29hFIW21gO89CEWSvRsi8IQ==", "dev": true, "dependencies": { "eslint-utils": "^3.0.0", - "rambda": "^7.1.0" + "globals": "^13.24.0", + "rambda": "^7.4.0" }, "engines": { "node": ">=14.0.0" @@ -2781,25 +3189,19 @@ } }, "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==", + "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": "^4.1.1" + "estraverse": "^5.2.0" }, "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": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-utils": { @@ -2857,20 +3259,14 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "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==", + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "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" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, "node_modules/eslint/node_modules/json-schema-traverse": { @@ -2879,6 +3275,18 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/espree": { "version": "9.6.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", @@ -3080,9 +3488,9 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "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==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -3125,9 +3533,9 @@ "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" }, "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==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dev": true, "dependencies": { "reusify": "^1.0.4" @@ -3153,14 +3561,6 @@ "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==", - "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", @@ -3176,7 +3576,6 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, "dependencies": { "to-regex-range": "^5.0.1" }, @@ -3247,6 +3646,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/find-yarn-workspace-root": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz", + "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==", + "dependencies": { + "micromatch": "^4.0.2" + } + }, "node_modules/flat": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", @@ -3257,18 +3664,29 @@ } }, "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, "dependencies": { - "flatted": "^3.1.0", + "flatted": "^3.2.9", + "keyv": "^4.5.3", "rimraf": "^3.0.2" }, "engines": { "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/flat-cache/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/flat-cache/node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -3289,6 +3707,18 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/flat-cache/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/flat-cache/node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -3305,11 +3735,19 @@ } }, "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==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", "dev": 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==", + "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", @@ -3397,9 +3835,9 @@ ] }, "node_modules/fs-extra": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", - "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "dev": true, "dependencies": { "graceful-fs": "^4.2.0", @@ -3416,9 +3854,9 @@ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, "optional": true, @@ -3430,9 +3868,45 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "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==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/generate-function": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", + "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", + "dependencies": { + "is-property": "^1.0.2" + } }, "node_modules/gensync": { "version": "1.0.0-beta.2", @@ -3453,14 +3927,18 @@ } }, "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==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3489,22 +3967,38 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/glob": { - "version": "10.3.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", - "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", + "version": "10.3.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.15.tgz", + "integrity": "sha512-0c6RlJt1TICLyvJYIApxb8GsXoai0KUP7AxKKAtsYXdgJR1mGEUa7DgwShbdk1nly0PYoZj01xd4hzbq3fsjpw==", "dependencies": { "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", + "jackspeak": "^2.3.6", "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" + "minipass": "^7.0.4", + "path-scurry": "^1.11.0" }, "bin": { - "glob": "dist/cjs/src/bin.js" + "glob": "dist/esm/bin.mjs" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=16 || 14 >=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -3522,28 +4016,6 @@ "node": ">=10.13.0" } }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/glob/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/globalize": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/globalize/-/globalize-1.7.0.tgz", @@ -3553,9 +4025,9 @@ } }, "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==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -3567,7 +4039,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globalyzer": { + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globalyzer": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==" @@ -3597,11 +4084,21 @@ "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==" }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, "node_modules/graphemer": { "version": "1.4.0", @@ -3609,15 +4106,32 @@ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "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==", + "node_modules/handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", "dependencies": { - "function-bind": "^1.1.1" + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" }, "engines": { - "node": ">= 0.4.0" + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "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==", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-flag": { @@ -3628,10 +4142,21 @@ "node": ">=8" } }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "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==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "engines": { "node": ">= 0.4" }, @@ -3650,6 +4175,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/hasha": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", @@ -3675,6 +4214,17 @@ "node": ">=8" } }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -3724,9 +4274,9 @@ } }, "node_modules/http-status": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/http-status/-/http-status-1.6.2.tgz", - "integrity": "sha512-oUExvfNckrpTpDazph7kNG8sQi5au3BeTo0idaZFXEhTaJKu7GNJCLHI0rYY2wljm548MSTM+Ljj/c6anqu2zQ==", + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/http-status/-/http-status-1.7.4.tgz", + "integrity": "sha512-c2qSwNtTlHVYAhMj9JpGdyo0No/+DiKXCJ9pHtZ2Yf3QmPnBIytKSRT7BuyIiQ7icXLynavGmxUqkOjSrAuMuA==", "engines": { "node": ">= 0.4.0" } @@ -3746,10 +4296,11 @@ } }, "node_modules/hyperid": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/hyperid/-/hyperid-3.1.1.tgz", - "integrity": "sha512-RveV33kIksycSf7HLkq1sHB5wW0OwuX8ot8MYnY++gaaPXGFfKpBncHrAWxdpuEeRlazUMGWefwP1w6o6GaumA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/hyperid/-/hyperid-3.2.0.tgz", + "integrity": "sha512-PdTtDo+Rmza9nEhTunaDSUKwbC69TIzLEpZUwiB6f+0oqmY0UPfhyHCPt6K1NQ4WFv5yJBTG5vELztVWP+nEVQ==", "dependencies": { + "buffer": "^5.2.1", "uuid": "^8.3.2", "uuid-parse": "^1.1.0" } @@ -3773,10 +4324,29 @@ "node": ">=0.10.0" } }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "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==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "dev": true, "engines": { "node": ">= 4" @@ -3817,12 +4387,12 @@ } }, "node_modules/inflection": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.13.4.tgz", - "integrity": "sha512-6I/HUDeYFfuNCVS3td055BaXBwKYuzw7K3ExVMStBowKo9oOAMJIXIHvdyR3iboTCp1b+1i5DSkIZTcwIktuDw==", - "engines": [ - "node >= 0.4.0" - ] + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/inflection/-/inflection-3.0.0.tgz", + "integrity": "sha512-1zEJU1l19SgJlmwqsEyFTbScw/tkMHFenUo//Y0i+XEP83gDFdMvPizAD/WGcE+l1ku12PcTVHQhO6g5E0UCMw==", + "engines": { + "node": ">=18.0.0" + } }, "node_modules/inflight": { "version": "1.0.6", @@ -3838,6 +4408,19 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, + "node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/invert-kv": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-3.0.1.tgz", @@ -3857,6 +4440,32 @@ "node": ">= 0.10" } }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "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==", + "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", @@ -3869,11 +4478,79 @@ "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==", + "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-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, + "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==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "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==", + "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==", + "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", @@ -3903,15 +4580,39 @@ "node": ">=0.10.0" } }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "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==", + "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", @@ -3930,6 +4631,40 @@ "node": ">=8" } }, + "node_modules/is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==" + }, + "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==", + "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-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -3941,6 +4676,48 @@ "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==", + "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==", + "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.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -3959,6 +4736,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "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==", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -3968,10 +4756,21 @@ "node": ">=0.10.0" } }, + "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==", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" }, "node_modules/isexe": { "version": "2.0.0", @@ -3979,9 +4778,9 @@ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, "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==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, "engines": { "node": ">=8" @@ -4040,6 +4839,16 @@ "node": ">=8" } }, + "node_modules/istanbul-lib-processinfo/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/istanbul-lib-processinfo/node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -4060,6 +4869,18 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/istanbul-lib-processinfo/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/istanbul-lib-processinfo/node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -4128,9 +4949,9 @@ } }, "node_modules/istanbul-reports": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", - "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", "dev": true, "dependencies": { "html-escaper": "^2.0.0", @@ -4141,9 +4962,9 @@ } }, "node_modules/jackspeak": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.2.3.tgz", - "integrity": "sha512-pF0kfjmg8DJLxDrizHoCZGUFz4P4czQ3HyfW4BU0ffebYkzAVlBywp5zaxW/TM+r0sGbmrQdi8EQQVTJFxnGsQ==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", "dependencies": { "@isaacs/cliui": "^8.0.2" }, @@ -4158,9 +4979,9 @@ } }, "node_modules/jake": { - "version": "10.8.7", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", - "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==", + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.1.tgz", + "integrity": "sha512-61btcOHNnLnsOdtLgA5efqQWjnSi/vow5HbI7HMdKKWqvrKR1bLK3BPlJn9gcSaP2ewuamUSMB5XEy76KUIS2w==", "dependencies": { "async": "^3.2.3", "chalk": "^4.0.2", @@ -4174,6 +4995,26 @@ "node": ">=10" } }, + "node_modules/jake/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/jake/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -4192,9 +5033,9 @@ } }, "node_modules/js2xmlparser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.2.tgz", - "integrity": "sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-5.0.0.tgz", + "integrity": "sha512-ckXs0Fzd6icWurbeAXuqo+3Mhq2m8pOPygsQjTPh8K5UWgKaUgDSHrdDxAfexmT11xvBKOQ6sgYwPkYc5RW/bg==", "dependencies": { "xmlcreate": "^2.0.4" } @@ -4211,6 +5052,12 @@ "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-merge-patch": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-merge-patch/-/json-merge-patch-1.0.2.tgz", @@ -4232,6 +5079,23 @@ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" }, + "node_modules/json-stable-stringify": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.1.1.tgz", + "integrity": "sha512-SU/971Kt5qVQfJpyDveVhQ/vya+5hvrjClFOcr8c0Fq5aODJjMwutrOfCU+eCnVD5gpx1Q3fEqkyom77zH1iIg==", + "dependencies": { + "call-bind": "^1.0.5", + "isarray": "^2.0.5", + "jsonify": "^0.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "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", @@ -4254,7 +5118,6 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, "dependencies": { "universalify": "^2.0.0" }, @@ -4262,12 +5125,37 @@ "graceful-fs": "^4.1.6" } }, + "node_modules/jsonify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz", + "integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/just-extend": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz", - "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-6.2.0.tgz", + "integrity": "sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw==", "dev": true }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/klaw-sync": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz", + "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==", + "dependencies": { + "graceful-fs": "^4.1.11" + } + }, "node_modules/lbx-jwt": { "resolved": "..", "link": true @@ -4350,184 +5238,80 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/long": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" + }, "node_modules/loopback-connector": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/loopback-connector/-/loopback-connector-5.3.3.tgz", - "integrity": "sha512-ZYULfy5W7+R2A3I9TILWZOdfMVcZ2qEQT/tye0Fy7Ju3zQ6Gv1bmroARGPGVDAneFt+5YaiaieLdoJ1t02hLpg==", + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/loopback-connector/-/loopback-connector-6.1.5.tgz", + "integrity": "sha512-O48IFm9apzIzrNybJSmhM+1ZarzVJzbxvG7VD7UtgKQj28gQ0KoCtlHLpDwbi9TXd+BrrL/OrildFNFny5maEQ==", "dependencies": { - "async": "^3.2.4", + "async": "^3.2.5", "bluebird": "^3.7.2", "debug": "^4.3.4", "msgpack5": "^4.5.1", - "strong-globalize": "^6.0.5", - "uuid": "^9.0.0" + "strong-globalize": "^6.0.6", + "uuid": "^9.0.1" }, "engines": { - "node": ">=10" + "node": ">=18" } }, "node_modules/loopback-connector-mysql": { - "version": "5.4.4", - "resolved": "https://registry.npmjs.org/loopback-connector-mysql/-/loopback-connector-mysql-5.4.4.tgz", - "integrity": "sha512-6y+eXbP1YJWfEqBsuaNoK6zGSTurN1h0X67qpRj/pf0U9qWphjuJGYbU4Z8DnutY3J1OTeSycQgvt1qLJNHj/w==", - "dependencies": { - "async": "^2.6.1", - "debug": "^3.1.0", - "lodash": "^4.17.11", - "loopback-connector": "^4.0.0", - "mysql": "^2.11.1", - "strong-globalize": "^5.0.5" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/loopback-connector-mysql/node_modules/async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "dependencies": { - "lodash": "^4.17.14" - } - }, - "node_modules/loopback-connector-mysql/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/loopback-connector-mysql/node_modules/loopback-connector": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/loopback-connector/-/loopback-connector-4.11.1.tgz", - "integrity": "sha512-EA31zur3xIhP4UW+P2rWEcSbqpk4jPddpTBZSSw8KCszM7T0/Pe4HvEmG0MndAWJctRPtrwKDEu/8rWuMDLf+A==", - "dependencies": { - "async": "^3.2.0", - "bluebird": "^3.7.2", - "debug": "^4.1.1", - "msgpack5": "^4.2.0", - "strong-globalize": "^5.1.0", - "uuid": "^7.0.3" - }, - "engines": { - "node": ">=8.9" - } - }, - "node_modules/loopback-connector-mysql/node_modules/loopback-connector/node_modules/async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" - }, - "node_modules/loopback-connector-mysql/node_modules/loopback-connector/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/loopback-connector-mysql/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==", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/loopback-connector-mysql/node_modules/strong-globalize": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/strong-globalize/-/strong-globalize-5.1.0.tgz", - "integrity": "sha512-9cooAb6kNMDFmTDybkkch1x7b+LuzZNva8oIr+MxXnvx9jcvw4/4DTSXPc53mG68G0Q9YOTYZkhDkWe/DiJ1Qg==", + "version": "7.0.10", + "resolved": "https://registry.npmjs.org/loopback-connector-mysql/-/loopback-connector-mysql-7.0.10.tgz", + "integrity": "sha512-pdC58HY4FUxEaSQM4frXf5KJgCzECvYbZSqk0Pw4cB7FUIumPZvKzuMTwoz0QFkT/DfD2vOdDLL/TG3LQZaUiw==", + "hasInstallScript": true, "dependencies": { - "accept-language": "^3.0.18", - "debug": "^4.1.1", - "globalize": "^1.5.0", - "lodash": "^4.17.15", - "md5": "^2.2.1", - "mkdirp": "^0.5.5", - "os-locale": "^5.0.0", - "yamljs": "^0.3.0" + "async": "^3.2.5", + "debug": "^4.3.4", + "lodash": "^4.17.21", + "loopback-connector": "^6.1.5", + "mysql2": "^3.6.3", + "patch-package": "^8.0.0", + "strong-globalize": "^6.0.6" }, "engines": { - "node": ">=8.9" - } - }, - "node_modules/loopback-connector-mysql/node_modules/strong-globalize/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/loopback-connector-mysql/node_modules/uuid": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz", - "integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==", - "bin": { - "uuid": "dist/bin/uuid" + "node": ">=18" } }, "node_modules/loopback-datasource-juggler": { - "version": "4.28.9", - "resolved": "https://registry.npmjs.org/loopback-datasource-juggler/-/loopback-datasource-juggler-4.28.9.tgz", - "integrity": "sha512-vBwqQaSa2GpCqS/zevAGG6zRgzsQ/KhB4xUaBSbGxNMD6GwTbS60GuD4yKSN2t4pwx4Qca2x3YUAXhumO1bN2Q==", + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/loopback-datasource-juggler/-/loopback-datasource-juggler-5.0.9.tgz", + "integrity": "sha512-C0kQ1KfO9zjjFRYvLXhoI2icUjCTvCFsw1RsSfJOglCrJTHRsxet3Ocl4QZg/jgnJrwqLbLSC/94e4cnkver7w==", "dependencies": { - "async": "^3.2.4", + "async": "^3.2.5", "change-case": "^4.1.2", "debug": "^4.3.4", "depd": "^2.0.0", - "inflection": "^1.13.4", + "inflection": "^3.0.0", "lodash": "^4.17.21", - "loopback-connector": "^5.3.3", - "minimatch": "^5.1.6", - "nanoid": "^3.3.6", - "qs": "^6.11.2", - "strong-globalize": "^6.0.5", - "traverse": "^0.6.7", - "uuid": "^9.0.0" + "loopback-connector": "^6.1.5", + "minimatch": "^9.0.4", + "nanoid": "^3.3.7", + "qs": "^6.12.1", + "strong-globalize": "^6.0.6", + "traverse": "^0.6.9", + "uuid": "^9.0.1" }, "engines": { - "node": ">=10" - } - }, - "node_modules/loopback-datasource-juggler/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dependencies": { - "balanced-match": "^1.0.0" + "node": ">=18" } }, "node_modules/loopback-datasource-juggler/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", "dependencies": { "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/lower-case": { @@ -4538,6 +5322,14 @@ "tslib": "^2.0.3" } }, + "node_modules/lru-cache": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-8.0.5.tgz", + "integrity": "sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==", + "engines": { + "node": ">=16.14" + } + }, "node_modules/make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -4641,7 +5433,6 @@ "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" @@ -4689,14 +5480,17 @@ } }, "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "*" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/minimist": { @@ -4708,9 +5502,9 @@ } }, "node_modules/minipass": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.3.tgz", - "integrity": "sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.1.tgz", + "integrity": "sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==", "engines": { "node": ">=16 || 14 >=14.17" } @@ -4727,9 +5521,9 @@ } }, "node_modules/mocha": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", - "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.4.0.tgz", + "integrity": "sha512-eqhGB8JKapEYcC4ytX/xrzKforgEc3j1pGlAXVy3eRwrtAy5/nIfT1SvgGzfN0XZZxeLq0aQWkOUAmqIJiv+bA==", "dev": true, "dependencies": { "ansi-colors": "4.1.1", @@ -4739,13 +5533,12 @@ "diff": "5.0.0", "escape-string-regexp": "4.0.0", "find-up": "5.0.0", - "glob": "7.2.0", + "glob": "8.1.0", "he": "1.2.0", "js-yaml": "4.1.0", "log-symbols": "4.1.0", "minimatch": "5.0.1", "ms": "2.1.3", - "nanoid": "3.3.3", "serialize-javascript": "6.0.0", "strip-json-comments": "3.1.1", "supports-color": "8.1.1", @@ -4760,44 +5553,27 @@ }, "engines": { "node": ">= 14.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" } }, "node_modules/mocha/node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "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": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": "*" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/mocha/node_modules/glob/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/mocha/node_modules/minimatch": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", @@ -4810,33 +5586,12 @@ "node": ">=10" } }, - "node_modules/mocha/node_modules/minimatch/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/mocha/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/mocha/node_modules/nanoid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", - "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, "node_modules/mocha/node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -4868,43 +5623,58 @@ "safe-buffer": "^5.1.2" } }, - "node_modules/mysql": { - "version": "2.18.1", - "resolved": "https://registry.npmjs.org/mysql/-/mysql-2.18.1.tgz", - "integrity": "sha512-Bca+gk2YWmqp2Uf6k5NFEurwY/0td0cpebAucFpY/3jhrwrVGuxU2uQFCHjU19SJfje0yQvi+rVWdq78hR5lig==", + "node_modules/mysql2": { + "version": "3.9.7", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.9.7.tgz", + "integrity": "sha512-KnJT8vYRcNAZv73uf9zpXqNbvBG7DJrs+1nACsjZP1HMJ1TgXEy8wnNilXAn/5i57JizXKtrUtwDB7HxT9DDpw==", "dependencies": { - "bignumber.js": "9.0.0", - "readable-stream": "2.3.7", - "safe-buffer": "5.1.2", - "sqlstring": "2.3.1" + "denque": "^2.1.0", + "generate-function": "^2.3.1", + "iconv-lite": "^0.6.3", + "long": "^5.2.1", + "lru-cache": "^8.0.0", + "named-placeholders": "^1.1.3", + "seq-queue": "^0.0.5", + "sqlstring": "^2.3.2" }, "engines": { - "node": ">= 0.6" + "node": ">= 8.0" } }, - "node_modules/mysql/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==", + "node_modules/mysql2/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==", "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" + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/mysql/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "node_modules/named-placeholders": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.3.tgz", + "integrity": "sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==", + "dependencies": { + "lru-cache": "^7.14.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/named-placeholders/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "engines": { + "node": ">=12" + } }, "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==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", "funding": [ { "type": "github", @@ -4924,12 +5694,6 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -4938,41 +5702,22 @@ "node": ">= 0.6" } }, - "node_modules/nise": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.4.tgz", - "integrity": "sha512-8+Ib8rRJ4L0o3kfmyVCL7gzrohyDe0cMFTBa2d364yIrEGMEoetznKJx899YxjybU6bL9SQkYPSBBs1gyYs8Xg==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^2.0.0", - "@sinonjs/fake-timers": "^10.0.2", - "@sinonjs/text-encoding": "^0.7.1", - "just-extend": "^4.0.2", - "path-to-regexp": "^1.7.0" - } - }, - "node_modules/nise/node_modules/@sinonjs/commons": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", - "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", - "dev": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/nise/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", - "dev": true + "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==" }, - "node_modules/nise/node_modules/path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "node_modules/nise": { + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.9.tgz", + "integrity": "sha512-qOnoujW4SV6e40dYxJOb3uvuoPHtmLzIk4TFo+j0jPJoC+5Z9xja5qH5JZobEPsa8+YYphMrOSwnrshEhG2qww==", "dev": true, "dependencies": { - "isarray": "0.0.1" + "@sinonjs/commons": "^3.0.0", + "@sinonjs/fake-timers": "^11.2.2", + "@sinonjs/text-encoding": "^0.7.2", + "just-extend": "^6.2.0", + "path-to-regexp": "^6.2.1" } }, "node_modules/no-case": { @@ -5015,9 +5760,9 @@ } }, "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==", + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", "dev": true }, "node_modules/normalize-path": { @@ -5081,6 +5826,16 @@ "node": ">=8.9" } }, + "node_modules/nyc/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/nyc/node_modules/cliui": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", @@ -5156,6 +5911,18 @@ "node": ">=8" } }, + "node_modules/nyc/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/nyc/node_modules/p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -5439,9 +6206,34 @@ } }, "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==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "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==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -5479,10 +6271,25 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "dependencies": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/openapi-typescript": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/openapi-typescript/-/openapi-typescript-5.4.1.tgz", - "integrity": "sha512-AGB2QiZPz4rE7zIwV3dRHtoUC/CWHhUjuzGXvtmMQN2AFV8xCTLKcZUHLcdPQmt/83i22nRE7+TxXOXkK+gf4Q==", + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/openapi-typescript/-/openapi-typescript-5.4.2.tgz", + "integrity": "sha512-tHeRv39Yh7brqJpbUntdjtUaXrTHmC4saoyTLU/0J2I8LEFQYDXRLgnmWTMiMOB2GXugJiqHa5n9sAyd6BRqiA==", "dependencies": { "js-yaml": "^4.1.0", "mime": "^3.0.0", @@ -5498,6 +6305,20 @@ "node": ">= 14.0.0" } }, + "node_modules/openapi-typescript/node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, "node_modules/openapi-typescript/node_modules/yargs-parser": { "version": "21.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", @@ -5515,17 +6336,17 @@ } }, "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "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" + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" }, "engines": { "node": ">= 0.8.0" @@ -5547,6 +6368,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/p-defer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", @@ -5700,6 +6529,118 @@ "tslib": "^2.0.3" } }, + "node_modules/patch-package": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-8.0.0.tgz", + "integrity": "sha512-da8BVIhzjtgScwDJ2TtKsfT5JFWz1hYoBl9rUQ1f38MC2HwnEIkK8VN3dKMKcP7P7bvvgzNDbfNHtx3MsQb5vA==", + "dependencies": { + "@yarnpkg/lockfile": "^1.1.0", + "chalk": "^4.1.2", + "ci-info": "^3.7.0", + "cross-spawn": "^7.0.3", + "find-yarn-workspace-root": "^2.0.0", + "fs-extra": "^9.0.0", + "json-stable-stringify": "^1.0.2", + "klaw-sync": "^6.0.0", + "minimist": "^1.2.6", + "open": "^7.4.2", + "rimraf": "^2.6.3", + "semver": "^7.5.3", + "slash": "^2.0.0", + "tmp": "^0.0.33", + "yaml": "^2.2.2" + }, + "bin": { + "patch-package": "index.js" + }, + "engines": { + "node": ">=14", + "npm": ">5" + } + }, + "node_modules/patch-package/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/patch-package/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==", + "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/patch-package/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/patch-package/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/patch-package/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/patch-package/node_modules/slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/patch-package/node_modules/yaml": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.2.tgz", + "integrity": "sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/path-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz", @@ -5735,32 +6676,32 @@ } }, "node_modules/path-scurry": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", - "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dependencies": { - "lru-cache": "^9.1.1 || ^10.0.0", + "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=16 || 14 >=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz", - "integrity": "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==", + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", "engines": { "node": "14 || >=16.14" } }, "node_modules/path-to-regexp": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", - "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==" + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.2.tgz", + "integrity": "sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==" }, "node_modules/path-type": { "version": "4.0.0", @@ -5781,16 +6722,15 @@ } }, "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", "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" }, @@ -5862,6 +6802,14 @@ "node": ">=8" } }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -5872,14 +6820,15 @@ } }, "node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", + "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", + "dev": true, "bin": { - "prettier": "bin-prettier.js" + "prettier": "bin/prettier.cjs" }, "engines": { - "node": ">=10.13.0" + "node": ">=14" }, "funding": { "url": "https://github.com/prettier/prettier?sponsor=1" @@ -5939,19 +6888,19 @@ } }, "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "engines": { "node": ">=6" } }, "node_modules/qs": { - "version": "6.11.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", - "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "version": "6.12.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.1.tgz", + "integrity": "sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==", "dependencies": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" }, "engines": { "node": ">=0.6" @@ -6031,6 +6980,11 @@ "util-deprecate": "~1.0.1" } }, + "node_modules/readable-stream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, "node_modules/readable-stream/node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -6049,9 +7003,9 @@ } }, "node_modules/reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", + "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==" }, "node_modules/reftools": { "version": "1.1.9", @@ -6062,6 +7016,23 @@ "url": "https://github.com/Mermade/oas-kit?sponsor=1" } }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "dependencies": { + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/release-zalgo": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", @@ -6117,18 +7088,18 @@ } }, "node_modules/rimraf": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.1.tgz", - "integrity": "sha512-OfFZdwtd3lZ+XZzYP/6gTACubwFcHdLRqS9UX3UwpU2dnGQYkPFISRwvM3w9IiB2w7bW5qGo/uAwE4SmXXSKvg==", + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.7.tgz", + "integrity": "sha512-nV6YcJo5wbLW77m+8KjH8aB/7/rxQy9SZ0HY5shnwULfS+9nmTtVXAJET5NdZmCzA4fPI/Hm1wo/Po/4mopOdg==", "dev": true, "dependencies": { - "glob": "^10.2.5" + "glob": "^10.3.7" }, "bin": { - "rimraf": "dist/cjs/src/bin.js" + "rimraf": "dist/esm/bin.mjs" }, "engines": { - "node": ">=14" + "node": ">=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -6157,6 +7128,23 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "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", @@ -6176,19 +7164,31 @@ } ] }, + "node_modules/safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.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==" }, "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==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "bin": { "semver": "bin/semver.js" }, @@ -6196,24 +7196,6 @@ "node": ">=10" } }, - "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==", - "dev": true, - "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==", - "dev": true - }, "node_modules/send": { "version": "0.18.0", "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", @@ -6276,6 +7258,11 @@ "upper-case-first": "^2.0.2" } }, + "node_modules/seq-queue": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz", + "integrity": "sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q==" + }, "node_modules/serialize-javascript": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", @@ -6305,6 +7292,36 @@ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "dev": true }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -6384,13 +7401,17 @@ "dev": true }, "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -6408,16 +7429,16 @@ } }, "node_modules/sinon": { - "version": "15.2.0", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-15.2.0.tgz", - "integrity": "sha512-nPS85arNqwBXaIsFCkolHjGIkFo+Oxu9vbgmBJizLAhqe6P2o3Qmj3KCUoRkfhHtvgDhZdWD3risLHAUJ8npjw==", + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-17.0.1.tgz", + "integrity": "sha512-wmwE19Lie0MLT+ZYNpDymasPHUKTaZHUH/pKEubRXIzySv9Atnlw+BUMGCzWgV7b7wO+Hw6f1TEOr0IUnmU8/g==", "dev": true, "dependencies": { "@sinonjs/commons": "^3.0.0", - "@sinonjs/fake-timers": "^10.3.0", + "@sinonjs/fake-timers": "^11.2.2", "@sinonjs/samsam": "^8.0.0", "diff": "^5.1.0", - "nise": "^5.1.4", + "nise": "^5.1.5", "supports-color": "^7.2.0" }, "funding": { @@ -6426,9 +7447,9 @@ } }, "node_modules/sinon/node_modules/diff": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", - "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", "dev": true, "engines": { "node": ">=0.3.1" @@ -6456,7 +7477,6 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -6488,6 +7508,16 @@ "node": ">=8" } }, + "node_modules/spawn-wrap/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/spawn-wrap/node_modules/foreground-child": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", @@ -6521,6 +7551,18 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/spawn-wrap/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/spawn-wrap/node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -6560,9 +7602,9 @@ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" }, "node_modules/sqlstring": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz", - "integrity": "sha512-ooAzh/7dxIG5+uDik1z/Rd1vli0+38izZhGzSa34FwR7IbelPWCCKSNIl8jlL/F7ERvy8CB2jNeM1E9i9mXMAQ==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz", + "integrity": "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==", "engines": { "node": ">= 0.6" } @@ -6681,6 +7723,52 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, + "node_modules/string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -6734,26 +7822,26 @@ } }, "node_modules/strong-error-handler": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/strong-error-handler/-/strong-error-handler-4.0.8.tgz", - "integrity": "sha512-8C4DoE7/0YTKcrhVcT1Wz/aIXXxBWi4H0WOKTKabuv2q1wSgdkPOgBUSsyp8U34e+aEOtX0CqIkUK/JaNG94QA==", + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/strong-error-handler/-/strong-error-handler-5.0.10.tgz", + "integrity": "sha512-bSjeWSHizlsefxweVeFv2Pha7z78XL1EVmuMSBkypjBJyYgHgvrqFgjwmKiCBTYt9C15xNnJjUfkRVkuSZTyNw==", "dependencies": { "accepts": "^1.3.8", "debug": "^4.3.4", - "ejs": "^3.1.9", "fast-safe-stringify": "^2.1.1", - "http-status": "^1.6.2", - "js2xmlparser": "^4.0.2", - "strong-globalize": "^6.0.5" + "handlebars": "^4.7.8", + "http-status": "^1.7.4", + "js2xmlparser": "^5.0.0", + "strong-globalize": "^6.0.6" }, "engines": { - "node": ">=10" + "node": ">=16" } }, "node_modules/strong-globalize": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/strong-globalize/-/strong-globalize-6.0.5.tgz", - "integrity": "sha512-7nfUli41TieV9/TSc0N62ve5Q4nfrpy/T0nNNy6TyD3vst79QWmeylCyd3q1gDxh8dqGEtabLNCdPQP1Iuvecw==", + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/strong-globalize/-/strong-globalize-6.0.6.tgz", + "integrity": "sha512-+mN0wTXBg9rLiKBk7jsyfXFWsg08q160XQcmJ3gNxSQ8wrC668dzR8JUp/wcK3NZ2eQ5h5tvc8O6Y+FC0D61lw==", "dependencies": { "accept-language": "^3.0.18", "debug": "^4.2.0", @@ -6769,9 +7857,10 @@ } }, "node_modules/superagent": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-8.1.1.tgz", - "integrity": "sha512-5jVAXxfqR15KFq3trY7q0ySvzXWPsnkWgzoUkfgxeFDMPSFhsdnko9RQ/vBo3JLOcMErLReBFZQJNmH6y9IM3A==", + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-8.1.2.tgz", + "integrity": "sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==", + "deprecated": "Please upgrade to v9.0.0+ as we have fixed a public vulnerability with formidable dependency. Note that v9.0.0+ requires Node.js v14.18.0+. See https://github.com/ladjs/superagent/pull/1800 for insight. This project is supported and maintained by the team at Forward Email @ https://forwardemail.net", "dev": true, "dependencies": { "component-emitter": "^1.3.0", @@ -6802,13 +7891,13 @@ } }, "node_modules/supertest": { - "version": "6.3.3", - "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.3.3.tgz", - "integrity": "sha512-EMCG6G8gDu5qEqRQ3JjjPs6+FYT1a7Hv5ApHvtSghmOFJYtsU5S+pSb6Y2EUeCEY3CmEL3mmQ8YWlPOzQomabA==", + "version": "6.3.4", + "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.3.4.tgz", + "integrity": "sha512-erY3HFDG0dPnhw4U+udPfrzXa4xhSG+n4rxfRuZWCUvjFWwKl+OxWf/7zk50s84/fAAs7vf5QAb9uRa0cCykxw==", "dev": true, "dependencies": { "methods": "^1.1.2", - "superagent": "^8.0.5" + "superagent": "^8.1.2" }, "engines": { "node": ">=6.4.0" @@ -6826,9 +7915,9 @@ } }, "node_modules/swagger-ui-dist": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-5.1.1.tgz", - "integrity": "sha512-qGHwN3/k+7seRIuGYdQ3LbJu7jxJezGPuB81ihEc6N36VuWbOdSeVARVmxJEweaYnzz0NXVbLQSWDqXiOj8VFQ==" + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-5.11.0.tgz", + "integrity": "sha512-j0PIATqQSEFGOLmiJOJZj1X1Jt6bFIur3JpY7+ghliUnfZs0fpWDdHEkn9q7QUlBtKbkn6TepvSxTqnE8l3s0A==" }, "node_modules/test-exclude": { "version": "6.0.0", @@ -6844,6 +7933,16 @@ "node": ">=8" } }, + "node_modules/test-exclude/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/test-exclude/node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -6864,6 +7963,18 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/test-exclude/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -6885,6 +7996,17 @@ "globrex": "^0.1.2" } }, + "node_modules/tmp": { + "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" + }, + "engines": { + "node": ">=0.6.0" + } + }, "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -6898,7 +8020,6 @@ "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" }, @@ -6920,17 +8041,37 @@ "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==" }, "node_modules/traverse": { - "version": "0.6.7", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.7.tgz", - "integrity": "sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg==", + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.9.tgz", + "integrity": "sha512-7bBrcF+/LQzSgFmT0X5YclVqQxtv7TDJ1f8Wj7ibBu/U6BMLeOpUxuZjV7rMc44UtKxlnMFigdhFAIszSX1DMg==", + "dependencies": { + "gopd": "^1.0.1", + "typedarray.prototype.slice": "^1.0.3", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/ts-api-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "dev": true, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, "node_modules/tsc-watch": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/tsc-watch/-/tsc-watch-6.0.4.tgz", - "integrity": "sha512-cHvbvhjO86w2aGlaHgSCeQRl+Aqw6X6XN4sQMPZKF88GoP30O+oTuh5lRIJr5pgFWrRpF1AgXnJJ2DoFEIPHyg==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tsc-watch/-/tsc-watch-6.2.0.tgz", + "integrity": "sha512-2LBhf9kjKXnz7KQ/puLHlozMzzUNHAdYBNMkg3eksQJ9GBAgMg8czznM83T5PmsoUvDnXzfIeQn2lNcIYDr8LA==", "dev": true, "dependencies": { "cross-spawn": "^7.0.3", @@ -6949,30 +8090,9 @@ } }, "node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==" - }, - "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 + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/type-check": { "version": "0.4.0", @@ -7019,6 +8139,75 @@ "node": ">= 0.6" } }, + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", @@ -7028,6 +8217,25 @@ "is-typedarray": "^1.0.0" } }, + "node_modules/typedarray.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typedarray.prototype.slice/-/typedarray.prototype.slice-1.0.3.tgz", + "integrity": "sha512-8WbVAQAUlENo1q3c3zZYuy5k9VzBQvp8AX9WOtbvyWlLM1v5JaSRmjubLjzHF4JFtptjH/5c/i95yaElvcjC0A==", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-errors": "^1.3.0", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-offset": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/typescript": { "version": "5.1.6", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", @@ -7041,6 +8249,32 @@ "node": ">=14.17" } }, + "node_modules/uglify-js": { + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "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/undici": { "version": "5.28.4", "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", @@ -7052,11 +8286,15 @@ "node": ">=14.0" } }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true, + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "engines": { "node": ">= 10.0.0" } @@ -7070,9 +8308,9 @@ } }, "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==", + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", + "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", "dev": true, "funding": [ { @@ -7089,8 +8327,8 @@ } ], "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.1.2", + "picocolors": "^1.0.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -7137,9 +8375,13 @@ } }, "node_modules/uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], "bin": { "uuid": "dist/bin/uuid" } @@ -7150,9 +8392,9 @@ "integrity": "sha512-OdmXxA8rDsQ7YpNVbKSJkNzTw2I+S5WsbMDnCtIWSQaosNAcWtFuI/YK1TjzUI6nbkgiqEyh8gWngfcv8Asd9A==" }, "node_modules/validator": { - "version": "13.11.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.11.0.tgz", - "integrity": "sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==", + "version": "13.12.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.12.0.tgz", + "integrity": "sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==", "engines": { "node": ">= 0.10" } @@ -7179,12 +8421,59 @@ "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==", + "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-module": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", "dev": true }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==" + }, "node_modules/workerpool": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", @@ -7350,6 +8639,15 @@ "sprintf-js": "~1.0.2" } }, + "node_modules/yamljs/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/yamljs/node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -7369,6 +8667,17 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/yamljs/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", diff --git a/showcase/package.json b/showcase/package.json index 0cf3380..2d4afea 100644 --- a/showcase/package.json +++ b/showcase/package.json @@ -9,10 +9,11 @@ "main": "dist/index.js", "types": "dist/index.d.ts", "engines": { - "node": "14 || 16 || 17 || 18" + "node": ">=20" }, "scripts": { - "build": "lb-tsc", + "tsc": "lb-tsc", + "build": "npm run clean && npm run tsc", "build:watch": "lb-tsc --watch", "pretest": "npm run rebuild", "test": "lb-mocha --allow-console-logs \"dist/__tests__\"", @@ -49,13 +50,13 @@ "@loopback/rest-explorer": "^6.1.1", "@loopback/service-proxy": "^6.1.1", "lbx-jwt": "file:..", - "loopback-connector-mysql": "^5.4.4", + "loopback-connector-mysql": "^7.0.9", "tslib": "^2.0.0" }, "devDependencies": { "@loopback/build": "^10.1.1", "@loopback/testlab": "^6.1.1", - "@types/node": "^16.18.38", + "@types/node": "^20.5.0", "source-map-support": "^0.5.21", "tsc-watch": "^6.0.4", "typescript": "~5.1.6" diff --git a/showcase/src/application.ts b/showcase/src/application.ts index ed2255b..bd44b73 100644 --- a/showcase/src/application.ts +++ b/showcase/src/application.ts @@ -6,8 +6,8 @@ import { RestApplication } from '@loopback/rest'; import { ServiceMixin } from '@loopback/service-proxy'; import path from 'path'; import { MySequence } from './sequence'; -import { BaseUserRepository, CredentialsRepository, LbxJwtBindings, LbxJwtComponent, RefreshTokenRepository, PasswordResetTokenRepository, LbxJwtAuthController } from 'lbx-jwt'; -import { MailService } from './services'; +import { BaseUserRepository, CredentialsRepository, LbxJwtBindings, LbxJwtComponent, RefreshTokenRepository, PasswordResetTokenRepository, LbxJwtAuthController, BiometricCredentialsRepository } from 'lbx-jwt'; +import { BiometricCredentialsService, MailService } from './services'; import { AuthenticationComponent } from '@loopback/authentication'; import { AuthorizationBindings, AuthorizationComponent, AuthorizationDecision, AuthorizationOptions } from '@loopback/authorization'; @@ -37,8 +37,10 @@ export class ShowcaseApplication extends BootMixin(ServiceMixin(RepositoryMixin( this.bind(LbxJwtBindings.ACCESS_TOKEN_SECRET).to('JwtS3cr3t'); this.bind(LbxJwtBindings.REFRESH_TOKEN_SECRET).to('JwtR3fr3shS3cr3t'); this.bind(LbxJwtBindings.MAIL_SERVICE).toClass(MailService); + this.bind(LbxJwtBindings.BIOMETRIC_CREDENTIALS_SERVICE).toClass(BiometricCredentialsService); this.repository(BaseUserRepository); this.repository(CredentialsRepository); + this.repository(BiometricCredentialsRepository); this.repository(RefreshTokenRepository); this.repository(PasswordResetTokenRepository); this.controller(LbxJwtAuthController); diff --git a/showcase/src/controllers/register.controller.ts b/showcase/src/controllers/register.controller.ts index 55241df..b36e9f3 100644 --- a/showcase/src/controllers/register.controller.ts +++ b/showcase/src/controllers/register.controller.ts @@ -55,7 +55,7 @@ export class RegisterController { // eslint-disable-next-line typescript/typedef const transaction = await this.dataSource.beginTransaction(IsolationLevel.READ_COMMITTED); try { - const baseUser: Omit, DefaultEntityOmitKeys | 'credentials' | 'id'> = { + const baseUser: Omit, DefaultEntityOmitKeys | 'credentials' | 'biometricCredentials' | 'id'> = { email: newUser.email, roles: [Roles.USER] }; @@ -68,7 +68,8 @@ export class RegisterController { return { id: finishedBaseUser.id, email: finishedBaseUser.email, - roles: finishedBaseUser.roles + roles: finishedBaseUser.roles, + biometricCredentials: [] }; } catch (error) { diff --git a/showcase/src/controllers/test.controller.ts b/showcase/src/controllers/test.controller.ts index 8528b67..dbe2b7d 100644 --- a/showcase/src/controllers/test.controller.ts +++ b/showcase/src/controllers/test.controller.ts @@ -2,7 +2,7 @@ import { authenticate } from '@loopback/authentication'; import { authorize } from '@loopback/authorization'; import { inject } from '@loopback/core'; import { repository } from '@loopback/repository'; -import { get, HttpErrors } from '@loopback/rest'; +import { del, get, HttpErrors } from '@loopback/rest'; import { SecurityBindings } from '@loopback/security'; import { BaseUser, BaseUserProfile, BaseUserRepository, roleAuthorization } from 'lbx-jwt'; import { Roles } from '../models/roles.enum'; @@ -14,7 +14,7 @@ export class TestController { constructor( @repository(BaseUserRepository) private readonly userRepository: BaseUserRepository - ) {} + ) { } @authenticate('jwt') @get('me') @@ -42,4 +42,13 @@ export class TestController { async getAdminData(): Promise { return 'secret admin data'; } + + @authenticate('jwt') + @del('/all-biometric-credentials') + async deleteAll( + @inject(SecurityBindings.USER) + userProfile: BaseUserProfile + ): Promise { + await this.userRepository.biometricCredentials(userProfile.id).delete(); + } } \ No newline at end of file diff --git a/showcase/src/services/biometric-credentials.service.ts b/showcase/src/services/biometric-credentials.service.ts new file mode 100644 index 0000000..9388cf8 --- /dev/null +++ b/showcase/src/services/biometric-credentials.service.ts @@ -0,0 +1,12 @@ +import { BindingScope, bind } from '@loopback/core'; +import { BaseBiometricCredentialsService } from 'lbx-jwt'; + +@bind({ scope: BindingScope.TRANSIENT }) +export class BiometricCredentialsService extends BaseBiometricCredentialsService { + protected readonly RP_NAME: string = 'Test'; + protected readonly RP_DOMAIN: string = 'localhost'; + + protected get RP_ORIGIN(): string { + return `http://${this.RP_DOMAIN}:4200`; + } +} \ No newline at end of file diff --git a/showcase/src/services/index.ts b/showcase/src/services/index.ts index 16fcb1a..ab1089a 100644 --- a/showcase/src/services/index.ts +++ b/showcase/src/services/index.ts @@ -1 +1,2 @@ -export * from './mail.service'; \ No newline at end of file +export * from './mail.service'; +export * from './biometric-credentials.service'; \ No newline at end of file diff --git a/src/__tests__/fixtures/biometric-credentials-service.fixture.ts b/src/__tests__/fixtures/biometric-credentials-service.fixture.ts new file mode 100644 index 0000000..4def5e4 --- /dev/null +++ b/src/__tests__/fixtures/biometric-credentials-service.fixture.ts @@ -0,0 +1,9 @@ +/* eslint-disable jsdoc/require-jsdoc */ +import { BaseBiometricCredentialsService } from '../../services'; + +export class BiometricCredentialsService extends BaseBiometricCredentialsService { + protected override readonly RP_NAME: string = 'localhost'; + protected override readonly RP_DOMAIN: string = 'localhost'; +} + +export const testBiometricCredentialsService: BiometricCredentialsService = new BiometricCredentialsService(); \ No newline at end of file diff --git a/src/__tests__/fixtures/db.fixture.ts b/src/__tests__/fixtures/db.fixture.ts new file mode 100644 index 0000000..14cfd43 --- /dev/null +++ b/src/__tests__/fixtures/db.fixture.ts @@ -0,0 +1,41 @@ +import { inject, lifeCycleObserver, LifeCycleObserver } from '@loopback/core'; +import { juggler } from '@loopback/repository'; + +const config: object = { + name: 'db', + connector: 'mysql', + url: '', + host: '127.0.0.1', + port: 3306, + user: 'lbx_jwt_user', + password: 'lbx_jwt_password', + database: 'lbx_jwt' +}; + +/** + * Connection to a mysql database. + */ +@lifeCycleObserver('datasource') +export class DbDataSource extends juggler.DataSource implements LifeCycleObserver { + /** + * The name of the datasource. + * Needed by loopback internally. + */ + static dataSourceName: string = 'db'; + /** + * The default configuration to use when nothing was provided. + */ + static readonly defaultConfig: object = config; + + constructor( + @inject('datasources.config.db', { optional: true }) + dsConfig: object = config + ) { + super(dsConfig); + } +} + +/** + * Database used for testing. This is a mysql connection to test transactions. + */ +export const testDb: DbDataSource = new DbDataSource(); \ No newline at end of file diff --git a/src/__tests__/fixtures/helpers.ts b/src/__tests__/fixtures/helpers.ts index a0a8fa1..15bd6b8 100644 --- a/src/__tests__/fixtures/helpers.ts +++ b/src/__tests__/fixtures/helpers.ts @@ -1,3 +1,19 @@ +/* eslint-disable cspell/spellchecker */ +import { IsolationLevel, juggler } from '@loopback/repository'; +import { expect } from '@loopback/testlab'; + +import { testBiometricCredentialsService } from './biometric-credentials-service.fixture'; +import { testDb } from './db.fixture'; +import { testUserRepository, testCredentialsRepository, testPasswordResetTokenRepository, testRefreshTokenRepository, testBiometricCredentialsRepository } from './repositories.fixture'; +import { TestRoles } from './roles.fixture'; +import { BiometricRegistrationOptions } from '../../controllers'; +import { BiometricRegistrationResponse } from '../../controllers/auth/biometric/biometric-registration-response.model'; +import { VerifiedBiometricRegistration } from '../../controllers/auth/biometric/verified-biometric-registration.model'; +import { BcryptUtilities } from '../../encapsulation/bcrypt.utilities'; +import { Base64UrlString } from '../../encapsulation/webauthn.utilities'; +import { BaseUser, BiometricCredentials, Credentials } from '../../models'; +import { DefaultEntityOmitKeys } from '../../types'; + /** * Sleeps for the given amount of milliseconds. * You need to await this to work. @@ -5,5 +21,121 @@ * @returns When the time has passed. */ export async function sleep(ms: number): Promise { - return new Promise(resolve => setTimeout(resolve, ms) ); + return new Promise(resolve => setTimeout(resolve, ms)); +} + +/** + * Deletes everything in the test database. + */ +export async function clearDatabase(): Promise { + await testUserRepository.deleteAll(); + await testCredentialsRepository.deleteAll(); + await testBiometricCredentialsRepository.deleteAll(); + await testPasswordResetTokenRepository.deleteAll(); + await testRefreshTokenRepository.deleteAll(); +} + +/** + * Creates an example user with the email 'user@example.com', the password 'stringstring' and the Roles [TestRoles.USER]. + * @returns The created user. + */ +export async function createExampleUser(): Promise, DefaultEntityOmitKeys | 'credentials'>> { + const transaction: juggler.Transaction = await testDb.beginTransaction(IsolationLevel.READ_COMMITTED); + try { + const baseUser: Omit, DefaultEntityOmitKeys | 'credentials' | 'biometricCredentials' | 'id'> = { + email: 'user@example.com', + roles: [TestRoles.USER] + }; + const finishedBaseUser: BaseUser = await testUserRepository.create(baseUser, { transaction: transaction }); + const credentials: Omit = { + password: await BcryptUtilities.hash('stringstring') + }; + await testUserRepository.credentials(finishedBaseUser.id).create(credentials, { transaction: transaction }); + await transaction.commit(); + return { + id: finishedBaseUser.id, + email: finishedBaseUser.email, + roles: finishedBaseUser.roles, + biometricCredentials: [] + }; + } + catch (error) { + await transaction.rollback(); + throw error; + } +} + +/** + * Registers a biometric credential for the provided user. + * @param user - The user to generate the credential for. + */ +export async function registerBiometricCredential(user: Omit, DefaultEntityOmitKeys | 'credentials'>): Promise { + const options: BiometricRegistrationOptions = await testBiometricCredentialsService.generateRegistrationOptions( + user.email, + user.biometricCredentials ?? [] + ); + expect(options.user.name).to.equal(user.email); + expect(options.attestation).to.equal('none'); + expect(options.authenticatorSelection?.userVerification).to.equal('preferred'); + expect(options.challenge).to.be.not.undefined(); + expect(options.rp.name).to.equal('localhost'); + expect(options.rp.id).to.equal('localhost'); + + const PENDING: string = 'PENDING'; + const credentials: Omit = { + challenge: options.challenge, + credentialId: PENDING as Base64UrlString, + publicKey: PENDING as Base64UrlString, + counter: 0 + }; + const pendingCredential: BiometricCredentials = await testUserRepository.biometricCredentials(user.id).create(credentials); + + const baseUser: BaseUser = await testUserRepository.findById(user.id, { include: [{ relation: 'biometricCredentials' }] }); + const existingBiometricCredential: BiometricCredentials | undefined = baseUser.biometricCredentials?.find(bc => { + return bc.challenge === pendingCredential.challenge + && bc.credentialId === PENDING + && bc.counter === 0 + && bc.publicKey === PENDING; + }); + + expect(existingBiometricCredential).to.not.be.undefined(); + + const mockRegistrationResponse: BiometricRegistrationResponse = { + id: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9' as Base64UrlString, + rawId: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9' as Base64UrlString, + response: { + clientDataJSON: btoa(JSON.stringify({ + type: 'webauthn.create', + challenge: options.challenge, + origin: 'https://localhost', + crossOrigin: false + })) as Base64UrlString, + // eslint-disable-next-line stylistic/max-len + attestationObject: 'o2NmbXRkbW9ja2dhdHRTdG10oGhhdXRoRGF0YVkBJkmWDeWIDoxodDQXD2R2YFuP5K65ooYyx5lc87qDHZdjQQAAAAAAAAAAAAAAAAAAAAAAAAAAAKIACKLdXqwahqjNbtNs1piUlonluvxOsF9Feeh9k7qXay5zdrm239cW4WQUD_l5ptTzRLU9bSbghnv0FLaRA7tly7La9_QRKDXwZMsbWajlhKQh2ovYnjh6C37qtyPs151ITDFr-67FRgG0c2dJCoOa2hQB8z0tJYuXrkGMpVk0ZSn1qjfeYxJ1V9BDRsfN7r0lVC8sF_w5OJlSomw64qampRylAQIDJiABIVgguxHN3W6ehp0VWXKaMNie1J82MVJCFZYScau74o17cx8iWCDb1jkTLi7lYZZbgwUwpqAk8QmIiPMTVQUVkhGEyGrKww==' as Base64UrlString + }, + // authenticatorAttachment: 'cross-platform', + clientExtensionResults: {}, + type: 'public-key' + }; + + try { + const res: VerifiedBiometricRegistration = await testBiometricCredentialsService.verifyRegistrationResponse( + mockRegistrationResponse, + existingBiometricCredential?.challenge + ); + + expect(res.verified).to.be.true(); + + if (res.verified && existingBiometricCredential) { + await testBiometricCredentialsRepository.updateById(existingBiometricCredential.id, { + credentialId: res.registrationInfo?.credentialID, + publicKey: res.registrationInfo?.credentialPublicKey, + counter: res.registrationInfo?.counter + }); + } + } + catch (error) { + // eslint-disable-next-line typescript/no-unsafe-member-access + expect(error.message).to.equal('User verification required, but user could not be verified'); + } } \ No newline at end of file diff --git a/src/__tests__/fixtures/mail-service.fixture.ts b/src/__tests__/fixtures/mail-service.fixture.ts new file mode 100644 index 0000000..f04e1be --- /dev/null +++ b/src/__tests__/fixtures/mail-service.fixture.ts @@ -0,0 +1,26 @@ +/* eslint-disable jsdoc/require-jsdoc */ +import { Transporter } from 'nodemailer'; + +import { TestRoles } from './roles.fixture'; +import { BaseMailService } from '../../services'; + +export class MailService extends BaseMailService { + + protected readonly WEBSERVER_MAIL: string = 'webserver@test.com'; + + protected readonly BASE_RESET_PASSWORD_LINK: string = 'http://localhost:4200/reset-password'; + + protected readonly webserverMailTransporter: Transporter; + + protected readonly PRODUCTION: boolean = false; + + protected readonly SAVED_EMAILS_PATH: string = './test-emails'; + + protected override readonly LOGO_HEADER_URL: string = 'https://via.placeholder.com/165x165'; + + protected override readonly LOGO_FOOTER_URL: string = 'https://via.placeholder.com/500x60'; + + protected readonly ADDRESS_LINES: string[] = ['my address', 'my name']; +} + +export const testMailService: MailService = new MailService(); \ No newline at end of file diff --git a/src/__tests__/fixtures/repositories.fixture.ts b/src/__tests__/fixtures/repositories.fixture.ts new file mode 100644 index 0000000..19a0b06 --- /dev/null +++ b/src/__tests__/fixtures/repositories.fixture.ts @@ -0,0 +1,16 @@ +/* eslint-disable stylistic/max-len */ +/* eslint-disable jsdoc/require-jsdoc */ +import { Getter } from '@loopback/core'; + +import { testDb } from './db.fixture'; +import { TestRoles } from './roles.fixture'; +import { BaseUserRepository, BiometricCredentialsRepository, CredentialsRepository, PasswordResetTokenRepository, RefreshTokenRepository } from '../../repositories'; + +export const testCredentialsRepository: CredentialsRepository = new CredentialsRepository(testDb); +const credentialsRepositoryGetter: Getter = async () => testCredentialsRepository; +export const testBiometricCredentialsRepository: BiometricCredentialsRepository = new BiometricCredentialsRepository(testDb); +const biometricCredentialsRepositoryGetter: Getter = async () => testBiometricCredentialsRepository; +export const testUserRepository: BaseUserRepository = new BaseUserRepository(testDb, credentialsRepositoryGetter, biometricCredentialsRepositoryGetter); +const baseUserRepositoryGetter: Getter> = async () => testUserRepository; +export const testPasswordResetTokenRepository: PasswordResetTokenRepository = new PasswordResetTokenRepository(testDb, baseUserRepositoryGetter); +export const testRefreshTokenRepository: RefreshTokenRepository = new RefreshTokenRepository(testDb); \ No newline at end of file diff --git a/src/__tests__/fixtures/roles.fixture.ts b/src/__tests__/fixtures/roles.fixture.ts new file mode 100644 index 0000000..e1a0351 --- /dev/null +++ b/src/__tests__/fixtures/roles.fixture.ts @@ -0,0 +1,5 @@ +/* eslint-disable jsdoc/require-jsdoc */ +export enum TestRoles { + USER = 'user', + ADMIN = 'admin' +} \ No newline at end of file diff --git a/src/__tests__/fixtures/services.fixture.ts b/src/__tests__/fixtures/services.fixture.ts new file mode 100644 index 0000000..9e798f8 --- /dev/null +++ b/src/__tests__/fixtures/services.fixture.ts @@ -0,0 +1,28 @@ +/* eslint-disable jsdoc/require-jsdoc */ +import { testBiometricCredentialsService } from './biometric-credentials-service.fixture'; +import { testDb } from './db.fixture'; +import { testMailService } from './mail-service.fixture'; +import { testBiometricCredentialsRepository, testPasswordResetTokenRepository, testRefreshTokenRepository, testUserRepository } from './repositories.fixture'; +import { TestRoles } from './roles.fixture'; +import { AccessTokenService, BaseUserService, RefreshTokenService } from '../../services'; + +export const testUserService: BaseUserService = new BaseUserService( + testUserRepository, + testPasswordResetTokenRepository, + 300000, + testDb, + testMailService, + testBiometricCredentialsService, + testBiometricCredentialsRepository +); +export const testAccessTokenService: AccessTokenService = new AccessTokenService('accessSecret', 3600000); +export const testRefreshTokenService: RefreshTokenService = new RefreshTokenService( + 'refreshSecret', + 8640000000, + 'api', + testUserRepository, + testRefreshTokenRepository, + testUserService, + testAccessTokenService, + 3600000 +); \ No newline at end of file diff --git a/src/__tests__/fixtures/test-db.datasource.ts b/src/__tests__/fixtures/test-db.datasource.ts deleted file mode 100644 index 1e6ed81..0000000 --- a/src/__tests__/fixtures/test-db.datasource.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { juggler } from '@loopback/repository'; - -/** - * An in memory database used for testing. - */ -export const testDb: juggler.DataSource = new juggler.DataSource({ - name: 'db', - connector: 'memory' -}); \ No newline at end of file diff --git a/src/__tests__/unit/base-mail.service.test.ts b/src/__tests__/unit/base-mail.service.test.ts index 65f098f..ee8dcd3 100644 --- a/src/__tests__/unit/base-mail.service.test.ts +++ b/src/__tests__/unit/base-mail.service.test.ts @@ -7,7 +7,6 @@ import { BaseUser, PasswordResetToken } from '../../models'; import { BaseMailService } from '../../services'; import { DefaultEntityOmitKeys } from '../../types'; - class MailService extends BaseMailService { protected readonly WEBSERVER_MAIL: string = 'webserver@test.com'; @@ -34,7 +33,8 @@ describe('BaseMailService', () => { const userData: Omit, DefaultEntityOmitKeys | 'credentials'> = { id: '1', email: 'user@test.com', - roles: [] + roles: [], + biometricCredentials: [] }; const user: BaseUser = new BaseUser(userData); const resetTokenData: Omit = { @@ -46,7 +46,7 @@ describe('BaseMailService', () => { const resetToken: PasswordResetToken = new PasswordResetToken(resetTokenData); await mailService.sendResetPasswordMail(user, resetToken); - const createdEmail: string = readFileSync('./test-emails/PasswordReset.test.html', { encoding: 'utf-8' }); + const createdEmail: string = readFileSync('./test-emails/PasswordReset.test.html', { encoding: 'utf8' }); expect(createdEmail).to.containEql('href="http://localhost:4200/reset-password/my-great-token"'); expect(createdEmail).to.containEql('Password Reset'); diff --git a/src/__tests__/unit/base-user.service.test.ts b/src/__tests__/unit/base-user.service.test.ts index 3a1019d..cd24b7f 100644 --- a/src/__tests__/unit/base-user.service.test.ts +++ b/src/__tests__/unit/base-user.service.test.ts @@ -4,20 +4,17 @@ import { DefaultHasOneRepository, HasOneRepository, juggler } from '@loopback/re import { HttpErrors } from '@loopback/rest'; import { securityId } from '@loopback/security'; import { SinonSpy, StubbedInstanceWithSinonAccessor, createStubInstance, expect, sinon } from '@loopback/testlab'; -import { Transporter } from 'nodemailer'; import { RequestResetPasswordGrant } from '../../controllers/auth/request-reset-password-grant.model'; import { BcryptUtilities } from '../../encapsulation/bcrypt.utilities'; import { BaseUser, BaseUserProfile, Credentials, PasswordResetToken } from '../../models'; import { BaseUserRepository, CredentialsRepository, PasswordResetTokenRepository } from '../../repositories'; -import { BaseMailService, BaseUserService } from '../../services'; +import { BaseUserService } from '../../services'; import { DefaultEntityOmitKeys } from '../../types'; - - -enum Roles { - USER = 'user', - ADMIN = 'admin' -} +import { testBiometricCredentialsService } from '../fixtures/biometric-credentials-service.fixture'; +import { MailService } from '../fixtures/mail-service.fixture'; +import { testBiometricCredentialsRepository } from '../fixtures/repositories.fixture'; +import { TestRoles } from '../fixtures/roles.fixture'; const testDb: StubbedInstanceWithSinonAccessor = createStubInstance(juggler.DataSource); const transaction: juggler.Transaction = { @@ -30,42 +27,22 @@ const transaction: juggler.Transaction = { }; testDb.stubs.beginTransaction.resolves(transaction); - -class MailService extends BaseMailService { - - protected readonly WEBSERVER_MAIL: string = 'webserver@test.com'; - - protected readonly BASE_RESET_PASSWORD_LINK: string = 'http://localhost:4200/reset-password'; - - protected readonly webserverMailTransporter: Transporter; - - protected readonly PRODUCTION: boolean = false; - - protected readonly SAVED_EMAILS_PATH: string = './test-emails'; - - protected override readonly LOGO_HEADER_URL: string = 'https://via.placeholder.com/165x165'; - - protected override readonly LOGO_FOOTER_URL: string = 'https://via.placeholder.com/500x60'; - - protected readonly ADDRESS_LINES: string[] = ['my address', 'my name']; -} - - -const baseUserRepository: StubbedInstanceWithSinonAccessor> = createStubInstance(BaseUserRepository) as StubbedInstanceWithSinonAccessor>; +const baseUserRepository: StubbedInstanceWithSinonAccessor> = createStubInstance(BaseUserRepository) as StubbedInstanceWithSinonAccessor>; const credentialsRepository: StubbedInstanceWithSinonAccessor = createStubInstance(CredentialsRepository); -const passwordResetTokenRepository: StubbedInstanceWithSinonAccessor> = createStubInstance(PasswordResetTokenRepository); +const passwordResetTokenRepository: StubbedInstanceWithSinonAccessor> = createStubInstance(PasswordResetTokenRepository); const mailService: MailService = new MailService(); -const baseUserService: BaseUserService = new BaseUserService(baseUserRepository, passwordResetTokenRepository, 300000, testDb, mailService); +const baseUserService: BaseUserService = new BaseUserService(baseUserRepository, passwordResetTokenRepository, 300000, testDb, mailService, testBiometricCredentialsService, testBiometricCredentialsRepository); describe('BaseUserService', () => { it('verifyCredentials', async () => { - const createBaseUserResult: BaseUser = { + const createBaseUserResult: BaseUser = { id: '1', + // eslint-disable-next-line sonar/no-duplicate-string email: 'user@example.com', - roles: [Roles.USER], - roleValues: Object.values(Roles), + roles: [TestRoles.USER], + roleValues: Object.values(TestRoles), getId: () => '1', getIdObject: () => '1', toJSON: () => '', @@ -83,11 +60,11 @@ describe('BaseUserService', () => { return {}; } } - } as unknown as BaseUser; + } as unknown as BaseUser; baseUserRepository.stubs.create.resolves(createBaseUserResult); - const user: BaseUser = await baseUserRepository.create({ + const user: BaseUser = await baseUserRepository.create({ email: 'user@example.com', - roles: [Roles.USER] + roles: [TestRoles.USER] }); const createCredentialsResult: Credentials = { @@ -112,7 +89,7 @@ describe('BaseUserService', () => { const credentialsHasOneRepository: StubbedInstanceWithSinonAccessor> = createStubInstance(DefaultHasOneRepository); credentialsHasOneRepository.stubs.get.resolves(credentials); (baseUserRepository.stubs.credentials as unknown) = () => credentialsHasOneRepository; - const userFromVerifiedCredentials: BaseUser = await baseUserService.verifyCredentials({ + const userFromVerifiedCredentials: BaseUser = await baseUserService.verifyCredentials({ email: 'user@example.com', password: 'password', toJSON: () => '', @@ -137,28 +114,28 @@ describe('BaseUserService', () => { }); it('convertToUserProfile', () => { - const user: Omit, DefaultEntityOmitKeys | 'credentials'> = { + const user: Omit, DefaultEntityOmitKeys | 'credentials' | 'biometricCredentials'> = { id: '1', email: 'user@example.com', - roles: [Roles.USER] + roles: [TestRoles.USER] }; - const userProfile: BaseUserProfile = baseUserService.convertToUserProfile(user as BaseUser); + const userProfile: BaseUserProfile = baseUserService.convertToUserProfile(user as BaseUser); expect(userProfile).to.eql({ [securityId]: '1', id: '1', email: 'user@example.com', - roles: [Roles.USER] + roles: [TestRoles.USER] }); }); it('requestResetPassword', async () => { const mailSpy: SinonSpy = sinon.spy(mailService, 'sendResetPasswordMail'); - const user: Omit, DefaultEntityOmitKeys | 'credentials'> = { + const user: Omit, DefaultEntityOmitKeys | 'credentials' | 'biometricCredentials'> = { id: '1', email: 'user@example.com', - roles: [Roles.USER] + roles: [TestRoles.USER] }; - baseUserRepository.stubs.findOne.resolves(user as BaseUser); + baseUserRepository.stubs.findOne.resolves(user as BaseUser); const createPasswordResetTokenResult: Omit = { id: '1', expirationDate: new Date(Date.now() + 300000), diff --git a/src/__tests__/unit/biometric-credentials.service.test.ts b/src/__tests__/unit/biometric-credentials.service.test.ts new file mode 100644 index 0000000..e20d177 --- /dev/null +++ b/src/__tests__/unit/biometric-credentials.service.test.ts @@ -0,0 +1,22 @@ +import { expect } from '@loopback/testlab'; + +import { BaseUser, BiometricCredentials } from '../../models'; +import { DefaultEntityOmitKeys } from '../../types'; +import { clearDatabase, createExampleUser, registerBiometricCredential } from '../fixtures/helpers'; +import { testUserRepository } from '../fixtures/repositories.fixture'; +import { TestRoles } from '../fixtures/roles.fixture'; + +let exampleUser: Omit, DefaultEntityOmitKeys | 'credentials'>; + +describe('BiometricCredentialsService', () => { + before(async () => { + await clearDatabase(); + exampleUser = await createExampleUser(); + await registerBiometricCredential(exampleUser); + }); + + it('should have a biometric credential registered correctly', async () => { + const credentials: BiometricCredentials[] = await testUserRepository.biometricCredentials(exampleUser.id).find(); + expect(credentials.length).to.equal(1); + }); +}); \ No newline at end of file diff --git a/src/__tests__/unit/refresh-token.service.test.ts b/src/__tests__/unit/refresh-token.service.test.ts index 3dc7cbe..b382aba 100644 --- a/src/__tests__/unit/refresh-token.service.test.ts +++ b/src/__tests__/unit/refresh-token.service.test.ts @@ -1,179 +1,141 @@ -import { juggler } from '@loopback/repository'; +import { IsolationLevel, juggler } from '@loopback/repository'; import { HttpErrors } from '@loopback/rest'; import { securityId } from '@loopback/security'; -import { createStubInstance, expect, sinon, StubbedInstanceWithSinonAccessor } from '@loopback/testlab'; -import { Transporter } from 'nodemailer'; +import { SinonSpy, expect, sinon } from '@loopback/testlab'; -import { BaseUser, BaseUserProfile, RefreshTokenWithRelations } from '../../models'; -import { BaseUserRepository, PasswordResetTokenRepository, RefreshTokenRepository } from '../../repositories'; -import { AccessTokenService, BaseMailService, BaseUserService, RefreshTokenService } from '../../services'; +import { AuthData } from '../../controllers'; +import { EncodedJwt, JwtUtilities } from '../../encapsulation/jwt.utilities'; +import { BaseUser, BaseUserProfile, RefreshToken, RefreshTokenWithRelations } from '../../models'; import { DefaultEntityOmitKeys, TokenObject } from '../../types'; -import { sleep } from '../fixtures/helpers'; +import { testDb } from '../fixtures/db.fixture'; +import { clearDatabase, createExampleUser, sleep } from '../fixtures/helpers'; +import { testRefreshTokenRepository, testUserRepository } from '../fixtures/repositories.fixture'; +import { TestRoles } from '../fixtures/roles.fixture'; +import { testAccessTokenService, testRefreshTokenService } from '../fixtures/services.fixture'; - -enum Roles { - USER = 'user', - ADMIN = 'admin' -} - - -class MailService extends BaseMailService { - - protected readonly WEBSERVER_MAIL: string = 'webserver@test.com'; - - protected readonly BASE_RESET_PASSWORD_LINK: string = 'http://localhost:4200/reset-password'; - - protected readonly webserverMailTransporter: Transporter; - - protected readonly PRODUCTION: boolean = false; - - protected readonly SAVED_EMAILS_PATH: string = './test-emails'; - - protected override readonly LOGO_HEADER_URL: string = 'https://via.placeholder.com/165x165'; - - protected override readonly LOGO_FOOTER_URL: string = 'https://via.placeholder.com/500x60'; - - protected readonly ADDRESS_LINES: string[] = ['my address', 'my name']; -} - -const testDb: StubbedInstanceWithSinonAccessor = createStubInstance(juggler.DataSource); -const transaction: juggler.Transaction = { - commit: async () => { - return; - }, - rollback: async () => { - return; - } -}; -testDb.stubs.beginTransaction.resolves(transaction); - - -const baseUserRepository: StubbedInstanceWithSinonAccessor> = createStubInstance(BaseUserRepository) as StubbedInstanceWithSinonAccessor>; - -const passwordResetTokenRepository: StubbedInstanceWithSinonAccessor> = createStubInstance(PasswordResetTokenRepository); -const refreshTokenRepository: StubbedInstanceWithSinonAccessor = createStubInstance(RefreshTokenRepository); -const mailService: MailService = new MailService(); - -const userService: BaseUserService = new BaseUserService(baseUserRepository, passwordResetTokenRepository, 300000, testDb, mailService); -const accessTokenService: AccessTokenService = new AccessTokenService('accessSecret', 3600000); - -const refreshTokenService: RefreshTokenService = new RefreshTokenService( - 'refreshSecret', - 8640000000, - 'api', - baseUserRepository, - refreshTokenRepository, - userService, - accessTokenService, - testDb, - 3600000 -); +let exampleUser: Omit, DefaultEntityOmitKeys | 'credentials'>; +let exampleUserProfile: BaseUserProfile; describe('RefreshTokenService', () => { - it('generateToken', async () => { - const userProfile: BaseUserProfile = { - [securityId]: '1', - id: '1', - email: 'user@example.com', - roles: [Roles.USER] + before(async () => { + await clearDatabase(); + exampleUser = await createExampleUser(); + exampleUserProfile = { + [securityId]: exampleUser.id, + id: exampleUser.id, + email: exampleUser.email, + roles: exampleUser.roles }; - const accessTokenValue: string = await accessTokenService.generateToken(userProfile); - await refreshTokenService.generateToken(userProfile, accessTokenValue); - sinon.assert.calledOnce(refreshTokenRepository.stubs.create); + }); + + it('generateToken', async () => { + const createSpy: SinonSpy = sinon.spy(testRefreshTokenRepository, 'create'); + const accessTokenValue: string = await testAccessTokenService.generateToken(exampleUserProfile); + await testRefreshTokenService.generateToken(exampleUserProfile, accessTokenValue); + sinon.assert.calledOnce(createSpy); }); it('refreshToken', async () => { - const userProfile: BaseUserProfile = { - [securityId]: '1', - id: '1', - email: 'user@example.com', - roles: [Roles.USER] - }; - const oldAccessTokenValue: string = await accessTokenService.generateToken(userProfile); - const oldRefreshTokenValue: string = (await refreshTokenService.generateToken(userProfile, oldAccessTokenValue)).refreshToken; - await sleep(1000); - const findRefreshTokenResult: Omit = { - id: '1', - baseUserId: '1', - tokenValue: 'jwt-refresh-token', - familyId: '1', - blacklisted: false, - expirationDate: new Date(Date.now() + 8640000000) - }; - const user: Omit, DefaultEntityOmitKeys | 'credentials'> = { - id: '1', - email: 'user@example.com', - roles: [Roles.USER] - }; + const oldAccessTokenValue: string = await testAccessTokenService.generateToken(exampleUserProfile); + const oldRefreshTokenValue: string = (await testRefreshTokenService.generateToken(exampleUserProfile, oldAccessTokenValue)).refreshToken; - refreshTokenRepository.stubs.findOne.resolves(findRefreshTokenResult as RefreshTokenWithRelations); - baseUserRepository.stubs.findById.resolves(user as BaseUser); + // we need to wait so that the time part in the new access token is different. + // (at least the seconds need to differ) + await sleep(1000); - const newTokenObject: TokenObject = await refreshTokenService.refreshToken(oldRefreshTokenValue); + const newTokenObject: TokenObject = await testRefreshTokenService.refreshToken(oldRefreshTokenValue); + // access tokens are not stored on the server, therefore they should always be freshly generated. expect(newTokenObject.accessToken).to.not.eql(oldAccessTokenValue); + // The refresh token is stored on the server. When the token is not expired it should be reused. expect(newTokenObject.refreshToken).to.eql(oldRefreshTokenValue); - findRefreshTokenResult.expirationDate = new Date(Date.now()); - await sleep(500); - refreshTokenRepository.stubs.findOne.resolves(findRefreshTokenResult as RefreshTokenWithRelations); + // make the refresh token expired + const refreshToken: RefreshToken | null = await testRefreshTokenRepository.findOne({ where: { baseUserId: exampleUser.id } }); + if (!refreshToken) { + throw new Error(`No refresh token found for user with id ${exampleUser.id}`); + } + await testRefreshTokenRepository.updateById(refreshToken.id, { expirationDate: new Date() }); - const newTokenObjectTwo: TokenObject = await refreshTokenService.refreshToken(oldRefreshTokenValue); + await sleep(1000); + + const newTokenObjectTwo: TokenObject = await testRefreshTokenService.refreshToken(oldRefreshTokenValue); expect(newTokenObjectTwo.accessToken).to.not.eql(oldAccessTokenValue); expect(newTokenObjectTwo.refreshToken).to.not.eql(oldRefreshTokenValue); - }); + }).timeout(5000); + + it('refreshToken with transactions', async () => { + const promises: Promise, DefaultEntityOmitKeys>>[] = []; + for (let i: number = 0; i < 100; i++) { + promises.push(refreshTokenWithTransaction()); + } + await Promise.all(promises); + }).timeout(5000); it('verifyToken', async () => { - const userProfile: BaseUserProfile = { - [securityId]: '1', - id: '1', - email: 'user@example.com', - roles: [Roles.USER] - }; - const accessTokenValue: string = await accessTokenService.generateToken(userProfile); - const refreshTokenValue: string = (await refreshTokenService.generateToken(userProfile, accessTokenValue)).refreshToken; - const findTokenResult: Omit = { - id: '1', - baseUserId: '1', - tokenValue: 'jwt-refresh-token', - familyId: '1', - blacklisted: false, - expirationDate: new Date(Date.now() + 8640000000) - }; - refreshTokenRepository.stubs.findOne.resolves(findTokenResult as RefreshTokenWithRelations); + const findOneSpy: SinonSpy = sinon.spy(testRefreshTokenRepository, 'findOne'); + const accessTokenValue: string = await testAccessTokenService.generateToken(exampleUserProfile); + const refreshTokenValue: string = (await testRefreshTokenService.generateToken(exampleUserProfile, accessTokenValue)).refreshToken; - const refreshToken: RefreshTokenWithRelations = await refreshTokenService.verifyToken(refreshTokenValue); + const refreshToken: RefreshTokenWithRelations = await testRefreshTokenService.verifyToken(refreshTokenValue); - sinon.assert.calledWithExactly(refreshTokenRepository.stubs.findOne, { where: { tokenValue: refreshTokenValue } }, undefined); - expect(refreshToken).to.eql(findTokenResult); + sinon.assert.calledWithExactly(findOneSpy, { where: { tokenValue: refreshTokenValue } }, undefined); + expect(refreshToken.baseUserId).to.eql(exampleUser.id); + expect(refreshToken.blacklisted).to.eql(false); + const expirationDate: Date = new Date(Date.now() + 8640000000); + expect(refreshToken.expirationDate.getDate()).to.eql(expirationDate.getDate()); + expect(refreshToken.expirationDate.getHours()).to.eql(expirationDate.getHours()); + expect(refreshToken.expirationDate.getMinutes()).to.eql(expirationDate.getMinutes()); const expectedError: HttpErrors.HttpError<401> = new HttpErrors.Unauthorized('Error verifying refresh token: invalid token'); - const INVALID_TOKEN: string = 'aaa.bbb.ccc'; - await expect(refreshTokenService.verifyToken(INVALID_TOKEN)).to.be.rejectedWith(expectedError); + const invalidToken: string = 'aaa.bbb.ccc'; + await expect(testRefreshTokenService.verifyToken(invalidToken)).to.be.rejectedWith(expectedError); + findOneSpy.restore(); }); it('revokeToken', async () => { - const userProfile: BaseUserProfile = { - [securityId]: '1', - id: '1', - email: 'user@example.com', - roles: [Roles.USER] - }; - const accessTokenValue: string = await accessTokenService.generateToken(userProfile); - const refreshTokenValue: string = (await refreshTokenService.generateToken(userProfile, accessTokenValue)).refreshToken; - const findTokenResult: Omit = { - id: '1', - baseUserId: '1', - tokenValue: 'jwt-refresh-token', - familyId: '1', - blacklisted: false, - expirationDate: new Date(Date.now() + 8640000000) - }; - refreshTokenRepository.stubs.findOne.resolves(findTokenResult as RefreshTokenWithRelations); - - await refreshTokenService.revokeTokenFamily(refreshTokenValue); - sinon.assert.calledWithExactly(refreshTokenRepository.stubs.findOne, { where: { tokenValue: refreshTokenValue } }); - sinon.assert.calledWithExactly(refreshTokenRepository.stubs.deleteAll, { familyId: '1' }); + const findOneSpy: SinonSpy = sinon.spy(testRefreshTokenRepository, 'findOne'); + const deleteAllSpy: SinonSpy = sinon.spy(testRefreshTokenRepository, 'deleteAll'); + const accessTokenValue: string = await testAccessTokenService.generateToken(exampleUserProfile); + const refreshTokenValue: string = (await testRefreshTokenService.generateToken(exampleUserProfile, accessTokenValue)).refreshToken; + await testRefreshTokenService.revokeTokenFamily(refreshTokenValue); + sinon.assert.calledOnceWithExactly(findOneSpy, { where: { tokenValue: refreshTokenValue } }); + sinon.assert.calledOnce(deleteAllSpy); + findOneSpy.restore(); }); -}); \ No newline at end of file +}); + +async function refreshTokenWithTransaction(): Promise, DefaultEntityOmitKeys>> { + const tempAccessToken: string = await testAccessTokenService.generateToken(exampleUserProfile); + const refreshGrantRefreshToken: string = (await testRefreshTokenService.generateToken(exampleUserProfile, tempAccessToken)).refreshToken; + + await sleep((Math.random() + 1) * 1000); + + const transaction: juggler.Transaction = await testDb.beginTransaction(IsolationLevel.READ_COMMITTED); + try { + const refreshTokenObject: TokenObject = await testRefreshTokenService.refreshToken(refreshGrantRefreshToken, { transaction: transaction }); + const encodedJwt: EncodedJwt = await JwtUtilities.verifyAsync(refreshTokenObject.accessToken, testAccessTokenService['accessTokenSecret']); + const user: BaseUser = await testUserRepository.findById(encodedJwt.payload.id, { include: [{ relation: 'biometricCredentials' }] }, { transaction: transaction }); + await transaction.commit(); + return { + accessToken: { + value: refreshTokenObject.accessToken, + expirationDate: new Date(Date.now() + testAccessTokenService['accessTokenExpiresInMs']) + }, + refreshToken: { + value: refreshTokenObject.refreshToken, + expirationDate: new Date(Date.now() + testRefreshTokenService['refreshTokenExpiresInMs']) + }, + roles: encodedJwt.payload.roles, + twoFactorEnabled: user.twoFactorEnabled ?? false, + userId: encodedJwt.payload.id, + biometricCredentials: user.biometricCredentials ?? [] + }; + } + catch (error) { + await transaction.rollback(); + // eslint-disable-next-line typescript/no-unsafe-member-access + throw new HttpErrors.Unauthorized(`Error refreshing token: ${error.message}`); + } +} \ No newline at end of file diff --git a/src/__tests__/unit/two-factor.service.test.ts b/src/__tests__/unit/two-factor.service.test.ts index def9b71..7346110 100644 --- a/src/__tests__/unit/two-factor.service.test.ts +++ b/src/__tests__/unit/two-factor.service.test.ts @@ -1,60 +1,53 @@ -import { Getter } from '@loopback/core'; import { expect } from '@loopback/testlab'; -import { Secret, TOTP } from 'otpauth'; -import { BcryptUtilities } from '../../encapsulation/bcrypt.utilities'; +import { OtpAuthUtilities } from '../../encapsulation/otp-auth.utilities'; import { BaseUser, Credentials } from '../../models'; -import { BaseUserRepository, CredentialsRepository } from '../../repositories'; import { TwoFactorService } from '../../services'; import { DefaultEntityOmitKeys } from '../../types'; -import { testDb } from '../fixtures/test-db.datasource'; +import { clearDatabase, createExampleUser } from '../fixtures/helpers'; +import { testUserRepository } from '../fixtures/repositories.fixture'; +import { TestRoles } from '../fixtures/roles.fixture'; -const credentialsRepository: CredentialsRepository = new CredentialsRepository(testDb); -const credentialsRepositoryGetter: Getter = async () => credentialsRepository; -const baseUserRepository: BaseUserRepository = new BaseUserRepository(testDb, credentialsRepositoryGetter); +const twoFactorService: TwoFactorService = new TwoFactorService(false, testUserRepository, 'X-Authorization-2FA'); -const twoFactorService: TwoFactorService = new TwoFactorService(false, baseUserRepository, 'X-Authorization-2FA'); - -let user: BaseUser; +let user: Omit, DefaultEntityOmitKeys | 'credentials'>; describe('TwoFactorService', () => { before(async () => { - user = await baseUserRepository.create({ email: 'user@example.com', roles: ['user'] }); - const credentials: Omit = { - password: await BcryptUtilities.hash('42') - }; - const finishedCredentials: Credentials = await baseUserRepository.credentials(user.id).create(credentials); - expect(finishedCredentials.twoFactorAuthUrl).to.be.undefined(); - expect(finishedCredentials.twoFactorSecret).to.be.undefined(); + await clearDatabase(); + user = await createExampleUser(); + const credentials: Credentials = await testUserRepository.credentials(user.id).get(); + expect(credentials.twoFactorAuthUrl).to.be.null(); + expect(credentials.twoFactorSecret).to.be.null(); expect(user.twoFactorEnabled).to.be.undefined(); }); it('turnOn2FA', async () => { await twoFactorService.turnOn2FA(user.id); - const credentials: Credentials = await baseUserRepository.credentials(user.id).get(); - expect(credentials.twoFactorAuthUrl).to.not.be.undefined(); - expect(credentials.twoFactorSecret).to.not.be.undefined(); - expect((await baseUserRepository.findById(user.id)).twoFactorEnabled).to.be.undefined(); + const credentials: Credentials = await testUserRepository.credentials(user.id).get(); + expect(credentials.twoFactorAuthUrl).to.not.be.null(); + expect(credentials.twoFactorSecret).to.not.be.null(); + expect((await testUserRepository.findById(user.id)).twoFactorEnabled).to.be.null(); }); it('confirmTurnOn2FA', async () => { - const credentials: Credentials = await baseUserRepository.credentials(user.id).get(); - const code: string = TOTP.generate({ secret: Secret.fromBase32(credentials.twoFactorSecret as string) }); + const credentials: Credentials = await testUserRepository.credentials(user.id).get(); + const code: string = OtpAuthUtilities.generate({ secret: OtpAuthUtilities.secretFromBase32(credentials.twoFactorSecret as string) }); await twoFactorService.confirmTurnOn2FA(user.id, code); - expect((await baseUserRepository.findById(user.id)).twoFactorEnabled).to.be.true(); + expect((await testUserRepository.findById(user.id)).twoFactorEnabled).to.be.true(); }); it('turnOff2FA', async () => { await twoFactorService.turnOff2FA(user.id); - let credentials: Credentials = await baseUserRepository.credentials(user.id).get(); - expect(credentials.twoFactorAuthUrl).to.be.undefined(); - expect(credentials.twoFactorSecret).to.be.undefined(); + let credentials: Credentials = await testUserRepository.credentials(user.id).get(); + expect(credentials.twoFactorAuthUrl).to.be.null(); + expect(credentials.twoFactorSecret).to.be.null(); - user = await baseUserRepository.findById(user.id); + user = await testUserRepository.findById(user.id); expect(user.twoFactorEnabled).to.be.false(); await twoFactorService.turnOn2FA(user.id); - credentials = await baseUserRepository.credentials(user.id).get(); - const code: string = TOTP.generate({ secret: Secret.fromBase32(credentials.twoFactorSecret as string) }); + credentials = await testUserRepository.credentials(user.id).get(); + const code: string = OtpAuthUtilities.generate({ secret: OtpAuthUtilities.secretFromBase32(credentials.twoFactorSecret as string) }); await twoFactorService.confirmTurnOn2FA(user.id, code); }); @@ -64,8 +57,8 @@ describe('TwoFactorService', () => { }); it('validateCode', async () => { - const credentials: Credentials = await baseUserRepository.credentials(user.id).get(); - const correctCode: string = TOTP.generate({ secret: Secret.fromBase32(credentials.twoFactorSecret as string) }); + const credentials: Credentials = await testUserRepository.credentials(user.id).get(); + const correctCode: string = OtpAuthUtilities.generate({ secret: OtpAuthUtilities.secretFromBase32(credentials.twoFactorSecret as string) }); await expect(twoFactorService.validateCode(user.id, correctCode)).to.not.be.rejected(); diff --git a/src/controllers/auth/require-2fa-response.model.ts b/src/controllers/auth/2fa/require-2fa-response.model.ts similarity index 100% rename from src/controllers/auth/require-2fa-response.model.ts rename to src/controllers/auth/2fa/require-2fa-response.model.ts diff --git a/src/controllers/auth/turn-on-2fa-response.model.ts b/src/controllers/auth/2fa/turn-on-2fa-response.model.ts similarity index 100% rename from src/controllers/auth/turn-on-2fa-response.model.ts rename to src/controllers/auth/2fa/turn-on-2fa-response.model.ts diff --git a/src/controllers/auth/auth-data.model.ts b/src/controllers/auth/auth-data.model.ts index 233572f..86d4fa0 100644 --- a/src/controllers/auth/auth-data.model.ts +++ b/src/controllers/auth/auth-data.model.ts @@ -1,8 +1,9 @@ import { inject } from '@loopback/core'; import { Model, model, property } from '@loopback/repository'; +import { getJsonSchema } from '@loopback/rest'; import { LbxJwtBindings } from '../../keys'; -import { Jwt } from '../../models'; +import { BiometricCredentials, Jwt } from '../../models'; /** * The authentication data that is send to the user. @@ -15,19 +16,8 @@ export class AuthData extends Model { * Consists of the string value and the expirationDate value. */ @property({ - type: 'object', - required: true, - jsonSchema: { - properties: { - value: { - type: 'string' - }, - expirationDate: { - type: 'string' - } - }, - required: ['value', 'expirationDate'] - } + type: Jwt, + required: true }) accessToken: Jwt; /** @@ -35,19 +25,8 @@ export class AuthData extends Model { * Consists of the string value and the expirationDate value. */ @property({ - type: 'object', - required: true, - jsonSchema: { - properties: { - value: { - type: 'string' - }, - expirationDate: { - type: 'string' - } - }, - required: ['value', 'expirationDate'] - } + type: Jwt, + required: true }) refreshToken: Jwt; /** @@ -69,6 +48,17 @@ export class AuthData extends Model { required: true }) twoFactorEnabled: boolean; + /** + * The biometric credentials of the user. + * This is an array because a user might have multiple devices with a fingerprint sensor. + */ + @property({ + type: 'array', + itemType: 'object', + required: false, + jsonSchema: getJsonSchema(BiometricCredentials) + }) + biometricCredentials: BiometricCredentials[]; /** * The id of the currently logged in user. */ diff --git a/src/controllers/auth/auth.controller.ts b/src/controllers/auth/auth.controller.ts index a780d32..67b0ee5 100644 --- a/src/controllers/auth/auth.controller.ts +++ b/src/controllers/auth/auth.controller.ts @@ -1,24 +1,31 @@ import { authenticate } from '@loopback/authentication'; import { inject } from '@loopback/core'; import { IsolationLevel, juggler, model, property } from '@loopback/repository'; -import { HttpErrors, Request, RestBindings, getModelSchemaRef, post, requestBody } from '@loopback/rest'; +import { HttpErrors, Request, RestBindings, del, get, getModelSchemaRef, param, post, requestBody } from '@loopback/rest'; import { SecurityBindings } from '@loopback/security'; +import { Require2FAResponseModel } from './2fa/require-2fa-response.model'; +import { TurnOn2FAResponse } from './2fa/turn-on-2fa-response.model'; import { AuthData } from './auth-data.model'; +import { AuthenticationResponse } from './biometric/authentication-response.model'; +import { BiometricRegistrationOptions } from './biometric/biometric-registration-options.model'; +import { BiometricRegistrationResponse } from './biometric/biometric-registration-response.model'; +import { ConfirmBiometricRegistrationResponse } from './biometric/confirm-biometric-registration-response.model'; +import { PublicKeyCredentialRequestOptions } from './biometric/public-key-credential-request-options.model'; +import { VerifiedBiometricRegistration } from './biometric/verified-biometric-registration.model'; import { ConfirmResetPassword } from './confirm-reset-password.model'; import { LoginCredentials } from './login-credentials.model'; import { RefreshGrant } from './refresh-grant.model'; import { RequestResetPasswordGrant } from './request-reset-password-grant.model'; -import { Require2FAResponseModel } from './require-2fa-response.model'; import { RequirePasswordChangeResponseModel } from './require-password-change.model'; import { ResetPasswordTokenGrant } from './reset-password-token-grant.model'; -import { TurnOn2FAResponse } from './turn-on-2fa-response.model'; import { BcryptUtilities } from '../../encapsulation/bcrypt.utilities'; import { EncodedJwt, JwtUtilities } from '../../encapsulation/jwt.utilities'; +import { Base64UrlString } from '../../encapsulation/webauthn.utilities'; import { LbxJwtBindings } from '../../keys'; -import { BaseUser, BaseUserProfile, BaseUserWithRelations, Credentials, PasswordResetTokenWithRelations } from '../../models'; -import { BaseUserRepository, CredentialsRepository, PasswordResetTokenRepository, RefreshTokenRepository } from '../../repositories'; -import { AccessTokenService, BaseUserService, RefreshTokenService } from '../../services'; +import { BaseUser, BaseUserProfile, BaseUserWithRelations, BiometricCredentials, Credentials, PasswordResetTokenWithRelations } from '../../models'; +import { BaseUserRepository, BiometricCredentialsRepository, CredentialsRepository, PasswordResetTokenRepository, RefreshTokenRepository } from '../../repositories'; +import { AccessTokenService, BaseBiometricCredentialsService, BaseUserService, RefreshTokenService } from '../../services'; import { TwoFactorService } from '../../services/two-factor.service'; import { DefaultEntityOmitKeys, TokenObject } from '../../types'; @@ -31,6 +38,8 @@ class VerifyResetTokenResponse { isValid: boolean; } +const PENDING: string = 'PENDING'; + /** * Exposes endpoints regarding authentication and authorization (eg. Login or resetting a users password). */ @@ -50,6 +59,8 @@ export class LbxJwtAuthController { private readonly baseUserRepository: BaseUserRepository, @inject(LbxJwtBindings.CREDENTIALS_REPOSITORY) private readonly credentialsRepository: CredentialsRepository, + @inject(LbxJwtBindings.BIOMETRIC_CREDENTIALS_REPOSITORY) + private readonly biometricCredentialsRepository: BiometricCredentialsRepository, @inject(LbxJwtBindings.DATASOURCE_KEY) private readonly dataSource: juggler.DataSource, @inject(LbxJwtBindings.ACCESS_TOKEN_EXPIRES_IN_MS) @@ -61,8 +72,10 @@ export class LbxJwtAuthController { @inject(LbxJwtBindings.TWO_FACTOR_SERVICE) private readonly twoFactorService: TwoFactorService, @inject(LbxJwtBindings.TWO_FACTOR_HEADER) - private readonly twoFactorHeader: string - ) {} + private readonly twoFactorHeader: string, + @inject(LbxJwtBindings.BIOMETRIC_CREDENTIALS_SERVICE) + private readonly biometricCredentialsService: BaseBiometricCredentialsService + ) { } /** * Tries to login a user with the provided email and password. @@ -74,7 +87,7 @@ export class LbxJwtAuthController { 'login', { responses: { - '200': { + 200: { description: 'Auth Data for the user including the access and refresh token', content: { 'application/json': { @@ -82,7 +95,7 @@ export class LbxJwtAuthController { } } }, - '202': { + 202: { description: 'Login was successful, but the user is required to change his password.', content: { 'application/json': { @@ -90,7 +103,7 @@ export class LbxJwtAuthController { } } }, - '206': { + 206: { description: 'Requires 2 factor code.', content: { 'application/json': { @@ -106,11 +119,16 @@ export class LbxJwtAuthController { required: true, content: { 'application/json': { - schema: getModelSchemaRef(LoginCredentials) + schema: { + oneOf: [ + getModelSchemaRef(LoginCredentials), + getModelSchemaRef(AuthenticationResponse) + ] + } } } }) - loginCredentials: LoginCredentials, + loginCredentials: LoginCredentials | AuthenticationResponse, @inject(RestBindings.Http.REQUEST) request: Request ): Promise, DefaultEntityOmitKeys> | Require2FAResponseModel | RequirePasswordChangeResponseModel> { @@ -130,6 +148,7 @@ export class LbxJwtAuthController { } const userProfile: BaseUserProfile = this.baseUserService.convertToUserProfile(user); const accessToken: string = await this.accessTokenService.generateToken(userProfile); + const biometricCredentials: BiometricCredentials[] = await this.baseUserRepository.biometricCredentials(user.id).find(); const refreshTokenObject: TokenObject = await this.refreshTokenService.generateToken(userProfile, accessToken); return { accessToken: { @@ -142,7 +161,8 @@ export class LbxJwtAuthController { }, roles: user.roles, twoFactorEnabled: user.twoFactorEnabled ?? false, - userId: user.id + userId: user.id, + biometricCredentials: biometricCredentials }; } @@ -153,7 +173,7 @@ export class LbxJwtAuthController { */ @post('refresh-token', { responses: { - '200': { + 200: { description: 'Auth Data for the user including the access and refresh token', content: { 'application/json': { @@ -176,9 +196,16 @@ export class LbxJwtAuthController { ): Promise, DefaultEntityOmitKeys>> { const transaction: juggler.Transaction = await this.dataSource.beginTransaction(IsolationLevel.READ_COMMITTED); try { - const refreshTokenObject: TokenObject = await this.refreshTokenService.refreshToken(refreshGrant.refreshToken, { transaction: transaction }); + const refreshTokenObject: TokenObject = await this.refreshTokenService.refreshToken( + refreshGrant.refreshToken, + { transaction: transaction } + ); const encodedJwt: EncodedJwt = await JwtUtilities.verifyAsync(refreshTokenObject.accessToken, this.accessTokenSecret); - const user: BaseUser = await this.baseUserRepository.findById(encodedJwt.payload.id, undefined, { transaction: transaction }); + const user: BaseUser = await this.baseUserRepository.findById( + encodedJwt.payload.id, + { include: [{ relation: 'biometricCredentials' }] }, + { transaction: transaction } + ); await transaction.commit(); return { accessToken: { @@ -191,7 +218,8 @@ export class LbxJwtAuthController { }, roles: encodedJwt.payload.roles, twoFactorEnabled: user.twoFactorEnabled ?? false, - userId: encodedJwt.payload.id + userId: encodedJwt.payload.id, + biometricCredentials: user.biometricCredentials ?? [] }; } catch (error) { @@ -207,7 +235,7 @@ export class LbxJwtAuthController { */ @post('logout', { responses: { - '200': { + 200: { description: 'Logout successful' } } @@ -232,7 +260,7 @@ export class LbxJwtAuthController { */ @post('request-reset-password', { responses: { - '200': { + 200: { description: 'ResetPassword Request successful' } } @@ -259,7 +287,7 @@ export class LbxJwtAuthController { */ @post('verify-password-reset-token', { responses: { - '204': { + 204: { description: 'ResetToken Verify success', content: getModelSchemaRef(VerifyResetTokenResponse) } @@ -300,7 +328,7 @@ export class LbxJwtAuthController { */ @post('confirm-reset-password', { responses: { - '200': { + 200: { description: 'ResetPassword success' } } @@ -353,7 +381,7 @@ export class LbxJwtAuthController { @authenticate('jwt') @post('/2fa/turn-on', { responses: { - '200': { + 200: { content: { 'application/json': { schema: getModelSchemaRef(TurnOn2FAResponse) @@ -364,7 +392,7 @@ export class LbxJwtAuthController { }) async turnOn2FA( @inject(SecurityBindings.USER) - userProfile: BaseUserProfile + userProfile: BaseUserProfile ): Promise { const transaction: juggler.Transaction = await this.dataSource.beginTransaction(IsolationLevel.READ_COMMITTED); try { @@ -386,14 +414,14 @@ export class LbxJwtAuthController { @authenticate('jwt') @post('/2fa/confirm-turn-on', { responses: { - '200': { + 200: { description: 'Success' } } }) async confirmTurnOn2FA( @inject(SecurityBindings.USER) - userProfile: BaseUserProfile, + userProfile: BaseUserProfile, @inject(RestBindings.Http.REQUEST) request: Request ): Promise { @@ -416,14 +444,14 @@ export class LbxJwtAuthController { @authenticate('jwt') @post('/2fa/turn-off', { responses: { - '200': { + 200: { description: 'Success' } } }) async turnOff2FA( @inject(SecurityBindings.USER) - userProfile: BaseUserProfile + userProfile: BaseUserProfile ): Promise { const transaction: juggler.Transaction = await this.dataSource.beginTransaction(IsolationLevel.READ_COMMITTED); try { @@ -435,4 +463,141 @@ export class LbxJwtAuthController { throw error; } } + + @authenticate('jwt') + @post('/biometric/register', { + responses: { + 200: { + content: { + 'application/json': { + schema: getModelSchemaRef(BiometricRegistrationOptions) + } + } + } + } + }) + async registerBiometricCredential( + @inject(SecurityBindings.USER) + userProfile: BaseUserProfile + ): Promise { + const baseUser: BaseUser = await this.baseUserRepository.findById( + userProfile.id, + { include: [{ relation: 'biometricCredentials' }] } + ); + const options: BiometricRegistrationOptions = await this.biometricCredentialsService.generateRegistrationOptions( + baseUser.email, + baseUser.biometricCredentials ?? [] + ); + const credentials: Omit = { + challenge: options.challenge, + credentialId: PENDING as Base64UrlString, + publicKey: PENDING as Base64UrlString, + counter: 0 + }; + await this.baseUserRepository.biometricCredentials(baseUser.id).create(credentials); + return options; + } + + @authenticate('jwt') + @del('/biometric/cancel-register/{challenge}', { + responses: { + 200: { + description: 'Success' + } + } + }) + async cancelBiometricRegistration( + @inject(SecurityBindings.USER) + userProfile: BaseUserProfile, + @param.path.string('challenge') + challenge: string + ): Promise { + await this.baseUserRepository.biometricCredentials(userProfile.id).delete({ + challenge: challenge as Base64UrlString, + counter: 0, + credentialId: PENDING as Base64UrlString, + publicKey: PENDING as Base64UrlString + }); + } + + @authenticate('jwt') + @post('/biometric/confirm-register/{challenge}', { + responses: { + 200: { + content: { + 'application/json': { + schema: getModelSchemaRef(ConfirmBiometricRegistrationResponse) + } + } + } + } + }) + async confirmRegisterBiometricCredentials( + @inject(SecurityBindings.USER) + userProfile: BaseUserProfile, + @requestBody({ + required: true, + content: { + 'application/json': { + schema: getModelSchemaRef(BiometricRegistrationResponse) + } + } + }) + body: BiometricRegistrationResponse, + @param.path.string('challenge') + challenge: string + ): Promise { + const baseUser: BaseUser = await this.baseUserRepository.findById( + userProfile.id, + { include: [{ relation: 'biometricCredentials' }] } + ); + const existingBiometricCredential: BiometricCredentials | undefined = baseUser.biometricCredentials?.find(bc => { + return bc.challenge === challenge + && bc.credentialId === PENDING + && bc.counter === 0 + && bc.publicKey === PENDING; + }); + const res: VerifiedBiometricRegistration = await this.biometricCredentialsService.verifyRegistrationResponse( + body, + existingBiometricCredential?.challenge + ); + if (res.verified && existingBiometricCredential) { + await this.biometricCredentialsRepository.updateById(existingBiometricCredential.id, { + credentialId: res.registrationInfo?.credentialID, + publicKey: res.registrationInfo?.credentialPublicKey, + counter: res.registrationInfo?.counter + }); + } + const biometricCredentials: BiometricCredentials[] = await this.baseUserRepository.biometricCredentials(baseUser.id).find(); + return { + biometricCredentials: biometricCredentials, + verified: res.verified + }; + } + + @get('/biometric/authentication-options/{userId}', { + responses: { + 200: { + content: { + 'application/json': { + schema: getModelSchemaRef(PublicKeyCredentialRequestOptions) + } + } + } + } + }) + async generateAuthenticationOptions( + @param.path.string('userId') + userId: string + ): Promise { + const user: BaseUser = await this.baseUserRepository.findById( + userId, + { include: [{ relation: 'biometricCredentials' }] } + ); + const options: PublicKeyCredentialRequestOptions = await this.biometricCredentialsService.generateAuthenticationOptions( + user.biometricCredentials ?? [] + ); + await this.baseUserRepository.biometricCredentials(user.id).patch({ challenge: options.challenge }); + return options; + } } \ No newline at end of file diff --git a/src/controllers/auth/biometric/authentication-extensions-inputs.model.ts b/src/controllers/auth/biometric/authentication-extensions-inputs.model.ts new file mode 100644 index 0000000..71eede4 --- /dev/null +++ b/src/controllers/auth/biometric/authentication-extensions-inputs.model.ts @@ -0,0 +1,25 @@ +//TODO: Remove +/* eslint-disable jsdoc/require-jsdoc */ +import { model, property } from '@loopback/repository'; +import { AuthenticationExtensionsClientInputs } from '@simplewebauthn/types'; + +@model() +export class AuthenticationExtensionsInputs implements AuthenticationExtensionsClientInputs { + @property({ + type: 'string', + required: false + }) + appid?: string; + + @property({ + type: 'boolean', + required: false + }) + credProps?: boolean; + + @property({ + type: 'boolean', + required: false + }) + hmacCreateSecret?: boolean; +} \ No newline at end of file diff --git a/src/controllers/auth/biometric/authentication-extensions-outputs.model.ts b/src/controllers/auth/biometric/authentication-extensions-outputs.model.ts new file mode 100644 index 0000000..13cae07 --- /dev/null +++ b/src/controllers/auth/biometric/authentication-extensions-outputs.model.ts @@ -0,0 +1,27 @@ +//TODO: Remove +/* eslint-disable jsdoc/require-jsdoc */ +import { model, property } from '@loopback/repository'; +import { AuthenticationExtensionsClientOutputs } from '@simplewebauthn/types'; + +import { BiometricCredentialPropertiesOutput } from './credential-properties-output.model'; + +@model() +export class AuthenticationExtensionsOutputs implements AuthenticationExtensionsClientOutputs { + @property({ + type: 'string', + required: false + }) + appid?: boolean; + + @property({ + type: BiometricCredentialPropertiesOutput, + required: true + }) + credProps?: BiometricCredentialPropertiesOutput; + + @property({ + type: 'boolean', + required: false + }) + hmacCreateSecret?: boolean; +} \ No newline at end of file diff --git a/src/controllers/auth/biometric/authentication-response.model.ts b/src/controllers/auth/biometric/authentication-response.model.ts new file mode 100644 index 0000000..71c2715 --- /dev/null +++ b/src/controllers/auth/biometric/authentication-response.model.ts @@ -0,0 +1,61 @@ +/* eslint-disable jsdoc/require-jsdoc */ +import { model, property } from '@loopback/repository'; +import { AuthenticationResponseJSON, AuthenticatorAttachment } from '@simplewebauthn/types'; + +import { AuthenticationExtensionsOutputs } from './authentication-extensions-outputs.model'; +import { AuthenticatorAssertionResponse } from './authenticator-assertion-response.model'; +import { Base64UrlString, authenticatorAttachmentValues, publicKeyCredentialTypeValues } from '../../../encapsulation/webauthn.utilities'; + +/** + * Response from the frontend when authentication was successful. + */ +@model() +export class AuthenticationResponse implements AuthenticationResponseJSON { + @property({ + type: 'string', + required: true + }) + id: Base64UrlString; + + @property({ + type: 'string', + required: true + }) + rawId: Base64UrlString; + + @property({ + type: AuthenticatorAssertionResponse, + required: true + }) + response: AuthenticatorAssertionResponse; + + @property({ + type: 'string', + required: false, + jsonSchema: { + enum: Object.values(authenticatorAttachmentValues) + } + }) + authenticatorAttachment?: AuthenticatorAttachment; + + @property({ + type: AuthenticationExtensionsOutputs, + required: true + }) + clientExtensionResults: AuthenticationExtensionsOutputs; + + @property({ + type: 'string', + required: true, + jsonSchema: { + enum: publicKeyCredentialTypeValues + } + }) + type: PublicKeyCredentialType; + + @property({ + type: 'string', + required: true + }) + userId: string; +} \ No newline at end of file diff --git a/src/controllers/auth/biometric/authenticator-assertion-response.model.ts b/src/controllers/auth/biometric/authenticator-assertion-response.model.ts new file mode 100644 index 0000000..fbc7ca1 --- /dev/null +++ b/src/controllers/auth/biometric/authenticator-assertion-response.model.ts @@ -0,0 +1,33 @@ +/* eslint-disable jsdoc/require-jsdoc */ +import { model, property } from '@loopback/repository'; +import { AuthenticatorAssertionResponseJSON } from '@simplewebauthn/types'; + +import { Base64UrlString } from '../../../encapsulation/webauthn.utilities'; + +@model() +export class AuthenticatorAssertionResponse implements AuthenticatorAssertionResponseJSON { + @property({ + type: 'string', + required: true + }) + clientDataJSON: Base64UrlString; + + @property({ + type: 'string', + required: true + }) + authenticatorData: Base64UrlString; + + @property({ + type: 'string', + required: true + }) + signature: Base64UrlString; + + @property({ + type: 'string', + required: false + }) + userHandle?: Base64UrlString; + +} \ No newline at end of file diff --git a/src/controllers/auth/biometric/authenticator-attestation-response.model.ts b/src/controllers/auth/biometric/authenticator-attestation-response.model.ts new file mode 100644 index 0000000..cf9089a --- /dev/null +++ b/src/controllers/auth/biometric/authenticator-attestation-response.model.ts @@ -0,0 +1,49 @@ +//TODO: Remove +/* eslint-disable jsdoc/require-jsdoc */ +import { model, property } from '@loopback/repository'; +import { AuthenticatorAttestationResponseJSON, AuthenticatorTransportFuture } from '@simplewebauthn/types'; + +import { Base64UrlString, authenticatorTransportFutureValues } from '../../../encapsulation/webauthn.utilities'; + +@model() +export class AuthenticatorAttestationResponse implements AuthenticatorAttestationResponseJSON { + @property({ + type: 'string', + required: true + }) + clientDataJSON: Base64UrlString; + + @property({ + type: 'string', + required: true + }) + attestationObject: Base64UrlString; + + @property({ + type: 'string', + required: false + }) + authenticatorData?: Base64UrlString; + + @property({ + itemType: 'string', + required: false, + jsonSchema: { + enum: authenticatorTransportFutureValues + } + }) + transports?: AuthenticatorTransportFuture[]; + + @property({ + type: 'number', + required: false + }) + publicKeyAlgorithm?: number; + + @property({ + type: 'string', + required: false + }) + publicKey?: Base64UrlString; + +} \ No newline at end of file diff --git a/src/controllers/auth/biometric/authenticator-extensions-authenticator-outputs.model.ts b/src/controllers/auth/biometric/authenticator-extensions-authenticator-outputs.model.ts new file mode 100644 index 0000000..a550824 --- /dev/null +++ b/src/controllers/auth/biometric/authenticator-extensions-authenticator-outputs.model.ts @@ -0,0 +1,21 @@ +//TODO: Remove +/* eslint-disable jsdoc/require-jsdoc */ +import { model, property } from '@loopback/repository'; + +import { DevicePublicKeyAuthenticatorOutput } from './device-public-key-authenticator-output.model'; +import { UvmAuthenticatorOutput } from './uvm-authenticator-output.model'; + +@model() +export class AuthenticatorExtensionsAuthenticatorOutputs { + @property({ + type: DevicePublicKeyAuthenticatorOutput, + required: false + }) + devicePubKey?: DevicePublicKeyAuthenticatorOutput; + + @property({ + type: UvmAuthenticatorOutput, + required: false + }) + uvm?: UvmAuthenticatorOutput; +} \ No newline at end of file diff --git a/src/controllers/auth/biometric/authenticator-selection-criteria.model.ts b/src/controllers/auth/biometric/authenticator-selection-criteria.model.ts new file mode 100644 index 0000000..38128ea --- /dev/null +++ b/src/controllers/auth/biometric/authenticator-selection-criteria.model.ts @@ -0,0 +1,42 @@ +//TODO: Remove +/* eslint-disable jsdoc/require-jsdoc */ +import { model, property } from '@loopback/repository'; +import { AuthenticatorSelectionCriteria as AuthenticatorSelectionCriteriaInterface } from '@simplewebauthn/types'; + +import { authenticatorAttachmentValues, requirementValues } from '../../../encapsulation/webauthn.utilities'; + +@model() +export class AuthenticatorSelectionCriteria implements AuthenticatorSelectionCriteriaInterface { + @property({ + type: 'string', + required: false, + jsonSchema: { + enum: authenticatorAttachmentValues + } + }) + authenticatorAttachment?: AuthenticatorAttachment; + + @property({ + type: 'boolean', + required: false + }) + requireResidentKey?: boolean; + + @property({ + type: 'string', + required: false, + jsonSchema: { + enum: requirementValues + } + }) + residentKey?: ResidentKeyRequirement; + + @property({ + type: 'string', + required: true, + jsonSchema: { + enum: requirementValues + } + }) + userVerification?: UserVerificationRequirement; +} \ No newline at end of file diff --git a/src/controllers/auth/biometric/biometric-registration-options.model.ts b/src/controllers/auth/biometric/biometric-registration-options.model.ts new file mode 100644 index 0000000..e3f7f14 --- /dev/null +++ b/src/controllers/auth/biometric/biometric-registration-options.model.ts @@ -0,0 +1,77 @@ +//TODO: Remove +/* eslint-disable jsdoc/require-jsdoc */ +import { model, property } from '@loopback/repository'; +import { getJsonSchema } from '@loopback/rest'; +import { PublicKeyCredentialCreationOptionsJSON } from '@simplewebauthn/types'; + +import { AuthenticationExtensionsInputs } from './authentication-extensions-inputs.model'; +import { AuthenticatorSelectionCriteria } from './authenticator-selection-criteria.model'; +import { PublicKeyCredentialDescriptor } from './public-key-credential-descriptor.model'; +import { PublicKeyCredentialParameters } from './public-key-credential-parameters.model'; +import { PublicKeyCredentialRpEntity } from './public-key-credential-rp-entity.model'; +import { PublicKeyCredentialUser } from './public-key-credential-user.model'; +import { Base64UrlString, attestationConveyancePreferenceValues } from '../../../encapsulation/webauthn.utilities'; + +@model() +export class BiometricRegistrationOptions implements PublicKeyCredentialCreationOptionsJSON { + @property({ + type: PublicKeyCredentialRpEntity, + required: true + }) + rp: PublicKeyCredentialRpEntity; + + @property({ + type: PublicKeyCredentialUser, + required: true + }) + user: PublicKeyCredentialUser; + + @property({ + type: 'string', + required: true + }) + challenge: Base64UrlString; + + @property({ + type: 'array', + itemType: 'object', + required: false, + jsonSchema: getJsonSchema(PublicKeyCredentialParameters) + }) + pubKeyCredParams: PublicKeyCredentialParameters[]; + + @property({ + type: 'number', + required: false + }) + timeout?: number; + + @property({ + type: 'array', + itemType: 'object', + required: false, + jsonSchema: getJsonSchema(PublicKeyCredentialDescriptor) + }) + excludeCredentials?: PublicKeyCredentialDescriptor[]; + + @property({ + type: AuthenticatorSelectionCriteria, + required: false + }) + authenticatorSelection?: AuthenticatorSelectionCriteria; + + @property({ + type: 'string', + required: false, + jsonSchema: { + enum: attestationConveyancePreferenceValues + } + }) + attestation?: AttestationConveyancePreference; + + @property({ + type: AuthenticationExtensionsInputs, + required: false + }) + extensions?: AuthenticationExtensionsInputs; +} \ No newline at end of file diff --git a/src/controllers/auth/biometric/biometric-registration-response.model.ts b/src/controllers/auth/biometric/biometric-registration-response.model.ts new file mode 100644 index 0000000..5048cb9 --- /dev/null +++ b/src/controllers/auth/biometric/biometric-registration-response.model.ts @@ -0,0 +1,53 @@ +//TODO: Remove +/* eslint-disable jsdoc/require-jsdoc */ +import { model, property } from '@loopback/repository'; +import { AuthenticatorAttachment, RegistrationResponseJSON } from '@simplewebauthn/types'; + +import { AuthenticationExtensionsOutputs } from './authentication-extensions-outputs.model'; +import { AuthenticatorAttestationResponse } from './authenticator-attestation-response.model'; +import { Base64UrlString, authenticatorAttachmentValues, publicKeyCredentialTypeValues } from '../../../encapsulation/webauthn.utilities'; + +@model() +export class BiometricRegistrationResponse implements RegistrationResponseJSON { + @property({ + type: 'string', + required: true + }) + id: Base64UrlString; + + @property({ + type: 'string', + required: true + }) + rawId: Base64UrlString; + + @property({ + type: AuthenticatorAttestationResponse, + required: true + }) + response: AuthenticatorAttestationResponse; + + @property({ + type: 'string', + required: false, + jsonSchema: { + enum: authenticatorAttachmentValues + } + }) + authenticatorAttachment?: AuthenticatorAttachment; + + @property({ + type: AuthenticationExtensionsOutputs, + required: true + }) + clientExtensionResults: AuthenticationExtensionsOutputs; + + @property({ + type: 'string', + required: true, + jsonSchema: { + enum: publicKeyCredentialTypeValues + } + }) + type: PublicKeyCredentialType; +} \ No newline at end of file diff --git a/src/controllers/auth/biometric/confirm-biometric-registration-response.model.ts b/src/controllers/auth/biometric/confirm-biometric-registration-response.model.ts new file mode 100644 index 0000000..bf8f6fe --- /dev/null +++ b/src/controllers/auth/biometric/confirm-biometric-registration-response.model.ts @@ -0,0 +1,29 @@ +import { model, property } from '@loopback/repository'; +import { getJsonSchema } from '@loopback/rest'; + +import { BiometricCredentials } from '../../../models'; + +/** + * The response for finalizing a biometric registration. + */ +@model() +export class ConfirmBiometricRegistrationResponse { + /** + * All biometric credentials of the user, including the new one if registration was successful. + */ + @property({ + type: 'array', + itemType: 'object', + required: false, + jsonSchema: getJsonSchema(BiometricCredentials) + }) + biometricCredentials: BiometricCredentials[]; + /** + * Whether or not registration was successful. + */ + @property({ + type: 'boolean', + required: true + }) + verified: boolean; +} \ No newline at end of file diff --git a/src/controllers/auth/biometric/credential-properties-output.model.ts b/src/controllers/auth/biometric/credential-properties-output.model.ts new file mode 100644 index 0000000..73e1885 --- /dev/null +++ b/src/controllers/auth/biometric/credential-properties-output.model.ts @@ -0,0 +1,12 @@ +//TODO: Remove +/* eslint-disable jsdoc/require-jsdoc */ +import { model, property } from '@loopback/repository'; + +@model() +export class BiometricCredentialPropertiesOutput implements CredentialPropertiesOutput { + @property({ + type: 'boolean', + required: false + }) + rk?: boolean; +} \ No newline at end of file diff --git a/src/controllers/auth/biometric/device-public-key-authenticator-output.model.ts b/src/controllers/auth/biometric/device-public-key-authenticator-output.model.ts new file mode 100644 index 0000000..a4f7fda --- /dev/null +++ b/src/controllers/auth/biometric/device-public-key-authenticator-output.model.ts @@ -0,0 +1,38 @@ +//TODO: Remove +/* eslint-disable jsdoc/require-jsdoc */ +import { model, property } from '@loopback/repository'; + +import { Base64UrlString } from '../../../encapsulation/webauthn.utilities'; + +@model() +export class DevicePublicKeyAuthenticatorOutput { + @property({ + type: 'string', + required: false + }) + dpk?: Base64UrlString; + + @property({ + type: 'string', + required: false + }) + sig?: string; + + @property({ + type: 'string', + required: false + }) + nonce?: Base64UrlString; + + @property({ + type: 'string', + required: false + }) + scope?: Base64UrlString; + + @property({ + type: 'string', + required: false + }) + aaguid?: Base64UrlString; +} \ No newline at end of file diff --git a/src/controllers/auth/biometric/public-key-credential-descriptor.model.ts b/src/controllers/auth/biometric/public-key-credential-descriptor.model.ts new file mode 100644 index 0000000..0eb5609 --- /dev/null +++ b/src/controllers/auth/biometric/public-key-credential-descriptor.model.ts @@ -0,0 +1,33 @@ +//TODO: Remove +/* eslint-disable jsdoc/require-jsdoc */ +import { model, property } from '@loopback/repository'; +import { AuthenticatorTransportFuture, PublicKeyCredentialDescriptorJSON } from '@simplewebauthn/types'; + +import { Base64UrlString, authenticatorTransportFutureValues, publicKeyCredentialTypeValues } from '../../../encapsulation/webauthn.utilities'; + +@model() +export class PublicKeyCredentialDescriptor implements PublicKeyCredentialDescriptorJSON { + @property({ + type: 'string', + required: true + }) + id: Base64UrlString; + + @property({ + type: 'string', + required: true, + jsonSchema: { + enum: publicKeyCredentialTypeValues + } + }) + type: PublicKeyCredentialType; + + @property({ + itemType: 'string', + required: false, + jsonSchema: { + enum: authenticatorTransportFutureValues + } + }) + transports?: AuthenticatorTransportFuture[]; +} \ No newline at end of file diff --git a/src/controllers/auth/biometric/public-key-credential-parameters.model.ts b/src/controllers/auth/biometric/public-key-credential-parameters.model.ts new file mode 100644 index 0000000..da56dbb --- /dev/null +++ b/src/controllers/auth/biometric/public-key-credential-parameters.model.ts @@ -0,0 +1,24 @@ +//TODO: Remove +/* eslint-disable jsdoc/require-jsdoc */ +import { model, property } from '@loopback/repository'; +import { PublicKeyCredentialParameters as PublicKeyCredentialParametersInterface } from '@simplewebauthn/types'; + +import { publicKeyCredentialTypeValues } from '../../../encapsulation/webauthn.utilities'; + +@model() +export class PublicKeyCredentialParameters implements PublicKeyCredentialParametersInterface { + @property({ + type: 'number', + required: true + }) + alg: number; + + @property({ + type: 'string', + required: true, + jsonSchema: { + enum: publicKeyCredentialTypeValues + } + }) + type: PublicKeyCredentialType; +} \ No newline at end of file diff --git a/src/controllers/auth/biometric/public-key-credential-request-options.model.ts b/src/controllers/auth/biometric/public-key-credential-request-options.model.ts new file mode 100644 index 0000000..77e7300 --- /dev/null +++ b/src/controllers/auth/biometric/public-key-credential-request-options.model.ts @@ -0,0 +1,52 @@ +/* eslint-disable jsdoc/require-jsdoc */ +import { model, property } from '@loopback/repository'; +import { getJsonSchema } from '@loopback/rest'; +import { PublicKeyCredentialRequestOptionsJSON, UserVerificationRequirement } from '@simplewebauthn/types'; + +import { AuthenticationExtensionsInputs } from './authentication-extensions-inputs.model'; +import { PublicKeyCredentialDescriptor } from './public-key-credential-descriptor.model'; +import { Base64UrlString, requirementValues } from '../../../encapsulation/webauthn.utilities'; + +@model() +export class PublicKeyCredentialRequestOptions implements PublicKeyCredentialRequestOptionsJSON { + @property({ + type: 'string', + required: true + }) + challenge: Base64UrlString; + + @property({ + type: 'number', + required: false + }) + timeout?: number; + + @property({ + type: 'string', + required: false + }) + rpId?: string; + + @property({ + type: 'array', + itemType: 'object', + required: false, + jsonSchema: getJsonSchema(PublicKeyCredentialDescriptor) + }) + allowCredentials?: PublicKeyCredentialDescriptor[]; + + @property({ + type: 'string', + required: false, + jsonSchema: { + enum: Object.values(requirementValues) + } + }) + userVerification?: UserVerificationRequirement; + + @property({ + type: AuthenticationExtensionsInputs, + required: false + }) + extensions?: AuthenticationExtensionsInputs; +} \ No newline at end of file diff --git a/src/controllers/auth/biometric/public-key-credential-rp-entity.model.ts b/src/controllers/auth/biometric/public-key-credential-rp-entity.model.ts new file mode 100644 index 0000000..9713289 --- /dev/null +++ b/src/controllers/auth/biometric/public-key-credential-rp-entity.model.ts @@ -0,0 +1,19 @@ +//TODO: Remove +/* eslint-disable jsdoc/require-jsdoc */ +import { model, property } from '@loopback/repository'; +import { PublicKeyCredentialRpEntity as PublicKeyCredentialRpEntityInterface } from '@simplewebauthn/types'; + +@model() +export class PublicKeyCredentialRpEntity implements PublicKeyCredentialRpEntityInterface { + @property({ + type: 'string', + required: false + }) + id?: string; + + @property({ + type: 'string', + required: true + }) + name: string; +} \ No newline at end of file diff --git a/src/controllers/auth/biometric/public-key-credential-user.model.ts b/src/controllers/auth/biometric/public-key-credential-user.model.ts new file mode 100644 index 0000000..361b75e --- /dev/null +++ b/src/controllers/auth/biometric/public-key-credential-user.model.ts @@ -0,0 +1,25 @@ +//TODO: Remove +/* eslint-disable jsdoc/require-jsdoc */ +import { model, property } from '@loopback/repository'; +import { PublicKeyCredentialUserEntityJSON } from '@simplewebauthn/types'; + +@model() +export class PublicKeyCredentialUser implements PublicKeyCredentialUserEntityJSON { + @property({ + type: 'string', + required: true + }) + id: string; + + @property({ + type: 'string', + required: true + }) + name: string; + + @property({ + type: 'string', + required: true + }) + displayName: string; +} \ No newline at end of file diff --git a/src/controllers/auth/biometric/registration-info.model.ts b/src/controllers/auth/biometric/registration-info.model.ts new file mode 100644 index 0000000..82ed60a --- /dev/null +++ b/src/controllers/auth/biometric/registration-info.model.ts @@ -0,0 +1,133 @@ +import { model, property } from '@loopback/repository'; + +import { AuthenticatorExtensionsAuthenticatorOutputs } from './authenticator-extensions-authenticator-outputs.model'; +import { AttestationFormat, Base64UrlString, CredentialDeviceType, attestationFormatValues, credentialDeviceTypeValues, publicKeyCredentialTypeValues } from '../../../encapsulation/webauthn.utilities'; + +/** + * Information about the registration. + */ +@model() +export class RegistrationInfo { + /** + * Type of attestation. + */ + @property({ + type: 'string', + required: true, + jsonSchema: { + enum: attestationFormatValues + } + }) + fmt: AttestationFormat; + /** + * The number of times the authenticator reported it has been used. + * **Should be kept in a DB for later reference to help prevent replay attacks!**. + */ + @property({ + type: 'number', + required: true + }) + counter: number; + /** + * Authenticator's Attestation GUID indicating the type of the + * authenticator. + */ + @property({ + type: 'string', + required: true + }) + aaguid: string; + /** + * The credential's credential ID for the public key above. + */ + @property({ + type: 'string', + required: true + }) + credentialID: Base64UrlString; + /** + * The credential's public key as a base64 string. + */ + @property({ + type: 'string', + required: true + }) + credentialPublicKey: Base64UrlString; + /** + * The type of the credential returned by the browser. + */ + @property({ + itemType: 'string', + required: true, + jsonSchema: { + items: { + enum: publicKeyCredentialTypeValues + } + } + }) + credentialType: PublicKeyCredentialType; + /** + * The `response.attestationObject` returned by the authenticator as a base64 string. + */ + @property({ + type: 'string', + required: true + }) + attestationObject: Base64UrlString; + /** + * Whether the user was uniquely identified during attestation. + */ + @property({ + type: 'boolean', + required: true + }) + userVerified: boolean; + /** + * Whether this is a single-device or multi-device + * credential. **Should be kept in a DB for later reference!**. + */ + @property({ + type: 'string', + required: true, + jsonSchema: { + enum: credentialDeviceTypeValues + } + }) + credentialDeviceType: CredentialDeviceType; + /** + * Whether or not the multi-device credential has been + * backed up. Always `false` for single-device credentials. **Should be kept in a DB for later + * reference!**. + */ + @property({ + type: 'boolean', + required: true + }) + credentialBackedUp: boolean; + /** + * The origin of the website that the registration occurred on. + */ + @property({ + type: 'string', + required: true + }) + origin: string; + /** + * The RP ID that the registration occurred on, if one or more were + * specified in the registration options. + */ + @property({ + type: 'string', + required: false + }) + rpID?: string; + /** + * The authenticator extensions returned + * by the browser. + */ + @property({ + type: AuthenticatorExtensionsAuthenticatorOutputs, + required: true + }) + authenticatorExtensionResults?: AuthenticatorExtensionsAuthenticatorOutputs; +} \ No newline at end of file diff --git a/src/controllers/auth/biometric/uvm-authenticator-output.model.ts b/src/controllers/auth/biometric/uvm-authenticator-output.model.ts new file mode 100644 index 0000000..3598374 --- /dev/null +++ b/src/controllers/auth/biometric/uvm-authenticator-output.model.ts @@ -0,0 +1,15 @@ +//TODO: Remove +/* eslint-disable jsdoc/require-jsdoc */ +import { model, property } from '@loopback/repository'; + +import { Base64UrlString } from '../../../encapsulation/webauthn.utilities'; + +@model() +export class UvmAuthenticatorOutput { + @property({ + type: 'array', + itemType: 'string', + required: false + }) + uvm?: Base64UrlString[]; +} \ No newline at end of file diff --git a/src/controllers/auth/biometric/verified-biometric-registration.model.ts b/src/controllers/auth/biometric/verified-biometric-registration.model.ts new file mode 100644 index 0000000..2b8fd0a --- /dev/null +++ b/src/controllers/auth/biometric/verified-biometric-registration.model.ts @@ -0,0 +1,49 @@ +/* eslint-disable jsdoc/require-hyphen-before-param-description */ +import { model, property } from '@loopback/repository'; + +import { RegistrationInfo } from './registration-info.model'; + +/** + * Result of registration verification. + * @param verified - If the assertion response could be verified. + * @param registrationInfo.fmt - Type of attestation. + * @param registrationInfo.counter - The number of times the authenticator reported it has been used. + * **Should be kept in a DB for later reference to help prevent replay attacks!**. + * @param registrationInfo.aaguid - Authenticator's Attestation GUID indicating the type of the + * authenticator. + * @param registrationInfo.credentialPublicKey The credential's public key. + * @param registrationInfo.credentialID The credential's credential ID for the public key above. + * @param registrationInfo.credentialType The type of the credential returned by the browser. + * @param registrationInfo.userVerified Whether the user was uniquely identified during attestation. + * @param registrationInfo.attestationObject The raw `response.attestationObject` Buffer returned by + * the authenticator. + * @param registrationInfo.credentialDeviceType Whether this is a single-device or multi-device + * credential. **Should be kept in a DB for later reference!**. + * @param registrationInfo.credentialBackedUp Whether or not the multi-device credential has been + * backed up. Always `false` for single-device credentials. **Should be kept in a DB for later + * reference!**. + * @param registrationInfo.origin The origin of the website that the registration occurred on. + * @param registrationInfo?.rpID The RP ID that the registration occurred on, if one or more were + * specified in the registration options. + * @param registrationInfo?.authenticatorExtensionResults The authenticator extensions returned + * by the browser. + */ +@model() +export class VerifiedBiometricRegistration { + /** + * If the assertion response could be verified. + */ + @property({ + type: 'boolean', + required: true + }) + verified: boolean; + /** + * Information about the registration. + */ + @property({ + type: RegistrationInfo, + required: false + }) + registrationInfo?: RegistrationInfo; +} \ No newline at end of file diff --git a/src/controllers/index.ts b/src/controllers/index.ts index a9e8bea..dcdbd38 100644 --- a/src/controllers/index.ts +++ b/src/controllers/index.ts @@ -5,5 +5,6 @@ export * from './auth/login-credentials.model'; export * from './auth/refresh-grant.model'; export * from './auth/request-reset-password-grant.model'; export * from './auth/reset-password-token-grant.model'; -export * from './auth/turn-on-2fa-response.model'; -export * from './auth/require-2fa-response.model'; \ No newline at end of file +export * from './auth/2fa/turn-on-2fa-response.model'; +export * from './auth/2fa/require-2fa-response.model'; +export * from './auth/biometric/biometric-registration-options.model'; \ No newline at end of file diff --git a/src/encapsulation/hi-base32.utilities.ts b/src/encapsulation/hi-base32.utilities.ts new file mode 100644 index 0000000..da0f918 --- /dev/null +++ b/src/encapsulation/hi-base32.utilities.ts @@ -0,0 +1,16 @@ +import { encode } from 'hi-base32'; + +/** + * Encapsulates functionality of the hi-base32 package. + */ +export abstract class HiBase32Utilities { + /** + * Encode the given input to a base32 string. + * @param input - The input you want to encode. + * @param asciiOnly - Treat string as ASCII or UTF-8 string. Default is false. + * @returns The encoded base32 string. + */ + static encode(input: string | number[] | ArrayBuffer | Uint8Array, asciiOnly?: boolean): string { + return encode(input, asciiOnly); + } +} \ No newline at end of file diff --git a/src/encapsulation/otp-auth.utilities.ts b/src/encapsulation/otp-auth.utilities.ts new file mode 100644 index 0000000..ded5232 --- /dev/null +++ b/src/encapsulation/otp-auth.utilities.ts @@ -0,0 +1,100 @@ +import { Secret, TOTP } from 'otpauth'; + +/** + * TOTP: Time-Based One-Time Password Algorithm. + * @see — RFC 6238 + */ +export type OtpTOTP = TOTP; + +/** + * OTP secret key. + */ +export type OtpSecret = Secret; + +/** + * Options for creating a new TOTP object. + */ +export type OtpTOTPCreateOptions = { + /** + * Account provider. + */ + issuer?: string, + /** + * Account label. + */ + label?: string, + /** + * Secret key. + */ + secret?: string | Secret, + /** + * HMAC hashing algorithm. + */ + algorithm?: string, + /** + * Token length. + */ + digits?: number, + /** + * Token time-step duration. + */ + period?: number +}; + +/** + * Options for generation a TOTP Token. + */ +export type OtpTOTPGenerateOptions = { + /** + * Secret key. + */ + secret: Secret, + /** + * HMAC hashing algorithm. + */ + algorithm?: string, + /** + * Token length. + */ + digits?: number, + /** + * Token time-step duration. + */ + period?: number, + /** + * Timestamp value in milliseconds. + */ + timestamp?: number +}; + +/** + * Encapsulates functionality of the otpauth package. + */ +export abstract class OtpAuthUtilities { + /** + * Creates a TOTP object. + * @param options - Options for generating the TOTP. + * @returns A TOTP (Time based One Time Password). + */ + static createTOTP(options: OtpTOTPCreateOptions): OtpTOTP { + return new TOTP(options); + } + + /** + * Generates a TOTP token. + * @param options - Configuration options. + * @returns — Token. + */ + static generate(options: OtpTOTPGenerateOptions): string { + return TOTP.generate(options); + } + + /** + * Converts a base32 string to a Secret object. + * @param value - Base32 string. + * @returns Secret object. + */ + static secretFromBase32(value: string): OtpSecret { + return Secret.fromBase32(value); + } +} \ No newline at end of file diff --git a/src/encapsulation/webauthn.utilities.ts b/src/encapsulation/webauthn.utilities.ts new file mode 100644 index 0000000..8399432 --- /dev/null +++ b/src/encapsulation/webauthn.utilities.ts @@ -0,0 +1,173 @@ +/* eslint-disable jsdoc/check-param-names */ +import base64 from '@hexagon/base64'; +import { GenerateAuthenticationOptionsOpts, GenerateRegistrationOptionsOpts, VerifiedAuthenticationResponse as SWAVerifiedAuthenticationResponse, VerifiedRegistrationResponse, VerifyAuthenticationResponseOpts, VerifyRegistrationResponseOpts, generateAuthenticationOptions, generateRegistrationOptions, verifyAuthenticationResponse, verifyRegistrationResponse } from '@simplewebauthn/server'; +import { PublicKeyCredentialCreationOptionsJSON, PublicKeyCredentialRequestOptionsJSON } from '@simplewebauthn/types'; + +// eslint-disable-next-line jsdoc/require-jsdoc +type ConditionalType = + InputType extends undefined + ? undefined + : ReturnType; + +/** + * The values for AuthenticatorTransport property definitions. + */ +export const authenticatorTransportFutureValues: string[] = ['ble', 'cable', 'hybrid', 'internal', 'nfc', 'smart-card', 'usb']; + +/** + * The values for AuthenticatorAttachment property definitions. + */ +export const authenticatorAttachmentValues: string[] = ['cross-platform', 'platform']; + +/** + * The values for Requirement property definitions. + */ +export const requirementValues: string[] = ['discouraged', 'preferred', 'required']; + +/** + * The values for AttestationConveyancePreference property definitions. + */ +export const attestationConveyancePreferenceValues: string[] = ['none', 'direct', 'enterprise', 'indirect']; + +/** + * The values for PublicKeyCredentialType property definitions. + */ +export const publicKeyCredentialTypeValues: string[] = ['public-key']; + +/** + * The values for AttestationFormat property definitions. + */ +// eslint-disable-next-line cspell/spellchecker +export const attestationFormatValues: string[] = ['none', 'fido-u2f', 'packed', 'android-safetynet', 'android-key', 'tpm', 'apple']; + +/** + * The possible AttestationFormats. + */ +export type AttestationFormat = typeof attestationFormatValues[number]; + +/** + * The values for CredentialDeviceType property definitions. + */ +export const credentialDeviceTypeValues: string[] = ['singleDevice', 'multiDevice']; + +/** + * The type of the credential device used. + */ +export type CredentialDeviceType = typeof credentialDeviceTypeValues[number]; + +/** + * Verified authentication response. Comes from the frontend when biometric authentication was successful. + */ +export type VerifiedAuthenticationResponse = SWAVerifiedAuthenticationResponse; + +/** + * Helper type for the base64 string. + */ +// eslint-disable-next-line jsdoc/require-jsdoc +type Opaque = T & { __typename: K }; + +/** + * Type for a base64 string. This does not apply any type checking and is just programmatic sugar. + */ +export type Base64UrlString = Opaque; + +/** + * Encapsulates functionality of the **@simplewebauthn/server** package. + */ +export abstract class WebauthnUtilities { + // eslint-disable-next-line jsdoc/require-param, jsdoc/require-returns + /** + * Prepare a value to pass into navigator.credentials.create(...) for authenticator registration. + * + * **Options:**. + * @param rpName - User-visible, "friendly" website/service name. + * @param rpID - Valid domain name (after `https://`). + * @param userName - User's website-specific username (email, etc...). + * @param userID - **(Optional)** - User's website-specific unique ID. Defaults to generating a random identifier. + * @param challenge - **(Optional)** - Random value the authenticator needs to sign and pass back. Defaults to generating a random value. + * @param userDisplayName - **(Optional)** - User's actual name. Defaults to `""`. + * @param timeout - **(Optional)** - How long (in ms) the user can take to complete attestation. Defaults to `60000`. + * @param attestationType - **(Optional)** - Specific attestation statement. Defaults to `"none"`. + * @param excludeCredentials - **(Optional)** - Authenticators registered by the user so the user can't register the same credential multiple times. Defaults to `[]`. + * @param authenticatorSelection - **(Optional)** - Advanced criteria for restricting the types of authenticators that may be used. Defaults to `{ residentKey: 'preferred', userVerification: 'preferred' }`. + * @param extensions - **(Optional)** - Additional plugins the authenticator or browser should use during attestation. + * @param supportedAlgorithmIDs - **(Optional)** - Array of numeric COSE algorithm identifiers supported for attestation by this RP. See https://www.iana.org/assignments/cose/cose.xhtml#algorithms. Defaults to `[-8, -7, -257]`. + */ + static async generateRegistrationOptions(options: GenerateRegistrationOptionsOpts): Promise { + return generateRegistrationOptions(options); + } + + // eslint-disable-next-line jsdoc/require-param, jsdoc/require-returns + /** + * Verify that the user has legitimately completed the registration process. + * + * **Options:**. + * @param response - Response returned by **@simplewebauthn/browser**'s `startAuthentication()`. + * @param expectedChallenge - The base64url-encoded `options.challenge` returned by `generateRegistrationOptions()`. + * @param expectedOrigin - Website URL (or array of URLs) that the registration should have occurred on. + * @param expectedRPID - RP ID (or array of IDs) that was specified in the registration options. + * @param expectedType - **(Optional)** - The response type expected ('webauthn.create'). + * @param requireUserVerification - **(Optional)** - Enforce user verification by the authenticator (via PIN, fingerprint, etc...) Defaults to `true`. + * @param supportedAlgorithmIDs - **(Optional)** - Array of numeric COSE algorithm identifiers supported for attestation by this RP. See https://www.iana.org/assignments/cose/cose.xhtml#algorithms. Defaults to all supported algorithm IDs. + */ + static async verifyRegistrationResponse(options: VerifyRegistrationResponseOpts): Promise { + return verifyRegistrationResponse(options); + } + + // eslint-disable-next-line jsdoc/require-param, jsdoc/require-returns + /** + * Prepare a value to pass into navigator.credentials.get(...) for authenticator authentication. + * + * **Options:**. + * @param rpID - Valid domain name (after `https://`). + * @param allowCredentials - **(Optional)** - Authenticators previously registered by the user, if any. If undefined the client will ask the user which credential they want to use. + * @param challenge - **(Optional)** - Random value the authenticator needs to sign and pass back user for authentication. Defaults to generating a random value. + * @param timeout - **(Optional)** - How long (in ms) the user can take to complete authentication. Defaults to `60000`. + * @param userVerification - **(Optional)** - Set to `'discouraged'` when asserting as part of a 2FA flow, otherwise set to `'preferred'` or `'required'` as desired. Defaults to `"preferred"`. + * @param extensions - **(Optional)** - Additional plugins the authenticator or browser should use during authentication. + */ + static async generateAuthenticationOptions(options: GenerateAuthenticationOptionsOpts): Promise { + return generateAuthenticationOptions(options); + } + + // eslint-disable-next-line jsdoc/require-param, jsdoc/require-returns + /** + * Verify that the user has legitimately completed the authentication process. + * + * **Options:**. + * @param response - Response returned by **@simplewebauthn/browser**'s `startAssertion()`. + * @param expectedChallenge - The base64url-encoded `options.challenge` returned by `generateAuthenticationOptions()`. + * @param expectedOrigin - Website URL (or array of URLs) that the registration should have occurred on. + * @param expectedRPID - RP ID (or array of IDs) that was specified in the registration options. + * @param authenticator - An internal AuthenticatorDevice matching the credential's ID. + * @param expectedType - **(Optional)** - The response type expected ('webauthn.get'). + * @param requireUserVerification - **(Optional)** - Enforce user verification by the authenticator (via PIN, fingerprint, etc...) Defaults to `true`. + * @param advancedFIDOConfig - **(Optional)** - Options for satisfying more stringent FIDO RP feature requirements. + * @param advancedFIDOConfig.userVerification - **(Optional)** - Enable alternative rules for evaluating the User Presence and User Verified flags in authenticator data: UV (and UP) flags are optional unless this value is `"required"`. + */ + static async verifyAuthenticationResponse(options: VerifyAuthenticationResponseOpts): Promise { + return verifyAuthenticationResponse(options); + } + + /** + * Converts the given Uint8Array to a base64 url string. + * @param value - The value to convert. + * @returns A Base64UrlString that forces you to assign the value with "as string". + */ + static uint8ToBase64UrlString(value: T): ConditionalType { + if (value == undefined) { + return undefined as ConditionalType; + } + return base64.fromArrayBuffer(value, true) as ConditionalType; + } + + /** + * Converts the given Base64UrlString to a Uint8Array. + * @param value - The value to convert. + * @returns The respective Uint8Array. + */ + static base64UrlStringToUint8(value: Base64UrlString): Uint8Array { + const normalString: string = base64.toString(value, true); + return new TextEncoder().encode(normalString); + } +} \ No newline at end of file diff --git a/src/keys.ts b/src/keys.ts index 97e60a2..7bf0ec3 100644 --- a/src/keys.ts +++ b/src/keys.ts @@ -1,9 +1,8 @@ +/* eslint-disable stylistic/max-len */ import { BindingKey } from '@loopback/core'; -import { AccessTokenService, BaseUserService, RefreshTokenService } from './services'; -import { BaseMailService } from './services/mail/base-mail.service'; -import { TwoFactorService } from './services/two-factor.service'; +import { AccessTokenService, BaseMailService, BaseUserService, BaseBiometricCredentialsService, RefreshTokenService, TwoFactorService } from './services'; const ONE_HUNDRED_DAYS_IN_MS: number = 8640000000; const HOUR_IN_MS: number = 3600000; @@ -151,4 +150,13 @@ export namespace LbxJwtBindings { * Provider for the two factor service. */ export const TWO_FACTOR_SERVICE: BindingKey> = BindingKey.create>('lbx.jwt.two.factor.service'); + + /** + * Provider for the biometric credentials service. + */ + export const BIOMETRIC_CREDENTIALS_SERVICE: BindingKey = BindingKey.create('lbx.jwt.biometrics.credentials.service'); + /** + * The key for the repository that stores the password reset token. + */ + export const BIOMETRIC_CREDENTIALS_REPOSITORY: string = 'repositories.BiometricCredentialsRepository'; } \ No newline at end of file diff --git a/src/lbx-jwt.component.ts b/src/lbx-jwt.component.ts index 33fed01..d659b6a 100644 --- a/src/lbx-jwt.component.ts +++ b/src/lbx-jwt.component.ts @@ -2,7 +2,7 @@ import { registerAuthenticationStrategy } from '@loopback/authentication'; import { Application, Binding, Component, CoreBindings, createBindingFromClass, inject } from '@loopback/core'; import { LbxJwtBindings, LbxJwtDefaultValues } from './keys'; -import { BaseUserRepository, CredentialsRepository, RefreshTokenRepository } from './repositories'; +import { BaseUserRepository, BiometricCredentialsRepository, CredentialsRepository, RefreshTokenRepository } from './repositories'; import { PasswordResetTokenRepository } from './repositories/password-reset-token.repository'; import { BaseUserService, RefreshTokenService, TwoFactorService } from './services'; import { AccessTokenService } from './services/access-token.service'; @@ -24,6 +24,7 @@ export class LbxJwtComponent implements Component { Binding.bind(LbxJwtBindings.BASE_USER_SERVICE).toClass(BaseUserService), Binding.bind(LbxJwtBindings.BASE_USER_REPOSITORY).toClass(BaseUserRepository), Binding.bind(LbxJwtBindings.CREDENTIALS_REPOSITORY).toClass(CredentialsRepository), + Binding.bind(LbxJwtBindings.BIOMETRIC_CREDENTIALS_REPOSITORY).toClass(BiometricCredentialsRepository), // refresh token bindings Binding.bind(LbxJwtBindings.REFRESH_TOKEN_SERVICE).toClass(RefreshTokenService), @@ -35,7 +36,7 @@ export class LbxJwtComponent implements Component { Binding.bind(LbxJwtBindings.PASSWORD_RESET_TOKEN_EXPIRES_IN_MS).to(LbxJwtDefaultValues.PASSWORD_RESET_TOKEN_EXPIRES_IN_MS), Binding.bind(LbxJwtBindings.PASSWORD_RESET_TOKEN_REPOSITORY).toClass(PasswordResetTokenRepository), - // two factor authentication + // two factor authentication bindings Binding.bind(LbxJwtBindings.FORCE_TWO_FACTOR).to(false), Binding.bind(LbxJwtBindings.FORCE_TWO_FACTOR_ALLOWED_ROUTES).to(['login']), Binding.bind(LbxJwtBindings.TWO_FACTOR_HEADER).to('X-Authorization-2FA'), diff --git a/src/models/base-user.model.ts b/src/models/base-user.model.ts index 8f98a4a..23de1fd 100644 --- a/src/models/base-user.model.ts +++ b/src/models/base-user.model.ts @@ -1,6 +1,7 @@ import { inject } from '@loopback/core'; -import { Entity, hasOne, model, property } from '@loopback/repository'; +import { Entity, hasMany, hasOne, model, property } from '@loopback/repository'; +import { BiometricCredentials } from './biometric-credentials.model'; import { Credentials } from './credentials.model'; import { LbxJwtBindings } from '../keys'; @@ -72,6 +73,13 @@ export class BaseUser extends Entity { @hasOne(() => Credentials) credentials: Credentials; + /** + * The credentials of the user. + * Contains the hashed password. + */ + @hasMany(() => BiometricCredentials) + biometricCredentials?: BiometricCredentials[]; + /** * Helper for defining the roles open api. */ diff --git a/src/models/biometric-credentials.model.ts b/src/models/biometric-credentials.model.ts new file mode 100644 index 0000000..b09a466 --- /dev/null +++ b/src/models/biometric-credentials.model.ts @@ -0,0 +1,83 @@ +import { Entity, model, property } from '@loopback/repository'; + +import { Base64UrlString } from '../encapsulation/webauthn.utilities'; + +/** + * Biometric credentials of an user. + */ +@model() +export class BiometricCredentials extends Entity { + + /** + * The id of the credentials. + */ + @property({ + type: 'string', + required: true, + defaultFn: 'uuidv4', + id: true + }) + id: string; + + /** + * The public key as a base64 string. + */ + @property({ + type: 'string', + required: true + }) + publicKey: Base64UrlString; + + /** + * The webauthn credential id as a base64 string. + */ + @property({ + type: 'string', + required: true + }) + credentialId: Base64UrlString; + + /** + * The webauthn challenge as a base64 string. + */ + @property({ + type: 'string', + required: true + }) + challenge: Base64UrlString; + + /** + * How many times the credentials have been used for this website. + * Is used internally to prohibit replay attacks. + */ + @property({ + type: 'number', + required: true + }) + counter: number; + + /** + * The user that this credentials belong to. + */ + @property({ + type: 'string', + required: true + }) + baseUserId: string; + + constructor(data?: Partial) { + super(data); + } +} + +/** + * Properties of the entity relations. + */ +export interface BiometricCredentialsRelations { + // describe navigational properties here +} + +/** + * The entity with its relation properties. + */ +export type BiometricCredentialsWithRelations = BiometricCredentials & BiometricCredentialsRelations; \ No newline at end of file diff --git a/src/models/index.ts b/src/models/index.ts index 71c57e5..f5f82dc 100644 --- a/src/models/index.ts +++ b/src/models/index.ts @@ -3,4 +3,5 @@ export * from './credentials.model'; export * from './base-user.model'; export * from './base-user-profile.model'; export * from './jwt.model'; -export * from './password-reset-token.model'; \ No newline at end of file +export * from './password-reset-token.model'; +export * from './biometric-credentials.model'; \ No newline at end of file diff --git a/src/models/jwt.model.ts b/src/models/jwt.model.ts index 70345f4..7db5252 100644 --- a/src/models/jwt.model.ts +++ b/src/models/jwt.model.ts @@ -1,16 +1,26 @@ +import { model, property } from '@loopback/repository'; /** * A Json Web Token, containing the token itself and its expiration date. */ -export interface Jwt { +@model() +export class Jwt { /** * The token value. */ - value: string, + @property({ + type: 'string', + required: true + }) + value: string; /** * The timestamp at which the token is no longer valid. */ - expirationDate: Date + @property({ + type: 'date', + required: true + }) + expirationDate: Date; } /** diff --git a/src/repositories/base-user.repository.ts b/src/repositories/base-user.repository.ts index 5a18c29..f60a7d6 100644 --- a/src/repositories/base-user.repository.ts +++ b/src/repositories/base-user.repository.ts @@ -1,9 +1,10 @@ import { Getter, inject } from '@loopback/core'; -import { DefaultCrudRepository, HasOneRepositoryFactory, juggler, repository } from '@loopback/repository'; +import { DefaultCrudRepository, HasManyRepositoryFactory, HasOneRepositoryFactory, juggler, repository } from '@loopback/repository'; +import { BiometricCredentialsRepository } from './biometric-credentials.repository'; import { CredentialsRepository } from './credentials.repository'; import { LbxJwtBindings } from '../keys'; -import { BaseUser, Credentials, BaseUserRelations } from '../models'; +import { BaseUser, Credentials, BaseUserRelations, BiometricCredentials } from '../models'; export class BaseUserRepository extends DefaultCrudRepository< BaseUser, @@ -11,15 +12,20 @@ export class BaseUserRepository extends DefaultCrudRepo BaseUserRelations > { readonly credentials: HasOneRepositoryFactory; + readonly biometricCredentials: HasManyRepositoryFactory; constructor( @inject(LbxJwtBindings.DATASOURCE_KEY) dataSource: juggler.DataSource, @repository.getter('CredentialsRepository') - protected credentialsRepositoryGetter: Getter + protected credentialsRepositoryGetter: Getter, + @repository.getter('BiometricCredentialsRepository') + protected biometricCredentialsRepositoryGetter: Getter ) { super(BaseUser, dataSource); this.credentials = this.createHasOneRepositoryFactoryFor('credentials', credentialsRepositoryGetter); this.registerInclusionResolver('credentials', this.credentials.inclusionResolver); + this.biometricCredentials = this.createHasManyRepositoryFactoryFor('biometricCredentials', biometricCredentialsRepositoryGetter); + this.registerInclusionResolver('biometricCredentials', this.biometricCredentials.inclusionResolver); } } \ No newline at end of file diff --git a/src/repositories/biometric-credentials.repository.ts b/src/repositories/biometric-credentials.repository.ts new file mode 100644 index 0000000..3da7704 --- /dev/null +++ b/src/repositories/biometric-credentials.repository.ts @@ -0,0 +1,18 @@ +import { inject } from '@loopback/core'; +import { DefaultCrudRepository, juggler } from '@loopback/repository'; + +import { LbxJwtBindings } from '../keys'; +import { BiometricCredentials, BiometricCredentialsRelations } from '../models'; + +export class BiometricCredentialsRepository extends DefaultCrudRepository< + BiometricCredentials, + typeof BiometricCredentials.prototype.id, + BiometricCredentialsRelations +> { + constructor( + @inject(LbxJwtBindings.DATASOURCE_KEY) + dataSource: juggler.DataSource + ) { + super(BiometricCredentials, dataSource); + } +} \ No newline at end of file diff --git a/src/repositories/index.ts b/src/repositories/index.ts index eaa7d55..b5b5234 100644 --- a/src/repositories/index.ts +++ b/src/repositories/index.ts @@ -1,4 +1,5 @@ export * from './refresh-token.repository'; export * from './credentials.repository'; export * from './base-user.repository'; -export * from './password-reset-token.repository'; \ No newline at end of file +export * from './password-reset-token.repository'; +export * from './biometric-credentials.repository'; \ No newline at end of file diff --git a/src/services/access-token.service.ts b/src/services/access-token.service.ts index ee28b3c..1120d2c 100644 --- a/src/services/access-token.service.ts +++ b/src/services/access-token.service.ts @@ -26,7 +26,10 @@ export class AccessTokenService implements TokenService const decodedToken: EncodedJwt = await JwtUtilities.verifyAsync(token, this.accessTokenSecret); // don't copy over token field 'iat' and 'exp', nor 'email' to user profile const userProfile: Omit, 'email'> = Object.assign( - { [securityId]: decodedToken.payload.id, name: '' }, + { + [securityId]: decodedToken.payload.id, + name: '' + }, { id: decodedToken.payload.id, roles: decodedToken.payload.roles diff --git a/src/services/base-biometric-credentials.service.ts b/src/services/base-biometric-credentials.service.ts new file mode 100644 index 0000000..79670ea --- /dev/null +++ b/src/services/base-biometric-credentials.service.ts @@ -0,0 +1,186 @@ +import { HttpErrors } from '@loopback/rest'; +import { VerifiedRegistrationResponse } from '@simplewebauthn/server'; +import { AuthenticationExtensionsAuthenticatorOutputs } from '@simplewebauthn/server/script/helpers/decodeAuthenticatorExtensions'; +import { PublicKeyCredentialCreationOptionsJSON, PublicKeyCredentialRequestOptionsJSON } from '@simplewebauthn/types'; + +import { BiometricRegistrationOptions } from '../controllers'; +import { AuthenticationResponse } from '../controllers/auth/biometric/authentication-response.model'; +import { AuthenticatorExtensionsAuthenticatorOutputs } from '../controllers/auth/biometric/authenticator-extensions-authenticator-outputs.model'; +import { BiometricRegistrationResponse } from '../controllers/auth/biometric/biometric-registration-response.model'; +import { PublicKeyCredentialRequestOptions } from '../controllers/auth/biometric/public-key-credential-request-options.model'; +import { VerifiedBiometricRegistration } from '../controllers/auth/biometric/verified-biometric-registration.model'; +import { Base64UrlString, WebauthnUtilities, VerifiedAuthenticationResponse } from '../encapsulation/webauthn.utilities'; +import { BiometricCredentials } from '../models'; + +/** + * The base service for handling biometric credentials. + */ +export abstract class BaseBiometricCredentialsService { + /** + * Human-readable title for your frontend. + */ + protected abstract readonly RP_NAME: string; + + /** + * The domain of your frontend. Without https:// and without any trailing /. + */ + protected abstract readonly RP_DOMAIN: string; + + /** + * Error message to throw when no registration was found with the provided challenge for verifying the registration response. + */ + // eslint-disable-next-line stylistic/max-len + protected readonly NO_REGISTRATION_WITH_PROVIDED_CHALLENGE_FOUND_ERROR_MESSAGE: string = 'No registration with provided challenge found.'; + + // eslint-disable-next-line jsdoc/require-returns + /** + * The complete origin of your frontend. + * By default this returns https://${this.RP_DOMAIN}. + */ + protected get RP_ORIGIN(): string { + return `https://${this.RP_DOMAIN}`; + } + + /** + * Generate biometric registration options. + * @param userEmail - The email of the user to generate the options for. + * @param alreadyRegisteredCredentials - Any already registered credentials of the user to avoid duplication. + * @returns The generated registration options. + */ + async generateRegistrationOptions( + userEmail: string, + alreadyRegisteredCredentials: BiometricCredentials[] + ): Promise { + const res: PublicKeyCredentialCreationOptionsJSON = await WebauthnUtilities.generateRegistrationOptions({ + rpName: this.RP_NAME, + rpID: this.RP_DOMAIN, + userName: userEmail, + // Prompt users for additional information about the authenticator. + attestationType: 'none', + // Prevent users from re-registering existing authenticators + excludeCredentials: alreadyRegisteredCredentials.map(c => { + return { + id: c.credentialId + }; + }), + authenticatorSelection: { + // Defaults + residentKey: 'preferred', + userVerification: 'preferred' + } + }); + return { + ...res, + challenge: res.challenge as Base64UrlString, + excludeCredentials: res.excludeCredentials?.map(ec => { + return { + ...ec, + id: ec.id as Base64UrlString + }; + }) + }; + } + + /** + * Verifies a biometric registration. + * @param body - The request body including the data to verify (challenge, etc.). + * @param expectedChallenge - The expected challenge. + * @returns The verified biometric registration response. + */ + async verifyRegistrationResponse( + body: BiometricRegistrationResponse, + expectedChallenge?: string + ): Promise { + if (!expectedChallenge) { + throw new HttpErrors.BadRequest(this.NO_REGISTRATION_WITH_PROVIDED_CHALLENGE_FOUND_ERROR_MESSAGE); + } + const res: VerifiedRegistrationResponse = await WebauthnUtilities.verifyRegistrationResponse({ + response: body, + expectedChallenge: expectedChallenge, + expectedOrigin: this.RP_ORIGIN, + expectedRPID: this.RP_DOMAIN + }); + return { + ...res, + registrationInfo: res.registrationInfo == undefined ? undefined : { + ...res.registrationInfo, + credentialID: res.registrationInfo.credentialID as Base64UrlString, + credentialPublicKey: WebauthnUtilities.uint8ToBase64UrlString(res.registrationInfo.credentialPublicKey), + attestationObject: WebauthnUtilities.uint8ToBase64UrlString(res.registrationInfo.attestationObject), + authenticatorExtensionResults: res.registrationInfo.authenticatorExtensionResults == undefined + ? undefined + : this.transformAuthenticatorExtensionResults(res.registrationInfo.authenticatorExtensionResults) + } + }; + } + + /** + * Transforms the given authenticatorExtensionResults to an easier to use structure that uses base64 url strings instead of Uint8Arrays. + * @param authenticatorExtensionResults - The original extension results to transform. + * @returns The transformed value. + */ + protected transformAuthenticatorExtensionResults( + authenticatorExtensionResults: AuthenticationExtensionsAuthenticatorOutputs + ): AuthenticatorExtensionsAuthenticatorOutputs { + return { + ...authenticatorExtensionResults, + devicePubKey: { + ...authenticatorExtensionResults.devicePubKey, + dpk: WebauthnUtilities.uint8ToBase64UrlString(authenticatorExtensionResults.devicePubKey?.dpk), + nonce: WebauthnUtilities.uint8ToBase64UrlString(authenticatorExtensionResults.devicePubKey?.nonce), + scope: WebauthnUtilities.uint8ToBase64UrlString(authenticatorExtensionResults.devicePubKey?.scope), + aaguid: WebauthnUtilities.uint8ToBase64UrlString(authenticatorExtensionResults.devicePubKey?.aaguid) + }, + uvm: authenticatorExtensionResults.uvm == undefined ? undefined : { + uvm: authenticatorExtensionResults.uvm.uvm == undefined + ? undefined + : authenticatorExtensionResults.uvm.uvm.map(u => WebauthnUtilities.uint8ToBase64UrlString(u)) + } + }; + } + + /** + * Generates authentication options from the provided biometric credentials. + * @param credentialsOfUser - The credentials to generate the options for. + * @returns The generated authentication options. + */ + async generateAuthenticationOptions(credentialsOfUser: BiometricCredentials[]): Promise { + const res: PublicKeyCredentialRequestOptionsJSON = await WebauthnUtilities.generateAuthenticationOptions({ + rpID: this.RP_DOMAIN, + allowCredentials: credentialsOfUser + }); + return { + ...res, + challenge: res.challenge as Base64UrlString, + allowCredentials: res.allowCredentials?.map(c => { + return { + ...c, + id: c.id as Base64UrlString + }; + }) + }; + } + + /** + * Verify that the user has legitimately completed the authentication process. + * @param body - The response from the frontend. + * @param biometricCredential - The biometric credential that the user tries to login with. + * @returns The verified authentication response. + */ + async verifyAuthenticationResponse( + body: AuthenticationResponse, + biometricCredential: BiometricCredentials + ): Promise { + return WebauthnUtilities.verifyAuthenticationResponse({ + response: body, + expectedChallenge: biometricCredential.challenge, + expectedOrigin: `https://${this.RP_DOMAIN}`, + expectedRPID: this.RP_DOMAIN, + authenticator: { + credentialID: biometricCredential.credentialId, + credentialPublicKey: WebauthnUtilities.base64UrlStringToUint8(biometricCredential.publicKey), + counter: biometricCredential.counter + } + }); + } +} \ No newline at end of file diff --git a/src/services/base-user.service.ts b/src/services/base-user.service.ts index ca22e10..7c8d4b5 100644 --- a/src/services/base-user.service.ts +++ b/src/services/base-user.service.ts @@ -6,22 +6,26 @@ import { IsolationLevel, juggler } from '@loopback/repository'; import { HttpErrors } from '@loopback/rest'; import { securityId } from '@loopback/security'; +import { BaseBiometricCredentialsService } from './base-biometric-credentials.service'; import { BaseMailService } from './mail/base-mail.service'; +import { AuthenticationResponse } from '../controllers/auth/biometric/authentication-response.model'; import { LoginCredentials } from '../controllers/auth/login-credentials.model'; import { RequestResetPasswordGrant } from '../controllers/auth/request-reset-password-grant.model'; import { BcryptUtilities } from '../encapsulation/bcrypt.utilities'; +import { VerifiedAuthenticationResponse } from '../encapsulation/webauthn.utilities'; import { LbxJwtBindings } from '../keys'; -import { BaseUser, Credentials } from '../models'; +import { BaseUser, BiometricCredentials, Credentials } from '../models'; import { BaseUserProfile } from '../models/base-user-profile.model'; import { PasswordResetToken, PasswordResetTokenWithRelations } from '../models/password-reset-token.model'; -import { BaseUserRepository } from '../repositories'; +import { BaseUserRepository, BiometricCredentialsRepository } from '../repositories'; import { PasswordResetTokenRepository } from '../repositories/password-reset-token.repository'; import { DefaultEntityOmitKeys } from '../types'; /** * The base user service used for authentication and authorization. */ -export class BaseUserService implements UserService, LoginCredentials> { +// eslint-disable-next-line stylistic/max-len +export class BaseUserService implements UserService, LoginCredentials | AuthenticationResponse> { private readonly INVALID_CREDENTIALS_ERROR_MESSAGE: string = 'Invalid email or password.'; @@ -35,11 +39,31 @@ export class BaseUserService implements UserService - ) {} + private readonly mailService: BaseMailService, + @inject(LbxJwtBindings.BIOMETRIC_CREDENTIALS_SERVICE) + private readonly biometricCredentialsService: BaseBiometricCredentialsService, + @inject(LbxJwtBindings.BIOMETRIC_CREDENTIALS_REPOSITORY) + private readonly biometricCredentialsRepository: BiometricCredentialsRepository + ) { } // eslint-disable-next-line jsdoc/require-jsdoc - async verifyCredentials(credentials: LoginCredentials): Promise> { + async verifyCredentials(credentials: LoginCredentials | AuthenticationResponse): Promise> { + if (this.isEmailPasswordCredentials(credentials)) { + return this.verifyEmailPasswordCredentials(credentials); + } + return this.verifyBiometricCredentials(credentials); + } + + private isEmailPasswordCredentials(value: LoginCredentials | AuthenticationResponse): value is LoginCredentials { + return !!(value as LoginCredentials).email; + } + + /** + * Verify the identity of a user with email and password. + * @param credentials - Email and password. + * @returns The identified user. + */ + protected async verifyEmailPasswordCredentials(credentials: LoginCredentials): Promise> { const foundUser: BaseUser | null = await this.userRepository.findOne({ where: { email: credentials.email } }); if (!foundUser) { throw new HttpErrors.Unauthorized(this.INVALID_CREDENTIALS_ERROR_MESSAGE); @@ -54,6 +78,41 @@ export class BaseUserService implements UserService> { + const biometricCredentials: BiometricCredentials[] = await this.userRepository.biometricCredentials(credentials.userId).find(); + const biometricCredential: BiometricCredentials | undefined = biometricCredentials.find(bc => bc.credentialId === credentials.id); + + if (!biometricCredential) { + throw new HttpErrors.NotFound('Could not find the biometric credential'); + } + + const oldCounter: number = biometricCredential.counter; + + try { + const verification: VerifiedAuthenticationResponse = await this.biometricCredentialsService.verifyAuthenticationResponse( + credentials, + biometricCredential + ); + if (!verification.verified) { + throw new Error('Could not verify the biometric credential'); + } + await this.biometricCredentialsRepository.updateById( + biometricCredential.id, + { counter: verification.authenticationInfo.newCounter } + ); + return this.userRepository.findById(credentials.userId); + } + catch (error) { + await this.biometricCredentialsRepository.updateById(biometricCredential.id, { counter: oldCounter }); + throw new HttpErrors.Unauthorized('Could not verify the biometric credential'); + } + } + // eslint-disable-next-line jsdoc/require-jsdoc convertToUserProfile(user: BaseUser): BaseUserProfile { return { diff --git a/src/services/index.ts b/src/services/index.ts index b0bb84d..19ca2da 100644 --- a/src/services/index.ts +++ b/src/services/index.ts @@ -8,4 +8,5 @@ export * from './mail/reset-password-mail.replacements'; export * from './refresh-token.service'; export * from './role.authorizer'; export * from './security.spec.enhancer'; -export * from './two-factor.service'; \ No newline at end of file +export * from './two-factor.service'; +export * from './base-biometric-credentials.service'; \ No newline at end of file diff --git a/src/services/jwt.auth.strategy.ts b/src/services/jwt.auth.strategy.ts index 7bfbb8e..1d732f6 100644 --- a/src/services/jwt.auth.strategy.ts +++ b/src/services/jwt.auth.strategy.ts @@ -92,6 +92,7 @@ export class JwtAuthenticationStrategy implements AuthenticationStrategy { const parts: string[] = authHeaderValue.split(' '); if (parts.length !== 2) { throw new HttpErrors.Unauthorized( + // eslint-disable-next-line stylistic/max-len 'Authorization header value has too many parts. It must follow the pattern: \'Bearer xx.yy.zz\' where xx.yy.zz is a valid JWT token.' ); } diff --git a/src/services/mail/base-mail.service.ts b/src/services/mail/base-mail.service.ts index d89a6db..5cfadf9 100644 --- a/src/services/mail/base-mail.service.ts +++ b/src/services/mail/base-mail.service.ts @@ -79,6 +79,12 @@ export abstract class BaseMailService< */ protected abstract readonly ADDRESS_LINES: string[]; + /** + * The label for Password Reset. + * @default 'Password Reset' + */ + protected readonly PASSWORD_RESET_LABEL: string = 'Password Reset'; + /** * A css color value for the address lines in the footer. */ @@ -167,7 +173,7 @@ export abstract class BaseMailService< return res as DefaultStaticReplacementsType; } - constructor() {} + constructor() { } /** * Sends an email for resetting the password of a specific user. @@ -177,8 +183,8 @@ export abstract class BaseMailService< */ async sendResetPasswordMail(user: BaseUserWithRelations, resetToken: PasswordResetTokenWithRelations): Promise { const replacements: BaseDefaultStaticReplacements & BaseDefaultDynamicReplacements = { - headline: 'Password Reset', - title: 'Password Reset', + headline: this.PASSWORD_RESET_LABEL, + title: this.PASSWORD_RESET_LABEL, content: this.getResetPasswordContent(resetToken, user), ...this.defaultStaticReplacements }; @@ -186,7 +192,7 @@ export abstract class BaseMailService< const email: Email = { to: user.email, from: this.WEBSERVER_MAIL, - subject: 'Password Reset', + subject: this.PASSWORD_RESET_LABEL, html: this.getTemplate(this.BASE_MAIL_TEMPLATE_PATH)(replacements) }; await this.handleEmail(email); @@ -230,7 +236,7 @@ export abstract class BaseMailService< mkdirSync(this.SAVED_EMAILS_PATH); } // for testing emails - writeFileSync(`${this.SAVED_EMAILS_PATH}/${email.subject.replace(/ /g, '')}.test.html`, email.html); + writeFileSync(`${this.SAVED_EMAILS_PATH}/${email.subject.replaceAll(' ', '')}.test.html`, email.html); } /** @@ -250,14 +256,13 @@ export abstract class BaseMailService< return 'Hi,'; } - /** * Gets the handlebars html template from the given path. * @param path - The path of the template. * @returns The compiled handlebars template. */ protected getTemplate(path: string): HandlebarsTemplateDelegate { - const sourceData: string = readFileSync(path, 'utf-8').toString(); + const sourceData: string = readFileSync(path, 'utf8').toString(); return HandlebarsUtilities.compile(sourceData); } } \ No newline at end of file diff --git a/src/services/refresh-token.service.ts b/src/services/refresh-token.service.ts index c27d8e7..ecd8038 100644 --- a/src/services/refresh-token.service.ts +++ b/src/services/refresh-token.service.ts @@ -1,5 +1,5 @@ import { generateUniqueId, inject } from '@loopback/core'; -import { Options, juggler } from '@loopback/repository'; +import { Options } from '@loopback/repository'; import { HttpErrors } from '@loopback/rest'; import { securityId } from '@loopback/security'; @@ -46,8 +46,6 @@ export class RefreshTokenService { private readonly userService: BaseUserService, @inject(LbxJwtBindings.ACCESS_TOKEN_SERVICE) private readonly accessTokenService: AccessTokenService, - @inject(LbxJwtBindings.REFRESH_TOKEN_DATASOURCE_KEY) - private readonly dataSource: juggler.DataSource, @inject(LbxJwtBindings.ACCESS_TOKEN_EXPIRES_IN_MS) private readonly accessTokenExpiresInMs: number ) {} @@ -151,7 +149,7 @@ export class RefreshTokenService { } await this.refreshTokenRepository.deleteAll({ familyId: refreshToken.familyId }); } - catch (e) { + catch (error) { // ignore } } diff --git a/src/services/security.spec.enhancer.ts b/src/services/security.spec.enhancer.ts index c5ebc9f..6e3b23e 100644 --- a/src/services/security.spec.enhancer.ts +++ b/src/services/security.spec.enhancer.ts @@ -35,7 +35,6 @@ export class SecuritySpecEnhancer implements OASEnhancer { */ readonly name: string = 'bearerAuth'; - /** * Modifies the OpenApi specification. * @param spec - The modification done to the OpenApi specification. diff --git a/src/services/two-factor.service.ts b/src/services/two-factor.service.ts index 90b8bb4..c92b3cf 100644 --- a/src/services/two-factor.service.ts +++ b/src/services/two-factor.service.ts @@ -3,9 +3,9 @@ import crypto from 'crypto'; import { inject } from '@loopback/core'; import { Options } from '@loopback/repository'; import { HttpErrors, Request } from '@loopback/rest'; -import { encode } from 'hi-base32'; -import { TOTP } from 'otpauth'; +import { HiBase32Utilities } from '../encapsulation/hi-base32.utilities'; +import { OtpAuthUtilities, OtpTOTP } from '../encapsulation/otp-auth.utilities'; import { LbxJwtBindings } from '../keys'; import { BaseUser, Credentials } from '../models'; import { BaseUserRepository } from '../repositories'; @@ -23,7 +23,7 @@ export class TwoFactorService { protected readonly twoFactorHeader: string, @inject(LbxJwtBindings.TWO_FACTOR_LABEL, { optional: true }) protected readonly twoFactorLabel?: string - ) {} + ) { } /** * Generates a secret and a two factor auth url to use for a qr code. @@ -39,9 +39,15 @@ export class TwoFactorService { } const secret: string = this.generateSecret(); - const totp: TOTP = new TOTP({ label: this.twoFactorLabel, secret: secret }); + const totp: OtpTOTP = OtpAuthUtilities.createTOTP({ + label: this.twoFactorLabel, + secret: secret + }); - await this.baseUserRepository.credentials(userId).patch({ twoFactorSecret: secret, twoFactorAuthUrl: totp.toString() }, options); + await this.baseUserRepository.credentials(userId).patch({ + twoFactorSecret: secret, + twoFactorAuthUrl: totp.toString() + }, options); return totp.toString(); } @@ -69,7 +75,10 @@ export class TwoFactorService { Override LbxJwtBindings.FORCE_TWO_FACTOR if you want to enable turning it off. `); } - await this.baseUserRepository.credentials(userId).patch({ twoFactorSecret: undefined, twoFactorAuthUrl: undefined }, options); + await this.baseUserRepository.credentials(userId).patch({ + twoFactorSecret: undefined, + twoFactorAuthUrl: undefined + }, options); await this.baseUserRepository.updateById(userId, { twoFactorEnabled: false }, options); } @@ -101,15 +110,21 @@ export class TwoFactorService { */ async validateCode(userId: string, code: string, options?: Options): Promise { const credentials: Credentials = await this.baseUserRepository.credentials(userId).get(undefined, options); - const totp: TOTP = new TOTP({ label: this.twoFactorLabel, secret: credentials.twoFactorSecret }); - if (totp.validate({ token: code }) == null) { + const totp: OtpTOTP = OtpAuthUtilities.createTOTP({ + label: this.twoFactorLabel, + secret: credentials.twoFactorSecret + }); + if (totp.validate({ token: code }) == undefined) { throw new HttpErrors.Unauthorized('The provided two factor code is invalid.'); } } private generateSecret(): string { const buffer: Buffer = crypto.randomBytes(15); - const base32: string = encode(buffer).replace(/=/g, '').substring(0, 24); + const base32: string = HiBase32Utilities + .encode(buffer) + .replaceAll('=', '') + .substring(0, 24); return base32; } } \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index 6ba43cb..92806ad 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -10,7 +10,10 @@ "noPropertyAccessFromIndexSignature": true, "noImplicitReturns": true, "noFallthroughCasesInSwitch": true, - "rootDir": "src" + "rootDir": "src", + "lib": [ + "ES2023" + ] }, "include": [ "src" diff --git a/tsconfig.tsbuildinfo b/tsconfig.tsbuildinfo index 8503825..e40984f 100644 --- a/tsconfig.tsbuildinfo +++ b/tsconfig.tsbuildinfo @@ -1 +1 @@ -{"program":{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.esnext.intl.d.ts","./node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.legacy.d.ts","./node_modules/tslib/tslib.d.ts","./node_modules/@loopback/metadata/dist/types.d.ts","./node_modules/@loopback/metadata/dist/decorator-factory.d.ts","./node_modules/reflect-metadata/index.d.ts","./node_modules/@loopback/metadata/dist/reflect.d.ts","./node_modules/@loopback/metadata/dist/inspector.d.ts","./node_modules/@loopback/metadata/dist/index.d.ts","./node_modules/@types/node/assert.d.ts","./node_modules/@types/node/assert/strict.d.ts","./node_modules/@types/node/globals.d.ts","./node_modules/@types/node/async_hooks.d.ts","./node_modules/@types/node/buffer.d.ts","./node_modules/@types/node/child_process.d.ts","./node_modules/@types/node/cluster.d.ts","./node_modules/@types/node/console.d.ts","./node_modules/@types/node/constants.d.ts","./node_modules/@types/node/crypto.d.ts","./node_modules/@types/node/dgram.d.ts","./node_modules/@types/node/diagnostics_channel.d.ts","./node_modules/@types/node/dns.d.ts","./node_modules/@types/node/dns/promises.d.ts","./node_modules/@types/node/domain.d.ts","./node_modules/@types/node/dom-events.d.ts","./node_modules/@types/node/events.d.ts","./node_modules/@types/node/fs.d.ts","./node_modules/@types/node/fs/promises.d.ts","./node_modules/@types/node/http.d.ts","./node_modules/@types/node/http2.d.ts","./node_modules/@types/node/https.d.ts","./node_modules/@types/node/inspector.d.ts","./node_modules/@types/node/module.d.ts","./node_modules/@types/node/net.d.ts","./node_modules/@types/node/os.d.ts","./node_modules/@types/node/path.d.ts","./node_modules/@types/node/perf_hooks.d.ts","./node_modules/@types/node/process.d.ts","./node_modules/@types/node/punycode.d.ts","./node_modules/@types/node/querystring.d.ts","./node_modules/@types/node/readline.d.ts","./node_modules/@types/node/readline/promises.d.ts","./node_modules/@types/node/repl.d.ts","./node_modules/@types/node/stream.d.ts","./node_modules/@types/node/stream/promises.d.ts","./node_modules/@types/node/stream/consumers.d.ts","./node_modules/@types/node/stream/web.d.ts","./node_modules/@types/node/string_decoder.d.ts","./node_modules/@types/node/test.d.ts","./node_modules/@types/node/timers.d.ts","./node_modules/@types/node/timers/promises.d.ts","./node_modules/@types/node/tls.d.ts","./node_modules/@types/node/trace_events.d.ts","./node_modules/@types/node/tty.d.ts","./node_modules/@types/node/url.d.ts","./node_modules/@types/node/util.d.ts","./node_modules/@types/node/v8.d.ts","./node_modules/@types/node/vm.d.ts","./node_modules/@types/node/wasi.d.ts","./node_modules/@types/node/worker_threads.d.ts","./node_modules/@types/node/zlib.d.ts","./node_modules/@types/node/globals.global.d.ts","./node_modules/@types/node/index.d.ts","./node_modules/@loopback/context/dist/binding-key.d.ts","./node_modules/@types/ms/index.d.ts","./node_modules/@types/debug/index.d.ts","./node_modules/@loopback/context/dist/value-promise.d.ts","./node_modules/@loopback/context/dist/binding-filter.d.ts","./node_modules/@loopback/context/dist/binding-sorter.d.ts","./node_modules/@loopback/context/dist/json-types.d.ts","./node_modules/@loopback/context/dist/inject.d.ts","./node_modules/@loopback/context/dist/resolution-session.d.ts","./node_modules/@loopback/context/dist/binding-config.d.ts","./node_modules/@loopback/context/dist/context-event.d.ts","./node_modules/@loopback/context/dist/context-observer.d.ts","./node_modules/@loopback/context/dist/context-subscription.d.ts","./node_modules/@loopback/context/dist/context-tag-indexer.d.ts","./node_modules/@loopback/context/dist/context-view.d.ts","./node_modules/@loopback/context/dist/context.d.ts","./node_modules/@loopback/context/dist/provider.d.ts","./node_modules/@loopback/context/dist/binding.d.ts","./node_modules/@loopback/context/dist/binding-inspector.d.ts","./node_modules/@loopback/context/dist/binding-decorator.d.ts","./node_modules/@loopback/context/dist/inject-config.d.ts","./node_modules/@loopback/context/dist/invocation.d.ts","./node_modules/@loopback/context/dist/interception-proxy.d.ts","./node_modules/@loopback/context/dist/interceptor-chain.d.ts","./node_modules/@loopback/context/dist/interceptor.d.ts","./node_modules/@loopback/context/dist/keys.d.ts","./node_modules/@loopback/context/dist/resolver.d.ts","./node_modules/hyperid/index.d.ts","./node_modules/@loopback/context/dist/unique-id.d.ts","./node_modules/@loopback/context/dist/index.d.ts","./node_modules/@loopback/core/dist/lifecycle.d.ts","./node_modules/@loopback/core/dist/server.d.ts","./node_modules/@loopback/core/dist/component.d.ts","./node_modules/@loopback/core/dist/service.d.ts","./node_modules/@loopback/core/dist/application.d.ts","./node_modules/@loopback/core/dist/extension-point.d.ts","./node_modules/@loopback/core/dist/lifecycle-registry.d.ts","./node_modules/@loopback/core/dist/keys.d.ts","./node_modules/@loopback/core/dist/mixin-target.d.ts","./node_modules/@loopback/core/dist/index.d.ts","./node_modules/@types/mime/index.d.ts","./node_modules/@types/send/index.d.ts","./node_modules/@types/range-parser/index.d.ts","./node_modules/@types/qs/index.d.ts","./node_modules/@types/express-serve-static-core/index.d.ts","./node_modules/@types/http-errors/index.d.ts","./node_modules/@types/serve-static/index.d.ts","./node_modules/@types/connect/index.d.ts","./node_modules/@types/body-parser/index.d.ts","./node_modules/@types/express/index.d.ts","./node_modules/@loopback/filter/dist/types.d.ts","./node_modules/@loopback/filter/dist/query.d.ts","./node_modules/@loopback/filter/dist/index.d.ts","./node_modules/@types/json-schema/index.d.ts","./node_modules/loopback-datasource-juggler/types/common.d.ts","./node_modules/loopback-datasource-juggler/types/connector.d.ts","./node_modules/loopback-datasource-juggler/types/transaction-mixin.d.ts","./node_modules/loopback-datasource-juggler/types/datasource.d.ts","./node_modules/loopback-datasource-juggler/types/observer-mixin.d.ts","./node_modules/loopback-datasource-juggler/types/model.d.ts","./node_modules/loopback-datasource-juggler/types/query.d.ts","./node_modules/loopback-datasource-juggler/types/persisted-model.d.ts","./node_modules/loopback-datasource-juggler/types/relation.d.ts","./node_modules/loopback-datasource-juggler/types/kv-model.d.ts","./node_modules/loopback-datasource-juggler/types/scope.d.ts","./node_modules/loopback-datasource-juggler/types/relation-mixin.d.ts","./node_modules/loopback-datasource-juggler/types/validation-mixin.d.ts","./node_modules/loopback-datasource-juggler/types/inclusion-mixin.d.ts","./node_modules/loopback-datasource-juggler/index.d.ts","./node_modules/@loopback/repository/dist/common-types.d.ts","./node_modules/@loopback/repository/dist/type-resolver.d.ts","./node_modules/@loopback/repository/dist/types/type.d.ts","./node_modules/@loopback/repository/dist/types/any.d.ts","./node_modules/@loopback/repository/dist/types/array.d.ts","./node_modules/@loopback/repository/dist/types/boolean.d.ts","./node_modules/@loopback/repository/dist/types/buffer.d.ts","./node_modules/@loopback/repository/dist/types/date.d.ts","./node_modules/@loopback/repository/dist/types/object.d.ts","./node_modules/@loopback/repository/dist/types/model.d.ts","./node_modules/@loopback/repository/dist/types/null.d.ts","./node_modules/@loopback/repository/dist/types/number.d.ts","./node_modules/@loopback/repository/dist/types/string.d.ts","./node_modules/@loopback/repository/dist/types/union.d.ts","./node_modules/@loopback/repository/dist/types/index.d.ts","./node_modules/@loopback/repository/dist/model.d.ts","./node_modules/@loopback/repository/dist/connectors/connector.d.ts","./node_modules/@loopback/repository/dist/connectors/crud.connector.d.ts","./node_modules/@loopback/repository/dist/connectors/kv.connector.d.ts","./node_modules/@loopback/repository/dist/connectors/index.d.ts","./node_modules/@loopback/repository/dist/datasource.d.ts","./node_modules/@loopback/repository/dist/decorators/metadata.d.ts","./node_modules/@loopback/repository/dist/decorators/model.decorator.d.ts","./node_modules/@loopback/repository/dist/repositories/constraint-utils.d.ts","./node_modules/@loopback/repository/dist/relations/relation.types.d.ts","./node_modules/@loopback/repository/dist/transaction.d.ts","./node_modules/@loopback/repository/dist/repositories/repository.d.ts","./node_modules/@loopback/repository/dist/repositories/kv.repository.d.ts","./node_modules/@loopback/repository/dist/relations/belongs-to/belongs-to.accessor.d.ts","./node_modules/@loopback/repository/dist/relations/belongs-to/belongs-to.decorator.d.ts","./node_modules/@loopback/repository/dist/relations/belongs-to/belongs-to.inclusion-resolver.d.ts","./node_modules/@loopback/repository/dist/relations/belongs-to/belongs-to.repository.d.ts","./node_modules/@loopback/repository/dist/relations/belongs-to/index.d.ts","./node_modules/@loopback/repository/dist/relations/has-many/has-many-through.repository.d.ts","./node_modules/@loopback/repository/dist/relations/has-many/has-many-through.repository-factory.d.ts","./node_modules/@loopback/repository/dist/relations/has-many/has-many.decorator.d.ts","./node_modules/@loopback/repository/dist/relations/has-many/has-many.inclusion-resolver.d.ts","./node_modules/@loopback/repository/dist/relations/has-many/has-many.repository.d.ts","./node_modules/@loopback/repository/dist/relations/has-many/has-many.repository-factory.d.ts","./node_modules/@loopback/repository/dist/relations/has-many/index.d.ts","./node_modules/@loopback/repository/dist/relations/has-one/has-one.decorator.d.ts","./node_modules/@loopback/repository/dist/relations/has-one/has-one.repository.d.ts","./node_modules/@loopback/repository/dist/relations/has-one/has-one.repository-factory.d.ts","./node_modules/@loopback/repository/dist/relations/has-one/index.d.ts","./node_modules/@loopback/repository/dist/relations/references-many/references-many.accessor.d.ts","./node_modules/@loopback/repository/dist/relations/references-many/references-many.decorator.d.ts","./node_modules/@loopback/repository/dist/relations/references-many/references-many.inclusion-resolver.d.ts","./node_modules/@loopback/repository/dist/relations/references-many/references-many.repository.d.ts","./node_modules/@loopback/repository/dist/relations/references-many/index.d.ts","./node_modules/@loopback/repository/dist/relations/relation.decorator.d.ts","./node_modules/@loopback/repository/dist/relations/relation.filter.solver.d.ts","./node_modules/@loopback/repository/dist/relations/relation.helpers.d.ts","./node_modules/@loopback/repository/dist/relations/index.d.ts","./node_modules/@loopback/repository/dist/repositories/legacy-juggler-bridge.d.ts","./node_modules/@loopback/repository/dist/repositories/kv.repository.bridge.d.ts","./node_modules/@loopback/repository/dist/repositories/index.d.ts","./node_modules/@loopback/repository/dist/decorators/repository.decorator.d.ts","./node_modules/@loopback/repository/dist/decorators/index.d.ts","./node_modules/@loopback/repository/dist/define-model-class.d.ts","./node_modules/@loopback/repository/dist/define-repository-class.d.ts","./node_modules/@loopback/repository/dist/errors/entity-not-found.error.d.ts","./node_modules/@loopback/repository/dist/errors/invalid-polymorphism.error.d.ts","./node_modules/@loopback/repository/dist/errors/invalid-relation.error.d.ts","./node_modules/@loopback/repository/dist/errors/index.d.ts","./node_modules/@loopback/repository/dist/keys.d.ts","./node_modules/@loopback/repository/dist/mixins/repository.mixin.d.ts","./node_modules/@loopback/repository/dist/mixins/index.d.ts","./node_modules/@loopback/repository/dist/index.d.ts","./node_modules/@loopback/repository-json-schema/dist/build-schema.d.ts","./node_modules/@loopback/repository-json-schema/dist/filter-json-schema.d.ts","./node_modules/@loopback/repository-json-schema/dist/keys.d.ts","./node_modules/@loopback/repository-json-schema/dist/index.d.ts","./node_modules/openapi3-ts/dist/model/SpecificationExtension.d.ts","./node_modules/openapi3-ts/dist/model/OpenApi.d.ts","./node_modules/openapi3-ts/dist/model/Server.d.ts","./node_modules/openapi3-ts/dist/model/index.d.ts","./node_modules/openapi3-ts/dist/dsl/OpenApiBuilder.d.ts","./node_modules/openapi3-ts/dist/dsl/index.d.ts","./node_modules/openapi3-ts/dist/index.d.ts","./node_modules/@loopback/openapi-v3/dist/types.d.ts","./node_modules/@loopback/openapi-v3/dist/json-to-schema.d.ts","./node_modules/@loopback/openapi-v3/dist/controller-spec.d.ts","./node_modules/@loopback/openapi-v3/dist/decorators/api.decorator.d.ts","./node_modules/@loopback/openapi-v3/dist/decorators/deprecated.decorator.d.ts","./node_modules/@loopback/openapi-v3/dist/decorators/operation.decorator.d.ts","./node_modules/@loopback/openapi-v3/dist/decorators/parameter.decorator.d.ts","./node_modules/@loopback/openapi-v3/dist/decorators/request-body.decorator.d.ts","./node_modules/@loopback/openapi-v3/dist/decorators/response.decorator.d.ts","./node_modules/@loopback/openapi-v3/dist/decorators/tags.decorator.d.ts","./node_modules/@loopback/openapi-v3/dist/decorators/visibility.decorator.d.ts","./node_modules/@loopback/openapi-v3/dist/decorators/index.d.ts","./node_modules/@loopback/openapi-v3/dist/enhancers/types.d.ts","./node_modules/@loopback/openapi-v3/dist/enhancers/spec-enhancer.service.d.ts","./node_modules/@loopback/openapi-v3/dist/enhancers/keys.d.ts","./node_modules/@loopback/openapi-v3/dist/enhancers/index.d.ts","./node_modules/@loopback/openapi-v3/dist/filter-schema.d.ts","./node_modules/@loopback/openapi-v3/dist/index.d.ts","./node_modules/strong-error-handler/index.d.ts","./node_modules/@loopback/http-server/dist/http-server.d.ts","./node_modules/@loopback/http-server/dist/index.d.ts","./node_modules/@loopback/express/dist/types.d.ts","./node_modules/@loopback/express/dist/middleware-registry.d.ts","./node_modules/@loopback/express/dist/express.server.d.ts","./node_modules/@loopback/express/dist/express.application.d.ts","./node_modules/@loopback/express/dist/group-sorter.d.ts","./node_modules/@loopback/express/dist/keys.d.ts","./node_modules/@loopback/express/dist/middleware.d.ts","./node_modules/@loopback/express/dist/middleware-interceptor.d.ts","./node_modules/@loopback/express/dist/mixins/middleware.mixin.d.ts","./node_modules/@loopback/express/dist/providers/invoke-middleware.provider.d.ts","./node_modules/@loopback/express/dist/index.d.ts","./node_modules/uri-js/dist/es5/uri.all.d.ts","./node_modules/ajv/dist/compile/codegen/code.d.ts","./node_modules/ajv/dist/compile/codegen/scope.d.ts","./node_modules/ajv/dist/compile/codegen/index.d.ts","./node_modules/ajv/dist/compile/rules.d.ts","./node_modules/ajv/dist/compile/util.d.ts","./node_modules/ajv/dist/compile/validate/subschema.d.ts","./node_modules/ajv/dist/compile/errors.d.ts","./node_modules/ajv/dist/compile/validate/index.d.ts","./node_modules/ajv/dist/compile/validate/dataType.d.ts","./node_modules/ajv/dist/vocabularies/applicator/additionalItems.d.ts","./node_modules/ajv/dist/vocabularies/applicator/items2020.d.ts","./node_modules/ajv/dist/vocabularies/applicator/contains.d.ts","./node_modules/ajv/dist/vocabularies/applicator/dependencies.d.ts","./node_modules/ajv/dist/vocabularies/applicator/propertyNames.d.ts","./node_modules/ajv/dist/vocabularies/applicator/additionalProperties.d.ts","./node_modules/ajv/dist/vocabularies/applicator/not.d.ts","./node_modules/ajv/dist/vocabularies/applicator/anyOf.d.ts","./node_modules/ajv/dist/vocabularies/applicator/oneOf.d.ts","./node_modules/ajv/dist/vocabularies/applicator/if.d.ts","./node_modules/ajv/dist/vocabularies/applicator/index.d.ts","./node_modules/ajv/dist/vocabularies/validation/limitNumber.d.ts","./node_modules/ajv/dist/vocabularies/validation/multipleOf.d.ts","./node_modules/ajv/dist/vocabularies/validation/pattern.d.ts","./node_modules/ajv/dist/vocabularies/validation/required.d.ts","./node_modules/ajv/dist/vocabularies/validation/uniqueItems.d.ts","./node_modules/ajv/dist/vocabularies/validation/const.d.ts","./node_modules/ajv/dist/vocabularies/validation/enum.d.ts","./node_modules/ajv/dist/vocabularies/validation/index.d.ts","./node_modules/ajv/dist/vocabularies/format/format.d.ts","./node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.d.ts","./node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.d.ts","./node_modules/ajv/dist/vocabularies/validation/dependentRequired.d.ts","./node_modules/ajv/dist/vocabularies/discriminator/types.d.ts","./node_modules/ajv/dist/vocabularies/discriminator/index.d.ts","./node_modules/ajv/dist/vocabularies/errors.d.ts","./node_modules/ajv/dist/types/json-schema.d.ts","./node_modules/ajv/dist/types/jtd-schema.d.ts","./node_modules/ajv/dist/runtime/validation_error.d.ts","./node_modules/ajv/dist/compile/ref_error.d.ts","./node_modules/ajv/dist/core.d.ts","./node_modules/ajv/dist/compile/resolve.d.ts","./node_modules/ajv/dist/compile/index.d.ts","./node_modules/ajv/dist/types/index.d.ts","./node_modules/ajv/dist/ajv.d.ts","./node_modules/ajv-errors/dist/index.d.ts","./node_modules/@loopback/rest/dist/router/route-entry.d.ts","./node_modules/@loopback/rest/dist/router/base-route.d.ts","./node_modules/@loopback/rest/dist/router/controller-route.d.ts","./node_modules/@loopback/rest/dist/router/router-spec.d.ts","./node_modules/@loopback/rest/dist/router/external-express-routes.d.ts","./node_modules/@loopback/rest/dist/router/handler-route.d.ts","./node_modules/@loopback/rest/dist/router/openapi-path.d.ts","./node_modules/@types/cors/index.d.ts","./node_modules/@loopback/rest/dist/http-handler.d.ts","./node_modules/@loopback/rest/dist/sequence.d.ts","./node_modules/@loopback/rest/dist/rest.server.d.ts","./node_modules/@loopback/rest/dist/request-context.d.ts","./node_modules/@loopback/rest/dist/router/redirect-route.d.ts","./node_modules/path-to-regexp/dist/index.d.ts","./node_modules/@loopback/rest/dist/router/rest-router.d.ts","./node_modules/@loopback/rest/dist/router/router-base.d.ts","./node_modules/@loopback/rest/dist/router/regexp-router.d.ts","./node_modules/@loopback/rest/dist/router/route-sort.d.ts","./node_modules/@loopback/rest/dist/router/routing-table.d.ts","./node_modules/@loopback/rest/dist/router/trie.d.ts","./node_modules/@loopback/rest/dist/router/trie-router.d.ts","./node_modules/@loopback/rest/dist/router/index.d.ts","./node_modules/@loopback/rest/dist/types.d.ts","./node_modules/@loopback/rest/dist/body-parsers/types.d.ts","./node_modules/@loopback/rest/dist/body-parsers/body-parser.d.ts","./node_modules/@loopback/rest/dist/body-parsers/body-parser.helpers.d.ts","./node_modules/@loopback/rest/dist/body-parsers/body-parser.json.d.ts","./node_modules/@loopback/rest/dist/body-parsers/body-parser.raw.d.ts","./node_modules/@loopback/rest/dist/body-parsers/body-parser.stream.d.ts","./node_modules/@loopback/rest/dist/body-parsers/body-parser.text.d.ts","./node_modules/@loopback/rest/dist/body-parsers/body-parser.urlencoded.d.ts","./node_modules/@loopback/rest/dist/body-parsers/index.d.ts","./node_modules/@loopback/rest/dist/keys.d.ts","./node_modules/@loopback/rest/dist/parse-json.d.ts","./node_modules/@loopback/rest/dist/parser.d.ts","./node_modules/@loopback/rest/dist/providers/find-route.provider.d.ts","./node_modules/@loopback/rest/dist/providers/invoke-method.provider.d.ts","./node_modules/@loopback/rest/dist/providers/log-error.provider.d.ts","./node_modules/@loopback/rest/dist/providers/parse-params.provider.d.ts","./node_modules/@loopback/rest/dist/providers/reject.provider.d.ts","./node_modules/@loopback/rest/dist/writer.d.ts","./node_modules/@loopback/rest/dist/providers/send.provider.d.ts","./node_modules/@loopback/rest/dist/providers/index.d.ts","./node_modules/@loopback/rest/dist/rest-http-error.d.ts","./node_modules/@loopback/rest/dist/rest.application.d.ts","./node_modules/@loopback/rest/dist/rest.component.d.ts","./node_modules/@loopback/rest/dist/spec-enhancers/info.spec-enhancer.d.ts","./node_modules/@loopback/rest/dist/validation/request-body.validator.d.ts","./node_modules/@loopback/rest/dist/index.d.ts","./node_modules/@loopback/security/dist/types.d.ts","./node_modules/@loopback/security/dist/keys.d.ts","./node_modules/@loopback/security/dist/index.d.ts","./node_modules/@loopback/authentication/dist/types.d.ts","./node_modules/@loopback/authentication/dist/providers/auth-action.provider.d.ts","./node_modules/@loopback/authentication/dist/providers/auth-metadata.provider.d.ts","./node_modules/@loopback/authentication/dist/providers/auth-strategy.provider.d.ts","./node_modules/@loopback/authentication/dist/providers/index.d.ts","./node_modules/@loopback/authentication/dist/authentication.component.d.ts","./node_modules/@loopback/authentication/dist/decorators/authenticate.decorator.d.ts","./node_modules/@loopback/authentication/dist/decorators/index.d.ts","./node_modules/@loopback/authentication/dist/keys.d.ts","./node_modules/@loopback/authentication/dist/services/token.service.d.ts","./node_modules/@loopback/authentication/dist/services/user-identity.service.d.ts","./node_modules/@loopback/authentication/dist/services/user.service.d.ts","./node_modules/@loopback/authentication/dist/services/index.d.ts","./node_modules/@loopback/authentication/dist/index.d.ts","./src/services/convert-ms-to-seconds.function.ts","./node_modules/@types/jsonwebtoken/index.d.ts","./src/models/jwt.model.ts","./src/encapsulation/jwt.utilities.ts","./src/models/base-user-profile.model.ts","./src/services/access-token.service.ts","./node_modules/@types/nodemailer/lib/dkim/index.d.ts","./node_modules/@types/nodemailer/lib/mailer/mail-message.d.ts","./node_modules/@types/nodemailer/lib/xoauth2/index.d.ts","./node_modules/@types/nodemailer/lib/mailer/index.d.ts","./node_modules/@types/nodemailer/lib/mime-node/index.d.ts","./node_modules/@types/nodemailer/lib/smtp-connection/index.d.ts","./node_modules/@types/nodemailer/lib/shared/index.d.ts","./node_modules/@types/nodemailer/lib/json-transport/index.d.ts","./node_modules/@types/nodemailer/lib/sendmail-transport/index.d.ts","./node_modules/@types/nodemailer/lib/ses-transport/index.d.ts","./node_modules/@types/nodemailer/lib/smtp-pool/index.d.ts","./node_modules/@types/nodemailer/lib/smtp-transport/index.d.ts","./node_modules/@types/nodemailer/lib/stream-transport/index.d.ts","./node_modules/@types/nodemailer/index.d.ts","./src/services/mail/base-default.replacements.ts","./src/services/mail/email.model.ts","./src/services/mail/reset-password-mail.replacements.ts","./node_modules/handlebars/types/index.d.ts","./src/encapsulation/handlebars.utilities.ts","./src/models/refresh-token.model.ts","./src/models/credentials.model.ts","./src/models/base-user.model.ts","./src/models/password-reset-token.model.ts","./src/models/index.ts","./src/services/mail/base-mail.service.ts","./src/controllers/auth/login-credentials.model.ts","./src/controllers/auth/request-reset-password-grant.model.ts","./node_modules/@types/bcryptjs/index.d.ts","./src/encapsulation/bcrypt.utilities.ts","./src/repositories/refresh-token.repository.ts","./src/repositories/credentials.repository.ts","./src/repositories/base-user.repository.ts","./src/repositories/password-reset-token.repository.ts","./src/repositories/index.ts","./src/types.ts","./src/services/base-user.service.ts","./node_modules/hi-base32/index.d.ts","./node_modules/otpauth/dist/otpauth.d.ts","./src/services/two-factor.service.ts","./src/services/jwt.auth.strategy.ts","./src/services/refresh-token.service.ts","./node_modules/@loopback/authorization/dist/authorization-component.d.ts","./node_modules/@loopback/authorization/dist/types.d.ts","./node_modules/@loopback/authorization/dist/authorize-interceptor.d.ts","./node_modules/@loopback/authorization/dist/decorators/authorize.d.ts","./node_modules/@loopback/authorization/dist/keys.d.ts","./node_modules/@loopback/authorization/dist/index.d.ts","./src/services/role.authorizer.ts","./src/services/security.spec.enhancer.ts","./src/services/index.ts","./src/keys.ts","./src/lbx-jwt.component.ts","./src/controllers/auth/auth-data.model.ts","./src/controllers/auth/confirm-reset-password.model.ts","./src/controllers/auth/refresh-grant.model.ts","./src/controllers/auth/require-2fa-response.model.ts","./src/controllers/auth/require-password-change.model.ts","./src/controllers/auth/reset-password-token-grant.model.ts","./src/controllers/auth/turn-on-2fa-response.model.ts","./src/controllers/auth/auth.controller.ts","./src/controllers/index.ts","./src/index.ts","./src/__tests__/fixtures/helpers.ts","./src/__tests__/fixtures/test-db.datasource.ts","./node_modules/@types/cookiejar/index.d.ts","./node_modules/buffer/index.d.ts","./node_modules/@types/superagent/index.d.ts","./node_modules/@types/supertest/index.d.ts","./node_modules/@loopback/testlab/dist/client.d.ts","./node_modules/@loopback/testlab/should-as-function.d.ts","./node_modules/@loopback/testlab/dist/expect.d.ts","./node_modules/@loopback/testlab/dist/http-error-logger.d.ts","./node_modules/@loopback/testlab/dist/http-server-config.d.ts","./node_modules/@loopback/testlab/dist/request.d.ts","./node_modules/@types/shot/index.d.ts","./node_modules/@loopback/testlab/dist/shot.d.ts","./node_modules/@types/sinonjs__fake-timers/index.d.ts","./node_modules/@types/sinon/index.d.ts","./node_modules/@loopback/testlab/dist/sinon.d.ts","./node_modules/@loopback/testlab/dist/skip.d.ts","./node_modules/@loopback/testlab/dist/test-sandbox.d.ts","./node_modules/@loopback/testlab/dist/to-json.d.ts","./node_modules/@loopback/testlab/dist/validate-api-spec.d.ts","./node_modules/@loopback/testlab/dist/index.d.ts","./src/__tests__/unit/access-token.service.test.ts","./src/__tests__/unit/base-mail.service.test.ts","./src/__tests__/unit/base-user.service.test.ts","./src/__tests__/unit/refresh-token.service.test.ts","./src/__tests__/unit/two-factor.service.test.ts","./node_modules/@types/estree/index.d.ts","./node_modules/@types/jsonfile/index.d.ts","./node_modules/@types/jsonfile/utils.d.ts","./node_modules/@types/fs-extra/index.d.ts","./node_modules/@types/minimatch/index.d.ts","./node_modules/@types/glob/index.d.ts","./node_modules/@types/json5/index.d.ts","./node_modules/@types/lodash/common/common.d.ts","./node_modules/@types/lodash/common/array.d.ts","./node_modules/@types/lodash/common/collection.d.ts","./node_modules/@types/lodash/common/date.d.ts","./node_modules/@types/lodash/common/function.d.ts","./node_modules/@types/lodash/common/lang.d.ts","./node_modules/@types/lodash/common/math.d.ts","./node_modules/@types/lodash/common/number.d.ts","./node_modules/@types/lodash/common/object.d.ts","./node_modules/@types/lodash/common/seq.d.ts","./node_modules/@types/lodash/common/string.d.ts","./node_modules/@types/lodash/common/util.d.ts","./node_modules/@types/lodash/index.d.ts","./node_modules/@types/mocha/index.d.ts","./node_modules/@types/on-finished/index.d.ts","./node_modules/@types/semver/classes/semver.d.ts","./node_modules/@types/semver/functions/parse.d.ts","./node_modules/@types/semver/functions/valid.d.ts","./node_modules/@types/semver/functions/clean.d.ts","./node_modules/@types/semver/functions/inc.d.ts","./node_modules/@types/semver/functions/diff.d.ts","./node_modules/@types/semver/functions/major.d.ts","./node_modules/@types/semver/functions/minor.d.ts","./node_modules/@types/semver/functions/patch.d.ts","./node_modules/@types/semver/functions/prerelease.d.ts","./node_modules/@types/semver/functions/compare.d.ts","./node_modules/@types/semver/functions/rcompare.d.ts","./node_modules/@types/semver/functions/compare-loose.d.ts","./node_modules/@types/semver/functions/compare-build.d.ts","./node_modules/@types/semver/functions/sort.d.ts","./node_modules/@types/semver/functions/rsort.d.ts","./node_modules/@types/semver/functions/gt.d.ts","./node_modules/@types/semver/functions/lt.d.ts","./node_modules/@types/semver/functions/eq.d.ts","./node_modules/@types/semver/functions/neq.d.ts","./node_modules/@types/semver/functions/gte.d.ts","./node_modules/@types/semver/functions/lte.d.ts","./node_modules/@types/semver/functions/cmp.d.ts","./node_modules/@types/semver/functions/coerce.d.ts","./node_modules/@types/semver/classes/comparator.d.ts","./node_modules/@types/semver/classes/range.d.ts","./node_modules/@types/semver/functions/satisfies.d.ts","./node_modules/@types/semver/ranges/max-satisfying.d.ts","./node_modules/@types/semver/ranges/min-satisfying.d.ts","./node_modules/@types/semver/ranges/to-comparators.d.ts","./node_modules/@types/semver/ranges/min-version.d.ts","./node_modules/@types/semver/ranges/valid.d.ts","./node_modules/@types/semver/ranges/outside.d.ts","./node_modules/@types/semver/ranges/gtr.d.ts","./node_modules/@types/semver/ranges/ltr.d.ts","./node_modules/@types/semver/ranges/intersects.d.ts","./node_modules/@types/semver/ranges/simplify.d.ts","./node_modules/@types/semver/ranges/subset.d.ts","./node_modules/@types/semver/internals/identifiers.d.ts","./node_modules/@types/semver/index.d.ts","./node_modules/@types/type-is/index.d.ts"],"fileInfos":[{"version":"f59215c5f1d886b05395ee7aca73e0ac69ddfad2843aa88530e797879d511bad","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","dc48272d7c333ccf58034c0026162576b7d50ea0e69c3b9292f803fc20720fd5","27147504487dc1159369da4f4da8a26406364624fa9bc3db632f7d94a5bae2c3","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4",{"version":"9d9885c728913c1d16e0d2831b40341d6ad9a0ceecaabc55209b306ad9c736a5","affectsGlobalScope":true},{"version":"17bea081b9c0541f39dd1ae9bc8c78bdd561879a682e60e2f25f688c0ecab248","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"ab22100fdd0d24cfc2cc59d0a00fc8cf449830d9c4030dc54390a46bd562e929","affectsGlobalScope":true},{"version":"f7bd636ae3a4623c503359ada74510c4005df5b36de7f23e1db8a5c543fd176b","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"0c20f4d2358eb679e4ae8a4432bdd96c857a2960fd6800b21ec4008ec59d60ea","affectsGlobalScope":true},{"version":"36ae84ccc0633f7c0787bc6108386c8b773e95d3b052d9464a99cd9b8795fbec","affectsGlobalScope":true},{"version":"82d0d8e269b9eeac02c3bd1c9e884e85d483fcb2cd168bccd6bc54df663da031","affectsGlobalScope":true},{"version":"b8deab98702588840be73d67f02412a2d45a417a3c097b2e96f7f3a42ac483d1","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"376d554d042fb409cb55b5cbaf0b2b4b7e669619493c5d18d5fa8bd67273f82a","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"c4138a3dd7cd6cf1f363ca0f905554e8d81b45844feea17786cdf1626cb8ea06","affectsGlobalScope":true},{"version":"6ff3e2452b055d8f0ec026511c6582b55d935675af67cdb67dd1dc671e8065df","affectsGlobalScope":true},{"version":"03de17b810f426a2f47396b0b99b53a82c1b60e9cba7a7edda47f9bb077882f4","affectsGlobalScope":true},{"version":"8184c6ddf48f0c98429326b428478ecc6143c27f79b79e85740f17e6feb090f1","affectsGlobalScope":true},{"version":"261c4d2cf86ac5a89ad3fb3fafed74cbb6f2f7c1d139b0540933df567d64a6ca","affectsGlobalScope":true},{"version":"6af1425e9973f4924fca986636ac19a0cf9909a7e0d9d3009c349e6244e957b6","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"15a630d6817718a2ddd7088c4f83e4673fde19fa992d2eae2cf51132a302a5d3","affectsGlobalScope":true},{"version":"f06948deb2a51aae25184561c9640fb66afeddb34531a9212d011792b1d19e0a","affectsGlobalScope":true},{"version":"01e0ee7e1f661acedb08b51f8a9b7d7f959e9cdb6441360f06522cc3aea1bf2e","affectsGlobalScope":true},{"version":"ac17a97f816d53d9dd79b0d235e1c0ed54a8cc6a0677e9a3d61efb480b2a3e4e","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"ec0104fee478075cb5171e5f4e3f23add8e02d845ae0165bfa3f1099241fa2aa","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"9cc66b0513ad41cb5f5372cca86ef83a0d37d1c1017580b7dace3ea5661836df","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"307c8b7ebbd7f23a92b73a4c6c0a697beca05b06b036c23a34553e5fe65e4fdc","affectsGlobalScope":true},{"version":"189c0703923150aa30673fa3de411346d727cc44a11c75d05d7cf9ef095daa22","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},"7a1971efcba559ea9002ada4c4e3c925004fb67a755300d53b5edf9399354900","cbd1e5abdd2e2b67ea8162eda02679b2708cba951a54fbbdef91c399954f4889","0449799fbb04e5c04a19debe6919c821a374a4f8de2c0e1c2969696818d66e34",{"version":"8d6d51a5118d000ed3bfe6e1dd1335bebfff3fef23cd2af2f84a24d30f90cc90","affectsGlobalScope":true},"913dba4eedcd1ce248e40804a4b769ccfa21dee5add9ba5fa8635e2d97912d4f","d80a494920a582eb5d4237d4406afd0f5671b2ef132d402c09c78d0eda5da7d4","16bd2b5e8ef81da4b6ab7a15095d567f6106b038d0fbf921d47da2dde85bfb71","587f13f1e8157bd8cec0adda0de4ef558bb8573daa9d518d1e2af38e87ecc91f","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"d32f90e6cf32e99c86009b5f79fa50bc750fe54e17137d9bb029c377a2822ee2","affectsGlobalScope":true},"7a435e0c814f58f23e9a0979045ec0ef5909aac95a70986e8bcce30c27dff228",{"version":"c81c51f43e343b6d89114b17341fb9d381c4ccbb25e0ee77532376052c801ba7","affectsGlobalScope":true},"3dd49afd822c82b63b3905a13e22240f34cf367aea4f4dd0e6564f4bddcb8370","57135ce61976a8b1dadd01bb412406d1805b90db6e8ecb726d0d78e0b5f76050",{"version":"49479e21a040c0177d1b1bc05a124c0383df7a08a0726ad4d9457619642e875a","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","f302f3a47d7758f67f2afc753b9375d6504dde05d2e6ecdb1df50abbb131fc89","93db4c949a785a3dbef7f5e08523be538e468c580dd276178b818e761b3b68cd","5b1c0a23f464f894e7c2b2b6c56df7b9afa60ed48c5345f8618d389a636b2108","be2b092f2765222757c6441b86c53a5ea8dfed47bbc43eab4c5fe37942c866b3","8e6b05abc98adba15e1ac78e137c64576c74002e301d682e66feb77a23907ab8","1ca735bb3d407b2af4fbee7665f3a0a83be52168c728cc209755060ba7ed67bd",{"version":"6b526a5ec4a401ca7c26cfe6a48e641d8f30af76673bad3b06a1b4504594a960","affectsGlobalScope":true},{"version":"6e335a70826a634c5a1a1fa36a2dacbf3712ef2be7a517540ae1de8a1e8ea4f6","affectsGlobalScope":true},"7a2ba0c9af860ac3e77b35ed01fd96d15986f17aa22fe40f188ae556fb1070df","df8529626079d6f9d5d3cd7b6fb7db9cda5a3118d383d8cd46c52aadb59593e7","55709608060f77965c270ac10ac646286589f1bd1cb174fff1778a2dd9a7ef31","3122a3f1136508a27a229e0e4e2848299028300ffa11d0cdfe99df90c492fe20","42b40e40f2a358cda332456214fad311e1806a6abf3cebaaac72496e07556642","354612fe1d49ecc9551ea3a27d94eef2887b64ef4a71f72ca444efe0f2f0ba80",{"version":"ac0c77cd7db52b3c278bdd1452ce754014835493d05b84535f46854fdc2063b2","affectsGlobalScope":true},"fe6dba0e8c69f2b244e3da38e53dd2cc9e51b2543e647e805396af73006613f7","5e2b91328a540a0933ab5c2203f4358918e6f0fe7505d22840a891a6117735f1","3abc3512fa04aa0230f59ea1019311fd8667bd935d28306311dccc8b17e79d5d",{"version":"5810080a0da989a944d3b691b7b479a4a13c75947fb538abb8070710baa5ccee","affectsGlobalScope":true},{"version":"19da7150ca062323b1db6311a6ef058c9b0a39cc64d836b5e9b75d301869653b","affectsGlobalScope":true},"1349077576abb41f0e9c78ec30762ff75b710208aff77f5fdcc6a8c8ce6289dd","e2ce82603102b5c0563f59fb40314cc1ff95a4d521a66ad14146e130ea80d89c","a3e0395220255a350aa9c6d56f882bfcb5b85c19fddf5419ec822cf22246a26d","c27b01e8ddff5cd280711af5e13aecd9a3228d1c256ea797dd64f8fdec5f7df5","898840e876dfd21843db9f2aa6ae38ba2eab550eb780ff62b894b9fbfebfae6b","8bbe7e6c5844e38754c041b52e3d90f7bbd5a0d60739daf30805c92e4f0c65c6","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff","785e5be57d4f20f290a20e7b0c6263f6c57fd6e51283050756cef07d6d651c68","44b8b584a338b190a59f4f6929d072431950c7bd92ec2694821c11bce180c8a5","164deb2409ac5f4da3cd139dbcee7f7d66753d90363a4d7e2db8d8874f272270",{"version":"99822adc2defda34dc1b28b727577ec7c098d878d713157dbe90d212c6bf5e58","affectsGlobalScope":true},{"version":"8a985c7d30aea82342d5017730b546bb2b734fe37a2684ca55d4734deb019d58","affectsGlobalScope":true},"ad08154d9602429522cac965a715fde27d421d69b24756c5d291877dda75353e","5bc85813bfcb6907cc3a960fec8734a29d7884e0e372515147720c5991b8bc22","812b25f798033c202baedf386a1ccc41f9191b122f089bffd10fdccce99fba11","993325544790073f77e945bee046d53988c0bc3ac5695c9cf8098166feb82661",{"version":"4d06f3abc2a6aae86f1be39e397372f74fb6e7964f594d645926b4a3419cc15d","affectsGlobalScope":true},{"version":"0e08c360c9b5961ecb0537b703e253842b3ded53151ee07024148219b61a8baf","affectsGlobalScope":true},"2ce2210032ccaff7710e2abf6a722e62c54960458e73e356b6a365c93ab6ca66","92db194ef7d208d5e4b6242a3434573fd142a621ff996d84cc9dbba3553277d0","16a3080e885ed52d4017c902227a8d0d8daf723d062bec9e45627c6fdcd6699b",{"version":"0bd9543cd8fc0959c76fb8f4f5a26626c2ed62ef4be98fd857bce268066db0a2","affectsGlobalScope":true},"1ca6858a0cbcd74d7db72d7b14c5360a928d1d16748a55ecfa6bfaff8b83071b",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"4905d61a3e1e9b12e12dbf8660fc8d2f085734da6da8d725f395bf41a04853d6","a704d87ca9c1ab7d27838bf6b5b08b50a46cadf8f5212c69d132e3d8e7e422b7","6a9c5127096b35264eb7cd21b2417bfc1d42cceca9ba4ce2bb0c3410b7816042","93b7325b49dfbf613d940ed0e471216657b2d77459dac34f1b5b1678f08f884c","3c717fa044b5281ff25b700a8b75a31c80a86f04b9f5e532e1f660217c219b2a","bc43045cc82a1b08931160efe1690b4589a53d13f3ac930b4d2d4c95fda4a8f8","9bfcab0ec65c815b8a94810511cba1cebb17827e7da21345baf1ee3ab6f64b88","3104a5a0a8f8c58651b31454c74b11b4d962f4eb19a67290ef1d3566d6e6d978","a0c8273a78fc449c3f343f809bd5a0b63cdacaf5c30b88314cda1971c1ec8a45","d98e79905c46b99046004d249e98fadc4624e097ddee256536faff0e87725160","bab66d53a6740ceb64f736b1f7fe8f3b6bebc35226da79b057f0d2634b44422d","369e70853f4f3c09c511ea51923bda9db8ce11b8d6732a0e7400866db6a9374e","e1f422f41a46b8b42dd063ad423cee463dbd6aa2539bed41198a25dbdc36afb3","66df2e0ca83a64c8cb776fb38e04fbbe69aec9430bd73797152d8092fc70cffa","6eecd085adb47e82920a6639910b6ed251fecb87766b2680dce4b2f0d8b565e8","99a5d54b6e94095fc6f19937c8af8eb515fabed14c489561207d09b7307d2552","2b981a93fdc5fb6e1fc38de52a4f4db99a0f815cf69c9c36532769ab59a8808c","a969127a1cbfdf769c5c8963388a8cf50433d9128e4df5e0c39cb6b67d53f13f","5051f8590ff2edb15c53feedc38ec0d2d4d95f7e8dbd73bf01bf2b26e49a59b3","6a87d0d9c8bbe761091dcad88314420937bf7655a1620f3d525091d77e9b5692","e688f047b7c251f316840536f5f8f251d39451a604291e3b49c9fd764d9242bc","5ee2a4c2aa9453647ab3aa7baed8c15a5581db011d182d5c0623eb916af3333c","c903d9c49c5d0e450230d7c4d3054803a392c0fa171620f603fda03d8cb96617","9c617126398bc96329cdf339df6ac3cbe2ef4de33cbb305396806330f3c732f8","fdfb2bb5336365a331de89bad9cbf029c8fdc311ccae3e50d2c7a68a993e5204","978246f85547b870dfdbd62049dc178544241d3dcea64bb0d4800c6323995e56","6d5dbd4e92f05c38eba3d60eb7806175ec4d0f645855d55f27dceff8d6165c22","4eb6a7515174c833f0780a92b3566c2fb07638c4bf1a362831f4b216cb94adb4","ffe129b6d84e3c8ad721e47b9990bb4ad6a936952bcdf3bc8bc19df019b49b52","6465d857aee892bdd7e95fd8bab907ba29b830819346c033e42f7c70731aeaa0","2b62eb1488abd2d34a1fc492ace6f97ae102658246d289574d7e64c344f63c4a","a36a6bdc1eed703f4b095839ea028eb87b49c860f45fc30a0a070bad0972f56d","60b225c508e9a3014de670077ee9e6b5b0e7aece91fdb15f27823b5313de1326","68ef9846f5faedffe2491b06c5d0138d94d7d6b603694cbe0d1487d1e5f2498d","64d2dce919e8d34a6520f412698242b249e04ac5f59f885596004456a6f8c759","917ca55be62a249dd7361d80d08a82bedf0027d2ec266941d45fad75de974fc0","bbdcc7b94186de73cc3f1c214f8cbefe4f0367a950152b0c3061268791e3d2ca","74a5e4e4d74fe96264bbb670ebe8c86fa109a599fe3610675e9f16c415c92eaf","3a41cccdcbb7bf9ea6a98decc29438f857e362f0b83c84c091414221e20542ba","c23232dcbf18943c15f6bb518315260b21ab27e3a0b205c409434171aefac24a","df99a4d3930a061299dfb2a36a772dbe4798d22c61fcc9f1c72974ff54b11cfd","84e3bbd6f80983d468260fdbfeeb431cc81f7ea98d284d836e4d168e36875e86","aad5ffa61406b8e19524738fcf0e6fda8b3485bba98626268fdf252d1b2b630a","16d51f964ec125ad2024cf03f0af444b3bc3ec3614d9345cc54d09bab45c9a4c","ba601641fac98c229ccd4a303f747de376d761babb33229bb7153bed9356c9cc",{"version":"352fc8497a30bc806d7defa0043d85802e5f35a7688731ee9a21456f5cb32a94","affectsGlobalScope":true},"f463d61cf39c3a6a5f96cdf7adfdb72a0b1d663f7b5d5b6dd042adba835430c2","f7a9cb83c8fbc081a8b605880d191e0d0527cde2c1b2b2b623beca8f0203a2cd","6d829824ead8999f87b6df21200df3c6150391b894b4e80662caa462bd48d073","afc559c1b93df37c25aef6b3dfa2d64325b0e112e887ee18bf7e6f4ec383fc90","43cdd474c5aa3340da4816bb8f1ae7f3b1bcf9e70d997afc36a0f2c432378c84","d5b5e517e27ae310b4ffe27359adf974a08e9aff9c8ae86ee5cadcf744920a9c","9d62b52d7cda8ae78ff83a8549cba6deb595ee0c43ac3df90f57e1c6e53a0166","ec9870bcc60e041a8a979daadff24dd3f90b3d0f5ebfcf63c583151875a1da71","dca41e86e89dfb2e85e6935260250f02eb6683b86c2fa16bec729ddd1bcd9b4b","abd151ba4fd07f03c747b8d938f6940969380ba0bfdfa6231929279b8808afd6","48885b97437ae6d643050da9e585fd0aa68ef839c6112eb112becd0307873d5e","4e507449171a9c33c281bab99a4ccd400740a94301f53a502a3d69c774ce1eba","5923d1de7b2b3d6d47baef3d03108d419b25f4740de00a9410596c816520442e","ade0176242cce0023084e366604def3c8fea45b429704dfb7405714b27f12337","ed0903cd1986440659a0d5ff140fb477384fb717eecf917c01572a4c25aa00cc","654d60c1166c724dc0a0ed833b8ef4c0652d6eafd29aabfd8dc7128faa239179","5bfdf355d2900d51697ca05d4be7a911449a8a3dcd735bda0ed6569e1c5a9dd4","b9930cf52c9395839d5a1c9bac2450229913d20fc1b8c9b6fc7ad723209e97a2","ccaf5593bb1fabb7fa155e77f181b08ceaa68fac36145962ac80b6eb5341a734","f855491e4d96d8d555e7de757e7205550594f2e874fd3520d6abb104a5009c67","655cc5cb031bed168c0b4f2133220792c4e7fecd53f19878b79dd3809d9f60f8","214bb077f096d70bd606bac65f8da14c31845d4e60b0c4ede43fc1a7eb40ef34","e4194a9a3622dd16bb81dc95d111ebdbeecf0cb77825fcf633ee0ee7dcf4c80b","d3ca3b539d4ab017c4f898029ef983fa9059eebdc7e09aa49d58c423e3544ccd","6032ff314e159864993a9d7a9c97a8e9fae10a7c144c74466ab28b2208ea7494","e1f5507fadfc5fdc45867e38d0bd506499990bfda8118a09fea85573633e54d3","169cad272c3e1d8ef5fd38368fb84e5686f1e14ab28144d697bd80d1e12b2961","3a53038528b04f1e43da2e010f7e3282aa54c04b8b0346a24d151568a215f142","9b4da6370253129c8796777c2ef8c216d9991bf83a0c191404d0f489f4a2a333","068077646daf5a6486901cfcb2c9d3a0a501bb007e64988e312de54d75cc834e","1db943085fd216b197296c31ebf88a5241da3bcbc2f64014a8476671e69efe73","723fabb2b827b604f21516715bc348a60b39c700f4effeab9dceaebf812f716b","810bc66686948bcb4694f1ff0f82bbd8e9c9ce8803b46ef3d25976e1c928cbbd","468cb0090e17146543a010b0fbc0e649e898ca583d6c7ae798c4c10c1693ce01","9871aec86fc24c40c2f3c0f5f11bae0f6de45dfafe4de2b1f4c39c1efbddd031","ff623fd9c7a7da618052c7719401a14d173462400cc70b0430daaa8975401ef1","29971b14440eaed291a161697081d42f14f61634c8144797f2493a636377ba29","b8655761533aeae1a476197087350441352cf6658ffcb7f00fe6b663cacfc576","8aae0a6c071f358f267ab785b5982f06cf27236d6a53f868b29223824b11f4dc","172933a024e16cac0dadd7e42b0d65ee7fa5989283a993e2f82c1284ef78ef58","2643672101b997427e3551b19e49d8e368e2b710cf3803150bbfd2015fe373a6","07f7223332e34c44e0da451cf82e6d4efc751ac4e689a38189c937287a5f710e","991ea9120137e73c2749d869154a254a1b8f405b8bbe394fb044b1ffb791ab64","a6c52a303cc0bd2793bebede655f1d80c724cfe646313c4de423b3c8ea75c0fe","b413dcad2e940b54d6f7eaaefb11a31b97039f8595e49ec01e222f041f159ca9","fbe4bac5a4c7ff805f22fd4a86bc1ca21e392ee964ed3473009a389e214c85e0","14927af29b0740f63a161cc5f1061c2be17a06d0d62b9879fecc91182c2d9041","bdf85b67bba3a3684104940d13db00385103568bec2adbe49463002c0d5909b9","0923ba27a9ddcd9bd4f813d3cd0a08a3c0ada9613775a5b7846c98bdda2bfb13","3b9d46ae58e22bbdf61d7262812c43dfaa28c58c048b1084d57cddf00a060303","e6056576bda80a1f8290c2b42b63212699bca424f1d729d76e6b423410b7c16d","b09ff6412ab1a48e6767d0f6fae9f18c427719c6e2e6f08af8f07b7445c48f55","5a51b319f1c8d3d139eaa449d75bb9279adcd6862d0352b14a888abfe0cc1ef8","abe19578bf9971d170356bd501234dfd67471e90243354a5d5ed8d99be400c50","2f432f66ec121046b9d91d1e4a5987f3e72dd1ba1359160daa020388f11f9d4e","5a9e7227959d699324082012a3c076a2e62e2802a17d72198be22eff5f2ea782","9bc8e39545c4b910c8bcc5dfff28e6ca2d0f12be46e4b7ec6b6299891e2cd8b7","1b8a91f5ea6fd0d60a73e48b0490d1b3852fbf9438d7789791dd9f41273dd53f","e9ce246b657f9cfa7d6b7ecf97533b2d43e400ff6afc30935e8b38cd9368280c","dc9a0af0ec2ad48dd711073e58e28e141c205846a98279b0514cc61ff18365d9","22664cc405ea229d7af93a892cc36d09baddcd77c00278e0d5e9fcf1ddfc359a","bd57ca4037c93931cef05e98fb740e60085d38461b858cb068fe5d6a37cf2a93","d017aac7b7180e85a77d54eae850c3333273d8c286fc3678b9fa380ad15db319","7adb23346cc87faaed53fc75b21f8d49145d8d8f94efba07a9e02d4c45374100","a751294aeb15a16bd359163f85f4c0d124b78039ce9c14148006638b4c8d2169","a1760ee0e9b031795c1d01e9175a0e6a31094d6328853bd698c16290e3d74358","9d526ef973336bbf16e0a8b5c8fec0312258b134fc927ef36a529e126905109f","7629c0fcde8b71fc88de2befd61cd381d9139f103635a60b1fb42e2f3a18e147","0357334d7b242a71c6daeaae1ce5dc923317b5d65d948470e7cc58339775649e","283dcce5b00a2d02d4f6ec7930cc2f11c0fe262005f77c5cafbd225de0441266","d7ae169c4a140ef8b98e959f105d41480b1a680ba267a5f71e015eadd05c0be8","299444cfb340fc6f5880f844b1e8aedb9aa8832721541f49c94f8de6f6ea1974","9dc5756b066bc56d0ffa2416385ecde479996e98a500d596d597ef54eb6f3d2d","044fa55e31d5b3d7a3b1ff8ce15208ca4b395991b758e26e7eb3c9f4e01d338f","67f8497918e8deb4b1e82c357e5f13adbd222cf9e32ccbd0a17c9eb056c1cb6b","2cc6bcaa43b3edade91686a3fcab05e6df89797f6a106bc1db823e3f8ab9b844","354031625f274503eff7460c3af0d6411a4c2b0981384e949fb2bac4294d33ad","b4abcacb8f9d398a29819c49c2887954b768c74bfabf9674e861b14024910ee4","79d7918aa9a848397c60688df19a5a9912ed54fd56a9ecd9e20e03a8461385fd","e7c0ecd21f29c95ce4cdeb8edc5eb409076e7c3d019645e16bea968c2795d6b5","e1234ae22d86e57c06fcc30cc3d7ee1dec63852ccba3c3f846e0020cb2303820","2929e89a53a04a1144f026d92abe46b7fad5bbb8a61d10e8fd322a05bb2f0c8b","2a4a4a9b3162ae2dc7e4ff2dcf044183d8e5a2abaa0b1c6411c2aebe34685427","a098efcaf2fd54d949fd5b2cd9c5974b0b1b342e554453efe52a94c2e30f833a","4d8b6f4bc85f5795e04881e2eadf4af9413dc1fcea6661915a03c7dde929ff36","fadfe9c73bd4af81f53a399d8c6d2753fa172a7ceb26a5099fc1bf90b619d8dd","4b7d9a5d819bb8a476102e1082eb3b9273b6821591d9d3adf0c9a15e7d29383b","752e6cc6aca11f8743e106c8cc84c5d764d0cb922b1a8fbb3a917ff52e02f2fa","0de4ded237b3f2df44d2cba31a3b2d244d60190a86d76261372f30ca24dca159","65a060792a01e81ae8a629c8fed099fba58ef9529c871cbda56eb3d12be96a97","825ce81429f76c8b4c0741fc2c63fcb724479857e2c73ded59e9ae6b5ad31561","3bdaad936d13dff4f51541fd6a30072281f0996c4d6567caff21b25bea58bb21","2029316e1f667473f14cbe69fe8e202235f56ec00dfd90478b9e4dce1e9f206b","5633ebea0bcb713613ef0848da746d96839a95c0663ecf2df86adb937de8d2c8","8bb07008990356dfa2824e420517ea343b6c0ca6d3ce8840ad37d963fdb2c022","2db0a1b6698287820bae51e5d5c3bf67c63287e69a845f66ea46485ea2fc2060","9508fcc6616ea31bf848463f161571bcb0c8726b267a43e231f21fca775007e7","daf44d045f41c7dc023520708443bc42f914178fbaeb193a59b6acbe3183dc7e","e54119a21539e5c1d0c2e2bcb74fc42303cec7d28c00cddd2c5fef9686caca8b","ab135130c2e2f34a2bd54f69331a1a7773fcdb4d9cfdff9a23831dc4eb6c0a21","f5f9b4e141a2fb1baaa7c3256261292fda87bceb2d27adfd7c407d4750575ec1","1037017fc5dc0109d84ce24aa65eefff6cc9728c608cd1fc54212e4c2db18baa","2fd1f5f37a7da7c28e6e4ec088cca5c6882fe41cd2e4d512cd583ad35f11dcc7","7d2fcf756ccce288835d652728252e8661b74b6b3c93f16cd4561aa795df1db7","41a250af390ef52760282a71b8042b0aa21a881c886b7e0f9af14cd11bf60ae7","c448be29d6853ccc6dddd348100cca9c2d052098cfae02a20b25e2120983795a","d8471a094827afa6a80a3ad08fd4252f47fd8e9db8210647f316c6484b60249c","bff62d88f0894ab1da634840a38b36284a8387d21e4cbd3a998cb72f6b779767","8f4a756abdf2a1476ab371227b87309fb8a0b4aee707bbdbd89ce56f103a8b41","27f7c8f3d8e1a1626ccfe063a942e797a4270e6843e2f4234f4d5ca6e43981e8","c74a8ba54591676a8563996ae9d0cce408a3deb37ec7f7967939ba67c2429236","5b194e434877ddd21bc89c5d73e822d7ce29e6d689a68640b680ffa9900ae619","8dbf3ed20dae9675c8c8071b6173b3c36f396d1b9ea8f9eefb46f4a42f4dc338","4e3e2d98f0ffc1d38a603d3f6221f3736d026e0e9dd764bba6cc0a76876b9688","c6135febcad00c327c4d31dde41e66504dcab283e9ccbd1a7b5e20a807524aad","5a944120996d36db92326f6c10d901c17a1ff27d85ce197ee17ea56a946c1da2","5dbba59f4dbf35da463454f81f019a506d694ede88355b1423064030284cbf1e","448013518b0acc6094ec3b980d88b4bb5e75e10a761ab90a3e3ea68309aecb04","f5240242db7e79d1972df2c6085cf91cb93a4da7bfdb3b804db47b7671324d82","10b8a7023529d0de689c1eee747e4a5a3970ee628de92c1d44a1db2f9d97bb0c","3e11c9a1d1a58ab2fab15a3a17813d3e32f7edd086a75c6b9f235a84b6b4e78f","22324891dda506faf39ace94780ee32d4e0d7bf732e148974655deb116b6e83c","b91ce38499029d321fadd78bfbd61e0efec656f0e7370da5a5e11594ff0932c5","9b02c5fc7ee15fbb88b9a767f810aa82251dc29eb331c66e4f82c67c8ee31b9b","26d47e4becdfef63dcd919ad8bc9a800bef23898e1033b957e5e012936411211","67d5a35260734d97e38fa386a73aa750886e514af281d65ef2bc27dc8d48df92","ef5722b7d9b511bbccd1da92112330a05ca9a366aef882d01d719f80985ec03b","5bf33f1dfd8b39dfa646aeb6aa2b6d9cfe22940fd145e527da6627d80c81dc93","4ea45e560101595d39030e685c0b9ba09ea184bff7436ba0d8fc7c6487d641f3","c9135d9a3ba163ce832591b0b50c3db3663867859a62e0dbe9573da98ee4b0c2","f8c06200397b2bb0d78ddffd7fa8df951b532f16dc6ee43d1245ab353436dd7e","ec15ed86bd1602c8c61b77add9d7b1a24c0d52f55af01c952587fbd94024fc85","241ef3e50563a654377b6d36176ceda9491b1d991d774810af4ec5725f1bc64e","2ef10354f294cdc6f53c5d8ef27ce825afc9b1db4fa8cb28a10b936f1097e54c","8085aa2fa780c43c53ef60b014c9f3f31f2b4608a74c9a96d306009134ba0174","9f3c5498245c38c9016a369795ec5ef1768d09db63643c8dba9656e5ab294825","2d225e7bda2871c066a7079c88174340950fb604f624f2586d3ea27bb9e5f4ff","6a785f84e63234035e511817dd48ada756d984dd8f9344e56eb8b2bdcd8fd001","c1422d016f7df2ccd3594c06f2923199acd09898f2c42f50ea8159f1f856f618","d48084248e3fc241d87852210cabf78f2aed6ce3ea3e2bdaf070e99531c71de2","0eb6152d37c84d6119295493dfcc20c331c6fda1304a513d159cdaa599dcb78b","237df26f8c326ca00cd9d2deb40214a079749062156386b6d75bdcecc6988a6b","cd44995ee13d5d23df17a10213fed7b483fabfd5ea08f267ab52c07ce0b6b4da","58ce1486f851942bd2d3056b399079bc9cb978ec933fe9833ea417e33eab676e","7557d4d7f19f94341f4413575a3453ba7f6039c9591015bcf4282a8e75414043","a3b2cc16f3ce2d882eca44e1066f57a24751545f2a5e4a153d4de31b4cac9bb5","ac2b3b377d3068bfb6e1cb8889c99098f2c875955e2325315991882a74d92cc8","8deb39d89095469957f73bd194d11f01d9894b8c1f1e27fbf3f6e8122576b336","a38a9c41f433b608a0d37e645a31eecf7233ef3d3fffeb626988d3219f80e32f","8e1428dcba6a984489863935049893631170a37f9584c0479f06e1a5b1f04332","1fce9ecb87a2d3898941c60df617e52e50fb0c03c9b7b2ba8381972448327285","5ef0597b8238443908b2c4bf69149ed3894ac0ddd0515ac583d38c7595b151f1","ac52b775a80badff5f4ac329c5725a26bd5aaadd57afa7ad9e98b4844767312a","6ae5b4a63010c82bf2522b4ecfc29ffe6a8b0c5eea6b2b35120077e9ac54d7a1","dd7109c49f416f218915921d44f0f28975df78e04e437c62e1e1eb3be5e18a35","eee181112e420b345fc78422a6cc32385ede3d27e2eaf8b8c4ad8b2c29e3e52e","25fbe57c8ee3079e2201fe580578fab4f3a78881c98865b7c96233af00bf9624","62cc8477858487b4c4de7d7ae5e745a8ce0015c1592f398b63ee05d6e64ca295","cc2a9ec3cb10e4c0b8738b02c31798fad312d21ef20b6a2f5be1d077e9f5409d","4b4fadcda7d34034737598c07e2dca5d7e1e633cb3ba8dd4d2e6a7782b30b296","360fdc8829a51c5428636f1f83e7db36fef6c5a15ed4411b582d00a1c2bd6e97","1cf0d15e6ab1ecabbf329b906ae8543e6b8955133b7f6655f04d433e3a0597ab","7c9f98fe812643141502b30fb2b5ec56d16aaf94f98580276ae37b7924dd44a4","b3547893f24f59d0a644c52f55901b15a3fa1a115bc5ea9a582911469b9348b7","596e5b88b6ca8399076afcc22af6e6e0c4700c7cd1f420a78d637c3fb44a885e","adddf736e08132c7059ee572b128fdacb1c2650ace80d0f582e93d097ed4fbaf","d4cad9dc13e9c5348637170ddd5d95f7ed5fdfc856ddca40234fa55518bc99a6","d70675ba7ba7d02e52b7070a369957a70827e4b2bca2c1680c38a832e87b61fd","3be71f4ce8988a01e2f5368bdd58e1d60236baf511e4510ee9291c7b3729a27e","423d2ccc38e369a7527988d682fafc40267bcd6688a7473e59c5eea20a29b64f","2f9fde0868ed030277c678b435f63fcf03d27c04301299580a4017963cc04ce6","6b6ed4aa017eb6867cef27257379cfe3e16caf628aceae3f0163dbafcaf891ff","25f1159094dc0bf3a71313a74e0885426af21c5d6564a254004f2cadf9c5b052","cde493e09daad4bb29922fe633f760be9f0e8e2f39cdca999cce3b8690b5e13a","3d7f9eb12aface876f7b535cc89dcd416daf77f0b3573333f16ec0a70bcf902a","b83139ae818dd20f365118f9999335ca4cd84ae518348619adc5728e7e0372d5","c3d608cc3e97d22d1d9589262865d5d786c3ee7b0a2ae9716be08634b79b9a8c","62d26d8ba4fa15ab425c1b57a050ed76c5b0ecbffaa53f182110aa3a02405a07","87a4f46dabe0e415e3d38633e4b2295e9a2673ae841886c90a1ff3e66defb367","1a81526753a454468403c6473b7504c297bd4ee9aa8557f4ebf4092db7712fde","320c48aadd4ca9697fc3017cf5ef768c880792ff12369bd6ee2ad771b394d6ac","ecc74e8c835787618cdd96897ac5e13a23ecacae1523ba29b40322883a327676","96bd7f7c2f11e038d2d8214e0ca1450393d0b384c4cf77cc3a3e5bcde2230bde","ca8bae697184a24cf20703c7f68ffcf7de90155ce94428cc4fe07c45ddd9e4a1","e0b21f0b4cc814112ea8e79a862b48674b229405b4e89a21b4ea6533e2880bda","fc9284c76dcb2c4a178a170e1b52c7a94d728a2a9a23c72c12c46e926c4dbac1","cc6b0bb8a9bcef9e4ea2ad21af259393935fe6bf0e50f22719b3e57877a3ad2c","8db1eb2502553a7b2a02c0277048702be4e20e6714b1b975cfdd27729d5eb9f5","efdced704bd09db6984a2a26e3573bc43cdc2379bdef3bcff6cff77efe8ba82b","6cd927f365b089e204789813e42b03dff3e35c9b940df066313bd6502c7657a5","5a09a3bead43c973371eec606cfed059d60182ae0fbf4b5c13e92dcccc4ee101","f22f091e126583a6e63766d38ddefa1421da81e93082354a5069989b779207a4","b40f78587207e67b07de2e16d6c3762a42ef6904e1c524f5a5d263036a120e06","efbb37093ba5f320b9d6e246f10e0805b55396e99fc5c620cd88a3efdf50ae4e","6e7936b20cd2022c2a71f9d780e7f87216c19fde5c18448aaff60059a46ae2e7","7aaab88976c6dbf10175196d9170a18c9efa6359005b5d1dee7481b334828eaa","09c43f67f26a12f83ddb2962ec026bf3f7b5ad9b6b2897c200e462445a4dd257","11128a675218535d8fae0c83484ad2e05641fe90cfecece3888f8afc607e7ecb","eeda33d6368be6990dac830564a7670122d4b30559c16562ed322dc3f7abfdb1","910f0fe9269e5b4fb283cc09e8d5b026790f675d02119f3261e7ec1bae11eb56","3607276069b9a081139f26dc34134dd34a92c282e91870f9c8bcdb7d7eab6cbc","d7c614b14a3f6b5d80c2b3d5edccc76b72183bb114951cc945d84de240579f36","4cddb4ea00cd89bf4ba2ea8460a67bfb60b5448d33ddf14c74633958b4830c46","9aa37132e4ef180708799267965c597f2980287103ae73b3ef108333e15717ce","fc7a6d17f56b8306c7971988c582f44a2c09654ac42029af3733febae0b4da38","e162b2acb839437e5fe1935a9878922e6e380f8346c2720af54d286135e42a3d","163a855d205dc82b7b19389834088a50881bd70273b2c6b0e9ccdd6611f64cff","9cb707e7d617d67a5a8d7aa94fcc8356d8d0d31167c292e45ef8071e28797aa7","af4e47e120bb7a683e5a1b753b7c08f4a7026796d49858c7945a6fd9f67edf57","e17bdab5a1c2b4f9944105aeaa98f4bdca6a89dc1ccf29d201983170cce68a30","74e9f5dfb53546d6f687f7caeffad8a108a3b5b110257ae5f63aadb0b7af68b6","3a3764df8d412fca7ea4867439dee48ea0fb0158cad857ff779d34fdfa2dceaf","76b3c9826707000380d2b78a37a4a38c229cbe5b14e54b7b7803db6724ae0e1c","9a482760661d8ca4513ec415d516e57761f12c34406cb4ae4e2ff0d62d4d9704","e13f01c3ab22c318004d2f15d3332ffcb1d34cb83ac0ff357fbc23aeedca9549","b4d4d5ab8410a933073cb561ff4d0675f2b2677686a1577d941dad972bffac42","e2ab7e1a50393456fceeca33ee8d616caf805128cce5fb9efaa733f695635bac","cb499774f7a4b9bbcd3ee6c7df563360ddf4670e7c415e6b1c12f755b580f646","3e8508d5b96a63bbd0b6d675417d096237cdef8ca09eada6fd8fd78d5ec7bc66","5d37386c890d21493869b2467db600a5e596016a6f610af31da26d6f795d358c","a926ff8854a4a5b1f7da7add0540214fab648956d53e2c0dfc86e58969f65079","f562ed8d82db188ca6cc22f0ff516bbcb8e5d395172d935b6ddd7e898f4afaa9","6a52296acb4312c6ac8fb6789d7445d3aef74d657316fd6cd8e1240ff5f5e1fd","1367218a467b625be9739cefa5a22b6ecc185e4efbc06012c1ec9c7bac5818bd","73422059178620968e52dc700cd7fb3e855fab9f65c4bdc5979f7638cde1891b","0360e8d8fa1bf5016493628cbcf05490ffc29c0235392abb6dbf622bfa4a01cb","02ebcc98593861620f74dec182c56c5e9f653cb018c517872f840067d281717f","6cfb367aaa686f1b33ac37a9c26458344a2f228fa1f7624f0de50c308a18920a","cd9e42cbbc110d2333005e41476e1fd11841cc9fa450136601dd3129b957460a","be4dbc47afac5f25848839f43d0b6e3438b7ec739b97e453c8cf71c9123b01b3","3a5169af64a9cd4b950cfee7aacd42b1af277ab6ba427150dd508960f38ba180","8b27ac3c86af4cb7536ff93478778533b17fd7af5d1fa97bf5224f763323e7db","f14c23f85eda06df795e1be8b54645537df3d47d1b8a61ce031e3886bf4c8f76","4bbb63dff60cc990037497151b6a0c73160fb6e54b5215bcd673c360fef5e019","d51d86c26e431dd4411d0e797847d4a43180d4ad8052756c0cb8fd617ced8247","e8e3e8d58cb561b2443c050dced8944c8d75586dd2f848c770103fdd63f89cb2","381ea3241a572a1ccdf61872cb72c4cb914afbb4a61e1e923262c2e16a764482","9e950c8d19ce1c4a0f9f4767106cc959833573aa8481cd6f98293c0601500770","1628b7801e78690f0ea79bf047d27ce7fc38050f9f76dad6d08682a1e26fbac7","8ba19db5227000f2645cd31b5f6e4232d8e4a1a3677edad8cd6c62476c4c2886","58b55855b9c93765717d3238a61d94f3653c8c1ba777c389b78ca81723f438bd","f674fea94e220cd5df9f28322ab1668e9460a71a89b79ab5b5d738531f4ed6e9","111cbf4bffd2e58f63b39f344a5b94e2f8beb6e6106c5d48ada87feb0a181bf0","dd4b5b8d4f6b96d572b87800b6252b0b08e5f2bd797a2d7c830679d2574e327e","de1df65e112ed48181e8edea7e419efcb1ab9d2038f04c0ca8d5f40efe7ad7d2","6295f719def08e23bc9a94e1ee2185402e36c78cfb2d9bc1be51bd3a2ceb30e1","202c6be737a013f5f393cb338ac6e53f6b228fc7745f209f24889d9c3ec7a9a2",{"version":"1dd4b5cdb923d65df19e6adfd9123b321ae5ff39578142c85c5c6b6813cd0417","signature":"08ea6c7f18ccf2262d0353bec79321fbeb182c00ac1d0842edd95d2af93b2ed6"},"d0133f914f4c8324bc6c6f850669988a48d6d89f6261bd67ad46aed708bb9fe2",{"version":"010921f912e446ec0b25be9f6df8f9fc0df861392ad5174100f08316ce30ab08","signature":"c7dfdea343a53c21e8ab52f33cbf600d9f8a3fdc53888731221cdf1c96c4217f"},{"version":"8ed6a8318246ac2f72cdd05d77497ecbcb8bf9adee98484657f1a7b177030726","signature":"18c36c02a16561f017574afab36cd0ec5cccc9b236ca89e6228d78fc804b096e"},{"version":"1ebf03758db2768b7d757c530d8e45d584405c57be4b0324b80f9965a9ee03f8","signature":"936aff450f4bc76476889d5715830c0ad197d8dc6175731c3775384247aabf47"},{"version":"cccf11b5eb49c23f36d21973e9541631c5658eaeb92c461caf7c73bc52dc4fc0","signature":"67094cca2f8cb742c862feeaee92e77a9253c51dd274f3dc4d4dff76f1d018b5"},"bb654d426b82e0846cd4bd7de91d637039ecdfd63c94447373490178f80846fe","db90f54098b237753ac9c846e39cd49aa538dcad07a2e1c68a138f3c0f8e621d","92ad68795c32309fb43576cacb38bd2677deeed38f5730dcd4a8c5e65463ae15","5564deece7541bc67e5b14dd37baf08eb9c6e9141daf96087c72aca0c95ca175","eecb2ea10a1500dcc6bdeff14be1fb43806f63a9b8562e16e1b4fc8baa8dfa8d","cc2c628b6aa3c87beda3eccaca8ce9f20a2395ce6113d57069e8a0e2f175adca","f3d84d6f83cf131e4db335dc8100898adbeb01dd4cf4e2fe695ab220eac98be4","6521aaade4e1d23cbc4b665083b004aeaca23f3347ba2422f88d1828968a0056","e79130cf2ba010f2b79747bf43b086252ad041b130768331a1144c0a86185877","e9709ed827c40789c669736fc78e2ab603605e8e81325d1e6d7a5eb451810dd0","dafce7a7b279977940b6b4b50017625e4f922f73094433d2875994bdc0b27e87","6fc76efbb61d3336833ef44ff3f37552667f26c2a73b368f3b4b259f19f2c234","479496e5bb48f2f5e981ef646665bc09fd9ab080e86e9ea882ca4369411604af","6c559dee3c6251c261b67df08e01d4cbc89cbd7a63300150c636705733cebfff",{"version":"187b4841296f3e969cc29929f0e312459faca2a375434f2bccf964ec913f2e0d","signature":"88560a21f4721f307da2941192afc3f5cdd80f6aff39648a40fc9b4e192fb773"},{"version":"ebec8e0bb0844d5123cf249a4b050e48df6374bddcfcdc2f5f9509a8fb9e069d","signature":"84c99c23bb926cf4b07889e94a7c34bc8d66bb7ce2787c9d55b1b34f27a0e4c6"},{"version":"914623c15918a77223f575a477c7d9bf14218c8c32aa584051704a6710989296","signature":"fe1ef91979c37e024046f152d7b77e4e2e254aad49a20e17146a816bd73c2a7f"},{"version":"f3a68054f682f21cec1eb6bc37d3c4c7f73b7723c7256f8a1ccc75873024aaa6","affectsGlobalScope":true},{"version":"77e40e3f22bb3d2c25378e2a97c88aa3448fc9793219f8acb80dc9042c53557c","signature":"80b84a53b0a88a18cb734532b2dddda9c70715dd4e5550789f5e32041d0df1d9"},{"version":"ffdb1684c2c571c33214badaedb895ab39208cf8bee4241e63b07aa97b648ddd","signature":"053b8383c578e24a4de857da951d19fbf110e69a1118ccdacc1a0fc478ff32ee"},{"version":"ec67fb4b804cc2b2c142ca2aa982b202113f77abf7a259a0d7be1b78d2b700f4","signature":"85df3eb0fa2cb56216b5fb78ffb6d4dc337807d1cb5fee2263d79851dc174719"},{"version":"9a93be5bcd77b6ee219be619c01505c44b999a2d9da047af73a65c8d1ef5ce25","signature":"fedcad84d5ad52abc1af6f639634cd7583ce7bcd756d8e31bf2f5e030c986c6e"},{"version":"f24c6f2f04041b371b76abe41fdbca2b4f575eae3c4b7ee620e628530fc67e75","signature":"6d878f1622aee0937d8048ea024831b4888d4156f1f3257d10b9ea6edcb2900a"},{"version":"fa03868980b4e86ea28082b103531c00d8c82dff0b25b9f146369ba0b450fa14","signature":"dd6012ee07be80132f3b2e9281e884248a0475b8d2cdb1b591b34d69be8b12a3"},{"version":"39559f5a40dff32ce90eafa05774b7badf2f903b8afd28644a567890cb9c5917","signature":"cdf12163fcd70118387edde5a80b7ab928be7749ad1c8622602e5de816806986"},{"version":"066aa3fe4902daa7ce426d887a9a4875860bf648508ff3cd58d07bd745ef0bd8","signature":"f83ca2a3ee269b155345417b46d5a88d4209c9752f4755ee22f7f39ef7d411ba"},{"version":"2ca0c6346c19f9b417906948a1004c7030268a0b9ed37327611d9a194c4415ca","signature":"d616f7940d16a0704649460615d332bd0e8b980c4a99add2ade55619c28e54e6"},"9dfe431ab1485e17a6055e186c49da9d23af74b965f2e99f8acc6c958778608f",{"version":"8cba046df940a49f605e9ec93685cf7024ee9e4c29525749759ad8aa9a38a5a1","signature":"2157e2738cfc9ed8a3504143a18bd914652ee9a76ff6738ef418f1b8ebeca11e"},{"version":"814fe72fbc481b76c6e04e5ce9065715fca42e6a382d3421d98eecde606b5efd","signature":"c6131f773158c4ee14f2cf96b53b9bc7f697bc0dd002b53d0df463225f51b01e"},{"version":"3ab903fb4ec8a5b8a8830e64559484b02a31de6eb8276dbac9676dd9fa38dc62","signature":"267234269d859259c354ffb154125ada94884e110832ea10fa4d746ea4b09a37"},{"version":"15e5d6bc8e4151e9601d194c8042264c6d04bc00025d0cb32285881846f078a9","signature":"f5ead957ac7716fab1ab609a567d1d68562dedb727e659b3debaedc0b9159999"},{"version":"289cdc9f6634d55bba54b33b419c21a159c4fc1ebe43eebb21645fc7ae9ffdcd","signature":"e6f72e8d2aeb130dc92b072d3998aac82ca24e5dbbe5570d9c38b1bec84899a8"},{"version":"fbc95bb65e70810e13f5a1307605fb28a812d0be1e095dd6ca9841b60fd9a5f9","signature":"8f96c6452f437b5044aa50df5771a4c5e043ed14f0919295f63a3dfa03ce0aa0"},{"version":"ee82f7626f9a1e91617abf5768a1111df118df6734eb05748710b45c3ab030aa","signature":"74962ed264cf39b4566e90da236bff1f104b735f43146e9e6616b6cc4b69989d"},{"version":"ef5cc9f26d430414153676d818cd2c3468796a1e635e5d039cc068971c4b494c","signature":"0174b5a67c693ae029e1cf84a45755dd033fcf2ecbcfdb02a15b50fbfc39e5db"},"47be229e12f1953e577533f93d304ed68be89fb1c36bf86bc340b0b772a1fb6e","abedb0d8af99490e5ba48bd6199b3cd41d4c8d13a333f0d8c59e356a8d8ffd30",{"version":"5ffa54641ba2f5bcfccaceb1c557976c98a9f4af6567c21bfdbc1590286f7861","signature":"24a60d2bc05a58bd8504f2c5e713262289ffe9076ef5e774752d1f82d92d3d0b"},{"version":"4b85fa99c7279d743e7bd22a539ba0afa0758e1ce52ebb461aee0bee647d4e31","signature":"a800d1bab21a472f8254138baa907b40caf4edde4604a739a5c86f8990a758c7"},{"version":"a5f6a0245676436d8ac0b5c590d68dd712ed2b4bd457971ffe876a2192fef8fe","signature":"65212c48fe6c5b780795d9cd1e916b9cb3fd5e944c770a36e883575855af4099"},"2717b230156a36b10d7c670cc2fcd58f48d62872115a7ae73aa0b595170e120a","030ccb2a4ed243af31c0fe3ca7d5d17af41cd8cbb01ef4be6b4cb20893fdec54","a26b9d948a5a7744ceb978f57c556ca3706d9f9ca1e44e779e66276f33dbb15f","56c7cef53f83c4189ce0dfa28f5c9608ef7530dde10cd1696976ee6984d739e9","8b93004cfe3833da1ecc7f3a3207d1d40bc14d50c2386f2024cba08766170cd4","6c53ef41a784ad4ba2e1972d69b6a3fb293a04f860f8ce8a91274c4a4db1985d",{"version":"02b7568c577e54afbf52c4d3002e3eb4437ef899333c34e8192aa2a275d91a75","signature":"79c4d0779959342666da42c6d5ee1af183e881b73d5ff46d1a7f996c8010ca44"},{"version":"85804a18bd0339f3d964ca6c2b7eeb513c148a8cdeaac64f60de4cab0bf1b16f","signature":"3b164eead64f8bb017e41da30565642c4a37ea23e6dba1ff047405e219b57d5c"},{"version":"7c06d2af32d84007ee4a7afbc6f308c2b743d7ddb35b623971b9c90b904e2a47","signature":"4b399ca0f597bb8f0425c4eb74d9f4946aa9a50f290bbaeec9912cb6e54610b1"},{"version":"611fa2c2a3f64c992abc7645a02f22c021f6e259bbc73bcb4c497c183d467203","signature":"5d38b0f8b1c93361044ef5577635ea6d6e9f38049b2e8d9861748b24aa6ac364"},{"version":"de52bbb481fe6236986eba6b6d2934481ed275678620aef1351476bc7a8d465c","signature":"23bfd4bb88efc500d0ec120c98bd831aa7b87cfc21e104a60ac0ee0ba28b7abe"},{"version":"10d3f3ceb5a9a58b2f1049148e5b005a90dc2adebb007cb96f296122e5ccb749","signature":"369a093c37e7d01d7d960344dc7cd5065bda90ce89ecc3f6c451b62dc8fad1fe"},{"version":"5f09498b622ec052e5fbaada1be84bcd6af1f8fef2e09eb07bd861cc3afdb003","signature":"4bbca0aed8697a19094115cb560eeed0b6a798339fc66d8d53fd32cda998e6bc"},{"version":"0c8ebc37ddb867423477be8c1f601ea1091ec91a087aa314a87f07faeba8cdc5","signature":"2bda87f162b373130bf52cc62a2cc3cdbed40de6b139d69e3b4fbfcadd20910d"},{"version":"e8d75353f6ff4bcef59447856f6ca64e3808ada03351deabff020e239a1887ae","signature":"447cec9976712cfe46accc1da433d8b3400ae067a4fa74efdcebad2c08723cb3"},{"version":"5ef98ed6d5d13160c0a8d12369949e482451a9c63df18327f2ab4b6277446206","signature":"6b2ae62d2f88cb0cc7793edf94949f057169275ec9bb0c6c85dbbf0bf764d1f0"},{"version":"ef443ee2f31d8f04f378306b6e3b3ccc2ad475e963c2ffb9f003e415b6884738","signature":"96b0025d0748a16a8b7ee69a03b4574f7c7b1f294e268d979307b204d635cb6e"},{"version":"ba7c5cce9a55f1b80fb5eabe74b47844131b936d55a164a15105600033b2c6fc","signature":"63b6a43ecfa98b81132c555b80c610a1b9f5d05171c48624fa759f39e9a400fe"},{"version":"d1a6f3e851af5e6fa8ff04d53b824650e4e74ee6b3a8638cfdfecdc483b75c8a","signature":"ee4ec9e1423616ce2079a7bb1d1b27c55cc61ad3abe9e8eb86fccadfc5c0bd30"},{"version":"fac635593d14775fb66389f59c05f03c14b49fddc2518b551892977251ab44da","signature":"b5c0259deb74ab4503e478f46438d9a7626f3b1b8bc1169382189b19a1e590c0"},{"version":"12569532286aeaedefe487b635c7573d210a031275e004ed6dd34f86482b1aad","signature":"ef98cb7100d7c1f2c2a7d07cef2ec4a758484ddb46e6748b5a01deb0ef4a74db"},{"version":"52e6d44ee1db367cabde39495b52e40517666cd169a4b8b47719d9aa5d828895","signature":"bc464196e16edd227707c01f8db2981bacff01580cedf23da4548ec3aa2a7b90"},{"version":"538753b6d6855fed9ea6995258bfcd1e425bb1a988c1003b884188773d661bf5","signature":"7da16fd318fbc1a77aa89cbd794b0f1d18643e6febe2439fa4ba01dded2bd64d"},"8d48b8f8a377ade8dd1f000625bc276eea067f2529cc9cafdf082d17142107d6","8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","214f291323316651737db8ca0db4c14ae568a429e59fc5b4f364dd80fe72d5f6","76232dbb982272b182a76ad8745a9b02724dc9896e2328ce360e2c56c64c9778","e483cffd30d5fcbd4cc6fca4388ef8d03a59031a44f65c2a834bfb2038ac3bb5",{"version":"3396ef4cf6ca8f700e9455fd48e691c3681d708f353edd9e7dd5aeb42f835607","affectsGlobalScope":true},"5791b63ac312a792f888401243acd5084f27c2c76792d436fa68e9581a74bd6d","09bfef1df97172585ad2f9ac7f322dee137db5e2219c049161394d8a3b0c4844","a0f6ad4d754c855f21f761776ac0561e69b0c70e3b98ce4a329f708d1a72cb91","c7a577c3640abb83946c875df383cc6f76bd44b2c2946ef178c6828091959068","c55bbca1b587fc0a0c725c600abbee2c4bbdbae7e4291719fd7e6f0f68bdf3b8","1cf8fa7e76e354e5b17084f67c89e9c655034269a704e2dc1c6bd4f27ec4dedd","f83b320cceccfc48457a818d18fc9a006ab18d0bdd727aa2c2e73dc1b4a45e98","5445b5383991fff958fe3a7b0a9c1b9c672a613bc30fda97aee6eddb4053c0d3","c5db71b50eb0ab36b683b6850f585af6eac3d1234d0d4dd6f4bd103f58e68a46","c700397f184165b11444703123c6c83af4ee4b02728094bf245b2abb061acc34","c09d3d8964ff66481d085b2702fb5295a94756dce4739beda789b11b89c3aaca","d22280c29a0d4d6acba8968091ed9b772946c78e36d4b0cb7eca1803b8b8c2f0","8730131999f563de6b559e35f6253007cd311e676e9d17999c9287dd3e11e618","38992be86825669bca9d84dfa17319e89c30969e05ba85d9c7f99dbc9c2eb83f",{"version":"5a6bdaa8c741460b9063396ba1818b9e00709015a19bd30048f860c7fce5bd83","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"e5a550c22125585cf51a26efcacd7e87a0407ab88750eed93b583978b580c18c","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"da6d374fa3695c7138fb4e9bbab6c31994ac2aeeccbfa99a469feeb6be033c33","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"11535c84d1544e678390fcc873eafec5c5e7326e8855be42ce6a289cd1334372","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"8680f7e44b06b11a795275f1538e6b5d97893dbd23f5bcdd35d30ba76919089b","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},"6b1f9c7839370502ac5b10013ed905da932e7612548a0f7ee57d340f5a9ec86b","ab754c02d70553f7131f80a5c44f6e45c3251afb571a73117274b4724f683e02","5d9a0b6e6be8dbb259f64037bce02f34692e8c1519f5cd5d467d7fa4490dced4","732a22e28e99e56f4f76410ef1d28ab502ae569ed7a25161db50629814f0c4e3","963d59066dd6742da1918a6213a209bcc205b8ee53b1876ee2b4e6d80f97c85e","9c5c92b7fb8c38ff1b46df69701f2d1ea8e2d6468e3cd8f73d8af5e6f7864576","96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","675e702f2032766a91eeadee64f51014c64688525da99dccd8178f0c599f13a8","458111fc89d11d2151277c822dfdc1a28fa5b6b2493cf942e37d4cd0a6ee5f22","19c816167e076e7c24f074389c6cf3ed87bdbb917d1ea439ca281f9d26db2439","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","febf0b2de54781102b00f61653b21377390a048fbf5262718c91860d11ff34a6","98f9d826db9cd99d27a01a59ee5f22863df00ccf1aaf43e1d7db80ebf716f7c3","0aaef8cded245bf5036a7a40b65622dd6c4da71f7a35343112edbe112b348a1e","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","dcd91d3b697cb650b95db5471189b99815af5db2a1cd28760f91e0b12ede8ed5","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","b03afe4bec768ae333582915146f48b161e567a81b5ebc31c4d78af089770ac9","df996e25faa505f85aeb294d15ebe61b399cf1d1e49959cdfaf2cc0815c203f9","30abc554c7ad13063a02ddd06757929b34357aea1f6fcf4ca39114cb0fc19384",{"version":"677646e2620795c98a539fb12fb531f10331c217cef1492132b2518f894fa92d","affectsGlobalScope":true},"c69767317aec528b574762b18727db85eef7cf66f33617cc0ee905cbe5a43d97","2b93035328f7778d200252681c1d86285d501ed424825a18f81e4c3028aa51d9","2ac9c8332c5f8510b8bdd571f8271e0f39b0577714d5e95c1e79a12b2616f069","42c21aa963e7b86fa00801d96e88b36803188018d5ad91db2a9101bccd40b3ff","d31eb848cdebb4c55b4893b335a7c0cca95ad66dee13cbb7d0893810c0a9c301","b9f96255e1048ed2ea33ec553122716f0e57fc1c3ad778e9aa15f5b46547bd23","7a9e0a564fee396cacf706523b5aeed96e04c6b871a8bebefad78499fbffc5bc","906c751ef5822ec0dadcea2f0e9db64a33fb4ee926cc9f7efa38afe5d5371b2a","5387c049e9702f2d2d7ece1a74836a14b47fbebe9bbeb19f94c580a37c855351","c68391fb9efad5d99ff332c65b1606248c4e4a9f1dd9a087204242b56c7126d6","e9cf02252d3a0ced987d24845dcb1f11c1be5541f17e5daa44c6de2d18138d0c","e8b02b879754d85f48489294f99147aeccc352c760d95a6fe2b6e49cd400b2fe","9f6908ab3d8a86c68b86e38578afc7095114e66b2fc36a2a96e9252aac3998e0","0eedb2344442b143ddcd788f87096961cd8572b64f10b4afc3356aa0460171c6","71405cc70f183d029cc5018375f6c35117ffdaf11846c35ebf85ee3956b1b2a6","c68baff4d8ba346130e9753cefe2e487a16731bf17e05fdacc81e8c9a26aae9d","2cd15528d8bb5d0453aa339b4b52e0696e8b07e790c153831c642c3dea5ac8af","479d622e66283ffa9883fbc33e441f7fc928b2277ff30aacbec7b7761b4e9579","ade307876dc5ca267ca308d09e737b611505e015c535863f22420a11fffc1c54","f8cdefa3e0dee639eccbe9794b46f90291e5fd3989fcba60d2f08fde56179fb9","86c5a62f99aac7053976e317dbe9acb2eaf903aaf3d2e5bb1cafe5c2df7b37a8","2b300954ce01a8343866f737656e13243e86e5baef51bd0631b21dcef1f6e954","a2d409a9ffd872d6b9d78ead00baa116bbc73cfa959fce9a2f29d3227876b2a1","b288936f560cd71f4a6002953290de9ff8dfbfbf37f5a9391be5c83322324898","61178a781ef82e0ff54f9430397e71e8f365fc1e3725e0e5346f2de7b0d50dfa","6a6ccb37feb3aad32d9be026a3337db195979cd5727a616fc0f557e974101a54","c649ea79205c029a02272ef55b7ab14ada0903db26144d2205021f24727ac7a3","38e2b02897c6357bbcff729ef84c736727b45cc152abe95a7567caccdfad2a1d","d6610ea7e0b1a7686dba062a1e5544dd7d34140f4545305b7c6afaebfb348341","3dee35db743bdba2c8d19aece7ac049bde6fa587e195d86547c882784e6ba34c","b15e55c5fa977c2f25ca0b1db52cfa2d1fd4bf0baf90a8b90d4a7678ca462ff1","f41d30972724714763a2698ae949fbc463afb203b5fa7c4ad7e4de0871129a17","843dd7b6a7c6269fd43827303f5cbe65c1fecabc30b4670a50d5a15d57daeeb9","f06d8b8567ee9fd799bf7f806efe93b67683ef24f4dea5b23ef12edff4434d9d","6017384f697ff38bc3ef6a546df5b230c3c31329db84cbfe686c83bec011e2b2","e1a5b30d9248549ca0c0bb1d653bafae20c64c4aa5928cc4cd3017b55c2177b0","a593632d5878f17295bd53e1c77f27bf4c15212822f764a2bfc1702f4b413fa0","a868a534ba1c2ca9060b8a13b0ffbbbf78b4be7b0ff80d8c75b02773f7192c29","da7545aba8f54a50fde23e2ede00158dc8112560d934cee58098dfb03aae9b9d","34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","a1a261624efb3a00ff346b13580f70f3463b8cdcc58b60f5793ff11785d52cab","37e4c904fc4eede08a541021c074c160cf27f6a756e4459197c2711fb8b2a648"],"root":[397,[399,402],[417,419],[421,429],[431,438],[441,443],[450,466],[487,491]],"options":{"declaration":true,"emitDecoratorMetadata":true,"esModuleInterop":true,"experimentalDecorators":true,"importHelpers":true,"module":1,"noFallthroughCasesInSwitch":true,"noImplicitOverride":true,"noImplicitReturns":true,"noPropertyAccessFromIndexSignature":true,"outDir":"./dist","rootDir":"./src","skipLibCheck":true,"sourceMap":true,"strict":true,"strictPropertyInitialization":false,"target":5,"useUnknownInCatchVariables":false},"fileIdsList":[[97,144,387],[97,144,383],[97,389],[97,383,387,388,390,391,395],[97,144,379,382,383,388],[97,144,154,379,382,383],[97,384,385,386],[97,392,393,394],[97,382],[97],[97,144,154,379,382],[97,144],[97,144,445],[97,444,445,446,447,448],[97,144,444,445],[97,144,382],[97,105,108,113,120],[97,108,123],[97,105,108,122],[50,97,105,108,121,122],[97,122],[67,97,104,105,108,111,113,120,121],[97,120,122],[97,108,109,120,122],[67,97,104,115,116,120],[97,108,120,122],[67,97,104,108,109,110,112,113,115,116,117,120,122],[67,97,104,105,107,108,109,110,111,113,114,115,116,117,118,119,122],[50,97,105,108,109,110,111,112,113,114,115,116,117,119,120,121,122,123,124,125,126,127,128,129,130,131,133],[97,105,112],[50,97,105,108,109,110,111,113,120,122],[97,108,113,120,126],[97,105,108,109,110,120,126],[50,97,108,120,121,122,123,126,128],[97,108,113,120],[97,105,114],[97,108],[97,108,109,112,120,122],[97,132],[97,104,134,135,136,137,138],[97,134,135,136,139],[97,134],[97,134,135,136,137,138,139,140,141,142,143],[97,134,139,141],[97,134,135],[97,135],[97,134,139],[97,144,276],[97,144,154,273,274,275],[97,274,275,276,277,278,279,280,281,282,283],[97,144,274],[97,144,154,274],[97,144,154],[97,156],[97,155],[70,72,75,97,104],[97,272],[45,97],[45,46,48,49,97],[45,48,97],[47,97],[97,245,253,254],[97,255],[97,256,257,258,259,260,261,262,263],[97,253],[97,245,253],[97,265,266,267],[97,144,266],[97,144,253,265],[97,144,253],[97,245,253,254,255,264,268,269],[97,241,252],[97,241,245],[97,158,241],[97,241,242,243,244],[97,144,245],[97,174,189],[97,157,174,189,190],[97,190,191,192],[97,174,193],[97,195,196,230],[97,144,189],[97,174,189,194,227,229],[97,174,189,229],[97,189],[97,234,235,236],[97,226],[97,157,158,173,174,175,188,189,193,194,199,226,229,231,232,233,237,238,240],[97,239],[97,144,174,189,194,229],[97,174,175,188,241],[97,189,198,200],[97,189,198],[97,189,198,229],[97,144,174,189,229,241],[97,202,203,204,205],[97,207,241],[97,241],[97,189,198,211,229],[97,144,157,174,189,229],[97,207,208,209,210,211,212],[97,189,198,215,229],[97,144,157,174,189,229,241],[97,214,215,216],[97,198,206,213,217,222,223,224,225],[97,218,219,220,221],[97,144,174,189,229],[97,157],[97,144,157,174,175,189],[97,157,174,189],[97,197,200,201,227,228],[97,173,174,189,201,227],[97,174,189,200],[97,144,157,173,174,189,199,200,226],[97,157,174,189,194,198,199],[97,174],[97,176],[97,104,174,176],[97,176,177,178,179,180,181,182,183,184,185,186,187],[97,174,182,189],[97,174,176],[97,144,154,270,353,354],[97,150,153,154,353],[97,154,353,354],[97,354,355,356,357,358,359,360,361],[97,154,270,353],[97,144,154,270,341,352,353],[97,150,270,271,339,340,341,342,352,353,362,363,364,365,371,373,374,375,376,377,378],[70,72,97,104,144,154,270,271,273,284,339,340,341,352,353,362],[97,154,352,353,362],[97,144,284,339,353],[97,366,367,368,369,370,372],[97,144,284,353],[97,353],[97,144,284,353,362],[97,271,353],[97,144,284,371],[97,144,154,284,341],[97,150],[97,144,149,151,270,284,334,340,341,352,362,363],[97,144,341],[70,97,104,144,149,151,154,270,273,284,338,339,340,342,352,353,362],[97,144,270,331,353],[97,144,270,332,353],[97,149,151,154,270,284,331,334],[97,331,332,333,334,335,336,337,343,345,347,348,349,350,351],[97,270,342,352,353],[97,331,344,345,346],[97,154,331,353],[97,144,270,353],[97,331],[97,154,331,345,353],[97,270],[97,154,270,331,333,335,345,353],[97,331,345,346],[97,144,284,342,353],[97,144,270],[97,153,154,270,284,329,330,352],[97,270,353,379],[97,154,353],[97,380,381],[97,144,380],[70,97,104,470],[97,472],[97,154],[72,75,97,104],[97,471,473,474,475,476,478,481,482,483,484,485],[70,72,97,104],[70,97,104,154,477],[97,480],[70,97,104,152],[70,97,104],[97,106],[67,70,97,104,146,147,148],[97,148,149,151,153],[68,97,104,493,494],[67,68,97,104,496],[68,96,97,104],[60,97,104],[97,499,501,502,503,504,505,506,507,508,509,510,511],[97,499,500,502,503,504,505,506,507,508,509,510,511],[97,500,501,502,503,504,505,506,507,508,509,510,511],[97,499,500,501,503,504,505,506,507,508,509,510,511],[97,499,500,501,502,504,505,506,507,508,509,510,511],[97,499,500,501,502,503,505,506,507,508,509,510,511],[97,499,500,501,502,503,504,506,507,508,509,510,511],[97,499,500,501,502,503,504,505,507,508,509,510,511],[97,499,500,501,502,503,504,505,506,508,509,510,511],[97,499,500,501,502,503,504,505,506,507,509,510,511],[97,499,500,501,502,503,504,505,506,507,508,510,511],[97,499,500,501,502,503,504,505,506,507,508,509,511],[97,499,500,501,502,503,504,505,506,507,508,509,510],[51,97],[54,97],[55,60,88,97],[56,67,68,75,85,96,97],[56,57,67,75,97],[58,97],[59,60,68,76,97],[60,85,93,97],[61,63,67,75,97],[62,97],[63,64,97],[67,97],[65,67,97],[67,68,69,85,96,97],[67,68,69,82,85,88,97],[97,101],[63,67,70,75,85,96,97],[67,68,70,71,75,85,93,96,97],[70,72,85,93,96,97],[51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103],[67,73,97],[74,96,97],[63,67,75,85,97],[76,97],[77,97],[54,78,97],[79,95,97,101],[80,97],[81,97],[67,82,83,97],[82,84,97,99],[55,67,85,86,87,88,97],[55,85,87,97],[85,86,97],[88,97],[89,97],[54,85,97],[67,91,92,97],[91,92,97],[60,75,85,93,97],[94,97],[75,95,97],[55,70,81,96,97],[60,97],[85,97,98],[97,99],[97,100],[55,60,67,69,78,85,96,97,99,101],[85,97,102],[97,104,404,406,410,411,412,413,414,415],[85,97,104],[67,97,104,404,406,407,409,416],[67,75,85,96,97,104,403,404,405,407,408,409,416],[85,97,104,406,407],[85,97,104,406,408],[97,104,404,406,407,409,416],[85,97,104,408],[67,75,85,93,97,104,405,407,409],[67,97,104,404,406,407,408,409,416],[67,85,97,104,404,405,406,407,408,409,416],[67,85,97,104,404,406,407,409,416],[70,85,97,104,409],[97,514,553],[97,514,538,553],[97,553],[97,514],[97,514,539,553],[97,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552],[97,539,553],[68,85,97,104,145],[70,97,104,145,150],[70,85,97,104],[97,479],[55,68,70,85,97,104,467],[97,469],[97,329],[97,288,289,293,320,321,323,324,325,327,328],[97,286,287],[97,286],[97,288,328],[97,288,289,325,326,328],[97,328],[97,285,328,329],[97,288,289,327,328],[97,288,289,291,292,327,328],[97,288,289,290,327,328],[97,288,289,293,320,321,322,323,324,327,328],[97,285,288,289,293,325,327],[97,293,328],[97,295,296,297,298,299,300,301,302,303,304,328],[97,318,328],[97,294,305,313,314,315,316,317,319],[97,298,328],[97,306,307,308,309,310,311,312,328],[97,159,160,161,162,163,164,165,166,167,168,169,170,171,172],[97,173],[67,97,159,160,161,164],[97,159,165,173],[97,159,164],[67,97,159,162,163],[97,159,164,165],[97,159,166,167],[97,159,164,165,166],[97,159],[97,249],[97,250],[97,249,251],[97,246],[97,247],[97,246,247,248],[44,97],[44,97,241],[44,97,379,382,426,452,465,486],[44,68,97,416,426,437,452,486],[44,60,97,241,379,382,416,426,429,431,436,437,452,486],[44,97,241,379,382,416,426,436,437,452,465,486],[44,97,144,426,431,436,437,440,452,466,486],[44,97,144,241,426,453],[44,97,144,241,379,382,396,400,426,428,429,431,436,437,441,452,453,455,456,457,458,459,460,461],[44,97,428,429,455,456,457,458,460,461,462],[44,97,430],[44,97,420],[44,97,398,399],[44,97,426,436,437,452,453,454,463],[44,97,144,427,441,452],[44,97,144,396,402,435,436,442,451,452,453],[44,97,382],[44,97,144,241,423,453],[44,97,399,401,422,423,424,425],[44,97,241,424],[44,97,241,426],[44,97,144,241,426,433,453],[44,97,432,433,434,435],[44,97,144,241,425,426,434,453],[44,97,144,379,382,396,397,399,400,401,453],[44,60,97,144,241,379,382,396,401,425,426,427,428,429,431,435,436,437,453],[44,97,402,417,418,419,427,438,441,442,443,450,451],[44,97,144,379,396,426,436,441,453],[44,68,77,97,416,417,418,419,421,425,426],[44,97,406],[44,97,144,241,379,382,397,400,401,402,426,436,437,438,453],[44,97,426,449],[44,97,144,379],[44,60,97,144,241,379,426,436,439,440,453],[241],[241,426],[241,379,426,428,429,436,437,441,452,455,456,457,458,459,460,461],[428,429,455,456,457,458,460,461,462],[398,399],[426,436,437,452,453,454,463],[144,427,441,452],[144],[382],[241,423],[399,401,422,423,424,425],[144,241,426,433],[432,433,434,435],[144,241,425,426,434],[396,401],[241,396,401,426,427,428,429,435,436],[402,417,418,419,427,438,441,442,443,450,451],[379,396,426,436,441],[416,417,418,425,426],[406],[241,401,402,426,436,437,438],[449],[379],[241,379,436]],"referencedMap":[[388,1],[389,2],[390,3],[396,4],[391,5],[384,6],[385,2],[386,2],[387,7],[395,8],[392,9],[393,10],[394,9],[383,11],[444,12],[446,13],[447,13],[449,14],[448,15],[445,16],[114,17],[124,18],[109,19],[123,20],[105,10],[110,21],[122,22],[115,23],[116,24],[117,25],[118,26],[119,27],[120,28],[134,29],[125,30],[112,31],[127,32],[128,33],[129,34],[126,35],[111,10],[130,36],[121,37],[113,38],[131,35],[133,39],[108,10],[139,40],[137,41],[140,42],[144,43],[142,44],[141,45],[135,42],[143,42],[136,46],[138,47],[277,48],[276,49],[278,10],[284,50],[279,51],[281,52],[275,51],[280,51],[282,51],[283,51],[274,53],[157,54],[156,55],[155,10],[272,56],[273,57],[46,58],[50,59],[49,60],[48,61],[45,10],[255,62],[256,63],[257,10],[264,64],[258,65],[259,66],[260,65],[261,65],[262,10],[263,65],[268,67],[267,68],[266,69],[265,70],[269,66],[270,71],[254,66],[253,72],[242,73],[243,74],[245,75],[244,76],[174,10],[190,77],[191,78],[193,79],[192,78],[194,80],[231,81],[195,82],[196,82],[230,83],[232,77],[233,84],[234,85],[237,86],[235,10],[236,87],[241,88],[238,10],[240,89],[239,90],[189,91],[202,92],[203,93],[204,94],[205,95],[206,96],[208,97],[207,98],[209,93],[210,94],[212,99],[211,100],[213,101],[214,93],[216,102],[215,103],[217,104],[226,105],[222,106],[218,92],[219,93],[220,94],[221,107],[223,85],[224,108],[225,98],[198,109],[197,110],[229,111],[228,112],[201,113],[227,114],[200,115],[199,10],[175,116],[177,117],[178,117],[179,117],[180,118],[181,117],[188,119],[183,120],[184,117],[185,117],[182,121],[186,117],[176,116],[187,117],[355,122],[356,123],[357,124],[358,124],[359,124],[360,124],[361,124],[362,125],[354,126],[339,127],[379,128],[363,129],[364,10],[365,130],[366,131],[373,132],[367,133],[368,134],[369,135],[370,136],[372,137],[342,138],[374,139],[375,140],[376,141],[341,142],[332,143],[333,144],[335,145],[336,144],[352,146],[337,10],[343,147],[347,148],[345,149],[331,150],[348,151],[346,152],[334,153],[349,154],[351,155],[350,134],[340,156],[377,157],[353,158],[378,159],[371,160],[382,161],[381,162],[380,10],[471,163],[473,164],[474,165],[475,166],[486,167],[476,168],[478,169],[481,170],[482,10],[483,10],[484,10],[485,10],[472,10],[430,10],[153,171],[152,172],[467,10],[338,172],[107,173],[492,10],[149,174],[154,175],[495,176],[497,177],[150,10],[158,10],[498,10],[493,178],[494,10],[398,179],[500,180],[501,181],[499,182],[502,183],[503,184],[504,185],[505,186],[506,187],[507,188],[508,189],[509,190],[510,191],[511,192],[145,10],[496,10],[512,10],[106,10],[51,193],[52,193],[54,194],[55,195],[56,196],[57,197],[58,198],[59,199],[60,200],[61,201],[62,202],[63,203],[64,203],[66,204],[65,205],[67,204],[68,206],[69,207],[53,208],[103,10],[70,209],[71,210],[72,211],[104,212],[73,213],[74,214],[75,215],[76,216],[77,217],[78,218],[79,219],[80,220],[81,221],[82,222],[83,222],[84,223],[85,224],[87,225],[86,226],[88,227],[89,228],[90,229],[91,230],[92,231],[93,232],[94,233],[95,234],[96,235],[97,236],[98,237],[99,238],[100,239],[101,240],[102,241],[416,242],[403,243],[410,244],[406,245],[404,246],[407,247],[411,248],[412,244],[409,249],[408,250],[413,251],[414,252],[415,253],[405,254],[513,172],[148,10],[147,10],[538,255],[539,256],[514,257],[517,257],[536,255],[537,255],[527,255],[526,258],[524,255],[519,255],[532,255],[530,255],[534,255],[518,255],[531,255],[535,255],[520,255],[521,255],[533,255],[515,255],[522,255],[523,255],[525,255],[529,255],[540,259],[528,255],[516,255],[553,260],[552,10],[547,259],[549,261],[548,259],[541,259],[542,259],[544,259],[546,259],[550,261],[551,261],[543,261],[545,261],[146,262],[151,263],[477,264],[480,265],[479,10],[469,266],[470,267],[554,172],[330,268],[329,269],[286,10],[288,270],[287,271],[292,272],[327,273],[324,274],[326,275],[289,274],[290,276],[294,276],[293,277],[291,278],[325,279],[323,274],[328,280],[321,10],[322,10],[295,281],[300,274],[302,274],[297,274],[298,281],[304,274],[305,282],[296,274],[301,274],[303,274],[299,274],[319,283],[318,274],[320,284],[314,274],[316,274],[315,274],[311,274],[317,285],[312,274],[313,286],[306,274],[307,274],[308,274],[309,274],[310,274],[468,10],[420,10],[439,10],[132,10],[173,287],[159,10],[160,288],[162,289],[172,290],[168,291],[164,292],[163,291],[166,293],[165,10],[170,294],[167,295],[169,295],[161,296],[171,296],[250,297],[251,298],[252,299],[247,300],[248,301],[246,10],[249,302],[440,10],[344,10],[47,10],[271,165],[44,10],[42,10],[43,10],[9,10],[8,10],[2,10],[10,10],[11,10],[12,10],[13,10],[14,10],[15,10],[16,10],[17,10],[3,10],[4,10],[21,10],[18,10],[19,10],[20,10],[22,10],[23,10],[24,10],[5,10],[25,10],[26,10],[27,10],[28,10],[6,10],[32,10],[29,10],[30,10],[31,10],[33,10],[7,10],[34,10],[39,10],[40,10],[35,10],[36,10],[37,10],[38,10],[1,10],[41,10],[285,10],[465,303],[466,304],[487,305],[488,306],[489,307],[490,308],[491,309],[455,310],[462,311],[456,304],[428,304],[457,304],[429,304],[458,304],[459,304],[460,304],[461,304],[463,312],[431,313],[421,314],[400,315],[464,316],[453,317],[454,318],[401,319],[424,320],[423,304],[426,321],[399,303],[425,322],[422,323],[434,324],[433,310],[436,325],[435,326],[432,310],[402,327],[438,328],[397,303],[452,329],[442,330],[417,303],[427,331],[418,332],[419,303],[443,333],[450,334],[451,335],[441,336],[437,303]],"exportedModulesMap":[[388,1],[389,2],[390,3],[396,4],[391,5],[384,6],[385,2],[386,2],[387,7],[395,8],[392,9],[393,10],[394,9],[383,11],[444,12],[446,13],[447,13],[449,14],[448,15],[445,16],[114,17],[124,18],[109,19],[123,20],[105,10],[110,21],[122,22],[115,23],[116,24],[117,25],[118,26],[119,27],[120,28],[134,29],[125,30],[112,31],[127,32],[128,33],[129,34],[126,35],[111,10],[130,36],[121,37],[113,38],[131,35],[133,39],[108,10],[139,40],[137,41],[140,42],[144,43],[142,44],[141,45],[135,42],[143,42],[136,46],[138,47],[277,48],[276,49],[278,10],[284,50],[279,51],[281,52],[275,51],[280,51],[282,51],[283,51],[274,53],[157,54],[156,55],[155,10],[272,56],[273,57],[46,58],[50,59],[49,60],[48,61],[45,10],[255,62],[256,63],[257,10],[264,64],[258,65],[259,66],[260,65],[261,65],[262,10],[263,65],[268,67],[267,68],[266,69],[265,70],[269,66],[270,71],[254,66],[253,72],[242,73],[243,74],[245,75],[244,76],[174,10],[190,77],[191,78],[193,79],[192,78],[194,80],[231,81],[195,82],[196,82],[230,83],[232,77],[233,84],[234,85],[237,86],[235,10],[236,87],[241,88],[238,10],[240,89],[239,90],[189,91],[202,92],[203,93],[204,94],[205,95],[206,96],[208,97],[207,98],[209,93],[210,94],[212,99],[211,100],[213,101],[214,93],[216,102],[215,103],[217,104],[226,105],[222,106],[218,92],[219,93],[220,94],[221,107],[223,85],[224,108],[225,98],[198,109],[197,110],[229,111],[228,112],[201,113],[227,114],[200,115],[199,10],[175,116],[177,117],[178,117],[179,117],[180,118],[181,117],[188,119],[183,120],[184,117],[185,117],[182,121],[186,117],[176,116],[187,117],[355,122],[356,123],[357,124],[358,124],[359,124],[360,124],[361,124],[362,125],[354,126],[339,127],[379,128],[363,129],[364,10],[365,130],[366,131],[373,132],[367,133],[368,134],[369,135],[370,136],[372,137],[342,138],[374,139],[375,140],[376,141],[341,142],[332,143],[333,144],[335,145],[336,144],[352,146],[337,10],[343,147],[347,148],[345,149],[331,150],[348,151],[346,152],[334,153],[349,154],[351,155],[350,134],[340,156],[377,157],[353,158],[378,159],[371,160],[382,161],[381,162],[380,10],[471,163],[473,164],[474,165],[475,166],[486,167],[476,168],[478,169],[481,170],[482,10],[483,10],[484,10],[485,10],[472,10],[430,10],[153,171],[152,172],[467,10],[338,172],[107,173],[492,10],[149,174],[154,175],[495,176],[497,177],[150,10],[158,10],[498,10],[493,178],[494,10],[398,179],[500,180],[501,181],[499,182],[502,183],[503,184],[504,185],[505,186],[506,187],[507,188],[508,189],[509,190],[510,191],[511,192],[145,10],[496,10],[512,10],[106,10],[51,193],[52,193],[54,194],[55,195],[56,196],[57,197],[58,198],[59,199],[60,200],[61,201],[62,202],[63,203],[64,203],[66,204],[65,205],[67,204],[68,206],[69,207],[53,208],[103,10],[70,209],[71,210],[72,211],[104,212],[73,213],[74,214],[75,215],[76,216],[77,217],[78,218],[79,219],[80,220],[81,221],[82,222],[83,222],[84,223],[85,224],[87,225],[86,226],[88,227],[89,228],[90,229],[91,230],[92,231],[93,232],[94,233],[95,234],[96,235],[97,236],[98,237],[99,238],[100,239],[101,240],[102,241],[416,242],[403,243],[410,244],[406,245],[404,246],[407,247],[411,248],[412,244],[409,249],[408,250],[413,251],[414,252],[415,253],[405,254],[513,172],[148,10],[147,10],[538,255],[539,256],[514,257],[517,257],[536,255],[537,255],[527,255],[526,258],[524,255],[519,255],[532,255],[530,255],[534,255],[518,255],[531,255],[535,255],[520,255],[521,255],[533,255],[515,255],[522,255],[523,255],[525,255],[529,255],[540,259],[528,255],[516,255],[553,260],[552,10],[547,259],[549,261],[548,259],[541,259],[542,259],[544,259],[546,259],[550,261],[551,261],[543,261],[545,261],[146,262],[151,263],[477,264],[480,265],[479,10],[469,266],[470,267],[554,172],[330,268],[329,269],[286,10],[288,270],[287,271],[292,272],[327,273],[324,274],[326,275],[289,274],[290,276],[294,276],[293,277],[291,278],[325,279],[323,274],[328,280],[321,10],[322,10],[295,281],[300,274],[302,274],[297,274],[298,281],[304,274],[305,282],[296,274],[301,274],[303,274],[299,274],[319,283],[318,274],[320,284],[314,274],[316,274],[315,274],[311,274],[317,285],[312,274],[313,286],[306,274],[307,274],[308,274],[309,274],[310,274],[468,10],[420,10],[439,10],[132,10],[173,287],[159,10],[160,288],[162,289],[172,290],[168,291],[164,292],[163,291],[166,293],[165,10],[170,294],[167,295],[169,295],[161,296],[171,296],[250,297],[251,298],[252,299],[247,300],[248,301],[246,10],[249,302],[440,10],[344,10],[47,10],[271,165],[44,10],[42,10],[43,10],[9,10],[8,10],[2,10],[10,10],[11,10],[12,10],[13,10],[14,10],[15,10],[16,10],[17,10],[3,10],[4,10],[21,10],[18,10],[19,10],[20,10],[22,10],[23,10],[24,10],[5,10],[25,10],[26,10],[27,10],[28,10],[6,10],[32,10],[29,10],[30,10],[31,10],[33,10],[7,10],[34,10],[39,10],[40,10],[35,10],[36,10],[37,10],[38,10],[1,10],[41,10],[285,10],[466,337],[455,338],[462,339],[456,337],[428,337],[457,337],[429,337],[460,337],[463,340],[400,341],[464,342],[453,343],[454,344],[401,345],[424,346],[423,337],[426,347],[425,337],[422,337],[434,348],[433,338],[436,349],[435,350],[432,338],[402,351],[438,352],[452,353],[442,354],[427,355],[418,356],[443,357],[450,358],[451,359],[441,360]],"semanticDiagnosticsPerFile":[388,389,390,396,391,384,385,386,387,395,392,393,394,383,444,446,447,449,448,445,114,124,109,123,105,110,122,115,116,117,118,119,120,134,125,112,127,128,129,126,111,130,121,113,131,133,108,139,137,140,144,142,141,135,143,136,138,277,276,278,284,279,281,275,280,282,283,274,157,156,155,272,273,46,50,49,48,45,255,256,257,264,258,259,260,261,262,263,268,267,266,265,269,270,254,253,242,243,245,244,174,190,191,193,192,194,231,195,196,230,232,233,234,237,235,236,241,238,240,239,189,202,203,204,205,206,208,207,209,210,212,211,213,214,216,215,217,226,222,218,219,220,221,223,224,225,198,197,229,228,201,227,200,199,175,177,178,179,180,181,188,183,184,185,182,186,176,187,355,356,357,358,359,360,361,362,354,339,379,363,364,365,366,373,367,368,369,370,372,342,374,375,376,341,332,333,335,336,352,337,343,347,345,331,348,346,334,349,351,350,340,377,353,378,371,382,381,380,471,473,474,475,486,476,478,481,482,483,484,485,472,430,153,152,467,338,107,492,149,154,495,497,150,158,498,493,494,398,500,501,499,502,503,504,505,506,507,508,509,510,511,145,496,512,106,51,52,54,55,56,57,58,59,60,61,62,63,64,66,65,67,68,69,53,103,70,71,72,104,73,74,75,76,77,78,79,80,81,82,83,84,85,87,86,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,416,403,410,406,404,407,411,412,409,408,413,414,415,405,513,148,147,538,539,514,517,536,537,527,526,524,519,532,530,534,518,531,535,520,521,533,515,522,523,525,529,540,528,516,553,552,547,549,548,541,542,544,546,550,551,543,545,146,151,477,480,479,469,470,554,330,329,286,288,287,292,327,324,326,289,290,294,293,291,325,323,328,321,322,295,300,302,297,298,304,305,296,301,303,299,319,318,320,314,316,315,311,317,312,313,306,307,308,309,310,468,420,439,132,173,159,160,162,172,168,164,163,166,165,170,167,169,161,171,250,251,252,247,248,246,249,440,344,47,271,44,42,43,9,8,2,10,11,12,13,14,15,16,17,3,4,21,18,19,20,22,23,24,5,25,26,27,28,6,32,29,30,31,33,7,34,39,40,35,36,37,38,1,41,285,465,466,487,488,489,490,491,455,462,456,428,457,429,458,459,460,461,463,431,421,400,464,453,454,401,424,423,426,399,425,422,434,433,436,435,432,402,438,397,452,442,417,427,418,419,443,450,451,441,437]},"version":"5.1.6"} \ No newline at end of file +{"program":{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.es2021.d.ts","./node_modules/typescript/lib/lib.es2022.d.ts","./node_modules/typescript/lib/lib.es2023.d.ts","./node_modules/typescript/lib/lib.dom.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.es2021.promise.d.ts","./node_modules/typescript/lib/lib.es2021.string.d.ts","./node_modules/typescript/lib/lib.es2021.weakref.d.ts","./node_modules/typescript/lib/lib.es2021.intl.d.ts","./node_modules/typescript/lib/lib.es2022.array.d.ts","./node_modules/typescript/lib/lib.es2022.error.d.ts","./node_modules/typescript/lib/lib.es2022.intl.d.ts","./node_modules/typescript/lib/lib.es2022.object.d.ts","./node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2022.string.d.ts","./node_modules/typescript/lib/lib.es2022.regexp.d.ts","./node_modules/typescript/lib/lib.es2023.array.d.ts","./node_modules/typescript/lib/lib.esnext.intl.d.ts","./node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.legacy.d.ts","./node_modules/tslib/tslib.d.ts","./node_modules/@loopback/metadata/dist/types.d.ts","./node_modules/@loopback/metadata/dist/decorator-factory.d.ts","./node_modules/reflect-metadata/index.d.ts","./node_modules/@loopback/metadata/dist/reflect.d.ts","./node_modules/@loopback/metadata/dist/inspector.d.ts","./node_modules/@loopback/metadata/dist/index.d.ts","./node_modules/@types/node/assert.d.ts","./node_modules/@types/node/assert/strict.d.ts","./node_modules/buffer/index.d.ts","./node_modules/undici-types/header.d.ts","./node_modules/undici-types/readable.d.ts","./node_modules/undici-types/file.d.ts","./node_modules/undici-types/fetch.d.ts","./node_modules/undici-types/formdata.d.ts","./node_modules/undici-types/connector.d.ts","./node_modules/undici-types/client.d.ts","./node_modules/undici-types/errors.d.ts","./node_modules/undici-types/dispatcher.d.ts","./node_modules/undici-types/global-dispatcher.d.ts","./node_modules/undici-types/global-origin.d.ts","./node_modules/undici-types/pool-stats.d.ts","./node_modules/undici-types/pool.d.ts","./node_modules/undici-types/handlers.d.ts","./node_modules/undici-types/balanced-pool.d.ts","./node_modules/undici-types/agent.d.ts","./node_modules/undici-types/mock-interceptor.d.ts","./node_modules/undici-types/mock-agent.d.ts","./node_modules/undici-types/mock-client.d.ts","./node_modules/undici-types/mock-pool.d.ts","./node_modules/undici-types/mock-errors.d.ts","./node_modules/undici-types/proxy-agent.d.ts","./node_modules/undici-types/api.d.ts","./node_modules/undici-types/cookies.d.ts","./node_modules/undici-types/patch.d.ts","./node_modules/undici-types/filereader.d.ts","./node_modules/undici-types/diagnostics-channel.d.ts","./node_modules/undici-types/websocket.d.ts","./node_modules/undici-types/content-type.d.ts","./node_modules/undici-types/cache.d.ts","./node_modules/undici-types/interceptors.d.ts","./node_modules/undici-types/index.d.ts","./node_modules/@types/node/globals.d.ts","./node_modules/@types/node/async_hooks.d.ts","./node_modules/@types/node/buffer.d.ts","./node_modules/@types/node/child_process.d.ts","./node_modules/@types/node/cluster.d.ts","./node_modules/@types/node/console.d.ts","./node_modules/@types/node/constants.d.ts","./node_modules/@types/node/crypto.d.ts","./node_modules/@types/node/dgram.d.ts","./node_modules/@types/node/diagnostics_channel.d.ts","./node_modules/@types/node/dns.d.ts","./node_modules/@types/node/dns/promises.d.ts","./node_modules/@types/node/domain.d.ts","./node_modules/@types/node/dom-events.d.ts","./node_modules/@types/node/events.d.ts","./node_modules/@types/node/fs.d.ts","./node_modules/@types/node/fs/promises.d.ts","./node_modules/@types/node/http.d.ts","./node_modules/@types/node/http2.d.ts","./node_modules/@types/node/https.d.ts","./node_modules/@types/node/inspector.d.ts","./node_modules/@types/node/module.d.ts","./node_modules/@types/node/net.d.ts","./node_modules/@types/node/os.d.ts","./node_modules/@types/node/path.d.ts","./node_modules/@types/node/perf_hooks.d.ts","./node_modules/@types/node/process.d.ts","./node_modules/@types/node/punycode.d.ts","./node_modules/@types/node/querystring.d.ts","./node_modules/@types/node/readline.d.ts","./node_modules/@types/node/readline/promises.d.ts","./node_modules/@types/node/repl.d.ts","./node_modules/@types/node/sea.d.ts","./node_modules/@types/node/stream.d.ts","./node_modules/@types/node/stream/promises.d.ts","./node_modules/@types/node/stream/consumers.d.ts","./node_modules/@types/node/stream/web.d.ts","./node_modules/@types/node/string_decoder.d.ts","./node_modules/@types/node/test.d.ts","./node_modules/@types/node/timers.d.ts","./node_modules/@types/node/timers/promises.d.ts","./node_modules/@types/node/tls.d.ts","./node_modules/@types/node/trace_events.d.ts","./node_modules/@types/node/tty.d.ts","./node_modules/@types/node/url.d.ts","./node_modules/@types/node/util.d.ts","./node_modules/@types/node/v8.d.ts","./node_modules/@types/node/vm.d.ts","./node_modules/@types/node/wasi.d.ts","./node_modules/@types/node/worker_threads.d.ts","./node_modules/@types/node/zlib.d.ts","./node_modules/@types/node/globals.global.d.ts","./node_modules/@types/node/index.d.ts","./node_modules/@loopback/context/dist/binding-key.d.ts","./node_modules/@types/ms/index.d.ts","./node_modules/@types/debug/index.d.ts","./node_modules/@loopback/context/dist/value-promise.d.ts","./node_modules/@loopback/context/dist/binding-filter.d.ts","./node_modules/@loopback/context/dist/binding-sorter.d.ts","./node_modules/@loopback/context/dist/json-types.d.ts","./node_modules/@loopback/context/dist/inject.d.ts","./node_modules/@loopback/context/dist/resolution-session.d.ts","./node_modules/@loopback/context/dist/binding-config.d.ts","./node_modules/@loopback/context/dist/context-event.d.ts","./node_modules/@loopback/context/dist/context-observer.d.ts","./node_modules/@loopback/context/dist/context-subscription.d.ts","./node_modules/@loopback/context/dist/context-tag-indexer.d.ts","./node_modules/@loopback/context/dist/context-view.d.ts","./node_modules/@loopback/context/dist/context.d.ts","./node_modules/@loopback/context/dist/provider.d.ts","./node_modules/@loopback/context/dist/binding.d.ts","./node_modules/@loopback/context/dist/binding-inspector.d.ts","./node_modules/@loopback/context/dist/binding-decorator.d.ts","./node_modules/@loopback/context/dist/inject-config.d.ts","./node_modules/@loopback/context/dist/invocation.d.ts","./node_modules/@loopback/context/dist/interception-proxy.d.ts","./node_modules/@loopback/context/dist/interceptor-chain.d.ts","./node_modules/@loopback/context/dist/interceptor.d.ts","./node_modules/@loopback/context/dist/keys.d.ts","./node_modules/@loopback/context/dist/resolver.d.ts","./node_modules/hyperid/index.d.ts","./node_modules/@loopback/context/dist/unique-id.d.ts","./node_modules/@loopback/context/dist/index.d.ts","./node_modules/@loopback/core/dist/lifecycle.d.ts","./node_modules/@loopback/core/dist/server.d.ts","./node_modules/@loopback/core/dist/component.d.ts","./node_modules/@loopback/core/dist/service.d.ts","./node_modules/@loopback/core/dist/application.d.ts","./node_modules/@loopback/core/dist/extension-point.d.ts","./node_modules/@loopback/core/dist/lifecycle-registry.d.ts","./node_modules/@loopback/core/dist/keys.d.ts","./node_modules/@loopback/core/dist/mixin-target.d.ts","./node_modules/@loopback/core/dist/index.d.ts","./node_modules/@types/mime/index.d.ts","./node_modules/@types/send/index.d.ts","./node_modules/@types/qs/index.d.ts","./node_modules/@types/range-parser/index.d.ts","./node_modules/@types/express-serve-static-core/index.d.ts","./node_modules/@types/http-errors/index.d.ts","./node_modules/@types/serve-static/index.d.ts","./node_modules/@types/connect/index.d.ts","./node_modules/@types/body-parser/index.d.ts","./node_modules/@types/express/index.d.ts","./node_modules/@loopback/filter/dist/types.d.ts","./node_modules/@loopback/filter/dist/query.d.ts","./node_modules/@loopback/filter/dist/index.d.ts","./node_modules/@types/json-schema/index.d.ts","./node_modules/loopback-datasource-juggler/types/common.d.ts","./node_modules/loopback-datasource-juggler/types/connector.d.ts","./node_modules/loopback-datasource-juggler/types/transaction-mixin.d.ts","./node_modules/loopback-datasource-juggler/types/datasource.d.ts","./node_modules/loopback-datasource-juggler/types/observer-mixin.d.ts","./node_modules/loopback-datasource-juggler/types/model.d.ts","./node_modules/loopback-datasource-juggler/types/query.d.ts","./node_modules/loopback-datasource-juggler/types/persisted-model.d.ts","./node_modules/loopback-datasource-juggler/types/relation.d.ts","./node_modules/loopback-datasource-juggler/types/kv-model.d.ts","./node_modules/loopback-datasource-juggler/types/scope.d.ts","./node_modules/loopback-datasource-juggler/types/relation-mixin.d.ts","./node_modules/loopback-datasource-juggler/types/validation-mixin.d.ts","./node_modules/loopback-datasource-juggler/types/inclusion-mixin.d.ts","./node_modules/loopback-datasource-juggler/index.d.ts","./node_modules/@loopback/repository/dist/common-types.d.ts","./node_modules/@loopback/repository/dist/type-resolver.d.ts","./node_modules/@loopback/repository/dist/types/type.d.ts","./node_modules/@loopback/repository/dist/types/any.d.ts","./node_modules/@loopback/repository/dist/types/array.d.ts","./node_modules/@loopback/repository/dist/types/boolean.d.ts","./node_modules/@loopback/repository/dist/types/buffer.d.ts","./node_modules/@loopback/repository/dist/types/date.d.ts","./node_modules/@loopback/repository/dist/types/object.d.ts","./node_modules/@loopback/repository/dist/types/model.d.ts","./node_modules/@loopback/repository/dist/types/null.d.ts","./node_modules/@loopback/repository/dist/types/number.d.ts","./node_modules/@loopback/repository/dist/types/string.d.ts","./node_modules/@loopback/repository/dist/types/union.d.ts","./node_modules/@loopback/repository/dist/types/index.d.ts","./node_modules/@loopback/repository/dist/model.d.ts","./node_modules/@loopback/repository/dist/connectors/connector.d.ts","./node_modules/@loopback/repository/dist/connectors/crud.connector.d.ts","./node_modules/@loopback/repository/dist/connectors/kv.connector.d.ts","./node_modules/@loopback/repository/dist/connectors/index.d.ts","./node_modules/@loopback/repository/dist/datasource.d.ts","./node_modules/@loopback/repository/dist/decorators/metadata.d.ts","./node_modules/@loopback/repository/dist/decorators/model.decorator.d.ts","./node_modules/@loopback/repository/dist/repositories/constraint-utils.d.ts","./node_modules/@loopback/repository/dist/relations/relation.types.d.ts","./node_modules/@loopback/repository/dist/transaction.d.ts","./node_modules/@loopback/repository/dist/repositories/repository.d.ts","./node_modules/@loopback/repository/dist/repositories/kv.repository.d.ts","./node_modules/@loopback/repository/dist/relations/belongs-to/belongs-to.accessor.d.ts","./node_modules/@loopback/repository/dist/relations/belongs-to/belongs-to.decorator.d.ts","./node_modules/@loopback/repository/dist/relations/belongs-to/belongs-to.inclusion-resolver.d.ts","./node_modules/@loopback/repository/dist/relations/belongs-to/belongs-to.repository.d.ts","./node_modules/@loopback/repository/dist/relations/belongs-to/index.d.ts","./node_modules/@loopback/repository/dist/relations/has-many/has-many-through.repository.d.ts","./node_modules/@loopback/repository/dist/relations/has-many/has-many-through.repository-factory.d.ts","./node_modules/@loopback/repository/dist/relations/has-many/has-many.decorator.d.ts","./node_modules/@loopback/repository/dist/relations/has-many/has-many.inclusion-resolver.d.ts","./node_modules/@loopback/repository/dist/relations/has-many/has-many.repository.d.ts","./node_modules/@loopback/repository/dist/relations/has-many/has-many.repository-factory.d.ts","./node_modules/@loopback/repository/dist/relations/has-many/index.d.ts","./node_modules/@loopback/repository/dist/relations/has-one/has-one.decorator.d.ts","./node_modules/@loopback/repository/dist/relations/has-one/has-one.repository.d.ts","./node_modules/@loopback/repository/dist/relations/has-one/has-one.repository-factory.d.ts","./node_modules/@loopback/repository/dist/relations/has-one/index.d.ts","./node_modules/@loopback/repository/dist/relations/references-many/references-many.accessor.d.ts","./node_modules/@loopback/repository/dist/relations/references-many/references-many.decorator.d.ts","./node_modules/@loopback/repository/dist/relations/references-many/references-many.inclusion-resolver.d.ts","./node_modules/@loopback/repository/dist/relations/references-many/references-many.repository.d.ts","./node_modules/@loopback/repository/dist/relations/references-many/index.d.ts","./node_modules/@loopback/repository/dist/relations/relation.decorator.d.ts","./node_modules/@loopback/repository/dist/relations/relation.filter.solver.d.ts","./node_modules/@loopback/repository/dist/relations/relation.helpers.d.ts","./node_modules/@loopback/repository/dist/relations/index.d.ts","./node_modules/@loopback/repository/dist/repositories/legacy-juggler-bridge.d.ts","./node_modules/@loopback/repository/dist/repositories/kv.repository.bridge.d.ts","./node_modules/@loopback/repository/dist/repositories/index.d.ts","./node_modules/@loopback/repository/dist/decorators/repository.decorator.d.ts","./node_modules/@loopback/repository/dist/decorators/index.d.ts","./node_modules/@loopback/repository/dist/define-model-class.d.ts","./node_modules/@loopback/repository/dist/define-repository-class.d.ts","./node_modules/@loopback/repository/dist/errors/entity-not-found.error.d.ts","./node_modules/@loopback/repository/dist/errors/invalid-polymorphism.error.d.ts","./node_modules/@loopback/repository/dist/errors/invalid-relation.error.d.ts","./node_modules/@loopback/repository/dist/errors/invalid-body.error.d.ts","./node_modules/@loopback/repository/dist/errors/index.d.ts","./node_modules/@loopback/repository/dist/keys.d.ts","./node_modules/@loopback/repository/dist/mixins/repository.mixin.d.ts","./node_modules/@loopback/repository/dist/mixins/index.d.ts","./node_modules/@loopback/repository/dist/index.d.ts","./node_modules/@loopback/repository-json-schema/dist/build-schema.d.ts","./node_modules/@loopback/repository-json-schema/dist/filter-json-schema.d.ts","./node_modules/@loopback/repository-json-schema/dist/keys.d.ts","./node_modules/@loopback/repository-json-schema/dist/index.d.ts","./node_modules/openapi3-ts/dist/model/SpecificationExtension.d.ts","./node_modules/openapi3-ts/dist/model/OpenApi.d.ts","./node_modules/openapi3-ts/dist/model/Server.d.ts","./node_modules/openapi3-ts/dist/model/index.d.ts","./node_modules/openapi3-ts/dist/dsl/OpenApiBuilder.d.ts","./node_modules/openapi3-ts/dist/dsl/index.d.ts","./node_modules/openapi3-ts/dist/index.d.ts","./node_modules/@loopback/openapi-v3/dist/types.d.ts","./node_modules/@loopback/openapi-v3/dist/json-to-schema.d.ts","./node_modules/@loopback/openapi-v3/dist/controller-spec.d.ts","./node_modules/@loopback/openapi-v3/dist/decorators/api.decorator.d.ts","./node_modules/@loopback/openapi-v3/dist/decorators/deprecated.decorator.d.ts","./node_modules/@loopback/openapi-v3/dist/decorators/operation.decorator.d.ts","./node_modules/@loopback/openapi-v3/dist/decorators/parameter.decorator.d.ts","./node_modules/@loopback/openapi-v3/dist/decorators/request-body.decorator.d.ts","./node_modules/@loopback/openapi-v3/dist/decorators/response.decorator.d.ts","./node_modules/@loopback/openapi-v3/dist/decorators/tags.decorator.d.ts","./node_modules/@loopback/openapi-v3/dist/decorators/visibility.decorator.d.ts","./node_modules/@loopback/openapi-v3/dist/decorators/index.d.ts","./node_modules/@loopback/openapi-v3/dist/enhancers/types.d.ts","./node_modules/@loopback/openapi-v3/dist/enhancers/spec-enhancer.service.d.ts","./node_modules/@loopback/openapi-v3/dist/enhancers/keys.d.ts","./node_modules/@loopback/openapi-v3/dist/enhancers/index.d.ts","./node_modules/@loopback/openapi-v3/dist/filter-schema.d.ts","./node_modules/@loopback/openapi-v3/dist/index.d.ts","./node_modules/strong-error-handler/index.d.ts","./node_modules/@loopback/http-server/dist/http-server.d.ts","./node_modules/@loopback/http-server/dist/index.d.ts","./node_modules/@loopback/express/dist/types.d.ts","./node_modules/@loopback/express/dist/middleware-registry.d.ts","./node_modules/@loopback/express/dist/express.server.d.ts","./node_modules/@loopback/express/dist/express.application.d.ts","./node_modules/@loopback/express/dist/group-sorter.d.ts","./node_modules/@loopback/express/dist/keys.d.ts","./node_modules/@loopback/express/dist/middleware.d.ts","./node_modules/@loopback/express/dist/middleware-interceptor.d.ts","./node_modules/@loopback/express/dist/mixins/middleware.mixin.d.ts","./node_modules/@loopback/express/dist/providers/invoke-middleware.provider.d.ts","./node_modules/@loopback/express/dist/index.d.ts","./node_modules/uri-js/dist/es5/uri.all.d.ts","./node_modules/ajv/dist/compile/codegen/code.d.ts","./node_modules/ajv/dist/compile/codegen/scope.d.ts","./node_modules/ajv/dist/compile/codegen/index.d.ts","./node_modules/ajv/dist/compile/rules.d.ts","./node_modules/ajv/dist/compile/util.d.ts","./node_modules/ajv/dist/compile/validate/subschema.d.ts","./node_modules/ajv/dist/compile/errors.d.ts","./node_modules/ajv/dist/compile/validate/index.d.ts","./node_modules/ajv/dist/compile/validate/dataType.d.ts","./node_modules/ajv/dist/vocabularies/applicator/additionalItems.d.ts","./node_modules/ajv/dist/vocabularies/applicator/items2020.d.ts","./node_modules/ajv/dist/vocabularies/applicator/contains.d.ts","./node_modules/ajv/dist/vocabularies/applicator/dependencies.d.ts","./node_modules/ajv/dist/vocabularies/applicator/propertyNames.d.ts","./node_modules/ajv/dist/vocabularies/applicator/additionalProperties.d.ts","./node_modules/ajv/dist/vocabularies/applicator/not.d.ts","./node_modules/ajv/dist/vocabularies/applicator/anyOf.d.ts","./node_modules/ajv/dist/vocabularies/applicator/oneOf.d.ts","./node_modules/ajv/dist/vocabularies/applicator/if.d.ts","./node_modules/ajv/dist/vocabularies/applicator/index.d.ts","./node_modules/ajv/dist/vocabularies/validation/limitNumber.d.ts","./node_modules/ajv/dist/vocabularies/validation/multipleOf.d.ts","./node_modules/ajv/dist/vocabularies/validation/pattern.d.ts","./node_modules/ajv/dist/vocabularies/validation/required.d.ts","./node_modules/ajv/dist/vocabularies/validation/uniqueItems.d.ts","./node_modules/ajv/dist/vocabularies/validation/const.d.ts","./node_modules/ajv/dist/vocabularies/validation/enum.d.ts","./node_modules/ajv/dist/vocabularies/validation/index.d.ts","./node_modules/ajv/dist/vocabularies/format/format.d.ts","./node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.d.ts","./node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.d.ts","./node_modules/ajv/dist/vocabularies/validation/dependentRequired.d.ts","./node_modules/ajv/dist/vocabularies/discriminator/types.d.ts","./node_modules/ajv/dist/vocabularies/discriminator/index.d.ts","./node_modules/ajv/dist/vocabularies/errors.d.ts","./node_modules/ajv/dist/types/json-schema.d.ts","./node_modules/ajv/dist/types/jtd-schema.d.ts","./node_modules/ajv/dist/runtime/validation_error.d.ts","./node_modules/ajv/dist/compile/ref_error.d.ts","./node_modules/ajv/dist/core.d.ts","./node_modules/ajv/dist/compile/resolve.d.ts","./node_modules/ajv/dist/compile/index.d.ts","./node_modules/ajv/dist/types/index.d.ts","./node_modules/ajv/dist/ajv.d.ts","./node_modules/ajv-errors/dist/index.d.ts","./node_modules/@loopback/rest/dist/router/route-entry.d.ts","./node_modules/@loopback/rest/dist/router/base-route.d.ts","./node_modules/@loopback/rest/dist/router/controller-route.d.ts","./node_modules/@loopback/rest/dist/router/router-spec.d.ts","./node_modules/@loopback/rest/dist/router/external-express-routes.d.ts","./node_modules/@loopback/rest/dist/router/handler-route.d.ts","./node_modules/@loopback/rest/dist/router/openapi-path.d.ts","./node_modules/@types/cors/index.d.ts","./node_modules/@loopback/rest/dist/http-handler.d.ts","./node_modules/@loopback/rest/dist/sequence.d.ts","./node_modules/@loopback/rest/dist/rest.server.d.ts","./node_modules/@loopback/rest/dist/request-context.d.ts","./node_modules/@loopback/rest/dist/router/redirect-route.d.ts","./node_modules/path-to-regexp/dist/index.d.ts","./node_modules/@loopback/rest/dist/router/rest-router.d.ts","./node_modules/@loopback/rest/dist/router/router-base.d.ts","./node_modules/@loopback/rest/dist/router/regexp-router.d.ts","./node_modules/@loopback/rest/dist/router/route-sort.d.ts","./node_modules/@loopback/rest/dist/router/routing-table.d.ts","./node_modules/@loopback/rest/dist/router/trie.d.ts","./node_modules/@loopback/rest/dist/router/trie-router.d.ts","./node_modules/@loopback/rest/dist/router/index.d.ts","./node_modules/@loopback/rest/dist/types.d.ts","./node_modules/@loopback/rest/dist/body-parsers/types.d.ts","./node_modules/@loopback/rest/dist/body-parsers/body-parser.d.ts","./node_modules/@loopback/rest/dist/body-parsers/body-parser.helpers.d.ts","./node_modules/@loopback/rest/dist/body-parsers/body-parser.json.d.ts","./node_modules/@loopback/rest/dist/body-parsers/body-parser.raw.d.ts","./node_modules/@loopback/rest/dist/body-parsers/body-parser.stream.d.ts","./node_modules/@loopback/rest/dist/body-parsers/body-parser.text.d.ts","./node_modules/@loopback/rest/dist/body-parsers/body-parser.urlencoded.d.ts","./node_modules/@loopback/rest/dist/body-parsers/index.d.ts","./node_modules/@loopback/rest/dist/keys.d.ts","./node_modules/@loopback/rest/dist/parse-json.d.ts","./node_modules/@loopback/rest/dist/parser.d.ts","./node_modules/@loopback/rest/dist/providers/find-route.provider.d.ts","./node_modules/@loopback/rest/dist/providers/invoke-method.provider.d.ts","./node_modules/@loopback/rest/dist/providers/log-error.provider.d.ts","./node_modules/@loopback/rest/dist/providers/parse-params.provider.d.ts","./node_modules/@loopback/rest/dist/providers/reject.provider.d.ts","./node_modules/@loopback/rest/dist/writer.d.ts","./node_modules/@loopback/rest/dist/providers/send.provider.d.ts","./node_modules/@loopback/rest/dist/providers/index.d.ts","./node_modules/@loopback/rest/dist/rest-http-error.d.ts","./node_modules/@loopback/rest/dist/rest.application.d.ts","./node_modules/@loopback/rest/dist/rest.component.d.ts","./node_modules/@loopback/rest/dist/spec-enhancers/info.spec-enhancer.d.ts","./node_modules/@loopback/rest/dist/validation/request-body.validator.d.ts","./node_modules/@loopback/rest/dist/index.d.ts","./node_modules/@loopback/security/dist/types.d.ts","./node_modules/@loopback/security/dist/keys.d.ts","./node_modules/@loopback/security/dist/index.d.ts","./node_modules/@loopback/authentication/dist/types.d.ts","./node_modules/@loopback/authentication/dist/providers/auth-action.provider.d.ts","./node_modules/@loopback/authentication/dist/providers/auth-metadata.provider.d.ts","./node_modules/@loopback/authentication/dist/providers/auth-strategy.provider.d.ts","./node_modules/@loopback/authentication/dist/providers/index.d.ts","./node_modules/@loopback/authentication/dist/authentication.component.d.ts","./node_modules/@loopback/authentication/dist/decorators/authenticate.decorator.d.ts","./node_modules/@loopback/authentication/dist/decorators/index.d.ts","./node_modules/@loopback/authentication/dist/keys.d.ts","./node_modules/@loopback/authentication/dist/services/token.service.d.ts","./node_modules/@loopback/authentication/dist/services/user-identity.service.d.ts","./node_modules/@loopback/authentication/dist/services/user.service.d.ts","./node_modules/@loopback/authentication/dist/services/index.d.ts","./node_modules/@loopback/authentication/dist/index.d.ts","./src/services/convert-ms-to-seconds.function.ts","./node_modules/@types/jsonwebtoken/index.d.ts","./src/models/jwt.model.ts","./src/encapsulation/jwt.utilities.ts","./src/models/base-user-profile.model.ts","./src/services/access-token.service.ts","./node_modules/@simplewebauthn/types/types/dom.d.ts","./node_modules/@simplewebauthn/types/types/index.d.ts","./node_modules/@levischuck/tiny-cbor/script/cbor/cbor.d.ts","./node_modules/@levischuck/tiny-cbor/script/index.d.ts","./node_modules/@hexagon/base64/types/base64.d.ts","./node_modules/@hexagon/base64/types/base64.single.d.ts","./node_modules/cross-fetch/index.d.ts","./node_modules/pvtsutils/build/index.d.ts","./node_modules/asn1js/build/index.d.ts","./node_modules/@peculiar/asn1-schema/build/types/types.d.ts","./node_modules/@peculiar/asn1-schema/build/types/enums.d.ts","./node_modules/@peculiar/asn1-schema/build/types/types/bit_string.d.ts","./node_modules/@peculiar/asn1-schema/build/types/types/octet_string.d.ts","./node_modules/@peculiar/asn1-schema/build/types/types/index.d.ts","./node_modules/@peculiar/asn1-schema/build/types/converters.d.ts","./node_modules/@peculiar/asn1-schema/build/types/decorators.d.ts","./node_modules/@peculiar/asn1-schema/build/types/parser.d.ts","./node_modules/@peculiar/asn1-schema/build/types/serializer.d.ts","./node_modules/@peculiar/asn1-schema/build/types/errors/schema_validation.d.ts","./node_modules/@peculiar/asn1-schema/build/types/errors/index.d.ts","./node_modules/@peculiar/asn1-schema/build/types/objects.d.ts","./node_modules/@peculiar/asn1-schema/build/types/convert.d.ts","./node_modules/@peculiar/asn1-schema/build/types/index.d.ts","./node_modules/@peculiar/asn1-x509/build/types/name.d.ts","./node_modules/@peculiar/asn1-x509/build/types/general_name.d.ts","./node_modules/@peculiar/asn1-x509/build/types/extensions/authority_information_access.d.ts","./node_modules/@peculiar/asn1-x509/build/types/types.d.ts","./node_modules/@peculiar/asn1-x509/build/types/extensions/authority_key_identifier.d.ts","./node_modules/@peculiar/asn1-x509/build/types/extensions/basic_constraints.d.ts","./node_modules/@peculiar/asn1-x509/build/types/general_names.d.ts","./node_modules/@peculiar/asn1-x509/build/types/extensions/certificate_issuer.d.ts","./node_modules/@peculiar/asn1-x509/build/types/extensions/certificate_policies.d.ts","./node_modules/@peculiar/asn1-x509/build/types/extensions/crl_number.d.ts","./node_modules/@peculiar/asn1-x509/build/types/extensions/crl_delta_indicator.d.ts","./node_modules/@peculiar/asn1-x509/build/types/extensions/crl_distribution_points.d.ts","./node_modules/@peculiar/asn1-x509/build/types/extensions/crl_freshest.d.ts","./node_modules/@peculiar/asn1-x509/build/types/extensions/crl_issuing_distribution_point.d.ts","./node_modules/@peculiar/asn1-x509/build/types/extensions/crl_reason.d.ts","./node_modules/@peculiar/asn1-x509/build/types/extensions/extended_key_usage.d.ts","./node_modules/@peculiar/asn1-x509/build/types/extensions/inhibit_any_policy.d.ts","./node_modules/@peculiar/asn1-x509/build/types/extensions/invalidity_date.d.ts","./node_modules/@peculiar/asn1-x509/build/types/extensions/issuer_alternative_name.d.ts","./node_modules/@peculiar/asn1-x509/build/types/extensions/key_usage.d.ts","./node_modules/@peculiar/asn1-x509/build/types/extensions/name_constraints.d.ts","./node_modules/@peculiar/asn1-x509/build/types/extensions/policy_constraints.d.ts","./node_modules/@peculiar/asn1-x509/build/types/extensions/policy_mappings.d.ts","./node_modules/@peculiar/asn1-x509/build/types/extensions/subject_alternative_name.d.ts","./node_modules/@peculiar/asn1-x509/build/types/attribute.d.ts","./node_modules/@peculiar/asn1-x509/build/types/extensions/subject_directory_attributes.d.ts","./node_modules/@peculiar/asn1-x509/build/types/extensions/subject_key_identifier.d.ts","./node_modules/@peculiar/asn1-x509/build/types/extensions/private_key_usage_period.d.ts","./node_modules/@peculiar/asn1-x509/build/types/extensions/entrust_version_info.d.ts","./node_modules/@peculiar/asn1-x509/build/types/extensions/subject_info_access.d.ts","./node_modules/@peculiar/asn1-x509/build/types/extensions/index.d.ts","./node_modules/@peculiar/asn1-x509/build/types/algorithm_identifier.d.ts","./node_modules/@peculiar/asn1-x509/build/types/subject_public_key_info.d.ts","./node_modules/@peculiar/asn1-x509/build/types/time.d.ts","./node_modules/@peculiar/asn1-x509/build/types/validity.d.ts","./node_modules/@peculiar/asn1-x509/build/types/extension.d.ts","./node_modules/@peculiar/asn1-x509/build/types/tbs_certificate.d.ts","./node_modules/@peculiar/asn1-x509/build/types/certificate.d.ts","./node_modules/@peculiar/asn1-x509/build/types/tbs_cert_list.d.ts","./node_modules/@peculiar/asn1-x509/build/types/certificate_list.d.ts","./node_modules/@peculiar/asn1-x509/build/types/object_identifiers.d.ts","./node_modules/@peculiar/asn1-x509/build/types/index.d.ts","./node_modules/@peculiar/asn1-ecc/build/types/algorithms.d.ts","./node_modules/@peculiar/asn1-ecc/build/types/ec_parameters.d.ts","./node_modules/@peculiar/asn1-ecc/build/types/ec_private_key.d.ts","./node_modules/@peculiar/asn1-ecc/build/types/ec_signature_value.d.ts","./node_modules/@peculiar/asn1-ecc/build/types/object_identifiers.d.ts","./node_modules/@peculiar/asn1-ecc/build/types/index.d.ts","./node_modules/@peculiar/asn1-rsa/build/types/parameters/rsaes_oaep.d.ts","./node_modules/@peculiar/asn1-rsa/build/types/parameters/rsassa_pss.d.ts","./node_modules/@peculiar/asn1-rsa/build/types/parameters/rsassa_pkcs1_v1_5.d.ts","./node_modules/@peculiar/asn1-rsa/build/types/parameters/index.d.ts","./node_modules/@peculiar/asn1-rsa/build/types/algorithms.d.ts","./node_modules/@peculiar/asn1-rsa/build/types/object_identifiers.d.ts","./node_modules/@peculiar/asn1-rsa/build/types/other_prime_info.d.ts","./node_modules/@peculiar/asn1-rsa/build/types/rsa_private_key.d.ts","./node_modules/@peculiar/asn1-rsa/build/types/rsa_public_key.d.ts","./node_modules/@peculiar/asn1-rsa/build/types/index.d.ts","./node_modules/@peculiar/asn1-android/build/types/key_description.d.ts","./node_modules/@peculiar/asn1-android/build/types/nonstandard.d.ts","./node_modules/@peculiar/asn1-android/build/types/attestation.d.ts","./node_modules/@peculiar/asn1-android/build/types/index.d.ts","./node_modules/@simplewebauthn/server/script/deps.d.ts","./node_modules/@simplewebauthn/server/script/registration/generateRegistrationOptions.d.ts","./node_modules/@simplewebauthn/server/script/helpers/decodeAttestationObject.d.ts","./node_modules/@simplewebauthn/server/script/helpers/decodeAuthenticatorExtensions.d.ts","./node_modules/@simplewebauthn/server/script/registration/verifyRegistrationResponse.d.ts","./node_modules/@simplewebauthn/server/script/authentication/generateAuthenticationOptions.d.ts","./node_modules/@simplewebauthn/server/script/authentication/verifyAuthenticationResponse.d.ts","./node_modules/@simplewebauthn/server/script/metadata/mdsTypes.d.ts","./node_modules/@simplewebauthn/server/script/services/metadataService.d.ts","./node_modules/@simplewebauthn/server/script/services/settingsService.d.ts","./node_modules/@simplewebauthn/server/script/index.d.ts","./src/models/refresh-token.model.ts","./src/models/credentials.model.ts","./src/encapsulation/webauthn.utilities.ts","./src/models/biometric-credentials.model.ts","./src/models/base-user.model.ts","./src/models/password-reset-token.model.ts","./src/models/index.ts","./src/controllers/auth/auth-data.model.ts","./src/controllers/auth/2fa/require-2fa-response.model.ts","./src/controllers/auth/2fa/turn-on-2fa-response.model.ts","./src/controllers/auth/biometric/credential-properties-output.model.ts","./src/controllers/auth/biometric/authentication-extensions-outputs.model.ts","./src/controllers/auth/biometric/authenticator-assertion-response.model.ts","./src/controllers/auth/biometric/authentication-response.model.ts","./src/controllers/auth/biometric/authentication-extensions-inputs.model.ts","./src/controllers/auth/biometric/authenticator-selection-criteria.model.ts","./src/controllers/auth/biometric/public-key-credential-descriptor.model.ts","./src/controllers/auth/biometric/public-key-credential-parameters.model.ts","./src/controllers/auth/biometric/public-key-credential-rp-entity.model.ts","./src/controllers/auth/biometric/public-key-credential-user.model.ts","./src/controllers/auth/biometric/biometric-registration-options.model.ts","./src/controllers/auth/biometric/authenticator-attestation-response.model.ts","./src/controllers/auth/biometric/biometric-registration-response.model.ts","./src/controllers/auth/biometric/confirm-biometric-registration-response.model.ts","./src/controllers/auth/biometric/public-key-credential-request-options.model.ts","./src/controllers/auth/biometric/device-public-key-authenticator-output.model.ts","./src/controllers/auth/biometric/uvm-authenticator-output.model.ts","./src/controllers/auth/biometric/authenticator-extensions-authenticator-outputs.model.ts","./src/controllers/auth/biometric/registration-info.model.ts","./src/controllers/auth/biometric/verified-biometric-registration.model.ts","./src/controllers/auth/confirm-reset-password.model.ts","./src/controllers/auth/login-credentials.model.ts","./src/controllers/auth/refresh-grant.model.ts","./src/controllers/auth/request-reset-password-grant.model.ts","./src/controllers/auth/require-password-change.model.ts","./src/controllers/auth/reset-password-token-grant.model.ts","./node_modules/@types/bcryptjs/index.d.ts","./src/encapsulation/bcrypt.utilities.ts","./src/repositories/refresh-token.repository.ts","./src/repositories/credentials.repository.ts","./src/repositories/biometric-credentials.repository.ts","./src/repositories/base-user.repository.ts","./src/repositories/password-reset-token.repository.ts","./src/repositories/index.ts","./node_modules/hi-base32/index.d.ts","./src/encapsulation/hi-base32.utilities.ts","./node_modules/otpauth/dist/otpauth.d.ts","./src/encapsulation/otp-auth.utilities.ts","./src/services/two-factor.service.ts","./src/types.ts","./src/controllers/auth/auth.controller.ts","./src/controllers/index.ts","./src/services/base-biometric-credentials.service.ts","./node_modules/@types/nodemailer/lib/dkim/index.d.ts","./node_modules/@types/nodemailer/lib/mailer/mail-message.d.ts","./node_modules/@types/nodemailer/lib/xoauth2/index.d.ts","./node_modules/@types/nodemailer/lib/mailer/index.d.ts","./node_modules/@types/nodemailer/lib/mime-node/index.d.ts","./node_modules/@types/nodemailer/lib/smtp-connection/index.d.ts","./node_modules/@types/nodemailer/lib/shared/index.d.ts","./node_modules/@types/nodemailer/lib/json-transport/index.d.ts","./node_modules/@types/nodemailer/lib/sendmail-transport/index.d.ts","./node_modules/@types/nodemailer/lib/ses-transport/index.d.ts","./node_modules/@types/nodemailer/lib/smtp-pool/index.d.ts","./node_modules/@types/nodemailer/lib/smtp-transport/index.d.ts","./node_modules/@types/nodemailer/lib/stream-transport/index.d.ts","./node_modules/@types/nodemailer/index.d.ts","./src/services/mail/base-default.replacements.ts","./src/services/mail/email.model.ts","./src/services/mail/reset-password-mail.replacements.ts","./node_modules/handlebars/types/index.d.ts","./src/encapsulation/handlebars.utilities.ts","./src/services/mail/base-mail.service.ts","./src/services/base-user.service.ts","./src/services/jwt.auth.strategy.ts","./src/services/refresh-token.service.ts","./node_modules/@loopback/authorization/dist/authorization-component.d.ts","./node_modules/@loopback/authorization/dist/types.d.ts","./node_modules/@loopback/authorization/dist/authorize-interceptor.d.ts","./node_modules/@loopback/authorization/dist/decorators/authorize.d.ts","./node_modules/@loopback/authorization/dist/keys.d.ts","./node_modules/@loopback/authorization/dist/index.d.ts","./src/services/role.authorizer.ts","./src/services/security.spec.enhancer.ts","./src/services/index.ts","./src/keys.ts","./src/lbx-jwt.component.ts","./src/index.ts","./src/__tests__/fixtures/biometric-credentials-service.fixture.ts","./src/__tests__/fixtures/db.fixture.ts","./node_modules/@types/methods/index.d.ts","./node_modules/@types/cookiejar/index.d.ts","./node_modules/@types/superagent/lib/agent-base.d.ts","./node_modules/@types/superagent/lib/node/response.d.ts","./node_modules/@types/superagent/types.d.ts","./node_modules/@types/superagent/lib/node/agent.d.ts","./node_modules/@types/superagent/lib/request-base.d.ts","./node_modules/@types/superagent/lib/node/http2wrapper.d.ts","./node_modules/@types/superagent/lib/node/index.d.ts","./node_modules/@types/superagent/index.d.ts","./node_modules/@types/supertest/index.d.ts","./node_modules/@loopback/testlab/dist/client.d.ts","./node_modules/@loopback/testlab/should-as-function.d.ts","./node_modules/@loopback/testlab/dist/expect.d.ts","./node_modules/@loopback/testlab/dist/http-error-logger.d.ts","./node_modules/@loopback/testlab/dist/http-server-config.d.ts","./node_modules/@loopback/testlab/dist/request.d.ts","./node_modules/@types/shot/index.d.ts","./node_modules/@loopback/testlab/dist/shot.d.ts","./node_modules/@types/sinonjs__fake-timers/index.d.ts","./node_modules/@types/sinon/index.d.ts","./node_modules/@loopback/testlab/dist/sinon.d.ts","./node_modules/@loopback/testlab/dist/skip.d.ts","./node_modules/@loopback/testlab/dist/test-sandbox.d.ts","./node_modules/@loopback/testlab/dist/to-json.d.ts","./node_modules/@loopback/testlab/dist/validate-api-spec.d.ts","./node_modules/@loopback/testlab/dist/index.d.ts","./src/__tests__/fixtures/roles.fixture.ts","./src/__tests__/fixtures/repositories.fixture.ts","./src/__tests__/fixtures/helpers.ts","./src/__tests__/fixtures/mail-service.fixture.ts","./src/__tests__/fixtures/services.fixture.ts","./src/__tests__/unit/access-token.service.test.ts","./src/__tests__/unit/base-mail.service.test.ts","./src/__tests__/unit/base-user.service.test.ts","./src/__tests__/unit/biometric-credentials.service.test.ts","./src/__tests__/unit/refresh-token.service.test.ts","./src/__tests__/unit/two-factor.service.test.ts","./node_modules/@types/eslint/helpers.d.ts","./node_modules/@types/estree/index.d.ts","./node_modules/@types/eslint/index.d.ts","./node_modules/@types/jsonfile/index.d.ts","./node_modules/@types/jsonfile/utils.d.ts","./node_modules/@types/fs-extra/index.d.ts","./node_modules/minimatch/dist/cjs/ast.d.ts","./node_modules/minimatch/dist/cjs/escape.d.ts","./node_modules/minimatch/dist/cjs/unescape.d.ts","./node_modules/minimatch/dist/cjs/index.d.ts","./node_modules/@types/glob/index.d.ts","./node_modules/@types/json5/index.d.ts","./node_modules/@types/lodash/common/common.d.ts","./node_modules/@types/lodash/common/array.d.ts","./node_modules/@types/lodash/common/collection.d.ts","./node_modules/@types/lodash/common/date.d.ts","./node_modules/@types/lodash/common/function.d.ts","./node_modules/@types/lodash/common/lang.d.ts","./node_modules/@types/lodash/common/math.d.ts","./node_modules/@types/lodash/common/number.d.ts","./node_modules/@types/lodash/common/object.d.ts","./node_modules/@types/lodash/common/seq.d.ts","./node_modules/@types/lodash/common/string.d.ts","./node_modules/@types/lodash/common/util.d.ts","./node_modules/@types/lodash/index.d.ts","./node_modules/@types/minimatch/index.d.ts","./node_modules/@types/mocha/index.d.ts","./node_modules/@types/normalize-package-data/index.d.ts","./node_modules/@types/on-finished/index.d.ts","./node_modules/@types/semver/classes/semver.d.ts","./node_modules/@types/semver/functions/parse.d.ts","./node_modules/@types/semver/functions/valid.d.ts","./node_modules/@types/semver/functions/clean.d.ts","./node_modules/@types/semver/functions/inc.d.ts","./node_modules/@types/semver/functions/diff.d.ts","./node_modules/@types/semver/functions/major.d.ts","./node_modules/@types/semver/functions/minor.d.ts","./node_modules/@types/semver/functions/patch.d.ts","./node_modules/@types/semver/functions/prerelease.d.ts","./node_modules/@types/semver/functions/compare.d.ts","./node_modules/@types/semver/functions/rcompare.d.ts","./node_modules/@types/semver/functions/compare-loose.d.ts","./node_modules/@types/semver/functions/compare-build.d.ts","./node_modules/@types/semver/functions/sort.d.ts","./node_modules/@types/semver/functions/rsort.d.ts","./node_modules/@types/semver/functions/gt.d.ts","./node_modules/@types/semver/functions/lt.d.ts","./node_modules/@types/semver/functions/eq.d.ts","./node_modules/@types/semver/functions/neq.d.ts","./node_modules/@types/semver/functions/gte.d.ts","./node_modules/@types/semver/functions/lte.d.ts","./node_modules/@types/semver/functions/cmp.d.ts","./node_modules/@types/semver/functions/coerce.d.ts","./node_modules/@types/semver/classes/comparator.d.ts","./node_modules/@types/semver/classes/range.d.ts","./node_modules/@types/semver/functions/satisfies.d.ts","./node_modules/@types/semver/ranges/max-satisfying.d.ts","./node_modules/@types/semver/ranges/min-satisfying.d.ts","./node_modules/@types/semver/ranges/to-comparators.d.ts","./node_modules/@types/semver/ranges/min-version.d.ts","./node_modules/@types/semver/ranges/valid.d.ts","./node_modules/@types/semver/ranges/outside.d.ts","./node_modules/@types/semver/ranges/gtr.d.ts","./node_modules/@types/semver/ranges/ltr.d.ts","./node_modules/@types/semver/ranges/intersects.d.ts","./node_modules/@types/semver/ranges/simplify.d.ts","./node_modules/@types/semver/ranges/subset.d.ts","./node_modules/@types/semver/internals/identifiers.d.ts","./node_modules/@types/semver/index.d.ts","./node_modules/@types/type-is/index.d.ts"],"fileInfos":[{"version":"f59215c5f1d886b05395ee7aca73e0ac69ddfad2843aa88530e797879d511bad","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","dc48272d7c333ccf58034c0026162576b7d50ea0e69c3b9292f803fc20720fd5","27147504487dc1159369da4f4da8a26406364624fa9bc3db632f7d94a5bae2c3","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","5514e54f17d6d74ecefedc73c504eadffdeda79c7ea205cf9febead32d45c4bc","f4e736d6c8d69ae5b3ab0ddfcaa3dc365c3e76909d6660af5b4e979b3934ac20",{"version":"3dda5344576193a4ae48b8d03f105c86f20b2f2aff0a1d1fd7935f5d68649654","affectsGlobalScope":true},{"version":"9d9885c728913c1d16e0d2831b40341d6ad9a0ceecaabc55209b306ad9c736a5","affectsGlobalScope":true},{"version":"17bea081b9c0541f39dd1ae9bc8c78bdd561879a682e60e2f25f688c0ecab248","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"ab22100fdd0d24cfc2cc59d0a00fc8cf449830d9c4030dc54390a46bd562e929","affectsGlobalScope":true},{"version":"f7bd636ae3a4623c503359ada74510c4005df5b36de7f23e1db8a5c543fd176b","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"0c20f4d2358eb679e4ae8a4432bdd96c857a2960fd6800b21ec4008ec59d60ea","affectsGlobalScope":true},{"version":"36ae84ccc0633f7c0787bc6108386c8b773e95d3b052d9464a99cd9b8795fbec","affectsGlobalScope":true},{"version":"82d0d8e269b9eeac02c3bd1c9e884e85d483fcb2cd168bccd6bc54df663da031","affectsGlobalScope":true},{"version":"b8deab98702588840be73d67f02412a2d45a417a3c097b2e96f7f3a42ac483d1","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"376d554d042fb409cb55b5cbaf0b2b4b7e669619493c5d18d5fa8bd67273f82a","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"c4138a3dd7cd6cf1f363ca0f905554e8d81b45844feea17786cdf1626cb8ea06","affectsGlobalScope":true},{"version":"6ff3e2452b055d8f0ec026511c6582b55d935675af67cdb67dd1dc671e8065df","affectsGlobalScope":true},{"version":"03de17b810f426a2f47396b0b99b53a82c1b60e9cba7a7edda47f9bb077882f4","affectsGlobalScope":true},{"version":"8184c6ddf48f0c98429326b428478ecc6143c27f79b79e85740f17e6feb090f1","affectsGlobalScope":true},{"version":"261c4d2cf86ac5a89ad3fb3fafed74cbb6f2f7c1d139b0540933df567d64a6ca","affectsGlobalScope":true},{"version":"6af1425e9973f4924fca986636ac19a0cf9909a7e0d9d3009c349e6244e957b6","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"15a630d6817718a2ddd7088c4f83e4673fde19fa992d2eae2cf51132a302a5d3","affectsGlobalScope":true},{"version":"f06948deb2a51aae25184561c9640fb66afeddb34531a9212d011792b1d19e0a","affectsGlobalScope":true},{"version":"01e0ee7e1f661acedb08b51f8a9b7d7f959e9cdb6441360f06522cc3aea1bf2e","affectsGlobalScope":true},{"version":"ac17a97f816d53d9dd79b0d235e1c0ed54a8cc6a0677e9a3d61efb480b2a3e4e","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"ec0104fee478075cb5171e5f4e3f23add8e02d845ae0165bfa3f1099241fa2aa","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"9cc66b0513ad41cb5f5372cca86ef83a0d37d1c1017580b7dace3ea5661836df","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"709efdae0cb5df5f49376cde61daacc95cdd44ae4671da13a540da5088bf3f30","affectsGlobalScope":true},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true},{"version":"61ed9b6d07af959e745fb11f9593ecd743b279418cc8a99448ea3cd5f3b3eb22","affectsGlobalScope":true},{"version":"038a2f66a34ee7a9c2fbc3584c8ab43dff2995f8c68e3f566f4c300d2175e31e","affectsGlobalScope":true},{"version":"4fa6ed14e98aa80b91f61b9805c653ee82af3502dc21c9da5268d3857772ca05","affectsGlobalScope":true},{"version":"f5c92f2c27b06c1a41b88f6db8299205aee52c2a2943f7ed29bd585977f254e8","affectsGlobalScope":true},{"version":"930b0e15811f84e203d3c23508674d5ded88266df4b10abee7b31b2ac77632d2","affectsGlobalScope":true},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true},{"version":"b9ea5778ff8b50d7c04c9890170db34c26a5358cccba36844fe319f50a43a61a","affectsGlobalScope":true},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true},{"version":"50d53ccd31f6667aff66e3d62adf948879a3a16f05d89882d1188084ee415bbc","affectsGlobalScope":true},{"version":"25de46552b782d43cb7284df22fe2a265de387cf0248b747a7a1b647d81861f6","affectsGlobalScope":true},{"version":"307c8b7ebbd7f23a92b73a4c6c0a697beca05b06b036c23a34553e5fe65e4fdc","affectsGlobalScope":true},{"version":"189c0703923150aa30673fa3de411346d727cc44a11c75d05d7cf9ef095daa22","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},"7a1971efcba559ea9002ada4c4e3c925004fb67a755300d53b5edf9399354900","cbd1e5abdd2e2b67ea8162eda02679b2708cba951a54fbbdef91c399954f4889","0449799fbb04e5c04a19debe6919c821a374a4f8de2c0e1c2969696818d66e34",{"version":"8d6d51a5118d000ed3bfe6e1dd1335bebfff3fef23cd2af2f84a24d30f90cc90","affectsGlobalScope":true},"913dba4eedcd1ce248e40804a4b769ccfa21dee5add9ba5fa8635e2d97912d4f","d80a494920a582eb5d4237d4406afd0f5671b2ef132d402c09c78d0eda5da7d4","16bd2b5e8ef81da4b6ab7a15095d567f6106b038d0fbf921d47da2dde85bfb71","d78c698fa755ef94e3af591883bfee3a330ffec36392e00aaacdff3541cf5382","7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","7180c03fd3cb6e22f911ce9ba0f8a7008b1a6ddbe88ccf16a9c8140ef9ac1686","25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","54cb85a47d760da1c13c00add10d26b5118280d44d58e6908d8e89abbd9d7725","3e4825171442666d31c845aeb47fcd34b62e14041bb353ae2b874285d78482aa","c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","a967bfe3ad4e62243eb604bf956101e4c740f5921277c60debaf325c1320bf88","e9775e97ac4877aebf963a0289c81abe76d1ec9a2a7778dbe637e5151f25c5f3","471e1da5a78350bc55ef8cef24eb3aca6174143c281b8b214ca2beda51f5e04a","cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","db3435f3525cd785bf21ec6769bf8da7e8a776be1a99e2e7efb5f244a2ef5fee","c3b170c45fc031db31f782e612adf7314b167e60439d304b49e704010e7bafe5","40383ebef22b943d503c6ce2cb2e060282936b952a01bea5f9f493d5fb487cc7","4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","3a84b7cb891141824bd00ef8a50b6a44596aded4075da937f180c90e362fe5f6","13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","33203609eba548914dc83ddf6cadbc0bcb6e8ef89f6d648ca0908ae887f9fcc5","0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","e53a3c2a9f624d90f24bf4588aacd223e7bec1b9d0d479b68d2f4a9e6011147f","339dc5265ee5ed92e536a93a04c4ebbc2128f45eeec6ed29f379e0085283542c","9f0a92164925aa37d4a5d9dd3e0134cff8177208dba55fd2310cd74beea40ee2","8bfdb79bf1a9d435ec48d9372dc93291161f152c0865b81fc0b2694aedb4578d","2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","d32275be3546f252e3ad33976caf8c5e842c09cb87d468cb40d5f4cf092d1acc","4a0c3504813a3289f7fb1115db13967c8e004aa8e4f8a9021b95285502221bd1",{"version":"a14ed46fa3f5ffc7a8336b497cd07b45c2084213aaca933a22443fcb2eef0d07","affectsGlobalScope":true},"6968359c8dbc693224fd1ea0b1f96b135f14d8eee3d6e23296d68c3a9da3ea00",{"version":"79d75a353f29d9f7fc63e879ccebe213baaaea26676fb3e47cc96cf221b27b4f","affectsGlobalScope":true},"dfdc7699360a0d512d7e31c69f75cb6a419cf415c98673e24499793170db5d6b","dcf46daa1e04481b1c2f360c7a77bf019885bd70353a92aa698b9c22b7fe3d6b",{"version":"033350619c2cfcbeab2a483f4b221e0866e17cc4ac514240d285d35c35eecf7c","affectsGlobalScope":true},"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb",{"version":"b197fb2d5fa71cebc66e5d10e15c7d02f15fcd3194fbdaafeb964262582f2a82","affectsGlobalScope":true},"1a7f593d587f49ca97710c021c453ab1b95db5e39e58567f4af644f97a5fb0e0","dd4705d1d78af32c407e93e5df009962bed324599d6a5b2a9d661ba44dd99e43","3a02975d4a7034567425e529a0770f7f895ed605d2b576f7831668b7beea9fea","7525257b4aa35efc7a1bbc00f205a9a96c4e4ab791da90db41b77938c4e0c18e","cf87b355c4f531e98a9bba2b0e62d413b49b58b26bf8a9865e60a22d3af1fcd3",{"version":"ee1ee365d88c4c6c0c0a5a5701d66ebc27ccd0bcfcfaa482c6e2e7fe7b98edf7","affectsGlobalScope":true},{"version":"1a08fe5930473dcae34b831b3440cd51ff2c682cf03bd70e28812751dd1644dd","affectsGlobalScope":true},"6f3e00b838cf23f7837ffca5da88ae25f0a81742af9ccadce5cb85ac72050929","304f66274aa8119e8d65a49b1cff84cbf803def6afe1b2cc987386e9a9890e22","cbcb993f1fa22b7769074eb09c1307756e6380659a2990d6f50cfd8943bd8333","55a93997681797056da069cfac92878bff4d2a35e61c1c16280ee0cba38702f2","ea25afcaf96904668f7eebc1b834f89b5b5e5acafd430c29990028a1aaa0bcbe","df981b2ce32930887db27eeae29e48b9b841e4ba0bbba1162ebed04c778cd7e1",{"version":"ea455cc68871b049bcecd9f56d4cf27b852d6dafd5e3b54468ca87cc11604e4d","affectsGlobalScope":true},"3be96458790a77cb357856dab45d1cc8383ac63ba4e085f620b202fb62a6e1db","02d85d03fd4a4f63cba0b133f0e0192368dfeb4338bd33f87788a4f6302de873","bb3a0ce56babb71d7c208ed848b4aafe545e7a7e06304fc0c8cfe3ad328cab7a",{"version":"43bb766c0dc5f1150021f161aa6831eb2cc75dab278172408515cb6e47f697a9","affectsGlobalScope":true},{"version":"8bcf09ba67bd0ec12a9f1efc1e58e1ba2cb1ff78920ce6cf67ebfe6003c54b82","affectsGlobalScope":true},"13ce7518e39051544dd1e3124c185665adda05a5021676f2606c2c74ad2c964f","4ac5899be65d5e2cabe3aaf3dfc2cf7641e54dde23db198d9f683dfabe228145","124dacf89c97915479ed6ad81b09ba42fd40962d069c0642fed42e2d9719f2ba","139ad1dc93a503da85b7a0d5f615bddbae61ad796bc68fedd049150db67a1e26","ad06959073c066bb9543ef9c1dee37fc3140d2ecaae42b97bf4e27f2f03d6511","9eece5e586312581ccd106d4853e861aaaa1a39f8e3ea672b8c3847eedd12f6e","782abaae13e868dee4ea9c16d44499af251d112fba535c558d10ff5279b34678","269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","3c1f19c7abcda6b3a4cf9438a15c7307a080bd3b51dfd56b198d9f86baf19447","98e7b7220dad76c509d584c9b7b1ec4dcbd7df5e3a2d37d28c54f74461ec0975",{"version":"c61b5fad633f25bb0de0f95612191c1df9a6671cd66f451507b5223bff41b50d","affectsGlobalScope":true},{"version":"d21966ba3284ade60cb94eb2c533ab5b2af7fd0b4b28462043f6ebcb8400bd21","affectsGlobalScope":true},"98e00f3613402504bc2a2c9a621800ab48e0a463d1eed062208a4ae98ad8f84c","b8e9e44ce8eba70af569523ff31d669cc239a93f548899a259f3224392a75e6c","005d1caa2a5d9bc096f75b598d0fd184bc848dd2665b050a17a17d5dc1ef652d","619735e4e221e1bf137ae3efa5330beee4a06039dccb876c822f9d8913a392da",{"version":"3560d0809b0677d77e39d0459ae6129c0e045cb3d43d1f345df06cf7ab7d6029","affectsGlobalScope":true},{"version":"5ab086d9457abbc69cca270e5475073f2e8eb35b2fb810c516400de7b7c7d575","affectsGlobalScope":true},"2a2fd53f2d963624b596fb720b390cbfe8d744e92cb55b48a8090a8fd42a302d","1f01c8fde66abc4ff6aed1db050a928b3bcb6f29bc89630a0d748a0649e14074","60223439b7ee9b26a08d527cacc8b34ea6c6741589ef4949f4669c9aeb97978e",{"version":"48fffe7824c2e8cf8c812f528c33d4c4f502767582083df35920a7f56fe794b3","affectsGlobalScope":true},"561bf7d1d3163db272980f9167b4b98f6a9ee8698c5955e9d9584e84088aad51",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"a42be67ed1ddaec743582f41fc219db96a1b69719fccac6d1464321178d610fc","a704d87ca9c1ab7d27838bf6b5b08b50a46cadf8f5212c69d132e3d8e7e422b7","68cc8d6fcc2f270d7108f02f3ebc59480a54615be3e09a47e14527f349e9d53e","3eb11dbf3489064a47a2e1cf9d261b1f100ef0b3b50ffca6c44dd99d6dd81ac1","3c717fa044b5281ff25b700a8b75a31c80a86f04b9f5e532e1f660217c219b2a","bc43045cc82a1b08931160efe1690b4589a53d13f3ac930b4d2d4c95fda4a8f8","9bfcab0ec65c815b8a94810511cba1cebb17827e7da21345baf1ee3ab6f64b88","3104a5a0a8f8c58651b31454c74b11b4d962f4eb19a67290ef1d3566d6e6d978","a0c8273a78fc449c3f343f809bd5a0b63cdacaf5c30b88314cda1971c1ec8a45","d98e79905c46b99046004d249e98fadc4624e097ddee256536faff0e87725160","bab66d53a6740ceb64f736b1f7fe8f3b6bebc35226da79b057f0d2634b44422d","369e70853f4f3c09c511ea51923bda9db8ce11b8d6732a0e7400866db6a9374e","e1f422f41a46b8b42dd063ad423cee463dbd6aa2539bed41198a25dbdc36afb3","66df2e0ca83a64c8cb776fb38e04fbbe69aec9430bd73797152d8092fc70cffa","6eecd085adb47e82920a6639910b6ed251fecb87766b2680dce4b2f0d8b565e8","99a5d54b6e94095fc6f19937c8af8eb515fabed14c489561207d09b7307d2552","2b981a93fdc5fb6e1fc38de52a4f4db99a0f815cf69c9c36532769ab59a8808c","a969127a1cbfdf769c5c8963388a8cf50433d9128e4df5e0c39cb6b67d53f13f","5051f8590ff2edb15c53feedc38ec0d2d4d95f7e8dbd73bf01bf2b26e49a59b3","6a87d0d9c8bbe761091dcad88314420937bf7655a1620f3d525091d77e9b5692","e688f047b7c251f316840536f5f8f251d39451a604291e3b49c9fd764d9242bc","5ee2a4c2aa9453647ab3aa7baed8c15a5581db011d182d5c0623eb916af3333c","c903d9c49c5d0e450230d7c4d3054803a392c0fa171620f603fda03d8cb96617","9c617126398bc96329cdf339df6ac3cbe2ef4de33cbb305396806330f3c732f8","fdfb2bb5336365a331de89bad9cbf029c8fdc311ccae3e50d2c7a68a993e5204","978246f85547b870dfdbd62049dc178544241d3dcea64bb0d4800c6323995e56","6d5dbd4e92f05c38eba3d60eb7806175ec4d0f645855d55f27dceff8d6165c22","4eb6a7515174c833f0780a92b3566c2fb07638c4bf1a362831f4b216cb94adb4","ffe129b6d84e3c8ad721e47b9990bb4ad6a936952bcdf3bc8bc19df019b49b52","6465d857aee892bdd7e95fd8bab907ba29b830819346c033e42f7c70731aeaa0","2b62eb1488abd2d34a1fc492ace6f97ae102658246d289574d7e64c344f63c4a","a36a6bdc1eed703f4b095839ea028eb87b49c860f45fc30a0a070bad0972f56d","60b225c508e9a3014de670077ee9e6b5b0e7aece91fdb15f27823b5313de1326","68ef9846f5faedffe2491b06c5d0138d94d7d6b603694cbe0d1487d1e5f2498d","64d2dce919e8d34a6520f412698242b249e04ac5f59f885596004456a6f8c759","917ca55be62a249dd7361d80d08a82bedf0027d2ec266941d45fad75de974fc0","bbdcc7b94186de73cc3f1c214f8cbefe4f0367a950152b0c3061268791e3d2ca","74a5e4e4d74fe96264bbb670ebe8c86fa109a599fe3610675e9f16c415c92eaf","3a41cccdcbb7bf9ea6a98decc29438f857e362f0b83c84c091414221e20542ba","c23232dcbf18943c15f6bb518315260b21ab27e3a0b205c409434171aefac24a","df99a4d3930a061299dfb2a36a772dbe4798d22c61fcc9f1c72974ff54b11cfd","d3f2d715f57df3f04bf7b16dde01dec10366f64fce44503c92b8f78f614c1769","b78cd10245a90e27e62d0558564f5d9a16576294eee724a59ae21b91f9269e4a","17f0ae35f62a9586cade6c10e5a0d61362257b8e03e661c49ca417e4f3da857d","2f5747b1508ccf83fad0c251ba1e5da2f5a30b78b09ffa1cfaf633045160afed",{"version":"20cf86e0fe2aa418f19ee727190cdf1859ffe64f7a71abf7d8cf008e1efc072b","affectsGlobalScope":true},"b71c603a539078a5e3a039b20f2b0a0d1708967530cf97dec8850a9ca45baa2b","34118be360cdd3381bbebbfd4b093c394460c8fc5df40688d58f45d86ab1448b","104c67f0da1bdf0d94865419247e20eded83ce7f9911a1aa75fc675c077ca66e","cc0d0b339f31ce0ab3b7a5b714d8e578ce698f1e13d7f8c60bfb766baeb1d35c","5c45abf1e13e4463eacfd5dedda06855da8748a6a6cb3334f582b52e219acc04","d5b5e517e27ae310b4ffe27359adf974a08e9aff9c8ae86ee5cadcf744920a9c","9d62b52d7cda8ae78ff83a8549cba6deb595ee0c43ac3df90f57e1c6e53a0166","ec9870bcc60e041a8a979daadff24dd3f90b3d0f5ebfcf63c583151875a1da71","f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","abd151ba4fd07f03c747b8d938f6940969380ba0bfdfa6231929279b8808afd6","48885b97437ae6d643050da9e585fd0aa68ef839c6112eb112becd0307873d5e","4e507449171a9c33c281bab99a4ccd400740a94301f53a502a3d69c774ce1eba","5923d1de7b2b3d6d47baef3d03108d419b25f4740de00a9410596c816520442e","ade0176242cce0023084e366604def3c8fea45b429704dfb7405714b27f12337","ed0903cd1986440659a0d5ff140fb477384fb717eecf917c01572a4c25aa00cc","654d60c1166c724dc0a0ed833b8ef4c0652d6eafd29aabfd8dc7128faa239179","5bfdf355d2900d51697ca05d4be7a911449a8a3dcd735bda0ed6569e1c5a9dd4","b9930cf52c9395839d5a1c9bac2450229913d20fc1b8c9b6fc7ad723209e97a2","ccaf5593bb1fabb7fa155e77f181b08ceaa68fac36145962ac80b6eb5341a734","f855491e4d96d8d555e7de757e7205550594f2e874fd3520d6abb104a5009c67","655cc5cb031bed168c0b4f2133220792c4e7fecd53f19878b79dd3809d9f60f8","214bb077f096d70bd606bac65f8da14c31845d4e60b0c4ede43fc1a7eb40ef34","e4194a9a3622dd16bb81dc95d111ebdbeecf0cb77825fcf633ee0ee7dcf4c80b","d3ca3b539d4ab017c4f898029ef983fa9059eebdc7e09aa49d58c423e3544ccd","6032ff314e159864993a9d7a9c97a8e9fae10a7c144c74466ab28b2208ea7494","e1f5507fadfc5fdc45867e38d0bd506499990bfda8118a09fea85573633e54d3","169cad272c3e1d8ef5fd38368fb84e5686f1e14ab28144d697bd80d1e12b2961","3a53038528b04f1e43da2e010f7e3282aa54c04b8b0346a24d151568a215f142","9b4da6370253129c8796777c2ef8c216d9991bf83a0c191404d0f489f4a2a333","068077646daf5a6486901cfcb2c9d3a0a501bb007e64988e312de54d75cc834e","1db943085fd216b197296c31ebf88a5241da3bcbc2f64014a8476671e69efe73","723fabb2b827b604f21516715bc348a60b39c700f4effeab9dceaebf812f716b","810bc66686948bcb4694f1ff0f82bbd8e9c9ce8803b46ef3d25976e1c928cbbd","468cb0090e17146543a010b0fbc0e649e898ca583d6c7ae798c4c10c1693ce01","9871aec86fc24c40c2f3c0f5f11bae0f6de45dfafe4de2b1f4c39c1efbddd031","ff623fd9c7a7da618052c7719401a14d173462400cc70b0430daaa8975401ef1","29971b14440eaed291a161697081d42f14f61634c8144797f2493a636377ba29","b8655761533aeae1a476197087350441352cf6658ffcb7f00fe6b663cacfc576","8aae0a6c071f358f267ab785b5982f06cf27236d6a53f868b29223824b11f4dc","172933a024e16cac0dadd7e42b0d65ee7fa5989283a993e2f82c1284ef78ef58","2643672101b997427e3551b19e49d8e368e2b710cf3803150bbfd2015fe373a6","07f7223332e34c44e0da451cf82e6d4efc751ac4e689a38189c937287a5f710e","991ea9120137e73c2749d869154a254a1b8f405b8bbe394fb044b1ffb791ab64","a6c52a303cc0bd2793bebede655f1d80c724cfe646313c4de423b3c8ea75c0fe","b413dcad2e940b54d6f7eaaefb11a31b97039f8595e49ec01e222f041f159ca9","fbe4bac5a4c7ff805f22fd4a86bc1ca21e392ee964ed3473009a389e214c85e0","14927af29b0740f63a161cc5f1061c2be17a06d0d62b9879fecc91182c2d9041","bdf85b67bba3a3684104940d13db00385103568bec2adbe49463002c0d5909b9","0923ba27a9ddcd9bd4f813d3cd0a08a3c0ada9613775a5b7846c98bdda2bfb13","3b9d46ae58e22bbdf61d7262812c43dfaa28c58c048b1084d57cddf00a060303","e6056576bda80a1f8290c2b42b63212699bca424f1d729d76e6b423410b7c16d","b09ff6412ab1a48e6767d0f6fae9f18c427719c6e2e6f08af8f07b7445c48f55","5a51b319f1c8d3d139eaa449d75bb9279adcd6862d0352b14a888abfe0cc1ef8","abe19578bf9971d170356bd501234dfd67471e90243354a5d5ed8d99be400c50","2f432f66ec121046b9d91d1e4a5987f3e72dd1ba1359160daa020388f11f9d4e","5a9e7227959d699324082012a3c076a2e62e2802a17d72198be22eff5f2ea782","9bc8e39545c4b910c8bcc5dfff28e6ca2d0f12be46e4b7ec6b6299891e2cd8b7","1b8a91f5ea6fd0d60a73e48b0490d1b3852fbf9438d7789791dd9f41273dd53f","e9ce246b657f9cfa7d6b7ecf97533b2d43e400ff6afc30935e8b38cd9368280c","dc9a0af0ec2ad48dd711073e58e28e141c205846a98279b0514cc61ff18365d9","22664cc405ea229d7af93a892cc36d09baddcd77c00278e0d5e9fcf1ddfc359a","bd57ca4037c93931cef05e98fb740e60085d38461b858cb068fe5d6a37cf2a93","d017aac7b7180e85a77d54eae850c3333273d8c286fc3678b9fa380ad15db319","7adb23346cc87faaed53fc75b21f8d49145d8d8f94efba07a9e02d4c45374100","a751294aeb15a16bd359163f85f4c0d124b78039ce9c14148006638b4c8d2169","a1760ee0e9b031795c1d01e9175a0e6a31094d6328853bd698c16290e3d74358","9d526ef973336bbf16e0a8b5c8fec0312258b134fc927ef36a529e126905109f","7629c0fcde8b71fc88de2befd61cd381d9139f103635a60b1fb42e2f3a18e147","0357334d7b242a71c6daeaae1ce5dc923317b5d65d948470e7cc58339775649e","283dcce5b00a2d02d4f6ec7930cc2f11c0fe262005f77c5cafbd225de0441266","d7ae169c4a140ef8b98e959f105d41480b1a680ba267a5f71e015eadd05c0be8","299444cfb340fc6f5880f844b1e8aedb9aa8832721541f49c94f8de6f6ea1974","9dc5756b066bc56d0ffa2416385ecde479996e98a500d596d597ef54eb6f3d2d","044fa55e31d5b3d7a3b1ff8ce15208ca4b395991b758e26e7eb3c9f4e01d338f","67f8497918e8deb4b1e82c357e5f13adbd222cf9e32ccbd0a17c9eb056c1cb6b","2cc6bcaa43b3edade91686a3fcab05e6df89797f6a106bc1db823e3f8ab9b844","354031625f274503eff7460c3af0d6411a4c2b0981384e949fb2bac4294d33ad","b4abcacb8f9d398a29819c49c2887954b768c74bfabf9674e861b14024910ee4","79d7918aa9a848397c60688df19a5a9912ed54fd56a9ecd9e20e03a8461385fd","e7c0ecd21f29c95ce4cdeb8edc5eb409076e7c3d019645e16bea968c2795d6b5","e1234ae22d86e57c06fcc30cc3d7ee1dec63852ccba3c3f846e0020cb2303820","2929e89a53a04a1144f026d92abe46b7fad5bbb8a61d10e8fd322a05bb2f0c8b","2a4a4a9b3162ae2dc7e4ff2dcf044183d8e5a2abaa0b1c6411c2aebe34685427","a098efcaf2fd54d949fd5b2cd9c5974b0b1b342e554453efe52a94c2e30f833a","4d8b6f4bc85f5795e04881e2eadf4af9413dc1fcea6661915a03c7dde929ff36","fadfe9c73bd4af81f53a399d8c6d2753fa172a7ceb26a5099fc1bf90b619d8dd","4b7d9a5d819bb8a476102e1082eb3b9273b6821591d9d3adf0c9a15e7d29383b","44a1119913b2574e895e8f3204e5fb491505a3d353de7a00c8cf9142454a4a7b","df78d5b431b82041b8994dc3fc5828cc17158b0601563b488c7e4b2152361526","0de4ded237b3f2df44d2cba31a3b2d244d60190a86d76261372f30ca24dca159","c992717baffbb8c0558d2b6885aeb59d2a1c5b31f03cf1942aa021c55afaca0f","825ce81429f76c8b4c0741fc2c63fcb724479857e2c73ded59e9ae6b5ad31561","3bdaad936d13dff4f51541fd6a30072281f0996c4d6567caff21b25bea58bb21","2029316e1f667473f14cbe69fe8e202235f56ec00dfd90478b9e4dce1e9f206b","5633ebea0bcb713613ef0848da746d96839a95c0663ecf2df86adb937de8d2c8","8bb07008990356dfa2824e420517ea343b6c0ca6d3ce8840ad37d963fdb2c022","2db0a1b6698287820bae51e5d5c3bf67c63287e69a845f66ea46485ea2fc2060","9508fcc6616ea31bf848463f161571bcb0c8726b267a43e231f21fca775007e7","daf44d045f41c7dc023520708443bc42f914178fbaeb193a59b6acbe3183dc7e","e54119a21539e5c1d0c2e2bcb74fc42303cec7d28c00cddd2c5fef9686caca8b","ab135130c2e2f34a2bd54f69331a1a7773fcdb4d9cfdff9a23831dc4eb6c0a21","f5f9b4e141a2fb1baaa7c3256261292fda87bceb2d27adfd7c407d4750575ec1","1037017fc5dc0109d84ce24aa65eefff6cc9728c608cd1fc54212e4c2db18baa","2fd1f5f37a7da7c28e6e4ec088cca5c6882fe41cd2e4d512cd583ad35f11dcc7","7d2fcf756ccce288835d652728252e8661b74b6b3c93f16cd4561aa795df1db7","41a250af390ef52760282a71b8042b0aa21a881c886b7e0f9af14cd11bf60ae7","c448be29d6853ccc6dddd348100cca9c2d052098cfae02a20b25e2120983795a","d8471a094827afa6a80a3ad08fd4252f47fd8e9db8210647f316c6484b60249c","bff62d88f0894ab1da634840a38b36284a8387d21e4cbd3a998cb72f6b779767","8f4a756abdf2a1476ab371227b87309fb8a0b4aee707bbdbd89ce56f103a8b41","27f7c8f3d8e1a1626ccfe063a942e797a4270e6843e2f4234f4d5ca6e43981e8","89242fd8091e21f0995fb01dd1d00627044200216ebb0a57624e94875a408592","5b194e434877ddd21bc89c5d73e822d7ce29e6d689a68640b680ffa9900ae619","8dbf3ed20dae9675c8c8071b6173b3c36f396d1b9ea8f9eefb46f4a42f4dc338","4e3e2d98f0ffc1d38a603d3f6221f3736d026e0e9dd764bba6cc0a76876b9688","c6135febcad00c327c4d31dde41e66504dcab283e9ccbd1a7b5e20a807524aad","5a944120996d36db92326f6c10d901c17a1ff27d85ce197ee17ea56a946c1da2","5dbba59f4dbf35da463454f81f019a506d694ede88355b1423064030284cbf1e","448013518b0acc6094ec3b980d88b4bb5e75e10a761ab90a3e3ea68309aecb04","f5240242db7e79d1972df2c6085cf91cb93a4da7bfdb3b804db47b7671324d82","10b8a7023529d0de689c1eee747e4a5a3970ee628de92c1d44a1db2f9d97bb0c","3e11c9a1d1a58ab2fab15a3a17813d3e32f7edd086a75c6b9f235a84b6b4e78f","22324891dda506faf39ace94780ee32d4e0d7bf732e148974655deb116b6e83c","b91ce38499029d321fadd78bfbd61e0efec656f0e7370da5a5e11594ff0932c5","9b02c5fc7ee15fbb88b9a767f810aa82251dc29eb331c66e4f82c67c8ee31b9b","26d47e4becdfef63dcd919ad8bc9a800bef23898e1033b957e5e012936411211","ee339e477f7e93db05f1556e119c9ae6a01190f2f3b46207c15f75bc87f842b7","ef5722b7d9b511bbccd1da92112330a05ca9a366aef882d01d719f80985ec03b","5bf33f1dfd8b39dfa646aeb6aa2b6d9cfe22940fd145e527da6627d80c81dc93","4ea45e560101595d39030e685c0b9ba09ea184bff7436ba0d8fc7c6487d641f3","c9135d9a3ba163ce832591b0b50c3db3663867859a62e0dbe9573da98ee4b0c2","f8c06200397b2bb0d78ddffd7fa8df951b532f16dc6ee43d1245ab353436dd7e","ec15ed86bd1602c8c61b77add9d7b1a24c0d52f55af01c952587fbd94024fc85","fd510b152ca12b8a1dac2bae93de870d9d9cba1a789277fb4d077b0ba659fd60","2ef10354f294cdc6f53c5d8ef27ce825afc9b1db4fa8cb28a10b936f1097e54c","8085aa2fa780c43c53ef60b014c9f3f31f2b4608a74c9a96d306009134ba0174","9f3c5498245c38c9016a369795ec5ef1768d09db63643c8dba9656e5ab294825","2d225e7bda2871c066a7079c88174340950fb604f624f2586d3ea27bb9e5f4ff","6a785f84e63234035e511817dd48ada756d984dd8f9344e56eb8b2bdcd8fd001","c1422d016f7df2ccd3594c06f2923199acd09898f2c42f50ea8159f1f856f618","2973b1b7857ca144251375b97f98474e9847a890331e27132d5a8b3aea9350a8","0eb6152d37c84d6119295493dfcc20c331c6fda1304a513d159cdaa599dcb78b","237df26f8c326ca00cd9d2deb40214a079749062156386b6d75bdcecc6988a6b","cd44995ee13d5d23df17a10213fed7b483fabfd5ea08f267ab52c07ce0b6b4da","58ce1486f851942bd2d3056b399079bc9cb978ec933fe9833ea417e33eab676e","7557d4d7f19f94341f4413575a3453ba7f6039c9591015bcf4282a8e75414043","a3b2cc16f3ce2d882eca44e1066f57a24751545f2a5e4a153d4de31b4cac9bb5","ac2b3b377d3068bfb6e1cb8889c99098f2c875955e2325315991882a74d92cc8","8deb39d89095469957f73bd194d11f01d9894b8c1f1e27fbf3f6e8122576b336","a38a9c41f433b608a0d37e645a31eecf7233ef3d3fffeb626988d3219f80e32f","8e1428dcba6a984489863935049893631170a37f9584c0479f06e1a5b1f04332","1fce9ecb87a2d3898941c60df617e52e50fb0c03c9b7b2ba8381972448327285","5ef0597b8238443908b2c4bf69149ed3894ac0ddd0515ac583d38c7595b151f1","ac52b775a80badff5f4ac329c5725a26bd5aaadd57afa7ad9e98b4844767312a","6ae5b4a63010c82bf2522b4ecfc29ffe6a8b0c5eea6b2b35120077e9ac54d7a1","dd7109c49f416f218915921d44f0f28975df78e04e437c62e1e1eb3be5e18a35","eee181112e420b345fc78422a6cc32385ede3d27e2eaf8b8c4ad8b2c29e3e52e","25fbe57c8ee3079e2201fe580578fab4f3a78881c98865b7c96233af00bf9624","62cc8477858487b4c4de7d7ae5e745a8ce0015c1592f398b63ee05d6e64ca295","cc2a9ec3cb10e4c0b8738b02c31798fad312d21ef20b6a2f5be1d077e9f5409d","4b4fadcda7d34034737598c07e2dca5d7e1e633cb3ba8dd4d2e6a7782b30b296","360fdc8829a51c5428636f1f83e7db36fef6c5a15ed4411b582d00a1c2bd6e97","1cf0d15e6ab1ecabbf329b906ae8543e6b8955133b7f6655f04d433e3a0597ab","7c9f98fe812643141502b30fb2b5ec56d16aaf94f98580276ae37b7924dd44a4","b3547893f24f59d0a644c52f55901b15a3fa1a115bc5ea9a582911469b9348b7","596e5b88b6ca8399076afcc22af6e6e0c4700c7cd1f420a78d637c3fb44a885e","adddf736e08132c7059ee572b128fdacb1c2650ace80d0f582e93d097ed4fbaf","d4cad9dc13e9c5348637170ddd5d95f7ed5fdfc856ddca40234fa55518bc99a6","d70675ba7ba7d02e52b7070a369957a70827e4b2bca2c1680c38a832e87b61fd","3be71f4ce8988a01e2f5368bdd58e1d60236baf511e4510ee9291c7b3729a27e","423d2ccc38e369a7527988d682fafc40267bcd6688a7473e59c5eea20a29b64f","2f9fde0868ed030277c678b435f63fcf03d27c04301299580a4017963cc04ce6","6b6ed4aa017eb6867cef27257379cfe3e16caf628aceae3f0163dbafcaf891ff","25f1159094dc0bf3a71313a74e0885426af21c5d6564a254004f2cadf9c5b052","cde493e09daad4bb29922fe633f760be9f0e8e2f39cdca999cce3b8690b5e13a","3d7f9eb12aface876f7b535cc89dcd416daf77f0b3573333f16ec0a70bcf902a","b83139ae818dd20f365118f9999335ca4cd84ae518348619adc5728e7e0372d5","c3d608cc3e97d22d1d9589262865d5d786c3ee7b0a2ae9716be08634b79b9a8c","62d26d8ba4fa15ab425c1b57a050ed76c5b0ecbffaa53f182110aa3a02405a07","87a4f46dabe0e415e3d38633e4b2295e9a2673ae841886c90a1ff3e66defb367","41b8775befd7ded7245a627e9f4de6110236688ce4c124d2d40c37bc1a3bfe05","320c48aadd4ca9697fc3017cf5ef768c880792ff12369bd6ee2ad771b394d6ac","ecc74e8c835787618cdd96897ac5e13a23ecacae1523ba29b40322883a327676","96bd7f7c2f11e038d2d8214e0ca1450393d0b384c4cf77cc3a3e5bcde2230bde","ca8bae697184a24cf20703c7f68ffcf7de90155ce94428cc4fe07c45ddd9e4a1","e0b21f0b4cc814112ea8e79a862b48674b229405b4e89a21b4ea6533e2880bda","fc9284c76dcb2c4a178a170e1b52c7a94d728a2a9a23c72c12c46e926c4dbac1","cc6b0bb8a9bcef9e4ea2ad21af259393935fe6bf0e50f22719b3e57877a3ad2c","8db1eb2502553a7b2a02c0277048702be4e20e6714b1b975cfdd27729d5eb9f5","3937b50a4de68f6d21614461e9d47af0d8421ca80fc2a72b667ca2151f492120","6cd927f365b089e204789813e42b03dff3e35c9b940df066313bd6502c7657a5","5a09a3bead43c973371eec606cfed059d60182ae0fbf4b5c13e92dcccc4ee101","f22f091e126583a6e63766d38ddefa1421da81e93082354a5069989b779207a4","b40f78587207e67b07de2e16d6c3762a42ef6904e1c524f5a5d263036a120e06","efbb37093ba5f320b9d6e246f10e0805b55396e99fc5c620cd88a3efdf50ae4e","b512c4da6f7b9d49d9783df341de42b7aa0e90587352d269262f0135ccac4701","7aaab88976c6dbf10175196d9170a18c9efa6359005b5d1dee7481b334828eaa","09c43f67f26a12f83ddb2962ec026bf3f7b5ad9b6b2897c200e462445a4dd257","11128a675218535d8fae0c83484ad2e05641fe90cfecece3888f8afc607e7ecb","eeda33d6368be6990dac830564a7670122d4b30559c16562ed322dc3f7abfdb1","910f0fe9269e5b4fb283cc09e8d5b026790f675d02119f3261e7ec1bae11eb56","3607276069b9a081139f26dc34134dd34a92c282e91870f9c8bcdb7d7eab6cbc","d7c614b14a3f6b5d80c2b3d5edccc76b72183bb114951cc945d84de240579f36","4cddb4ea00cd89bf4ba2ea8460a67bfb60b5448d33ddf14c74633958b4830c46","9aa37132e4ef180708799267965c597f2980287103ae73b3ef108333e15717ce","fc7a6d17f56b8306c7971988c582f44a2c09654ac42029af3733febae0b4da38","e162b2acb839437e5fe1935a9878922e6e380f8346c2720af54d286135e42a3d","163a855d205dc82b7b19389834088a50881bd70273b2c6b0e9ccdd6611f64cff","9cb707e7d617d67a5a8d7aa94fcc8356d8d0d31167c292e45ef8071e28797aa7","af4e47e120bb7a683e5a1b753b7c08f4a7026796d49858c7945a6fd9f67edf57","e17bdab5a1c2b4f9944105aeaa98f4bdca6a89dc1ccf29d201983170cce68a30","74e9f5dfb53546d6f687f7caeffad8a108a3b5b110257ae5f63aadb0b7af68b6","3a3764df8d412fca7ea4867439dee48ea0fb0158cad857ff779d34fdfa2dceaf","76b3c9826707000380d2b78a37a4a38c229cbe5b14e54b7b7803db6724ae0e1c","9a482760661d8ca4513ec415d516e57761f12c34406cb4ae4e2ff0d62d4d9704","e13f01c3ab22c318004d2f15d3332ffcb1d34cb83ac0ff357fbc23aeedca9549","b4d4d5ab8410a933073cb561ff4d0675f2b2677686a1577d941dad972bffac42","e2ab7e1a50393456fceeca33ee8d616caf805128cce5fb9efaa733f695635bac","cb499774f7a4b9bbcd3ee6c7df563360ddf4670e7c415e6b1c12f755b580f646","3e8508d5b96a63bbd0b6d675417d096237cdef8ca09eada6fd8fd78d5ec7bc66","5d37386c890d21493869b2467db600a5e596016a6f610af31da26d6f795d358c","a926ff8854a4a5b1f7da7add0540214fab648956d53e2c0dfc86e58969f65079","f562ed8d82db188ca6cc22f0ff516bbcb8e5d395172d935b6ddd7e898f4afaa9","6a52296acb4312c6ac8fb6789d7445d3aef74d657316fd6cd8e1240ff5f5e1fd","1367218a467b625be9739cefa5a22b6ecc185e4efbc06012c1ec9c7bac5818bd","73422059178620968e52dc700cd7fb3e855fab9f65c4bdc5979f7638cde1891b","0360e8d8fa1bf5016493628cbcf05490ffc29c0235392abb6dbf622bfa4a01cb","02ebcc98593861620f74dec182c56c5e9f653cb018c517872f840067d281717f","6cfb367aaa686f1b33ac37a9c26458344a2f228fa1f7624f0de50c308a18920a","cd9e42cbbc110d2333005e41476e1fd11841cc9fa450136601dd3129b957460a","be4dbc47afac5f25848839f43d0b6e3438b7ec739b97e453c8cf71c9123b01b3","3a5169af64a9cd4b950cfee7aacd42b1af277ab6ba427150dd508960f38ba180","8b27ac3c86af4cb7536ff93478778533b17fd7af5d1fa97bf5224f763323e7db","f14c23f85eda06df795e1be8b54645537df3d47d1b8a61ce031e3886bf4c8f76","4bbb63dff60cc990037497151b6a0c73160fb6e54b5215bcd673c360fef5e019","d51d86c26e431dd4411d0e797847d4a43180d4ad8052756c0cb8fd617ced8247","e8e3e8d58cb561b2443c050dced8944c8d75586dd2f848c770103fdd63f89cb2","381ea3241a572a1ccdf61872cb72c4cb914afbb4a61e1e923262c2e16a764482","9e950c8d19ce1c4a0f9f4767106cc959833573aa8481cd6f98293c0601500770","1628b7801e78690f0ea79bf047d27ce7fc38050f9f76dad6d08682a1e26fbac7","8ba19db5227000f2645cd31b5f6e4232d8e4a1a3677edad8cd6c62476c4c2886","58b55855b9c93765717d3238a61d94f3653c8c1ba777c389b78ca81723f438bd","f674fea94e220cd5df9f28322ab1668e9460a71a89b79ab5b5d738531f4ed6e9","111cbf4bffd2e58f63b39f344a5b94e2f8beb6e6106c5d48ada87feb0a181bf0","dd4b5b8d4f6b96d572b87800b6252b0b08e5f2bd797a2d7c830679d2574e327e","de1df65e112ed48181e8edea7e419efcb1ab9d2038f04c0ca8d5f40efe7ad7d2","6295f719def08e23bc9a94e1ee2185402e36c78cfb2d9bc1be51bd3a2ceb30e1","202c6be737a013f5f393cb338ac6e53f6b228fc7745f209f24889d9c3ec7a9a2",{"version":"1dd4b5cdb923d65df19e6adfd9123b321ae5ff39578142c85c5c6b6813cd0417","signature":"08ea6c7f18ccf2262d0353bec79321fbeb182c00ac1d0842edd95d2af93b2ed6"},"97e0fc5fb970657971e04cb0c694a4b2318ba30ed3dd7bbb282d2eef3fd26925",{"version":"668c14b2b1f44f26f641c7013993b123555628fed9b47bc21e176f53f4f7ff31","signature":"f0974f9af395df5d24a67821464efc98510415e4ee915a30c0c89288532d5e6f"},{"version":"8ed6a8318246ac2f72cdd05d77497ecbcb8bf9adee98484657f1a7b177030726","signature":"18c36c02a16561f017574afab36cd0ec5cccc9b236ca89e6228d78fc804b096e"},{"version":"1ebf03758db2768b7d757c530d8e45d584405c57be4b0324b80f9965a9ee03f8","signature":"936aff450f4bc76476889d5715830c0ad197d8dc6175731c3775384247aabf47"},{"version":"29dc9c3f748a71653ca7b0cc08cc1cac40198dedaf2a4f814ca683fbac8e6163","signature":"67094cca2f8cb742c862feeaee92e77a9253c51dd274f3dc4d4dff76f1d018b5"},"7c7b0cb8e73236466a6b82bc4cfc5432bf020d6486fba6971b7f4e3626d8596c","30649028712370b111202f9dcff2258c5d18b316ac8dd482d63e9f990ea6d8a3","4f43483378eb03de210d20818f471cea650828ebbcf78e090303196ef0acc5ac","8e2eb98cdd19780edf534b915d633b0d83e1804204c27f962d6f6cf84a5f1caa","00cf1b83a6120b370579d4c1dea204efb95fc8232e2b80e3ab85369658a51ef5","9757fdaf978755ffa8644b606d82fdaeb38c43df3f49103ecdb340c9f24cd04e",{"version":"409cf8770fbb9f099124e9ca744282ebfd85df2fd3650ae05c4ee3d03af66714","affectsGlobalScope":true},"02122f0249e918abcc605718d9c8ba55e7462c861da58fb3ad774ea35370d751","93c4ac34d56bf2680d729ce053ee25593de4b0f64c19e1e348e3d273cd56eb47","1e75426f50206d6051bd026569a111b03068331cf4d1e065a124944710881ff3","1e3e86472f8b5f42f9b64836bcdf9de1123dfde416b87e601a578cabd8f01de0","72882059930c7d48883c3c4e5e086afa9b950e68b4b56266820974e1e365113a","c417a2ce04187b1721e111de8795421e2da7654a9b233df2da78f975eeda0b52","9b40e7713a003bd280fb0a325e2987bb75673853ef31b066b3da497a557a59d4","ce1e3bd9aa61997b6840a9afafc5e7d83532a10869b47d4b452f43b4e6806845","50d7fbc05e393d75c702a273514b55078642aa5b11696d303ddd7d1b7df65f90","0d89f0288c3544fd4dac63e02d09c517a0510860aca3c831996e6399c6d5a959","a2d1b96aa2b1b123796e8efccd0150a9efd61d0e2907d5fc6cffbdbdf2af29c3","e52bd78483827df2147cd92105a52436f5a73540b7b239467229c027558a0a11","01ec723a92332b93d1612d7644b7ec73a6d0b4a16ef854e970189aed79f2a1c3","0143fe5d5217789b61e8e117bd45dce463fb938b67c55cd5d033a7644c09b949","a64856c125f9caa1e4a9c5faa74b033ef5755d7d38b42f3a45dd9353ec831828","a3427c5d31b60052fe2b3beb4cf3cd359c1040f27cf52705ea14ee7b26f7a29c","9d03a2f33e5c77f0e06796e59c5e2c232a3fe534a242068944f272c805e0870e","db56a140cf130f0468bfc0ce8a065770d8131be8d6a62b2f7feae749090f8d3e","ebf9aaee7901fc13321e1550aed099275943e284f9801b77462421754f14b418","db344995023e51c2d309f43151432dd130c0fda4da6493162610f3eb3753671d","872230326c142c396ba545bb43145dc1a09d6d7683ede793d467f064a2f497ee","3e1f6161af60424543594cae6fbbd40b45bf7b6bd06d5ad88bc6b9a812f1515c","b2698d386e38b0aa7837cc03667a73a2ec39dc2e936076273e871ee855704828","e9693ceed631c36b961e734a113cfd0bcdd6bd40345df0cd3afd0c1975b20f05","21fe196826670e07c5c2cec112b06a9c7ae830173edbd4a743d7f6f2802f7285","ddb63c195c49dae61606862374883240c859a46715ee5dcbe552cb0a401e9c61","9a2c91353721a7a30dbaf583abf76cd078d2ec11ed58dc630971397593ebcf07","89c7d2824ea98df0d342b6bc07a363a4f7a2a536fdce6d8c7750d02a2240c054","8a4edabde8a7e4c759067c370df59f32c0a08a04a0396b9601b90adc025c7a3f","df4be4df36bd04ce4a148eefc70b4c06d74bb5001a5dff7998d04a007596e7dd","6fc821494476430101bb27d9fa50db5b6bd9a348124ac3a33763045f7f827626","7fcd5bf201200cb0c4086a548133669881e65c7e1ab8346f2ee978fc20d1571c","22aedf31c5b1b7e2e43465f0586fd465c5a8df187e085341bc2f86077bc857e7","7ff7ff605ad366abcdcdab9438d77589216f21e25ba5e5471504a519527f8427","96b7b1f17157bf95a4b9867d2232bf8f7636ab1549b7aee0be4ec41412f9ea1b","2df560da369277bd3bce0069d6ea8d8ec4a8af39d81252287efa0857ed52ce99","6a364189a479901f95bde90e2d957f7e39dda479907a430bc9d7ac73ef802293","bddd79bf171ac38f3334b63200f146d3a35320f41aa28454b867ae314d165a33","6f6bb4721a15136efb54786e70095a5eadf2ba7b3569f6b163a2b264f5304e4c","8c0a74ce24e03a1b51a00773ba5981a6a72083ffcc706a69a1ee5d82eada3de6","dd58a7b16405c7829a51a4e05f038cf201f84695025f2be5f12f74880c15176d","e00cb69ed3340cbf14af85e44925b774d1d8df2986b4c2f4f1269f24dccebd31","ffe9272d9fc624dfd2f5fd2cfae5856c51ec897f623759e6cb2570e3e6288451","e0c611c28dfd69ed653e578bdfa5f3b569363c9823d3aae674f80cecf3de3924","5075a0ea86656a1612b81fc4d38d074486bcbd515110358bb3bd681d38c2ef6a","190eea2d45823bcfa36e763962aaf2ff256a9435a2bbe30f00050abe3407043e","cdd8bbe8685b4b181a1e8ee5ac04141096ee32f747d39c01a173df516c9700a4","cf6e52c6e4a3213eda2e8fd99ecb98fd92cd42bc87e9f9f0a46ba4194ce19e72","eafb94cde5ed58af4da06c8e8b87822bcd2ec20da87882586b2094d2f3f66052","41bb834e70223804be2dbe28da72deed5c4b9fca971cd007e71b147c34c98016","3fa8e9041552cb8680f3da432876a28b4e1c01f27f644eb5deb75ffe593c03a0","dcab9e48d5e0030d235deed438d8284c82f99c19fd8c24a202da0659fab8ebce","20300440befbcecd0190ba5283d8e1226998904af2e33047a1b09b99f205f075","98bf08ca3ff82b77616339d810d33b87806852a4fd85acfe69ecbca0824aa15d","4bc3310e096e14197fa9ea06f71b5f51b49fc3149457e452595ff66c816112cc","d525edd62306c771d37d291a24d3ef1e8be87170bd43646397225519fd03d406","04af3247e869caf59f234b789bfc5afd4633cc83afbb1187c7da9bd05fc9e12b","440f12b508c646dd5819a984dec7d3e07ae0528876ec3b7d9a958964ef156340","b1465b978437b5cd8d206f8c1167e883d89012c747c7f7877063dacad8f2fe65","0469deee79f32e79fe6ecf939073702b1d7ede516977c777bfed2130142c68bb","e2c11297e05281b97ac423064e47cba8b44cd237951866b04b1c3d75c7c90b29","2e4ac9ebb3f0a519563eea78ebf04a81a248df423ac9dac241254187796eb25f","c7382473af58e4e8cbcb5e0f519e44040b42c738cf7742e236eba40476098112","20f70385470f1de1bc18a83ff32a503fabbf786010b3529b45d0dcb62454cac5","d5a62e6f5f7750dfa3e2643169c398683fff3acc1185aff67dbe6e7715a4616b","f138c43b89d5c9a6405b1c6c33a872fe5b18de0d797b249ffb501b98f5247629","aef82d2de3125663085b8eb9bcb1c7a4cda3d5dad5c9418235c86979d6dcfb99","8ee823b923b39c9b1d14f81be99cbbfc95130fc603d188f9b9c684e489de8e16","1b9dcdfbc034d053e1de9620429e21a47e61065862ba17a2adcdbe9455b2043b","36d8237d4e78f4e457a53453c141b7e6700cb8db8240ed557e6d6611cb9ec1c5","0ed265828adcfbe6602d35ee772f55965b86621fa961c1e29db3f9fb23c9afb0","f0141780075d987faf9496b903cdc1d863bd62d2632e7d1071924ae5f5ac004c","353eb30138d325de82ebbbdf77ad51e2bce5c361f858353444a294ebe82b0295","90440e10256bceb078d15e70805b7796e1e02518e04b1ccde88d27c09452c301","41100624825468cdce4e164c14e5891c3db5a8a8b94bdb6db4bfd05381599dc0","c877a1407b1f959542d537ddb977fa93e9ba60e15aeb7d8d4c37b2038fcafdca","e4de9938c4b179d296ddd8bbf58bf7c545f5a29a13f74d609e984007b4cf8315","2c26797663ba3e9134db08d9f8f7dcca29fb544782bdb84b6d81a1a3b6fdc323","f26c1ea07208ff70bbc32693469337dd78b160131a37e7eddaf5b01ebc4e8aa9","f977ab570f74d7c89b35c7846eb82442e2f210cba215e084e63ab9512fe37091","b4a078835b266341ecf5ab37213768860a49e3bf4f833b55ea61622a436a104c","22d0d333b8cb1e207274f9cb6d6c7d8d5981ec12fc63de9edfbf76324eba05cd","79d93c5479d7330eff1eee5e82f35b90104cdfeb151885fbcce23092d9577356","77c6106eee8692f6d4d07be1879ed078232b6739b1da9020b994d0519033d9ce","bbbc658eb5f2cc33bb600a5584266befc9a1b72bc98b281f69b4350564e704f6","11bfd21dfdb7ffabbcc9ea02dbd0efb45109b8a3df5f15080b753cf6abd7b683","891573fcae2175e2a4d4673a8d3cbbd40494e743d68d4198e7433eeb0636218f","0a0f38d5d48b8c6f24b76420e410f4770711734faac8cb76c07900105a9d9e02","7d7e355f954e1661804e2428ff9c0ee7162e30e6573b67d9a3847f2aafc0e959",{"version":"ffdb1684c2c571c33214badaedb895ab39208cf8bee4241e63b07aa97b648ddd","signature":"053b8383c578e24a4de857da951d19fbf110e69a1118ccdacc1a0fc478ff32ee"},{"version":"ec67fb4b804cc2b2c142ca2aa982b202113f77abf7a259a0d7be1b78d2b700f4","signature":"85df3eb0fa2cb56216b5fb78ffb6d4dc337807d1cb5fee2263d79851dc174719"},{"version":"4037bc87c3961aba6c230eba78b5a34215115ae5296fe44a06bc07f8f01cebd0","signature":"d2a24287b4f60b39e7db11533249caa56358df7f65d5bc6956af2e0684471a30"},{"version":"6b80fcc7178dc7bd9169577eb1e1f5769b28229ae9112df1f71f040c8776ace6","signature":"c3366002cd808ea28085fa297669761567b55e9c7a3eeae53d045226ddf0fe9e"},{"version":"a5adcf718176fb52d2c40410da57cdd58fd24a3c8061767696fc57c9b1739020","signature":"b290ea966d6067c76317a6a76e2406c0dcf1b891f919e3ea02d1aa2a30bed0be"},{"version":"f24c6f2f04041b371b76abe41fdbca2b4f575eae3c4b7ee620e628530fc67e75","signature":"6d878f1622aee0937d8048ea024831b4888d4156f1f3257d10b9ea6edcb2900a"},{"version":"9b04c4ae291a42f1f7f74d1ccd9d209e5fa50e53a064e0488b2897441fd8e017","signature":"54c4b0d6158c4d317a9092ed894c9c21f2904da6d332ff7923363b61cd33991c"},{"version":"69354eef34345cc8f0e3e28030794ef58478bc32a0fec84eee910d1dfb46625e","signature":"566a8df7135c1ce5f61092e375440e3d6c2a7851104d81cd0c995a22c0d00ab5"},{"version":"e8d75353f6ff4bcef59447856f6ca64e3808ada03351deabff020e239a1887ae","signature":"447cec9976712cfe46accc1da433d8b3400ae067a4fa74efdcebad2c08723cb3"},{"version":"ba7c5cce9a55f1b80fb5eabe74b47844131b936d55a164a15105600033b2c6fc","signature":"63b6a43ecfa98b81132c555b80c610a1b9f5d05171c48624fa759f39e9a400fe"},{"version":"083bc1969d77c95624bd9b978f656f4a0b72767442da521a091f74b12e00f200","signature":"4e87e04c2885f08129090d770eaab494894108d829de38984734a79bc40f9a5a"},{"version":"59aa4d451caae490d292168907a23918af51fc4dc1ed7fd8281422cadc43c206","signature":"157986029d989eb1fc0a06ee1e601e33c6db4fe502bfa4ad19ad1a4792a716b8"},{"version":"af1736fc60724a78281818e6ba349051cd2bfab8346e66729c7228df636aa5be","signature":"39da89f80c787c2640f8330e30ff40f4426e3b0fd4be7fa8a3b71e708eab7868"},{"version":"006f9bf9e51923d23527a9b6e560f597c9fe20a3c9d5c3b2031974492658fe0c","signature":"c7435fa094df6f38668ef231065a31f7f7a8cb2937e781a1857c81126808e51a"},{"version":"8e45337fc1bf6742a91b94b6603770970638879be376c50056d23e48209affe8","signature":"b4f58d149c1bed6d136402b8ce4e55fcdd99c02aa95e48267169358247f73f34"},{"version":"45644e94ce6d623511e868fca0a8b9382c382d003ec31c623a64a0bd827abe01","signature":"28e68e20161a7233c694d07a77663f313fb426e92b16fec0c4124147d72ab535"},{"version":"ecabe9ac8ad7d344adc06c2d9cd955c5d640e574dc7cfff816153d25b3983849","signature":"ec7bda3a35f46d0ce8c774d3456ccc41d42464aea68b866c5adb761f69a96f9b"},{"version":"93c6ba1cd2eeb95f7c2b793046e139ed963e5b5f9cd8539c78f2d57a2cdcc823","signature":"1f0eb398aa7b909e464c2b28f68e419e8103b900e35a9c51abeac9df974dd503"},{"version":"c3771d3c405f7228060961b0517254467fb6ad0c3c33cc56b663708fdb9d881e","signature":"6b64e2490209643922140a085b53f722002f0ec5374b3059a675712909ae780f"},{"version":"a02b4dcc139b68d37a00779f7914d64b21bf6e96d6b6092e0cf1ffc3b2b961cd","signature":"98404df63b903fb27e6604313657eab740971a52fb56ee2b2a7e1d150388c322"},{"version":"4017811ec1090bc8a9882db268d69e74d1004cf36ebe77a34086669b32b9d259","signature":"2b09e788746853cf4a6cd3582cdc421dc8d50ee020c8e03709f7af7650c6cf4c"},{"version":"ba63b476ff6444dffabebd54e690dd5e978ecf5a33d85f860e9a9a6c7cef4786","signature":"ed5c1c0f248ea816fb19f74fb0d89ae5a78f3b2c3b4fe3b0c03a0b0f47de5972"},{"version":"779c1b15ac502ecc7dba76fca282b6613f55bda9d6b25f7b0b1c0f7826c23112","signature":"4d35c9db1c691f469dc620571ec5941fbea535ba157c8add9264a182d6aac2fb"},{"version":"aee25a9af9bf490eb474a2a97935ea69ec9f53be70ad002c45c20c7f6ca72633","signature":"1fff41f6443491708d00d07da25ae4550a338e41bd579bff7e77a09cba03c407"},{"version":"92d8d06c4d2dd1e45373c9ddfffc75ec7274a8aca1f4b227c60cb5060a070203","signature":"d52b22b8c407bf4581cd741740022a98360d0679fac9df957bf94d9e3862e58e"},{"version":"c90046e1f8c8e563ac575bbe08c9fc448e76c0f5b1ac289c532a3a50cb61e441","signature":"224247877071d37e2309ca1ebefe3199a18068fdebf92f5da9871213aa5be63b"},{"version":"0b00bd9cfa591cb85a5f3260d02aad6bb77aeb60d018e603192ab3d57fd267be","signature":"c5fc387782df8f02cfb988eb7bceb36c37acdd417a1b3f0b031cb7bb39f1264f"},{"version":"f47f9abc3e5437841fb93b4dbf0992c643b0205ab90cb81603a81893f0020f27","signature":"1895ddc3ffed31292e0648b9d12abbf69bf453ad823948fb94a8d6d13d4254fd"},{"version":"b08fd89ff80587685ef22012a071a1d398d4a760032eeca80ad74888ba7bae8d","signature":"7552d223c0a2a1b933fc2d6eb6c435400f584089490dafe695b7b00c1e096f8f"},{"version":"e1a72b27b654fb542911aae4b4b5ae69d87d112830788a545088c5e769b00387","signature":"2fd0abad707bf609c11dafda0de858259b64ee323159d0cd4662a2ac9849c129"},{"version":"5f09498b622ec052e5fbaada1be84bcd6af1f8fef2e09eb07bd861cc3afdb003","signature":"4bbca0aed8697a19094115cb560eeed0b6a798339fc66d8d53fd32cda998e6bc"},{"version":"066aa3fe4902daa7ce426d887a9a4875860bf648508ff3cd58d07bd745ef0bd8","signature":"f83ca2a3ee269b155345417b46d5a88d4209c9752f4755ee22f7f39ef7d411ba"},{"version":"0c8ebc37ddb867423477be8c1f601ea1091ec91a087aa314a87f07faeba8cdc5","signature":"2bda87f162b373130bf52cc62a2cc3cdbed40de6b139d69e3b4fbfcadd20910d"},{"version":"2ca0c6346c19f9b417906948a1004c7030268a0b9ed37327611d9a194c4415ca","signature":"d616f7940d16a0704649460615d332bd0e8b980c4a99add2ade55619c28e54e6"},{"version":"5ef98ed6d5d13160c0a8d12369949e482451a9c63df18327f2ab4b6277446206","signature":"6b2ae62d2f88cb0cc7793edf94949f057169275ec9bb0c6c85dbbf0bf764d1f0"},{"version":"ef443ee2f31d8f04f378306b6e3b3ccc2ad475e963c2ffb9f003e415b6884738","signature":"96b0025d0748a16a8b7ee69a03b4574f7c7b1f294e268d979307b204d635cb6e"},"9dfe431ab1485e17a6055e186c49da9d23af74b965f2e99f8acc6c958778608f",{"version":"8cba046df940a49f605e9ec93685cf7024ee9e4c29525749759ad8aa9a38a5a1","signature":"2157e2738cfc9ed8a3504143a18bd914652ee9a76ff6738ef418f1b8ebeca11e"},{"version":"814fe72fbc481b76c6e04e5ce9065715fca42e6a382d3421d98eecde606b5efd","signature":"c6131f773158c4ee14f2cf96b53b9bc7f697bc0dd002b53d0df463225f51b01e"},{"version":"3ab903fb4ec8a5b8a8830e64559484b02a31de6eb8276dbac9676dd9fa38dc62","signature":"267234269d859259c354ffb154125ada94884e110832ea10fa4d746ea4b09a37"},{"version":"2ad60be36ed65530ac38e9af7951d3391b69ad40a42feba03f9317c54cf6728d","signature":"b7dd4952b944f223b737a3ad8e50a719f1e54ba6093dc24aef0cfac1048592b7"},{"version":"830d8ae1abb4f27244e69959e674ae6b99b8ef246843865bd01f40e55acb75de","signature":"ef4d9c1c3b90166572bb85a48b368cba06e1c3273554748577717cccc0959cc2"},{"version":"289cdc9f6634d55bba54b33b419c21a159c4fc1ebe43eebb21645fc7ae9ffdcd","signature":"e6f72e8d2aeb130dc92b072d3998aac82ca24e5dbbe5570d9c38b1bec84899a8"},{"version":"6a965ca905348d4d30ed842c931e10a59fed3b3edb597cc00bd1f87ce89e79bc","signature":"05119bbe2f856ce4b75731b76da9c898d55564e516056887d1702d8da3ed3d63"},"47be229e12f1953e577533f93d304ed68be89fb1c36bf86bc340b0b772a1fb6e",{"version":"5c6fffc16cb988729e17d39a33c01e44071cb80b2a19694d5f8cef3b17979504","signature":"2585e814160deef9540619c5e0c6efce7b961bcdebb4fe2b84e418392187d0a5"},"97868e2fd0583a4324db04de78e3475e4fb2e32a8bbf669278ed716be23968cf",{"version":"6c4993adb55e4f580ff676248887d3b2f48ff9a797cffb57c41e74dcc2740bdb","signature":"fd9a556042fcea1bd90967627544acaf1ee975873a614215a0c83c768b310e0b"},{"version":"938478f10523f013d13888fbf35f0faef54da0a55743c3ebf4cc8f72d11107ab","signature":"24a60d2bc05a58bd8504f2c5e713262289ffe9076ef5e774752d1f82d92d3d0b"},{"version":"ee82f7626f9a1e91617abf5768a1111df118df6734eb05748710b45c3ab030aa","signature":"74962ed264cf39b4566e90da236bff1f104b735f43146e9e6616b6cc4b69989d"},{"version":"06f233d67fe0a7da2ec324292d2376465de63c6be7533f0cd6fc2544a5bf7af0","signature":"4ca0d831307e7ec786d0e81597815a59032767dd3a048606ae6e9131bab583cc"},{"version":"d854184aac112a850285412563bf4c91eb6173f8ec9261d1b9dfbfca0ea985d1","signature":"af40d8840b59e6e47c3bf1fda831de0b784c8c836d6fe43962eb270795930334"},{"version":"7b0600e70fe8cd6f0f57f2dccb3d9eb0c97c3fd603c11e055c25ba43f891832b","signature":"769b0e28a01897f8f99290d212c73a7847c152943ff66c0b1be876d25d351a21"},"6825eb4d1c8beb77e9ed6681c830326a15ebf52b171f83ffbca1b1574c90a3b0","1741975791f9be7f803a826457273094096e8bba7a50f8fa960d5ed2328cdbcc","6ec0d1c15d14d63d08ccb10d09d839bf8a724f6b4b9ed134a3ab5042c54a7721","5abf015d82b51253cc27cc443df05dd666676b81a83e182e8898890e6a1c74c7","ddfc215bfbddf5854d80ab8fb0256bd802f2a8acb6be62f9e630041266d56cd5","2c3bcb8a4ea2fcb4208a06672af7540dd65bf08298d742f041ffa6cbe487cf80","1cce0460d75645fc40044c729da9a16c2e0dabe11a58b5e4bfd62ac840a1835d","c784a9f75a6f27cf8c43cc9a12c66d68d3beb2e7376e1babfae5ae4998ffbc4a","feb4c51948d875fdbbaa402dad77ee40cf1752b179574094b613d8ad98921ce1","a6d3984b706cefe5f4a83c1d3f0918ff603475a2a3afa9d247e4114f18b1f1ef","b457d606cabde6ea3b0bc32c23dc0de1c84bb5cb06d9e101f7076440fc244727","9d59919309a2d462b249abdefba8ca36b06e8e480a77b36c0d657f83a63af465","9faa2661daa32d2369ec31e583df91fd556f74bcbd036dab54184303dee4f311","b08de5693ec0119e033ced692f3ad0c0449c7331fd1d84033ea9b4b22e7f269c",{"version":"187b4841296f3e969cc29929f0e312459faca2a375434f2bccf964ec913f2e0d","signature":"88560a21f4721f307da2941192afc3f5cdd80f6aff39648a40fc9b4e192fb773"},{"version":"ebec8e0bb0844d5123cf249a4b050e48df6374bddcfcdc2f5f9509a8fb9e069d","signature":"84c99c23bb926cf4b07889e94a7c34bc8d66bb7ce2787c9d55b1b34f27a0e4c6"},{"version":"914623c15918a77223f575a477c7d9bf14218c8c32aa584051704a6710989296","signature":"fe1ef91979c37e024046f152d7b77e4e2e254aad49a20e17146a816bd73c2a7f"},{"version":"f3a68054f682f21cec1eb6bc37d3c4c7f73b7723c7256f8a1ccc75873024aaa6","affectsGlobalScope":true},{"version":"77e40e3f22bb3d2c25378e2a97c88aa3448fc9793219f8acb80dc9042c53557c","signature":"80b84a53b0a88a18cb734532b2dddda9c70715dd4e5550789f5e32041d0df1d9"},{"version":"60488108cb78d5616e4e8ed8ef928e10bff8cd198ef735663cf7ac0efca28b91","signature":"58286940ca83165089e2e7f3b06f0dcd2024c6dc52be4127b8e5eb4b8516dcdf"},{"version":"cce52f0c8fac6a1a3f8e7730388d6dd4f73772b3fbe23f4398c3ef90ad7fdefa","signature":"1b7623f21ff85795f674bd0e038cd3f3757afa73f0383fd326b0a60f607e3b30"},{"version":"39586bb208257a263e119541c8704b68ffc01f090c92989425cf399e5ad1ad76","signature":"a800d1bab21a472f8254138baa907b40caf4edde4604a739a5c86f8990a758c7"},{"version":"ff1e2e742b267548ec4ea04c9466c52a87e29f98d3cb612e79ac00cbd13e6dc2","signature":"d8f4ecd0745fcaf5a4153470d1c1d850357d91d525cdf27820c9fd4970c12d5c"},"2717b230156a36b10d7c670cc2fcd58f48d62872115a7ae73aa0b595170e120a","030ccb2a4ed243af31c0fe3ca7d5d17af41cd8cbb01ef4be6b4cb20893fdec54","a26b9d948a5a7744ceb978f57c556ca3706d9f9ca1e44e779e66276f33dbb15f","56c7cef53f83c4189ce0dfa28f5c9608ef7530dde10cd1696976ee6984d739e9","8b93004cfe3833da1ecc7f3a3207d1d40bc14d50c2386f2024cba08766170cd4","6c53ef41a784ad4ba2e1972d69b6a3fb293a04f860f8ce8a91274c4a4db1985d",{"version":"02b7568c577e54afbf52c4d3002e3eb4437ef899333c34e8192aa2a275d91a75","signature":"79c4d0779959342666da42c6d5ee1af183e881b73d5ff46d1a7f996c8010ca44"},{"version":"0fcf1b807424c3ee8cb297e343c3c0e7dd7f3b9009467fe4e5705bd748f22760","signature":"3b164eead64f8bb017e41da30565642c4a37ea23e6dba1ff047405e219b57d5c"},{"version":"4aa566a78a1df90879a4ba357991712c387ad03b5f7bb33116702f577f18f2e6","signature":"c6a05d6be3f73f2724cd0a716c5ca2cd19ce96ddddfec5b3ee4e794b8a64317e"},{"version":"95067d1c38abe75d31a0164b71574b9cec623021d1f74e0430485a0f12b8b7f0","signature":"fd941b266746fd8577a747b7619bc695906f1de087136363d03bddf87ffe30e9"},{"version":"3adf0a4d1e2650313abedc16ef0f764ade318a6832936d23b40c1c2ee83b7063","signature":"23bfd4bb88efc500d0ec120c98bd831aa7b87cfc21e104a60ac0ee0ba28b7abe"},{"version":"12569532286aeaedefe487b635c7573d210a031275e004ed6dd34f86482b1aad","signature":"ef98cb7100d7c1f2c2a7d07cef2ec4a758484ddb46e6748b5a01deb0ef4a74db"},{"version":"7c26aabd3eb86e9e231f867568bdfbe17587723b320f35a49b73259c364d9c24","signature":"7418bcbe5bc3b3480deb513a941038f4656dbf63957fbc5dba9a9e7ee61a2c0e"},{"version":"7bbcc53abe9f50ace136d071b1086db79e60901ca9c7cd8d6e12d104fbda934c","signature":"a0cdb8d9f1500eb2b297c3abf0b0f097146757a1d89d96210039f4669b0d1975"},"b0f9ef6423d6b29dde29fd60d83d215796b2c1b76bfca28ac374ae18702cfb8e","0dc6940ff35d845686a118ee7384713a84024d60ef26f25a2f87992ec7ddbd64","e7bb49fac2aa46a13011b5eb5e4a8648f70a28aea1853fab2444dd4fcb4d4ec7","464e45d1a56dae066d7e1a2f32e55b8de4bfb072610c3483a4091d73c9924908","da318e126ac39362c899829547cc8ee24fa3e8328b52cdd27e34173cf19c7941","24bd01a91f187b22456c7171c07dbf44f3ad57ebd50735aab5c13fa23d7114b4","4738eefeaaba4d4288a08c1c226a76086095a4d5bcc7826d2564e7c29da47671","dbec715e9e82df297e49e3ed0029f6151aa40517ebfd6fcdba277a8a2e1d3a1b","08b6b541f10f76945355801526f76c376ae426054257af9b0d62058ca01e133e","8f75e211a2e83ff216eb66330790fb6412dcda2feb60c4f165c903cf375633ee","dbe69644ab6e699ad2ef740056c637c34f3348af61d3764ff555d623703525db","e483cffd30d5fcbd4cc6fca4388ef8d03a59031a44f65c2a834bfb2038ac3bb5",{"version":"3396ef4cf6ca8f700e9455fd48e691c3681d708f353edd9e7dd5aeb42f835607","affectsGlobalScope":true},"5791b63ac312a792f888401243acd5084f27c2c76792d436fa68e9581a74bd6d","09bfef1df97172585ad2f9ac7f322dee137db5e2219c049161394d8a3b0c4844","a0f6ad4d754c855f21f761776ac0561e69b0c70e3b98ce4a329f708d1a72cb91","c7a577c3640abb83946c875df383cc6f76bd44b2c2946ef178c6828091959068","219a526112fedefed96c72b17e805cab7c07297ecd59acd11e054c2bf96f9293","1cf8fa7e76e354e5b17084f67c89e9c655034269a704e2dc1c6bd4f27ec4dedd","7d2a0ba1297be385a89b5515b88cd31b4a1eeef5236f710166dc1b36b1741e1b","8e87660f5170c195ade218937e360484775be6a4e75a098665d9ba5a2e4cdc15","c5db71b50eb0ab36b683b6850f585af6eac3d1234d0d4dd6f4bd103f58e68a46","c700397f184165b11444703123c6c83af4ee4b02728094bf245b2abb061acc34","c09d3d8964ff66481d085b2702fb5295a94756dce4739beda789b11b89c3aaca","d22280c29a0d4d6acba8968091ed9b772946c78e36d4b0cb7eca1803b8b8c2f0","8730131999f563de6b559e35f6253007cd311e676e9d17999c9287dd3e11e618","38992be86825669bca9d84dfa17319e89c30969e05ba85d9c7f99dbc9c2eb83f",{"version":"babef1fd21d3f9a7349b30d517a860858719a31b1aaeb66a15e3698e63f988e5","signature":"f4308def5f1d15cdacfbf83b55d20bf19ca01a4414297698a5ff3af2297035f2"},{"version":"b10a1c3a3d9d0072f94bda18e81d14cad16dcc349a190c402cb5f611e1e1173b","signature":"07a309b50e96e59f9f87e94b54e008d9b3538addee4b4fbd980cd55f7bb65cc0"},{"version":"a8c915666bf336114789d634ee5fa9632b160da58494e810b8915859b6c6646d","signature":"404e4b013a30e294077f421e760836b6a1c7770c309f727aae83bb2b39cb38d6"},{"version":"8afed36b6a58645060fe7ef2bb255f393594c50a5b2110d34dccfb967da5dec7","signature":"ba5bab672e84ee493e50d153fdb8e5c3eb5124b6f44e7dc98d3f480efd797263"},{"version":"2086e2a2428d104244e763a025a3f84e792e5209d9ef328b4c07b15600ba94c7","signature":"9a44f8ba34c7f26931ff2638dcd9a7128c6c49f7862fa73eb33a15ca836f3b4f"},{"version":"5a6bdaa8c741460b9063396ba1818b9e00709015a19bd30048f860c7fce5bd83","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"51b0d4647ca1d4afe496ea8be14f7875235bac4f69446cdc4ecb0c074500b891","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"04dbd8cb447260ca60d896341e1daf04491d43438e60aae8034716cd06efbc90","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"a773b5f1069c1f2af8444ba3283cfea0add40be1e6423adbcc12f916fcad495a","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"7f8a12a21576f7967a83781a3cae8d5c45057105fe066f50d65799be0d2a7d61","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"2f64c7f1485b31424f6e6fbbd3844c2c03287363f56ba42721d36660c05e54b1","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"64d4b35c5456adf258d2cf56c341e203a073253f229ef3208fc0d5020253b241","affectsGlobalScope":true},"ee7d8894904b465b072be0d2e4b45cf6b887cdba16a467645c4e200982ece7ea","7852500a7dc3f9cb6b73d619f6e0249119211ea662fd5e16c59ee5aba3deeb80","211440ce81e87b3491cdf07155881344b0a61566df6e749acff0be7e8b9d1a07","5d9a0b6e6be8dbb259f64037bce02f34692e8c1519f5cd5d467d7fa4490dced4","880da0e0f3ebca42f9bd1bc2d3e5e7df33f2619d85f18ee0ed4bd16d1800bc32","c56ef8201a294d65d1132160ebc76ed0c0a98dcf983d20775c8c8c0912210572","de0199a112f75809a7f80ec071495159dcf3e434bc021347e0175627398264c3","1a2bed55cfa62b4649485df27c0e560b04d4da4911e3a9f0475468721495563f","854045924626ba585f454b53531c42aed4365f02301aa8eca596423f4675b71f","9c5c92b7fb8c38ff1b46df69701f2d1ea8e2d6468e3cd8f73d8af5e6f7864576","96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","ff81bffa4ecfceae2e86b5920c3fcb250b66b1d6ed72944dffdf58123be2481b","458111fc89d11d2151277c822dfdc1a28fa5b6b2493cf942e37d4cd0a6ee5f22","da2b6356b84a40111aaecb18304ea4e4fcb43d70efb1c13ca7d7a906445ee0d3","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","aa2c18a1b5a086bbcaae10a4efba409cc95ba7287d8cf8f2591b53704fea3dea","6f294731b495c65ecf46a5694f0082954b961cf05463bea823f8014098eaffa0","0aaef8cded245bf5036a7a40b65622dd6c4da71f7a35343112edbe112b348a1e","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","a95b6a9a7d04b26f054eadae6ebc0cc52bdabbc1c3e0d9db994a82cc90bd0019","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","b03afe4bec768ae333582915146f48b161e567a81b5ebc31c4d78af089770ac9","df996e25faa505f85aeb294d15ebe61b399cf1d1e49959cdfaf2cc0815c203f9","4f6a12044ee6f458db11964153830abbc499e73d065c51c329ec97407f4b13dd","963d59066dd6742da1918a6213a209bcc205b8ee53b1876ee2b4e6d80f97c85e",{"version":"0ea93d01083b3d5863cc98cb589b5d0eac55d14417487f9e5e455dfa0b17c660","affectsGlobalScope":true},"22293bd6fa12747929f8dfca3ec1684a3fe08638aa18023dd286ab337e88a592","c9e4cbe40dbae8e99de2c8a9efdc11962395d4ad80bf03a05e80ec5ead9e2ec6","cf3d384d082b933d987c4e2fe7bfb8710adfd9dc8155190056ed6695a25a559e","9871b7ee672bc16c78833bdab3052615834b08375cb144e4d2cba74473f4a589","c863198dae89420f3c552b5a03da6ed6d0acfa3807a64772b895db624b0de707","8b03a5e327d7db67112ebbc93b4f744133eda2c1743dbb0a990c61a8007823ef","86c73f2ee1752bac8eeeece234fd05dfcf0637a4fbd8032e4f5f43102faa8eec","42fad1f540271e35ca37cecda12c4ce2eef27f0f5cf0f8dd761d723c744d3159","ff3743a5de32bee10906aff63d1de726f6a7fd6ee2da4b8229054dfa69de2c34","83acd370f7f84f203e71ebba33ba61b7f1291ca027d7f9a662c6307d74e4ac22","1445cec898f90bdd18b2949b9590b3c012f5b7e1804e6e329fb0fe053946d5ec","0e5318ec2275d8da858b541920d9306650ae6ac8012f0e872fe66eb50321a669","cf530297c3fb3a92ec9591dd4fa229d58b5981e45fe6702a0bd2bea53a5e59be","c1f6f7d08d42148ddfe164d36d7aba91f467dbcb3caa715966ff95f55048b3a4","f4e9bf9103191ef3b3612d3ec0044ca4044ca5be27711fe648ada06fad4bcc85","0c1ee27b8f6a00097c2d6d91a21ee4d096ab52c1e28350f6362542b55380059a","7677d5b0db9e020d3017720f853ba18f415219fb3a9597343b1b1012cfd699f7","bc1c6bc119c1784b1a2be6d9c47addec0d83ef0d52c8fbe1f14a51b4dfffc675","52cf2ce99c2a23de70225e252e9822a22b4e0adb82643ab0b710858810e00bf1","770625067bb27a20b9826255a8d47b6b5b0a2d3dfcbd21f89904c731f671ba77","d1ed6765f4d7906a05968fb5cd6d1db8afa14dbe512a4884e8ea5c0f5e142c80","799c0f1b07c092626cf1efd71d459997635911bb5f7fc1196efe449bba87e965","2a184e4462b9914a30b1b5c41cf80c6d3428f17b20d3afb711fff3f0644001fd","9eabde32a3aa5d80de34af2c2206cdc3ee094c6504a8d0c2d6d20c7c179503cc","397c8051b6cfcb48aa22656f0faca2553c5f56187262135162ee79d2b2f6c966","a8ead142e0c87dcd5dc130eba1f8eeed506b08952d905c47621dc2f583b1bff9","a02f10ea5f73130efca046429254a4e3c06b5475baecc8f7b99a0014731be8b3","c2576a4083232b0e2d9bd06875dd43d371dee2e090325a9eac0133fd5650c1cb","4c9a0564bb317349de6a24eb4efea8bb79898fa72ad63a1809165f5bd42970dd","f40ac11d8859092d20f953aae14ba967282c3bb056431a37fced1866ec7a2681","cc11e9e79d4746cc59e0e17473a59d6f104692fd0eeea1bdb2e206eabed83b03","b444a410d34fb5e98aa5ee2b381362044f4884652e8bc8a11c8fe14bbd85518e","c35808c1f5e16d2c571aa65067e3cb95afeff843b259ecfa2fc107a9519b5392","14d5dc055143e941c8743c6a21fa459f961cbc3deedf1bfe47b11587ca4b3ef5","a3ad4e1fc542751005267d50a6298e6765928c0c3a8dce1572f2ba6ca518661c","f237e7c97a3a89f4591afd49ecb3bd8d14f51a1c4adc8fcae3430febedff5eb6","3ffdfbec93b7aed71082af62b8c3e0cc71261cc68d796665faa1e91604fbae8f","662201f943ed45b1ad600d03a90dffe20841e725203ced8b708c91fcd7f9379a","c9ef74c64ed051ea5b958621e7fb853fe3b56e8787c1587aefc6ea988b3c7e79","2462ccfac5f3375794b861abaa81da380f1bbd9401de59ffa43119a0b644253d","34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","7d8ddf0f021c53099e34ee831a06c394d50371816caa98684812f089b4c6b3d4","ee9ac9f006589ed36c7229b3c1614bd339d1fe009cb20a85d16b4f60f0c5cddf"],"root":[448,[450,453],[550,585],[587,593],595,[597,602],[617,619],[621,625],[632,639],[667,677]],"options":{"declaration":true,"emitDecoratorMetadata":true,"esModuleInterop":true,"experimentalDecorators":true,"importHelpers":true,"module":1,"noFallthroughCasesInSwitch":true,"noImplicitOverride":true,"noImplicitReturns":true,"noPropertyAccessFromIndexSignature":true,"outDir":"./dist","rootDir":"./src","skipLibCheck":true,"sourceMap":true,"strict":true,"strictPropertyInitialization":false,"target":5,"useUnknownInCatchVariables":false},"fileIdsList":[[458],[456],[194,438],[194,434],[440],[434,438,439,441,442,446],[194,430,433,434,439],[194,204,430,433,434],[435,436,437],[443,444,445],[433],[194,204,430,433],[194],[194,627],[626,627,628,629,630],[194,626,627],[194,433],[155,158,163,170],[158,173],[155,158,172],[66,155,158,171,172],[172],[116,154,155,158,161,163,170,171],[170,172],[158,159,170,172],[116,154,165,166,170],[158,170,172],[116,154,158,159,160,162,163,165,166,167,170,172],[116,154,155,157,158,159,160,161,163,164,165,166,167,168,169,172],[66,155,158,159,160,161,162,163,164,165,166,167,169,170,171,172,173,174,175,176,177,178,179,180,181,183],[155,162],[66,155,158,159,160,161,163,170,172],[158,163,170,176],[155,158,159,160,170,176],[66,158,170,171,172,173,176,178],[158,163,170],[155,164],[158],[158,159,162,170,172],[182],[154,184,185,186,187,188],[184,185,186,189],[184],[184,185,186,187,188,189,190,191,192,193],[184,189,191],[184,185],[185],[184,189],[194,327],[194,204,324,325,326],[325,326,327,328,329,330,331,332,333,334],[194,325],[194,204,325],[154,194,325],[194,204],[206],[205],[119,121,124,154],[323],[61],[61,62,64,65],[61,64],[63],[296,304,305],[306],[307,308,309,310,311,312,313,314],[304],[296,304],[316,317,318],[194,317],[194,304,316],[194,304],[296,304,305,306,315,319,320],[292,303],[292,296],[208,292],[292,293,294,295],[194,296],[224,239],[207,224,239,240],[240,241,242],[224,243],[245,246,280],[194,239],[224,239,244,277,279],[224,239,279],[239],[284,285,286,287],[276],[207,208,223,224,225,238,239,243,244,249,276,279,281,282,283,288,289,291],[290],[154,194,224,239,244,279],[224,225,238,292],[239,248,250],[239,248],[239,248,279],[194,224,239,279,292],[252,253,254,255],[257,292],[292],[239,248,261,279],[194,207,224,239,279],[257,258,259,260,261,262],[239,248,265,279],[194,207,224,239,279,292],[264,265,266],[248,256,263,267,272,273,274,275],[268,269,270,271],[194,224,239,279],[207],[194,207,224,225,239],[207,224,239],[247,250,251,277,278],[223,224,239,251,277],[224,239,250],[194,207,223,224,239,249,250,276],[207,224,239,244,248,249],[224],[226],[154,224,226],[226,227,228,229,230,231,232,233,234,235,236,237],[224,232,239],[224,226],[194,204,321,404,405],[200,203,204,404],[204,404,405],[405,406,407,408,409,410,411,412],[204,321,404],[194,204,321,392,403,404],[200,321,322,390,391,392,393,403,404,413,414,415,416,422,424,425,426,427,428,429],[119,121,154,194,204,321,322,324,335,390,391,392,403,404,413],[204,403,404,413],[194,335,390,404],[417,418,419,420,421,423],[194,335,404],[404],[194,335,404,413],[322,404],[194,335,422],[194,204,335,392],[200],[194,199,201,321,335,385,391,392,403,413,414],[194,392],[119,154,194,199,201,204,321,324,335,389,390,391,393,403,404,413],[194,321,382,404],[194,321,383,404],[199,201,204,321,335,382,385],[382,383,384,385,386,387,388,394,396,398,399,400,401,402],[321,393,403,404],[382,395,396,397],[204,382,404],[194,321,404],[382],[204,382,396,404],[321],[204,321,382,384,386,396,404],[382,396,397],[194,335,393,404],[194,321],[203,204,321,335,380,381,403],[321,404,430],[204,404],[431,432],[194,431],[119,154,650],[652],[204],[121,124,154],[651,653,654,655,656,658,661,662,663,664,665],[119,121,154],[119,154,204,657],[660],[476],[535,536,537],[476,535],[518],[476,520],[519,520,521,522,523],[528,529,530,531,532,533],[525,526,527],[476,518],[531],[461,463],[462,463,464,467],[463,464],[472],[463,464,467,468,469,470,471,473,474,475],[461,462,463],[462],[465,466],[508,513],[508,515],[476,478],[476,478,480],[478,483],[486],[476,477,478],[488],[479,481,482,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,502,503,504,505,506],[476,485],[476,501],[476,479],[481],[476,477],[477,478,480,483,501,507,508,509,510,511,512,513,514,515,516,517],[508],[477,480,508,510,512],[477,480,508,509,511,512],[510],[539],[539,542],[455,457,459,460,476,518,524,534,538],[540,543,544,545,546,547,548],[539,541,542],[546],[541],[454],[119,154,202],[119,154],[156],[208,678,679],[116,119,154,196,197,198],[197,199,201,203],[117,154,681,682],[116,117,154,687],[117,146,154],[109,154],[690,692,693,694,695,696,697,698,699,700,701,702],[690,691,693,694,695,696,697,698,699,700,701,702],[691,692,693,694,695,696,697,698,699,700,701,702],[690,691,692,694,695,696,697,698,699,700,701,702],[690,691,692,693,695,696,697,698,699,700,701,702],[690,691,692,693,694,696,697,698,699,700,701,702],[690,691,692,693,694,695,697,698,699,700,701,702],[690,691,692,693,694,695,696,698,699,700,701,702],[690,691,692,693,694,695,696,697,699,700,701,702],[690,691,692,693,694,695,696,697,698,700,701,702],[690,691,692,693,694,695,696,697,698,699,701,702],[690,691,692,693,694,695,696,697,698,699,700,702],[690,691,692,693,694,695,696,697,698,699,700,701],[67],[103],[104,109,138],[105,116,117,124,135,146],[105,106,116,124],[107,147],[108,109,117,125],[109,135,143],[110,112,116,124],[103,111],[112,113],[116],[114,116],[103,116],[116,117,118,135,146],[116,117,118,131,135,138],[101,104,151],[112,116,119,124,135,146],[116,117,119,120,124,135,143,146],[119,121,135,143,146],[67,68,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],[116,122],[123,146,151],[112,116,124,135],[125],[126],[103,127],[124,125,128,145,151],[129],[130],[116,131,132],[131,133,147,149],[104,116,135,136,137,138],[104,135,137],[135,136],[138],[139],[103,135],[116,141,142],[141,142],[109,124,135,143],[144],[124,145],[104,119,130,146],[109,147],[135,148],[123,149],[150],[104,109,116,118,127,135,146,149,151],[135,152],[154,604,606,610,611,612,613,614,615],[135,154],[116,154,604,606,607,609,616],[116,124,135,146,154,603,604,605,607,608,609,616],[135,154,606,607],[135,154,606,608],[154,604,606,607,609,616],[135,154,608],[116,124,135,143,154,605,607,609],[116,154,604,606,607,608,609,616],[116,135,154,604,605,606,607,608,609,616],[116,135,154,604,606,607,609,616],[119,135,154,609],[707,746],[707,731,746],[746],[707],[707,732,746],[707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745],[732,746],[117,135,154,195],[119,154,195,200],[119,135,154],[659],[648],[640,641,642,644,649],[120,124,135,143,154],[104,117,119,120,121,124,135,640,643,644,645,646,647],[119,135,648],[104,117,643,644],[146,643],[649],[380],[339,340,344,371,372,374,375,376,378,379],[337,338],[337],[339,379],[339,340,376,377,379],[379],[336,379,380],[339,340,378,379],[339,340,342,343,378,379],[339,340,341,378,379],[339,340,344,371,372,373,374,375,378,379],[336,339,340,344,376,378],[344,379],[346,347,348,349,350,351,352,353,354,355,379],[369,379],[345,356,364,365,366,367,368,370],[349,379],[357,358,359,360,361,362,363,379],[461],[209,210,211,212,213,214,215,216,217,218,219,220,221,222],[223],[116,209,210,211,214],[209,215,223],[209,214],[116,209,212,213],[209,214,215],[209,216,217],[209,214,215,216],[209],[687],[684,685,686],[300],[301],[300,302],[297],[298],[297,298,299],[78,82,146],[78,135,146],[73],[75,78,143,146],[124,143],[154],[73,154],[75,78,124,146],[70,71,74,77,104,116,135,146],[70,76],[74,78,104,138,146,154],[104,154],[94,104,154],[72,73,154],[78],[72,73,74,75,76,77,78,79,80,82,83,84,85,86,87,88,89,90,91,92,93,95,96,97,98,99,100],[78,85,86],[76,78,86,87],[77],[70,73,78],[78,82,86,87],[82],[76,78,81,146],[70,75,76,78,82,85],[104,135],[73,78,94,104,151,154],[60,634],[60,194,292],[60,292,552,556,572,579,587,599,601,638,639,666,667,668],[60,616,634,667],[60,194,593,639,667],[60],[60,634,638,639,667,668,670],[60,430,433,556,634,666,669],[60,117,556,599,616,634,666],[60,109,292,430,433,556,583,587,593,599,634,638,666,667,668,670],[60,556,599,666,667,668,669],[60,292,430,433,451,556,599,601,639,666,667,668,669,671],[60,556,597,599,634,666,667,668,669],[60,292],[60,194,292,430,556,635],[60,194,292,430,433,447,451,552,556,557,558,559,563,570,572,573,574,579,580,581,582,583,584,585,587,593,598,599,634,635],[60,292,455],[60,292,455,560],[60,292,455,552,561,562],[60,292,455,552],[60,292,575,576],[60,292,430,455,552,564,565,566,567,568,569],[60,292,455,552,561,571],[60,292,430,556],[60,292,552],[60,292,430,455,552,564,566],[60,292,552,577],[60,292,578],[60,557,558,559,570,580,581,582,583,585,600],[60,586],[60,620],[60,594],[60,449,450],[60,596],[60,455,459,549],[60,556,593,599,601,634,635,636],[60,194,634],[60,194,447,453,592,593,624,633,634,635],[60,433],[60,194,292,551,553,635],[60,450,452,550,551,553,554,555],[60,292,554],[60,292,556],[60,194,292,556,589,590,635],[60,194,292,556,635],[60,588,589,590,591,592],[60,194,292,555,556,591,635],[60,194,430,433,447,448,450,451,452,635],[60,430,455,542,549,552,556,563,572,574,577,579,601],[60,109,194,292,430,433,447,452,552,555,556,563,581,583,587,592,593,599,602,622,635],[60,453,598,602,617,618,619,622,623,624,625,632,633],[60,194,430,447,556,593,598,635],[60,117,126,555,556,616,617,618,619,621],[60,606],[60,194,292,430,433,448,451,452,453,556,593,599,623,635],[60,556,631],[60,194,430],[60,109,194,292,430,556,593,595,597,635],[634],[194,292],[556,599,667],[616,634,667],[593,667],[634,667],[292,556],[292,430,556,557,558,559,563,570,572,573,574,580,581,582,583,584,585,593,598,599,634],[455],[455,560],[455,552,561,562],[455,552],[575,576],[455,552,564,565,566,567,568,569],[455,552,561,571],[556],[552],[455,552,564,566],[552,577],[578],[557,558,559,570,580,581,582,583,585,600],[449,450],[596],[455,549],[556,593,599,601,634,635,636],[194,634],[292,551,553],[292,552],[450,452,550,551,553,554,555],[194,292,556,589,590],[588,589,590,591,592],[194,292,555,556,591],[447,452],[542,552,556,563,572,574,577,579,601],[292,447,452,556,563,581,583,592,593,602,622],[453,598,602,617,618,619,622,623,624,625,632,633],[430,447,556,593,598],[555,556,616,617,618],[606],[292,452,453,556,593,599,623],[631],[430],[292,430,593]],"referencedMap":[[459,1],[457,2],[439,3],[440,4],[441,5],[447,6],[442,7],[435,8],[436,4],[437,4],[438,9],[446,10],[443,11],[445,11],[434,12],[626,13],[628,14],[629,14],[631,15],[630,16],[627,17],[164,18],[174,19],[159,20],[173,21],[160,22],[172,23],[165,24],[166,25],[167,26],[168,27],[169,28],[170,29],[184,30],[175,31],[162,32],[177,33],[178,34],[179,35],[176,36],[180,37],[171,38],[163,39],[181,36],[183,40],[189,41],[187,42],[190,43],[194,44],[192,45],[191,46],[185,43],[193,43],[186,47],[188,48],[328,49],[327,50],[335,51],[330,52],[332,53],[326,54],[331,52],[333,54],[334,52],[325,55],[207,56],[206,57],[323,58],[324,59],[62,60],[66,61],[65,62],[64,63],[306,64],[307,65],[315,66],[309,67],[310,68],[311,67],[312,67],[314,67],[319,69],[318,70],[317,71],[316,72],[320,68],[321,73],[305,68],[304,74],[293,75],[294,76],[296,77],[295,78],[240,79],[241,80],[243,81],[242,80],[244,82],[281,83],[245,84],[246,84],[280,85],[282,79],[283,86],[284,87],[288,88],[287,87],[286,89],[292,90],[291,91],[290,92],[239,93],[252,94],[253,95],[254,96],[255,97],[256,98],[258,99],[257,100],[259,95],[260,96],[262,101],[261,102],[263,103],[264,95],[266,104],[265,105],[267,106],[276,107],[272,108],[268,94],[269,95],[270,96],[271,109],[273,87],[274,110],[275,100],[248,111],[247,112],[279,113],[278,114],[251,115],[277,116],[250,117],[225,118],[227,119],[228,119],[229,119],[230,120],[231,119],[238,121],[233,122],[234,119],[235,119],[232,123],[236,119],[226,118],[237,119],[406,124],[407,125],[408,126],[409,126],[410,126],[411,126],[412,126],[413,127],[405,128],[390,129],[430,130],[414,131],[416,132],[417,133],[424,134],[418,135],[419,136],[420,137],[421,138],[423,139],[393,140],[425,141],[426,142],[427,143],[392,144],[383,145],[384,146],[386,147],[387,146],[403,148],[394,149],[398,150],[396,151],[382,152],[399,153],[397,154],[385,155],[400,156],[402,157],[401,136],[391,158],[428,159],[404,160],[429,161],[422,162],[433,163],[432,164],[651,165],[653,166],[654,167],[655,168],[666,169],[656,170],[658,171],[661,172],[537,173],[538,174],[535,173],[536,175],[519,176],[521,177],[524,178],[529,176],[534,179],[531,173],[528,180],[525,176],[527,181],[526,176],[532,182],[475,183],[468,184],[469,185],[473,186],[476,187],[470,188],[471,189],[463,189],[465,188],[467,190],[466,188],[514,191],[516,192],[512,173],[479,193],[481,194],[484,195],[485,173],[487,196],[488,197],[489,198],[490,198],[505,173],[492,173],[507,199],[495,195],[496,173],[497,193],[499,200],[500,195],[502,201],[506,202],[503,203],[478,204],[483,193],[518,205],[477,173],[509,206],[515,207],[513,208],[511,209],[544,210],[545,211],[539,212],[549,213],[546,210],[540,210],[543,214],[547,215],[548,216],[455,217],[203,218],[202,219],[389,219],[157,220],[680,221],[199,222],[204,223],[683,224],[688,225],[681,226],[449,227],[691,228],[692,229],[690,230],[693,231],[694,232],[695,233],[696,234],[697,235],[698,236],[699,237],[700,238],[701,239],[702,240],[67,241],[68,241],[103,242],[104,243],[105,244],[106,245],[107,246],[108,247],[109,248],[110,249],[111,250],[112,251],[113,251],[115,252],[114,253],[116,254],[117,255],[118,256],[102,257],[119,258],[120,259],[121,260],[154,261],[122,262],[123,263],[124,264],[125,265],[126,266],[127,267],[128,268],[129,269],[130,270],[131,271],[132,271],[133,272],[135,273],[137,274],[136,275],[138,276],[139,277],[140,278],[141,279],[142,280],[143,281],[144,282],[145,283],[146,284],[147,285],[148,286],[149,287],[150,288],[151,289],[152,290],[616,291],[603,292],[610,293],[606,294],[604,295],[607,296],[611,297],[612,293],[609,298],[608,299],[613,300],[614,301],[615,302],[605,303],[706,219],[731,304],[732,305],[707,306],[710,306],[729,304],[730,304],[720,304],[719,307],[717,304],[712,304],[725,304],[723,304],[727,304],[711,304],[724,304],[728,304],[713,304],[714,304],[726,304],[708,304],[715,304],[716,304],[718,304],[722,304],[733,308],[721,304],[709,304],[746,309],[740,308],[742,310],[741,308],[734,308],[735,308],[737,308],[739,308],[743,310],[744,310],[736,310],[738,310],[196,311],[201,312],[657,313],[660,314],[649,315],[645,316],[647,317],[648,318],[643,319],[646,320],[644,321],[650,322],[747,219],[381,323],[380,324],[339,325],[338,326],[343,327],[378,328],[375,329],[377,330],[340,329],[341,331],[345,331],[344,332],[342,333],[376,334],[374,329],[379,335],[346,336],[351,329],[353,329],[348,329],[349,336],[355,329],[356,337],[347,329],[352,329],[354,329],[350,329],[370,338],[369,329],[371,339],[365,329],[367,329],[366,329],[362,329],[368,340],[363,329],[364,341],[357,329],[358,329],[359,329],[360,329],[361,329],[462,342],[223,343],[210,344],[212,345],[222,346],[218,347],[214,348],[213,347],[216,349],[220,350],[217,351],[219,351],[211,352],[221,352],[684,353],[685,353],[687,354],[686,353],[301,355],[302,356],[303,357],[298,358],[299,359],[300,360],[322,167],[85,361],[92,362],[84,361],[99,363],[76,364],[75,365],[98,366],[93,367],[96,368],[78,369],[77,370],[73,371],[72,372],[95,373],[74,374],[79,375],[83,375],[101,376],[100,375],[87,377],[88,378],[90,379],[86,380],[89,381],[94,366],[81,382],[82,383],[91,384],[71,385],[97,386],[638,387],[639,388],[669,389],[670,390],[668,391],[667,392],[671,393],[672,394],[673,395],[674,396],[675,397],[676,398],[677,399],[558,400],[559,400],[557,401],[600,402],[564,403],[561,404],[563,405],[562,406],[571,406],[577,407],[565,406],[570,408],[572,409],[573,410],[560,400],[575,411],[566,406],[567,406],[574,412],[568,403],[569,403],[578,413],[576,411],[579,414],[580,400],[581,400],[582,400],[583,400],[584,400],[585,400],[601,415],[587,416],[621,417],[595,418],[451,419],[597,420],[552,421],[637,422],[635,423],[636,424],[452,425],[554,426],[553,411],[551,400],[556,427],[450,400],[555,428],[550,429],[591,430],[590,431],[589,431],[593,432],[592,433],[588,431],[453,434],[602,435],[623,436],[448,392],[634,437],[624,438],[617,392],[622,439],[618,440],[619,392],[625,441],[632,442],[633,443],[598,444],[599,392]],"exportedModulesMap":[[459,1],[457,2],[439,3],[440,4],[441,5],[447,6],[442,7],[435,8],[436,4],[437,4],[438,9],[446,10],[443,11],[445,11],[434,12],[626,13],[628,14],[629,14],[631,15],[630,16],[627,17],[164,18],[174,19],[159,20],[173,21],[160,22],[172,23],[165,24],[166,25],[167,26],[168,27],[169,28],[170,29],[184,30],[175,31],[162,32],[177,33],[178,34],[179,35],[176,36],[180,37],[171,38],[163,39],[181,36],[183,40],[189,41],[187,42],[190,43],[194,44],[192,45],[191,46],[185,43],[193,43],[186,47],[188,48],[328,49],[327,50],[335,51],[330,52],[332,53],[326,54],[331,52],[333,54],[334,52],[325,55],[207,56],[206,57],[323,58],[324,59],[62,60],[66,61],[65,62],[64,63],[306,64],[307,65],[315,66],[309,67],[310,68],[311,67],[312,67],[314,67],[319,69],[318,70],[317,71],[316,72],[320,68],[321,73],[305,68],[304,74],[293,75],[294,76],[296,77],[295,78],[240,79],[241,80],[243,81],[242,80],[244,82],[281,83],[245,84],[246,84],[280,85],[282,79],[283,86],[284,87],[288,88],[287,87],[286,89],[292,90],[291,91],[290,92],[239,93],[252,94],[253,95],[254,96],[255,97],[256,98],[258,99],[257,100],[259,95],[260,96],[262,101],[261,102],[263,103],[264,95],[266,104],[265,105],[267,106],[276,107],[272,108],[268,94],[269,95],[270,96],[271,109],[273,87],[274,110],[275,100],[248,111],[247,112],[279,113],[278,114],[251,115],[277,116],[250,117],[225,118],[227,119],[228,119],[229,119],[230,120],[231,119],[238,121],[233,122],[234,119],[235,119],[232,123],[236,119],[226,118],[237,119],[406,124],[407,125],[408,126],[409,126],[410,126],[411,126],[412,126],[413,127],[405,128],[390,129],[430,130],[414,131],[416,132],[417,133],[424,134],[418,135],[419,136],[420,137],[421,138],[423,139],[393,140],[425,141],[426,142],[427,143],[392,144],[383,145],[384,146],[386,147],[387,146],[403,148],[394,149],[398,150],[396,151],[382,152],[399,153],[397,154],[385,155],[400,156],[402,157],[401,136],[391,158],[428,159],[404,160],[429,161],[422,162],[433,163],[432,164],[651,165],[653,166],[654,167],[655,168],[666,169],[656,170],[658,171],[661,172],[537,173],[538,174],[535,173],[536,175],[519,176],[521,177],[524,178],[529,176],[534,179],[531,173],[528,180],[525,176],[527,181],[526,176],[532,182],[475,183],[468,184],[469,185],[473,186],[476,187],[470,188],[471,189],[463,189],[465,188],[467,190],[466,188],[514,191],[516,192],[512,173],[479,193],[481,194],[484,195],[485,173],[487,196],[488,197],[489,198],[490,198],[505,173],[492,173],[507,199],[495,195],[496,173],[497,193],[499,200],[500,195],[502,201],[506,202],[503,203],[478,204],[483,193],[518,205],[477,173],[509,206],[515,207],[513,208],[511,209],[544,210],[545,211],[539,212],[549,213],[546,210],[540,210],[543,214],[547,215],[548,216],[455,217],[203,218],[202,219],[389,219],[157,220],[680,221],[199,222],[204,223],[683,224],[688,225],[681,226],[449,227],[691,228],[692,229],[690,230],[693,231],[694,232],[695,233],[696,234],[697,235],[698,236],[699,237],[700,238],[701,239],[702,240],[67,241],[68,241],[103,242],[104,243],[105,244],[106,245],[107,246],[108,247],[109,248],[110,249],[111,250],[112,251],[113,251],[115,252],[114,253],[116,254],[117,255],[118,256],[102,257],[119,258],[120,259],[121,260],[154,261],[122,262],[123,263],[124,264],[125,265],[126,266],[127,267],[128,268],[129,269],[130,270],[131,271],[132,271],[133,272],[135,273],[137,274],[136,275],[138,276],[139,277],[140,278],[141,279],[142,280],[143,281],[144,282],[145,283],[146,284],[147,285],[148,286],[149,287],[150,288],[151,289],[152,290],[616,291],[603,292],[610,293],[606,294],[604,295],[607,296],[611,297],[612,293],[609,298],[608,299],[613,300],[614,301],[615,302],[605,303],[706,219],[731,304],[732,305],[707,306],[710,306],[729,304],[730,304],[720,304],[719,307],[717,304],[712,304],[725,304],[723,304],[727,304],[711,304],[724,304],[728,304],[713,304],[714,304],[726,304],[708,304],[715,304],[716,304],[718,304],[722,304],[733,308],[721,304],[709,304],[746,309],[740,308],[742,310],[741,308],[734,308],[735,308],[737,308],[739,308],[743,310],[744,310],[736,310],[738,310],[196,311],[201,312],[657,313],[660,314],[649,315],[645,316],[647,317],[648,318],[643,319],[646,320],[644,321],[650,322],[747,219],[381,323],[380,324],[339,325],[338,326],[343,327],[378,328],[375,329],[377,330],[340,329],[341,331],[345,331],[344,332],[342,333],[376,334],[374,329],[379,335],[346,336],[351,329],[353,329],[348,329],[349,336],[355,329],[356,337],[347,329],[352,329],[354,329],[350,329],[370,338],[369,329],[371,339],[365,329],[367,329],[366,329],[362,329],[368,340],[363,329],[364,341],[357,329],[358,329],[359,329],[360,329],[361,329],[462,342],[223,343],[210,344],[212,345],[222,346],[218,347],[214,348],[213,347],[216,349],[220,350],[217,351],[219,351],[211,352],[221,352],[684,353],[685,353],[687,354],[686,353],[301,355],[302,356],[303,357],[298,358],[299,359],[300,360],[322,167],[85,361],[92,362],[84,361],[99,363],[76,364],[75,365],[98,366],[93,367],[96,368],[78,369],[77,370],[73,371],[72,372],[95,373],[74,374],[79,375],[83,375],[101,376],[100,375],[87,377],[88,378],[90,379],[86,380],[89,381],[94,366],[81,382],[82,383],[91,384],[71,385],[97,386],[638,445],[639,446],[669,447],[670,448],[668,449],[671,450],[557,451],[600,452],[564,453],[561,454],[563,455],[562,456],[571,456],[577,457],[565,453],[570,458],[572,459],[573,460],[575,461],[566,456],[567,453],[574,462],[568,453],[569,453],[578,463],[576,461],[579,464],[580,100],[581,100],[582,100],[583,100],[585,100],[601,465],[451,466],[597,467],[552,468],[637,469],[635,470],[636,13],[452,11],[554,471],[553,472],[551,100],[556,473],[555,100],[550,100],[591,474],[590,451],[589,451],[593,475],[592,476],[588,451],[453,477],[602,478],[623,479],[634,480],[624,481],[622,482],[618,483],[625,484],[632,485],[633,486],[598,487]],"semanticDiagnosticsPerFile":[458,459,456,457,439,440,441,447,442,435,436,437,438,446,443,444,445,434,626,628,629,631,630,627,164,174,159,173,155,160,172,165,166,167,168,169,170,184,175,162,177,178,179,176,161,180,171,163,181,183,158,189,187,190,194,192,191,185,193,186,188,328,327,329,335,330,332,326,331,333,334,325,207,206,205,323,324,62,66,65,64,61,306,307,308,315,309,310,311,312,313,314,319,318,317,316,320,321,305,304,293,294,296,295,224,240,241,243,242,244,281,245,246,280,282,283,284,288,287,285,286,292,289,291,290,239,252,253,254,255,256,258,257,259,260,262,261,263,264,266,265,267,276,272,268,269,270,271,273,274,275,248,247,279,278,251,277,250,249,225,227,228,229,230,231,238,233,234,235,232,236,226,237,406,407,408,409,410,411,412,413,405,390,430,414,415,416,417,424,418,419,420,421,423,393,425,426,427,392,383,384,386,387,403,388,394,398,396,382,399,397,385,400,402,401,391,428,404,429,422,433,432,431,651,653,654,655,666,656,658,661,662,663,664,665,652,537,538,535,536,519,520,521,522,524,523,529,534,530,531,528,525,527,526,532,533,475,468,469,464,473,472,476,474,470,471,463,465,467,466,508,501,514,516,512,479,481,482,484,485,487,488,489,490,486,491,505,492,507,493,494,495,496,497,498,499,504,500,502,506,503,478,483,518,477,517,509,515,513,510,480,511,544,545,539,541,542,549,546,540,543,547,548,454,455,586,203,202,641,389,157,678,680,679,199,204,683,688,200,208,689,681,682,449,691,692,690,693,694,695,696,697,698,699,700,701,702,640,195,703,704,156,67,68,103,104,105,106,107,108,109,110,111,112,113,115,114,116,117,118,102,153,119,120,121,154,122,123,124,125,126,127,128,129,130,131,132,133,134,135,137,136,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,616,603,610,606,604,607,611,612,609,608,613,614,615,605,705,706,197,198,731,732,707,710,729,730,720,719,717,712,725,723,727,711,724,728,713,714,726,708,715,716,718,722,733,721,709,746,745,740,742,741,734,735,737,739,743,744,736,738,196,201,657,660,659,649,642,645,647,648,643,646,644,650,747,381,380,337,339,338,343,378,375,377,340,341,345,344,342,376,374,379,372,373,346,351,353,348,349,355,356,347,352,354,350,370,369,371,365,367,366,362,368,363,364,357,358,359,360,361,462,69,460,620,594,182,223,209,210,212,222,218,214,213,216,215,220,217,219,211,221,684,685,687,686,301,302,303,298,299,297,300,596,395,461,63,322,60,58,59,11,13,12,2,14,15,16,17,18,19,20,21,3,4,25,22,23,24,26,27,28,5,29,30,31,32,6,36,33,34,35,37,7,38,43,44,39,40,41,42,8,48,45,46,47,49,9,50,51,52,55,53,54,56,10,1,57,85,92,84,99,76,75,98,93,96,78,77,73,72,95,74,79,80,83,70,101,100,87,88,90,86,89,94,81,82,91,71,97,336,638,639,669,670,668,667,671,672,673,674,675,676,677,558,559,557,600,564,561,563,562,571,577,565,570,572,573,560,575,566,567,574,568,569,578,576,579,580,581,582,583,584,585,601,587,621,595,451,597,552,637,635,636,452,554,553,551,556,450,555,550,591,590,589,593,592,588,453,602,623,448,634,624,617,622,618,619,625,632,633,598,599]},"version":"5.1.6"} \ No newline at end of file